summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/emu/bus/nubus/nubus_specpdq.c48
-rw-r--r--src/emu/bus/nubus/nubus_specpdq.h3
-rw-r--r--src/emu/bus/wangpc/mvc.c6
-rw-r--r--src/emu/bus/wangpc/tig.c11
-rw-r--r--src/emu/bus/wangpc/tig.h1
-rw-r--r--src/emu/cpu/tms34010/tms34010.c4
-rw-r--r--src/emu/drawgfx.c280
-rw-r--r--src/emu/drawgfx.h88
-rw-r--r--src/emu/driver.c272
-rw-r--r--src/emu/driver.h227
-rw-r--r--src/emu/drivlgcy.h7
-rw-r--r--src/emu/emupal.c1118
-rw-r--r--src/emu/emupal.h427
-rw-r--r--src/emu/info.c3
-rw-r--r--src/emu/machine.c7
-rw-r--r--src/emu/machine.h8
-rw-r--r--src/emu/machine/laserdsc.c2
-rw-r--r--src/emu/machine/s3c2400.c15
-rw-r--r--src/emu/machine/s3c2400.h11
-rw-r--r--src/emu/machine/s3c2410.c15
-rw-r--r--src/emu/machine/s3c2410.h11
-rw-r--r--src/emu/machine/s3c2440.c16
-rw-r--r--src/emu/machine/s3c2440.h10
-rw-r--r--src/emu/machine/s3c24xx.c10
-rw-r--r--src/emu/machine/tc009xlvc.c23
-rw-r--r--src/emu/machine/tc009xlvc.h5
-rw-r--r--src/emu/mconfig.c1
-rw-r--r--src/emu/mconfig.h9
-rw-r--r--src/emu/render.c8
-rw-r--r--src/emu/save.h12
-rw-r--r--src/emu/screen.c47
-rw-r--r--src/emu/screen.h9
-rw-r--r--src/emu/sound/mos6560.c34
-rw-r--r--src/emu/sound/mos7360.c62
-rw-r--r--src/emu/tilemap.c20
-rw-r--r--src/emu/tilemap.h6
-rw-r--r--src/emu/ui/viewgfx.c36
-rw-r--r--src/emu/validity.c11
-rw-r--r--src/emu/video.c35
-rw-r--r--src/emu/video.h8
-rw-r--r--src/emu/video/315_5124.c70
-rw-r--r--src/emu/video/315_5124.h2
-rw-r--r--src/emu/video/hd66421.c37
-rw-r--r--src/emu/video/hd66421.h3
-rw-r--r--src/emu/video/huc6260.c7
-rw-r--r--src/emu/video/i8244.c4
-rw-r--r--src/emu/video/i8244.h3
-rw-r--r--src/emu/video/i8275.c2
-rw-r--r--src/emu/video/k053250.c2
-rw-r--r--src/emu/video/mb_vcu.c20
-rw-r--r--src/emu/video/mb_vcu.h9
-rw-r--r--src/emu/video/pc_cga.c12
-rw-r--r--src/emu/video/pc_vga.c54
-rw-r--r--src/emu/video/pc_vga.h1
-rw-r--r--src/emu/video/psx.c8
-rw-r--r--src/emu/video/ramdac.c17
-rw-r--r--src/emu/video/ramdac.h11
-rw-r--r--src/emu/video/saa5050.c2
-rw-r--r--src/emu/video/stvvdp2.c100
-rw-r--r--src/emu/video/upd3301.c2
-rw-r--r--src/emu/video/v9938.c19
-rw-r--r--src/emu/video/v9938.h4
-rw-r--r--src/mame/drivers/1942.c10
-rw-r--r--src/mame/drivers/1943.c3
-rw-r--r--src/mame/drivers/1945kiii.c14
-rw-r--r--src/mame/drivers/2mindril.c5
-rw-r--r--src/mame/drivers/39in1.c6
-rw-r--r--src/mame/drivers/3x3puzzl.c5
-rw-r--r--src/mame/drivers/40love.c8
-rw-r--r--src/mame/drivers/4enraya.c8
-rw-r--r--src/mame/drivers/4roses.c4
-rw-r--r--src/mame/drivers/5clown.c12
-rw-r--r--src/mame/drivers/8080bw.c4
-rw-r--r--src/mame/drivers/88games.c11
-rw-r--r--src/mame/drivers/ace.c18
-rw-r--r--src/mame/drivers/acefruit.c41
-rw-r--r--src/mame/drivers/acommand.c8
-rw-r--r--src/mame/drivers/actfancr.c14
-rw-r--r--src/mame/drivers/adp.c22
-rw-r--r--src/mame/drivers/aeroboto.c4
-rw-r--r--src/mame/drivers/aerofgt.c73
-rw-r--r--src/mame/drivers/airbustr.c5
-rw-r--r--src/mame/drivers/ajax.c11
-rw-r--r--src/mame/drivers/albazc.c13
-rw-r--r--src/mame/drivers/albazg.c11
-rw-r--r--src/mame/drivers/aleck64.c2
-rw-r--r--src/mame/drivers/alg.c6
-rw-r--r--src/mame/drivers/alien.c2
-rw-r--r--src/mame/drivers/aliens.c10
-rw-r--r--src/mame/drivers/alpha68k.c28
-rw-r--r--src/mame/drivers/amaticmg.c21
-rw-r--r--src/mame/drivers/ambush.c4
-rw-r--r--src/mame/drivers/ampoker2.c4
-rw-r--r--src/mame/drivers/amspdwy.c4
-rw-r--r--src/mame/drivers/angelkds.c2
-rw-r--r--src/mame/drivers/appoooh.c8
-rw-r--r--src/mame/drivers/aquarium.c6
-rw-r--r--src/mame/drivers/arabian.c4
-rw-r--r--src/mame/drivers/arcadecl.c2
-rw-r--r--src/mame/drivers/arcadia.c4
-rw-r--r--src/mame/drivers/argus.c6
-rw-r--r--src/mame/drivers/aristmk4.c20
-rw-r--r--src/mame/drivers/aristmk5.c10
-rw-r--r--src/mame/drivers/aristmk6.c6
-rw-r--r--src/mame/drivers/arkanoid.c12
-rw-r--r--src/mame/drivers/armedf.c36
-rw-r--r--src/mame/drivers/ashnojoe.c6
-rw-r--r--src/mame/drivers/asterix.c10
-rw-r--r--src/mame/drivers/astrcorp.c10
-rw-r--r--src/mame/drivers/astrocde.c8
-rw-r--r--src/mame/drivers/asuka.c26
-rw-r--r--src/mame/drivers/atarifb.c30
-rw-r--r--src/mame/drivers/atarig1.c2
-rw-r--r--src/mame/drivers/atarig42.c2
-rw-r--r--src/mame/drivers/atarigt.c2
-rw-r--r--src/mame/drivers/atarigx2.c2
-rw-r--r--src/mame/drivers/atarisy1.c6
-rw-r--r--src/mame/drivers/atarisy2.c2
-rw-r--r--src/mame/drivers/atarisy4.c8
-rw-r--r--src/mame/drivers/ataxx.c2
-rw-r--r--src/mame/drivers/atetris.c12
-rw-r--r--src/mame/drivers/atlantis.c3
-rw-r--r--src/mame/drivers/atronic.c2
-rw-r--r--src/mame/drivers/atvtrack.c2
-rw-r--r--src/mame/drivers/avt.c16
-rw-r--r--src/mame/drivers/backfire.c8
-rw-r--r--src/mame/drivers/badlands.c4
-rw-r--r--src/mame/drivers/bagman.c12
-rw-r--r--src/mame/drivers/balsente.c2
-rw-r--r--src/mame/drivers/bankp.c4
-rw-r--r--src/mame/drivers/baraduke.c4
-rw-r--r--src/mame/drivers/bartop52.c4
-rw-r--r--src/mame/drivers/batman.c2
-rw-r--r--src/mame/drivers/battlane.c2
-rw-r--r--src/mame/drivers/battlera.c2
-rw-r--r--src/mame/drivers/battlex.c2
-rw-r--r--src/mame/drivers/battlnts.c6
-rw-r--r--src/mame/drivers/bbusters.c10
-rw-r--r--src/mame/drivers/beathead.c2
-rw-r--r--src/mame/drivers/beezer.c2
-rw-r--r--src/mame/drivers/bestleag.c14
-rw-r--r--src/mame/drivers/bfcobra.c16
-rw-r--r--src/mame/drivers/big10.c2
-rw-r--r--src/mame/drivers/bigevglf.c2
-rw-r--r--src/mame/drivers/bigstrkb.c5
-rw-r--r--src/mame/drivers/bingoc.c2
-rw-r--r--src/mame/drivers/bingoman.c8
-rw-r--r--src/mame/drivers/bingor.c16
-rw-r--r--src/mame/drivers/bionicc.c2
-rw-r--r--src/mame/drivers/bishi.c10
-rw-r--r--src/mame/drivers/bking.c3
-rw-r--r--src/mame/drivers/blackt96.c13
-rw-r--r--src/mame/drivers/bladestl.c4
-rw-r--r--src/mame/drivers/blitz.c12
-rw-r--r--src/mame/drivers/blitz68k.c42
-rw-r--r--src/mame/drivers/blktiger.c7
-rw-r--r--src/mame/drivers/blmbycar.c4
-rw-r--r--src/mame/drivers/blockade.c8
-rw-r--r--src/mame/drivers/blockhl.c10
-rw-r--r--src/mame/drivers/blockout.c2
-rw-r--r--src/mame/drivers/bloodbro.c11
-rw-r--r--src/mame/drivers/blstroid.c6
-rw-r--r--src/mame/drivers/blueprnt.c3
-rw-r--r--src/mame/drivers/bmcbowl.c6
-rw-r--r--src/mame/drivers/bmcpokr.c4
-rw-r--r--src/mame/drivers/bnstars.c6
-rw-r--r--src/mame/drivers/bntyhunt.c2
-rw-r--r--src/mame/drivers/bogeyman.c5
-rw-r--r--src/mame/drivers/bombjack.c5
-rw-r--r--src/mame/drivers/boogwing.c6
-rw-r--r--src/mame/drivers/bottom9.c11
-rw-r--r--src/mame/drivers/bowltry.c2
-rw-r--r--src/mame/drivers/boxer.c21
-rw-r--r--src/mame/drivers/brkthru.c8
-rw-r--r--src/mame/drivers/bsktball.c32
-rw-r--r--src/mame/drivers/btime.c30
-rw-r--r--src/mame/drivers/bublbobl.c12
-rw-r--r--src/mame/drivers/buggychl.c7
-rw-r--r--src/mame/drivers/buster.c12
-rw-r--r--src/mame/drivers/bwing.c2
-rw-r--r--src/mame/drivers/cabal.c12
-rw-r--r--src/mame/drivers/cabaret.c10
-rw-r--r--src/mame/drivers/calomega.c4
-rw-r--r--src/mame/drivers/calorie.c10
-rw-r--r--src/mame/drivers/canyon.c14
-rw-r--r--src/mame/drivers/cardline.c13
-rw-r--r--src/mame/drivers/carjmbre.c4
-rw-r--r--src/mame/drivers/carpolo.c3
-rw-r--r--src/mame/drivers/carrera.c13
-rw-r--r--src/mame/drivers/caswin.c10
-rw-r--r--src/mame/drivers/cave.c64
-rw-r--r--src/mame/drivers/cavepc.c2
-rw-r--r--src/mame/drivers/cb2001.c18
-rw-r--r--src/mame/drivers/cball.c22
-rw-r--r--src/mame/drivers/cbasebal.c7
-rw-r--r--src/mame/drivers/cbuster.c5
-rw-r--r--src/mame/drivers/ccastles.c2
-rw-r--r--src/mame/drivers/cchance.c5
-rw-r--r--src/mame/drivers/cclimber.c18
-rw-r--r--src/mame/drivers/cdi.c2
-rw-r--r--src/mame/drivers/centiped.c12
-rw-r--r--src/mame/drivers/cesclass.c14
-rw-r--r--src/mame/drivers/chaknpop.c4
-rw-r--r--src/mame/drivers/cham24.c10
-rw-r--r--src/mame/drivers/champbas.c16
-rw-r--r--src/mame/drivers/champbwl.c10
-rw-r--r--src/mame/drivers/chanbara.c25
-rw-r--r--src/mame/drivers/chance32.c6
-rw-r--r--src/mame/drivers/changela.c2
-rw-r--r--src/mame/drivers/cheekyms.c4
-rw-r--r--src/mame/drivers/chihiro.c2
-rw-r--r--src/mame/drivers/chinagat.c13
-rw-r--r--src/mame/drivers/chinsan.c12
-rw-r--r--src/mame/drivers/chqflag.c17
-rw-r--r--src/mame/drivers/chsuper.c6
-rw-r--r--src/mame/drivers/circus.c12
-rw-r--r--src/mame/drivers/circusc.c4
-rw-r--r--src/mame/drivers/cischeat.c58
-rw-r--r--src/mame/drivers/citycon.c7
-rw-r--r--src/mame/drivers/cloak.c2
-rw-r--r--src/mame/drivers/cloud9.c2
-rw-r--r--src/mame/drivers/clshroad.c8
-rw-r--r--src/mame/drivers/cmmb.c10
-rw-r--r--src/mame/drivers/cninja.c30
-rw-r--r--src/mame/drivers/cntsteer.c36
-rw-r--r--src/mame/drivers/cobra.c5
-rw-r--r--src/mame/drivers/coinmstr.c16
-rw-r--r--src/mame/drivers/coinmvga.c14
-rw-r--r--src/mame/drivers/combatsc.c10
-rw-r--r--src/mame/drivers/comebaby.c2
-rw-r--r--src/mame/drivers/commando.c4
-rw-r--r--src/mame/drivers/compgolf.c2
-rw-r--r--src/mame/drivers/contra.c6
-rw-r--r--src/mame/drivers/coolridr.c5
-rw-r--r--src/mame/drivers/cop01.c8
-rw-r--r--src/mame/drivers/cops.c4
-rw-r--r--src/mame/drivers/copsnrob.c15
-rw-r--r--src/mame/drivers/corona.c26
-rw-r--r--src/mame/drivers/cosmic.c20
-rw-r--r--src/mame/drivers/cps1.c2
-rw-r--r--src/mame/drivers/cps2.c2
-rw-r--r--src/mame/drivers/cps3.c10
-rw-r--r--src/mame/drivers/crbaloon.c3
-rw-r--r--src/mame/drivers/crimfght.c10
-rw-r--r--src/mame/drivers/crospang.c8
-rw-r--r--src/mame/drivers/crshrace.c6
-rw-r--r--src/mame/drivers/crystal.c3
-rw-r--r--src/mame/drivers/cshooter.c24
-rw-r--r--src/mame/drivers/csplayh5.c2
-rw-r--r--src/mame/drivers/cswat.c2
-rw-r--r--src/mame/drivers/cubeqst.c4
-rw-r--r--src/mame/drivers/cultures.c4
-rw-r--r--src/mame/drivers/cupidon.c2
-rw-r--r--src/mame/drivers/cv1k.c4
-rw-r--r--src/mame/drivers/cvs.c5
-rw-r--r--src/mame/drivers/cyberbal.c4
-rw-r--r--src/mame/drivers/cybertnk.c12
-rw-r--r--src/mame/drivers/cyclemb.c30
-rw-r--r--src/mame/drivers/d9final.c9
-rw-r--r--src/mame/drivers/dacholer.c13
-rw-r--r--src/mame/drivers/dambustr.c4
-rw-r--r--src/mame/drivers/darius.c8
-rw-r--r--src/mame/drivers/darkmist.c3
-rw-r--r--src/mame/drivers/darkseal.c5
-rw-r--r--src/mame/drivers/dassault.c6
-rw-r--r--src/mame/drivers/dblcrown.c14
-rw-r--r--src/mame/drivers/dblewing.c7
-rw-r--r--src/mame/drivers/dbz.c10
-rw-r--r--src/mame/drivers/dcheese.c4
-rw-r--r--src/mame/drivers/dcon.c8
-rw-r--r--src/mame/drivers/dday.c6
-rw-r--r--src/mame/drivers/ddayjlc.c16
-rw-r--r--src/mame/drivers/ddealer.c14
-rw-r--r--src/mame/drivers/ddenlovr.c28
-rw-r--r--src/mame/drivers/ddragon.c17
-rw-r--r--src/mame/drivers/ddragon3.c17
-rw-r--r--src/mame/drivers/ddribble.c4
-rw-r--r--src/mame/drivers/ddz.c2
-rw-r--r--src/mame/drivers/deadang.c5
-rw-r--r--src/mame/drivers/dec0.c17
-rw-r--r--src/mame/drivers/dec8.c77
-rw-r--r--src/mame/drivers/deco156.c12
-rw-r--r--src/mame/drivers/deco32.c35
-rw-r--r--src/mame/drivers/deco_ld.c12
-rw-r--r--src/mame/drivers/deco_mlc.c6
-rw-r--r--src/mame/drivers/decocass.c29
-rw-r--r--src/mame/drivers/deniam.c4
-rw-r--r--src/mame/drivers/deshoros.c2
-rw-r--r--src/mame/drivers/destroyr.c31
-rw-r--r--src/mame/drivers/dfruit.c5
-rw-r--r--src/mame/drivers/dgpix.c3
-rw-r--r--src/mame/drivers/dietgo.c4
-rw-r--r--src/mame/drivers/discoboy.c10
-rw-r--r--src/mame/drivers/diverboy.c9
-rw-r--r--src/mame/drivers/djboy.c3
-rw-r--r--src/mame/drivers/djmain.c5
-rw-r--r--src/mame/drivers/dkong.c33
-rw-r--r--src/mame/drivers/dlair.c10
-rw-r--r--src/mame/drivers/dlair2.c8
-rw-r--r--src/mame/drivers/dmndrby.c27
-rw-r--r--src/mame/drivers/docastle.c3
-rw-r--r--src/mame/drivers/dogfgt.c6
-rw-r--r--src/mame/drivers/dominob.c13
-rw-r--r--src/mame/drivers/dooyong.c43
-rw-r--r--src/mame/drivers/dragrace.c37
-rw-r--r--src/mame/drivers/dreambal.c6
-rw-r--r--src/mame/drivers/dreamwld.c14
-rw-r--r--src/mame/drivers/drgnmst.c6
-rw-r--r--src/mame/drivers/dribling.c4
-rw-r--r--src/mame/drivers/drmicro.c4
-rw-r--r--src/mame/drivers/drtomy.c7
-rw-r--r--src/mame/drivers/drw80pkr.c12
-rw-r--r--src/mame/drivers/dunhuang.c6
-rw-r--r--src/mame/drivers/dwarfd.c22
-rw-r--r--src/mame/drivers/dynadice.c10
-rw-r--r--src/mame/drivers/dynax.c42
-rw-r--r--src/mame/drivers/dynduke.c2
-rw-r--r--src/mame/drivers/egghunt.c7
-rw-r--r--src/mame/drivers/eolith.c3
-rw-r--r--src/mame/drivers/eolith16.c6
-rw-r--r--src/mame/drivers/eprom.c6
-rw-r--r--src/mame/drivers/equites.c8
-rw-r--r--src/mame/drivers/ertictac.c2
-rw-r--r--src/mame/drivers/esd16.c6
-rw-r--r--src/mame/drivers/esh.c15
-rw-r--r--src/mame/drivers/espial.c4
-rw-r--r--src/mame/drivers/ettrivia.c12
-rw-r--r--src/mame/drivers/exedexes.c5
-rw-r--r--src/mame/drivers/exerion.c4
-rw-r--r--src/mame/drivers/exidy.c2
-rw-r--r--src/mame/drivers/expro02.c11
-rw-r--r--src/mame/drivers/exprraid.c4
-rw-r--r--src/mame/drivers/exterm.c6
-rw-r--r--src/mame/drivers/exzisus.c4
-rw-r--r--src/mame/drivers/f-32.c3
-rw-r--r--src/mame/drivers/f1gp.c15
-rw-r--r--src/mame/drivers/famibox.c9
-rw-r--r--src/mame/drivers/fantland.c21
-rw-r--r--src/mame/drivers/fastfred.c7
-rw-r--r--src/mame/drivers/fastlane.c4
-rw-r--r--src/mame/drivers/fcombat.c4
-rw-r--r--src/mame/drivers/fcrash.c22
-rw-r--r--src/mame/drivers/feversoc.c10
-rw-r--r--src/mame/drivers/fgoal.c14
-rw-r--r--src/mame/drivers/finalizr.c4
-rw-r--r--src/mame/drivers/firebeat.c6
-rw-r--r--src/mame/drivers/firefox.c8
-rw-r--r--src/mame/drivers/firetrap.c6
-rw-r--r--src/mame/drivers/firetrk.c14
-rw-r--r--src/mame/drivers/fitfight.c10
-rw-r--r--src/mame/drivers/flipjack.c21
-rw-r--r--src/mame/drivers/flkatck.c7
-rw-r--r--src/mame/drivers/flower.c3
-rw-r--r--src/mame/drivers/flstory.c12
-rw-r--r--src/mame/drivers/flyball.c18
-rw-r--r--src/mame/drivers/foodf.c2
-rw-r--r--src/mame/drivers/fortecar.c12
-rw-r--r--src/mame/drivers/freekick.c3
-rw-r--r--src/mame/drivers/fresh.c4
-rw-r--r--src/mame/drivers/fromanc2.c6
-rw-r--r--src/mame/drivers/fromance.c6
-rw-r--r--src/mame/drivers/funkybee.c4
-rw-r--r--src/mame/drivers/funkyjet.c7
-rw-r--r--src/mame/drivers/funworld.c4
-rw-r--r--src/mame/drivers/funybubl.c2
-rw-r--r--src/mame/drivers/fuukifg2.c5
-rw-r--r--src/mame/drivers/fuukifg3.c6
-rw-r--r--src/mame/drivers/gaelco.c20
-rw-r--r--src/mame/drivers/gaelco2.c12
-rw-r--r--src/mame/drivers/gaelco3d.c4
-rw-r--r--src/mame/drivers/gaiden.c15
-rw-r--r--src/mame/drivers/gal3.c4
-rw-r--r--src/mame/drivers/galaga.c19
-rw-r--r--src/mame/drivers/galastrm.c4
-rw-r--r--src/mame/drivers/galaxi.c7
-rw-r--r--src/mame/drivers/galaxia.c8
-rw-r--r--src/mame/drivers/galaxian.c12
-rw-r--r--src/mame/drivers/galaxold.c50
-rw-r--r--src/mame/drivers/galgame.c11
-rw-r--r--src/mame/drivers/galivan.c8
-rw-r--r--src/mame/drivers/galpani2.c6
-rw-r--r--src/mame/drivers/galpani3.c11
-rw-r--r--src/mame/drivers/galpanic.c5
-rw-r--r--src/mame/drivers/galspnbl.c6
-rw-r--r--src/mame/drivers/gambl186.c2
-rw-r--r--src/mame/drivers/gamecstl.c4
-rw-r--r--src/mame/drivers/gaplus.c3
-rw-r--r--src/mame/drivers/gatron.c3
-rw-r--r--src/mame/drivers/gauntlet.c6
-rw-r--r--src/mame/drivers/gberet.c8
-rw-r--r--src/mame/drivers/gbusters.c10
-rw-r--r--src/mame/drivers/gcpinbal.c6
-rw-r--r--src/mame/drivers/gei.c16
-rw-r--r--src/mame/drivers/ggconnie.c2
-rw-r--r--src/mame/drivers/ghosteo.c4
-rw-r--r--src/mame/drivers/gijoe.c10
-rw-r--r--src/mame/drivers/ginganin.c6
-rw-r--r--src/mame/drivers/gladiatr.c4
-rw-r--r--src/mame/drivers/glass.c6
-rw-r--r--src/mame/drivers/gluck2.c6
-rw-r--r--src/mame/drivers/gng.c23
-rw-r--r--src/mame/drivers/go2000.c11
-rw-r--r--src/mame/drivers/goal92.c6
-rw-r--r--src/mame/drivers/goindol.c4
-rw-r--r--src/mame/drivers/goldngam.c8
-rw-r--r--src/mame/drivers/goldnpkr.c37
-rw-r--r--src/mame/drivers/goldstar.c109
-rw-r--r--src/mame/drivers/gomoku.c4
-rw-r--r--src/mame/drivers/good.c5
-rw-r--r--src/mame/drivers/goodejan.c11
-rw-r--r--src/mame/drivers/gotcha.c6
-rw-r--r--src/mame/drivers/gottlieb.c2
-rw-r--r--src/mame/drivers/gotya.c4
-rw-r--r--src/mame/drivers/gpworld.c16
-rw-r--r--src/mame/drivers/gradius3.c10
-rw-r--r--src/mame/drivers/grchamp.c1
-rw-r--r--src/mame/drivers/gridlee.c4
-rw-r--r--src/mame/drivers/groundfx.c4
-rw-r--r--src/mame/drivers/gstream.c22
-rw-r--r--src/mame/drivers/gstriker.c12
-rw-r--r--src/mame/drivers/gsword.c8
-rw-r--r--src/mame/drivers/gticlub.c12
-rw-r--r--src/mame/drivers/guab.c10
-rw-r--r--src/mame/drivers/gumbo.c10
-rw-r--r--src/mame/drivers/gunbustr.c6
-rw-r--r--src/mame/drivers/gundealr.c2
-rw-r--r--src/mame/drivers/gunpey.c14
-rw-r--r--src/mame/drivers/gunsmoke.c4
-rw-r--r--src/mame/drivers/gyruss.c4
-rw-r--r--src/mame/drivers/halleys.c26
-rw-r--r--src/mame/drivers/hanaawas.c4
-rw-r--r--src/mame/drivers/harddriv.c2
-rw-r--r--src/mame/drivers/hcastle.c5
-rw-r--r--src/mame/drivers/headonb.c9
-rw-r--r--src/mame/drivers/hexion.c4
-rw-r--r--src/mame/drivers/hideseek.c9
-rw-r--r--src/mame/drivers/higemaru.c3
-rw-r--r--src/mame/drivers/highvdeo.c12
-rw-r--r--src/mame/drivers/hikaru.c2
-rw-r--r--src/mame/drivers/himesiki.c5
-rw-r--r--src/mame/drivers/hitme.c3
-rw-r--r--src/mame/drivers/hitpoker.c6
-rw-r--r--src/mame/drivers/hnayayoi.c4
-rw-r--r--src/mame/drivers/hng64.c7
-rw-r--r--src/mame/drivers/holeland.c8
-rw-r--r--src/mame/drivers/homedata.c16
-rw-r--r--src/mame/drivers/homerun.c2
-rw-r--r--src/mame/drivers/hornet.c8
-rw-r--r--src/mame/drivers/hotblock.c6
-rw-r--r--src/mame/drivers/hotstuff.c2
-rw-r--r--src/mame/drivers/hvyunit.c10
-rw-r--r--src/mame/drivers/hyperspt.c4
-rw-r--r--src/mame/drivers/hyprduel.c4
-rw-r--r--src/mame/drivers/ichiban.c3
-rw-r--r--src/mame/drivers/igs009.c11
-rw-r--r--src/mame/drivers/igs011.c6
-rw-r--r--src/mame/drivers/igs017.c47
-rw-r--r--src/mame/drivers/igs_m027.c6
-rw-r--r--src/mame/drivers/igs_m036.c4
-rw-r--r--src/mame/drivers/igspoker.c18
-rw-r--r--src/mame/drivers/ikki.c4
-rw-r--r--src/mame/drivers/imolagp.c15
-rw-r--r--src/mame/drivers/intrscti.c8
-rw-r--r--src/mame/drivers/inufuku.c7
-rw-r--r--src/mame/drivers/invqix.c2
-rw-r--r--src/mame/drivers/iqblock.c8
-rw-r--r--src/mame/drivers/irobot.c4
-rw-r--r--src/mame/drivers/ironhors.c4
-rw-r--r--src/mame/drivers/istellar.c13
-rw-r--r--src/mame/drivers/itech32.c5
-rw-r--r--src/mame/drivers/itech8.c2
-rw-r--r--src/mame/drivers/itgambl2.c13
-rw-r--r--src/mame/drivers/itgambl3.c13
-rw-r--r--src/mame/drivers/itgamble.c4
-rw-r--r--src/mame/drivers/jack.c18
-rw-r--r--src/mame/drivers/jackal.c4
-rw-r--r--src/mame/drivers/jackie.c10
-rw-r--r--src/mame/drivers/jackpool.c10
-rw-r--r--src/mame/drivers/jailbrek.c3
-rw-r--r--src/mame/drivers/jalmah.c12
-rw-r--r--src/mame/drivers/jangou.c16
-rw-r--r--src/mame/drivers/jantotsu.c12
-rw-r--r--src/mame/drivers/jchan.c7
-rw-r--r--src/mame/drivers/jclub2.c16
-rw-r--r--src/mame/drivers/jokrwild.c7
-rw-r--r--src/mame/drivers/jollyjgr.c14
-rw-r--r--src/mame/drivers/jongkyo.c10
-rw-r--r--src/mame/drivers/jpmimpct.c2
-rw-r--r--src/mame/drivers/jpmsys5.c12
-rw-r--r--src/mame/drivers/jrpacman.c4
-rw-r--r--src/mame/drivers/jubilee.c6
-rw-r--r--src/mame/drivers/kaneko16.c39
-rw-r--r--src/mame/drivers/karnov.c7
-rw-r--r--src/mame/drivers/kas89.c2
-rw-r--r--src/mame/drivers/kchamp.c6
-rw-r--r--src/mame/drivers/kickgoal.c8
-rw-r--r--src/mame/drivers/kingdrby.c18
-rw-r--r--src/mame/drivers/kingobox.c8
-rw-r--r--src/mame/drivers/kinst.c3
-rw-r--r--src/mame/drivers/klax.c2
-rw-r--r--src/mame/drivers/kncljoe.c4
-rw-r--r--src/mame/drivers/koftball.c4
-rw-r--r--src/mame/drivers/koikoi.c15
-rw-r--r--src/mame/drivers/konamigx.c26
-rw-r--r--src/mame/drivers/konamim2.c3
-rw-r--r--src/mame/drivers/konendev.c3
-rw-r--r--src/mame/drivers/kontest.c11
-rw-r--r--src/mame/drivers/kopunch.c4
-rw-r--r--src/mame/drivers/ksayakyu.c4
-rw-r--r--src/mame/drivers/kurukuru.c2
-rw-r--r--src/mame/drivers/kyugo.c4
-rw-r--r--src/mame/drivers/labyrunr.c5
-rw-r--r--src/mame/drivers/ladybug.c10
-rw-r--r--src/mame/drivers/ladyfrog.c2
-rw-r--r--src/mame/drivers/laserbas.c5
-rw-r--r--src/mame/drivers/laserbat.c6
-rw-r--r--src/mame/drivers/lasso.c14
-rw-r--r--src/mame/drivers/lastbank.c5
-rw-r--r--src/mame/drivers/lastduel.c4
-rw-r--r--src/mame/drivers/lastfght.c8
-rw-r--r--src/mame/drivers/lazercmd.c21
-rw-r--r--src/mame/drivers/lbeach.c36
-rw-r--r--src/mame/drivers/legionna.c50
-rw-r--r--src/mame/drivers/leland.c2
-rw-r--r--src/mame/drivers/lemmings.c6
-rw-r--r--src/mame/drivers/lethal.c13
-rw-r--r--src/mame/drivers/lethalj.c3
-rw-r--r--src/mame/drivers/lgp.c8
-rw-r--r--src/mame/drivers/liberate.c6
-rw-r--r--src/mame/drivers/limenko.c10
-rw-r--r--src/mame/drivers/littlerb.c5
-rw-r--r--src/mame/drivers/lkage.c8
-rw-r--r--src/mame/drivers/lockon.c4
-rw-r--r--src/mame/drivers/looping.c11
-rw-r--r--src/mame/drivers/lordgun.c4
-rw-r--r--src/mame/drivers/lsasquad.c8
-rw-r--r--src/mame/drivers/ltcasino.c2
-rw-r--r--src/mame/drivers/luckgrln.c10
-rw-r--r--src/mame/drivers/lucky74.c4
-rw-r--r--src/mame/drivers/lvcards.c7
-rw-r--r--src/mame/drivers/lwings.c15
-rw-r--r--src/mame/drivers/m10.c10
-rw-r--r--src/mame/drivers/m107.c5
-rw-r--r--src/mame/drivers/m14.c9
-rw-r--r--src/mame/drivers/m52.c3
-rw-r--r--src/mame/drivers/m57.c4
-rw-r--r--src/mame/drivers/m58.c3
-rw-r--r--src/mame/drivers/m62.c20
-rw-r--r--src/mame/drivers/m63.c16
-rw-r--r--src/mame/drivers/m72.c26
-rw-r--r--src/mame/drivers/m90.c10
-rw-r--r--src/mame/drivers/m92.c6
-rw-r--r--src/mame/drivers/macrossp.c6
-rw-r--r--src/mame/drivers/macs.c2
-rw-r--r--src/mame/drivers/madmotor.c6
-rw-r--r--src/mame/drivers/magic10.c4
-rw-r--r--src/mame/drivers/magicard.c18
-rw-r--r--src/mame/drivers/magicfly.c79
-rw-r--r--src/mame/drivers/magmax.c4
-rw-r--r--src/mame/drivers/mainevt.c20
-rw-r--r--src/mame/drivers/mainsnk.c7
-rw-r--r--src/mame/drivers/majorpkr.c6
-rw-r--r--src/mame/drivers/malzak.c9
-rw-r--r--src/mame/drivers/mappy.c15
-rw-r--r--src/mame/drivers/marineb.c4
-rw-r--r--src/mame/drivers/marinedt.c16
-rw-r--r--src/mame/drivers/mario.c4
-rw-r--r--src/mame/drivers/markham.c4
-rw-r--r--src/mame/drivers/mastboy.c6
-rw-r--r--src/mame/drivers/matmania.c8
-rw-r--r--src/mame/drivers/maxaflex.c4
-rw-r--r--src/mame/drivers/maygayv1.c6
-rw-r--r--src/mame/drivers/mayumi.c4
-rw-r--r--src/mame/drivers/mazerbla.c22
-rw-r--r--src/mame/drivers/mcatadv.c5
-rw-r--r--src/mame/drivers/mcr.c15
-rw-r--r--src/mame/drivers/mcr3.c11
-rw-r--r--src/mame/drivers/mcr68.c4
-rw-r--r--src/mame/drivers/meadows.c19
-rw-r--r--src/mame/drivers/mediagx.c9
-rw-r--r--src/mame/drivers/megaphx.c6
-rw-r--r--src/mame/drivers/megasys1.c29
-rw-r--r--src/mame/drivers/megatech.c2
-rw-r--r--src/mame/drivers/megazone.c4
-rw-r--r--src/mame/drivers/meijinsn.c12
-rw-r--r--src/mame/drivers/meritm.c4
-rw-r--r--src/mame/drivers/mermaid.c7
-rw-r--r--src/mame/drivers/metalmx.c4
-rw-r--r--src/mame/drivers/metlclsh.c8
-rw-r--r--src/mame/drivers/metro.c123
-rw-r--r--src/mame/drivers/mexico86.c4
-rw-r--r--src/mame/drivers/meyc8088.c9
-rw-r--r--src/mame/drivers/mgolf.c20
-rw-r--r--src/mame/drivers/micro3d.c2
-rw-r--r--src/mame/drivers/midas.c13
-rw-r--r--src/mame/drivers/midtunit.c2
-rw-r--r--src/mame/drivers/midvunit.c2
-rw-r--r--src/mame/drivers/midwunit.c2
-rw-r--r--src/mame/drivers/midxunit.c2
-rw-r--r--src/mame/drivers/midyunit.c22
-rw-r--r--src/mame/drivers/midzeus.c2
-rw-r--r--src/mame/drivers/mikie.c4
-rw-r--r--src/mame/drivers/mil4000.c6
-rw-r--r--src/mame/drivers/miniboy7.c11
-rw-r--r--src/mame/drivers/mirage.c7
-rw-r--r--src/mame/drivers/mirax.c17
-rw-r--r--src/mame/drivers/missb2.c15
-rw-r--r--src/mame/drivers/missile.c4
-rw-r--r--src/mame/drivers/mitchell.c22
-rw-r--r--src/mame/drivers/mjkjidai.c4
-rw-r--r--src/mame/drivers/mjsister.c5
-rw-r--r--src/mame/drivers/mlanding.c7
-rw-r--r--src/mame/drivers/model1.c18
-rw-r--r--src/mame/drivers/model2.c20
-rw-r--r--src/mame/drivers/model3.c12
-rw-r--r--src/mame/drivers/mogura.c9
-rw-r--r--src/mame/drivers/mole.c10
-rw-r--r--src/mame/drivers/momoko.c5
-rw-r--r--src/mame/drivers/monzagp.c9
-rw-r--r--src/mame/drivers/moo.c29
-rw-r--r--src/mame/drivers/mosaic.c7
-rw-r--r--src/mame/drivers/mouser.c4
-rw-r--r--src/mame/drivers/mpoker.c12
-rw-r--r--src/mame/drivers/mpu12wbk.c7
-rw-r--r--src/mame/drivers/mpu4dealem.c8
-rw-r--r--src/mame/drivers/mpu4plasma.c2
-rw-r--r--src/mame/drivers/mpu4vid.c15
-rw-r--r--src/mame/drivers/mquake.c4
-rw-r--r--src/mame/drivers/mrdo.c4
-rw-r--r--src/mame/drivers/mrflea.c5
-rw-r--r--src/mame/drivers/mrjong.c4
-rw-r--r--src/mame/drivers/ms32.c2
-rw-r--r--src/mame/drivers/msisaac.c5
-rw-r--r--src/mame/drivers/mugsmash.c5
-rw-r--r--src/mame/drivers/multfish.c6
-rw-r--r--src/mame/drivers/multigam.c10
-rw-r--r--src/mame/drivers/munchmo.c4
-rw-r--r--src/mame/drivers/murogem.c9
-rw-r--r--src/mame/drivers/murogmbl.c12
-rw-r--r--src/mame/drivers/mustache.c4
-rw-r--r--src/mame/drivers/mwarr.c16
-rw-r--r--src/mame/drivers/mystwarr.c29
-rw-r--r--src/mame/drivers/n8080.c12
-rw-r--r--src/mame/drivers/namcofl.c2
-rw-r--r--src/mame/drivers/namcoic.c19
-rw-r--r--src/mame/drivers/namcona1.c5
-rw-r--r--src/mame/drivers/namconb1.c11
-rw-r--r--src/mame/drivers/namcond1.c3
-rw-r--r--src/mame/drivers/namcops2.c2
-rw-r--r--src/mame/drivers/namcos1.c6
-rw-r--r--src/mame/drivers/namcos2.c44
-rw-r--r--src/mame/drivers/namcos21.c6
-rw-r--r--src/mame/drivers/namcos22.c4
-rw-r--r--src/mame/drivers/namcos23.c10
-rw-r--r--src/mame/drivers/namcos86.c4
-rw-r--r--src/mame/drivers/naomi.c2
-rw-r--r--src/mame/drivers/naughtyb.c7
-rw-r--r--src/mame/drivers/nbmj8688.c18
-rw-r--r--src/mame/drivers/nbmj8891.c2
-rw-r--r--src/mame/drivers/nbmj8900.c2
-rw-r--r--src/mame/drivers/nbmj8991.c4
-rw-r--r--src/mame/drivers/nbmj9195.c5
-rw-r--r--src/mame/drivers/nemesis.c20
-rw-r--r--src/mame/drivers/neoprint.c20
-rw-r--r--src/mame/drivers/neptunp2.c2
-rw-r--r--src/mame/drivers/news.c6
-rw-r--r--src/mame/drivers/nexus3d.c2
-rw-r--r--src/mame/drivers/nightgal.c16
-rw-r--r--src/mame/drivers/ninjakd2.c15
-rw-r--r--src/mame/drivers/ninjaw.c12
-rw-r--r--src/mame/drivers/nitedrvr.c3
-rw-r--r--src/mame/drivers/niyanpai.c2
-rw-r--r--src/mame/drivers/nmg5.c9
-rw-r--r--src/mame/drivers/nmk16.c115
-rw-r--r--src/mame/drivers/norautp.c27
-rw-r--r--src/mame/drivers/nova2001.c16
-rw-r--r--src/mame/drivers/nsmpoker.c8
-rw-r--r--src/mame/drivers/nwk-tr.c8
-rw-r--r--src/mame/drivers/nycaptor.c9
-rw-r--r--src/mame/drivers/offtwall.c2
-rw-r--r--src/mame/drivers/ohmygod.c7
-rw-r--r--src/mame/drivers/ojankohs.c10
-rw-r--r--src/mame/drivers/olibochu.c16
-rw-r--r--src/mame/drivers/oneshot.c6
-rw-r--r--src/mame/drivers/onetwo.c4
-rw-r--r--src/mame/drivers/opwolf.c14
-rw-r--r--src/mame/drivers/orbit.c4
-rw-r--r--src/mame/drivers/othello.c25
-rw-r--r--src/mame/drivers/othunder.c3
-rw-r--r--src/mame/drivers/overdriv.c11
-rw-r--r--src/mame/drivers/pacland.c3
-rw-r--r--src/mame/drivers/pacman.c4
-rw-r--r--src/mame/drivers/pandoras.c4
-rw-r--r--src/mame/drivers/panicr.c31
-rw-r--r--src/mame/drivers/paradise.c2
-rw-r--r--src/mame/drivers/paranoia.c6
-rw-r--r--src/mame/drivers/parodius.c12
-rw-r--r--src/mame/drivers/pasha2.c6
-rw-r--r--src/mame/drivers/pass.c5
-rw-r--r--src/mame/drivers/pastelg.c6
-rw-r--r--src/mame/drivers/pbaction.c6
-rw-r--r--src/mame/drivers/pcktgal.c3
-rw-r--r--src/mame/drivers/pcxt.c2
-rw-r--r--src/mame/drivers/pengo.c4
-rw-r--r--src/mame/drivers/peplus.c18
-rw-r--r--src/mame/drivers/pgm.c5
-rw-r--r--src/mame/drivers/pgm2.c2
-rw-r--r--src/mame/drivers/phoenix.c11
-rw-r--r--src/mame/drivers/photon.c4
-rw-r--r--src/mame/drivers/photon2.c10
-rw-r--r--src/mame/drivers/photoply.c2
-rw-r--r--src/mame/drivers/pinball2k.c8
-rw-r--r--src/mame/drivers/pingpong.c4
-rw-r--r--src/mame/drivers/pinkiri8.c10
-rw-r--r--src/mame/drivers/pipedrm.c9
-rw-r--r--src/mame/drivers/pipeline.c12
-rw-r--r--src/mame/drivers/pirates.c5
-rw-r--r--src/mame/drivers/pitnrun.c3
-rw-r--r--src/mame/drivers/pkscram.c5
-rw-r--r--src/mame/drivers/pktgaldx.c12
-rw-r--r--src/mame/drivers/playch10.c3
-rw-r--r--src/mame/drivers/playmark.c20
-rw-r--r--src/mame/drivers/plygonet.c4
-rw-r--r--src/mame/drivers/pokechmp.c8
-rw-r--r--src/mame/drivers/poker72.c14
-rw-r--r--src/mame/drivers/polepos.c8
-rw-r--r--src/mame/drivers/policetr.c2
-rw-r--r--src/mame/drivers/polyplay.c4
-rw-r--r--src/mame/drivers/poolshrk.c13
-rw-r--r--src/mame/drivers/pooyan.c4
-rw-r--r--src/mame/drivers/popeye.c7
-rw-r--r--src/mame/drivers/popobear.c10
-rw-r--r--src/mame/drivers/popper.c4
-rw-r--r--src/mame/drivers/portrait.c4
-rw-r--r--src/mame/drivers/powerbal.c6
-rw-r--r--src/mame/drivers/powerins.c2
-rw-r--r--src/mame/drivers/ppmast93.c3
-rw-r--r--src/mame/drivers/prehisle.c5
-rw-r--r--src/mame/drivers/progolf.c17
-rw-r--r--src/mame/drivers/psattack.c3
-rw-r--r--src/mame/drivers/psikyo.c16
-rw-r--r--src/mame/drivers/psikyo4.c14
-rw-r--r--src/mame/drivers/psikyosh.c4
-rw-r--r--src/mame/drivers/psychic5.c4
-rw-r--r--src/mame/drivers/pturn.c5
-rw-r--r--src/mame/drivers/punchout.c2
-rw-r--r--src/mame/drivers/pushman.c10
-rw-r--r--src/mame/drivers/pyson.c2
-rw-r--r--src/mame/drivers/pzletime.c21
-rw-r--r--src/mame/drivers/qdrmfgp.c12
-rw-r--r--src/mame/drivers/quakeat.c2
-rw-r--r--src/mame/drivers/quasar.c4
-rw-r--r--src/mame/drivers/quizdna.c2
-rw-r--r--src/mame/drivers/quizo.c9
-rw-r--r--src/mame/drivers/quizpani.c5
-rw-r--r--src/mame/drivers/quizpun2.c9
-rw-r--r--src/mame/drivers/quizshow.c15
-rw-r--r--src/mame/drivers/r2dx_v33.c22
-rw-r--r--src/mame/drivers/rabbit.c12
-rw-r--r--src/mame/drivers/raiden.c7
-rw-r--r--src/mame/drivers/raiden2.c22
-rw-r--r--src/mame/drivers/rainbow.c13
-rw-r--r--src/mame/drivers/rallyx.c16
-rw-r--r--src/mame/drivers/rampart.c2
-rw-r--r--src/mame/drivers/rastan.c7
-rw-r--r--src/mame/drivers/rastersp.c13
-rw-r--r--src/mame/drivers/rbmk.c10
-rw-r--r--src/mame/drivers/rcorsair.c2
-rw-r--r--src/mame/drivers/realbrk.c6
-rw-r--r--src/mame/drivers/redclash.c8
-rw-r--r--src/mame/drivers/relief.c2
-rw-r--r--src/mame/drivers/renegade.c8
-rw-r--r--src/mame/drivers/retofinv.c4
-rw-r--r--src/mame/drivers/rgum.c4
-rw-r--r--src/mame/drivers/rltennis.c4
-rw-r--r--src/mame/drivers/rmhaihai.c9
-rw-r--r--src/mame/drivers/rockrage.c5
-rw-r--r--src/mame/drivers/rocnrope.c4
-rw-r--r--src/mame/drivers/rohga.c22
-rw-r--r--src/mame/drivers/rollerg.c10
-rw-r--r--src/mame/drivers/rollrace.c4
-rw-r--r--src/mame/drivers/roul.c10
-rw-r--r--src/mame/drivers/royalmah.c16
-rw-r--r--src/mame/drivers/rpunch.c8
-rw-r--r--src/mame/drivers/runaway.c2
-rw-r--r--src/mame/drivers/rungun.c10
-rw-r--r--src/mame/drivers/safarir.c14
-rw-r--r--src/mame/drivers/sandscrp.c6
-rw-r--r--src/mame/drivers/sangho.c4
-rw-r--r--src/mame/drivers/sanremo.c11
-rw-r--r--src/mame/drivers/sauro.c3
-rw-r--r--src/mame/drivers/sbasketb.c4
-rw-r--r--src/mame/drivers/sbowling.c11
-rw-r--r--src/mame/drivers/sbrkout.c5
-rw-r--r--src/mame/drivers/sbugger.c4
-rw-r--r--src/mame/drivers/scobra.c28
-rw-r--r--src/mame/drivers/scotrsht.c4
-rw-r--r--src/mame/drivers/scramble.c64
-rw-r--r--src/mame/drivers/scregg.c8
-rw-r--r--src/mame/drivers/sderby.c25
-rw-r--r--src/mame/drivers/seabattl.c21
-rw-r--r--src/mame/drivers/segac2.c12
-rw-r--r--src/mame/drivers/segae.c2
-rw-r--r--src/mame/drivers/segag80r.c14
-rw-r--r--src/mame/drivers/segahang.c2
-rw-r--r--src/mame/drivers/segajw.c7
-rw-r--r--src/mame/drivers/segald.c6
-rw-r--r--src/mame/drivers/segaorun.c2
-rw-r--r--src/mame/drivers/segas16a.c2
-rw-r--r--src/mame/drivers/segas16b.c2
-rw-r--r--src/mame/drivers/segas18.c2
-rw-r--r--src/mame/drivers/segas24.c7
-rw-r--r--src/mame/drivers/segas32.c4
-rw-r--r--src/mame/drivers/segaxbd.c2
-rw-r--r--src/mame/drivers/segaybd.c2
-rw-r--r--src/mame/drivers/seibuspi.c12
-rw-r--r--src/mame/drivers/seicross.c4
-rw-r--r--src/mame/drivers/sengokmj.c11
-rw-r--r--src/mame/drivers/senjyo.c6
-rw-r--r--src/mame/drivers/seta.c144
-rw-r--r--src/mame/drivers/seta2.c31
-rw-r--r--src/mame/drivers/sf.c11
-rw-r--r--src/mame/drivers/sfbonus.c8
-rw-r--r--src/mame/drivers/sfkick.c2
-rw-r--r--src/mame/drivers/shadfrce.c8
-rw-r--r--src/mame/drivers/shangha3.c24
-rw-r--r--src/mame/drivers/shanghai.c22
-rw-r--r--src/mame/drivers/shangkid.c8
-rw-r--r--src/mame/drivers/shaolins.c4
-rw-r--r--src/mame/drivers/shisen.c2
-rw-r--r--src/mame/drivers/shootout.c8
-rw-r--r--src/mame/drivers/shougi.c12
-rw-r--r--src/mame/drivers/shtzone.c2
-rw-r--r--src/mame/drivers/shuuz.c2
-rw-r--r--src/mame/drivers/sidearms.c23
-rw-r--r--src/mame/drivers/sidepckt.c3
-rw-r--r--src/mame/drivers/sigmab52.c8
-rw-r--r--src/mame/drivers/sigmab98.c23
-rw-r--r--src/mame/drivers/silkroad.c4
-rw-r--r--src/mame/drivers/silvmil.c6
-rw-r--r--src/mame/drivers/simpl156.c6
-rw-r--r--src/mame/drivers/simpsons.c9
-rw-r--r--src/mame/drivers/skimaxx.c5
-rw-r--r--src/mame/drivers/skullxbo.c2
-rw-r--r--src/mame/drivers/skyarmy.c12
-rw-r--r--src/mame/drivers/skydiver.c6
-rw-r--r--src/mame/drivers/skyfox.c4
-rw-r--r--src/mame/drivers/skykid.c4
-rw-r--r--src/mame/drivers/skylncr.c6
-rw-r--r--src/mame/drivers/skyraid.c46
-rw-r--r--src/mame/drivers/slapfght.c16
-rw-r--r--src/mame/drivers/slapshot.c6
-rw-r--r--src/mame/drivers/sliver.c3
-rw-r--r--src/mame/drivers/slotcarn.c2
-rw-r--r--src/mame/drivers/smsmcorp.c10
-rw-r--r--src/mame/drivers/snk.c42
-rw-r--r--src/mame/drivers/snk6502.c8
-rw-r--r--src/mame/drivers/snk68.c2
-rw-r--r--src/mame/drivers/snookr10.c9
-rw-r--r--src/mame/drivers/snowbros.c27
-rw-r--r--src/mame/drivers/solomon.c6
-rw-r--r--src/mame/drivers/sonson.c3
-rw-r--r--src/mame/drivers/sothello.c2
-rw-r--r--src/mame/drivers/spaceg.c47
-rw-r--r--src/mame/drivers/spbactn.c12
-rw-r--r--src/mame/drivers/spcforce.c7
-rw-r--r--src/mame/drivers/spdodgeb.c4
-rw-r--r--src/mame/drivers/speedatk.c4
-rw-r--r--src/mame/drivers/speedbal.c5
-rw-r--r--src/mame/drivers/speedspn.c6
-rw-r--r--src/mame/drivers/speglsht.c4
-rw-r--r--src/mame/drivers/splash.c15
-rw-r--r--src/mame/drivers/splus.c2
-rw-r--r--src/mame/drivers/spoker.c14
-rw-r--r--src/mame/drivers/spool99.c7
-rw-r--r--src/mame/drivers/sprcros2.c4
-rw-r--r--src/mame/drivers/sprint2.c4
-rw-r--r--src/mame/drivers/sprint4.c4
-rw-r--r--src/mame/drivers/sprint8.c5
-rw-r--r--src/mame/drivers/spy.c10
-rw-r--r--src/mame/drivers/srmp2.c18
-rw-r--r--src/mame/drivers/srmp5.c6
-rw-r--r--src/mame/drivers/srmp6.c13
-rw-r--r--src/mame/drivers/srumbler.c5
-rw-r--r--src/mame/drivers/ssfindo.c4
-rw-r--r--src/mame/drivers/sshangha.c7
-rw-r--r--src/mame/drivers/sshot.c9
-rw-r--r--src/mame/drivers/ssingles.c2
-rw-r--r--src/mame/drivers/sslam.c4
-rw-r--r--src/mame/drivers/ssozumo.c4
-rw-r--r--src/mame/drivers/sspeedr.c8
-rw-r--r--src/mame/drivers/ssrj.c4
-rw-r--r--src/mame/drivers/ssv.c3
-rw-r--r--src/mame/drivers/st0016.c2
-rw-r--r--src/mame/drivers/stadhero.c6
-rw-r--r--src/mame/drivers/starcrus.c3
-rw-r--r--src/mame/drivers/starshp1.c4
-rw-r--r--src/mame/drivers/statriv2.c14
-rw-r--r--src/mame/drivers/stfight.c3
-rw-r--r--src/mame/drivers/stlforce.c6
-rw-r--r--src/mame/drivers/strnskil.c4
-rw-r--r--src/mame/drivers/stuntair.c12
-rw-r--r--src/mame/drivers/stv.c2
-rw-r--r--src/mame/drivers/sub.c27
-rw-r--r--src/mame/drivers/subs.c15
-rw-r--r--src/mame/drivers/subsino.c26
-rw-r--r--src/mame/drivers/subsino2.c20
-rw-r--r--src/mame/drivers/summit.c10
-rw-r--r--src/mame/drivers/suna16.c8
-rw-r--r--src/mame/drivers/suna8.c29
-rw-r--r--src/mame/drivers/supbtime.c14
-rw-r--r--src/mame/drivers/supdrapo.c12
-rw-r--r--src/mame/drivers/superchs.c4
-rw-r--r--src/mame/drivers/supercrd.c8
-rw-r--r--src/mame/drivers/superdq.c16
-rw-r--r--src/mame/drivers/superqix.c18
-rw-r--r--src/mame/drivers/superwng.c13
-rw-r--r--src/mame/drivers/suprgolf.c10
-rw-r--r--src/mame/drivers/suprloco.c4
-rw-r--r--src/mame/drivers/suprnova.c2
-rw-r--r--src/mame/drivers/suprridr.c4
-rw-r--r--src/mame/drivers/suprslam.c6
-rw-r--r--src/mame/drivers/surpratk.c12
-rw-r--r--src/mame/drivers/system1.c2
-rw-r--r--src/mame/drivers/system16.c8
-rw-r--r--src/mame/drivers/tagteam.c4
-rw-r--r--src/mame/drivers/tail2nos.c6
-rw-r--r--src/mame/drivers/taito_b.c88
-rw-r--r--src/mame/drivers/taito_f2.c69
-rw-r--r--src/mame/drivers/taito_f3.c4
-rw-r--r--src/mame/drivers/taito_h.c17
-rw-r--r--src/mame/drivers/taito_l.c10
-rw-r--r--src/mame/drivers/taito_o.c5
-rw-r--r--src/mame/drivers/taito_x.c24
-rw-r--r--src/mame/drivers/taito_z.c48
-rw-r--r--src/mame/drivers/taitoair.c8
-rw-r--r--src/mame/drivers/taitojc.c2
-rw-r--r--src/mame/drivers/taitosj.c2
-rw-r--r--src/mame/drivers/taitotx.c2
-rw-r--r--src/mame/drivers/taitowlf.c21
-rw-r--r--src/mame/drivers/tank8.c4
-rw-r--r--src/mame/drivers/tankbatt.c4
-rw-r--r--src/mame/drivers/tankbust.c10
-rw-r--r--src/mame/drivers/taotaido.c8
-rw-r--r--src/mame/drivers/targeth.c6
-rw-r--r--src/mame/drivers/tasman.c9
-rw-r--r--src/mame/drivers/tatsumi.c20
-rw-r--r--src/mame/drivers/tattack.c12
-rw-r--r--src/mame/drivers/taxidriv.c7
-rw-r--r--src/mame/drivers/tbowl.c5
-rw-r--r--src/mame/drivers/tceptor.c5
-rw-r--r--src/mame/drivers/tcl.c2
-rw-r--r--src/mame/drivers/tecmo.c12
-rw-r--r--src/mame/drivers/tecmo16.c8
-rw-r--r--src/mame/drivers/tecmosys.c5
-rw-r--r--src/mame/drivers/tehkanwc.c8
-rw-r--r--src/mame/drivers/terracre.c12
-rw-r--r--src/mame/drivers/tetrisp2.c12
-rw-r--r--src/mame/drivers/thayers.c2
-rw-r--r--src/mame/drivers/thedeep.c3
-rw-r--r--src/mame/drivers/thepit.c6
-rw-r--r--src/mame/drivers/thief.c6
-rw-r--r--src/mame/drivers/thoop2.c6
-rw-r--r--src/mame/drivers/thunderj.c2
-rw-r--r--src/mame/drivers/thunderx.c20
-rw-r--r--src/mame/drivers/tiamc1.c4
-rw-r--r--src/mame/drivers/tigeroad.c5
-rw-r--r--src/mame/drivers/timelimt.c4
-rw-r--r--src/mame/drivers/timeplt.c3
-rw-r--r--src/mame/drivers/timetrv.c2
-rw-r--r--src/mame/drivers/tmaster.c12
-rw-r--r--src/mame/drivers/tmmjprd.c14
-rw-r--r--src/mame/drivers/tmnt.c129
-rw-r--r--src/mame/drivers/tmspoker.c7
-rw-r--r--src/mame/drivers/tnzs.c42
-rw-r--r--src/mame/drivers/toaplan1.c24
-rw-r--r--src/mame/drivers/toaplan2.c123
-rw-r--r--src/mame/drivers/toki.c12
-rw-r--r--src/mame/drivers/tokyocop.c2
-rw-r--r--src/mame/drivers/tonton.c2
-rw-r--r--src/mame/drivers/toobin.c2
-rw-r--r--src/mame/drivers/topspeed.c7
-rw-r--r--src/mame/drivers/tourtabl.c2
-rw-r--r--src/mame/drivers/tourvis.c6
-rw-r--r--src/mame/drivers/toypop.c4
-rw-r--r--src/mame/drivers/tp84.c4
-rw-r--r--src/mame/drivers/trackfld.c8
-rw-r--r--src/mame/drivers/travrusa.c7
-rw-r--r--src/mame/drivers/triforce.c2
-rw-r--r--src/mame/drivers/triplhnt.c21
-rw-r--r--src/mame/drivers/truco.c3
-rw-r--r--src/mame/drivers/trucocl.c4
-rw-r--r--src/mame/drivers/trvmadns.c8
-rw-r--r--src/mame/drivers/tryout.c4
-rw-r--r--src/mame/drivers/tsamurai.c12
-rw-r--r--src/mame/drivers/ttchamp.c8
-rw-r--r--src/mame/drivers/tubep.c8
-rw-r--r--src/mame/drivers/tugboat.c13
-rw-r--r--src/mame/drivers/tumbleb.c42
-rw-r--r--src/mame/drivers/tumblep.c7
-rw-r--r--src/mame/drivers/tunhunt.c4
-rw-r--r--src/mame/drivers/turbo.c12
-rw-r--r--src/mame/drivers/turrett.c5
-rw-r--r--src/mame/drivers/twin16.c10
-rw-r--r--src/mame/drivers/twincobr.c5
-rw-r--r--src/mame/drivers/twins.c12
-rw-r--r--src/mame/drivers/tx1.c12
-rw-r--r--src/mame/drivers/uapce.c6
-rw-r--r--src/mame/drivers/ultraman.c12
-rw-r--r--src/mame/drivers/ultratnk.c4
-rw-r--r--src/mame/drivers/ultrsprt.c6
-rw-r--r--src/mame/drivers/umipoker.c7
-rw-r--r--src/mame/drivers/undrfire.c6
-rw-r--r--src/mame/drivers/unico.c6
-rw-r--r--src/mame/drivers/unkhorse.c9
-rw-r--r--src/mame/drivers/upscope.c4
-rw-r--r--src/mame/drivers/usgames.c4
-rw-r--r--src/mame/drivers/vamphalf.c16
-rw-r--r--src/mame/drivers/vaportra.c5
-rw-r--r--src/mame/drivers/vastar.c4
-rw-r--r--src/mame/drivers/vball.c2
-rw-r--r--src/mame/drivers/vega.c19
-rw-r--r--src/mame/drivers/vegaeo.c4
-rw-r--r--src/mame/drivers/vendetta.c12
-rw-r--r--src/mame/drivers/victory.c2
-rw-r--r--src/mame/drivers/videopin.c3
-rw-r--r--src/mame/drivers/videopkr.c25
-rw-r--r--src/mame/drivers/vigilant.c6
-rw-r--r--src/mame/drivers/vindictr.c2
-rw-r--r--src/mame/drivers/viper.c5
-rw-r--r--src/mame/drivers/vlc.c7
-rw-r--r--src/mame/drivers/volfied.c7
-rw-r--r--src/mame/drivers/vp101.c2
-rw-r--r--src/mame/drivers/vpoker.c12
-rw-r--r--src/mame/drivers/vroulet.c6
-rw-r--r--src/mame/drivers/vsnes.c13
-rw-r--r--src/mame/drivers/vulgus.c3
-rw-r--r--src/mame/drivers/wallc.c12
-rw-r--r--src/mame/drivers/wardner.c5
-rw-r--r--src/mame/drivers/warpsped.c13
-rw-r--r--src/mame/drivers/warpwarp.c15
-rw-r--r--src/mame/drivers/warriorb.c8
-rw-r--r--src/mame/drivers/wc90.c5
-rw-r--r--src/mame/drivers/wc90b.c6
-rw-r--r--src/mame/drivers/wecleman.c8
-rw-r--r--src/mame/drivers/welltris.c6
-rw-r--r--src/mame/drivers/wgp.c6
-rw-r--r--src/mame/drivers/wheelfir.c16
-rw-r--r--src/mame/drivers/wildpkr.c10
-rw-r--r--src/mame/drivers/williams.c2
-rw-r--r--src/mame/drivers/wink.c5
-rw-r--r--src/mame/drivers/wiping.c4
-rw-r--r--src/mame/drivers/witch.c16
-rw-r--r--src/mame/drivers/wiz.c3
-rw-r--r--src/mame/drivers/wolfpack.c3
-rw-r--r--src/mame/drivers/wrally.c5
-rw-r--r--src/mame/drivers/wwfsstar.c6
-rw-r--r--src/mame/drivers/xain.c8
-rw-r--r--src/mame/drivers/xexex.c11
-rw-r--r--src/mame/drivers/xmen.c19
-rw-r--r--src/mame/drivers/xorworld.c3
-rw-r--r--src/mame/drivers/xxmissio.c3
-rw-r--r--src/mame/drivers/xybots.c6
-rw-r--r--src/mame/drivers/xyonix.c4
-rw-r--r--src/mame/drivers/yiear.c4
-rw-r--r--src/mame/drivers/yunsun16.c9
-rw-r--r--src/mame/drivers/yunsung8.c2
-rw-r--r--src/mame/drivers/zac2650.c13
-rw-r--r--src/mame/drivers/zaccaria.c4
-rw-r--r--src/mame/drivers/zaxxon.c8
-rw-r--r--src/mame/drivers/zerozone.c6
-rw-r--r--src/mame/drivers/zodiack.c4
-rw-r--r--src/mame/drivers/zr107.c16
-rw-r--r--src/mame/etc/template_driver.c10
-rw-r--r--src/mame/includes/1942.h4
-rw-r--r--src/mame/includes/1943.h2
-rw-r--r--src/mame/includes/40love.h2
-rw-r--r--src/mame/includes/4enraya.h2
-rw-r--r--src/mame/includes/88games.h2
-rw-r--r--src/mame/includes/ambush.h2
-rw-r--r--src/mame/includes/ampoker2.h2
-rw-r--r--src/mame/includes/arabian.h2
-rw-r--r--src/mame/includes/astrocde.h2
-rw-r--r--src/mame/includes/atarifb.h2
-rw-r--r--src/mame/includes/atarigt.h4
-rw-r--r--src/mame/includes/bankp.h2
-rw-r--r--src/mame/includes/baraduke.h2
-rw-r--r--src/mame/includes/bking.h2
-rw-r--r--src/mame/includes/bladestl.h2
-rw-r--r--src/mame/includes/blockade.h1
-rw-r--r--src/mame/includes/blueprnt.h2
-rw-r--r--src/mame/includes/bogeyman.h2
-rw-r--r--src/mame/includes/brkthru.h2
-rw-r--r--src/mame/includes/bsktball.h2
-rw-r--r--src/mame/includes/buggychl.h2
-rw-r--r--src/mame/includes/calomega.h3
-rw-r--r--src/mame/includes/canyon.h2
-rw-r--r--src/mame/includes/carjmbre.h2
-rw-r--r--src/mame/includes/carpolo.h2
-rw-r--r--src/mame/includes/chaknpop.h2
-rw-r--r--src/mame/includes/cheekyms.h2
-rw-r--r--src/mame/includes/circusc.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.h1
-rw-r--r--src/mame/includes/crbaloon.h2
-rw-r--r--src/mame/includes/darkmist.h2
-rw-r--r--src/mame/includes/dcheese.h2
-rw-r--r--src/mame/includes/dday.h2
-rw-r--r--src/mame/includes/ddribble.h2
-rw-r--r--src/mame/includes/decocass.h2
-rw-r--r--src/mame/includes/docastle.h2
-rw-r--r--src/mame/includes/dogfgt.h2
-rw-r--r--src/mame/includes/dragrace.h2
-rw-r--r--src/mame/includes/dribling.h2
-rw-r--r--src/mame/includes/drmicro.h2
-rw-r--r--src/mame/includes/espial.h2
-rw-r--r--src/mame/includes/exedexes.h2
-rw-r--r--src/mame/includes/exerion.h2
-rw-r--r--src/mame/includes/exterm.h2
-rw-r--r--src/mame/includes/fastlane.h2
-rw-r--r--src/mame/includes/fcombat.h2
-rw-r--r--src/mame/includes/fgoal.h2
-rw-r--r--src/mame/includes/finalizr.h2
-rw-r--r--src/mame/includes/firetrap.h2
-rw-r--r--src/mame/includes/firetrk.h2
-rw-r--r--src/mame/includes/flower.h2
-rw-r--r--src/mame/includes/funkybee.h2
-rw-r--r--src/mame/includes/galaxian.h2
-rw-r--r--src/mame/includes/galivan.h2
-rw-r--r--src/mame/includes/galpani2.h6
-rw-r--r--src/mame/includes/galspnbl.h3
-rw-r--r--src/mame/includes/gaplus.h2
-rw-r--r--src/mame/includes/gatron.h2
-rw-r--r--src/mame/includes/gomoku.h2
-rw-r--r--src/mame/includes/gotya.h2
-rw-r--r--src/mame/includes/grchamp.h2
-rw-r--r--src/mame/includes/gridlee.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/hcastle.h2
-rw-r--r--src/mame/includes/higemaru.h2
-rw-r--r--src/mame/includes/hyperspt.h2
-rw-r--r--src/mame/includes/ikki.h2
-rw-r--r--src/mame/includes/irobot.h2
-rw-r--r--src/mame/includes/ironhors.h2
-rw-r--r--src/mame/includes/jackal.h2
-rw-r--r--src/mame/includes/jailbrek.h2
-rw-r--r--src/mame/includes/jpmsys5.h2
-rw-r--r--src/mame/includes/karnov.h2
-rw-r--r--src/mame/includes/kchamp.h2
-rw-r--r--src/mame/includes/kingobox.h2
-rw-r--r--src/mame/includes/kncljoe.h2
-rw-r--r--src/mame/includes/kopunch.h2
-rw-r--r--src/mame/includes/ksayakyu.h2
-rw-r--r--src/mame/includes/labyrunr.h2
-rw-r--r--src/mame/includes/lasso.h4
-rw-r--r--src/mame/includes/lazercmd.h2
-rw-r--r--src/mame/includes/lockon.h2
-rw-r--r--src/mame/includes/lucky74.h2
-rw-r--r--src/mame/includes/lvcards.h2
-rw-r--r--src/mame/includes/m52.h2
-rw-r--r--src/mame/includes/m57.h2
-rw-r--r--src/mame/includes/m58.h2
-rw-r--r--src/mame/includes/m62.h2
-rw-r--r--src/mame/includes/magmax.h2
-rw-r--r--src/mame/includes/mainsnk.h2
-rw-r--r--src/mame/includes/malzak.h2
-rw-r--r--src/mame/includes/marineb.h2
-rw-r--r--src/mame/includes/mario.h2
-rw-r--r--src/mame/includes/markham.h2
-rw-r--r--src/mame/includes/matmania.h2
-rw-r--r--src/mame/includes/meadows.h1
-rw-r--r--src/mame/includes/megazone.h2
-rw-r--r--src/mame/includes/mermaid.h2
-rw-r--r--src/mame/includes/mikie.h2
-rw-r--r--src/mame/includes/mitchell.h5
-rw-r--r--src/mame/includes/model1.h5
-rw-r--r--src/mame/includes/mouser.h2
-rw-r--r--src/mame/includes/mrdo.h2
-rw-r--r--src/mame/includes/mrjong.h2
-rw-r--r--src/mame/includes/munchmo.h2
-rw-r--r--src/mame/includes/mustache.h2
-rw-r--r--src/mame/includes/namcoic.h6
-rw-r--r--src/mame/includes/namcos86.h2
-rw-r--r--src/mame/includes/naughtyb.h2
-rw-r--r--src/mame/includes/nbmj8891.h2
-rw-r--r--src/mame/includes/nbmj8900.h2
-rw-r--r--src/mame/includes/nbmj9195.h2
-rw-r--r--src/mame/includes/niyanpai.h2
-rw-r--r--src/mame/includes/norautp.h2
-rw-r--r--src/mame/includes/pacland.h2
-rw-r--r--src/mame/includes/pandoras.h2
-rw-r--r--src/mame/includes/pastelg.h2
-rw-r--r--src/mame/includes/pcktgal.h2
-rw-r--r--src/mame/includes/pingpong.h2
-rw-r--r--src/mame/includes/pitnrun.h2
-rw-r--r--src/mame/includes/pk8000.h2
-rw-r--r--src/mame/includes/playch10.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.h2
-rw-r--r--src/mame/includes/popper.h2
-rw-r--r--src/mame/includes/portrait.h2
-rw-r--r--src/mame/includes/pushman.h1
-rw-r--r--src/mame/includes/retofinv.h2
-rw-r--r--src/mame/includes/rockrage.h2
-rw-r--r--src/mame/includes/rocnrope.h2
-rw-r--r--src/mame/includes/rollrace.h2
-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/seicross.h2
-rw-r--r--src/mame/includes/shaolins.h2
-rw-r--r--src/mame/includes/shootout.h2
-rw-r--r--src/mame/includes/sidepckt.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.h2
-rw-r--r--src/mame/includes/snk6502.h2
-rw-r--r--src/mame/includes/snookr10.h2
-rw-r--r--src/mame/includes/sonson.h2
-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/sprcros2.h2
-rw-r--r--src/mame/includes/sprint2.h4
-rw-r--r--src/mame/includes/sprint4.h2
-rw-r--r--src/mame/includes/sprint8.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/starshp1.h4
-rw-r--r--src/mame/includes/stfight.h2
-rw-r--r--src/mame/includes/strnskil.h2
-rw-r--r--src/mame/includes/subs.h2
-rw-r--r--src/mame/includes/suprloco.h2
-rw-r--r--src/mame/includes/suprridr.h2
-rw-r--r--src/mame/includes/tagteam.h2
-rw-r--r--src/mame/includes/tank8.h4
-rw-r--r--src/mame/includes/tankbatt.h2
-rw-r--r--src/mame/includes/tankbust.h2
-rw-r--r--src/mame/includes/taxidriv.h2
-rw-r--r--src/mame/includes/tceptor.h2
-rw-r--r--src/mame/includes/terracre.h2
-rw-r--r--src/mame/includes/thedeep.h2
-rw-r--r--src/mame/includes/thepit.h2
-rw-r--r--src/mame/includes/tiamc1.h4
-rw-r--r--src/mame/includes/timelimt.h2
-rw-r--r--src/mame/includes/timeplt.h2
-rw-r--r--src/mame/includes/toypop.h2
-rw-r--r--src/mame/includes/tp84.h2
-rw-r--r--src/mame/includes/travrusa.h2
-rw-r--r--src/mame/includes/triplhnt.h2
-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/tunhunt.h2
-rw-r--r--src/mame/includes/ultratnk.h2
-rw-r--r--src/mame/includes/usgames.h2
-rw-r--r--src/mame/includes/vulgus.h2
-rw-r--r--src/mame/includes/wiping.h2
-rw-r--r--src/mame/includes/wiz.h2
-rw-r--r--src/mame/includes/wolfpack.h4
-rw-r--r--src/mame/includes/xorworld.h2
-rw-r--r--src/mame/includes/xyonix.h2
-rw-r--r--src/mame/includes/yiear.h2
-rw-r--r--src/mame/includes/zac2650.h2
-rw-r--r--src/mame/includes/zaccaria.h2
-rw-r--r--src/mame/includes/zaxxon.h2
-rw-r--r--src/mame/machine/archimds.c4
-rw-r--r--src/mame/machine/atarifb.c8
-rw-r--r--src/mame/machine/atarigen.c8
-rw-r--r--src/mame/machine/leland.c8
-rw-r--r--src/mame/machine/mega32x.c15
-rw-r--r--src/mame/machine/mega32x.h9
-rw-r--r--src/mame/machine/megadriv.c4
-rw-r--r--src/mame/machine/megavdp.c20
-rw-r--r--src/mame/machine/megavdp.h2
-rw-r--r--src/mame/machine/nitedrvr.c12
-rw-r--r--src/mame/machine/segaic16.c9
-rw-r--r--src/mame/machine/segaic16.h1
-rw-r--r--src/mame/machine/segamsys.c6
-rw-r--r--src/mame/video/1942.c30
-rw-r--r--src/mame/video/1943.c23
-rw-r--r--src/mame/video/40love.c26
-rw-r--r--src/mame/video/8080bw.c12
-rw-r--r--src/mame/video/aeroboto.c2
-rw-r--r--src/mame/video/aerofgt.c16
-rw-r--r--src/mame/video/ajax.c2
-rw-r--r--src/mame/video/alpha68k.c32
-rw-r--r--src/mame/video/ambush.c10
-rw-r--r--src/mame/video/amiga.c2
-rw-r--r--src/mame/video/ampoker2.c6
-rw-r--r--src/mame/video/amspdwy.c6
-rw-r--r--src/mame/video/angelkds.c10
-rw-r--r--src/mame/video/appoooh.c12
-rw-r--r--src/mame/video/aquarium.c4
-rw-r--r--src/mame/video/arabian.c6
-rw-r--r--src/mame/video/archimds.c14
-rw-r--r--src/mame/video/argus.c20
-rw-r--r--src/mame/video/arkanoid.c4
-rw-r--r--src/mame/video/armedf.c2
-rw-r--r--src/mame/video/astrocde.c6
-rw-r--r--src/mame/video/atari.c5
-rw-r--r--src/mame/video/atarifb.c6
-rw-r--r--src/mame/video/atarigt.c24
-rw-r--r--src/mame/video/atarisy2.c2
-rw-r--r--src/mame/video/bagman.c6
-rw-r--r--src/mame/video/balsente.c6
-rw-r--r--src/mame/video/bankp.c15
-rw-r--r--src/mame/video/baraduke.c6
-rw-r--r--src/mame/video/battlane.c6
-rw-r--r--src/mame/video/battlera.c12
-rw-r--r--src/mame/video/battlex.c4
-rw-r--r--src/mame/video/beathead.c2
-rw-r--r--src/mame/video/beezer.c2
-rw-r--r--src/mame/video/bfm_adr2.c39
-rw-r--r--src/mame/video/bfm_adr2.h6
-rw-r--r--src/mame/video/bigevglf.c4
-rw-r--r--src/mame/video/bigstrkb.c4
-rw-r--r--src/mame/video/bionicc.c6
-rw-r--r--src/mame/video/bking.c16
-rw-r--r--src/mame/video/bladestl.c11
-rw-r--r--src/mame/video/blktiger.c2
-rw-r--r--src/mame/video/blmbycar.c4
-rw-r--r--src/mame/video/blockout.c2
-rw-r--r--src/mame/video/bloodbro.c4
-rw-r--r--src/mame/video/blueprnt.c10
-rw-r--r--src/mame/video/bogeyman.c10
-rw-r--r--src/mame/video/bombjack.c2
-rw-r--r--src/mame/video/boogwing.c4
-rw-r--r--src/mame/video/bosco.c26
-rw-r--r--src/mame/video/brkthru.c26
-rw-r--r--src/mame/video/bsktball.c2
-rw-r--r--src/mame/video/btime.c22
-rw-r--r--src/mame/video/bublbobl.c2
-rw-r--r--src/mame/video/buggychl.c8
-rw-r--r--src/mame/video/bwing.c8
-rw-r--r--src/mame/video/cabal.c2
-rw-r--r--src/mame/video/calomega.c6
-rw-r--r--src/mame/video/canyon.c2
-rw-r--r--src/mame/video/capbowl.c2
-rw-r--r--src/mame/video/carjmbre.c12
-rw-r--r--src/mame/video/carpolo.c30
-rw-r--r--src/mame/video/cave.c34
-rw-r--r--src/mame/video/cbasebal.c2
-rw-r--r--src/mame/video/cbuster.c2
-rw-r--r--src/mame/video/ccastles.c6
-rw-r--r--src/mame/video/cclimber.c28
-rw-r--r--src/mame/video/centiped.c28
-rw-r--r--src/mame/video/chaknpop.c6
-rw-r--r--src/mame/video/champbas.c30
-rw-r--r--src/mame/video/changela.c2
-rw-r--r--src/mame/video/cheekyms.c14
-rw-r--r--src/mame/video/circus.c6
-rw-r--r--src/mame/video/circusc.c15
-rw-r--r--src/mame/video/cischeat.c12
-rw-r--r--src/mame/video/citycon.c4
-rw-r--r--src/mame/video/cloak.c4
-rw-r--r--src/mame/video/cloud9.c8
-rw-r--r--src/mame/video/clshroad.c15
-rw-r--r--src/mame/video/cninja.c2
-rw-r--r--src/mame/video/combatsc.c16
-rw-r--r--src/mame/video/commando.c2
-rw-r--r--src/mame/video/compgolf.c10
-rw-r--r--src/mame/video/contra.c11
-rw-r--r--src/mame/video/cop01.c15
-rw-r--r--src/mame/video/copsnrob.c14
-rw-r--r--src/mame/video/cosmic.c46
-rw-r--r--src/mame/video/cps1.c14
-rw-r--r--src/mame/video/crbaloon.c6
-rw-r--r--src/mame/video/crshrace.c2
-rw-r--r--src/mame/video/cvs.c29
-rw-r--r--src/mame/video/cyberbal.c2
-rw-r--r--src/mame/video/darius.c2
-rw-r--r--src/mame/video/darkmist.c15
-rw-r--r--src/mame/video/darkseal.c4
-rw-r--r--src/mame/video/dassault.c4
-rw-r--r--src/mame/video/dcheese.c4
-rw-r--r--src/mame/video/dcon.c24
-rw-r--r--src/mame/video/dday.c155
-rw-r--r--src/mame/video/ddragon.c2
-rw-r--r--src/mame/video/ddragon3.c8
-rw-r--r--src/mame/video/ddribble.c13
-rw-r--r--src/mame/video/deadang.c4
-rw-r--r--src/mame/video/dec0.c4
-rw-r--r--src/mame/video/dec8.c16
-rw-r--r--src/mame/video/deckarn.c17
-rw-r--r--src/mame/video/deckarn.h5
-rw-r--r--src/mame/video/decmxc06.c17
-rw-r--r--src/mame/video/decmxc06.h6
-rw-r--r--src/mame/video/deco16ic.c15
-rw-r--r--src/mame/video/deco16ic.h5
-rw-r--r--src/mame/video/deco32.c26
-rw-r--r--src/mame/video/deco_mlc.c8
-rw-r--r--src/mame/video/decocass.c14
-rw-r--r--src/mame/video/decocomn.c6
-rw-r--r--src/mame/video/decospr.c31
-rw-r--r--src/mame/video/decospr.h6
-rw-r--r--src/mame/video/deniam.c2
-rw-r--r--src/mame/video/digdug.c18
-rw-r--r--src/mame/video/djboy.c2
-rw-r--r--src/mame/video/djmain.c6
-rw-r--r--src/mame/video/dkong.c52
-rw-r--r--src/mame/video/docastle.c10
-rw-r--r--src/mame/video/dogfgt.c6
-rw-r--r--src/mame/video/dooyong.c22
-rw-r--r--src/mame/video/drgnmst.c2
-rw-r--r--src/mame/video/dribling.c4
-rw-r--r--src/mame/video/drmicro.c13
-rw-r--r--src/mame/video/dynax.c8
-rw-r--r--src/mame/video/dynduke.c6
-rw-r--r--src/mame/video/eprom.c6
-rw-r--r--src/mame/video/equites.c28
-rw-r--r--src/mame/video/espial.c24
-rw-r--r--src/mame/video/exedexes.c19
-rw-r--r--src/mame/video/exerion.c21
-rw-r--r--src/mame/video/exidy.c12
-rw-r--r--src/mame/video/exidy440.c6
-rw-r--r--src/mame/video/exprraid.c4
-rw-r--r--src/mame/video/exterm.c4
-rw-r--r--src/mame/video/exzisus.c4
-rw-r--r--src/mame/video/f1gp.c6
-rw-r--r--src/mame/video/fantland.c2
-rw-r--r--src/mame/video/fastfred.c13
-rw-r--r--src/mame/video/fastlane.c11
-rw-r--r--src/mame/video/fcombat.c23
-rw-r--r--src/mame/video/fgoal.c8
-rw-r--r--src/mame/video/finalizr.c31
-rw-r--r--src/mame/video/firetrap.c26
-rw-r--r--src/mame/video/firetrk.c32
-rw-r--r--src/mame/video/fitfight.c4
-rw-r--r--src/mame/video/flower.c11
-rw-r--r--src/mame/video/flstory.c12
-rw-r--r--src/mame/video/foodf.c6
-rw-r--r--src/mame/video/freekick.c6
-rw-r--r--src/mame/video/fromanc2.c12
-rw-r--r--src/mame/video/fromance.c2
-rw-r--r--src/mame/video/funkybee.c10
-rw-r--r--src/mame/video/funworld.c4
-rw-r--r--src/mame/video/funybubl.c8
-rw-r--r--src/mame/video/fuukifg2.c8
-rw-r--r--src/mame/video/fuukifg3.c4
-rw-r--r--src/mame/video/gaelco.c2
-rw-r--r--src/mame/video/gaelco2.c6
-rw-r--r--src/mame/video/gaiden.c2
-rw-r--r--src/mame/video/galaga.c20
-rw-r--r--src/mame/video/galastrm.c2
-rw-r--r--src/mame/video/galaxia.c16
-rw-r--r--src/mame/video/galaxian.c8
-rw-r--r--src/mame/video/galaxold.c52
-rw-r--r--src/mame/video/galivan.c27
-rw-r--r--src/mame/video/galpani2.c8
-rw-r--r--src/mame/video/galpanic.c6
-rw-r--r--src/mame/video/galspnbl.c10
-rw-r--r--src/mame/video/gaplus.c17
-rw-r--r--src/mame/video/gatron.c2
-rw-r--r--src/mame/video/gberet.c19
-rw-r--r--src/mame/video/gcpinbal.c2
-rw-r--r--src/mame/video/gijoe.c2
-rw-r--r--src/mame/video/ginganin.c2
-rw-r--r--src/mame/video/gladiatr.c6
-rw-r--r--src/mame/video/glass.c4
-rw-r--r--src/mame/video/gng.c2
-rw-r--r--src/mame/video/goal92.c4
-rw-r--r--src/mame/video/goindol.c4
-rw-r--r--src/mame/video/goldstar.c16
-rw-r--r--src/mame/video/gomoku.c6
-rw-r--r--src/mame/video/gottlieb.c6
-rw-r--r--src/mame/video/gotya.c13
-rw-r--r--src/mame/video/gp9001.c17
-rw-r--r--src/mame/video/gp9001.h6
-rw-r--r--src/mame/video/grchamp.c11
-rw-r--r--src/mame/video/gridlee.c8
-rw-r--r--src/mame/video/groundfx.c2
-rw-r--r--src/mame/video/gstriker.c2
-rw-r--r--src/mame/video/gsword.c22
-rw-r--r--src/mame/video/gticlub.c3
-rw-r--r--src/mame/video/gunbustr.c4
-rw-r--r--src/mame/video/gundealr.c2
-rw-r--r--src/mame/video/gunsmoke.c19
-rw-r--r--src/mame/video/gyruss.c13
-rw-r--r--src/mame/video/hanaawas.c9
-rw-r--r--src/mame/video/harddriv.c4
-rw-r--r--src/mame/video/hcastle.c11
-rw-r--r--src/mame/video/higemaru.c15
-rw-r--r--src/mame/video/himesiki.c4
-rw-r--r--src/mame/video/hng64.c19
-rw-r--r--src/mame/video/holeland.c4
-rw-r--r--src/mame/video/homedata.c16
-rw-r--r--src/mame/video/homerun.c6
-rw-r--r--src/mame/video/hyperspt.c19
-rw-r--r--src/mame/video/hyprduel.c10
-rw-r--r--src/mame/video/ikki.c21
-rw-r--r--src/mame/video/inufuku.c2
-rw-r--r--src/mame/video/irobot.c8
-rw-r--r--src/mame/video/ironhors.c33
-rw-r--r--src/mame/video/itech32.c10
-rw-r--r--src/mame/video/itech8.c8
-rw-r--r--src/mame/video/jack.c10
-rw-r--r--src/mame/video/jackal.c15
-rw-r--r--src/mame/video/jailbrek.c15
-rw-r--r--src/mame/video/jalblend.c36
-rw-r--r--src/mame/video/jalblend.h4
-rw-r--r--src/mame/video/jpmimpct.c6
-rw-r--r--src/mame/video/k001005.c15
-rw-r--r--src/mame/video/k001005.h5
-rw-r--r--src/mame/video/k001604.c17
-rw-r--r--src/mame/video/k001604.h5
-rw-r--r--src/mame/video/k007121.c23
-rw-r--r--src/mame/video/k007121.h8
-rw-r--r--src/mame/video/k007420.c21
-rw-r--r--src/mame/video/k007420.h6
-rw-r--r--src/mame/video/k037122.c17
-rw-r--r--src/mame/video/k037122.h6
-rw-r--r--src/mame/video/k051316.c21
-rw-r--r--src/mame/video/k051316.h5
-rw-r--r--src/mame/video/k051960.c37
-rw-r--r--src/mame/video/k051960.h7
-rw-r--r--src/mame/video/k052109.c18
-rw-r--r--src/mame/video/k052109.h5
-rw-r--r--src/mame/video/k053244_k053245.c32
-rw-r--r--src/mame/video/k053244_k053245.h7
-rw-r--r--src/mame/video/k053246_k053247_k055673.c41
-rw-r--r--src/mame/video/k053246_k053247_k055673.h34
-rw-r--r--src/mame/video/k053936.c4
-rw-r--r--src/mame/video/k054156_k054157_k056832.c27
-rw-r--r--src/mame/video/k054156_k054157_k056832.h4
-rw-r--r--src/mame/video/k054338.c26
-rw-r--r--src/mame/video/kan_panb.c14
-rw-r--r--src/mame/video/kan_pand.c14
-rw-r--r--src/mame/video/kan_pand.h5
-rw-r--r--src/mame/video/kaneko16.c2
-rw-r--r--src/mame/video/kaneko_grap2.c15
-rw-r--r--src/mame/video/kaneko_grap2.h8
-rw-r--r--src/mame/video/karnov.c18
-rw-r--r--src/mame/video/kchamp.c14
-rw-r--r--src/mame/video/kickgoal.c2
-rw-r--r--src/mame/video/kingobox.c21
-rw-r--r--src/mame/video/kncljoe.c15
-rw-r--r--src/mame/video/konami_helper.c4
-rw-r--r--src/mame/video/konami_helper.h2
-rw-r--r--src/mame/video/konamigx.c40
-rw-r--r--src/mame/video/kopunch.c6
-rw-r--r--src/mame/video/ksayakyu.c6
-rw-r--r--src/mame/video/kyugo.c2
-rw-r--r--src/mame/video/labyrunr.c17
-rw-r--r--src/mame/video/ladybug.c29
-rw-r--r--src/mame/video/ladyfrog.c8
-rw-r--r--src/mame/video/lasso.c29
-rw-r--r--src/mame/video/lastduel.c4
-rw-r--r--src/mame/video/lazercmd.c2
-rw-r--r--src/mame/video/legionna.c12
-rw-r--r--src/mame/video/leland.c7
-rw-r--r--src/mame/video/lemmings.c4
-rw-r--r--src/mame/video/liberate.c22
-rw-r--r--src/mame/video/lkage.c2
-rw-r--r--src/mame/video/lockon.c10
-rw-r--r--src/mame/video/lordgun.c6
-rw-r--r--src/mame/video/lsasquad.c12
-rw-r--r--src/mame/video/lucky74.c6
-rw-r--r--src/mame/video/lvcards.c42
-rw-r--r--src/mame/video/lwings.c4
-rw-r--r--src/mame/video/m10.c4
-rw-r--r--src/mame/video/m107.c8
-rw-r--r--src/mame/video/m52.c46
-rw-r--r--src/mame/video/m57.c16
-rw-r--r--src/mame/video/m58.c18
-rw-r--r--src/mame/video/m62.c34
-rw-r--r--src/mame/video/m72.c10
-rw-r--r--src/mame/video/m90.c16
-rw-r--r--src/mame/video/m92.c18
-rw-r--r--src/mame/video/macrossp.c10
-rw-r--r--src/mame/video/madalien.c19
-rw-r--r--src/mame/video/magmax.c19
-rw-r--r--src/mame/video/mainsnk.c6
-rw-r--r--src/mame/video/malzak.c2
-rw-r--r--src/mame/video/mappy.c45
-rw-r--r--src/mame/video/marineb.c28
-rw-r--r--src/mame/video/mario.c14
-rw-r--r--src/mame/video/markham.c13
-rw-r--r--src/mame/video/matmania.c22
-rw-r--r--src/mame/video/mcatadv.c2
-rw-r--r--src/mame/video/mcr.c6
-rw-r--r--src/mame/video/mcr3.c24
-rw-r--r--src/mame/video/mcr68.c12
-rw-r--r--src/mame/video/meadows.c2
-rw-r--r--src/mame/video/megasys1.c4
-rw-r--r--src/mame/video/megazone.c19
-rw-r--r--src/mame/video/mermaid.c58
-rw-r--r--src/mame/video/metlclsh.c6
-rw-r--r--src/mame/video/metro.c10
-rw-r--r--src/mame/video/mexico86.c8
-rw-r--r--src/mame/video/micro3d.c2
-rw-r--r--src/mame/video/midtunit.c2
-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/mikie.c11
-rw-r--r--src/mame/video/mitchell.c30
-rw-r--r--src/mame/video/mjkjidai.c4
-rw-r--r--src/mame/video/model1.c12
-rw-r--r--src/mame/video/model2.c2
-rw-r--r--src/mame/video/momoko.c10
-rw-r--r--src/mame/video/mouser.c12
-rw-r--r--src/mame/video/mrdo.c13
-rw-r--r--src/mame/video/mrflea.c6
-rw-r--r--src/mame/video/mrjong.c11
-rw-r--r--src/mame/video/ms32.c4
-rw-r--r--src/mame/video/msisaac.c18
-rw-r--r--src/mame/video/mugsmash.c2
-rw-r--r--src/mame/video/munchmo.c12
-rw-r--r--src/mame/video/mustache.c6
-rw-r--r--src/mame/video/mystston.c6
-rw-r--r--src/mame/video/n8080.c14
-rw-r--r--src/mame/video/namcofl.c4
-rw-r--r--src/mame/video/namcona1.c14
-rw-r--r--src/mame/video/namconb1.c6
-rw-r--r--src/mame/video/namcos1.c16
-rw-r--r--src/mame/video/namcos2.c14
-rw-r--r--src/mame/video/namcos21.c2
-rw-r--r--src/mame/video/namcos22.c12
-rw-r--r--src/mame/video/namcos86.c12
-rw-r--r--src/mame/video/naughtyb.c10
-rw-r--r--src/mame/video/nbmj8688.c6
-rw-r--r--src/mame/video/nbmj8891.c40
-rw-r--r--src/mame/video/nbmj8900.c44
-rw-r--r--src/mame/video/nbmj8991.c6
-rw-r--r--src/mame/video/nbmj9195.c18
-rw-r--r--src/mame/video/nemesis.c6
-rw-r--r--src/mame/video/ninjakd2.c2
-rw-r--r--src/mame/video/ninjaw.c4
-rw-r--r--src/mame/video/niyanpai.c26
-rw-r--r--src/mame/video/nmk16.c8
-rw-r--r--src/mame/video/nova2001.c14
-rw-r--r--src/mame/video/nycaptor.c8
-rw-r--r--src/mame/video/ohmygod.c2
-rw-r--r--src/mame/video/ojankohs.c26
-rw-r--r--src/mame/video/oneshot.c8
-rw-r--r--src/mame/video/orbit.c2
-rw-r--r--src/mame/video/othunder.c4
-rw-r--r--src/mame/video/pacland.c23
-rw-r--r--src/mame/video/pacman.c33
-rw-r--r--src/mame/video/pandoras.c15
-rw-r--r--src/mame/video/paradise.c16
-rw-r--r--src/mame/video/pastelg.c14
-rw-r--r--src/mame/video/pbaction.c2
-rw-r--r--src/mame/video/pc080sn.c13
-rw-r--r--src/mame/video/pc080sn.h5
-rw-r--r--src/mame/video/pc090oj.c14
-rw-r--r--src/mame/video/pc090oj.h5
-rw-r--r--src/mame/video/pcktgal.c16
-rw-r--r--src/mame/video/pgm.c2
-rw-r--r--src/mame/video/phoenix.c12
-rw-r--r--src/mame/video/pingpong.c15
-rw-r--r--src/mame/video/pirates.c2
-rw-r--r--src/mame/video/pitnrun.c8
-rw-r--r--src/mame/video/pk8000.c4
-rw-r--r--src/mame/video/pktgaldx.c8
-rw-r--r--src/mame/video/playch10.c6
-rw-r--r--src/mame/video/playmark.c10
-rw-r--r--src/mame/video/plygonet.c4
-rw-r--r--src/mame/video/pokechmp.c2
-rw-r--r--src/mame/video/polepos.c21
-rw-r--r--src/mame/video/policetr.c2
-rw-r--r--src/mame/video/polyplay.c26
-rw-r--r--src/mame/video/poolshrk.c2
-rw-r--r--src/mame/video/pooyan.c15
-rw-r--r--src/mame/video/popeye.c10
-rw-r--r--src/mame/video/popper.c8
-rw-r--r--src/mame/video/portrait.c15
-rw-r--r--src/mame/video/powerins.c4
-rw-r--r--src/mame/video/powervr2.c8
-rw-r--r--src/mame/video/ppu2c0x.c10
-rw-r--r--src/mame/video/ppu2c0x.h7
-rw-r--r--src/mame/video/prehisle.c2
-rw-r--r--src/mame/video/psikyo.c12
-rw-r--r--src/mame/video/psikyo4.c2
-rw-r--r--src/mame/video/psikyosh.c14
-rw-r--r--src/mame/video/psychic5.c12
-rw-r--r--src/mame/video/punchout.c4
-rw-r--r--src/mame/video/pushman.c2
-rw-r--r--src/mame/video/qdrmfgp.c2
-rw-r--r--src/mame/video/quasar.c27
-rw-r--r--src/mame/video/quizdna.c6
-rw-r--r--src/mame/video/raiden.c4
-rw-r--r--src/mame/video/rainbow.c2
-rw-r--r--src/mame/video/rallyx.c54
-rw-r--r--src/mame/video/realbrk.c10
-rw-r--r--src/mame/video/redclash.c27
-rw-r--r--src/mame/video/renegade.c4
-rw-r--r--src/mame/video/retofinv.c17
-rw-r--r--src/mame/video/rockrage.c13
-rw-r--r--src/mame/video/rocnrope.c13
-rw-r--r--src/mame/video/rohga.c8
-rw-r--r--src/mame/video/rollrace.c28
-rw-r--r--src/mame/video/rpunch.c2
-rw-r--r--src/mame/video/runaway.c10
-rw-r--r--src/mame/video/rungun.c4
-rw-r--r--src/mame/video/sauro.c4
-rw-r--r--src/mame/video/sbasketb.c13
-rw-r--r--src/mame/video/sbugger.c6
-rw-r--r--src/mame/video/scn2674.c14
-rw-r--r--src/mame/video/scn2674.h5
-rw-r--r--src/mame/video/scotrsht.c13
-rw-r--r--src/mame/video/sderby.c2
-rw-r--r--src/mame/video/segag80r.c6
-rw-r--r--src/mame/video/segahang.c2
-rw-r--r--src/mame/video/segaic24.c17
-rw-r--r--src/mame/video/segaic24.h5
-rw-r--r--src/mame/video/segaorun.c2
-rw-r--r--src/mame/video/segas16a.c2
-rw-r--r--src/mame/video/segas16b.c2
-rw-r--r--src/mame/video/segas18.c4
-rw-r--r--src/mame/video/segas24.c2
-rw-r--r--src/mame/video/segas32.c6
-rw-r--r--src/mame/video/segaxbd.c2
-rw-r--r--src/mame/video/segaybd.c2
-rw-r--r--src/mame/video/seibuspi.c10
-rw-r--r--src/mame/video/seicross.c14
-rw-r--r--src/mame/video/senjyo.c6
-rw-r--r--src/mame/video/seta.c77
-rw-r--r--src/mame/video/seta001.c28
-rw-r--r--src/mame/video/seta001.h5
-rw-r--r--src/mame/video/seta2.c2
-rw-r--r--src/mame/video/sf.c10
-rw-r--r--src/mame/video/shadfrce.c10
-rw-r--r--src/mame/video/shangha3.c12
-rw-r--r--src/mame/video/shangkid.c17
-rw-r--r--src/mame/video/shaolins.c13
-rw-r--r--src/mame/video/shisen.c2
-rw-r--r--src/mame/video/shootout.c10
-rw-r--r--src/mame/video/sidearms.c2
-rw-r--r--src/mame/video/sidepckt.c18
-rw-r--r--src/mame/video/silkroad.c4
-rw-r--r--src/mame/video/simpsons.c2
-rw-r--r--src/mame/video/skydiver.c2
-rw-r--r--src/mame/video/skyfox.c8
-rw-r--r--src/mame/video/skykid.c15
-rw-r--r--src/mame/video/skyraid.c6
-rw-r--r--src/mame/video/slapfght.c6
-rw-r--r--src/mame/video/slapshot.c4
-rw-r--r--src/mame/video/snk.c30
-rw-r--r--src/mame/video/snk6502.c24
-rw-r--r--src/mame/video/snk68.c4
-rw-r--r--src/mame/video/snookr10.c14
-rw-r--r--src/mame/video/solomon.c2
-rw-r--r--src/mame/video/sonson.c17
-rw-r--r--src/mame/video/spbactn.c6
-rw-r--r--src/mame/video/spcforce.c2
-rw-r--r--src/mame/video/spdodgeb.c16
-rw-r--r--src/mame/video/speedatk.c11
-rw-r--r--src/mame/video/speedbal.c2
-rw-r--r--src/mame/video/speedspn.c4
-rw-r--r--src/mame/video/splash.c4
-rw-r--r--src/mame/video/sprcros2.c19
-rw-r--r--src/mame/video/sprint2.c57
-rw-r--r--src/mame/video/sprint4.c47
-rw-r--r--src/mame/video/sprint8.c61
-rw-r--r--src/mame/video/srmp2.c12
-rw-r--r--src/mame/video/srumbler.c2
-rw-r--r--src/mame/video/sshangha.c2
-rw-r--r--src/mame/video/sslam.c26
-rw-r--r--src/mame/video/ssozumo.c8
-rw-r--r--src/mame/video/sspeedr.c4
-rw-r--r--src/mame/video/ssrj.c6
-rw-r--r--src/mame/video/ssv.c2
-rw-r--r--src/mame/video/st0016.c6
-rw-r--r--src/mame/video/st0020.c17
-rw-r--r--src/mame/video/st0020.h4
-rw-r--r--src/mame/video/stactics.c6
-rw-r--r--src/mame/video/starcrus.c28
-rw-r--r--src/mame/video/starshp1.c31
-rw-r--r--src/mame/video/stfight.c29
-rw-r--r--src/mame/video/stlforce.c2
-rw-r--r--src/mame/video/strnskil.c13
-rw-r--r--src/mame/video/subs.c28
-rw-r--r--src/mame/video/suna16.c6
-rw-r--r--src/mame/video/suna8.c6
-rw-r--r--src/mame/video/superchs.c4
-rw-r--r--src/mame/video/superqix.c4
-rw-r--r--src/mame/video/suprloco.c8
-rw-r--r--src/mame/video/suprnova.c8
-rw-r--r--src/mame/video/suprridr.c6
-rw-r--r--src/mame/video/suprslam.c2
-rw-r--r--src/mame/video/system1.c2
-rw-r--r--src/mame/video/system16.c18
-rw-r--r--src/mame/video/tagteam.c8
-rw-r--r--src/mame/video/tail2nos.c2
-rw-r--r--src/mame/video/taito_b.c2
-rw-r--r--src/mame/video/taito_f2.c4
-rw-r--r--src/mame/video/taito_f3.c8
-rw-r--r--src/mame/video/taito_h.c6
-rw-r--r--src/mame/video/taito_l.c6
-rw-r--r--src/mame/video/taito_o.c2
-rw-r--r--src/mame/video/taito_z.c16
-rw-r--r--src/mame/video/taitoair.c2
-rw-r--r--src/mame/video/taitojc.c4
-rw-r--r--src/mame/video/taitosj.c18
-rw-r--r--src/mame/video/tank8.c59
-rw-r--r--src/mame/video/tankbatt.c13
-rw-r--r--src/mame/video/tankbust.c2
-rw-r--r--src/mame/video/targeth.c2
-rw-r--r--src/mame/video/tatsumi.c52
-rw-r--r--src/mame/video/taxidriv.c8
-rw-r--r--src/mame/video/tbowl.c8
-rw-r--r--src/mame/video/tc0110pcr.c23
-rw-r--r--src/mame/video/tc0110pcr.h8
-rw-r--r--src/mame/video/tceptor.c27
-rw-r--r--src/mame/video/tecmo.c2
-rw-r--r--src/mame/video/tecmo16.c6
-rw-r--r--src/mame/video/tecmo_spr.c4
-rw-r--r--src/mame/video/tecmo_spr.h2
-rw-r--r--src/mame/video/tecmosys.c6
-rw-r--r--src/mame/video/tehkanwc.c2
-rw-r--r--src/mame/video/terracre.c17
-rw-r--r--src/mame/video/tetrisp2.c12
-rw-r--r--src/mame/video/thedeep.c8
-rw-r--r--src/mame/video/thepit.c14
-rw-r--r--src/mame/video/thief.c4
-rw-r--r--src/mame/video/thoop2.c2
-rw-r--r--src/mame/video/thunderx.c2
-rw-r--r--src/mame/video/tia.c22
-rw-r--r--src/mame/video/tiamc1.c10
-rw-r--r--src/mame/video/tigeroad.c2
-rw-r--r--src/mame/video/timelimt.c8
-rw-r--r--src/mame/video/timeplt.c12
-rw-r--r--src/mame/video/tmnt.c14
-rw-r--r--src/mame/video/tnzs.c4
-rw-r--r--src/mame/video/toaplan1.c4
-rw-r--r--src/mame/video/toki.c4
-rw-r--r--src/mame/video/toobin.c10
-rw-r--r--src/mame/video/topspeed.c2
-rw-r--r--src/mame/video/toypop.c20
-rw-r--r--src/mame/video/tp84.c13
-rw-r--r--src/mame/video/trackfld.c17
-rw-r--r--src/mame/video/travrusa.c26
-rw-r--r--src/mame/video/triplhnt.c2
-rw-r--r--src/mame/video/truco.c6
-rw-r--r--src/mame/video/trucocl.c4
-rw-r--r--src/mame/video/tryout.c14
-rw-r--r--src/mame/video/tsamurai.c4
-rw-r--r--src/mame/video/tubep.c8
-rw-r--r--src/mame/video/tunhunt.c33
-rw-r--r--src/mame/video/turbo.c6
-rw-r--r--src/mame/video/twin16.c8
-rw-r--r--src/mame/video/tx1.c4
-rw-r--r--src/mame/video/ultratnk.c46
-rw-r--r--src/mame/video/undrfire.c10
-rw-r--r--src/mame/video/unico.c6
-rw-r--r--src/mame/video/usgames.c4
-rw-r--r--src/mame/video/vaportra.c2
-rw-r--r--src/mame/video/vastar.c6
-rw-r--r--src/mame/video/vball.c6
-rw-r--r--src/mame/video/vdc.c7
-rw-r--r--src/mame/video/victory.c2
-rw-r--r--src/mame/video/videopin.c2
-rw-r--r--src/mame/video/vigilant.c16
-rw-r--r--src/mame/video/vindictr.c2
-rw-r--r--src/mame/video/vsnes.c6
-rw-r--r--src/mame/video/vsystem_spr.c28
-rw-r--r--src/mame/video/vsystem_spr.h5
-rw-r--r--src/mame/video/vsystem_spr2.c30
-rw-r--r--src/mame/video/vsystem_spr2.h5
-rw-r--r--src/mame/video/vulgus.c24
-rw-r--r--src/mame/video/warpwarp.c30
-rw-r--r--src/mame/video/warriorb.c4
-rw-r--r--src/mame/video/wc90.c2
-rw-r--r--src/mame/video/wc90b.c2
-rw-r--r--src/mame/video/wecleman.c20
-rw-r--r--src/mame/video/wgp.c4
-rw-r--r--src/mame/video/williams.c4
-rw-r--r--src/mame/video/wiping.c19
-rw-r--r--src/mame/video/wiz.c28
-rw-r--r--src/mame/video/wolfpack.c63
-rw-r--r--src/mame/video/wrally.c2
-rw-r--r--src/mame/video/wwfsstar.c8
-rw-r--r--src/mame/video/xain.c6
-rw-r--r--src/mame/video/xevious.c40
-rw-r--r--src/mame/video/xorworld.c24
-rw-r--r--src/mame/video/xxmissio.c6
-rw-r--r--src/mame/video/xyonix.c6
-rw-r--r--src/mame/video/ygv608.c39
-rw-r--r--src/mame/video/ygv608.h5
-rw-r--r--src/mame/video/yiear.c8
-rw-r--r--src/mame/video/yunsun16.c2
-rw-r--r--src/mame/video/yunsung8.c2
-rw-r--r--src/mame/video/zac2650.c10
-rw-r--r--src/mame/video/zaccaria.c15
-rw-r--r--src/mame/video/zaxxon.c16
-rw-r--r--src/mame/video/zodiack.c21
-rw-r--r--src/mess/drivers/a2600.c4
-rw-r--r--src/mess/drivers/a310.c2
-rw-r--r--src/mess/drivers/a5105.c9
-rw-r--r--src/mess/drivers/a51xx.c4
-rw-r--r--src/mess/drivers/a6809.c2
-rw-r--r--src/mess/drivers/a7000.c18
-rw-r--r--src/mess/drivers/a7150.c3
-rw-r--r--src/mess/drivers/a7800.c13
-rw-r--r--src/mess/drivers/ac1.c5
-rw-r--r--src/mess/drivers/ace.c3
-rw-r--r--src/mess/drivers/advision.c3
-rw-r--r--src/mess/drivers/alesis.c11
-rw-r--r--src/mess/drivers/alphasma.c11
-rw-r--r--src/mess/drivers/alphatro.c28
-rw-r--r--src/mess/drivers/amiga.c12
-rw-r--r--src/mess/drivers/amstrad.c25
-rw-r--r--src/mess/drivers/apc.c17
-rw-r--r--src/mess/drivers/apexc.c13
-rw-r--r--src/mess/drivers/apogee.c4
-rw-r--r--src/mess/drivers/apple1.c3
-rw-r--r--src/mess/drivers/apple2.c6
-rw-r--r--src/mess/drivers/apple2gs.c10
-rw-r--r--src/mess/drivers/apple3.c4
-rw-r--r--src/mess/drivers/applix.c9
-rw-r--r--src/mess/drivers/apricotf.c4
-rw-r--r--src/mess/drivers/apricotp.c2
-rw-r--r--src/mess/drivers/aquarius.c6
-rw-r--r--src/mess/drivers/arcadia.c13
-rw-r--r--src/mess/drivers/argo.c3
-rw-r--r--src/mess/drivers/astrocde.c2
-rw-r--r--src/mess/drivers/at.c3
-rw-r--r--src/mess/drivers/atari400.c10
-rw-r--r--src/mess/drivers/atarist.c10
-rw-r--r--src/mess/drivers/avigo.c3
-rw-r--r--src/mess/drivers/ax20.c5
-rw-r--r--src/mess/drivers/b16.c6
-rw-r--r--src/mess/drivers/b2m.c3
-rw-r--r--src/mess/drivers/bbc.c12
-rw-r--r--src/mess/drivers/bcs3.c3
-rw-r--r--src/mess/drivers/beehive.c3
-rw-r--r--src/mess/drivers/bigbord2.c3
-rw-r--r--src/mess/drivers/binbug.c6
-rw-r--r--src/mess/drivers/bk.c3
-rw-r--r--src/mess/drivers/bmjr.c9
-rw-r--r--src/mess/drivers/bml3.c9
-rw-r--r--src/mess/drivers/busicom.c4
-rw-r--r--src/mess/drivers/bw2.c9
-rw-r--r--src/mess/drivers/c10.c3
-rw-r--r--src/mess/drivers/c128.c2
-rw-r--r--src/mess/drivers/c65.c20
-rw-r--r--src/mess/drivers/c900.c3
-rw-r--r--src/mess/drivers/camplynx.c12
-rw-r--r--src/mess/drivers/casloopy.c8
-rw-r--r--src/mess/drivers/cat.c6
-rw-r--r--src/mess/drivers/cd2650.c3
-rw-r--r--src/mess/drivers/cdc721.c12
-rw-r--r--src/mess/drivers/cfx9850.c15
-rw-r--r--src/mess/drivers/cgenie.c24
-rw-r--r--src/mess/drivers/channelf.c16
-rw-r--r--src/mess/drivers/clcd.c8
-rw-r--r--src/mess/drivers/compucolor.c7
-rw-r--r--src/mess/drivers/comquest.c5
-rw-r--r--src/mess/drivers/concept.c3
-rw-r--r--src/mess/drivers/craft.c2
-rw-r--r--src/mess/drivers/ct486.c2
-rw-r--r--src/mess/drivers/cxhumax.c3
-rw-r--r--src/mess/drivers/cybiko.c19
-rw-r--r--src/mess/drivers/d6800.c3
-rw-r--r--src/mess/drivers/dai.c3
-rw-r--r--src/mess/drivers/dccons.c2
-rw-r--r--src/mess/drivers/dct11em.c3
-rw-r--r--src/mess/drivers/dgn_beta.c7
-rw-r--r--src/mess/drivers/dim68k.c3
-rw-r--r--src/mess/drivers/dm7000.c3
-rw-r--r--src/mess/drivers/dms5000.c3
-rw-r--r--src/mess/drivers/dmv.c3
-rw-r--r--src/mess/drivers/ec65.c6
-rw-r--r--src/mess/drivers/einstein.c6
-rw-r--r--src/mess/drivers/electron.c7
-rw-r--r--src/mess/drivers/elwro800.c4
-rw-r--r--src/mess/drivers/exelv.c16
-rw-r--r--src/mess/drivers/fk1.c3
-rw-r--r--src/mess/drivers/fm7.c20
-rw-r--r--src/mess/drivers/fp1100.c2
-rw-r--r--src/mess/drivers/fp200.c11
-rw-r--r--src/mess/drivers/fp6000.c10
-rw-r--r--src/mess/drivers/galaxy.c6
-rw-r--r--src/mess/drivers/galeb.c5
-rw-r--r--src/mess/drivers/gamecom.c9
-rw-r--r--src/mess/drivers/gamepock.c3
-rw-r--r--src/mess/drivers/gb.c36
-rw-r--r--src/mess/drivers/gba.c7
-rw-r--r--src/mess/drivers/geniusiq.c13
-rw-r--r--src/mess/drivers/gizmondo.c4
-rw-r--r--src/mess/drivers/gmaster.c9
-rw-r--r--src/mess/drivers/gp2x.c2
-rw-r--r--src/mess/drivers/gp32.c12
-rw-r--r--src/mess/drivers/grfd2301.c3
-rw-r--r--src/mess/drivers/h19.c3
-rw-r--r--src/mess/drivers/h89.c3
-rw-r--r--src/mess/drivers/harriet.c10
-rw-r--r--src/mess/drivers/hec2hrp.c13
-rw-r--r--src/mess/drivers/homelab.c9
-rw-r--r--src/mess/drivers/homez80.c5
-rw-r--r--src/mess/drivers/hp16500.c2
-rw-r--r--src/mess/drivers/hp48.c3
-rw-r--r--src/mess/drivers/hp49gp.c4
-rw-r--r--src/mess/drivers/hp9k.c3
-rw-r--r--src/mess/drivers/hprot1.c11
-rw-r--r--src/mess/drivers/hx20.c9
-rw-r--r--src/mess/drivers/ibm6580.c12
-rw-r--r--src/mess/drivers/ie15.c11
-rw-r--r--src/mess/drivers/if800.c4
-rw-r--r--src/mess/drivers/interact.c4
-rw-r--r--src/mess/drivers/intv.c22
-rw-r--r--src/mess/drivers/ip20.c2
-rw-r--r--src/mess/drivers/ip22.c2
-rw-r--r--src/mess/drivers/ipds.c3
-rw-r--r--src/mess/drivers/iq151.c3
-rw-r--r--src/mess/drivers/irisha.c3
-rw-r--r--src/mess/drivers/itt3030.c5
-rw-r--r--src/mess/drivers/jonos.c3
-rw-r--r--src/mess/drivers/jr100.c3
-rw-r--r--src/mess/drivers/jr200.c11
-rw-r--r--src/mess/drivers/jtc.c10
-rw-r--r--src/mess/drivers/juicebox.c2
-rw-r--r--src/mess/drivers/jupiter.c3
-rw-r--r--src/mess/drivers/k8915.c3
-rw-r--r--src/mess/drivers/kaypro.c7
-rw-r--r--src/mess/drivers/kc.c8
-rw-r--r--src/mess/drivers/konin.c3
-rw-r--r--src/mess/drivers/korgm1.c4
-rw-r--r--src/mess/drivers/kramermc.c5
-rw-r--r--src/mess/drivers/lcmate2.c11
-rw-r--r--src/mess/drivers/lisa.c3
-rw-r--r--src/mess/drivers/llc.c6
-rw-r--r--src/mess/drivers/lola8a.c9
-rw-r--r--src/mess/drivers/lviv.c3
-rw-r--r--src/mess/drivers/lynx.c7
-rw-r--r--src/mess/drivers/m20.c7
-rw-r--r--src/mess/drivers/m79152pc.c3
-rw-r--r--src/mess/drivers/mac.c43
-rw-r--r--src/mess/drivers/macpci.c3
-rw-r--r--src/mess/drivers/mbc200.c5
-rw-r--r--src/mess/drivers/mbc55x.c8
-rw-r--r--src/mess/drivers/mbee.c16
-rw-r--r--src/mess/drivers/mc10.c2
-rw-r--r--src/mess/drivers/mc80.c6
-rw-r--r--src/mess/drivers/megadriv.c4
-rw-r--r--src/mess/drivers/mes.c3
-rw-r--r--src/mess/drivers/micronic.c9
-rw-r--r--src/mess/drivers/microtan.c3
-rw-r--r--src/mess/drivers/microvsn.c36
-rw-r--r--src/mess/drivers/mikro80.c3
-rw-r--r--src/mess/drivers/mikrosha.c4
-rw-r--r--src/mess/drivers/mini2440.c4
-rw-r--r--src/mess/drivers/mk85.c3
-rw-r--r--src/mess/drivers/mk90.c3
-rw-r--r--src/mess/drivers/mmodular.c10
-rw-r--r--src/mess/drivers/modellot.c7
-rw-r--r--src/mess/drivers/molecular.c8
-rw-r--r--src/mess/drivers/ms0515.c41
-rw-r--r--src/mess/drivers/mstation.c11
-rw-r--r--src/mess/drivers/msx.c4
-rw-r--r--src/mess/drivers/multi16.c4
-rw-r--r--src/mess/drivers/multi8.c11
-rw-r--r--src/mess/drivers/mx2178.c3
-rw-r--r--src/mess/drivers/myb3k.c5
-rw-r--r--src/mess/drivers/mycom.c3
-rw-r--r--src/mess/drivers/mz2000.c26
-rw-r--r--src/mess/drivers/mz2500.c37
-rw-r--r--src/mess/drivers/mz3500.c12
-rw-r--r--src/mess/drivers/mz6500.c2
-rw-r--r--src/mess/drivers/mz700.c3
-rw-r--r--src/mess/drivers/mz80.c3
-rw-r--r--src/mess/drivers/n64.c2
-rw-r--r--src/mess/drivers/nakajies.c11
-rw-r--r--src/mess/drivers/nanos.c3
-rw-r--r--src/mess/drivers/nascom1.c3
-rw-r--r--src/mess/drivers/nc.c9
-rw-r--r--src/mess/drivers/nes.c3
-rw-r--r--src/mess/drivers/ngp.c5
-rw-r--r--src/mess/drivers/octopus.c3
-rw-r--r--src/mess/drivers/odyssey2.c32
-rw-r--r--src/mess/drivers/okean240.c4
-rw-r--r--src/mess/drivers/ondra.c3
-rw-r--r--src/mess/drivers/orao.c3
-rw-r--r--src/mess/drivers/oric.c7
-rw-r--r--src/mess/drivers/orion.c12
-rw-r--r--src/mess/drivers/osbexec.c13
-rw-r--r--src/mess/drivers/osborne1.c11
-rw-r--r--src/mess/drivers/p112.c3
-rw-r--r--src/mess/drivers/p2000t.c14
-rw-r--r--src/mess/drivers/palm.c8
-rw-r--r--src/mess/drivers/palmz22.c4
-rw-r--r--src/mess/drivers/partner.c4
-rw-r--r--src/mess/drivers/paso1600.c10
-rw-r--r--src/mess/drivers/pasogo.c9
-rw-r--r--src/mess/drivers/pasopia.c2
-rw-r--r--src/mess/drivers/pasopia7.c32
-rw-r--r--src/mess/drivers/pb1000.c13
-rw-r--r--src/mess/drivers/pc.c11
-rw-r--r--src/mess/drivers/pc100.c8
-rw-r--r--src/mess/drivers/pc1500.c11
-rw-r--r--src/mess/drivers/pc2000.c11
-rw-r--r--src/mess/drivers/pc4.c9
-rw-r--r--src/mess/drivers/pc6001.c65
-rw-r--r--src/mess/drivers/pc8001.c8
-rw-r--r--src/mess/drivers/pc8801.c36
-rw-r--r--src/mess/drivers/pc88va.c16
-rw-r--r--src/mess/drivers/pc9801.c28
-rw-r--r--src/mess/drivers/pce.c4
-rw-r--r--src/mess/drivers/pce220.c12
-rw-r--r--src/mess/drivers/pcm.c3
-rw-r--r--src/mess/drivers/pcw.c4
-rw-r--r--src/mess/drivers/pcw16.c4
-rw-r--r--src/mess/drivers/pda600.c3
-rw-r--r--src/mess/drivers/pdp1.c18
-rw-r--r--src/mess/drivers/pegasus.c3
-rw-r--r--src/mess/drivers/phunsy.c9
-rw-r--r--src/mess/drivers/pitagjr.c11
-rw-r--r--src/mess/drivers/pk8000.c4
-rw-r--r--src/mess/drivers/pk8020.c3
-rw-r--r--src/mess/drivers/plan80.c3
-rw-r--r--src/mess/drivers/pmd85.c4
-rw-r--r--src/mess/drivers/pocketc.c6
-rw-r--r--src/mess/drivers/pockstat.c3
-rw-r--r--src/mess/drivers/poisk1.c3
-rw-r--r--src/mess/drivers/pokemini.c15
-rw-r--r--src/mess/drivers/poly88.c3
-rw-r--r--src/mess/drivers/portfoli.c9
-rw-r--r--src/mess/drivers/pp01.c3
-rw-r--r--src/mess/drivers/prestige.c11
-rw-r--r--src/mess/drivers/primo.c3
-rw-r--r--src/mess/drivers/psion.c9
-rw-r--r--src/mess/drivers/ptcsol.c3
-rw-r--r--src/mess/drivers/pv1000.c16
-rw-r--r--src/mess/drivers/pv9234.c3
-rw-r--r--src/mess/drivers/px4.c18
-rw-r--r--src/mess/drivers/px8.c9
-rw-r--r--src/mess/drivers/pyl601.c3
-rw-r--r--src/mess/drivers/qx10.c17
-rw-r--r--src/mess/drivers/radio86.c4
-rw-r--r--src/mess/drivers/rainbow.c4
-rw-r--r--src/mess/drivers/rd110.c11
-rw-r--r--src/mess/drivers/replicator.c11
-rw-r--r--src/mess/drivers/rex6000.c11
-rw-r--r--src/mess/drivers/rm380z.c3
-rw-r--r--src/mess/drivers/rmnimbus.c7
-rw-r--r--src/mess/drivers/rmt32.c11
-rw-r--r--src/mess/drivers/rt1715.c13
-rw-r--r--src/mess/drivers/rx78.c6
-rw-r--r--src/mess/drivers/samcoupe.c9
-rw-r--r--src/mess/drivers/sapi1.c3
-rw-r--r--src/mess/drivers/saturn.c2
-rw-r--r--src/mess/drivers/sbrain.c3
-rw-r--r--src/mess/drivers/scv.c39
-rw-r--r--src/mess/drivers/sm1800.c15
-rw-r--r--src/mess/drivers/smc777.c43
-rw-r--r--src/mess/drivers/sms.c12
-rw-r--r--src/mess/drivers/socrates.c18
-rw-r--r--src/mess/drivers/sorcerer.c3
-rw-r--r--src/mess/drivers/spec128.c2
-rw-r--r--src/mess/drivers/special.c12
-rw-r--r--src/mess/drivers/spectrum.c5
-rw-r--r--src/mess/drivers/ssem.c3
-rw-r--r--src/mess/drivers/ssystem3.c4
-rw-r--r--src/mess/drivers/super80.c13
-rw-r--r--src/mess/drivers/supracan.c17
-rw-r--r--src/mess/drivers/svi318.c2
-rw-r--r--src/mess/drivers/svision.c19
-rw-r--r--src/mess/drivers/svmu.c11
-rw-r--r--src/mess/drivers/sys2900.c3
-rw-r--r--src/mess/drivers/tavernie.c3
-rw-r--r--src/mess/drivers/tdv2324.c3
-rw-r--r--src/mess/drivers/tek405x.c6
-rw-r--r--src/mess/drivers/tek410x.c5
-rw-r--r--src/mess/drivers/terak.c3
-rw-r--r--src/mess/drivers/thomson.c4
-rw-r--r--src/mess/drivers/ti85.c22
-rw-r--r--src/mess/drivers/ti89.c9
-rw-r--r--src/mess/drivers/ti990_10.c4
-rw-r--r--src/mess/drivers/ti990_4.c10
-rw-r--r--src/mess/drivers/ti99_2.c11
-rw-r--r--src/mess/drivers/tiki100.c10
-rw-r--r--src/mess/drivers/tim011.c3
-rw-r--r--src/mess/drivers/tim100.c6
-rw-r--r--src/mess/drivers/tk80bs.c5
-rw-r--r--src/mess/drivers/trs80.c8
-rw-r--r--src/mess/drivers/tvc.c7
-rw-r--r--src/mess/drivers/tx0.c18
-rw-r--r--src/mess/drivers/uknc.c3
-rw-r--r--src/mess/drivers/unior.c6
-rw-r--r--src/mess/drivers/unistar.c12
-rw-r--r--src/mess/drivers/univac.c3
-rw-r--r--src/mess/drivers/unixpc.c3
-rw-r--r--src/mess/drivers/ut88.c5
-rw-r--r--src/mess/drivers/v6809.c3
-rw-r--r--src/mess/drivers/vboy.c33
-rw-r--r--src/mess/drivers/vc4000.c8
-rw-r--r--src/mess/drivers/vector06.c3
-rw-r--r--src/mess/drivers/vg5k.c2
-rw-r--r--src/mess/drivers/victor9k.c3
-rw-r--r--src/mess/drivers/vii.c6
-rw-r--r--src/mess/drivers/vt100.c4
-rw-r--r--src/mess/drivers/vt220.c3
-rw-r--r--src/mess/drivers/vt240.c3
-rw-r--r--src/mess/drivers/vt320.c3
-rw-r--r--src/mess/drivers/vt520.c3
-rw-r--r--src/mess/drivers/vta2000.c13
-rw-r--r--src/mess/drivers/vtech2.c17
-rw-r--r--src/mess/drivers/wswan.c15
-rw-r--r--src/mess/drivers/x07.c9
-rw-r--r--src/mess/drivers/x1.c32
-rw-r--r--src/mess/drivers/x1twin.c4
-rw-r--r--src/mess/drivers/x68k.c8
-rw-r--r--src/mess/drivers/xavix.c7
-rw-r--r--src/mess/drivers/xerox820.c2
-rw-r--r--src/mess/drivers/ymmu100.c10
-rw-r--r--src/mess/drivers/z100.c14
-rw-r--r--src/mess/drivers/z1013.c3
-rw-r--r--src/mess/drivers/z88.c3
-rw-r--r--src/mess/drivers/z9001.c2
-rw-r--r--src/mess/drivers/zaurus.c7
-rw-r--r--src/mess/drivers/zorba.c12
-rw-r--r--src/mess/drivers/zrt80.c3
-rw-r--r--src/mess/drivers/zx.c26
-rw-r--r--src/mess/includes/a7800.h2
-rw-r--r--src/mess/includes/advision.h2
-rw-r--r--src/mess/includes/alesis.h2
-rw-r--r--src/mess/includes/aquarius.h2
-rw-r--r--src/mess/includes/arcadia.h2
-rw-r--r--src/mess/includes/avigo.h2
-rw-r--r--src/mess/includes/b2m.h2
-rw-r--r--src/mess/includes/busicom.h2
-rw-r--r--src/mess/includes/bw2.h2
-rw-r--r--src/mess/includes/c65.h1
-rw-r--r--src/mess/includes/channelf.h2
-rw-r--r--src/mess/includes/cybiko.h1
-rw-r--r--src/mess/includes/dai.h2
-rw-r--r--src/mess/includes/dgn_beta.h2
-rw-r--r--src/mess/includes/electron.h2
-rw-r--r--src/mess/includes/fm7.h2
-rw-r--r--src/mess/includes/gamecom.h2
-rw-r--r--src/mess/includes/gba.h2
-rw-r--r--src/mess/includes/hp48.h2
-rw-r--r--src/mess/includes/hx20.h2
-rw-r--r--src/mess/includes/intv.h2
-rw-r--r--src/mess/includes/lviv.h2
-rw-r--r--src/mess/includes/lynx.h4
-rw-r--r--src/mess/includes/mbc55x.h2
-rw-r--r--src/mess/includes/micronic.h2
-rw-r--r--src/mess/includes/mz700.h2
-rw-r--r--src/mess/includes/nc.h2
-rw-r--r--src/mess/includes/nes.h2
-rw-r--r--src/mess/includes/oric.h2
-rw-r--r--src/mess/includes/osborne1.h2
-rw-r--r--src/mess/includes/pc4.h2
-rw-r--r--src/mess/includes/pcw.h2
-rw-r--r--src/mess/includes/pcw16.h2
-rw-r--r--src/mess/includes/pdp1.h2
-rw-r--r--src/mess/includes/pk8020.h2
-rw-r--r--src/mess/includes/pmd85.h2
-rw-r--r--src/mess/includes/poisk1.h2
-rw-r--r--src/mess/includes/portfoli.h2
-rw-r--r--src/mess/includes/pp01.h2
-rw-r--r--src/mess/includes/psion.h2
-rw-r--r--src/mess/includes/px8.h2
-rw-r--r--src/mess/includes/rmnimbus.h2
-rw-r--r--src/mess/includes/samcoupe.h2
-rw-r--r--src/mess/includes/ssystem3.h2
-rw-r--r--src/mess/includes/svision.h2
-rw-r--r--src/mess/includes/ti85.h2
-rw-r--r--src/mess/includes/ti89.h2
-rw-r--r--src/mess/includes/tiki100.h2
-rw-r--r--src/mess/includes/tvc.h2
-rw-r--r--src/mess/includes/tx0.h2
-rw-r--r--src/mess/includes/vc4000.h2
-rw-r--r--src/mess/includes/vector06.h2
-rw-r--r--src/mess/includes/vtech2.h2
-rw-r--r--src/mess/includes/wswan.h2
-rw-r--r--src/mess/includes/x07.h2
-rw-r--r--src/mess/includes/z88.h2
-rw-r--r--src/mess/includes/zx.h2
-rw-r--r--src/mess/machine/aim65.c2
-rw-r--r--src/mess/machine/amstrad.c14
-rw-r--r--src/mess/machine/apple2gs.c4
-rw-r--r--src/mess/machine/b2m.c4
-rw-r--r--src/mess/machine/cgenie.c2
-rw-r--r--src/mess/machine/lisa.c2
-rw-r--r--src/mess/machine/lynx.c14
-rw-r--r--src/mess/machine/pk8020.c2
-rw-r--r--src/mess/machine/svi318.c4
-rw-r--r--src/mess/machine/ti99/videowrp.h2
-rw-r--r--src/mess/machine/vector06.c2
-rw-r--r--src/mess/video/733_asr.c31
-rw-r--r--src/mess/video/733_asr.h12
-rw-r--r--src/mess/video/911_vdt.c30
-rw-r--r--src/mess/video/911_vdt.h10
-rw-r--r--src/mess/video/abc800.c10
-rw-r--r--src/mess/video/abc806.c10
-rw-r--r--src/mess/video/ac1.c4
-rw-r--r--src/mess/video/advision.c4
-rw-r--r--src/mess/video/apollo.c5
-rw-r--r--src/mess/video/apple3.c2
-rw-r--r--src/mess/video/aquarius.c8
-rw-r--r--src/mess/video/arcadia.c6
-rw-r--r--src/mess/video/atarist.c14
-rw-r--r--src/mess/video/avigo.c6
-rw-r--r--src/mess/video/b2m.c4
-rw-r--r--src/mess/video/busicom.c8
-rw-r--r--src/mess/video/cgc7900.c8
-rw-r--r--src/mess/video/cgenie.c24
-rw-r--r--src/mess/video/channelf.c4
-rw-r--r--src/mess/video/comquest.c2
-rw-r--r--src/mess/video/dai.c4
-rw-r--r--src/mess/video/ef9345.c2
-rw-r--r--src/mess/video/fm7.c12
-rw-r--r--src/mess/video/galeb.c2
-rw-r--r--src/mess/video/hec2video.c32
-rw-r--r--src/mess/video/hp48.c4
-rw-r--r--src/mess/video/intv.c12
-rw-r--r--src/mess/video/isa_cga.c12
-rw-r--r--src/mess/video/isa_cga.h1
-rw-r--r--src/mess/video/isa_ega.c10
-rw-r--r--src/mess/video/isa_ega.h1
-rw-r--r--src/mess/video/isa_mda.c14
-rw-r--r--src/mess/video/isa_mda.h3
-rw-r--r--src/mess/video/isa_pc1640_iga.c2
-rw-r--r--src/mess/video/isa_svga_cirrus.c2
-rw-r--r--src/mess/video/isa_svga_s3.c4
-rw-r--r--src/mess/video/isa_svga_tseng.c2
-rw-r--r--src/mess/video/isa_vga_ati.c2
-rw-r--r--src/mess/video/k1ge.c10
-rw-r--r--src/mess/video/kaypro.c6
-rw-r--r--src/mess/video/kc.c2
-rw-r--r--src/mess/video/kramermc.c2
-rw-r--r--src/mess/video/kyocera.c16
-rw-r--r--src/mess/video/lviv.c4
-rw-r--r--src/mess/video/mac.c14
-rw-r--r--src/mess/video/mbee.c12
-rw-r--r--src/mess/video/mos6566.c134
-rw-r--r--src/mess/video/mz700.c16
-rw-r--r--src/mess/video/nascom1.c8
-rw-r--r--src/mess/video/nc.c4
-rw-r--r--src/mess/video/nes.c4
-rw-r--r--src/mess/video/orion.c2
-rw-r--r--src/mess/video/osi.c30
-rw-r--r--src/mess/video/p2000m.c2
-rw-r--r--src/mess/video/pc1251.c4
-rw-r--r--src/mess/video/pc1401.c4
-rw-r--r--src/mess/video/pc1403.c12
-rw-r--r--src/mess/video/pc1512.c12
-rw-r--r--src/mess/video/pc8401a.c12
-rw-r--r--src/mess/video/pc_aga.c6
-rw-r--r--src/mess/video/pc_t1t.c12
-rw-r--r--src/mess/video/pcw.c4
-rw-r--r--src/mess/video/pcw16.c4
-rw-r--r--src/mess/video/pdp1.c4
-rw-r--r--src/mess/video/pk8020.c4
-rw-r--r--src/mess/video/pmd85.c4
-rw-r--r--src/mess/video/pocketc.c8
-rw-r--r--src/mess/video/poisk1.c4
-rw-r--r--src/mess/video/pp01.c4
-rw-r--r--src/mess/video/radio86.c2
-rw-r--r--src/mess/video/rmnimbus.c2
-rw-r--r--src/mess/video/s3virge.c2
-rw-r--r--src/mess/video/special.c8
-rw-r--r--src/mess/video/spectrum.c2
-rw-r--r--src/mess/video/ssystem3.c4
-rw-r--r--src/mess/video/stic.c12
-rw-r--r--src/mess/video/super80.c2
-rw-r--r--src/mess/video/thomson.c2
-rw-r--r--src/mess/video/ti85.c12
-rw-r--r--src/mess/video/tmc600.c1
-rw-r--r--src/mess/video/trs80.c2
-rw-r--r--src/mess/video/tx0.c4
-rw-r--r--src/mess/video/ut88.c2
-rw-r--r--src/mess/video/uv201.c20
-rw-r--r--src/mess/video/uv201.h2
-rw-r--r--src/mess/video/vector06.c4
-rw-r--r--src/mess/video/vic4567.c20
-rw-r--r--src/mess/video/vic4567.h4
-rw-r--r--src/mess/video/vtech2.c16
-rw-r--r--src/mess/video/vtvideo.c60
-rw-r--r--src/mess/video/vtvideo.h3
-rw-r--r--src/mess/video/x68k.c4
-rw-r--r--src/mess/video/z88.c8
-rw-r--r--src/mess/video/zx8301.c8
2385 files changed, 13060 insertions, 12065 deletions
diff --git a/src/emu/bus/nubus/nubus_specpdq.c b/src/emu/bus/nubus/nubus_specpdq.c
index 71afcfa463a..c0db4c01ac7 100644
--- a/src/emu/bus/nubus/nubus_specpdq.c
+++ b/src/emu/bus/nubus/nubus_specpdq.c
@@ -37,6 +37,8 @@ MACHINE_CONFIG_FRAGMENT( specpdq )
MCFG_SCREEN_RAW_PARAMS(25175000, 800, 0, 640, 525, 0, 480)
MCFG_SCREEN_SIZE(1280,1024)
MCFG_SCREEN_VISIBLE_AREA(0, 1152-1, 0, 844-1)
+
+ MCFG_PALETTE_ADD("palette", 256)
MACHINE_CONFIG_END
ROM_START( specpdq )
@@ -82,7 +84,8 @@ nubus_specpdq_device::nubus_specpdq_device(const machine_config &mconfig, const
device_t(mconfig, NUBUS_SPECPDQ, "SuperMac Spectrum PDQ video card", tag, owner, clock, "nb_spdq", __FILE__),
device_video_interface(mconfig, *this),
device_nubus_card_interface(mconfig, *this),
- m_assembled_tag(tag, ":", SPECPDQ_SCREEN_NAME)
+ m_assembled_tag(tag, ":", SPECPDQ_SCREEN_NAME),
+ m_palette(*this, "palette")
{
m_screen_tag = m_assembled_tag;
}
@@ -91,7 +94,8 @@ nubus_specpdq_device::nubus_specpdq_device(const machine_config &mconfig, device
device_t(mconfig, type, name, tag, owner, clock, shortname, source),
device_video_interface(mconfig, *this),
device_nubus_card_interface(mconfig, *this),
- m_assembled_tag(tag, ":", SPECPDQ_SCREEN_NAME)
+ m_assembled_tag(tag, ":", SPECPDQ_SCREEN_NAME),
+ m_palette(*this, "palette")
{
m_screen_tag = m_assembled_tag;
}
@@ -132,10 +136,10 @@ void nubus_specpdq_device::device_reset()
m_vbl_disable = 1;
m_mode = 0;
memset(m_vram, 0, VRAM_SIZE);
- memset(m_palette, 0, sizeof(m_palette));
+ memset(m_palette_val, 0, sizeof(m_palette_val));
- m_palette[0] = rgb_t(255, 255, 255);
- m_palette[0x80] = rgb_t(0, 0, 0);
+ m_palette_val[0] = rgb_t(255, 255, 255);
+ m_palette_val[0x80] = rgb_t(0, 0, 0);
}
@@ -174,14 +178,14 @@ UINT32 nubus_specpdq_device::screen_update(screen_device &screen, bitmap_rgb32 &
{
pixels = vram[(y * 512) + (BYTE4_XOR_BE(x))];
- *scanline++ = m_palette[(pixels&0x80)];
- *scanline++ = m_palette[((pixels<<1)&0x80)];
- *scanline++ = m_palette[((pixels<<2)&0x80)];
- *scanline++ = m_palette[((pixels<<3)&0x80)];
- *scanline++ = m_palette[((pixels<<4)&0x80)];
- *scanline++ = m_palette[((pixels<<5)&0x80)];
- *scanline++ = m_palette[((pixels<<6)&0x80)];
- *scanline++ = m_palette[((pixels<<7)&0x80)];
+ *scanline++ = m_palette_val[(pixels&0x80)];
+ *scanline++ = m_palette_val[((pixels<<1)&0x80)];
+ *scanline++ = m_palette_val[((pixels<<2)&0x80)];
+ *scanline++ = m_palette_val[((pixels<<3)&0x80)];
+ *scanline++ = m_palette_val[((pixels<<4)&0x80)];
+ *scanline++ = m_palette_val[((pixels<<5)&0x80)];
+ *scanline++ = m_palette_val[((pixels<<6)&0x80)];
+ *scanline++ = m_palette_val[((pixels<<7)&0x80)];
}
}
break;
@@ -194,10 +198,10 @@ UINT32 nubus_specpdq_device::screen_update(screen_device &screen, bitmap_rgb32 &
{
pixels = vram[(y * 512) + (BYTE4_XOR_BE(x))];
- *scanline++ = m_palette[(pixels&0xc0)];
- *scanline++ = m_palette[((pixels<<2)&0xc0)];
- *scanline++ = m_palette[((pixels<<4)&0xc0)];
- *scanline++ = m_palette[((pixels<<6)&0xc0)];
+ *scanline++ = m_palette_val[(pixels&0xc0)];
+ *scanline++ = m_palette_val[((pixels<<2)&0xc0)];
+ *scanline++ = m_palette_val[((pixels<<4)&0xc0)];
+ *scanline++ = m_palette_val[((pixels<<6)&0xc0)];
}
}
break;
@@ -211,8 +215,8 @@ UINT32 nubus_specpdq_device::screen_update(screen_device &screen, bitmap_rgb32 &
{
pixels = vram[(y * 1024) + (BYTE4_XOR_BE(x))];
- *scanline++ = m_palette[(pixels&0xf0)];
- *scanline++ = m_palette[((pixels<<4)&0xf0)];
+ *scanline++ = m_palette_val[(pixels&0xf0)];
+ *scanline++ = m_palette_val[((pixels<<4)&0xf0)];
}
}
break;
@@ -225,7 +229,7 @@ UINT32 nubus_specpdq_device::screen_update(screen_device &screen, bitmap_rgb32 &
for (x = 0; x < 1152; x++)
{
pixels = vram[(y * 1152) + (BYTE4_XOR_BE(x))];
- *scanline++ = m_palette[pixels];
+ *scanline++ = m_palette_val[pixels];
}
}
break;
@@ -297,8 +301,8 @@ WRITE32_MEMBER( nubus_specpdq_device::specpdq_w )
if (m_count == 3)
{
// printf("RAMDAC: color %d = %02x %02x %02x (PC=%x)\n", m_clutoffs, m_colors[0], m_colors[1], m_colors[2], space.device().safe_pc() );
- palette_set_color(space.machine(), m_clutoffs, rgb_t(m_colors[0], m_colors[1], m_colors[2]));
- m_palette[m_clutoffs] = rgb_t(m_colors[0], m_colors[1], m_colors[2]);
+ m_palette->set_pen_color(m_clutoffs, rgb_t(m_colors[0], m_colors[1], m_colors[2]));
+ m_palette_val[m_clutoffs] = rgb_t(m_colors[0], m_colors[1], m_colors[2]);
m_clutoffs++;
if (m_clutoffs > 255)
{
diff --git a/src/emu/bus/nubus/nubus_specpdq.h b/src/emu/bus/nubus/nubus_specpdq.h
index ff771177087..4cc249ff98d 100644
--- a/src/emu/bus/nubus/nubus_specpdq.h
+++ b/src/emu/bus/nubus/nubus_specpdq.h
@@ -42,7 +42,7 @@ public:
dynamic_buffer m_vram;
UINT32 *m_vram32;
UINT32 m_mode, m_vbl_disable;
- UINT32 m_palette[256], m_colors[3], m_count, m_clutoffs;
+ UINT32 m_palette_val[256], m_colors[3], m_count, m_clutoffs;
emu_timer *m_timer;
astring m_assembled_tag;
@@ -51,6 +51,7 @@ private:
int m_width, m_height, m_patofsx, m_patofsy;
UINT32 m_vram_addr, m_vram_src;
UINT8 m_fillbytes[256];
+ required_device<palette_device> m_palette;
};
diff --git a/src/emu/bus/wangpc/mvc.c b/src/emu/bus/wangpc/mvc.c
index 7c55635b3f6..e47d8cc2d8f 100644
--- a/src/emu/bus/wangpc/mvc.c
+++ b/src/emu/bus/wangpc/mvc.c
@@ -49,7 +49,7 @@
#define ATTR_SUBSCRIPT BIT(attr, 6)
#define ATTR_SUPERSCRIPT BIT(attr, 7)
-static const rgb_t PALETTE[] =
+static const rgb_t PALETTE_MVC[] =
{
rgb_t::black,
rgb_t(0x00, 0x80, 0x00),
@@ -81,7 +81,7 @@ void wangpc_mvc_device::crtc_update_row(mc6845_device *device, bitmap_rgb32 &bit
int x = (sx * 16) + bit;
int color = BIT(data, 15);
- bitmap.pix32(y, x) = PALETTE[color];
+ bitmap.pix32(y, x) = PALETTE_MVC[color];
data <<= 1;
}
@@ -117,7 +117,7 @@ void wangpc_mvc_device::crtc_update_row(mc6845_device *device, bitmap_rgb32 &bit
int color = ((BIT(data, 9) & !ATTR_BLANK) ^ ATTR_REVERSE);
if ((color | bitmap.pix32(y, x)) & ATTR_BOLD) color = 2;
- if (color) bitmap.pix32(y, x) = PALETTE[color];
+ if (color) bitmap.pix32(y, x) = PALETTE_MVC[color];
data <<= 1;
}
diff --git a/src/emu/bus/wangpc/tig.c b/src/emu/bus/wangpc/tig.c
index 55b1bdb7c9e..4bebcbac892 100644
--- a/src/emu/bus/wangpc/tig.c
+++ b/src/emu/bus/wangpc/tig.c
@@ -138,7 +138,7 @@ static MACHINE_CONFIG_FRAGMENT( wangpc_tig )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_PALETTE_LENGTH(3)
+ MCFG_PALETTE_ADD("palette", 3)
MCFG_UPD7220_ADD(UPD7720_0_TAG, XTAL_52_832MHz/28, hgdc0_intf, upd7220_0_map) // was /10?
MCFG_UPD7220_ADD(UPD7720_1_TAG, XTAL_52_832MHz/28, hgdc1_intf, upd7220_1_map) // was /16?
@@ -169,7 +169,8 @@ wangpc_tig_device::wangpc_tig_device(const machine_config &mconfig, const char *
device_wangpcbus_card_interface(mconfig, *this),
m_hgdc0(*this, UPD7720_0_TAG),
m_hgdc1(*this, UPD7720_1_TAG),
- m_option(0)
+ m_option(0),
+ m_palette(*this, "palette")
{
}
@@ -181,9 +182,9 @@ wangpc_tig_device::wangpc_tig_device(const machine_config &mconfig, const char *
void wangpc_tig_device::device_start()
{
// initialize palette
- palette_set_color_rgb(machine(), 0, 0, 0, 0);
- palette_set_color_rgb(machine(), 1, 0, 0x80, 0);
- palette_set_color_rgb(machine(), 2, 0, 0xff, 0);
+ m_palette->set_pen_color(0, 0, 0, 0);
+ m_palette->set_pen_color(1, 0, 0x80, 0);
+ m_palette->set_pen_color(2, 0, 0xff, 0);
// state saving
save_item(NAME(m_option));
diff --git a/src/emu/bus/wangpc/tig.h b/src/emu/bus/wangpc/tig.h
index ed92acb091c..a484142a7ee 100644
--- a/src/emu/bus/wangpc/tig.h
+++ b/src/emu/bus/wangpc/tig.h
@@ -58,6 +58,7 @@ private:
UINT8 m_option;
UINT8 m_attr[16];
UINT8 m_underline;
+ required_device<palette_device> m_palette;
};
diff --git a/src/emu/cpu/tms34010/tms34010.c b/src/emu/cpu/tms34010/tms34010.c
index 635de9fea48..09a906f27b4 100644
--- a/src/emu/cpu/tms34010/tms34010.c
+++ b/src/emu/cpu/tms34010/tms34010.c
@@ -1069,7 +1069,7 @@ void tms34010_get_display_params(device_t *cpu, tms34010_display_params *params)
UINT32 tms34010_device::tms340x0_ind16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- pen_t blackpen = get_black_pen(machine());
+ pen_t blackpen = screen.palette()->black_pen();
tms34010_display_params params;
tms34010_state *tms = NULL;
device_t *cpu;
@@ -1118,7 +1118,7 @@ UINT32 tms34010_device::tms340x0_ind16(screen_device &screen, bitmap_ind16 &bitm
UINT32 tms34010_device::tms340x0_rgb32(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- pen_t blackpen = get_black_pen(machine());
+ pen_t blackpen = screen.palette()->black_pen();
tms34010_display_params params;
tms34010_state *tms = NULL;
device_t *cpu;
diff --git a/src/emu/drawgfx.c b/src/emu/drawgfx.c
index 9abe243035c..4aa3537971a 100644
--- a/src/emu/drawgfx.c
+++ b/src/emu/drawgfx.c
@@ -360,7 +360,7 @@ gfx_element::gfx_element(running_machine &machine)
{
}
-gfx_element::gfx_element(running_machine &machine, UINT8 *base, UINT32 width, UINT32 height, UINT32 rowbytes, UINT32 color_base, UINT32 color_granularity)
+gfx_element::gfx_element(running_machine &machine, UINT8 *base, UINT32 width, UINT32 height, UINT32 rowbytes, UINT32 total_colors, UINT32 color_base, UINT32 color_granularity)
: m_width(width),
m_height(height),
m_startx(0),
@@ -371,7 +371,7 @@ gfx_element::gfx_element(running_machine &machine, UINT8 *base, UINT32 width, UI
m_color_base(color_base),
m_color_depth(color_granularity),
m_color_granularity(color_granularity),
- m_total_colors((machine.total_colors() - color_base) / color_granularity),
+ m_total_colors((total_colors - color_base) / color_granularity),
m_line_modulo(rowbytes),
m_char_modulo(0),
m_srcdata(base),
@@ -581,19 +581,19 @@ void gfx_element::decode(UINT32 code)
no transparency
-------------------------------------------------*/
-void gfx_element::opaque(bitmap_ind16 &dest, const rectangle &cliprect,
+void gfx_element::opaque(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty)
{
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
code %= elements();
DECLARE_NO_PRIORITY;
DRAWGFX_CORE(UINT16, PIXEL_OP_REMAP_OPAQUE, NO_PRIORITY);
}
-void gfx_element::opaque(bitmap_rgb32 &dest, const rectangle &cliprect,
+void gfx_element::opaque(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty)
{
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
code %= elements();
DECLARE_NO_PRIORITY;
DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_OPAQUE, NO_PRIORITY);
@@ -605,13 +605,13 @@ void gfx_element::opaque(bitmap_rgb32 &dest, const rectangle &cliprect,
a single transparent pen
-------------------------------------------------*/
-void gfx_element::transpen(bitmap_ind16 &dest, const rectangle &cliprect,
+void gfx_element::transpen(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 trans_pen)
{
// special case invalid pens to opaque
if (trans_pen > 0xff)
- return opaque(dest, cliprect, code, color, flipx, flipy, destx, desty);
+ return opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty);
// use pen usage to optimize
code %= elements();
@@ -624,22 +624,22 @@ void gfx_element::transpen(bitmap_ind16 &dest, const rectangle &cliprect,
// fully opaque; draw as such
if ((usage & (1 << trans_pen)) == 0)
- return opaque(dest, cliprect, code, color, flipx, flipy, destx, desty);
+ return opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty);
}
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
DECLARE_NO_PRIORITY;
DRAWGFX_CORE(UINT16, PIXEL_OP_REMAP_TRANSPEN, NO_PRIORITY);
}
-void gfx_element::transpen(bitmap_rgb32 &dest, const rectangle &cliprect,
+void gfx_element::transpen(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 trans_pen)
{
// special case invalid pens to opaque
if (trans_pen > 0xff)
- return opaque(dest, cliprect, code, color, flipx, flipy, destx, desty);
+ return opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty);
// use pen usage to optimize
code %= elements();
@@ -652,11 +652,11 @@ void gfx_element::transpen(bitmap_rgb32 &dest, const rectangle &cliprect,
// fully opaque; draw as such
if ((usage & (1 << trans_pen)) == 0)
- return opaque(dest, cliprect, code, color, flipx, flipy, destx, desty);
+ return opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty);
}
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
DECLARE_NO_PRIORITY;
DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_TRANSPEN, NO_PRIORITY);
}
@@ -703,13 +703,13 @@ void gfx_element::transpen_raw(bitmap_rgb32 &dest, const rectangle &cliprect,
a mask
-------------------------------------------------*/
-void gfx_element::transmask(bitmap_ind16 &dest, const rectangle &cliprect,
+void gfx_element::transmask(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 trans_mask)
{
// special case 0 mask to opaque
if (trans_mask == 0)
- return opaque(dest, cliprect, code, color, flipx, flipy, destx, desty);
+ return opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty);
// use pen usage to optimize
code %= elements();
@@ -722,22 +722,22 @@ void gfx_element::transmask(bitmap_ind16 &dest, const rectangle &cliprect,
// fully opaque; draw as such
if ((usage & trans_mask) == 0)
- return opaque(dest, cliprect, code, color, flipx, flipy, destx, desty);
+ return opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty);
}
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
DECLARE_NO_PRIORITY;
DRAWGFX_CORE(UINT16, PIXEL_OP_REMAP_TRANSMASK, NO_PRIORITY);
}
-void gfx_element::transmask(bitmap_rgb32 &dest, const rectangle &cliprect,
+void gfx_element::transmask(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 trans_mask)
{
// special case 0 mask to opaque
if (trans_mask == 0)
- return opaque(dest, cliprect, code, color, flipx, flipy, destx, desty);
+ return opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty);
// use pen usage to optimize
code %= elements();
@@ -750,11 +750,11 @@ void gfx_element::transmask(bitmap_rgb32 &dest, const rectangle &cliprect,
// fully opaque; draw as such
if ((usage & trans_mask) == 0)
- return opaque(dest, cliprect, code, color, flipx, flipy, destx, desty);
+ return opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty);
}
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
DECLARE_NO_PRIORITY;
DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_TRANSMASK, NO_PRIORITY);
}
@@ -766,27 +766,27 @@ void gfx_element::transmask(bitmap_rgb32 &dest, const rectangle &cliprect,
transparent, opaque, or shadowing
-------------------------------------------------*/
-void gfx_element::transtable(bitmap_ind16 &dest, const rectangle &cliprect,
+void gfx_element::transtable(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect,
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 = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
code %= elements();
DECLARE_NO_PRIORITY;
DRAWGFX_CORE(UINT16, PIXEL_OP_REMAP_TRANSTABLE16, NO_PRIORITY);
}
-void gfx_element::transtable(bitmap_rgb32 &dest, const rectangle &cliprect,
+void gfx_element::transtable(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,
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 = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
code %= elements();
DECLARE_NO_PRIORITY;
DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_TRANSTABLE32, NO_PRIORITY);
@@ -799,13 +799,13 @@ void gfx_element::transtable(bitmap_rgb32 &dest, const rectangle &cliprect,
remaining pixels with a fixed alpha value
-------------------------------------------------*/
-void gfx_element::alpha(bitmap_rgb32 &dest, const rectangle &cliprect,
+void gfx_element::alpha(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 trans_pen, UINT8 alpha_val)
{
// special case alpha = 0xff
if (alpha_val == 0xff)
- return transpen(dest, cliprect, code, color, flipx, flipy, destx, desty, trans_pen);
+ return transpen(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, trans_pen);
// early out if completely transparent
code %= elements();
@@ -813,7 +813,7 @@ void gfx_element::alpha(bitmap_rgb32 &dest, const rectangle &cliprect,
return;
// get final code and color, and grab lookup tables
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
DECLARE_NO_PRIORITY;
DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_TRANSPEN_ALPHA32, NO_PRIORITY);
}
@@ -829,31 +829,31 @@ void gfx_element::alpha(bitmap_rgb32 &dest, const rectangle &cliprect,
element with no transparency
-------------------------------------------------*/
-void gfx_element::zoom_opaque(bitmap_ind16 &dest, const rectangle &cliprect,
+void gfx_element::zoom_opaque(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect,
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 opaque(dest, cliprect, code, color, flipx, flipy, destx, desty);
+ return opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty);
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
code %= elements();
DECLARE_NO_PRIORITY;
DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REMAP_OPAQUE, NO_PRIORITY);
}
-void gfx_element::zoom_opaque(bitmap_rgb32 &dest, const rectangle &cliprect,
+void gfx_element::zoom_opaque(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,
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 opaque(dest, cliprect, code, color, flipx, flipy, destx, desty);
+ return opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty);
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
code %= elements();
DECLARE_NO_PRIORITY;
DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_OPAQUE, NO_PRIORITY);
@@ -865,17 +865,17 @@ void gfx_element::zoom_opaque(bitmap_rgb32 &dest, const rectangle &cliprect,
element with a single transparent pen
-------------------------------------------------*/
-void gfx_element::zoom_transpen(bitmap_ind16 &dest, const rectangle &cliprect,
+void gfx_element::zoom_transpen(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 scalex, UINT32 scaley, UINT32 trans_pen)
{
// non-zoom case
if (scalex == 0x10000 && scaley == 0x10000)
- return transpen(dest, cliprect, code, color, flipx, flipy, destx, desty, trans_pen);
+ return transpen(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, trans_pen);
// special case invalid pens to opaque
if (trans_pen > 0xff)
- return zoom_opaque(dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley);
+ return zoom_opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley);
// use pen usage to optimize
code %= elements();
@@ -888,26 +888,26 @@ void gfx_element::zoom_transpen(bitmap_ind16 &dest, const rectangle &cliprect,
// fully opaque; draw as such
if ((usage & (1 << trans_pen)) == 0)
- return zoom_opaque(dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley);
+ return zoom_opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley);
}
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
DECLARE_NO_PRIORITY;
DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REMAP_TRANSPEN, NO_PRIORITY);
}
-void gfx_element::zoom_transpen(bitmap_rgb32 &dest, const rectangle &cliprect,
+void gfx_element::zoom_transpen(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 scalex, UINT32 scaley, UINT32 trans_pen)
{
// non-zoom case
if (scalex == 0x10000 && scaley == 0x10000)
- return transpen(dest, cliprect, code, color, flipx, flipy, destx, desty, trans_pen);
+ return transpen(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, trans_pen);
// special case invalid pens to opaque
if (trans_pen > 0xff)
- return zoom_opaque(dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley);
+ return zoom_opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley);
// use pen usage to optimize
code %= elements();
@@ -920,11 +920,11 @@ void gfx_element::zoom_transpen(bitmap_rgb32 &dest, const rectangle &cliprect,
// fully opaque; draw as such
if ((usage & (1 << trans_pen)) == 0)
- return zoom_opaque(dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley);
+ return zoom_opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley);
}
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
DECLARE_NO_PRIORITY;
DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_TRANSPEN, NO_PRIORITY);
}
@@ -979,17 +979,17 @@ void gfx_element::zoom_transpen_raw(bitmap_rgb32 &dest, const rectangle &cliprec
provided as a mask
-------------------------------------------------*/
-void gfx_element::zoom_transmask(bitmap_ind16 &dest, const rectangle &cliprect,
+void gfx_element::zoom_transmask(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 scalex, UINT32 scaley, UINT32 trans_mask)
{
// non-zoom case
if (scalex == 0x10000 && scaley == 0x10000)
- return transmask(dest, cliprect, code, color, flipx, flipy, destx, desty, trans_mask);
+ return transmask(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, trans_mask);
// special case 0 mask to opaque
if (trans_mask == 0)
- return zoom_opaque(dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley);
+ return zoom_opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley);
// use pen usage to optimize
code %= elements();
@@ -1002,26 +1002,26 @@ void gfx_element::zoom_transmask(bitmap_ind16 &dest, const rectangle &cliprect,
// fully opaque; draw as such
if ((usage & trans_mask) == 0)
- return zoom_opaque(dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley);
+ return zoom_opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley);
}
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
DECLARE_NO_PRIORITY;
DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REMAP_TRANSMASK, NO_PRIORITY);
}
-void gfx_element::zoom_transmask(bitmap_rgb32 &dest, const rectangle &cliprect,
+void gfx_element::zoom_transmask(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 scalex, UINT32 scaley, UINT32 trans_mask)
{
// non-zoom case
if (scalex == 0x10000 && scaley == 0x10000)
- return transmask(dest, cliprect, code, color, flipx, flipy, destx, desty, trans_mask);
+ return transmask(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, trans_mask);
// special case 0 mask to opaque
if (trans_mask == 0)
- return zoom_opaque(dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley);
+ return zoom_opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley);
// use pen usage to optimize
code %= elements();
@@ -1034,11 +1034,11 @@ void gfx_element::zoom_transmask(bitmap_rgb32 &dest, const rectangle &cliprect,
// fully opaque; draw as such
if ((usage & trans_mask) == 0)
- return zoom_opaque(dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley);
+ return zoom_opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley);
}
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
DECLARE_NO_PRIORITY;
DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_TRANSMASK, NO_PRIORITY);
}
@@ -1050,7 +1050,7 @@ void gfx_element::zoom_transmask(bitmap_rgb32 &dest, const rectangle &cliprect,
are transparent, opaque, or shadowing
-------------------------------------------------*/
-void gfx_element::zoom_transtable(bitmap_ind16 &dest, const rectangle &cliprect,
+void gfx_element::zoom_transtable(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 scalex, UINT32 scaley, const UINT8 *pentable, const pen_t *shadowtable)
{
@@ -1058,16 +1058,16 @@ void gfx_element::zoom_transtable(bitmap_ind16 &dest, const rectangle &cliprect,
// non-zoom case
if (scalex == 0x10000 && scaley == 0x10000)
- return transtable(dest, cliprect, code, color, flipx, flipy, destx, desty, pentable, shadowtable);
+ return transtable(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, pentable, shadowtable);
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
code %= elements();
DECLARE_NO_PRIORITY;
DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REMAP_TRANSTABLE16, NO_PRIORITY);
}
-void gfx_element::zoom_transtable(bitmap_rgb32 &dest, const rectangle &cliprect,
+void gfx_element::zoom_transtable(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 scalex, UINT32 scaley, const UINT8 *pentable, const pen_t *shadowtable)
{
@@ -1075,10 +1075,10 @@ void gfx_element::zoom_transtable(bitmap_rgb32 &dest, const rectangle &cliprect,
// non-zoom case
if (scalex == 0x10000 && scaley == 0x10000)
- return transtable(dest, cliprect, code, color, flipx, flipy, destx, desty, pentable, shadowtable);
+ return transtable(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, pentable, shadowtable);
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
code %= elements();
DECLARE_NO_PRIORITY;
DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_TRANSTABLE32, NO_PRIORITY);
@@ -1091,17 +1091,17 @@ void gfx_element::zoom_transtable(bitmap_rgb32 &dest, const rectangle &cliprect,
the remaining pixels with a fixed alpha value
-------------------------------------------------*/
-void gfx_element::zoom_alpha(bitmap_rgb32 &dest, const rectangle &cliprect,
+void gfx_element::zoom_alpha(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 scalex, UINT32 scaley, UINT32 trans_pen, UINT8 alpha_val)
{
// non-zoom case
if (scalex == 0x10000 && scaley == 0x10000)
- return alpha(dest, cliprect, code, color, flipx, flipy, destx, desty, trans_pen, alpha_val);
+ return alpha(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, trans_pen, alpha_val);
// special case alpha_val = 0xff
if (alpha_val == 0xff)
- return zoom_transpen(dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley, trans_pen);
+ return zoom_transpen(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley, trans_pen);
// early out if completely transparent
code %= elements();
@@ -1109,7 +1109,7 @@ void gfx_element::zoom_alpha(bitmap_rgb32 &dest, const rectangle &cliprect,
return;
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
DECLARE_NO_PRIORITY;
DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_TRANSPEN_ALPHA32, NO_PRIORITY);
}
@@ -1126,7 +1126,7 @@ void gfx_element::zoom_alpha(bitmap_rgb32 &dest, const rectangle &cliprect,
bitmap
-------------------------------------------------*/
-void gfx_element::prio_opaque(bitmap_ind16 &dest, const rectangle &cliprect,
+void gfx_element::prio_opaque(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
bitmap_ind8 &priority, UINT32 pmask)
{
@@ -1134,12 +1134,12 @@ void gfx_element::prio_opaque(bitmap_ind16 &dest, const rectangle &cliprect,
pmask |= 1 << 31;
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
code %= elements();
DRAWGFX_CORE(UINT16, PIXEL_OP_REMAP_OPAQUE_PRIORITY, UINT8);
}
-void gfx_element::prio_opaque(bitmap_rgb32 &dest, const rectangle &cliprect,
+void gfx_element::prio_opaque(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
bitmap_ind8 &priority, UINT32 pmask)
{
@@ -1147,7 +1147,7 @@ void gfx_element::prio_opaque(bitmap_rgb32 &dest, const rectangle &cliprect,
pmask |= 1 << 31;
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
code %= elements();
DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_OPAQUE_PRIORITY, UINT8);
}
@@ -1159,13 +1159,13 @@ void gfx_element::prio_opaque(bitmap_rgb32 &dest, const rectangle &cliprect,
priority bitmap
-------------------------------------------------*/
-void gfx_element::prio_transpen(bitmap_ind16 &dest, const rectangle &cliprect,
+void gfx_element::prio_transpen(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
bitmap_ind8 &priority, UINT32 pmask, UINT32 trans_pen)
{
// special case invalid pens to opaque
if (trans_pen > 0xff)
- return prio_opaque(dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask);
+ return prio_opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask);
// use pen usage to optimize
code %= elements();
@@ -1178,24 +1178,24 @@ void gfx_element::prio_transpen(bitmap_ind16 &dest, const rectangle &cliprect,
// fully opaque; draw as such
if ((usage & (1 << trans_pen)) == 0)
- return prio_opaque(dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask);
+ return prio_opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask);
}
// high bit of the mask is implicitly on
pmask |= 1 << 31;
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
DRAWGFX_CORE(UINT16, PIXEL_OP_REMAP_TRANSPEN_PRIORITY, UINT8);
}
-void gfx_element::prio_transpen(bitmap_rgb32 &dest, const rectangle &cliprect,
+void gfx_element::prio_transpen(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
bitmap_ind8 &priority, UINT32 pmask, UINT32 trans_pen)
{
// special case invalid pens to opaque
if (trans_pen > 0xff)
- return prio_opaque(dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask);
+ return prio_opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask);
// use pen usage to optimize
code %= elements();
@@ -1208,14 +1208,14 @@ void gfx_element::prio_transpen(bitmap_rgb32 &dest, const rectangle &cliprect,
// fully opaque; draw as such
if ((usage & (1 << trans_pen)) == 0)
- return prio_opaque(dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask);
+ return prio_opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask);
}
// high bit of the mask is implicitly on
pmask |= 1 << 31;
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_TRANSPEN_PRIORITY, UINT8);
}
@@ -1265,13 +1265,13 @@ void gfx_element::prio_transpen_raw(bitmap_rgb32 &dest, const rectangle &cliprec
a mask, checking against the priority bitmap
-------------------------------------------------*/
-void gfx_element::prio_transmask(bitmap_ind16 &dest, const rectangle &cliprect,
+void gfx_element::prio_transmask(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
bitmap_ind8 &priority, UINT32 pmask, UINT32 trans_mask)
{
// special case 0 mask to opaque
if (trans_mask == 0)
- return prio_opaque(dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask);
+ return prio_opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask);
// use pen usage to optimize
code %= elements();
@@ -1284,24 +1284,24 @@ void gfx_element::prio_transmask(bitmap_ind16 &dest, const rectangle &cliprect,
// fully opaque; draw as such
if ((usage & trans_mask) == 0)
- return prio_opaque(dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask);
+ return prio_opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask);
}
// high bit of the mask is implicitly on
pmask |= 1 << 31;
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
DRAWGFX_CORE(UINT16, PIXEL_OP_REMAP_TRANSMASK_PRIORITY, UINT8);
}
-void gfx_element::prio_transmask(bitmap_rgb32 &dest, const rectangle &cliprect,
+void gfx_element::prio_transmask(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
bitmap_ind8 &priority, UINT32 pmask, UINT32 trans_mask)
{
// special case 0 mask to opaque
if (trans_mask == 0)
- return prio_opaque(dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask);
+ return prio_opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask);
// use pen usage to optimize
code %= elements();
@@ -1314,14 +1314,14 @@ void gfx_element::prio_transmask(bitmap_rgb32 &dest, const rectangle &cliprect,
// fully opaque; draw as such
if ((usage & trans_mask) == 0)
- return prio_opaque(dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask);
+ return prio_opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask);
}
// high bit of the mask is implicitly on
pmask |= 1 << 31;
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_TRANSMASK_PRIORITY, UINT8);
}
@@ -1333,7 +1333,7 @@ void gfx_element::prio_transmask(bitmap_rgb32 &dest, const rectangle &cliprect,
against the priority bitmap
-------------------------------------------------*/
-void gfx_element::prio_transtable(bitmap_ind16 &dest, const rectangle &cliprect,
+void gfx_element::prio_transtable(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
bitmap_ind8 &priority, UINT32 pmask, const UINT8 *pentable, const pen_t *shadowtable)
{
@@ -1343,12 +1343,12 @@ void gfx_element::prio_transtable(bitmap_ind16 &dest, const rectangle &cliprect,
pmask |= 1 << 31;
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
code %= elements();
DRAWGFX_CORE(UINT16, PIXEL_OP_REMAP_TRANSTABLE16_PRIORITY, UINT8);
}
-void gfx_element::prio_transtable(bitmap_rgb32 &dest, const rectangle &cliprect,
+void gfx_element::prio_transtable(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
bitmap_ind8 &priority, UINT32 pmask, const UINT8 *pentable, const pen_t *shadowtable)
{
@@ -1358,7 +1358,7 @@ void gfx_element::prio_transtable(bitmap_rgb32 &dest, const rectangle &cliprect,
pmask |= 1 << 31;
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
code %= elements();
DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_TRANSTABLE32_PRIORITY, UINT8);
}
@@ -1371,13 +1371,13 @@ void gfx_element::prio_transtable(bitmap_rgb32 &dest, const rectangle &cliprect,
checking against the priority bitmap
-------------------------------------------------*/
-void gfx_element::prio_alpha(bitmap_rgb32 &dest, const rectangle &cliprect,
+void gfx_element::prio_alpha(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
bitmap_ind8 &priority, UINT32 pmask, UINT32 trans_pen, UINT8 alpha_val)
{
// special case alpha = 0xff
if (alpha_val == 0xff)
- return prio_transpen(dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask, trans_pen);
+ return prio_transpen(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask, trans_pen);
// early out if completely transparent
code %= elements();
@@ -1388,7 +1388,7 @@ void gfx_element::prio_alpha(bitmap_rgb32 &dest, const rectangle &cliprect,
pmask |= 1 << 31;
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
DRAWGFX_CORE(UINT32, PIXEL_OP_REMAP_TRANSPEN_ALPHA32_PRIORITY, UINT8);
}
@@ -1404,36 +1404,36 @@ void gfx_element::prio_alpha(bitmap_rgb32 &dest, const rectangle &cliprect,
the priority bitmap
-------------------------------------------------*/
-void gfx_element::prio_zoom_opaque(bitmap_ind16 &dest, const rectangle &cliprect,
+void gfx_element::prio_zoom_opaque(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect,
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 prio_opaque(dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask);
+ return prio_opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask);
// high bit of the mask is implicitly on
pmask |= 1 << 31;
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
code %= elements();
DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REMAP_OPAQUE_PRIORITY, UINT8);
}
-void gfx_element::prio_zoom_opaque(bitmap_rgb32 &dest, const rectangle &cliprect,
+void gfx_element::prio_zoom_opaque(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,
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 prio_opaque(dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask);
+ return prio_opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask);
// high bit of the mask is implicitly on
pmask |= 1 << 31;
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
code %= elements();
DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_OPAQUE_PRIORITY, UINT8);
}
@@ -1445,18 +1445,18 @@ void gfx_element::prio_zoom_opaque(bitmap_rgb32 &dest, const rectangle &cliprect
checking against the priority bitmap
-------------------------------------------------*/
-void gfx_element::prio_zoom_transpen(bitmap_ind16 &dest, const rectangle &cliprect,
+void gfx_element::prio_zoom_transpen(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask,
UINT32 trans_pen)
{
// non-zoom case
if (scalex == 0x10000 && scaley == 0x10000)
- return prio_transpen(dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask, trans_pen);
+ return prio_transpen(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask, trans_pen);
// special case invalid pens to opaque
if (trans_pen > 0xff)
- return prio_zoom_opaque(dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
+ return prio_zoom_opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
// use pen usage to optimize
code %= elements();
@@ -1469,29 +1469,29 @@ void gfx_element::prio_zoom_transpen(bitmap_ind16 &dest, const rectangle &clipre
// fully opaque; draw as such
if ((usage & (1 << trans_pen)) == 0)
- return prio_zoom_opaque(dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
+ return prio_zoom_opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
}
// high bit of the mask is implicitly on
pmask |= 1 << 31;
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REMAP_TRANSPEN_PRIORITY, UINT8);
}
-void gfx_element::prio_zoom_transpen(bitmap_rgb32 &dest, const rectangle &cliprect,
+void gfx_element::prio_zoom_transpen(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask,
UINT32 trans_pen)
{
// non-zoom case
if (scalex == 0x10000 && scaley == 0x10000)
- return prio_transpen(dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask, trans_pen);
+ return prio_transpen(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask, trans_pen);
// special case invalid pens to opaque
if (trans_pen > 0xff)
- return prio_zoom_opaque(dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
+ return prio_zoom_opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
// use pen usage to optimize
code %= elements();
@@ -1504,14 +1504,14 @@ void gfx_element::prio_zoom_transpen(bitmap_rgb32 &dest, const rectangle &clipre
// fully opaque; draw as such
if ((usage & (1 << trans_pen)) == 0)
- return prio_zoom_opaque(dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
+ return prio_zoom_opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
}
// high bit of the mask is implicitly on
pmask |= 1 << 31;
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_TRANSPEN_PRIORITY, UINT8);
}
@@ -1573,18 +1573,18 @@ void gfx_element::prio_zoom_transpen_raw(bitmap_rgb32 &dest, const rectangle &cl
priority bitmap
-------------------------------------------------*/
-void gfx_element::prio_zoom_transmask(bitmap_ind16 &dest, const rectangle &cliprect,
+void gfx_element::prio_zoom_transmask(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask,
UINT32 trans_mask)
{
// non-zoom case
if (scalex == 0x10000 && scaley == 0x10000)
- return prio_transmask(dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask, trans_mask);
+ return prio_transmask(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask, trans_mask);
// special case 0 mask to opaque
if (trans_mask == 0)
- return prio_zoom_opaque(dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
+ return prio_zoom_opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
// use pen usage to optimize
code %= elements();
@@ -1597,29 +1597,29 @@ void gfx_element::prio_zoom_transmask(bitmap_ind16 &dest, const rectangle &clipr
// fully opaque; draw as such
if ((usage & trans_mask) == 0)
- return prio_zoom_opaque(dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
+ return prio_zoom_opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
}
// high bit of the mask is implicitly on
pmask |= 1 << 31;
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REMAP_TRANSMASK_PRIORITY, UINT8);
}
-void gfx_element::prio_zoom_transmask(bitmap_rgb32 &dest, const rectangle &cliprect,
+void gfx_element::prio_zoom_transmask(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask,
UINT32 trans_mask)
{
// non-zoom case
if (scalex == 0x10000 && scaley == 0x10000)
- return prio_transmask(dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask, trans_mask);
+ return prio_transmask(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask, trans_mask);
// special case 0 mask to opaque
if (trans_mask == 0)
- return prio_zoom_opaque(dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
+ return prio_zoom_opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
// use pen usage to optimize
code %= elements();
@@ -1632,14 +1632,14 @@ void gfx_element::prio_zoom_transmask(bitmap_rgb32 &dest, const rectangle &clipr
// fully opaque; draw as such
if ((usage & trans_mask) == 0)
- return prio_zoom_opaque(dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
+ return prio_zoom_opaque(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask);
}
// high bit of the mask is implicitly on
pmask |= 1 << 31;
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_TRANSMASK_PRIORITY, UINT8);
}
@@ -1651,7 +1651,7 @@ void gfx_element::prio_zoom_transmask(bitmap_rgb32 &dest, const rectangle &clipr
checking against the priority bitmap
-------------------------------------------------*/
-void gfx_element::prio_zoom_transtable(bitmap_ind16 &dest, const rectangle &cliprect,
+void gfx_element::prio_zoom_transtable(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect,
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)
@@ -1660,18 +1660,18 @@ void gfx_element::prio_zoom_transtable(bitmap_ind16 &dest, const rectangle &clip
// non-zoom case
if (scalex == 0x10000 && scaley == 0x10000)
- return prio_transtable(dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask, pentable, shadowtable);
+ return prio_transtable(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask, pentable, shadowtable);
// high bit of the mask is implicitly on
pmask |= 1 << 31;
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
code %= elements();
DRAWGFXZOOM_CORE(UINT16, PIXEL_OP_REMAP_TRANSTABLE16_PRIORITY, UINT8);
}
-void gfx_element::prio_zoom_transtable(bitmap_rgb32 &dest, const rectangle &cliprect,
+void gfx_element::prio_zoom_transtable(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,
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)
@@ -1680,13 +1680,13 @@ void gfx_element::prio_zoom_transtable(bitmap_rgb32 &dest, const rectangle &clip
// non-zoom case
if (scalex == 0x10000 && scaley == 0x10000)
- return prio_transtable(dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask, pentable, shadowtable);
+ return prio_transtable(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask, pentable, shadowtable);
// high bit of the mask is implicitly on
pmask |= 1 << 31;
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
code %= elements();
DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_TRANSTABLE32_PRIORITY, UINT8);
}
@@ -1700,18 +1700,18 @@ void gfx_element::prio_zoom_transtable(bitmap_rgb32 &dest, const rectangle &clip
bitmap
-------------------------------------------------*/
-void gfx_element::prio_zoom_alpha(bitmap_rgb32 &dest, const rectangle &cliprect,
+void gfx_element::prio_zoom_alpha(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask,
UINT32 trans_pen, UINT8 alpha_val)
{
// non-zoom case
if (scalex == 0x10000 && scaley == 0x10000)
- return prio_alpha(dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask, trans_pen, alpha_val);
+ return prio_alpha(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask, trans_pen, alpha_val);
// special case alpha_val = 0xff
if (alpha_val == 0xff)
- return prio_zoom_transpen(dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask, trans_pen);
+ return prio_zoom_transpen(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, scalex, scaley, priority, pmask, trans_pen);
// early out if completely transparent
code %= elements();
@@ -1722,7 +1722,7 @@ void gfx_element::prio_zoom_alpha(bitmap_rgb32 &dest, const rectangle &cliprect,
pmask |= 1 << 31;
// render
- const pen_t *paldata = &machine().pens[colorbase() + granularity() * (color % colors())];
+ const pen_t *paldata = &palette.pen(colorbase() + granularity() * (color % colors()));
DRAWGFXZOOM_CORE(UINT32, PIXEL_OP_REMAP_TRANSPEN_ALPHA32_PRIORITY, UINT8);
}
@@ -1753,7 +1753,7 @@ do
} \
while (0)
-void gfx_element::prio_transpen_additive(bitmap_rgb32 &dest, const rectangle &cliprect,
+void gfx_element::prio_transpen_additive(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
bitmap_ind8 &priority, UINT32 pmask, UINT32 trans_pen)
{
@@ -1765,7 +1765,7 @@ void gfx_element::prio_transpen_additive(bitmap_rgb32 &dest, const rectangle &cl
/* get final code and color, and grab lookup tables */
code %= elements();
color %= colors();
- paldata = &machine().pens[colorbase() + granularity() * color];
+ paldata = &palette.pen(colorbase() + granularity() * color);
/* use pen usage to optimize */
if (has_pen_usage())
@@ -1785,7 +1785,7 @@ void gfx_element::prio_transpen_additive(bitmap_rgb32 &dest, const rectangle &cl
}
-void gfx_element::prio_zoom_transpen_additive(bitmap_rgb32 &dest, const rectangle &cliprect,
+void gfx_element::prio_zoom_transpen_additive(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask,
UINT32 trans_pen)
@@ -1796,7 +1796,7 @@ void gfx_element::prio_zoom_transpen_additive(bitmap_rgb32 &dest, const rectangl
if (scalex == 0x10000 && scaley == 0x10000)
{
- prio_transpen_additive(dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask, trans_pen);
+ prio_transpen_additive(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, priority, pmask, trans_pen);
return;
}
@@ -1806,7 +1806,7 @@ void gfx_element::prio_zoom_transpen_additive(bitmap_rgb32 &dest, const rectangl
/* get final code and color, and grab lookup tables */
code %= elements();
color %= colors();
- paldata = &machine().pens[colorbase() + granularity() * color];
+ paldata = &palette.pen(colorbase() + granularity() * color);
/* use pen usage to optimize */
if (has_pen_usage())
@@ -1860,7 +1860,7 @@ while (0)
a single transparent pen, storing the alpha value
in alpha field of ARGB32, negative alpha implies alphatable
-------------------------------------------------*/
-void gfx_element::alphastore(bitmap_rgb32 &dest, const rectangle &cliprect,
+void gfx_element::alphastore(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
int fixedalpha, UINT8 *alphatable)
{
@@ -1874,14 +1874,14 @@ void gfx_element::alphastore(bitmap_rgb32 &dest, const rectangle &cliprect,
/* if we have a fixed alpha, call the standard drawgfx_transpen */
if (fixedalpha == 0xff)
{
- transpen(dest, cliprect, code, color, flipx, flipy, destx, desty, 0);
+ transpen(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, 0);
return;
}
/* get final code and color, and grab lookup tables */
code %= elements();
color %= colors();
- paldata = &machine().pens[colorbase() + granularity() * color];
+ paldata = &palette.pen(colorbase() + granularity() * color);
/* early out if completely transparent */
if (has_pen_usage() && (pen_usage(code) & ~(1 << 0)) == 0)
@@ -1903,7 +1903,7 @@ void gfx_element::alphastore(bitmap_rgb32 &dest, const rectangle &cliprect,
a fixed alpha value, or if alpha==-1 then uses
the per-pen alphatable[] array
-------------------------------------------------*/
-void gfx_element::alphatable(bitmap_rgb32 &dest, const rectangle &cliprect,
+void gfx_element::alphatable(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
int fixedalpha ,UINT8 *alphatable)
{
@@ -1914,7 +1914,7 @@ void gfx_element::alphatable(bitmap_rgb32 &dest, const rectangle &cliprect,
/* if we have a fixed alpha, call the standard drawgfx_alpha */
if (fixedalpha >= 0)
{
- alpha(dest, cliprect, code, color, flipx, flipy, destx, desty, 0, fixedalpha);
+ alpha(palette, dest, cliprect, code, color, flipx, flipy, destx, desty, 0, fixedalpha);
return;
}
@@ -1924,7 +1924,7 @@ void gfx_element::alphatable(bitmap_rgb32 &dest, const rectangle &cliprect,
/* get final code and color, and grab lookup tables */
code %= elements();
color %= colors();
- paldata = &machine().pens[colorbase() + granularity() * color];
+ paldata = &palette.pen(colorbase() + granularity() * color);
/* early out if completely transparent */
if (has_pen_usage() && (pen_usage(code) & ~(1 << 0)) == 0)
@@ -2318,4 +2318,4 @@ void copyrozbitmap_trans(bitmap_rgb32 &dest, const rectangle &cliprect, bitmap_r
}
GFXDECODE_START( empty )
-GFXDECODE_END \ No newline at end of file
+GFXDECODE_END
diff --git a/src/emu/drawgfx.h b/src/emu/drawgfx.h
index fa485edc514..b538fdb7640 100644
--- a/src/emu/drawgfx.h
+++ b/src/emu/drawgfx.h
@@ -30,7 +30,6 @@
#define MCFG_GFXDECODE_INFO(_info) \
gfxdecode_device::static_set_gfxdecodeinfo(*device, GFXDECODE_NAME(_info));
-
#define MCFG_GFXDECODE_MODIFY(_tag, _info) \
MCFG_DEVICE_MODIFY(_tag) \
MCFG_GFXDECODE_INFO(_info) \
@@ -136,7 +135,7 @@ public:
// construction/destruction
gfx_element(running_machine &machine);
gfx_element(running_machine &machine, const gfx_layout &gl, const UINT8 *srcdata, UINT32 total_colors, UINT32 color_base);
- gfx_element(running_machine &machine, UINT8 *base, UINT32 width, UINT32 height, UINT32 rowbytes, UINT32 color_base, UINT32 color_granularity);
+ gfx_element(running_machine &machine, UINT8 *base, UINT32 width, UINT32 height, UINT32 rowbytes, UINT32 total_colors, UINT32 color_base, UINT32 color_granularity);
// getters
running_machine &machine() const { return m_machine; }
@@ -182,74 +181,74 @@ public:
if (m_dirty[code]) decode(code);
return m_pen_usage[code];
}
-
+
// ----- core graphics drawing -----
// specific drawgfx implementations for each transparency type
- void opaque(bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty);
- void opaque(bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty);
- void transpen(bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 transpen);
- void transpen(bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 transpen);
+ void opaque(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty);
+ void opaque(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty);
+ void transpen(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 transpen);
+ void transpen(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 transpen);
void transpen_raw(bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 transpen);
void transpen_raw(bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 transpen);
- void transmask(bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 transmask);
- void transmask(bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 transmask);
- void transtable(bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, const UINT8 *pentable, const pen_t *shadowtable);
- void transtable(bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, const UINT8 *pentable, const pen_t *shadowtable);
- void alpha(bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 transpen, UINT8 alpha);
+ void transmask(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 transmask);
+ void transmask(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 transmask);
+ void transtable(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, const UINT8 *pentable, const pen_t *shadowtable);
+ void transtable(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, const UINT8 *pentable, const pen_t *shadowtable);
+ void alpha(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 transpen, UINT8 alpha);
// ----- zoomed graphics drawing -----
// specific zoom implementations for each transparency type
- void zoom_opaque(bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley);
- void zoom_opaque(bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley);
- void zoom_transpen(bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, UINT32 transpen);
- void zoom_transpen(bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, UINT32 transpen);
+ void zoom_opaque(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley);
+ void zoom_opaque(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley);
+ void zoom_transpen(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, UINT32 transpen);
+ void zoom_transpen(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, UINT32 transpen);
void zoom_transpen_raw(bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, UINT32 transpen);
void zoom_transpen_raw(bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, UINT32 transpen);
- void zoom_transmask(bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, UINT32 transmask);
- void zoom_transmask(bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, UINT32 transmask);
- void zoom_transtable(bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, const UINT8 *pentable, const pen_t *shadowtable);
- void zoom_transtable(bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, const UINT8 *pentable, const pen_t *shadowtable);
- void zoom_alpha(bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, UINT32 transpen, UINT8 alpha);
+ void zoom_transmask(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, UINT32 transmask);
+ void zoom_transmask(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, UINT32 transmask);
+ void zoom_transtable(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, const UINT8 *pentable, const pen_t *shadowtable);
+ void zoom_transtable(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, const UINT8 *pentable, const pen_t *shadowtable);
+ void zoom_alpha(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, 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 prio implementations for each transparency type
- void prio_opaque(bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask);
- void prio_opaque(bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask);
- void prio_transpen(bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen);
- void prio_transpen(bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen);
+ void prio_opaque(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask);
+ void prio_opaque(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask);
+ void prio_transpen(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen);
+ void prio_transpen(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen);
void prio_transpen_raw(bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen);
void prio_transpen_raw(bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen);
- void prio_transmask(bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask, UINT32 transmask);
- void prio_transmask(bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask, UINT32 transmask);
- void prio_transtable(bitmap_ind16 &dest, const rectangle &cliprect, 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 prio_transtable(bitmap_rgb32 &dest, const rectangle &cliprect, 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 prio_alpha(bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen, UINT8 alpha);
+ void prio_transmask(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask, UINT32 transmask);
+ void prio_transmask(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask, UINT32 transmask);
+ void prio_transtable(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect, 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 prio_transtable(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, 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 prio_alpha(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, 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 prio_zoom implementations for each transparency type
- void prio_zoom_opaque(bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask);
- void prio_zoom_opaque(bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask);
- void prio_zoom_transpen(bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen);
- void prio_zoom_transpen(bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen);
+ void prio_zoom_opaque(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask);
+ void prio_zoom_opaque(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask);
+ void prio_zoom_transpen(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen);
+ void prio_zoom_transpen(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen);
void prio_zoom_transpen_raw(bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen);
void prio_zoom_transpen_raw(bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen);
- void prio_zoom_transmask(bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask, UINT32 transmask);
- void prio_zoom_transmask(bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask, UINT32 transmask);
- void prio_zoom_transtable(bitmap_ind16 &dest, const rectangle &cliprect, 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 prio_zoom_transtable(bitmap_rgb32 &dest, const rectangle &cliprect, 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 prio_zoom_alpha(bitmap_rgb32 &dest, const rectangle &cliprect, 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);
+ void prio_zoom_transmask(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask, UINT32 transmask);
+ void prio_zoom_transmask(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask, UINT32 transmask);
+ void prio_zoom_transtable(palette_device &palette, bitmap_ind16 &dest, const rectangle &cliprect, 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 prio_zoom_transtable(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, 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 prio_zoom_alpha(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, 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);
- void prio_transpen_additive(bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask, UINT32 trans_pen);
- void prio_zoom_transpen_additive(bitmap_rgb32 &dest, const rectangle &cliprect,UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask,UINT32 trans_pen);
- void alphastore(bitmap_rgb32 &dest, const rectangle &cliprect,UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,int fixedalpha, UINT8 *alphatable);
- void alphatable(bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, int fixedalpha ,UINT8 *alphatable);
+ void prio_transpen_additive(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask, UINT32 trans_pen);
+ void prio_zoom_transpen_additive(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask,UINT32 trans_pen);
+ void alphastore(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,int fixedalpha, UINT8 *alphatable);
+ void alphatable(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, int fixedalpha ,UINT8 *alphatable);
private:
// internal state
UINT16 m_width; // current pixel width of each element (changeble with source clipping)
@@ -453,10 +452,11 @@ public:
// static configuration
static void static_set_gfxdecodeinfo(device_t &device, const gfx_decode_entry *info);
+ static void static_set_palette(device_t &device, const char *tag);
gfx_element * gfx(int index) { assert(index < MAX_GFX_ELEMENTS); return m_gfx[index]; }
gfx_element ** gfx() { return m_gfx; }
-
+
void set_gfx(int index, gfx_element * val) { assert(index < MAX_GFX_ELEMENTS); m_gfx[index] = val; }
protected:
// device-level overrides
diff --git a/src/emu/driver.c b/src/emu/driver.c
index 73646b44654..fc352a5c890 100644
--- a/src/emu/driver.c
+++ b/src/emu/driver.c
@@ -35,6 +35,7 @@ driver_device::driver_device(const machine_config &mconfig, device_type type, co
: device_t(mconfig, type, "Driver Device", tag, NULL, 0, "", __FILE__),
device_memory_interface(mconfig, *this),
m_screen(*this, "screen"),
+ m_palette(*this, "palette"),
m_generic_paletteram_8(*this, "paletteram"),
m_generic_paletteram2_8(*this, "paletteram2"),
m_generic_paletteram_16(*this, "paletteram"),
@@ -134,16 +135,6 @@ void driver_device::sound_start()
//-------------------------------------------------
-// palette_init - default implementation which
-// does nothing
-//-------------------------------------------------
-
-void driver_device::palette_init()
-{
-}
-
-
-//-------------------------------------------------
// video_start - default implementation which
// calls to the legacy video_start function
//-------------------------------------------------
@@ -240,12 +231,6 @@ void driver_device::device_start()
// finish image devices init process
image_postdevice_init(machine());
- // call palette_init if present
- if (!m_callbacks[CB_PALETTE_INIT].isnull())
- m_callbacks[CB_PALETTE_INIT]();
- else
- palette_init();
-
// start the various pieces
driver_start();
@@ -600,123 +585,6 @@ void driver_device::flip_screen_y_set(UINT32 on)
//**************************************************************************
-// 8-BIT PALETTE WRITE HANDLERS
-//**************************************************************************
-
-// 3-3-2 RGB palette write handlers
-WRITE8_MEMBER( driver_device::paletteram_BBGGGRRR_byte_w ) { palette_8bit_byte_w<3,3,2, 0,3,6>(space, offset, data, mem_mask); }
-WRITE8_MEMBER( driver_device::paletteram_RRRGGGBB_byte_w ) { palette_8bit_byte_w<3,3,2, 5,2,0>(space, offset, data, mem_mask); }
-WRITE8_MEMBER( driver_device::paletteram_BBGGRRII_byte_w )
-{
- m_generic_paletteram_8[offset] = data;
- int i = (data >> 0) & 3;
- palette_set_color_rgb(machine(), offset, pal4bit(((data >> 0) & 0x0c) | i),
- pal4bit(((data >> 2) & 0x0c) | i),
- pal4bit(((data >> 4) & 0x0c) | i));
-}
-
-
-
-//**************************************************************************
-// 16-BIT PALETTE WRITE HANDLERS
-//**************************************************************************
-
-// 4-4-4 RGB palette write handlers
-WRITE8_MEMBER( driver_device::paletteram_xxxxBBBBGGGGRRRR_byte_le_w ) { palette_16bit_byte_le_w<4,4,4, 0,4,8>(space, offset, data, mem_mask); }
-WRITE8_MEMBER( driver_device::paletteram_xxxxBBBBGGGGRRRR_byte_be_w ) { palette_16bit_byte_be_w<4,4,4, 0,4,8>(space, offset, data, mem_mask); }
-WRITE8_MEMBER( driver_device::paletteram_xxxxBBBBGGGGRRRR_byte_split_lo_w ) { palette_16bit_byte_split_lo_w<4,4,4, 0,4,8>(space, offset, data, mem_mask); }
-WRITE8_MEMBER( driver_device::paletteram_xxxxBBBBGGGGRRRR_byte_split_hi_w ) { palette_16bit_byte_split_hi_w<4,4,4, 0,4,8>(space, offset, data, mem_mask); }
-WRITE16_MEMBER( driver_device::paletteram_xxxxBBBBGGGGRRRR_word_w ) { palette_16bit_word_w<4,4,4, 0,4,8>(space, offset, data, mem_mask); }
-
-WRITE8_MEMBER( driver_device::paletteram_xxxxBBBBRRRRGGGG_byte_le_w ) { palette_16bit_byte_le_w<4,4,4, 4,0,8>(space, offset, data, mem_mask); }
-WRITE8_MEMBER( driver_device::paletteram_xxxxBBBBRRRRGGGG_byte_be_w ) { palette_16bit_byte_be_w<4,4,4, 4,0,8>(space, offset, data, mem_mask); }
-WRITE8_MEMBER( driver_device::paletteram_xxxxBBBBRRRRGGGG_byte_split_lo_w ) { palette_16bit_byte_split_lo_w<4,4,4, 4,0,8>(space, offset, data, mem_mask); }
-WRITE8_MEMBER( driver_device::paletteram_xxxxBBBBRRRRGGGG_byte_split_hi_w ) { palette_16bit_byte_split_hi_w<4,4,4, 4,0,8>(space, offset, data, mem_mask); }
-WRITE16_MEMBER( driver_device::paletteram_xxxxBBBBRRRRGGGG_word_w ) { palette_16bit_word_w<4,4,4, 4,0,8>(space, offset, data, mem_mask); }
-
-WRITE8_MEMBER( driver_device::paletteram_xxxxRRRRBBBBGGGG_byte_split_lo_w ) { palette_16bit_byte_split_lo_w<4,4,4, 8,0,4>(space, offset, data, mem_mask); }
-WRITE8_MEMBER( driver_device::paletteram_xxxxRRRRBBBBGGGG_byte_split_hi_w ) { palette_16bit_byte_split_hi_w<4,4,4, 8,0,4>(space, offset, data, mem_mask); }
-
-WRITE8_MEMBER( driver_device::paletteram_xxxxRRRRGGGGBBBB_byte_le_w ) { palette_16bit_byte_le_w<4,4,4, 8,4,0>(space, offset, data, mem_mask); }
-WRITE8_MEMBER( driver_device::paletteram_xxxxRRRRGGGGBBBB_byte_be_w ) { palette_16bit_byte_be_w<4,4,4, 8,4,0>(space, offset, data, mem_mask); }
-WRITE8_MEMBER( driver_device::paletteram_xxxxRRRRGGGGBBBB_byte_split_lo_w ) { palette_16bit_byte_split_lo_w<4,4,4, 8,4,0>(space, offset, data, mem_mask); }
-WRITE8_MEMBER( driver_device::paletteram_xxxxRRRRGGGGBBBB_byte_split_hi_w ) { palette_16bit_byte_split_hi_w<4,4,4, 8,4,0>(space, offset, data, mem_mask); }
-WRITE16_MEMBER( driver_device::paletteram_xxxxRRRRGGGGBBBB_word_w ) { palette_16bit_word_w<4,4,4, 8,4,0>(space, offset, data, mem_mask); }
-
-WRITE8_MEMBER( driver_device::paletteram_RRRRGGGGBBBBxxxx_byte_be_w ) { palette_16bit_byte_be_w<4,4,4, 12,8,4>(space, offset, data, mem_mask); }
-WRITE8_MEMBER( driver_device::paletteram_RRRRGGGGBBBBxxxx_byte_split_lo_w ) { palette_16bit_byte_split_lo_w<4,4,4, 12,8,4>(space, offset, data, mem_mask); }
-WRITE8_MEMBER( driver_device::paletteram_RRRRGGGGBBBBxxxx_byte_split_hi_w ) { palette_16bit_byte_split_hi_w<4,4,4, 12,8,4>(space, offset, data, mem_mask); }
-WRITE16_MEMBER( driver_device::paletteram_RRRRGGGGBBBBxxxx_word_w ) { palette_16bit_word_w<4,4,4, 12,8,4>(space, offset, data, mem_mask); }
-
-// 4-4-4-4 IRGB palette write handlers
-template<int _IShift, int _RShift, int _GShift, int _BShift>
-inline void set_color_irgb(running_machine &machine, pen_t color, UINT16 data)
-{
- static const UINT8 ztable[16] = { 0x0, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11 };
- UINT8 i = ztable[(data >> _IShift) & 15];
- UINT8 r = ((data >> _RShift) & 15) * i;
- UINT8 g = ((data >> _GShift) & 15) * i;
- UINT8 b = ((data >> _BShift) & 15) * i;
- palette_set_color_rgb(machine, color, r, g, b);
-}
-
-WRITE16_MEMBER( driver_device::paletteram_IIIIRRRRGGGGBBBB_word_w )
-{
- COMBINE_DATA(&m_generic_paletteram_16[offset]);
- set_color_irgb<12,8,4,0>(machine(), offset, m_generic_paletteram_16[offset]);
-}
-
-WRITE16_MEMBER( driver_device::paletteram_RRRRGGGGBBBBIIII_word_w )
-{
- COMBINE_DATA(&m_generic_paletteram_16[offset]);
- set_color_irgb<0,12,8,4>(machine(), offset, m_generic_paletteram_16[offset]);
-}
-
-// 5-5-5 RGB palette write handlers
-WRITE8_MEMBER( driver_device::paletteram_xBBBBBGGGGGRRRRR_byte_le_w ) { palette_16bit_byte_le_w<5,5,5, 0,5,10>(space, offset, data, mem_mask); }
-WRITE8_MEMBER( driver_device::paletteram_xBBBBBGGGGGRRRRR_byte_be_w ) { palette_16bit_byte_be_w<5,5,5, 0,5,10>(space, offset, data, mem_mask); }
-WRITE8_MEMBER( driver_device::paletteram_xBBBBBGGGGGRRRRR_byte_split_lo_w ) { palette_16bit_byte_split_lo_w<5,5,5, 0,5,10>(space, offset, data, mem_mask); }
-WRITE8_MEMBER( driver_device::paletteram_xBBBBBGGGGGRRRRR_byte_split_hi_w ) { palette_16bit_byte_split_hi_w<5,5,5, 0,5,10>(space, offset, data, mem_mask); }
-WRITE16_MEMBER( driver_device::paletteram_xBBBBBGGGGGRRRRR_word_w ) { palette_16bit_word_w<5,5,5, 0,5,10>(space, offset, data, mem_mask); }
-
-WRITE8_MEMBER( driver_device::paletteram_xBBBBBRRRRRGGGGG_byte_split_lo_w ) { palette_16bit_byte_split_lo_w<5,5,5, 5,0,10>(space, offset, data, mem_mask); }
-WRITE8_MEMBER( driver_device::paletteram_xBBBBBRRRRRGGGGG_byte_split_hi_w ) { palette_16bit_byte_split_hi_w<5,5,5, 5,0,10>(space, offset, data, mem_mask); }
-
-WRITE8_MEMBER( driver_device::paletteram_xRRRRRGGGGGBBBBB_byte_le_w ) { palette_16bit_byte_le_w<5,5,5, 10,5,0>(space, offset, data, mem_mask); }
-WRITE8_MEMBER( driver_device::paletteram_xRRRRRGGGGGBBBBB_byte_be_w ) { palette_16bit_byte_be_w<5,5,5, 10,5,0>(space, offset, data, mem_mask); }
-WRITE8_MEMBER( driver_device::paletteram_xRRRRRGGGGGBBBBB_byte_split_lo_w ) { palette_16bit_byte_split_lo_w<5,5,5, 10,5,0>(space, offset, data, mem_mask); }
-WRITE8_MEMBER( driver_device::paletteram_xRRRRRGGGGGBBBBB_byte_split_hi_w ) { palette_16bit_byte_split_hi_w<5,5,5, 10,5,0>(space, offset, data, mem_mask); }
-WRITE16_MEMBER( driver_device::paletteram_xRRRRRGGGGGBBBBB_word_w ) { palette_16bit_word_w<5,5,5, 10,5,0>(space, offset, data, mem_mask); }
-WRITE32_MEMBER( driver_device::paletteram_xRRRRRGGGGGBBBBB_dword_be_w ) { palette_16bit_dword_be_w<5,5,5, 10,5,0>(space, offset, data, mem_mask); }
-WRITE32_MEMBER( driver_device::paletteram_xRRRRRGGGGGBBBBB_dword_le_w ) { palette_16bit_dword_le_w<5,5,5, 10,5,0>(space, offset, data, mem_mask); }
-
-WRITE8_MEMBER( driver_device::paletteram_xGGGGGRRRRRBBBBB_byte_le_w ) { palette_16bit_byte_le_w<5,5,5, 5,10,0>(space, offset, data, mem_mask); }
-
-WRITE16_MEMBER( driver_device::paletteram_xGGGGGRRRRRBBBBB_word_w ) { palette_16bit_word_w<5,5,5, 5,10,0>(space, offset, data, mem_mask); }
-WRITE16_MEMBER( driver_device::paletteram_xGGGGGBBBBBRRRRR_word_w ) { palette_16bit_word_w<5,5,5, 0,10,5>(space, offset, data, mem_mask); }
-WRITE16_MEMBER( driver_device::paletteram_RRRRRGGGGGBBBBBx_word_w ) { palette_16bit_word_w<5,5,5, 11,6,1>(space, offset, data, mem_mask); }
-WRITE16_MEMBER( driver_device::paletteram_GGGGGRRRRRBBBBBx_word_w ) { palette_16bit_word_w<5,5,5, 6,11,1>(space, offset, data, mem_mask); }
-WRITE16_MEMBER( driver_device::paletteram_RRRRGGGGBBBBRGBx_word_w )
-{
- COMBINE_DATA(&m_generic_paletteram_16[offset]);
- data = m_generic_paletteram_16[offset];
- palette_set_color_rgb(machine(), offset, pal5bit(((data >> 11) & 0x1e) | ((data >> 3) & 0x01)),
- pal5bit(((data >> 7) & 0x1e) | ((data >> 2) & 0x01)),
- pal5bit(((data >> 3) & 0x1e) | ((data >> 1) & 0x01)));
-}
-
-
-//**************************************************************************
-// 32-BIT PALETTE WRITE HANDLERS
-//**************************************************************************
-
-// 8-8-8 RGB palette write handlers
-WRITE16_MEMBER( driver_device::paletteram_xrgb_word_be_w ) { palette_32bit_word_be_w<8,8,8, 16,8,0>(space, offset, data, mem_mask); }
-WRITE16_MEMBER( driver_device::paletteram_xbgr_word_be_w ) { palette_32bit_word_be_w<8,8,8, 0,8,16>(space, offset, data, mem_mask); }
-
-
-
-//**************************************************************************
// MISC READ/WRITE HANDLERS
//**************************************************************************
@@ -733,141 +601,3 @@ WRITE8_MEMBER( driver_device::fatal_generic_write )
{
throw emu_fatalerror("Attempted to write to generic address space (offs %X = %02X)\n", offset, data);
}
-
-
-/***************************************************************************
- COMMON PALETTE INITIALIZATION
-***************************************************************************/
-
-/*-------------------------------------------------
- black - completely black palette
--------------------------------------------------*/
-
-PALETTE_INIT_MEMBER(driver_device, all_black)
-{
- int i;
-
- for (i = 0; i < machine().total_colors(); i++)
- {
- palette_set_color(machine(),i,rgb_t::black); /* black */
- }
-}
-
-
-/*-------------------------------------------------
- black_and_white - basic 2-color black & white
--------------------------------------------------*/
-
-PALETTE_INIT_MEMBER(driver_device, black_and_white)
-{
- palette_set_color(machine(),0,rgb_t::black); /* black */
- palette_set_color(machine(),1,rgb_t::white); /* white */
-}
-
-
-/*-------------------------------------------------
- monochrome_amber - 2-color black & amber
--------------------------------------------------*/
-
-PALETTE_INIT_MEMBER(driver_device, monochrome_amber)
-{
- palette_set_color(machine(), 0, rgb_t::black); /* black */
- palette_set_color_rgb(machine(), 1, 0xf7, 0xaa, 0x00); /* amber */
-}
-
-
-/*-------------------------------------------------
- monochrome_green - 2-color black & green
--------------------------------------------------*/
-
-PALETTE_INIT_MEMBER(driver_device, monochrome_green)
-{
- palette_set_color(machine(), 0, rgb_t::black); /* black */
- palette_set_color_rgb(machine(), 1, 0x00, 0xff, 0x00); /* green */
-}
-
-
-/*-------------------------------------------------
- RRRR_GGGG_BBBB - standard 4-4-4 palette,
- assuming the commonly used resistor values:
-
- bit 3 -- 220 ohm resistor -- RED/GREEN/BLUE
- -- 470 ohm resistor -- RED/GREEN/BLUE
- -- 1 kohm resistor -- RED/GREEN/BLUE
- bit 0 -- 2.2kohm resistor -- RED/GREEN/BLUE
--------------------------------------------------*/
-
-PALETTE_INIT_MEMBER(driver_device, RRRR_GGGG_BBBB)
-{
- const UINT8 *color_prom = machine().root_device().memregion("proms")->base();
- int i;
-
- for (i = 0; i < machine().total_colors(); i++)
- {
- int bit0,bit1,bit2,bit3,r,g,b;
-
- /* red component */
- bit0 = (color_prom[i] >> 0) & 0x01;
- bit1 = (color_prom[i] >> 1) & 0x01;
- bit2 = (color_prom[i] >> 2) & 0x01;
- bit3 = (color_prom[i] >> 3) & 0x01;
- r = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
-
- /* green component */
- bit0 = (color_prom[i + machine().total_colors()] >> 0) & 0x01;
- bit1 = (color_prom[i + machine().total_colors()] >> 1) & 0x01;
- bit2 = (color_prom[i + machine().total_colors()] >> 2) & 0x01;
- bit3 = (color_prom[i + machine().total_colors()] >> 3) & 0x01;
- g = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
-
- /* blue component */
- bit0 = (color_prom[i + 2*machine().total_colors()] >> 0) & 0x01;
- bit1 = (color_prom[i + 2*machine().total_colors()] >> 1) & 0x01;
- bit2 = (color_prom[i + 2*machine().total_colors()] >> 2) & 0x01;
- bit3 = (color_prom[i + 2*machine().total_colors()] >> 3) & 0x01;
- b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
-
- palette_set_color(machine(),i,rgb_t(r,g,b));
- }
-}
-
-
-
-/*-------------------------------------------------
- RRRRR_GGGGG_BBBBB/BBBBB_GGGGG_RRRRR -
- standard 5-5-5 palette for games using a
- 15-bit color space
--------------------------------------------------*/
-
-PALETTE_INIT_MEMBER(driver_device, RRRRR_GGGGG_BBBBB)
-{
- int i;
-
- for (i = 0; i < 0x8000; i++)
- palette_set_color(machine(), i, rgb_t(pal5bit(i >> 10), pal5bit(i >> 5), pal5bit(i >> 0)));
-}
-
-
-PALETTE_INIT_MEMBER(driver_device, BBBBB_GGGGG_RRRRR)
-{
- int i;
-
- for (i = 0; i < 0x8000; i++)
- palette_set_color(machine(), i, rgb_t(pal5bit(i >> 0), pal5bit(i >> 5), pal5bit(i >> 10)));
-}
-
-
-
-/*-------------------------------------------------
- RRRRR_GGGGGG_BBBBB -
- standard 5-6-5 palette for games using a
- 16-bit color space
--------------------------------------------------*/
-
-PALETTE_INIT_MEMBER(driver_device, RRRRR_GGGGGG_BBBBB)
-{
- int i;
-
- for (i = 0; i < 0x10000; i++)
- palette_set_color(machine(), i, rgb_t(pal5bit(i >> 11), pal6bit(i >> 5), pal5bit(i >> 0)));
-}
diff --git a/src/emu/driver.h b/src/emu/driver.h
index ebca6358f73..68dfe71c35a 100644
--- a/src/emu/driver.h
+++ b/src/emu/driver.h
@@ -41,9 +41,6 @@
// core video callbacks
-#define MCFG_PALETTE_INIT_OVERRIDE(_class, _func) \
- driver_device::static_set_callback(config.root_device(), driver_device::CB_PALETTE_INIT, driver_callback_delegate(&_class::PALETTE_INIT_NAME(_func), #_class "::palette_init_" #_func, downcast<_class *>(owner)));
-
#define MCFG_VIDEO_START_OVERRIDE(_class, _func) \
driver_device::static_set_callback(config.root_device(), driver_device::CB_VIDEO_START, driver_callback_delegate(&_class::VIDEO_START_NAME(_func), #_class "::video_start_" #_func, downcast<_class *>(owner)));
@@ -79,12 +76,6 @@
#define DECLARE_SOUND_RESET(name) void SOUND_RESET_NAME(name)()
#define SOUND_RESET_MEMBER(cls,name) void cls::SOUND_RESET_NAME(name)()
-#define PALETTE_INIT_NAME(name) palette_init_##name
-#define PALETTE_INIT(name) void PALETTE_INIT_NAME(name)(running_machine &machine) // legacy
-#define PALETTE_INIT_CALL_MEMBER(name) PALETTE_INIT_NAME(name)()
-#define DECLARE_PALETTE_INIT(name) void PALETTE_INIT_NAME(name)()
-#define PALETTE_INIT_MEMBER(cls,name) void cls::PALETTE_INIT_NAME(name)()
-
#define VIDEO_START_NAME(name) video_start_##name
#define VIDEO_START(name) void VIDEO_START_NAME(name)(running_machine &machine) // legacy
#define VIDEO_START_CALL_MEMBER(name) VIDEO_START_NAME(name)()
@@ -105,7 +96,7 @@
// forward declarations
class gfxdecode_device;
-
+class palette_device;
typedef delegate<void ()> driver_callback_delegate;
// legacy callback functions
@@ -133,7 +124,6 @@ public:
CB_MACHINE_RESET,
CB_SOUND_START,
CB_SOUND_RESET,
- CB_PALETTE_INIT,
CB_VIDEO_START,
CB_VIDEO_RESET,
CB_COUNT
@@ -246,89 +236,6 @@ public:
UINT32 flip_screen_x() const { return m_flip_screen_x; }
UINT32 flip_screen_y() const { return m_flip_screen_y; }
- // templatized palette writers for 8-bit palette data
- template<int _RedBits, int _GreenBits, int _BlueBits, int _RedShift, int _GreenShift, int _BlueShift> DECLARE_WRITE8_MEMBER( palette_8bit_byte_w );
-
- // templatized palette writers for 16-bit palette data
- template<int _RedBits, int _GreenBits, int _BlueBits, int _RedShift, int _GreenShift, int _BlueShift> DECLARE_WRITE8_MEMBER( palette_16bit_byte_le_w );
- template<int _RedBits, int _GreenBits, int _BlueBits, int _RedShift, int _GreenShift, int _BlueShift> DECLARE_WRITE8_MEMBER( palette_16bit_byte_be_w );
- template<int _RedBits, int _GreenBits, int _BlueBits, int _RedShift, int _GreenShift, int _BlueShift> DECLARE_WRITE8_MEMBER( palette_16bit_byte_split_lo_w );
- template<int _RedBits, int _GreenBits, int _BlueBits, int _RedShift, int _GreenShift, int _BlueShift> DECLARE_WRITE8_MEMBER( palette_16bit_byte_split_hi_w );
- template<int _RedBits, int _GreenBits, int _BlueBits, int _RedShift, int _GreenShift, int _BlueShift> DECLARE_WRITE16_MEMBER( palette_16bit_word_w );
- template<int _RedBits, int _GreenBits, int _BlueBits, int _RedShift, int _GreenShift, int _BlueShift> DECLARE_WRITE32_MEMBER( palette_16bit_dword_le_w );
- template<int _RedBits, int _GreenBits, int _BlueBits, int _RedShift, int _GreenShift, int _BlueShift> DECLARE_WRITE32_MEMBER( palette_16bit_dword_be_w );
-
- // templatized palette writers for 32-bit palette data
- template<int _RedBits, int _GreenBits, int _BlueBits, int _RedShift, int _GreenShift, int _BlueShift> DECLARE_WRITE16_MEMBER( palette_32bit_word_le_w );
- template<int _RedBits, int _GreenBits, int _BlueBits, int _RedShift, int _GreenShift, int _BlueShift> DECLARE_WRITE16_MEMBER( palette_32bit_word_be_w );
- template<int _RedBits, int _GreenBits, int _BlueBits, int _RedShift, int _GreenShift, int _BlueShift> DECLARE_WRITE32_MEMBER( palette_32bit_dword_w );
-
- // 3-3-2 RGB palette write handlers
- DECLARE_WRITE8_MEMBER( paletteram_BBGGGRRR_byte_w );
- DECLARE_WRITE8_MEMBER( paletteram_RRRGGGBB_byte_w );
- DECLARE_WRITE8_MEMBER( paletteram_BBGGRRII_byte_w );
-
- // 4-4-4 RGB palette write handlers
- DECLARE_WRITE8_MEMBER( paletteram_xxxxBBBBGGGGRRRR_byte_le_w );
- DECLARE_WRITE8_MEMBER( paletteram_xxxxBBBBGGGGRRRR_byte_be_w );
- DECLARE_WRITE8_MEMBER( paletteram_xxxxBBBBGGGGRRRR_byte_split_lo_w );
- DECLARE_WRITE8_MEMBER( paletteram_xxxxBBBBGGGGRRRR_byte_split_hi_w );
- DECLARE_WRITE16_MEMBER( paletteram_xxxxBBBBGGGGRRRR_word_w );
-
- DECLARE_WRITE8_MEMBER( paletteram_xxxxBBBBRRRRGGGG_byte_le_w );
- DECLARE_WRITE8_MEMBER( paletteram_xxxxBBBBRRRRGGGG_byte_be_w );
- DECLARE_WRITE8_MEMBER( paletteram_xxxxBBBBRRRRGGGG_byte_split_lo_w );
- DECLARE_WRITE8_MEMBER( paletteram_xxxxBBBBRRRRGGGG_byte_split_hi_w );
- DECLARE_WRITE16_MEMBER( paletteram_xxxxBBBBRRRRGGGG_word_w );
-
- DECLARE_WRITE8_MEMBER( paletteram_xxxxRRRRBBBBGGGG_byte_split_lo_w );
- DECLARE_WRITE8_MEMBER( paletteram_xxxxRRRRBBBBGGGG_byte_split_hi_w );
-
- DECLARE_WRITE8_MEMBER( paletteram_xxxxRRRRGGGGBBBB_byte_le_w );
- DECLARE_WRITE8_MEMBER( paletteram_xxxxRRRRGGGGBBBB_byte_be_w );
- DECLARE_WRITE8_MEMBER( paletteram_xxxxRRRRGGGGBBBB_byte_split_lo_w );
- DECLARE_WRITE8_MEMBER( paletteram_xxxxRRRRGGGGBBBB_byte_split_hi_w );
- DECLARE_WRITE16_MEMBER( paletteram_xxxxRRRRGGGGBBBB_word_w );
-
- DECLARE_WRITE8_MEMBER( paletteram_RRRRGGGGBBBBxxxx_byte_be_w );
- DECLARE_WRITE8_MEMBER( paletteram_RRRRGGGGBBBBxxxx_byte_split_lo_w );
- DECLARE_WRITE8_MEMBER( paletteram_RRRRGGGGBBBBxxxx_byte_split_hi_w );
- DECLARE_WRITE16_MEMBER( paletteram_RRRRGGGGBBBBxxxx_word_w );
-
- // 4-4-4-4 IRGB palette write handlers
- DECLARE_WRITE16_MEMBER( paletteram_IIIIRRRRGGGGBBBB_word_w );
- DECLARE_WRITE16_MEMBER( paletteram_RRRRGGGGBBBBIIII_word_w );
-
- // 5-5-5 RGB palette write handlers
- DECLARE_WRITE8_MEMBER( paletteram_xBBBBBGGGGGRRRRR_byte_le_w );
- DECLARE_WRITE8_MEMBER( paletteram_xBBBBBGGGGGRRRRR_byte_be_w );
- DECLARE_WRITE8_MEMBER( paletteram_xBBBBBGGGGGRRRRR_byte_split_lo_w );
- DECLARE_WRITE8_MEMBER( paletteram_xBBBBBGGGGGRRRRR_byte_split_hi_w );
- DECLARE_WRITE16_MEMBER( paletteram_xBBBBBGGGGGRRRRR_word_w );
-
- DECLARE_WRITE8_MEMBER( paletteram_xBBBBBRRRRRGGGGG_byte_split_lo_w );
- DECLARE_WRITE8_MEMBER( paletteram_xBBBBBRRRRRGGGGG_byte_split_hi_w );
-
- DECLARE_WRITE8_MEMBER( paletteram_xRRRRRGGGGGBBBBB_byte_le_w );
- DECLARE_WRITE8_MEMBER( paletteram_xRRRRRGGGGGBBBBB_byte_be_w );
- DECLARE_WRITE8_MEMBER( paletteram_xRRRRRGGGGGBBBBB_byte_split_lo_w );
- DECLARE_WRITE8_MEMBER( paletteram_xRRRRRGGGGGBBBBB_byte_split_hi_w );
- DECLARE_WRITE16_MEMBER( paletteram_xRRRRRGGGGGBBBBB_word_w );
- DECLARE_WRITE32_MEMBER( paletteram_xRRRRRGGGGGBBBBB_dword_be_w );
- DECLARE_WRITE32_MEMBER( paletteram_xRRRRRGGGGGBBBBB_dword_le_w );
-
- DECLARE_WRITE8_MEMBER( paletteram_xGGGGGRRRRRBBBBB_byte_le_w );
-
- DECLARE_WRITE16_MEMBER( paletteram_xGGGGGRRRRRBBBBB_word_w );
- DECLARE_WRITE16_MEMBER( paletteram_xGGGGGBBBBBRRRRR_word_w );
- DECLARE_WRITE16_MEMBER( paletteram_RRRRRGGGGGBBBBBx_word_w );
- DECLARE_WRITE16_MEMBER( paletteram_GGGGGRRRRRBBBBBx_word_w );
- DECLARE_WRITE16_MEMBER( paletteram_RRRRGGGGBBBBRGBx_word_w );
-
- // 8-8-8 RGB palette write handlers
- DECLARE_WRITE16_MEMBER( paletteram_xrgb_word_be_w );
- DECLARE_WRITE16_MEMBER( paletteram_xbgr_word_be_w );
-
// generic input port helpers
DECLARE_CUSTOM_INPUT_MEMBER( custom_port_read );
@@ -336,22 +243,11 @@ public:
DECLARE_READ8_MEMBER( fatal_generic_read );
DECLARE_WRITE8_MEMBER( fatal_generic_write );
- // generic palette init routines
- DECLARE_PALETTE_INIT( all_black );
- DECLARE_PALETTE_INIT( black_and_white );
- DECLARE_PALETTE_INIT( monochrome_amber );
- DECLARE_PALETTE_INIT( monochrome_green );
- DECLARE_PALETTE_INIT( RRRR_GGGG_BBBB );
- DECLARE_PALETTE_INIT( RRRRR_GGGGG_BBBBB );
- DECLARE_PALETTE_INIT( BBBBB_GGGGG_RRRRR );
- DECLARE_PALETTE_INIT( RRRRR_GGGGGG_BBBBB );
-
protected:
// helpers called at startup
virtual void driver_start();
virtual void machine_start();
virtual void sound_start();
- virtual void palette_init();
virtual void video_start();
// helpers called at reset
@@ -378,6 +274,7 @@ protected:
public:
// generic devices
optional_device<screen_device> m_screen;
+ optional_device<palette_device> m_palette;
// generic pointers
optional_shared_ptr<UINT8> m_generic_paletteram_8;
@@ -422,124 +319,4 @@ device_t *driver_device_creator(const machine_config &mconfig, const char *tag,
}
-
-//**************************************************************************
-// PALETTE WRITER TEMPLATES
-//**************************************************************************
-
-// write 8-bit palette data
-template<int _RedBits, int _GreenBits, int _BlueBits, int _RedShift, int _GreenShift, int _BlueShift>
-WRITE8_MEMBER(driver_device::palette_8bit_byte_w)
-{
- m_generic_paletteram_8[offset] = data;
- UINT8 paldata = m_generic_paletteram_8[offset];
- palette_set_color_rgb(machine(), offset, palexpand<_RedBits>(paldata >> _RedShift), palexpand<_GreenBits>(paldata >> _GreenShift), palexpand<_BlueBits>(paldata >> _BlueShift));
-}
-
-// write 16-bit palette data to consecutive 8-bit addresses with LSB first
-template<int _RedBits, int _GreenBits, int _BlueBits, int _RedShift, int _GreenShift, int _BlueShift>
-WRITE8_MEMBER(driver_device::palette_16bit_byte_le_w)
-{
- m_generic_paletteram_8[offset] = data;
- UINT16 paldata = m_generic_paletteram_8[offset & ~1] | (m_generic_paletteram_8[offset | 1] << 8);
- palette_set_color_rgb(machine(), offset / 2, palexpand<_RedBits>(paldata >> _RedShift), palexpand<_GreenBits>(paldata >> _GreenShift), palexpand<_BlueBits>(paldata >> _BlueShift));
-}
-
-// write 16-bit palette data to consecutive 8-bit addresses with MSB first
-template<int _RedBits, int _GreenBits, int _BlueBits, int _RedShift, int _GreenShift, int _BlueShift>
-WRITE8_MEMBER(driver_device::palette_16bit_byte_be_w)
-{
- m_generic_paletteram_8[offset] = data;
- UINT16 paldata = m_generic_paletteram_8[offset | 1] | (m_generic_paletteram_8[offset & ~1] << 8);
- palette_set_color_rgb(machine(), offset / 2, palexpand<_RedBits>(paldata >> _RedShift), palexpand<_GreenBits>(paldata >> _GreenShift), palexpand<_BlueBits>(paldata >> _BlueShift));
-}
-
-// write 16-bit palette data to split 8-bit addresses (LSB)
-template<int _RedBits, int _GreenBits, int _BlueBits, int _RedShift, int _GreenShift, int _BlueShift>
-WRITE8_MEMBER(driver_device::palette_16bit_byte_split_lo_w)
-{
- m_generic_paletteram_8[offset] = data;
- UINT16 paldata = m_generic_paletteram_8[offset] | (m_generic_paletteram2_8[offset] << 8);
- palette_set_color_rgb(machine(), offset, palexpand<_RedBits>(paldata >> _RedShift), palexpand<_GreenBits>(paldata >> _GreenShift), palexpand<_BlueBits>(paldata >> _BlueShift));
-}
-
-// write 16-bit palette data to split 8-bit addresses (MSB)
-template<int _RedBits, int _GreenBits, int _BlueBits, int _RedShift, int _GreenShift, int _BlueShift>
-WRITE8_MEMBER(driver_device::palette_16bit_byte_split_hi_w)
-{
- m_generic_paletteram2_8[offset] = data;
- UINT16 paldata = m_generic_paletteram_8[offset] | (m_generic_paletteram2_8[offset] << 8);
- palette_set_color_rgb(machine(), offset, palexpand<_RedBits>(paldata >> _RedShift), palexpand<_GreenBits>(paldata >> _GreenShift), palexpand<_BlueBits>(paldata >> _BlueShift));
-}
-
-// write 16-bit palette data to 16-bit addresses
-template<int _RedBits, int _GreenBits, int _BlueBits, int _RedShift, int _GreenShift, int _BlueShift>
-WRITE16_MEMBER(driver_device::palette_16bit_word_w)
-{
- COMBINE_DATA(&m_generic_paletteram_16[offset]);
- UINT16 paldata = m_generic_paletteram_16[offset];
- palette_set_color_rgb(machine(), offset, palexpand<_RedBits>(paldata >> _RedShift), palexpand<_GreenBits>(paldata >> _GreenShift), palexpand<_BlueBits>(paldata >> _BlueShift));
-}
-
-// write 16-bit palette data to packed 32-bit addresses (lower entry in lower 16 bits)
-template<int _RedBits, int _GreenBits, int _BlueBits, int _RedShift, int _GreenShift, int _BlueShift>
-WRITE32_MEMBER(driver_device::palette_16bit_dword_le_w)
-{
- COMBINE_DATA(&m_generic_paletteram_32[offset]);
- if (ACCESSING_BITS_0_15)
- {
- UINT16 paldata = m_generic_paletteram_32[offset];
- palette_set_color_rgb(machine(), offset * 2 + 0, palexpand<_RedBits>(paldata >> _RedShift), palexpand<_GreenBits>(paldata >> _GreenShift), palexpand<_GreenBits>(paldata >> _BlueShift));
- }
- if (ACCESSING_BITS_16_31)
- {
- UINT16 paldata = m_generic_paletteram_32[offset] >> 16;
- palette_set_color_rgb(machine(), offset * 2 + 1, palexpand<_RedBits>(paldata >> _RedShift), palexpand<_GreenBits>(paldata >> _GreenShift), palexpand<_GreenBits>(paldata >> _BlueShift));
- }
-}
-
-// write 16-bit palette data to packed 32-bit addresses (lower entry in upper 16 bits)
-template<int _RedBits, int _GreenBits, int _BlueBits, int _RedShift, int _GreenShift, int _BlueShift>
-WRITE32_MEMBER(driver_device::palette_16bit_dword_be_w)
-{
- COMBINE_DATA(&m_generic_paletteram_32[offset]);
- if (ACCESSING_BITS_16_31)
- {
- UINT16 paldata = m_generic_paletteram_32[offset] >> 16;
- palette_set_color_rgb(machine(), offset * 2 + 0, palexpand<_RedBits>(paldata >> _RedShift), palexpand<_GreenBits>(paldata >> _GreenShift), palexpand<_BlueBits>(paldata >> _BlueShift));
- }
- if (ACCESSING_BITS_0_15)
- {
- UINT16 paldata = m_generic_paletteram_32[offset];
- palette_set_color_rgb(machine(), offset * 2 + 1, palexpand<_RedBits>(paldata >> _RedShift), palexpand<_GreenBits>(paldata >> _GreenShift), palexpand<_BlueBits>(paldata >> _BlueShift));
- }
-}
-
-// write 32-bit palette data to consecutive 16-bit addresses with LSW first
-template<int _RedBits, int _GreenBits, int _BlueBits, int _RedShift, int _GreenShift, int _BlueShift>
-WRITE16_MEMBER(driver_device::palette_32bit_word_le_w)
-{
- COMBINE_DATA(&m_generic_paletteram_16[offset]);
- UINT32 paldata = m_generic_paletteram_16[offset & ~1] | (m_generic_paletteram_16[offset | 1] << 16);
- palette_set_color_rgb(machine(), offset / 2, palexpand<_RedBits>(paldata >> _RedShift), palexpand<_GreenBits>(paldata >> _GreenShift), palexpand<_BlueBits>(paldata >> _BlueShift));
-}
-
-// write 32-bit palette data to consecutive 16-bit addresses with MSW first
-template<int _RedBits, int _GreenBits, int _BlueBits, int _RedShift, int _GreenShift, int _BlueShift>
-WRITE16_MEMBER(driver_device::palette_32bit_word_be_w)
-{
- COMBINE_DATA(&m_generic_paletteram_16[offset]);
- UINT32 paldata = m_generic_paletteram_16[offset | 1] | (m_generic_paletteram_16[offset & ~1] << 16);
- palette_set_color_rgb(machine(), offset / 2, palexpand<_RedBits>(paldata >> _RedShift), palexpand<_GreenBits>(paldata >> _GreenShift), palexpand<_BlueBits>(paldata >> _BlueShift));
-}
-
-// write 32-bit palette data to 32-bit addresses
-template<int _RedBits, int _GreenBits, int _BlueBits, int _RedShift, int _GreenShift, int _BlueShift>
-WRITE32_MEMBER(driver_device::palette_32bit_dword_w)
-{
- COMBINE_DATA(&m_generic_paletteram_32[offset]);
- UINT32 paldata = m_generic_paletteram_32[offset];
- palette_set_color_rgb(machine(), offset, palexpand<_RedBits>(paldata >> _RedShift), palexpand<_GreenBits>(paldata >> _GreenShift), palexpand<_BlueBits>(paldata >> _BlueShift));
-}
-
#endif /* __DRIVER_H__ */
diff --git a/src/emu/drivlgcy.h b/src/emu/drivlgcy.h
index 7099f7389db..cc4fa1444f2 100644
--- a/src/emu/drivlgcy.h
+++ b/src/emu/drivlgcy.h
@@ -23,12 +23,13 @@
#define MCFG_MACHINE_RESET(_func) \
driver_device::static_set_callback(*owner, driver_device::CB_MACHINE_RESET, MACHINE_RESET_NAME(_func));
-#define MCFG_PALETTE_INIT(_func) \
- driver_device::static_set_callback(*owner, driver_device::CB_PALETTE_INIT, PALETTE_INIT_NAME(_func));
-
#define MCFG_VIDEO_START(_func) \
driver_device::static_set_callback(*owner, driver_device::CB_VIDEO_START, VIDEO_START_NAME(_func));
+#define MCFG_PALETTE_INIT_LEGACY(_func) \
+ palette_device::static_set_init(*device, palette_init_delegate(PALETTE_INIT_NAME(_func), "palette_init_" #_func, downcast<palette_device *>(device)));
+
+
#define VIDEO_START_CALL(name) VIDEO_START_NAME(name)(machine)
diff --git a/src/emu/emupal.c b/src/emu/emupal.c
index b9a514a260b..5f79b903140 100644
--- a/src/emu/emupal.c
+++ b/src/emu/emupal.c
@@ -1,751 +1,809 @@
-/******************************************************************************
+/***************************************************************************
emupal.c
- Emulator palette handling functions.
-
- Copyright Nicola Salmoria and the MAME Team.
- Visit http://mamedev.org for licensing and usage restrictions.
+ Palette device.
+
+****************************************************************************
+
+ 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"
#define VERBOSE 0
-/***************************************************************************
- CONSTANTS
-***************************************************************************/
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
-#define PEN_BRIGHTNESS_BITS 8
-#define MAX_PEN_BRIGHTNESS (4 << PEN_BRIGHTNESS_BITS)
-#define MAX_SHADOW_PRESETS 4
+const device_type PALETTE = &device_creator<palette_device>;
+palette_device::palette_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, PALETTE, "palette", tag, owner, clock, "palette", __FILE__),
+ m_palette(NULL)
+{
+}
-/***************************************************************************
- TYPE DEFINITIONS
-***************************************************************************/
+//**************************************************************************
+// INITIALIZATION AND CONFIGURATION
+//**************************************************************************
-/* information about a shadow table */
-struct shadow_table_data
+void palette_device::static_set_init(device_t &device, palette_init_delegate init)
{
- UINT32 * base; /* pointer to the base of the table */
- INT16 dr; /* delta red value */
- INT16 dg; /* delta green value */
- INT16 db; /* delta blue value */
- UINT8 noclip; /* clip? */
-};
+ downcast<palette_device &>(device).m_init = init;
+}
-struct palette_private
+void palette_device::static_set_format(device_t &device, raw_to_rgb_converter raw_to_rgb)
{
- bitmap_format format; /* format assumed for palette data */
-
- UINT32 shadow_group; /* index of the shadow group, or 0 if none */
- UINT32 hilight_group; /* index of the hilight group, or 0 if none */
-
- pen_t black_pen; /* precomputed black pen value */
- pen_t white_pen; /* precomputed white pen value */
-
- shadow_table_data shadow_table[MAX_SHADOW_PRESETS]; /* array of shadow table data */
-
- pen_t * save_pen; /* pens for save/restore */
- float * save_bright; /* brightness for save/restore */
-};
+ downcast<palette_device &>(device).m_raw_to_rgb = raw_to_rgb;
+}
-class colortable_t
+void palette_device::static_set_entries(device_t &device, int entries)
{
-public:
- colortable_t(running_machine &machine)
- : m_machine(machine) { }
-
- running_machine &machine() const { return m_machine; }
-
- UINT32 entries; /* number of entries */
- UINT32 palentries; /* number of palette entries */
- UINT16 * raw; /* raw data about each entry */
- rgb_t * palette; /* palette entries */
-
-private:
- running_machine & m_machine; /* associated machine */
-};
-
-
-
-/***************************************************************************
- FUNCTION PROTOTYPES
-***************************************************************************/
-
-static void palette_presave(running_machine &machine);
-static void palette_postload(running_machine &machine);
-static void palette_exit(running_machine &machine);
-static void allocate_palette(running_machine &machine, palette_private *palette);
-static void allocate_color_tables(running_machine &machine, palette_private *palette);
-static void allocate_shadow_tables(running_machine &machine, palette_private *palette);
-static void configure_rgb_shadows(running_machine &machine, int mode, float factor);
-
-
-
-/***************************************************************************
- INITIALIZATION AND CONFIGURATION
-***************************************************************************/
+ downcast<palette_device &>(device).m_entries = entries;
+}
-/*-------------------------------------------------
- palette_init - palette initialization that
- takes place before the display is created
--------------------------------------------------*/
-void palette_init(running_machine &machine)
+void palette_device::static_enable_shadows(device_t &device)
{
- palette_private *palette = auto_alloc_clear(machine, palette_private);
- screen_device *device = machine.first_screen();
-
- /* get the format from the first screen, or use BITMAP_FORMAT_INVALID, if screenless */
- bitmap_format format = (device != NULL) ? device->format() : BITMAP_FORMAT_INVALID;
-
- /* request cleanup */
- machine.palette_data = palette;
- machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(palette_exit), &machine));
-
- /* reset all our data */
- palette->format = format;
-
- /* determine the color mode */
- switch (format)
- {
- case BITMAP_FORMAT_IND16:
- case BITMAP_FORMAT_RGB32:
- /* indexed and RGB modes are fine for everything */
- break;
-
- case BITMAP_FORMAT_INVALID:
- /* invalid format means no palette - or at least it should */
- /* Do not assert for now, palette manager should be added */
- /* in order to make possible adding of palette items per */
- /* device otherwise we need to set total colors per driver */
- //assert(machine.total_colors() == 0);
- return;
+ downcast<palette_device &>(device).m_enable_shadows = true;
+}
- default:
- fatalerror("Unsupported screen bitmap format!\n");
- break;
- }
- /* allocate all the data structures */
- if (machine.total_colors() > 0)
- {
- int numcolors;
-
- allocate_palette(machine, palette);
- allocate_color_tables(machine, palette);
- allocate_shadow_tables(machine, palette);
-
- /* set up save/restore of the palette */
- numcolors = machine.palette->num_colors();
- palette->save_pen = auto_alloc_array(machine, pen_t, numcolors);
- palette->save_bright = auto_alloc_array(machine, float, numcolors);
- machine.save().save_pointer(NAME(palette->save_pen), numcolors);
- machine.save().save_pointer(NAME(palette->save_bright), numcolors);
- machine.save().register_presave(save_prepost_delegate(FUNC(palette_presave), &machine));
- machine.save().register_postload(save_prepost_delegate(FUNC(palette_postload), &machine));
- }
+void palette_device::static_enable_hilights(device_t &device)
+{
+ downcast<palette_device &>(device).m_enable_hilights = true;
}
-/***************************************************************************
- SHADOW/HIGHLIGHT CONFIGURATION
-***************************************************************************/
+//**************************************************************************
+// INDIRECTION (AKA COLORTABLES)
+//**************************************************************************
-/*-------------------------------------------------
- palette_set_shadow_factor - set the global
- shadow brightness factor
--------------------------------------------------*/
+//-------------------------------------------------
+// set_indirect_color - set an indirect color
+//-------------------------------------------------
-void palette_set_shadow_factor(running_machine &machine, double factor)
+void palette_device::set_indirect_color(int index, rgb_t rgb)
{
- palette_private *palette = machine.palette_data;
-
- assert(palette->shadow_group != 0);
- machine.palette->group_set_contrast(palette->shadow_group, factor);
+ // ensure the array is expanded enough to handle the index, then set it
+ m_indirect_colors.resize(index + 1);
+ m_indirect_colors[index] = rgb;
}
-/*-------------------------------------------------
- palette_set_highlight_factor - set the global
- highlight brightness factor
--------------------------------------------------*/
+//-------------------------------------------------
+// set_pen_indirect - set an indirect pen index
+//-------------------------------------------------
-void palette_set_highlight_factor(running_machine &machine, double factor)
+void palette_device::set_pen_indirect(pen_t pen, UINT16 index)
{
- palette_private *palette = machine.palette_data;
-
- assert(palette->hilight_group != 0);
- machine.palette->group_set_contrast(palette->hilight_group, factor);
+ // ensure the array is expanded enough to handle the index, then set it
+ m_indirect_entry.resize(index + 1);
+ m_indirect_entry[index] = index;
}
+//-------------------------------------------------
+// transpen_mask - return a mask of pens that
+// whose indirect values match the given
+// transcolor
+//-------------------------------------------------
-/***************************************************************************
- SHADOW TABLE CONFIGURATION
-***************************************************************************/
-
-/*-------------------------------------------------
- palette_set_shadow_mode(mode)
-
- mode: 0 = use preset 0 (default shadow)
- 1 = use preset 1 (default highlight)
- 2 = use preset 2 *
- 3 = use preset 3 *
-
- * Preset 2 & 3 work independently under 32bpp,
- supporting up to four different types of
- shadows at one time. They mirror preset 1 & 2
- in lower depth settings to maintain
- compatibility.
-
-
- palette_set_shadow_dRGB32(mode, dr, dg, db, noclip)
-
- mode: 0 to 3 (which preset to configure)
-
- dr: -255 to 255 ( red displacement )
- dg: -255 to 255 ( green displacement )
- db: -255 to 255 ( blue displacement )
+UINT32 palette_device::transpen_mask(gfx_element &gfx, int color, int transcolor)
+{
+ UINT32 entry = gfx.colorbase() + (color % gfx.colors()) * gfx.granularity();
- noclip: 0 = resultant RGB clipped at 0x00/0xff
- 1 = resultant RGB wraparound 0x00/0xff
+ // make sure we are in range
+ assert(entry < m_indirect_entry.count());
+ assert(gfx.depth() <= 32);
+ // either gfx->color_depth entries or as many as we can get up until the end
+ int count = MIN(gfx.depth(), m_indirect_entry.count() - entry);
- * Color shadows only work under 32bpp.
- This function has no effect in lower color
- depths where
+ // set a bit anywhere the transcolor matches
+ UINT32 mask = 0;
+ for (int bit = 0; bit < count; bit++)
+ if (m_indirect_entry[entry++] == transcolor)
+ mask |= 1 << bit;
- palette_set_shadow_factor() or
- palette_set_highlight_factor()
+ // return the final mask
+ return mask;
+}
- should be used instead.
- * 32-bit shadows are lossy. Even with zero RGB
- displacements the affected area will still look
- slightly darkened.
+//-------------------------------------------------
+// configure_tilemap_groups - configure groups
+// within a tilemap to match the indirect masks
+//-------------------------------------------------
- Drivers should ensure all shadow pens in
- gfx_drawmode_table[] are set to DRAWMODE_NONE
- when RGB displacements are zero to avoid the
- darkening effect.
--------------------------------------------------*/
+void palette_device::configure_tilemap_groups(tilemap_t &tmap, gfx_element &gfx, int transcolor)
+{
+ int color;
-/*-------------------------------------------------
- palette_set_shadow_mode - select 1 of 4
- different live shadow tables
--------------------------------------------------*/
+ assert(gfx.colors() <= TILEMAP_NUM_GROUPS);
-void palette_set_shadow_mode(running_machine &machine, int mode)
-{
- palette_private *palette = machine.palette_data;
- assert(mode >= 0 && mode < MAX_SHADOW_PRESETS);
- machine.shadow_table = palette->shadow_table[mode].base;
+ // iterate over all colors in the tilemap
+ for (color = 0; color < gfx.colors(); color++)
+ tmap.set_transmask(color, transpen_mask(gfx, color, transcolor), 0);
}
-/*-------------------------------------------------
- palette_set_shadow_dRGB32 - configure delta
- RGB values for 1 of 4 shadow tables
--------------------------------------------------*/
-void palette_set_shadow_dRGB32(running_machine &machine, int mode, int dr, int dg, int db, int noclip)
+//**************************************************************************
+// SHADOW TABLE CONFIGURATION
+//**************************************************************************
+
+//-------------------------------------------------
+// palette_set_shadow_mode(mode)
+//
+// mode: 0 = use preset 0 (default shadow)
+// 1 = use preset 1 (default highlight)
+// 2 = use preset 2 *
+// 3 = use preset 3 *
+//
+// * Preset 2 & 3 work independently under 32bpp,
+// supporting up to four different types of
+// shadows at one time. They mirror preset 1 & 2
+// in lower depth settings to maintain
+// compatibility.
+//
+//
+// set_shadow_dRGB32(mode, dr, dg, db, noclip)
+//
+// mode: 0 to 3 (which preset to configure)
+//
+// dr: -255 to 255 ( red displacement )
+// dg: -255 to 255 ( green displacement )
+// db: -255 to 255 ( blue displacement )
+//
+// noclip: 0 = resultant RGB clipped at 0x00/0xff
+// 1 = resultant RGB wraparound 0x00/0xff
+//
+//
+// * Color shadows only work under 32bpp.
+// This function has no effect in lower color
+// depths where
+//
+// set_shadow_factor() or
+// set_highlight_factor()
+//
+// should be used instead.
+//
+// * 32-bit shadows are lossy. Even with zero RGB
+// displacements the affected area will still look
+// slightly darkened.
+//
+// Drivers should ensure all shadow pens in
+// gfx_drawmode_table[] are set to DRAWMODE_NONE
+// when RGB displacements are zero to avoid the
+// darkening effect.
+//-------------------------------------------------
+
+//-------------------------------------------------
+// set_shadow_dRGB32 - configure delta RGB values
+// for 1 of 4 shadow tables
+//-------------------------------------------------
+
+void palette_device::set_shadow_dRGB32(int mode, int dr, int dg, int db, bool noclip)
{
- palette_private *palette = machine.palette_data;
- shadow_table_data *stable = &palette->shadow_table[mode];
- int i;
+ shadow_table_data &stable = m_shadow_tables[mode];
- /* only applies to RGB direct modes */
- assert(palette->format != BITMAP_FORMAT_IND16);
- assert(stable->base != NULL);
+ // only applies to RGB direct modes
+ assert(m_format != BITMAP_FORMAT_IND16);
+ assert(stable.base != NULL);
- /* clamp the deltas (why?) */
+ // clamp the deltas (why?)
if (dr < -0xff) dr = -0xff; else if (dr > 0xff) dr = 0xff;
if (dg < -0xff) dg = -0xff; else if (dg > 0xff) dg = 0xff;
if (db < -0xff) db = -0xff; else if (db > 0xff) db = 0xff;
- /* early exit if nothing changed */
- if (dr == stable->dr && dg == stable->dg && db == stable->db && noclip == stable->noclip)
+ // early exit if nothing changed
+ if (dr == stable.dr && dg == stable.dg && db == stable.db && noclip == stable.noclip)
return;
- stable->dr = dr;
- stable->dg = dg;
- stable->db = db;
- stable->noclip = noclip;
+ stable.dr = dr;
+ stable.dg = dg;
+ stable.db = db;
+ stable.noclip = noclip;
if (VERBOSE)
popmessage("shadow %d recalc %d %d %d %02x", mode, dr, dg, db, noclip);
- /* regenerate the table */
- for (i = 0; i < 32768; i++)
+ // regenerate the table
+ for (int i = 0; i < 32768; i++)
{
int r = pal5bit(i >> 10) + dr;
int g = pal5bit(i >> 5) + dg;
int b = pal5bit(i >> 0) + db;
- /* apply clipping */
+ // apply clipping
if (!noclip)
{
r = rgb_t::clamp(r);
g = rgb_t::clamp(g);
b = rgb_t::clamp(b);
}
- rgb_t final = rgb_t(r, g, b);
+ rgb_t final = rgb_t(r, g, b);
- /* store either 16 or 32 bit */
- if (palette->format == BITMAP_FORMAT_RGB32)
- stable->base[i] = final;
+ // store either 16 or 32 bit
+ if (m_format == BITMAP_FORMAT_RGB32)
+ stable.base[i] = final;
else
- stable->base[i] = final.as_rgb15();
+ stable.base[i] = final.as_rgb15();
}
}
-/***************************************************************************
- COLORTABLE MANAGEMENT
-***************************************************************************/
+//**************************************************************************
+// GENERIC WRITE HANDLERS
+//**************************************************************************
-/*-------------------------------------------------
- colortable_alloc - allocate a new colortable
- with the given number of entries
--------------------------------------------------*/
+//-------------------------------------------------
+// update_for_write - given a write of a given
+// length to a given byte offset, update all
+// potentially modified palette entries
+//-------------------------------------------------
-colortable_t *colortable_alloc(running_machine &machine, UINT32 palettesize)
+inline void palette_device::update_for_write(offs_t byte_offset, int bytes_modified)
+{
+ // determine how many entries were modified
+ int bpe = m_paletteram.bytes_per_entry();
+ assert(bpe != 0);
+ int count = (bytes_modified + bpe - 1) / bpe;
+
+ // for each entry modified, fetch the palette data and set the pen color
+ offs_t base = byte_offset / bpe;
+ for (int index = 0; index < count; index++)
+ {
+ UINT32 data = m_paletteram.read(base + index);
+ if (m_paletteram_ext.base())
+ data |= m_paletteram_ext.read(base + index) << (8 * bpe);
+ set_pen_color(base + index, m_raw_to_rgb(data));
+ }
+}
+
+
+//-------------------------------------------------
+// write - write a byte to the base paletteram
+//-------------------------------------------------
+
+WRITE8_MEMBER(palette_device::write)
+{
+ m_paletteram.write8(offset, data);
+ update_for_write(offset, 1);
+}
+
+WRITE16_MEMBER(palette_device::write)
{
- colortable_t *ctable;
- UINT32 index;
+ m_paletteram.write16(offset, data, mem_mask);
+ update_for_write(offset * 2, 2);
+}
- assert(palettesize > 0);
+WRITE32_MEMBER(palette_device::write)
+{
+ m_paletteram.write32(offset, data, mem_mask);
+ update_for_write(offset * 4, 4);
+}
- /* allocate the colortable */
- ctable = auto_alloc_clear(machine, colortable_t(machine));
- /* fill in the basics */
- ctable->entries = machine.total_colors();
- ctable->palentries = palettesize;
+//-------------------------------------------------
+// write_ext - write a byte to the extended
+// paletteram
+//-------------------------------------------------
- /* allocate the raw colortable */
- ctable->raw = auto_alloc_array(machine, UINT16, ctable->entries);
- for (index = 0; index < ctable->entries; index++)
- ctable->raw[index] = index % ctable->palentries;
- machine.save().save_pointer(NAME(ctable->raw), ctable->entries);
+WRITE8_MEMBER(palette_device::write_ext)
+{
+ m_paletteram_ext.write8(offset, data);
+ update_for_write(offset, 1);
+}
- /* allocate the palette */
- ctable->palette = auto_alloc_array(machine, rgb_t, ctable->palentries);
- for (index = 0; index < ctable->palentries; index++)
- ctable->palette[index] = rgb_t(0x80,0xff,0xff,0xff);
- machine.save().save_pointer(NAME(ctable->palette), ctable->palentries);
- return ctable;
+WRITE16_MEMBER(palette_device::write_ext)
+{
+ m_paletteram_ext.write16(offset, data, mem_mask);
+ update_for_write(offset * 2, 2);
}
-/*-------------------------------------------------
- colortable_entry_set_value - set the value
- of a colortable entry
--------------------------------------------------*/
-void colortable_entry_set_value(colortable_t *ctable, UINT32 entry, UINT16 value)
+//**************************************************************************
+// DEVICE MANAGEMENT
+//**************************************************************************
+
+//-------------------------------------------------
+// device_start - start up the device
+//-------------------------------------------------
+
+void palette_device::device_start()
{
- /* ensure values are within range */
- assert(ctable != NULL);
- assert(entry < ctable->entries);
- assert(value < ctable->palentries);
+ // bind the init function
+ m_init.bind_relative_to(*owner());
- /* update if it has changed */
- if (ctable->raw[entry] != value)
+ // find the memory, if present
+ const memory_share *share = memshare(tag());
+ if (share != NULL)
{
- ctable->raw[entry] = value;
- palette_set_color(ctable->machine(), entry, ctable->palette[value]);
- }
-}
+ // find the extended (split) memory, if present
+ astring tag_ext(tag(), "_ext");
+ const memory_share *share_ext = memshare(tag_ext.cstr());
+
+ // make sure we have specified a format
+ assert(m_raw_to_rgb.bytes_per_entry() > 0);
+
+ // determine bytes per entry
+ int bytes_per_entry = m_raw_to_rgb.bytes_per_entry();
+ if (share_ext == NULL)
+ m_paletteram.set(*share, bytes_per_entry);
+ else
+ {
+ m_paletteram.set(*share, bytes_per_entry / 2);
+ m_paletteram_ext.set(*share_ext, bytes_per_entry / 2);
+ }
+ // look for an extension entry
+ if (share_ext != NULL)
+ m_paletteram_ext.set(*share_ext, m_raw_to_rgb.bytes_per_entry());
+ }
+
+ // reset all our data
+ screen_device *device = machine().first_screen();
+ m_format = (device != NULL) ? device->format() : BITMAP_FORMAT_INVALID;
+ if (m_entries > 0)
+ {
+ allocate_palette();
+ allocate_color_tables();
+ allocate_shadow_tables();
+ }
-/*-------------------------------------------------
- colortable_entry_get_value - return the value
- of a colortable entry
--------------------------------------------------*/
+ // call the initialization helper if present (this will expand the indirection tables to full size)
+ if (!m_init.isnull())
+ m_init(*this);
-UINT16 colortable_entry_get_value(colortable_t *ctable, UINT32 entry)
-{
- assert(ctable != NULL);
- assert(entry < ctable->entries);
- return ctable->raw[entry];
+ // set up save/restore of the palette
+ int numcolors = m_palette->num_colors();
+ m_save_pen.resize(numcolors);
+ m_save_contrast.resize(numcolors);
+ save_item(NAME(m_save_pen));
+ save_item(NAME(m_save_contrast));
}
-/*-------------------------------------------------
- colortable_palette_set_color - change the
- color of a colortable palette entry
--------------------------------------------------*/
-void colortable_palette_set_color(colortable_t *ctable, UINT32 entry, rgb_t color)
-{
- /* ensure values are within range */
- assert(ctable != NULL);
- assert(entry < ctable->palentries);
+//**************************************************************************
+// INTERNAL FUNCTIONS
+//**************************************************************************
- /* alpha doesn't matter */
- color.set_a(0xff);
+//-------------------------------------------------
+// device_pre_save - prepare the save arrays
+// for saving
+//-------------------------------------------------
- /* update if it has changed */
- if (ctable->palette[entry] != color)
+void palette_device::device_pre_save()
+{
+ // fill the save arrays with updated pen and brightness information
+ int numcolors = m_palette->num_colors();
+ for (int index = 0; index < numcolors; index++)
{
- UINT32 index;
+ m_save_pen[index] = pen_color(index);
+ m_save_contrast[index] = pen_contrast(index);
+ }
+}
- ctable->palette[entry] = color;
- /* update the palette for any colortable entries that reference it */
- for (index = 0; index < ctable->entries; index++)
- if (ctable->raw[index] == entry)
- palette_set_color(ctable->machine(), index, color);
+//-------------------------------------------------
+// device_post_load - called after restore to
+// actually update the palette
+//-------------------------------------------------
+
+void palette_device::device_post_load()
+{
+ // reset the pen and brightness for each entry
+ int numcolors = m_palette->num_colors();
+ for (int index = 0; index < numcolors; index++)
+ {
+ set_pen_color(index, m_save_pen[index]);
+ set_pen_contrast(index, m_save_contrast[index]);
}
}
-/*-------------------------------------------------
- colortable_entry_get_value - return the color
- of a colortable palette entry
--------------------------------------------------*/
+//-------------------------------------------------
+// device_stop - final cleanup
+//-------------------------------------------------
-rgb_t colortable_palette_get_color(colortable_t *ctable, UINT32 entry)
+void palette_device::device_stop()
{
- assert(ctable != NULL);
- assert(entry < ctable->palentries);
- return ctable->palette[entry];
+ // dereference the palette
+ if (m_palette != NULL)
+ m_palette->deref();
}
-/*-------------------------------------------------
- colortable_get_transpen_mask - return a 32-bit
- transparency mask for a given gfx element and
- color
--------------------------------------------------*/
+//-------------------------------------------------
+// device_validity_check - validate device
+// configuration
+//-------------------------------------------------
-UINT32 colortable_get_transpen_mask(colortable_t *ctable, gfx_element *gfx, int color, int transcolor)
+void palette_device::device_validity_check(validity_checker &valid) const
{
- UINT32 entry = gfx->colorbase() + (color % gfx->colors()) * gfx->granularity();
- UINT32 mask = 0;
- UINT32 count, bit;
+}
- /* make sure we are in range */
- assert(ctable != NULL);
- assert(entry < ctable->entries);
- assert(gfx->depth() <= 32);
- /* either gfx->color_depth entries or as many as we can get up until the end */
- count = MIN(gfx->depth(), ctable->entries - entry);
+//-------------------------------------------------
+// allocate_palette - allocate and configure the
+// palette object itself
+//-------------------------------------------------
- /* set a bit anywhere the transcolor matches */
- for (bit = 0; bit < count; bit++)
- if (ctable->raw[entry++] == transcolor)
- mask |= 1 << bit;
+void palette_device::allocate_palette()
+{
+ // determine the number of groups we need
+ int numgroups = 1;
+ if (m_enable_shadows)
+ m_shadow_group = numgroups++;
+ if (m_enable_hilights)
+ m_hilight_group = numgroups++;
+ assert_always(m_entries * numgroups <= 65536, "Error: palette has more than 65536 colors.");
+
+ // allocate a palette object containing all the colors and groups
+ m_palette = palette_t::alloc(m_entries, numgroups);
+
+ // configure the groups
+ if (m_shadow_group != 0)
+ set_shadow_factor(float(PALETTE_DEFAULT_SHADOW_FACTOR));
+ if (m_hilight_group != 0)
+ set_highlight_factor(float(PALETTE_DEFAULT_HIGHLIGHT_FACTOR));
+
+ // set the initial colors to a standard rainbow
+ for (int index = 0; index < m_entries; index++)
+ set_pen_color(index, rgb_t(pal1bit(index >> 0), pal1bit(index >> 1), pal1bit(index >> 2)));
+
+ // switch off the color mode
+ switch (m_format)
+ {
+ // 16-bit paletteized case
+ case BITMAP_FORMAT_IND16:
+ m_black_pen = m_palette->black_entry();
+ m_white_pen = m_palette->white_entry();
+ if (m_black_pen >= 65536)
+ m_black_pen = 0;
+ if (m_white_pen >= 65536)
+ m_white_pen = 65536;
+ break;
- /* return the final mask */
- return mask;
+ // 32-bit direct case
+ case BITMAP_FORMAT_RGB32:
+ m_black_pen = rgb_t(0x00,0x00,0x00);
+ m_white_pen = rgb_t(0xff,0xff,0xff);
+ break;
+
+ // screenless case
+ case BITMAP_FORMAT_INVALID:
+ default:
+ break;
+ }
}
-/*-------------------------------------------------
- colortable_configure_tilemap_groups -
- configure groups in a tilemap to represent
- transparency based on colortable entries
- (each group maps to a gfx color)
--------------------------------------------------*/
+//-------------------------------------------------
+// allocate_color_tables - allocate memory for
+// pen and color tables
+//-------------------------------------------------
-void colortable_configure_tilemap_groups(colortable_t *ctable, tilemap_t *tmap, gfx_element *gfx, int transcolor)
+void palette_device::allocate_color_tables()
{
- int color;
+ int total_colors = m_palette->num_colors() * m_palette->num_groups();
+
+ // allocate memory for the pen table
+ switch (m_format)
+ {
+ case BITMAP_FORMAT_IND16:
+ // create a dummy 1:1 mapping
+ {
+ m_pen_array.resize(total_colors + 2);
+ pen_t *pentable = &m_pen_array[0];
+ m_pens = &m_pen_array[0];
+ for (int i = 0; i < total_colors + 2; i++)
+ pentable[i] = i;
+ }
+ break;
- assert(ctable != NULL);
- assert(gfx != NULL);
- assert(tmap != NULL);
- assert(gfx->colors() <= TILEMAP_NUM_GROUPS);
+ case BITMAP_FORMAT_RGB32:
+ m_pens = reinterpret_cast<const pen_t *>(m_palette->entry_list_adjusted());
+ break;
- /* iterate over all colors in the tilemap */
- for (color = 0; color < gfx->colors(); color++)
- tmap->set_transmask(color, colortable_get_transpen_mask(ctable, gfx, color, transcolor), 0);
+ default:
+ m_pens = NULL;
+ break;
+ }
}
-/*-------------------------------------------------
- colortable_palette_get_size -
- return the number of entries in a colortable
--------------------------------------------------*/
+//-------------------------------------------------
+// allocate_shadow_tables - allocate memory for
+// shadow tables
+//-------------------------------------------------
-UINT32 colortable_palette_get_size(colortable_t *ctable)
+void palette_device::allocate_shadow_tables()
{
- assert(ctable != NULL);
- return ctable->palentries;
-}
+ // if we have shadows, allocate shadow tables
+ if (m_enable_shadows)
+ {
+ m_shadow_array.resize(65536);
+ // palettized mode gets a single 64k table in slots 0 and 2
+ if (m_format == BITMAP_FORMAT_IND16)
+ {
+ m_shadow_tables[0].base = m_shadow_tables[2].base = &m_shadow_array[0];
+ for (int i = 0; i < 65536; i++)
+ m_shadow_array[i] = (i < m_entries) ? (i + m_entries) : i;
+ }
+ // RGB mode gets two 32k tables in slots 0 and 2
+ else
+ {
+ m_shadow_tables[0].base = &m_shadow_array[0];
+ m_shadow_tables[2].base = &m_shadow_array[32768];
+ configure_rgb_shadows(0, float(PALETTE_DEFAULT_SHADOW_FACTOR));
+ }
+ }
-/***************************************************************************
- UTILITIES
-***************************************************************************/
+ // if we have hilights, allocate shadow tables
+ if (m_enable_hilights)
+ {
+ m_hilight_array.resize(65536);
-/*-------------------------------------------------
- get_black_pen - return the pen for a fixed
- black color
--------------------------------------------------*/
+ // palettized mode gets a single 64k table in slots 1 and 3
+ if (m_format == BITMAP_FORMAT_IND16)
+ {
+ m_shadow_tables[1].base = m_shadow_tables[3].base = &m_hilight_array[0];
+ for (int i = 0; i < 65536; i++)
+ m_hilight_array[i] = (i < m_entries) ? (i + 2 * m_entries) : i;
+ }
-pen_t get_black_pen(running_machine &machine)
-{
- palette_private *palette = machine.palette_data;
- return palette->black_pen;
+ // RGB mode gets two 32k tables in slots 1 and 3
+ else
+ {
+ m_shadow_tables[1].base = &m_hilight_array[0];
+ m_shadow_tables[3].base = &m_hilight_array[32768];
+ configure_rgb_shadows(1, float(PALETTE_DEFAULT_HIGHLIGHT_FACTOR));
+ }
+ }
+
+ // set the default table
+ m_shadow_table = m_shadow_tables[0].base;
}
-/*-------------------------------------------------
- get_white_pen - return the pen for a fixed
- white color
--------------------------------------------------*/
+//-------------------------------------------------
+// configure_rgb_shadows - configure shadows
+// for the RGB tables
+//-------------------------------------------------
-pen_t get_white_pen(running_machine &machine)
+void palette_device::configure_rgb_shadows(int mode, float factor)
{
- palette_private *palette = machine.palette_data;
- return palette->white_pen;
+ // only applies to RGB direct modes
+ assert(m_format != BITMAP_FORMAT_IND16);
+
+ // verify the shadow table
+ assert(mode >= 0 && mode < ARRAY_LENGTH(m_shadow_tables));
+ shadow_table_data &stable = m_shadow_tables[mode];
+ assert(stable.base != NULL);
+
+ // regenerate the table
+ int ifactor = int(factor * 256.0f);
+ for (int rgb555 = 0; rgb555 < 32768; rgb555++)
+ {
+ UINT8 r = rgb_t::clamp((pal5bit(rgb555 >> 10) * ifactor) >> 8);
+ UINT8 g = rgb_t::clamp((pal5bit(rgb555 >> 5) * ifactor) >> 8);
+ UINT8 b = rgb_t::clamp((pal5bit(rgb555 >> 0) * ifactor) >> 8);
+
+ // store either 16 or 32 bit
+ rgb_t final = rgb_t(r, g, b);
+ if (m_format == BITMAP_FORMAT_RGB32)
+ stable.base[rgb555] = final;
+ else
+ stable.base[rgb555] = final.as_rgb15();
+ }
}
-/***************************************************************************
- INTERNAL FUNCTIONS
-***************************************************************************/
+//**************************************************************************
+// COMMON PALETTE INITIALIZATION
+//**************************************************************************
/*-------------------------------------------------
- palette_presave - prepare the save arrays
- for saving
+ black - completely black palette
-------------------------------------------------*/
-static void palette_presave(running_machine &machine)
+void palette_device::palette_init_all_black(palette_device &palette)
{
- int numcolors = machine.palette->num_colors();
- palette_private *palette = machine.palette_data;
- int index;
+ int i;
- /* fill the save arrays with updated pen and brightness information */
- for (index = 0; index < numcolors; index++)
+ for (i = 0; i < palette.entries(); i++)
{
- palette->save_pen[index] = machine.palette->entry_color(index);
- palette->save_bright[index] = machine.palette->entry_contrast(index);
+ palette.set_pen_color(i,rgb_t::black); // black
}
}
/*-------------------------------------------------
- palette_postload - called after restore to
- actually update the palette
+ black_and_white - basic 2-color black & white
-------------------------------------------------*/
-static void palette_postload(running_machine &machine)
+void palette_device::palette_init_black_and_white(palette_device &palette)
{
- int numcolors = machine.palette->num_colors();
- palette_private *palette = machine.palette_data;
- int index;
-
- /* reset the pen and brightness for each entry */
- for (index = 0; index < numcolors; index++)
- {
- machine.palette->entry_set_color(index, palette->save_pen[index]);
- machine.palette->entry_set_contrast(index, palette->save_bright[index]);
- }
+ palette.set_pen_color(0,rgb_t::black); // black
+ palette.set_pen_color(1,rgb_t::white); // white
}
/*-------------------------------------------------
- palette_exit - free any allocated memory
+ white_and_black - basic 2-color white & black
-------------------------------------------------*/
-static void palette_exit(running_machine &machine)
+void palette_device::palette_init_white_and_black(palette_device &palette)
{
- /* dereference the palette */
- if (machine.palette != NULL)
- machine.palette->deref();
+ palette.set_pen_color(0,rgb_t::white); // white
+ palette.set_pen_color(1,rgb_t::black); // black
}
/*-------------------------------------------------
- allocate_palette - allocate and configure the
- palette object itself
+ monochrome_amber - 2-color black & amber
-------------------------------------------------*/
-static void allocate_palette(running_machine &machine, palette_private *palette)
+void palette_device::palette_init_monochrome_amber(palette_device &palette)
{
- int numgroups, index;
-
- /* determine the number of groups we need */
- numgroups = 1;
- if (machine.config().m_video_attributes & VIDEO_HAS_SHADOWS)
- palette->shadow_group = numgroups++;
- if (machine.config().m_video_attributes & VIDEO_HAS_HIGHLIGHTS)
- palette->hilight_group = numgroups++;
- assert_always(machine.total_colors() * numgroups <= 65536, "Error: palette has more than 65536 colors.");
-
- /* allocate a palette object containing all the colors and groups */
- machine.palette = palette_t::alloc(machine.total_colors(), numgroups);
-
- /* configure the groups */
- if (palette->shadow_group != 0)
- machine.palette->group_set_contrast(palette->shadow_group, (float)PALETTE_DEFAULT_SHADOW_FACTOR);
- if (palette->hilight_group != 0)
- machine.palette->group_set_contrast(palette->hilight_group, (float)PALETTE_DEFAULT_HIGHLIGHT_FACTOR);
-
- /* set the initial colors to a standard rainbow */
- for (index = 0; index < machine.total_colors(); index++)
- machine.palette->entry_set_color(index, rgb_t(pal1bit(index >> 0), pal1bit(index >> 1), pal1bit(index >> 2)));
+ palette.set_pen_color(0, rgb_t::black); // black
+ palette.set_pen_color(1, 0xf7, 0xaa, 0x00); // amber
+}
- /* switch off the color mode */
- switch (palette->format)
- {
- /* 16-bit paletteized case */
- case BITMAP_FORMAT_IND16:
- palette->black_pen = machine.palette->black_entry();
- palette->white_pen = machine.palette->white_entry();
- if (palette->black_pen >= 65536)
- palette->black_pen = 0;
- if (palette->white_pen >= 65536)
- palette->white_pen = 65536;
- break;
- /* 32-bit direct case */
- case BITMAP_FORMAT_RGB32:
- palette->black_pen = rgb_t(0x00,0x00,0x00);
- palette->white_pen = rgb_t(0xff,0xff,0xff);
- break;
+/*-------------------------------------------------
+ monochrome_green - 2-color black & green
+-------------------------------------------------*/
- /* screenless case */
- case BITMAP_FORMAT_INVALID:
- default:
- break;
- }
+void palette_device::palette_init_monochrome_green(palette_device &palette)
+{
+ palette.set_pen_color(0, rgb_t::black); // black
+ palette.set_pen_color(1, 0x00, 0xff, 0x00); // green
}
/*-------------------------------------------------
- allocate_color_tables - allocate memory for
- pen and color tables
+ RRRR_GGGG_BBBB - standard 4-4-4 palette,
+ assuming the commonly used resistor values:
+
+ bit 3 -- 220 ohm resistor -- RED/GREEN/BLUE
+ -- 470 ohm resistor -- RED/GREEN/BLUE
+ -- 1 kohm resistor -- RED/GREEN/BLUE
+ bit 0 -- 2.2kohm resistor -- RED/GREEN/BLUE
-------------------------------------------------*/
-static void allocate_color_tables(running_machine &machine, palette_private *palette)
+void palette_device::palette_init_RRRRGGGGBBBB_proms(palette_device &palette)
{
- int total_colors = machine.palette->num_colors() * machine.palette->num_groups();
- pen_t *pentable;
+ const UINT8 *color_prom = machine().root_device().memregion("proms")->base();
int i;
- /* allocate memory for the pen table */
- switch (palette->format)
+ for (i = 0; i < palette.entries(); i++)
{
- 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_RGB32:
- machine.pens = reinterpret_cast<const pen_t *>(machine.palette->entry_list_adjusted());
- break;
-
- default:
- machine.pens = NULL;
- break;
+ int bit0,bit1,bit2,bit3,r,g,b;
+
+ // red component
+ bit0 = (color_prom[i] >> 0) & 0x01;
+ bit1 = (color_prom[i] >> 1) & 0x01;
+ bit2 = (color_prom[i] >> 2) & 0x01;
+ bit3 = (color_prom[i] >> 3) & 0x01;
+ r = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
+
+ // green component
+ bit0 = (color_prom[i + palette.entries()] >> 0) & 0x01;
+ bit1 = (color_prom[i + palette.entries()] >> 1) & 0x01;
+ bit2 = (color_prom[i + palette.entries()] >> 2) & 0x01;
+ bit3 = (color_prom[i + palette.entries()] >> 3) & 0x01;
+ g = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
+
+ // blue component
+ bit0 = (color_prom[i + 2*palette.entries()] >> 0) & 0x01;
+ bit1 = (color_prom[i + 2*palette.entries()] >> 1) & 0x01;
+ bit2 = (color_prom[i + 2*palette.entries()] >> 2) & 0x01;
+ bit3 = (color_prom[i + 2*palette.entries()] >> 3) & 0x01;
+ b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
+
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
}
+
/*-------------------------------------------------
- allocate_shadow_tables - allocate memory for
- shadow tables
+ RRRRR_GGGGG_BBBBB/BBBBB_GGGGG_RRRRR -
+ standard 5-5-5 palette for games using a
+ 15-bit color space
-------------------------------------------------*/
-static void allocate_shadow_tables(running_machine &machine, palette_private *palette)
+void palette_device::palette_init_RRRRRGGGGGBBBBB(palette_device &palette)
{
- /* if we have shadows, allocate shadow tables */
- if (machine.config().m_video_attributes & VIDEO_HAS_SHADOWS)
- {
- pen_t *table = auto_alloc_array(machine, pen_t, 65536);
- int i;
-
- /* palettized mode gets a single 64k table in slots 0 and 2 */
- if (palette->format == BITMAP_FORMAT_IND16)
- {
- palette->shadow_table[0].base = palette->shadow_table[2].base = table;
- for (i = 0; i < 65536; i++)
- table[i] = (i < machine.total_colors()) ? (i + machine.total_colors()) : i;
- }
-
- /* RGB mode gets two 32k tables in slots 0 and 2 */
- else
- {
- palette->shadow_table[0].base = table;
- palette->shadow_table[2].base = table + 32768;
- configure_rgb_shadows(machine, 0, (float)PALETTE_DEFAULT_SHADOW_FACTOR);
- }
- }
+ int i;
- /* if we have hilights, allocate shadow tables */
- if (machine.config().m_video_attributes & VIDEO_HAS_HIGHLIGHTS)
- {
- pen_t *table = auto_alloc_array(machine, pen_t, 65536);
- int i;
+ for (i = 0; i < 0x8000; i++)
+ palette.set_pen_color(i, rgb_t(pal5bit(i >> 10), pal5bit(i >> 5), pal5bit(i >> 0)));
+}
- /* palettized mode gets a single 64k table in slots 1 and 3 */
- if (palette->format == BITMAP_FORMAT_IND16)
- {
- palette->shadow_table[1].base = palette->shadow_table[3].base = table;
- for (i = 0; i < 65536; i++)
- table[i] = (i < machine.total_colors()) ? (i + 2 * machine.total_colors()) : i;
- }
- /* RGB mode gets two 32k tables in slots 1 and 3 */
- else
- {
- palette->shadow_table[1].base = table;
- palette->shadow_table[3].base = table + 32768;
- configure_rgb_shadows(machine, 1, (float)PALETTE_DEFAULT_HIGHLIGHT_FACTOR);
- }
- }
+void palette_device::palette_init_BBBBBGGGGGRRRRR(palette_device &palette)
+{
+ int i;
- /* set the default table */
- machine.shadow_table = palette->shadow_table[0].base;
+ for (i = 0; i < 0x8000; i++)
+ palette.set_pen_color(i, rgb_t(pal5bit(i >> 0), pal5bit(i >> 5), pal5bit(i >> 10)));
}
+
/*-------------------------------------------------
- configure_rgb_shadows - configure shadows
- for the RGB tables
+ RRRRR_GGGGGG_BBBBB -
+ standard 5-6-5 palette for games using a
+ 16-bit color space
-------------------------------------------------*/
-static void configure_rgb_shadows(running_machine &machine, int mode, float factor)
+void palette_device::palette_init_RRRRRGGGGGGBBBBB(palette_device &palette)
{
- palette_private *palette = machine.palette_data;
- shadow_table_data *stable = &palette->shadow_table[mode];
- int ifactor = (int)(factor * 256.0f);
int i;
- /* only applies to RGB direct modes */
- assert(palette->format != BITMAP_FORMAT_IND16);
- assert(stable->base != NULL);
+ for (i = 0; i < 0x10000; i++)
+ palette.set_pen_color(i, rgb_t(pal5bit(i >> 11), pal6bit(i >> 5), pal5bit(i >> 0)));
+}
- /* regenerate the table */
- for (i = 0; i < 32768; i++)
- {
- rgb_t final = pal555(i, 10, 5, 0).scale8(ifactor);
- /* store either 16 or 32 bit */
- if (palette->format == BITMAP_FORMAT_RGB32)
- stable->base[i] = final;
- else
- stable->base[i] = final.as_rgb15();
- }
+rgb_t raw_to_rgb_converter::RRRRGGGGBBBBRGBx_decoder(UINT32 raw)
+{
+ UINT8 r = pal5bit(((raw >> 11) & 0x1e) | ((raw >> 3) & 0x01));
+ UINT8 g = pal5bit(((raw >> 7) & 0x1e) | ((raw >> 2) & 0x01));
+ UINT8 b = pal5bit(((raw >> 3) & 0x1e) | ((raw >> 1) & 0x01));
+ return rgb_t(r, g, b);
+}
+
+rgb_t raw_to_rgb_converter::xRGBRRRRGGGGBBBB_decoder(UINT32 raw)
+{
+ UINT8 r = pal5bit(((raw >> 8) & 0x1e) | ((raw >> 12) & 0x01));
+ UINT8 g = pal5bit(((raw >> 4) & 0x1e) | ((raw >> 13) & 0x01));
+ UINT8 b = pal5bit(((raw >> 0) & 0x1e) | ((raw >> 14) & 0x01));
+ return rgb_t(r, g, b);
}
diff --git a/src/emu/emupal.h b/src/emu/emupal.h
index dc6a2f5bab9..9d0a589db86 100644
--- a/src/emu/emupal.h
+++ b/src/emu/emupal.h
@@ -1,11 +1,41 @@
-/******************************************************************************
+/***************************************************************************
emupal.h
- Emulator palette handling functions.
-
- Copyright Nicola Salmoria and the MAME Team.
- Visit http://mamedev.org for licensing and usage restrictions.
+ Palette device.
+
+****************************************************************************
+
+ 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.
+
+****************************************************************************
There are several levels of abstraction in the way MAME handles the palette,
and several display modes which can be used by the drivers.
@@ -72,13 +102,13 @@
Shadows(Highlights) Quick Reference
-----------------------------------
- 1) declare MCFG_VIDEO_ATTRIBUTES( ... VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS ... )
+ 1) declare MCFG_VIDEO_ATTRIBUTES( ... )
2) make a pen table fill with DRAWMODE_NONE, DRAWMODE_SOURCE or DRAWMODE_SHADOW
3) (optional) set shadow darkness or highlight brightness by
- palette_set_shadow_factor(0.0-1.0) or
- palette_set_highlight_factor(1.0-n.n)
+ set_shadow_factor(0.0-1.0) or
+ _set_highlight_factor(1.0-n.n)
4) before calling drawgfx use
palette_set_shadow_mode(0) to arm shadows or
@@ -99,152 +129,321 @@
#define __EMUPAL_H__
-/***************************************************************************
- CONSTANTS
-***************************************************************************/
+//**************************************************************************
+// CONSTANTS
+//**************************************************************************
#define PALETTE_DEFAULT_SHADOW_FACTOR (0.6)
#define PALETTE_DEFAULT_HIGHLIGHT_FACTOR (1/PALETTE_DEFAULT_SHADOW_FACTOR)
+#define PALETTE_INIT_NAME(_Name) palette_init_##_Name
+#define DECLARE_PALETTE_INIT(_Name) void PALETTE_INIT_NAME(_Name)(palette_device &palette)
+#define PALETTE_INIT(_Name) void PALETTE_INIT_NAME(_Name)(palette_device &dummy, palette_device &palette)
+#define PALETTE_INIT_MEMBER(_Class, _Name) void _Class::PALETTE_INIT_NAME(_Name)(palette_device &palette)
+// standard 3-3-2 formats
+#define PALETTE_FORMAT_BBGGGRRR raw_to_rgb_converter(1, &raw_to_rgb_converter::standard_rgb_decoder<3,3,2, 0,3,6>)
+#define PALETTE_FORMAT_RRRGGGBB raw_to_rgb_converter(1, &raw_to_rgb_converter::standard_rgb_decoder<3,3,2, 5,2,0>)
-/***************************************************************************
- TYPE DEFINITIONS
-***************************************************************************/
-
-class colortable_t;
-
-
-
-/***************************************************************************
- FUNCTION PROTOTYPES
-***************************************************************************/
+// standard 2-2-2-2 formats
+#define PALETTE_FORMAT_BBGGRRII raw_to_rgb_converter(1, &raw_to_rgb_converter::standard_irgb_decoder<2,2,2,2, 0,2,4,6>)
+// standard 4-4-4 formats
+#define PALETTE_FORMAT_xxxxBBBBGGGGRRRR raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_rgb_decoder<4,4,4, 0,4,8>)
+#define PALETTE_FORMAT_xxxxBBBBRRRRGGGG raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_rgb_decoder<4,4,4, 4,0,8>)
+#define PALETTE_FORMAT_xxxxRRRRBBBBGGGG raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_rgb_decoder<4,4,4, 8,0,4>)
+#define PALETTE_FORMAT_xxxxRRRRGGGGBBBB raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_rgb_decoder<4,4,4, 8,4,0>)
+#define PALETTE_FORMAT_RRRRGGGGBBBBxxxx raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_rgb_decoder<4,4,4, 12,8,4>)
-/* ----- initialization and configuration ----- */
+// standard 4-4-4-4 formats
+#define PALETTE_FORMAT_IIIIRRRRGGGGBBBB raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_irgb_decoder<4,4,4,4, 12,8,4,0>)
+#define PALETTE_FORMAT_RRRRGGGGBBBBIIII raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_irgb_decoder<4,4,4,4, 0,12,8,4>)
-/* palette initialization that takes place before the display is created */
-void palette_init(running_machine &machine);
+// standard 5-5-5 formats
+#define PALETTE_FORMAT_xBBBBBGGGGGRRRRR raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_rgb_decoder<5,5,5, 0,5,10>)
+#define PALETTE_FORMAT_xBBBBBRRRRRGGGGG raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_rgb_decoder<5,5,5, 5,0,10>)
+#define PALETTE_FORMAT_xRRRRRGGGGGBBBBB raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_rgb_decoder<5,5,5, 10,5,0>)
+#define PALETTE_FORMAT_xGGGGGRRRRRBBBBB raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_rgb_decoder<5,5,5, 5,10,0>)
+#define PALETTE_FORMAT_xGGGGGBBBBBRRRRR raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_rgb_decoder<5,5,5, 0,10,5>)
+#define PALETTE_FORMAT_RRRRRGGGGGBBBBBx raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_rgb_decoder<5,5,5, 11,6,1>)
+#define PALETTE_FORMAT_GGGGGRRRRRBBBBBx raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_rgb_decoder<5,5,5, 6,11,1>)
+#define PALETTE_FORMAT_RRRRGGGGBBBBRGBx raw_to_rgb_converter(2, &raw_to_rgb_converter::RRRRGGGGBBBBRGBx_decoder)
+#define PALETTE_FORMAT_xRGBRRRRGGGGBBBB raw_to_rgb_converter(2, &raw_to_rgb_converter::xRGBRRRRGGGGBBBB_decoder)
+// standard 8-8-8 formats
+#define PALETTE_FORMAT_XRGB raw_to_rgb_converter(4, &raw_to_rgb_converter::standard_rgb_decoder<8,8,8, 16,8,0>)
+#define PALETTE_FORMAT_XBGR raw_to_rgb_converter(4, &raw_to_rgb_converter::standard_rgb_decoder<8,8,8, 0,8,16>)
-/* ----- shadow/hilight configuration ----- */
-/* set the global shadow brightness factor */
-void palette_set_shadow_factor(running_machine &machine, double factor);
+//**************************************************************************
+// DEVICE CONFIGURATION MACROS
+//**************************************************************************
-/* set the global highlight brightness factor */
-void palette_set_highlight_factor(running_machine &machine, double factor);
+#define MCFG_PALETTE_ADD(_tag, _entries) \
+ MCFG_DEVICE_ADD(_tag, PALETTE, 0) \
+ MCFG_PALETTE_ENTRIES(_entries) \
+#define MCFG_PALETTE_ADD_INIT_BLACK(_tag, _entries) \
+ MCFG_PALETTE_ADD(_tag, _entries) \
+ palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_all_black), downcast<palette_device *>(device)));
+#define MCFG_PALETTE_MODIFY MCFG_DEVICE_MODIFY
-/* ----- shadow table configuration ----- */
-/* select 1 of 4 different live shadow tables */
-void palette_set_shadow_mode(running_machine &machine, int mode);
+#define MCFG_PALETTE_INIT_OWNER(_class, _method) \
+ palette_device::static_set_init(*device, palette_init_delegate(&_class::PALETTE_INIT_NAME(_method), #_class "::palette_init_" #_method, downcast<_class *>(owner)));
+#define MCFG_PALETTE_INIT_DEVICE(_tag, _class, _method) \
+ palette_device::static_set_init(*device, palette_init_delegate(&_class::PALETTE_INIT_NAME(_method), #_class "::palette_init_" #_method, _tag));
-/* configure delta RGB values for 1 of 4 shadow tables */
-void palette_set_shadow_dRGB32(running_machine &machine, int mode, int dr, int dg, int db, int noclip);
+#define MCFG_PALETTE_FORMAT(_format) \
+ palette_device::static_set_format(*device, PALETTE_FORMAT_##_format);
+#define MCFG_PALETTE_ENTRIES(_entries) \
+ palette_device::static_set_entries(*device, _entries);
+#define MCFG_PALETTE_ENABLE_SHADOWS() \
+ palette_device::static_enable_shadows(*device);
-/* ----- colortable management ----- */
+#define MCFG_PALETTE_ENABLE_HILIGHTS() \
+ palette_device::static_enable_hilights(*device);
-/* allocate a new colortable with the given number of entries */
-colortable_t *colortable_alloc(running_machine &machine, UINT32 palettesize);
-/* set the value of a colortable entry */
-void colortable_entry_set_value(colortable_t *ctable, UINT32 entry, UINT16 value);
+// standard palettes
+#define MCFG_PALETTE_ADD_BLACK_AND_WHITE(_tag) \
+ MCFG_PALETTE_ADD(_tag, 2) \
+ palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_black_and_white), downcast<palette_device *>(device)));
-/* return the value of a colortable entry */
-UINT16 colortable_entry_get_value(colortable_t *ctable, UINT32 entry);
+#define MCFG_PALETTE_ADD_WHITE_AND_BLACK(_tag) \
+ MCFG_PALETTE_ADD(_tag, 2) \
+ palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_white_and_black), downcast<palette_device *>(device)));
-/* change the color of a colortable palette entry */
-void colortable_palette_set_color(colortable_t *ctable, UINT32 entry, rgb_t color);
+#define MCFG_PALETTE_ADD_MONOCHROME_AMBER(_tag) \
+ MCFG_PALETTE_ADD(_tag, 2) \
+ palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_monochrome_amber), downcast<palette_device *>(device)));
-/* return the color of a colortable palette entry */
-rgb_t colortable_palette_get_color(colortable_t *ctable, UINT32 entry);
+#define MCFG_PALETTE_ADD_MONOCHROME_GREEN(_tag) \
+ MCFG_PALETTE_ADD(_tag, 2) \
+ palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_monochrome_green), downcast<palette_device *>(device)));
-/* return a 32-bit transparency mask for a given gfx element and color */
-UINT32 colortable_get_transpen_mask(colortable_t *ctable, gfx_element *gfx, int color, int transcolor);
+#define MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB(_tag) \
+ MCFG_PALETTE_ADD(_tag, 32768) \
+ palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_RRRRRGGGGGBBBBB), downcast<palette_device *>(device)));
-/* configure groups in a tilemap to represent transparency based on colortable entries (each group maps to a gfx color) */
-void colortable_configure_tilemap_groups(colortable_t *ctable, tilemap_t *tmap, gfx_element *gfx, int transcolor);
+#define MCFG_PALETTE_ADD_BBBBBGGGGGRRRRR(_tag) \
+ MCFG_PALETTE_ADD(_tag, 32768) \
+ palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_BBBBBGGGGGRRRRR), downcast<palette_device *>(device)));
-/* return the number of entries in a colortable */
-UINT32 colortable_palette_get_size(colortable_t *ctable);
+#define MCFG_PALETTE_ADD_RRRRRGGGGGGBBBBB(_tag) \
+ MCFG_PALETTE_ADD(_tag, 65536) \
+ palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_RRRRRGGGGGGBBBBB), downcast<palette_device *>(device)));
+// other standard palettes
+#define MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS(_tag, _entries) \
+ MCFG_PALETTE_ADD(_tag, _entries) \
+ palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_RRRRGGGGBBBB_proms), downcast<palette_device *>(device)));
-/* ----- utilities ----- */
+#define MCFG_PALETTE_ADD_HARDCODED(_tag, _array) \
+ MCFG_PALETTE_ADD(_tag, sizeof(_array) / 3) \
+ palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_RRRRGGGGBBBB_proms), downcast<palette_device *>(device)));
-/* return the pen for a fixed black color */
-pen_t get_black_pen(running_machine &machine);
-/* return the pen for a fixed white color */
-pen_t get_white_pen(running_machine &machine);
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+typedef device_delegate<void (palette_device &)> palette_init_delegate;
-/***************************************************************************
- INLINE FUNCTIONS
-***************************************************************************/
-/*-------------------------------------------------
- palette_set_color - set a single palette
- entry
--------------------------------------------------*/
+// ======================> raw_to_rgb_converter
-INLINE void palette_set_color(running_machine &machine, pen_t pen, rgb_t rgb)
+class raw_to_rgb_converter
{
- machine.palette->entry_set_color(pen, rgb);
-}
-
-
-/*-------------------------------------------------
- palette_set_color_rgb - set a single palette
- entry with individual R,G,B components
--------------------------------------------------*/
-
-INLINE void palette_set_color_rgb(running_machine &machine, pen_t pen, UINT8 r, UINT8 g, UINT8 b)
+ // helper function
+ typedef rgb_t (*raw_to_rgb_func)(UINT32 raw);
+
+public:
+ // constructor
+ raw_to_rgb_converter(int bytes_per_entry = 0, raw_to_rgb_func func = NULL)
+ : m_bytes_per_entry(bytes_per_entry),
+ m_func(func) { }
+
+ // getters
+ int bytes_per_entry() const { return m_bytes_per_entry; }
+
+ // helpers
+ rgb_t operator()(UINT32 raw) const { return (*m_func)(raw); }
+
+ // generic raw-to-RGB conversion helpers
+ template<int _RedBits, int _GreenBits, int _BlueBits, int _RedShift, int _GreenShift, int _BlueShift>
+ static rgb_t standard_rgb_decoder(UINT32 raw)
+ {
+ UINT8 r = palexpand<_RedBits>(raw >> _RedShift);
+ UINT8 g = palexpand<_GreenBits>(raw >> _GreenShift);
+ UINT8 b = palexpand<_BlueBits>(raw >> _BlueShift);
+ return rgb_t(r, g, b);
+ }
+ template<int _IntBits, int _RedBits, int _GreenBits, int _BlueBits, int _IntShift, int _RedShift, int _GreenShift, int _BlueShift>
+ static rgb_t standard_irgb_decoder(UINT32 raw)
+ {
+ UINT8 i = palexpand<_IntBits>(raw >> _IntShift);
+ UINT8 r = (i * palexpand<_RedBits>(raw >> _RedShift)) >> 8;
+ UINT8 g = (i * palexpand<_GreenBits>(raw >> _GreenShift)) >> 8;
+ UINT8 b = (i * palexpand<_BlueBits>(raw >> _BlueShift)) >> 8;
+ return rgb_t(r, g, b);
+ }
+
+ // other standard decoders
+ static rgb_t RRRRGGGGBBBBRGBx_decoder(UINT32 raw); // bits 3/2/1 are LSb
+ static rgb_t xRGBRRRRGGGGBBBB_decoder(UINT32 raw); // bits 14/13/12 are LSb
+
+private:
+ // internal data
+ int m_bytes_per_entry;
+ raw_to_rgb_func m_func;
+};
+
+
+// ======================> palette_device
+
+// device type definition
+extern const device_type PALETTE;
+
+class palette_device : public device_t
{
- machine.palette->entry_set_color(pen, rgb_t(r, g, b));
-}
-
-
-/*-------------------------------------------------
- palette_get_color - return a single palette
- entry
--------------------------------------------------*/
-
-INLINE rgb_t palette_get_color(running_machine &machine, pen_t pen)
-{
- return machine.palette->entry_color(pen);
-}
-
-
-/*-------------------------------------------------
- palette_set_pen_contrast - set the per-pen
- contrast factor
--------------------------------------------------*/
-
-INLINE void palette_set_pen_contrast(running_machine &machine, pen_t pen, double bright)
-{
- machine.palette->entry_set_contrast(pen, bright);
-}
-
-
-/*-------------------------------------------------
- palette_set_colors - set multiple palette
- entries from an array of rgb_t values
--------------------------------------------------*/
-
-INLINE void palette_set_colors(running_machine &machine, pen_t color_base, const rgb_t *colors, int color_count)
-{
- while (color_count--)
- machine.palette->entry_set_color(color_base++, *colors++);
-}
-
-
-#endif /* __PALETTE_H__ */
+ static const int MAX_SHADOW_PRESETS = 4;
+
+public:
+ // construction/destruction
+ palette_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // static configuration
+ static void static_set_init(device_t &device, palette_init_delegate init);
+ static void static_set_format(device_t &device, raw_to_rgb_converter raw_to_rgb);
+ static void static_set_entries(device_t &device, int entries);
+ static void static_enable_shadows(device_t &device);
+ static void static_enable_hilights(device_t &device);
+
+ // getters
+ int entries() const { return m_entries; }
+ int indirect_entries() const { return m_indirect_entry.count(); }
+ palette_t *palette() const { return m_palette; }
+ const pen_t &pen(int index) const { return m_pens[index]; }
+ const pen_t *pens() const { return m_pens; }
+ pen_t *shadow_table() const { return m_shadow_table; }
+ rgb_t pen_color(pen_t pen) { return m_palette->entry_color(pen); }
+ double pen_contrast(pen_t pen) { return m_palette->entry_contrast(pen); }
+ pen_t black_pen() const { return m_black_pen; }
+ pen_t white_pen() const { return m_white_pen; }
+ memory_array &basemem() { return m_paletteram; }
+ memory_array &extmem() { return m_paletteram_ext; }
+ bool shadows_enabled() { return m_enable_shadows; }
+ bool hilights_enabled() { return m_enable_hilights; }
+
+ // setters
+ void set_pen_color(pen_t pen, rgb_t rgb) { m_palette->entry_set_color(pen, rgb); }
+ void set_pen_color(pen_t pen, UINT8 r, UINT8 g, UINT8 b) { m_palette->entry_set_color(pen, rgb_t(r, g, b)); }
+ void set_pen_colors(pen_t color_base, const rgb_t *colors, int color_count) { while (color_count--) set_pen_color(color_base++, *colors++); }
+ void set_pen_contrast(pen_t pen, double bright) { m_palette->entry_set_contrast(pen, bright); }
+
+ // indirection (aka colortables)
+ UINT16 pen_indirect(int index) const { return m_indirect_entry[index]; }
+ rgb_t indirect_color(int index) const { return m_indirect_colors[index]; }
+ void set_indirect_color(int index, rgb_t rgb);
+ void set_pen_indirect(pen_t pen, UINT16 index);
+ UINT32 transpen_mask(gfx_element &gfx, int color, int transcolor);
+ void configure_tilemap_groups(tilemap_t &tmap, gfx_element &gfx, int transcolor);
+
+ // shadow config
+ void set_shadow_factor(double factor) { assert(m_shadow_group != 0); m_palette->group_set_contrast(m_shadow_group, factor); }
+ void set_highlight_factor(double factor) { assert(m_hilight_group != 0); m_palette->group_set_contrast(m_hilight_group, factor); }
+ void set_shadow_mode(int mode) { assert(mode >= 0 && mode < MAX_SHADOW_PRESETS); m_shadow_table = m_shadow_tables[mode].base; }
+
+ // generic read/write handlers
+ DECLARE_WRITE8_MEMBER(write);
+ DECLARE_WRITE8_MEMBER(write_ext);
+ DECLARE_WRITE16_MEMBER(write);
+ DECLARE_WRITE16_MEMBER(write_ext);
+ DECLARE_WRITE32_MEMBER(write);
+
+ // generic palette init routines
+ void palette_init_all_black(palette_device &palette);
+ void palette_init_black_and_white(palette_device &palette);
+ void palette_init_white_and_black(palette_device &palette);
+ void palette_init_monochrome_amber(palette_device &palette);
+ void palette_init_monochrome_green(palette_device &palette);
+ void palette_init_RRRRGGGGBBBB_proms(palette_device &palette);
+ void palette_init_RRRRRGGGGGBBBBB(palette_device &palette);
+ void palette_init_BBBBBGGGGGRRRRR(palette_device &palette);
+ void palette_init_RRRRRGGGGGGBBBBB(palette_device &palette);
+
+protected:
+ // device-level overrides
+ virtual void device_validity_check(validity_checker &valid) const;
+ virtual void device_start();
+ virtual void device_pre_save();
+ virtual void device_post_load();
+ virtual void device_stop();
+
+ void allocate_palette();
+ void allocate_color_tables();
+ void allocate_shadow_tables();
+
+ void update_for_write(offs_t byte_offset, int bytes_modified);
+public: // needed by konamigx
+ void set_shadow_dRGB32(int mode, int dr, int dg, int db, bool noclip);
+protected:
+ void configure_rgb_shadows(int mode, float factor);
+
+private:
+ // configuration state
+ int m_entries; // number of entries in the palette
+ bool m_enable_shadows; // are shadows enabled?
+ bool m_enable_hilights; // are hilights enabled?
+
+ // palette RAM
+ raw_to_rgb_converter m_raw_to_rgb; // format of palette RAM
+ memory_array m_paletteram; // base memory
+ memory_array m_paletteram_ext; // extended memory
+
+ // internal state
+ palette_t * m_palette; // the palette itself
+ const pen_t * m_pens; // remapped palette pen numbers
+ bitmap_format m_format; // format assumed for palette data
+ pen_t * m_shadow_table; // table for looking up a shadowed pen
+ UINT32 m_shadow_group; // index of the shadow group, or 0 if none
+ UINT32 m_hilight_group; // index of the hilight group, or 0 if none
+ pen_t m_white_pen; // precomputed white pen value
+ pen_t m_black_pen; // precomputed black pen value
+
+ // indirection state
+ dynamic_array<rgb_t> m_indirect_colors; // actual colors set for indirection
+ dynamic_array<UINT16> m_indirect_entry; // indirection values
+
+ struct shadow_table_data
+ {
+ pen_t * base; // pointer to the base of the table
+ INT16 dr; // delta red value
+ INT16 dg; // delta green value
+ INT16 db; // delta blue value
+ bool noclip; // clip?
+ };
+ shadow_table_data m_shadow_tables[MAX_SHADOW_PRESETS]; // array of shadow table data
+
+ dynamic_array<pen_t> m_save_pen; // pens for save/restore
+ dynamic_array<float> m_save_contrast; // brightness for save/restore
+
+ dynamic_array<pen_t> m_pen_array;
+ dynamic_array<pen_t> m_shadow_array;
+ dynamic_array<pen_t> m_hilight_array;
+ palette_init_delegate m_init;
+};
+
+// device type iterator
+typedef device_type_iterator<&device_creator<palette_device>, palette_device> palette_device_iterator;
+
+
+#endif // __EMUPAL_H__
diff --git a/src/emu/info.c b/src/emu/info.c
index a57240c07ff..eea9dbb9345 100644
--- a/src/emu/info.c
+++ b/src/emu/info.c
@@ -140,7 +140,6 @@ const char info_xml_creator::s_dtd_string[] =
"\t\t\t<!ATTLIST driver cocktail (good|imperfect|preliminary) #IMPLIED>\n"
"\t\t\t<!ATTLIST driver protection (good|imperfect|preliminary) #IMPLIED>\n"
"\t\t\t<!ATTLIST driver savestate (supported|unsupported) #REQUIRED>\n"
-"\t\t\t<!ATTLIST driver palettesize CDATA #REQUIRED>\n"
"\t\t<!ELEMENT device (instance*, extension*)>\n"
"\t\t\t<!ATTLIST device type CDATA #REQUIRED>\n"
"\t\t\t<!ATTLIST device tag CDATA #IMPLIED>\n"
@@ -1193,8 +1192,6 @@ void info_xml_creator::output_driver()
else
fprintf(m_output, " savestate=\"unsupported\"");
- fprintf(m_output, " palettesize=\"%d\"", m_drivlist.config().m_total_colors);
-
fprintf(m_output, "/>\n");
}
diff --git a/src/emu/machine.c b/src/emu/machine.c
index 31889a82da1..a87433f3e56 100644
--- a/src/emu/machine.c
+++ b/src/emu/machine.c
@@ -112,17 +112,11 @@ static char giant_string_buffer[65536] = { 0 };
running_machine::running_machine(const machine_config &_config, osd_interface &osd, bool exit_to_game_select)
: firstcpu(NULL),
primary_screen(NULL),
- palette(NULL),
- pens(NULL),
- colortable(NULL),
- shadow_table(NULL),
debug_flags(0),
- palette_data(NULL),
romload_data(NULL),
ui_input_data(NULL),
debugcpu_data(NULL),
generic_machine_data(NULL),
-
m_config(_config),
m_system(_config.gamedrv()),
m_osd(osd),
@@ -233,7 +227,6 @@ void running_machine::start()
config_init(*this);
m_input = auto_alloc(*this, input_manager(*this));
output_init(*this);
- palette_init(*this);
m_render = auto_alloc(*this, render_manager(*this));
generic_machine_init(*this);
diff --git a/src/emu/machine.h b/src/emu/machine.h
index 5432b0119e7..62b64295d4b 100644
--- a/src/emu/machine.h
+++ b/src/emu/machine.h
@@ -226,7 +226,6 @@ public:
// configuration helpers
device_t &add_dynamic_device(device_t &owner, device_type type, const char *tag, UINT32 clock);
- UINT32 total_colors() const { return m_config.m_total_colors; }
// immediate operations
int run(bool firstrun);
@@ -269,18 +268,11 @@ public:
// video-related information
screen_device * primary_screen; // the primary screen device, or NULL if screenless
- palette_t * palette; // global palette object
-
- // palette-related information
- 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
// debugger-related information
UINT32 debug_flags; // the current debug flags
// internal core information
- palette_private * palette_data; // internal data from palette.c
romload_private * romload_data; // internal data from romload.c
ui_input_private * ui_input_data; // internal data from uiinput.c
debugcpu_private * debugcpu_data; // internal data from debugcpu.c
diff --git a/src/emu/machine/laserdsc.c b/src/emu/machine/laserdsc.c
index 31bb217947f..03c9de14189 100644
--- a/src/emu/machine/laserdsc.c
+++ b/src/emu/machine/laserdsc.c
@@ -819,7 +819,7 @@ void laserdisc_device::init_video()
for (int index = 0; index < ARRAY_LENGTH(m_overbitmap); index++)
{
m_overbitmap[index].set_format(format, texformat);
- m_overbitmap[index].set_palette(machine().palette);
+ m_overbitmap[index].set_palette(machine().first_screen()->palette()->palette());
m_overbitmap[index].resize(m_overwidth, m_overheight);
}
diff --git a/src/emu/machine/s3c2400.c b/src/emu/machine/s3c2400.c
index e6e3ee3f4df..3256be60d1a 100644
--- a/src/emu/machine/s3c2400.c
+++ b/src/emu/machine/s3c2400.c
@@ -70,12 +70,23 @@ DEVICE_START( s3c2400 )
const device_type S3C2400 = &device_creator<s3c2400_device>;
s3c2400_device::s3c2400_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : device_t(mconfig, S3C2400, "Samsung S3C2400", tag, owner, clock, "s3c2400", __FILE__)
+ : device_t(mconfig, S3C2400, "Samsung S3C2400", tag, owner, clock, "s3c2400", __FILE__),
+ m_palette(*this)
{
m_token = global_alloc_clear(s3c24xx_t);
}
//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void s3c2400_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<s3c2400_device &>(device).m_palette.set_tag(tag);
+}
+
+//-------------------------------------------------
// device_config_complete - perform any
// operations now that the configuration is
// complete
@@ -91,6 +102,8 @@ void s3c2400_device::device_config_complete()
void s3c2400_device::device_start()
{
+ s3c24xx_t *s3c24xx = get_token(this);
+ s3c24xx->m_palette = m_palette;
DEVICE_START_NAME( s3c2400 )(this);
}
diff --git a/src/emu/machine/s3c2400.h b/src/emu/machine/s3c2400.h
index 8a8edf08490..ec27282b86d 100644
--- a/src/emu/machine/s3c2400.h
+++ b/src/emu/machine/s3c2400.h
@@ -14,9 +14,10 @@
#define S3C2400_TAG "s3c2400"
-#define MCFG_S3C2400_ADD(_tag, _clock, _config) \
+#define MCFG_S3C2400_ADD(_tag, _clock, _config, _palette_tag) \
MCFG_DEVICE_ADD(_tag, S3C2400, _clock) \
- MCFG_DEVICE_CONFIG(_config)
+ MCFG_DEVICE_CONFIG(_config) \
+ s3c2400_device::static_set_palette_tag(*device, "^" _palette_tag);
#define S3C2400_INTERFACE(name) \
const s3c2400_interface(name) =
@@ -38,6 +39,9 @@ public:
s3c2400_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
~s3c2400_device() { global_free(m_token); }
+ // static configuration
+ static void static_set_palette_tag(device_t &device, const char *tag);
+
// access to legacy token
void *token() const { assert(m_token != NULL); return m_token; }
@@ -48,6 +52,7 @@ public:
private:
// internal state
void *m_token;
+ required_device<palette_device> m_palette;
public:
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -752,7 +757,7 @@ struct s3c24xx_t
devcb_resolved_write8 address_w;
devcb_resolved_read8 nand_data_r;
devcb_resolved_write8 nand_data_w;
-
+ palette_device *m_palette;
};
#endif
diff --git a/src/emu/machine/s3c2410.c b/src/emu/machine/s3c2410.c
index a6e0a373305..774077f8bcf 100644
--- a/src/emu/machine/s3c2410.c
+++ b/src/emu/machine/s3c2410.c
@@ -73,12 +73,23 @@ DEVICE_START( s3c2410 )
const device_type S3C2410 = &device_creator<s3c2410_device>;
s3c2410_device::s3c2410_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : device_t(mconfig, S3C2410, "Samsung S3C2410", tag, owner, clock, "s3c2410", __FILE__)
+ : device_t(mconfig, S3C2410, "Samsung S3C2410", tag, owner, clock, "s3c2410", __FILE__),
+ m_palette(*this)
{
m_token = global_alloc_clear(s3c24xx_t);
}
//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void s3c2410_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<s3c2410_device &>(device).m_palette.set_tag(tag);
+}
+
+//-------------------------------------------------
// device_config_complete - perform any
// operations now that the configuration is
// complete
@@ -94,6 +105,8 @@ void s3c2410_device::device_config_complete()
void s3c2410_device::device_start()
{
+ s3c24xx_t *s3c24xx = get_token(this);
+ s3c24xx->m_palette = m_palette;
DEVICE_START_NAME( s3c2410 )(this);
}
diff --git a/src/emu/machine/s3c2410.h b/src/emu/machine/s3c2410.h
index fdc142dfe76..139dad06cc1 100644
--- a/src/emu/machine/s3c2410.h
+++ b/src/emu/machine/s3c2410.h
@@ -14,9 +14,10 @@
#define S3C2410_TAG "s3c2410"
-#define MCFG_S3C2410_ADD(_tag, _clock, _config) \
+#define MCFG_S3C2410_ADD(_tag, _clock, _config, _palette_tag) \
MCFG_DEVICE_ADD(_tag, S3C2410, _clock) \
- MCFG_DEVICE_CONFIG(_config)
+ MCFG_DEVICE_CONFIG(_config) \
+ s3c2410_device::static_set_palette_tag(*device, "^" _palette_tag);
#define S3C2410_INTERFACE(name) \
const s3c2410_interface(name) =
@@ -46,6 +47,9 @@ public:
s3c2410_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
~s3c2410_device() { global_free(m_token); }
+ // static configuration
+ static void static_set_palette_tag(device_t &device, const char *tag);
+
// access to legacy token
void *token() const { assert(m_token != NULL); return m_token; }
// device-level overrides
@@ -55,6 +59,7 @@ public:
private:
// internal state
void *m_token;
+ required_device<palette_device> m_palette;
public:
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -899,7 +904,7 @@ struct s3c24xx_t
devcb_resolved_write8 address_w;
devcb_resolved_read8 nand_data_r;
devcb_resolved_write8 nand_data_w;
-
+ palette_device *m_palette;
};
#endif
diff --git a/src/emu/machine/s3c2440.c b/src/emu/machine/s3c2440.c
index 6d072e78f69..7019ce89bf8 100644
--- a/src/emu/machine/s3c2440.c
+++ b/src/emu/machine/s3c2440.c
@@ -75,12 +75,24 @@ DEVICE_START( s3c2440 )
const device_type S3C2440 = &device_creator<s3c2440_device>;
s3c2440_device::s3c2440_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : device_t(mconfig, S3C2440, "Samsung S3C2440", tag, owner, clock, "s3c2440", __FILE__)
+ : device_t(mconfig, S3C2440, "Samsung S3C2440", tag, owner, clock, "s3c2440", __FILE__),
+ m_palette(*this)
{
m_token = global_alloc_clear(s3c24xx_t);
}
//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void s3c2440_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<s3c2440_device &>(device).m_palette.set_tag(tag);
+}
+
+
+//-------------------------------------------------
// device_config_complete - perform any
// operations now that the configuration is
// complete
@@ -96,6 +108,8 @@ void s3c2440_device::device_config_complete()
void s3c2440_device::device_start()
{
+ s3c24xx_t *s3c24xx = get_token(this);
+ s3c24xx->m_palette = m_palette;
DEVICE_START_NAME( s3c2440 )(this);
}
diff --git a/src/emu/machine/s3c2440.h b/src/emu/machine/s3c2440.h
index a88e90b30a0..ebb8f087e6d 100644
--- a/src/emu/machine/s3c2440.h
+++ b/src/emu/machine/s3c2440.h
@@ -13,9 +13,10 @@
#define S3C2440_TAG "s3c2440"
-#define MCFG_S3C2440_ADD(_tag, _clock, _config) \
+#define MCFG_S3C2440_ADD(_tag, _clock, _config, _palette_tag) \
MCFG_DEVICE_ADD(_tag, S3C2440, _clock) \
- MCFG_DEVICE_CONFIG(_config)
+ MCFG_DEVICE_CONFIG(_config) \
+ s3c2440_device::static_set_palette_tag(*device, "^" _palette_tag);
#define S3C2440_INTERFACE(name) \
const s3c2440_interface(name) =
@@ -46,6 +47,9 @@ public:
s3c2440_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
~s3c2440_device() { global_free(m_token); }
+ // static configuration
+ static void static_set_palette_tag(device_t &device, const char *tag);
+
// access to legacy token
void *token() const { assert(m_token != NULL); return m_token; }
protected:
@@ -56,6 +60,7 @@ protected:
private:
// internal state
void *m_token;
+ required_device<palette_device> m_palette;
public:
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -971,6 +976,7 @@ struct s3c24xx_t
devcb_resolved_write8 address_w;
devcb_resolved_read8 nand_data_r;
devcb_resolved_write8 nand_data_w;
+ palette_device *m_palette;
};
#endif
diff --git a/src/emu/machine/s3c24xx.c b/src/emu/machine/s3c24xx.c
index 337087c47c2..af662472ad6 100644
--- a/src/emu/machine/s3c24xx.c
+++ b/src/emu/machine/s3c24xx.c
@@ -624,7 +624,7 @@ static void s3c24xx_lcd_render_tft_01( device_t *device)
UINT32 data = s3c24xx_lcd_dma_read( device);
for (int j = 0; j < 32; j++)
{
- *scanline++ = palette_get_color( device->machine(), (data >> 31) & 0x01);
+ *scanline++ = s3c24xx->m_palette->pen_color((data >> 31) & 0x01);
data = data << 1;
s3c24xx->lcd.hpos++;
if (s3c24xx->lcd.hpos >= s3c24xx->lcd.hpos_min + (s3c24xx->lcd.pagewidth_max << 4))
@@ -648,7 +648,7 @@ static void s3c24xx_lcd_render_tft_02( device_t *device)
UINT32 data = s3c24xx_lcd_dma_read( device);
for (int j = 0; j < 16; j++)
{
- *scanline++ = palette_get_color( device->machine(), (data >> 30) & 0x03);
+ *scanline++ = s3c24xx->m_palette->pen_color((data >> 30) & 0x03);
data = data << 2;
s3c24xx->lcd.hpos++;
if (s3c24xx->lcd.hpos >= s3c24xx->lcd.hpos_min + (s3c24xx->lcd.pagewidth_max << 3))
@@ -672,7 +672,7 @@ static void s3c24xx_lcd_render_tft_04( device_t *device)
UINT32 data = s3c24xx_lcd_dma_read( device);
for (int j = 0; j < 8; j++)
{
- *scanline++ = palette_get_color( device->machine(), (data >> 28) & 0x0F);
+ *scanline++ = s3c24xx->m_palette->pen_color((data >> 28) & 0x0F);
data = data << 4;
s3c24xx->lcd.hpos++;
if (s3c24xx->lcd.hpos >= s3c24xx->lcd.hpos_min + (s3c24xx->lcd.pagewidth_max << 2))
@@ -696,7 +696,7 @@ static void s3c24xx_lcd_render_tft_08( device_t *device)
UINT32 data = s3c24xx_lcd_dma_read( device);
for (int j = 0; j < 4; j++)
{
- *scanline++ = palette_get_color( device->machine(), (data >> 24) & 0xFF);
+ *scanline++ = s3c24xx->m_palette->pen_color((data >> 24) & 0xFF);
data = data << 8;
s3c24xx->lcd.hpos++;
if (s3c24xx->lcd.hpos >= s3c24xx->lcd.hpos_min + (s3c24xx->lcd.pagewidth_max << 1))
@@ -1040,7 +1040,7 @@ static WRITE32_DEVICE_HANDLER( s3c24xx_lcd_palette_w )
{
verboselog( device->machine(), 0, "s3c24xx_lcd_palette_w: unknown mask %08x\n", mem_mask);
}
- palette_set_color( device->machine(), offset, s3c24xx_get_color_tft_16( device, data & 0xFFFF));
+ s3c24xx->m_palette->set_pen_color( offset, s3c24xx_get_color_tft_16( device, data & 0xFFFF));
}
/* Clock & Power Management */
diff --git a/src/emu/machine/tc009xlvc.c b/src/emu/machine/tc009xlvc.c
index c80c38b2f11..848557f99e6 100644
--- a/src/emu/machine/tc009xlvc.c
+++ b/src/emu/machine/tc009xlvc.c
@@ -46,7 +46,7 @@ WRITE8_MEMBER(tc0091lvc_device::tc0091lvc_paletteram_w)
g |= ((i & 2) >> 1);
r |= (i & 1);
- palette_set_color_rgb(machine(), offset / 2, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(offset / 2, pal5bit(r), pal5bit(g), pal5bit(b));
}
}
@@ -168,7 +168,8 @@ tc0091lvc_device::tc0091lvc_device(const machine_config &mconfig, const char *ta
: device_t(mconfig, TC0091LVC, "TC0091LVC", tag, owner, clock, "tc0091lvc", __FILE__),
device_memory_interface(mconfig, *this),
m_space_config("tc0091lvc", ENDIANNESS_LITTLE, 8,20, 0, NULL, *ADDRESS_MAP_NAME(tc0091lvc_map8)),
- m_gfxdecode(*this)
+ m_gfxdecode(*this),
+ m_palette(*this)
{
}
@@ -183,6 +184,16 @@ void tc0091lvc_device::static_set_gfxdecode_tag(device_t &device, const char *ta
}
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void tc0091lvc_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<tc0091lvc_device &>(device).m_palette.set_tag(tag);
+}
+
void tc0091lvc_device::device_config_complete()
{
@@ -289,7 +300,7 @@ void tc0091lvc_device::device_start()
//printf("m_gfx_index %d\n", m_gfx_index);
- m_gfxdecode->set_gfx(m_gfx_index, auto_alloc(machine(), gfx_element(machine(), char_layout, (UINT8 *)m_pcg_ram, machine().total_colors() / 16, 0)));
+ m_gfxdecode->set_gfx(m_gfx_index, auto_alloc(machine(), gfx_element(machine(), char_layout, (UINT8 *)m_pcg_ram, m_palette->entries() / 16, 0)));
}
void tc0091lvc_device::device_reset()
@@ -328,7 +339,7 @@ void tc0091lvc_device::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap
fy = !fy;
}
- gfx->prio_transpen(bitmap,cliprect,spr_offs,col,fx,fy,x,y,screen.priority(),(col & 0x08) ? 0xaa : 0x00,0);
+ gfx->prio_transpen(m_palette,bitmap,cliprect,spr_offs,col,fx,fy,x,y,screen.priority(),(col & 0x08) ? 0xaa : 0x00,0);
}
}
@@ -338,7 +349,7 @@ UINT32 tc0091lvc_device::screen_update(screen_device &screen, bitmap_ind16 &bitm
int x,y;
UINT8 global_flip;
- bitmap.fill(get_black_pen(screen.machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
if((m_vregs[4] & 0x20) == 0)
return 0;
@@ -359,7 +370,7 @@ UINT32 tc0091lvc_device::screen_update(screen_device &screen, bitmap_ind16 &bitm
res_y = (global_flip) ? 256-y : y;
if(screen.visible_area().contains(res_x, res_y))
- bitmap.pix16(res_y, res_x) = screen.machine().pens[m_bitmap_ram[count]];
+ bitmap.pix16(res_y, res_x) = m_palette->pen(m_bitmap_ram[count]);
count++;
}
diff --git a/src/emu/machine/tc009xlvc.h b/src/emu/machine/tc009xlvc.h
index e374f7603e6..66c57c3cdf5 100644
--- a/src/emu/machine/tc009xlvc.h
+++ b/src/emu/machine/tc009xlvc.h
@@ -19,6 +19,7 @@ public:
// static configuration
static void static_set_gfxdecode_tag(device_t &device, const char *tag);
+ static void static_set_palette_tag(device_t &device, const char *tag);
DECLARE_READ8_MEMBER( vregs_r );
DECLARE_WRITE8_MEMBER( vregs_w );
@@ -80,6 +81,7 @@ protected:
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const;
address_space_config m_space_config;
required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
};
extern const device_type TC0091LVC;
@@ -87,5 +89,8 @@ extern const device_type TC0091LVC;
#define MCFG_TC0091LVC_GFXDECODE(_gfxtag) \
tc0091lvc_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+#define MCFG_TC0091LVC_PALETTE(_palette_tag) \
+ tc0091lvc_device::static_set_palette_tag(*device, "^" _palette_tag);
+
#endif
diff --git a/src/emu/mconfig.c b/src/emu/mconfig.c
index 31b2c098851..3f1a0b15f49 100644
--- a/src/emu/mconfig.c
+++ b/src/emu/mconfig.c
@@ -28,7 +28,6 @@ machine_config::machine_config(const game_driver &gamedrv, emu_options &options)
m_nvram_handler(NULL),
m_memcard_handler(NULL),
m_video_attributes(0),
- m_total_colors(0),
m_default_layout(NULL),
m_gamedrv(gamedrv),
m_options(options),
diff --git a/src/emu/mconfig.h b/src/emu/mconfig.h
index 272bd86460d..4e8e6e79cf7 100644
--- a/src/emu/mconfig.h
+++ b/src/emu/mconfig.h
@@ -37,12 +37,6 @@
// indicates VIDEO_UPDATE will add container bits its
#define VIDEO_SELF_RENDER 0x0008
-// automatically extend the palette creating a darker copy for shadows
-#define VIDEO_HAS_SHADOWS 0x0010
-
-// automatically extend the palette creating a brighter copy for highlights
-#define VIDEO_HAS_HIGHLIGHTS 0x0020
-
// force VIDEO_UPDATE to be called even for skipped frames
#define VIDEO_ALWAYS_UPDATE 0x0080
@@ -117,7 +111,6 @@ public:
// other parameters
UINT32 m_video_attributes; // flags describing the video system
- UINT32 m_total_colors; // total number of colors in the palette
const char * m_default_layout; // default layout for this machine
// helpers during configuration; not for general use
@@ -198,8 +191,6 @@ ATTR_COLD device_t *MACHINE_CONFIG_NAME(_name)(machine_config &config, device_t
// core video parameters
#define MCFG_VIDEO_ATTRIBUTES(_flags) \
config.m_video_attributes = _flags;
-#define MCFG_PALETTE_LENGTH(_length) \
- config.m_total_colors = _length;
#define MCFG_DEFAULT_LAYOUT(_layout) \
config.m_default_layout = &(_layout)[0];
diff --git a/src/emu/render.c b/src/emu/render.c
index 57b31a12a70..91f87f0c6e7 100644
--- a/src/emu/render.c
+++ b/src/emu/render.c
@@ -612,18 +612,18 @@ render_container::render_container(render_manager &manager, screen_device *scree
empty();
// if we have a screen, read and apply the options
- if (screen != NULL)
+ if (m_screen != NULL)
{
// set the initial orientation and brightness/contrast/gamma
m_user.m_orientation = manager.machine().system().flags & ORIENTATION_MASK;
m_user.m_brightness = manager.machine().options().brightness();
m_user.m_contrast = manager.machine().options().contrast();
m_user.m_gamma = manager.machine().options().gamma();
+ // allocate a client to the main palette
+ if (m_screen->palette() != NULL)
+ m_palclient = global_alloc(palette_client(*m_screen->palette()->palette()));
}
- // allocate a client to the main palette
- if (manager.machine().palette != NULL)
- m_palclient = global_alloc(palette_client(*manager.machine().palette));
recompute_lookups();
}
diff --git a/src/emu/save.h b/src/emu/save.h
index 7841449a6e8..dfba849fcb6 100644
--- a/src/emu/save.h
+++ b/src/emu/save.h
@@ -297,5 +297,17 @@ inline void save_manager::save_item(const char *module, const char *tag, int ind
save_memory(module, tag, index, name, &value[0], sizeof(UINT64), value.count());
}
+template<>
+inline void save_manager::save_item(const char *module, const char *tag, int index, dynamic_array<float> &value, const char *name)
+{
+ save_memory(module, tag, index, name, &value[0], sizeof(float), value.count());
+}
+
+template<>
+inline void save_manager::save_item(const char *module, const char *tag, int index, dynamic_array<double> &value, const char *name)
+{
+ save_memory(module, tag, index, name, &value[0], sizeof(double), value.count());
+}
+
#endif /* __SAVE_H__ */
diff --git a/src/emu/screen.c b/src/emu/screen.c
index 4acde133dab..c23c879f833 100644
--- a/src/emu/screen.c
+++ b/src/emu/screen.c
@@ -53,10 +53,13 @@ screen_device::screen_device(const machine_config &mconfig, const char *tag, dev
m_yoffset(0.0f),
m_xscale(1.0f),
m_yscale(1.0f),
+ m_palette_tag(NULL),
+ m_palette_base(0),
m_container(NULL),
m_width(100),
m_height(100),
m_visarea(0, 99, 0, 99),
+ m_palette(NULL),
m_curbitmap(0),
m_curtexture(0),
m_changed(true),
@@ -213,6 +216,19 @@ void screen_device::static_set_screen_vblank(device_t &device, screen_vblank_del
//-------------------------------------------------
+// static_set_palette - set the screen palette
+// configuration
+//-------------------------------------------------
+
+void screen_device::static_set_palette(device_t &device, const char *palette, int base)
+{
+ screen_device &screen = downcast<screen_device &>(device);
+ screen.m_palette_tag = palette;
+ screen.m_palette_base = base;
+}
+
+
+//-------------------------------------------------
// device_validity_check - verify device
// configuration
//-------------------------------------------------
@@ -237,6 +253,10 @@ void screen_device::device_validity_check(validity_checker &valid) const
// check for zero frame rate
if (m_refresh == 0)
mame_printf_error("Invalid (zero) refresh rate\n");
+
+ // check for valid palette
+ if (m_palette_tag != NULL && siblingdevice(m_palette_tag) == NULL)
+ mame_printf_error("Unable to location specified palette '%s'\n", m_palette_tag);
}
@@ -250,9 +270,26 @@ void screen_device::device_start()
m_screen_update_ind16.bind_relative_to(*owner());
m_screen_update_rgb32.bind_relative_to(*owner());
m_screen_vblank.bind_relative_to(*owner());
+
+ // find our palette: first find the specified device, otherwise look for a subdevice
+ // named 'palette'; finally, look for a global 'palette' at the root
+ if (m_palette_tag != NULL)
+ m_palette = siblingdevice<palette_device>(m_palette_tag);
+ if (m_palette == NULL)
+ m_palette = subdevice<palette_device>("palette");
+ if (m_palette == NULL)
+ m_palette = subdevice<palette_device>(":palette");
+
+ // if we have a palette and it's not started, wait for it
+ if (m_palette != NULL && !m_palette->started())
+ throw device_missing_dependencies();
// configure bitmap formats and allocate screen bitmaps
texture_format texformat = !m_screen_update_ind16.isnull() ? TEXFORMAT_PALETTE16 : TEXFORMAT_RGB32;
+
+ if (m_palette == NULL && texformat == TEXFORMAT_PALETTE16)
+ throw emu_fatalerror("Screen does not have palette defined\n");
+
for (int index = 0; index < ARRAY_LENGTH(m_bitmap); index++)
{
m_bitmap[index].set_format(format(), texformat);
@@ -495,6 +532,11 @@ void screen_device::realloc_screen_bitmaps()
item->m_bitmap.resize(effwidth, effheight);
// re-set up textures
+ if (m_palette != NULL)
+ {
+ m_bitmap[0].set_palette(m_palette->palette());
+ m_bitmap[1].set_palette(m_palette->palette());
+ }
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());
}
@@ -752,7 +794,8 @@ void screen_device::register_screen_bitmap(bitmap_t &bitmap)
// if allocating now, just do it
bitmap.allocate(width(), height());
- bitmap.set_palette(machine().palette);
+ if (m_palette != NULL)
+ bitmap.set_palette(m_palette->palette());
}
@@ -880,7 +923,7 @@ void screen_device::update_burnin()
{
UINT64 *dst = &m_burnin.pix64(y);
const UINT16 *src = &srcbitmap.pix16(srcy >> 16);
- const rgb_t *palette = machine().palette->entry_list_adjusted();
+ const rgb_t *palette = m_palette->palette()->entry_list_adjusted();
for (x = 0, srcx = xstart; x < dstwidth; x++, srcx += xstep)
{
rgb_t pixel = palette[src[srcx >> 16]];
diff --git a/src/emu/screen.h b/src/emu/screen.h
index 4f44dbec031..428fe092a00 100644
--- a/src/emu/screen.h
+++ b/src/emu/screen.h
@@ -165,11 +165,12 @@ public:
static void static_set_screen_update(device_t &device, screen_update_ind16_delegate callback);
static void static_set_screen_update(device_t &device, screen_update_rgb32_delegate callback);
static void static_set_screen_vblank(device_t &device, screen_vblank_delegate callback);
+ static void static_set_palette(device_t &device, const char *palette, int base);
// information getters
render_container &container() const { assert(m_container != NULL); return *m_container; }
bitmap_ind8 &priority() { return m_priority; }
-
+ palette_device *palette() { return m_palette; }
// dynamic configuration
void configure(int width, int height, const rectangle &visarea, attoseconds_t frame_period);
void reset_origin(int beamy = 0, int beamx = 0);
@@ -245,6 +246,8 @@ private:
screen_update_ind16_delegate m_screen_update_ind16; // screen update callback (16-bit palette)
screen_update_rgb32_delegate m_screen_update_rgb32; // screen update callback (32-bit RGB)
screen_vblank_delegate m_screen_vblank; // screen vblank callback
+ const char * m_palette_tag; // tag to our palette
+ int m_palette_base; // base of our palette
// internal state
render_container * m_container; // pointer to our container
@@ -255,6 +258,7 @@ private:
rectangle m_visarea; // current visible area (HBLANK end/start, VBLANK end/start)
// textures and bitmaps
+ palette_device * m_palette; // our palette
texture_format m_texformat; // texture format
render_texture * m_texture[2]; // 2x textures for the screen bitmap
screen_bitmap m_bitmap[2]; // 2x bitmaps for rendering
@@ -366,6 +370,9 @@ typedef device_type_iterator<&device_creator<screen_device>, screen_device> scre
screen_device::static_set_screen_vblank(*device, screen_vblank_delegate(&_class::_method, #_class "::" #_method, NULL, (_class *)0));
#define MCFG_SCREEN_VBLANK_DEVICE(_device, _class, _method) \
screen_device::static_set_screen_vblank(*device, screen_vblank_delegate(&_class::_method, #_class "::" #_method, _device, (_class *)0));
+#define MCFG_SCREEN_PALETTE(_palette_tag) \
+ screen_device::static_set_palette(*device, _palette_tag, 0);
+
//**************************************************************************
diff --git a/src/emu/sound/mos6560.c b/src/emu/sound/mos6560.c
index e54e0ce2942..0c2704a2fa1 100644
--- a/src/emu/sound/mos6560.c
+++ b/src/emu/sound/mos6560.c
@@ -124,7 +124,7 @@
// VICE palette
-static const rgb_t PALETTE[] =
+static const rgb_t PALETTE_MOS[] =
{
rgb_t(0x00, 0x00, 0x00),
rgb_t(0xff, 0xff, 0xff),
@@ -177,14 +177,14 @@ void mos6560_device::draw_character( int ybegin, int yend, int ch, int yoff, int
{
code = read_videoram((m_chargenaddr + ch * m_charheight + y) & 0x3fff);
- m_bitmap.pix32(y + yoff, xoff + 0) = PALETTE[color[code >> 7]];
- m_bitmap.pix32(y + yoff, xoff + 1) = PALETTE[color[(code >> 6) & 1]];
- m_bitmap.pix32(y + yoff, xoff + 2) = PALETTE[color[(code >> 5) & 1]];
- m_bitmap.pix32(y + yoff, xoff + 3) = PALETTE[color[(code >> 4) & 1]];
- m_bitmap.pix32(y + yoff, xoff + 4) = PALETTE[color[(code >> 3) & 1]];
- m_bitmap.pix32(y + yoff, xoff + 5) = PALETTE[color[(code >> 2) & 1]];
- m_bitmap.pix32(y + yoff, xoff + 6) = PALETTE[color[(code >> 1) & 1]];
- m_bitmap.pix32(y + yoff, xoff + 7) = PALETTE[color[code & 1]];
+ m_bitmap.pix32(y + yoff, xoff + 0) = PALETTE_MOS[color[code >> 7]];
+ m_bitmap.pix32(y + yoff, xoff + 1) = PALETTE_MOS[color[(code >> 6) & 1]];
+ m_bitmap.pix32(y + yoff, xoff + 2) = PALETTE_MOS[color[(code >> 5) & 1]];
+ m_bitmap.pix32(y + yoff, xoff + 3) = PALETTE_MOS[color[(code >> 4) & 1]];
+ m_bitmap.pix32(y + yoff, xoff + 4) = PALETTE_MOS[color[(code >> 3) & 1]];
+ m_bitmap.pix32(y + yoff, xoff + 5) = PALETTE_MOS[color[(code >> 2) & 1]];
+ m_bitmap.pix32(y + yoff, xoff + 6) = PALETTE_MOS[color[(code >> 1) & 1]];
+ m_bitmap.pix32(y + yoff, xoff + 7) = PALETTE_MOS[color[code & 1]];
}
}
@@ -202,13 +202,13 @@ void mos6560_device::draw_character_multi( int ybegin, int yend, int ch, int yof
code = read_videoram((m_chargenaddr + ch * m_charheight + y) & 0x3fff);
m_bitmap.pix32(y + yoff, xoff + 0) =
- m_bitmap.pix32(y + yoff, xoff + 1) = PALETTE[color[code >> 6]];
+ m_bitmap.pix32(y + yoff, xoff + 1) = PALETTE_MOS[color[code >> 6]];
m_bitmap.pix32(y + yoff, xoff + 2) =
- m_bitmap.pix32(y + yoff, xoff + 3) = PALETTE[color[(code >> 4) & 3]];
+ m_bitmap.pix32(y + yoff, xoff + 3) = PALETTE_MOS[color[(code >> 4) & 3]];
m_bitmap.pix32(y + yoff, xoff + 4) =
- m_bitmap.pix32(y + yoff, xoff + 5) = PALETTE[color[(code >> 2) & 3]];
+ m_bitmap.pix32(y + yoff, xoff + 5) = PALETTE_MOS[color[(code >> 2) & 3]];
m_bitmap.pix32(y + yoff, xoff + 6) =
- m_bitmap.pix32(y + yoff, xoff + 7) = PALETTE[color[code & 3]];
+ m_bitmap.pix32(y + yoff, xoff + 7) = PALETTE_MOS[color[code & 3]];
}
}
@@ -230,7 +230,7 @@ void mos6560_device::drawlines( int first, int last )
for (line = first; (line < m_ypos) && (line < last); line++)
{
for (j = 0; j < m_total_xsize; j++)
- m_bitmap.pix32(line, j) = PALETTE[m_framecolor];
+ m_bitmap.pix32(line, j) = PALETTE_MOS[m_framecolor];
}
for (vline = line - m_ypos; (line < last) && (line < m_ypos + m_ysize);)
@@ -254,7 +254,7 @@ void mos6560_device::drawlines( int first, int last )
{
for (i = ybegin; i <= yend; i++)
for (j = 0; j < m_xpos; j++)
- m_bitmap.pix32(yoff + i, j) = PALETTE[m_framecolor];
+ m_bitmap.pix32(yoff + i, j) = PALETTE_MOS[m_framecolor];
}
for (xoff = m_xpos; (xoff < m_xpos + m_xsize) && (xoff < m_total_xsize); xoff += 8, offs++)
@@ -301,7 +301,7 @@ void mos6560_device::drawlines( int first, int last )
{
for (i = ybegin; i <= yend; i++)
for (j = xoff; j < m_total_xsize; j++)
- m_bitmap.pix32(yoff + i, j) = PALETTE[m_framecolor];
+ m_bitmap.pix32(yoff + i, j) = PALETTE_MOS[m_framecolor];
}
if (m_matrix8x16)
@@ -318,7 +318,7 @@ void mos6560_device::drawlines( int first, int last )
for (; line < last; line++)
for (j = 0; j < m_total_xsize; j++)
- m_bitmap.pix32(line, j) = PALETTE[m_framecolor];
+ m_bitmap.pix32(line, j) = PALETTE_MOS[m_framecolor];
}
diff --git a/src/emu/sound/mos7360.c b/src/emu/sound/mos7360.c
index a6fc755f571..e420c100265 100644
--- a/src/emu/sound/mos7360.c
+++ b/src/emu/sound/mos7360.c
@@ -84,7 +84,7 @@
#define TED7360_VRETRACERATE ((m_clock == TED7360PAL_CLOCK) ? TED7360PAL_VRETRACERATE : TED7360NTSC_VRETRACERATE)
#define TED7360_LINES ((m_clock == TED7360PAL_CLOCK) ? TED7360PAL_LINES : TED7360NTSC_LINES)
-static const rgb_t PALETTE[] =
+static const rgb_t PALETTE_MOS[] =
{
/* black, white, red, cyan */
/* purple, green, blue, yellow */
@@ -488,14 +488,14 @@ void mos7360_device::draw_character(int ybegin, int yend, int ch, int yoff, int
else
code = read_ram(m_chargenaddr + ch * 8 + y);
- m_bitmap.pix32(y + yoff, 0 + xoff) = PALETTE[color[code >> 7]];
- m_bitmap.pix32(y + yoff, 1 + xoff) = PALETTE[color[(code >> 6) & 1]];
- m_bitmap.pix32(y + yoff, 2 + xoff) = PALETTE[color[(code >> 5) & 1]];
- m_bitmap.pix32(y + yoff, 3 + xoff) = PALETTE[color[(code >> 4) & 1]];
- m_bitmap.pix32(y + yoff, 4 + xoff) = PALETTE[color[(code >> 3) & 1]];
- m_bitmap.pix32(y + yoff, 5 + xoff) = PALETTE[color[(code >> 2) & 1]];
- m_bitmap.pix32(y + yoff, 6 + xoff) = PALETTE[color[(code >> 1) & 1]];
- m_bitmap.pix32(y + yoff, 7 + xoff) = PALETTE[color[code & 1]];
+ m_bitmap.pix32(y + yoff, 0 + xoff) = PALETTE_MOS[color[code >> 7]];
+ m_bitmap.pix32(y + yoff, 1 + xoff) = PALETTE_MOS[color[(code >> 6) & 1]];
+ m_bitmap.pix32(y + yoff, 2 + xoff) = PALETTE_MOS[color[(code >> 5) & 1]];
+ m_bitmap.pix32(y + yoff, 3 + xoff) = PALETTE_MOS[color[(code >> 4) & 1]];
+ m_bitmap.pix32(y + yoff, 4 + xoff) = PALETTE_MOS[color[(code >> 3) & 1]];
+ m_bitmap.pix32(y + yoff, 5 + xoff) = PALETTE_MOS[color[(code >> 2) & 1]];
+ m_bitmap.pix32(y + yoff, 6 + xoff) = PALETTE_MOS[color[(code >> 1) & 1]];
+ m_bitmap.pix32(y + yoff, 7 + xoff) = PALETTE_MOS[color[code & 1]];
}
}
@@ -511,13 +511,13 @@ void mos7360_device::draw_character_multi(int ybegin, int yend, int ch, int yoff
code = read_ram(m_chargenaddr + ch * 8 + y);
m_bitmap.pix32(y + yoff, 0 + xoff) =
- m_bitmap.pix32(y + yoff, 1 + xoff) = PALETTE[m_multi[code >> 6]];
+ m_bitmap.pix32(y + yoff, 1 + xoff) = PALETTE_MOS[m_multi[code >> 6]];
m_bitmap.pix32(y + yoff, 2 + xoff) =
- m_bitmap.pix32(y + yoff, 3 + xoff) = PALETTE[m_multi[(code >> 4) & 3]];
+ m_bitmap.pix32(y + yoff, 3 + xoff) = PALETTE_MOS[m_multi[(code >> 4) & 3]];
m_bitmap.pix32(y + yoff, 4 + xoff) =
- m_bitmap.pix32(y + yoff, 5 + xoff) = PALETTE[m_multi[(code >> 2) & 3]];
+ m_bitmap.pix32(y + yoff, 5 + xoff) = PALETTE_MOS[m_multi[(code >> 2) & 3]];
m_bitmap.pix32(y + yoff, 6 + xoff) =
- m_bitmap.pix32(y + yoff, 7 + xoff) = PALETTE[m_multi[code & 3]];
+ m_bitmap.pix32(y + yoff, 7 + xoff) = PALETTE_MOS[m_multi[code & 3]];
}
}
@@ -529,14 +529,14 @@ void mos7360_device::draw_bitmap(int ybegin, int yend, int ch, int yoff, int xof
{
code = read_ram(m_bitmapaddr + ch * 8 + y);
- m_bitmap.pix32(y + yoff, 0 + xoff) = PALETTE[m_c16_bitmap[code >> 7]];
- m_bitmap.pix32(y + yoff, 1 + xoff) = PALETTE[m_c16_bitmap[(code >> 6) & 1]];
- m_bitmap.pix32(y + yoff, 2 + xoff) = PALETTE[m_c16_bitmap[(code >> 5) & 1]];
- m_bitmap.pix32(y + yoff, 3 + xoff) = PALETTE[m_c16_bitmap[(code >> 4) & 1]];
- m_bitmap.pix32(y + yoff, 4 + xoff) = PALETTE[m_c16_bitmap[(code >> 3) & 1]];
- m_bitmap.pix32(y + yoff, 5 + xoff) = PALETTE[m_c16_bitmap[(code >> 2) & 1]];
- m_bitmap.pix32(y + yoff, 6 + xoff) = PALETTE[m_c16_bitmap[(code >> 1) & 1]];
- m_bitmap.pix32(y + yoff, 7 + xoff) = PALETTE[m_c16_bitmap[code & 1]];
+ m_bitmap.pix32(y + yoff, 0 + xoff) = PALETTE_MOS[m_c16_bitmap[code >> 7]];
+ m_bitmap.pix32(y + yoff, 1 + xoff) = PALETTE_MOS[m_c16_bitmap[(code >> 6) & 1]];
+ m_bitmap.pix32(y + yoff, 2 + xoff) = PALETTE_MOS[m_c16_bitmap[(code >> 5) & 1]];
+ m_bitmap.pix32(y + yoff, 3 + xoff) = PALETTE_MOS[m_c16_bitmap[(code >> 4) & 1]];
+ m_bitmap.pix32(y + yoff, 4 + xoff) = PALETTE_MOS[m_c16_bitmap[(code >> 3) & 1]];
+ m_bitmap.pix32(y + yoff, 5 + xoff) = PALETTE_MOS[m_c16_bitmap[(code >> 2) & 1]];
+ m_bitmap.pix32(y + yoff, 6 + xoff) = PALETTE_MOS[m_c16_bitmap[(code >> 1) & 1]];
+ m_bitmap.pix32(y + yoff, 7 + xoff) = PALETTE_MOS[m_c16_bitmap[code & 1]];
}
}
@@ -549,13 +549,13 @@ void mos7360_device::draw_bitmap_multi(int ybegin, int yend, int ch, int yoff, i
code = read_ram(m_bitmapaddr + ch * 8 + y);
m_bitmap.pix32(y + yoff, 0 + xoff) =
- m_bitmap.pix32(y + yoff, 1 + xoff) = PALETTE[m_bitmapmulti[code >> 6]];
+ m_bitmap.pix32(y + yoff, 1 + xoff) = PALETTE_MOS[m_bitmapmulti[code >> 6]];
m_bitmap.pix32(y + yoff, 2 + xoff) =
- m_bitmap.pix32(y + yoff, 3 + xoff) = PALETTE[m_bitmapmulti[(code >> 4) & 3]];
+ m_bitmap.pix32(y + yoff, 3 + xoff) = PALETTE_MOS[m_bitmapmulti[(code >> 4) & 3]];
m_bitmap.pix32(y + yoff, 4 + xoff) =
- m_bitmap.pix32(y + yoff, 5 + xoff) = PALETTE[m_bitmapmulti[(code >> 2) & 3]];
+ m_bitmap.pix32(y + yoff, 5 + xoff) = PALETTE_MOS[m_bitmapmulti[(code >> 2) & 3]];
m_bitmap.pix32(y + yoff, 6 + xoff) =
- m_bitmap.pix32(y + yoff, 7 + xoff) = PALETTE[m_bitmapmulti[code & 3]];
+ m_bitmap.pix32(y + yoff, 7 + xoff) = PALETTE_MOS[m_bitmapmulti[code & 3]];
}
}
@@ -567,7 +567,7 @@ void mos7360_device::draw_cursor(int ybegin, int yend, int yoff, int xoff, int c
{
for (int x = 0; x < 8; x++)
{
- m_bitmap.pix32(y + yoff, x + xoff) = PALETTE[color];
+ m_bitmap.pix32(y + yoff, x + xoff) = PALETTE_MOS[color];
}
}
}
@@ -595,7 +595,7 @@ void mos7360_device::drawlines(int first, int last)
{
for (int x = 0; x < m_bitmap.width(); x++)
{
- m_bitmap.pix32(line, x) = PALETTE[0];
+ m_bitmap.pix32(line, x) = PALETTE_MOS[0];
}
}
return;
@@ -615,7 +615,7 @@ void mos7360_device::drawlines(int first, int last)
{
for (int x = 0; x < m_bitmap.width(); x++)
{
- m_bitmap.pix32(line, x) = PALETTE[FRAMECOLOR];
+ m_bitmap.pix32(line, x) = PALETTE_MOS[FRAMECOLOR];
}
}
}
@@ -711,12 +711,12 @@ void mos7360_device::drawlines(int first, int last)
{
for (int x = 0; x < xbegin; x++)
{
- m_bitmap.pix32(yoff + i, x) = PALETTE[FRAMECOLOR];
+ m_bitmap.pix32(yoff + i, x) = PALETTE_MOS[FRAMECOLOR];
}
for (int x = xend; x < m_bitmap.width(); x++)
{
- m_bitmap.pix32(yoff + i, x) = PALETTE[FRAMECOLOR];
+ m_bitmap.pix32(yoff + i, x) = PALETTE_MOS[FRAMECOLOR];
}
}
}
@@ -730,7 +730,7 @@ void mos7360_device::drawlines(int first, int last)
{
for (int x = 0; x < m_bitmap.width(); x++)
{
- m_bitmap.pix32(line, x) = PALETTE[FRAMECOLOR];
+ m_bitmap.pix32(line, x) = PALETTE_MOS[FRAMECOLOR];
}
}
}
diff --git a/src/emu/tilemap.c b/src/emu/tilemap.c
index 5fa27bb0a4f..6d8f47643cc 100644
--- a/src/emu/tilemap.c
+++ b/src/emu/tilemap.c
@@ -948,7 +948,7 @@ g_profiler.start(PROFILER_TILEMAP_DRAW);
int scrolly = effective_colscroll(0, height);
for (int ypos = scrolly - m_height; ypos <= blit.cliprect.max_y; ypos += m_height)
for (int xpos = scrollx - m_width; xpos <= blit.cliprect.max_x; xpos += m_width)
- draw_instance(dest, blit, xpos, ypos);
+ draw_instance(screen, dest, blit, xpos, ypos);
}
// scrolling rows + vertical scroll
@@ -985,7 +985,7 @@ g_profiler.start(PROFILER_TILEMAP_DRAW);
// iterate over X to handle wraparound
for (int xpos = scrollx - m_width; xpos <= original_cliprect.max_x; xpos += m_width)
- draw_instance(dest, blit, xpos, ypos);
+ draw_instance(screen, dest, blit, xpos, ypos);
}
}
}
@@ -1021,7 +1021,7 @@ g_profiler.start(PROFILER_TILEMAP_DRAW);
// iterate over Y to handle wraparound
for (int ypos = scrolly - m_height; ypos <= original_cliprect.max_y; ypos += m_height)
- draw_instance(dest, blit, xpos, ypos);
+ draw_instance(screen, dest, blit, xpos, ypos);
}
}
}
@@ -1073,7 +1073,7 @@ g_profiler.start(PROFILER_TILEMAP_DRAW_ROZ);
pixmap();
// then do the roz copy
- draw_roz_core(dest, blit, startx, starty, incxx, incxy, incyx, incyy, wraparound);
+ draw_roz_core(screen, dest, blit, startx, starty, incxx, incxy, incyx, incyy, wraparound);
g_profiler.stop();
}
@@ -1095,7 +1095,7 @@ void tilemap_t::draw_roz(screen_device &screen, bitmap_rgb32 &dest, const rectan
//-------------------------------------------------
template<class _BitmapClass>
-void tilemap_t::draw_instance(_BitmapClass &dest, const blit_parameters &blit, int xpos, int ypos)
+void tilemap_t::draw_instance(screen_device &screen, _BitmapClass &dest, const blit_parameters &blit, int xpos, int ypos)
{
// clip destination coordinates to the tilemap
// note that x2/y2 are exclusive, not inclusive
@@ -1183,7 +1183,7 @@ void tilemap_t::draw_instance(_BitmapClass &dest, const blit_parameters &blit, i
x_end = MIN(x_end, x2);
// if we're rendering something, compute the pointers
- const rgb_t *clut = (dest.palette() != NULL) ? dest.palette()->entry_list_raw() : reinterpret_cast<const rgb_t *>(machine().pens);
+ const rgb_t *clut = (dest.palette() != NULL) ? dest.palette()->entry_list_raw() : reinterpret_cast<const rgb_t *>(screen.palette()->pens());
if (prev_trans != WHOLLY_TRANSPARENT)
{
const UINT16 *source0 = source_baseaddr + x_start;
@@ -1273,11 +1273,11 @@ do { \
} while (0)
template<class _BitmapClass>
-void tilemap_t::draw_roz_core(_BitmapClass &destbitmap, const blit_parameters &blit,
+void tilemap_t::draw_roz_core(screen_device &screen, _BitmapClass &destbitmap, const blit_parameters &blit,
UINT32 startx, UINT32 starty, int incxx, int incxy, int incyx, int incyy, bool wraparound)
{
// pre-cache all the inner loop values
- const rgb_t *clut = ((destbitmap.palette() != NULL) ? destbitmap.palette()->entry_list_raw() : reinterpret_cast<const rgb_t *>(machine().pens)) + (blit.tilemap_priority_code >> 16);
+ const rgb_t *clut = ((destbitmap.palette() != NULL) ? destbitmap.palette()->entry_list_raw() : reinterpret_cast<const rgb_t *>(screen.palette()->pens())) + (blit.tilemap_priority_code >> 16);
bitmap_ind8 &priority_bitmap = *blit.priority;
const int xmask = m_pixmap.width() - 1;
const int ymask = m_pixmap.height() - 1;
@@ -1441,7 +1441,7 @@ void tilemap_t::draw_roz_core(_BitmapClass &destbitmap, const blit_parameters &b
// rowscroll and with fixed parameters
//-------------------------------------------------
-void tilemap_t::draw_debug(bitmap_rgb32 &dest, UINT32 scrollx, UINT32 scrolly)
+void tilemap_t::draw_debug(screen_device &screen, bitmap_rgb32 &dest, UINT32 scrollx, UINT32 scrolly)
{
// set up for the blit, using hard-coded parameters (no priority, etc)
blit_parameters blit;
@@ -1458,7 +1458,7 @@ void tilemap_t::draw_debug(bitmap_rgb32 &dest, UINT32 scrollx, UINT32 scrolly)
// iterate to handle wraparound
for (int ypos = scrolly - m_height; ypos <= blit.cliprect.max_y; ypos += m_height)
for (int xpos = scrollx - m_width; xpos <= blit.cliprect.max_x; xpos += m_width)
- draw_instance(dest, blit, xpos, ypos);
+ draw_instance(screen, dest, blit, xpos, ypos);
}
diff --git a/src/emu/tilemap.h b/src/emu/tilemap.h
index daf9684aa97..23dd26685b7 100644
--- a/src/emu/tilemap.h
+++ b/src/emu/tilemap.h
@@ -539,7 +539,7 @@ public:
void draw(screen_device &screen, bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 flags, UINT8 priority = 0, UINT8 priority_mask = 0xff);
void draw_roz(screen_device &screen, bitmap_ind16 &dest, const rectangle &cliprect, UINT32 startx, UINT32 starty, int incxx, int incxy, int incyx, int incyy, bool wraparound, UINT32 flags, UINT8 priority = 0, UINT8 priority_mask = 0xff);
void draw_roz(screen_device &screen, bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 startx, UINT32 starty, int incxx, int incxy, int incyx, int incyy, bool wraparound, UINT32 flags, UINT8 priority = 0, UINT8 priority_mask = 0xff);
- void draw_debug(bitmap_rgb32 &dest, UINT32 scrollx, UINT32 scrolly);
+ void draw_debug(screen_device &screen, bitmap_rgb32 &dest, UINT32 scrollx, UINT32 scrolly);
// mappers
// scan in row-major order with optional flipping
@@ -609,8 +609,8 @@ private:
void configure_blit_parameters(blit_parameters &blit, bitmap_ind8 &priority_bitmap, const rectangle &cliprect, UINT32 flags, UINT8 priority, UINT8 priority_mask);
template<class _BitmapClass> void draw_common(screen_device &screen, _BitmapClass &dest, const rectangle &cliprect, UINT32 flags, UINT8 priority, UINT8 priority_mask);
template<class _BitmapClass> void draw_roz_common(screen_device &screen, _BitmapClass &dest, const rectangle &cliprect, UINT32 startx, UINT32 starty, int incxx, int incxy, int incyx, int incyy, bool wraparound, UINT32 flags, UINT8 priority, UINT8 priority_mask);
- template<class _BitmapClass> void draw_instance(_BitmapClass &dest, const blit_parameters &blit, int xpos, int ypos);
- template<class _BitmapClass> void draw_roz_core(_BitmapClass &destbitmap, const blit_parameters &blit, UINT32 startx, UINT32 starty, int incxx, int incxy, int incyx, int incyy, bool wraparound);
+ template<class _BitmapClass> void draw_instance(screen_device &screen, _BitmapClass &dest, const blit_parameters &blit, int xpos, int ypos);
+ template<class _BitmapClass> void draw_roz_core(screen_device &screen, _BitmapClass &destbitmap, const blit_parameters &blit, UINT32 startx, UINT32 starty, int incxx, int incxy, int incyx, int incyy, bool wraparound);
// managers and devices
tilemap_manager * m_manager; // reference to the owning manager
diff --git a/src/emu/ui/viewgfx.c b/src/emu/ui/viewgfx.c
index 08684111adb..e7abc6f582f 100644
--- a/src/emu/ui/viewgfx.c
+++ b/src/emu/ui/viewgfx.c
@@ -152,9 +152,11 @@ static void ui_gfx_exit(running_machine &machine)
bool ui_gfx_is_relevant(running_machine &machine)
{
gfxdecode_device_iterator gfx_deviter(machine.root_device());
+ palette_device_iterator pal_deviter(machine.root_device());
- return machine.total_colors() != 0
- || machine.colortable != NULL
+ palette_device *palette = pal_deviter.first();
+
+ return ((palette !=NULL) && (palette->entries() > 0))
|| gfx_deviter.first() != NULL
|| machine.tilemap().count() != 0;
}
@@ -168,7 +170,9 @@ UINT32 ui_gfx_ui_handler(running_machine &machine, render_container *container,
{
ui_gfx_state *state = &ui_gfx;
gfxdecode_device_iterator gfx_deviter(machine.root_device());
-
+ palette_device_iterator pal_deviter(machine.root_device());
+ palette_device *palette = pal_deviter.first();
+
// if we have nothing, implicitly cancel
if (!ui_gfx_is_relevant(machine))
goto cancel;
@@ -183,7 +187,7 @@ again:
{
case 0:
// if we have a palette, display it
- if (machine.total_colors() > 0)
+ if (palette->entries() > 0)
{
palette_handler(machine, container, state);
break;
@@ -255,9 +259,12 @@ cancel:
static void palette_handler(running_machine &machine, render_container *container, ui_gfx_state *state)
{
- int total = state->palette.which ? colortable_palette_get_size(machine.colortable) : machine.total_colors();
+ palette_device_iterator pal_deviter(machine.root_device());
+ palette_device *palette = pal_deviter.first();
+
+ int total = state->palette.which ? palette->indirect_entries() : palette->entries();
const char *title = state->palette.which ? "COLORTABLE" : "PALETTE";
- const rgb_t *raw_color = machine.palette->entry_list_raw();
+ const rgb_t *raw_color = palette->palette()->entry_list_raw();;
render_font *ui_font = machine.ui().get_font();
float cellwidth, cellheight;
float chwidth, chheight;
@@ -356,7 +363,7 @@ static void palette_handler(running_machine &machine, render_container *containe
int index = state->palette.offset + y * state->palette.count + x;
if (index < total)
{
- pen_t pen = state->palette.which ? colortable_palette_get_color(machine.colortable, index) : raw_color[index];
+ pen_t pen = state->palette.which ? palette->indirect_color(index) : raw_color[index];
container->add_rect(cellboxbounds.x0 + x * cellwidth, cellboxbounds.y0 + y * cellheight,
cellboxbounds.x0 + (x + 1) * cellwidth, cellboxbounds.y0 + (y + 1) * cellheight,
0xff000000 | pen, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
@@ -375,6 +382,9 @@ static void palette_handler(running_machine &machine, render_container *containe
static void palette_handle_keys(running_machine &machine, ui_gfx_state *state)
{
+ palette_device_iterator pal_deviter(machine.root_device());
+ palette_device *palette = pal_deviter.first();
+
int rowcount, screencount;
int total;
@@ -399,11 +409,11 @@ static void palette_handle_keys(running_machine &machine, ui_gfx_state *state)
// clamp within range
if (state->palette.which < 0)
state->palette.which = 0;
- if (state->palette.which > (int)(machine.colortable != NULL))
- state->palette.which = (int)(machine.colortable != NULL);
+ if (state->palette.which > (int)(palette->indirect_entries() > 0))
+ state->palette.which = (int)(palette->indirect_entries() > 0);
// cache some info in locals
- total = state->palette.which ? colortable_palette_get_size(machine.colortable) : machine.total_colors();
+ total = state->palette.which ? palette->indirect_entries() : palette->entries();
// determine number of entries per row and total
rowcount = state->palette.count;
@@ -787,7 +797,7 @@ static void gfxset_draw_item(running_machine &machine, gfx_element *gfx, int ind
};
int width = (rotate & ORIENTATION_SWAP_XY) ? gfx->height() : gfx->width();
int height = (rotate & ORIENTATION_SWAP_XY) ? gfx->width() : gfx->height();
- const rgb_t *palette = (machine.total_colors() != 0) ? machine.palette->entry_list_raw() : NULL;
+ const rgb_t *palette = (machine.first_screen()->palette()->entries() != 0) ? machine.first_screen()->palette()->palette()->entry_list_raw() : NULL;
UINT32 palette_mask = ~0;
int x, y;
@@ -1059,7 +1069,7 @@ static void tilemap_update_bitmap(running_machine &machine, ui_gfx_state *state,
// allocate new stuff
state->bitmap = global_alloc(bitmap_rgb32(width, height));
- state->bitmap->set_palette(machine.palette);
+ state->bitmap->set_palette(machine.first_screen()->palette()->palette());
state->texture = machine.render().texture_alloc();
state->texture->set_bitmap(*state->bitmap, state->bitmap->cliprect(), TEXFORMAT_RGB32);
@@ -1071,7 +1081,7 @@ static void tilemap_update_bitmap(running_machine &machine, ui_gfx_state *state,
if (state->bitmap_dirty)
{
tilemap_t *tilemap = machine.tilemap().find(state->tilemap.which);
- tilemap->draw_debug(*state->bitmap, state->tilemap.xoffs, state->tilemap.yoffs);
+ tilemap->draw_debug(*machine.first_screen(), *state->bitmap, state->tilemap.xoffs, state->tilemap.yoffs);
// reset the texture to force an update
state->texture->set_bitmap(*state->bitmap, state->bitmap->cliprect(), TEXFORMAT_RGB32);
diff --git a/src/emu/validity.c b/src/emu/validity.c
index 9bec238ea0e..d1c2f20b387 100644
--- a/src/emu/validity.c
+++ b/src/emu/validity.c
@@ -703,14 +703,13 @@ void validity_checker::validate_display()
{
// iterate over screen devices looking for paletted screens
screen_device_iterator iter(m_current_config->root_device());
- bool palette_modes = false;
for (const screen_device *scrconfig = iter.first(); scrconfig != NULL; scrconfig = iter.next())
if (scrconfig->format() == BITMAP_FORMAT_IND16)
- palette_modes = true;
-
- // check for empty palette
- if (palette_modes && m_current_config->m_total_colors == 0)
- mame_printf_error("Driver has zero palette entries but uses a palette-based bitmap format\n");
+ {
+ // check for empty palette
+ //if (scrconfig->palette()->entries() == 0)
+// mame_printf_error("Driver has zero palette entries but uses a palette-based bitmap format\n");
+ }
}
diff --git a/src/emu/video.c b/src/emu/video.c
index 8e0e2f1c3d2..b81604c9847 100644
--- a/src/emu/video.c
+++ b/src/emu/video.c
@@ -310,8 +310,8 @@ void video_manager::save_snapshot(screen_device *screen, emu_file &file)
png_add_text(&pnginfo, "System", text2);
// now do the actual work
- const rgb_t *palette = (machine().palette != NULL) ? machine().palette->entry_list_adjusted() : NULL;
- png_error error = png_write_bitmap(file, &pnginfo, m_snap_bitmap, machine().total_colors(), palette);
+ const rgb_t *palette = (screen->palette() != NULL) ? screen->palette()->palette()->entry_list_adjusted() : NULL;
+ png_error error = png_write_bitmap(file, &pnginfo, m_snap_bitmap, screen->palette()->entries(), palette);
if (error != PNGERR_NONE)
mame_printf_error("Error generating PNG for snapshot: png_error = %d\n", error);
@@ -1230,8 +1230,8 @@ void video_manager::record_frame()
}
// write the next frame
- const rgb_t *palette = (machine().palette != NULL) ? machine().palette->entry_list_adjusted() : NULL;
- png_error error = mng_capture_frame(*m_mngfile, &pnginfo, m_snap_bitmap, machine().total_colors(), palette);
+ const rgb_t *palette = (machine().primary_screen->palette() != NULL) ? machine().primary_screen->palette()->palette()->entry_list_adjusted() : NULL;
+ png_error error = mng_capture_frame(*m_mngfile, &pnginfo, m_snap_bitmap, machine().primary_screen->palette()->entries(), palette);
png_free(&pnginfo);
if (error != PNGERR_NONE)
{
@@ -1247,33 +1247,6 @@ void video_manager::record_frame()
g_profiler.stop();
}
-
-//-------------------------------------------------
-// video_assert_out_of_range_pixels - assert if
-// any pixels in the given bitmap contain an
-// invalid palette index
-//-------------------------------------------------
-
-bool video_assert_out_of_range_pixels(running_machine &machine, bitmap_ind16 &bitmap)
-{
-#ifdef MAME_DEBUG
- // iterate over rows
- int maxindex = machine.palette->max_index();
- for (int y = 0; y < bitmap.height(); y++)
- {
- UINT16 *rowbase = &bitmap.pix16(y);
- for (int x = 0; x < bitmap.width(); x++)
- if (rowbase[x] > maxindex)
- {
- osd_break_into_debugger("Out of range pixel");
- return true;
- }
- }
-#endif
- return false;
-}
-
-
//-------------------------------------------------
// toggle_throttle
//-------------------------------------------------
diff --git a/src/emu/video.h b/src/emu/video.h
index abd2a8f27a6..bfb73b2b46c 100644
--- a/src/emu/video.h
+++ b/src/emu/video.h
@@ -178,12 +178,4 @@ private:
static const int PAUSED_REFRESH_RATE = 30;
};
-
-
-// ----- debugging helpers -----
-
-// assert if any pixels in the given bitmap contain an invalid palette index
-bool 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 e730377b3aa..0100ca1b4bf 100644
--- a/src/emu/video/315_5124.c
+++ b/src/emu/video/315_5124.c
@@ -97,25 +97,25 @@ PALETTE_INIT_MEMBER(sega315_5124_device, sega315_5124)
int r = i & 0x03;
int g = (i & 0x0c) >> 2;
int b = (i & 0x30) >> 4;
- palette_set_color_rgb(machine(), i, pal2bit(r), pal2bit(g), pal2bit(b));
+ palette.set_pen_color(i, pal2bit(r), pal2bit(g), pal2bit(b));
}
/* TMS9918 palette */
- palette_set_color_rgb(machine(), 64+ 0, 0, 0, 0);
- palette_set_color_rgb(machine(), 64+ 1, 0, 0, 0);
- palette_set_color_rgb(machine(), 64+ 2, 33, 200, 66);
- palette_set_color_rgb(machine(), 64+ 3, 94, 220, 120);
- palette_set_color_rgb(machine(), 64+ 4, 84, 85, 237);
- palette_set_color_rgb(machine(), 64+ 5, 125, 118, 252);
- palette_set_color_rgb(machine(), 64+ 6, 212, 82, 77);
- palette_set_color_rgb(machine(), 64+ 7, 66, 235, 245);
- palette_set_color_rgb(machine(), 64+ 8, 252, 85, 84);
- palette_set_color_rgb(machine(), 64+ 9, 255, 121, 120);
- palette_set_color_rgb(machine(), 64+10, 212, 193, 84);
- palette_set_color_rgb(machine(), 64+11, 230, 206, 128);
- palette_set_color_rgb(machine(), 64+12, 33, 176, 59);
- palette_set_color_rgb(machine(), 64+13, 201, 91, 186);
- palette_set_color_rgb(machine(), 64+14, 204, 204, 204);
- palette_set_color_rgb(machine(), 64+15, 255, 255, 255);
+ palette.set_pen_color(64+ 0, 0, 0, 0);
+ palette.set_pen_color(64+ 1, 0, 0, 0);
+ palette.set_pen_color(64+ 2, 33, 200, 66);
+ palette.set_pen_color(64+ 3, 94, 220, 120);
+ palette.set_pen_color(64+ 4, 84, 85, 237);
+ palette.set_pen_color(64+ 5, 125, 118, 252);
+ palette.set_pen_color(64+ 6, 212, 82, 77);
+ palette.set_pen_color(64+ 7, 66, 235, 245);
+ palette.set_pen_color(64+ 8, 252, 85, 84);
+ palette.set_pen_color(64+ 9, 255, 121, 120);
+ palette.set_pen_color(64+10, 212, 193, 84);
+ palette.set_pen_color(64+11, 230, 206, 128);
+ palette.set_pen_color(64+12, 33, 176, 59);
+ palette.set_pen_color(64+13, 201, 91, 186);
+ palette.set_pen_color(64+14, 204, 204, 204);
+ palette.set_pen_color(64+15, 255, 255, 255);
}
@@ -127,7 +127,7 @@ PALETTE_INIT_MEMBER(sega315_5378_device, sega315_5378)
int r = i & 0x000f;
int g = (i & 0x00f0) >> 4;
int b = (i & 0x0f00) >> 8;
- palette_set_color_rgb(machine(), i, pal4bit(r), pal4bit(g), pal4bit(b));
+ palette.set_pen_color(i, pal4bit(r), pal4bit(g), pal4bit(b));
}
}
@@ -146,6 +146,7 @@ sega315_5124_device::sega315_5124_device(const machine_config &mconfig, const ch
, m_palette_offset( 0 )
, m_supports_224_240( false )
, m_space_config("videoram", ENDIANNESS_LITTLE, 8, 14, 0, NULL, *ADDRESS_MAP_NAME(sega315_5124))
+ , m_palette(*this, "palette")
{
}
@@ -158,6 +159,7 @@ sega315_5124_device::sega315_5124_device(const machine_config &mconfig, device_t
, m_palette_offset( palette_offset )
, m_supports_224_240( supports_224_240 )
, m_space_config("videoram", ENDIANNESS_LITTLE, 8, 14, 0, NULL, *ADDRESS_MAP_NAME(sega315_5124))
+ , m_palette(*this, "palette")
{
}
@@ -398,13 +400,13 @@ 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_tmpbitmap.fill(m_palette->pen(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_tmpbitmap.fill(m_palette->pen(m_current_palette[BACKDROP_COLOR]), rec);
m_y1_bitmap.fill(1, rec);
/* Draw middle of the border */
@@ -440,13 +442,13 @@ 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_tmpbitmap.fill(m_palette->pen(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_tmpbitmap.fill(m_palette->pen(m_current_palette[BACKDROP_COLOR]), rec);
m_y1_bitmap.fill(1, rec);
select_sprites( vpos - vpos_limit );
@@ -472,13 +474,13 @@ 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_tmpbitmap.fill(m_palette->pen(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_tmpbitmap.fill(m_palette->pen(m_current_palette[BACKDROP_COLOR]), rec);
m_y1_bitmap.fill(1, rec);
/* Draw middle of the border */
@@ -1432,7 +1434,7 @@ void sega315_5124_device::draw_scanline( int pixel_offset_x, int pixel_plot_y, i
{
for (x = 0; x < 256; x++)
{
- p_bitmap[x] = machine().pens[m_current_palette[BACKDROP_COLOR]];
+ p_bitmap[x] = m_palette->pen(m_current_palette[BACKDROP_COLOR]);
p_y1[x] = 1;
}
}
@@ -1440,7 +1442,7 @@ void sega315_5124_device::draw_scanline( int pixel_offset_x, int pixel_plot_y, i
{
for (x = 0; x < 256; x++)
{
- p_bitmap[x] = machine().pens[blitline_buffer[x]];
+ p_bitmap[x] = m_palette->pen(blitline_buffer[x]);
p_y1[x] = ( priority_selected[x] & 0x0f ) ? 0 : 1;
}
}
@@ -1590,10 +1592,10 @@ void sega315_5378_device::draw_scanline( int pixel_offset_x, int pixel_plot_y, i
for (x = 0 + 48; x < 160 + 48; x++)
{
- rgb_t c1 = machine().pens[line1[x]];
- rgb_t c2 = machine().pens[line2[x]];
- rgb_t c3 = machine().pens[line3[x]];
- rgb_t c4 = machine().pens[line4[x]];
+ rgb_t c1 = m_palette->pen(line1[x]);
+ rgb_t c2 = m_palette->pen(line2[x]);
+ rgb_t c3 = m_palette->pen(line3[x]);
+ rgb_t c4 = m_palette->pen(line4[x]);
m_tmpbitmap.pix32(pixel_plot_y, pixel_offset_x + x) =
rgb_t((c1.r() / 6 + c2.r() / 3 + c3.r() / 3 + c4.r() / 6 ),
(c1.g() / 6 + c2.g() / 3 + c3.g() / 3 + c4.g() / 6 ),
@@ -1606,7 +1608,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) = m_palette->pen(blitline_buffer[x]);
}
}
@@ -1803,7 +1805,8 @@ void sega315_5124_device::device_reset()
}
static MACHINE_CONFIG_FRAGMENT( sega315_5124 )
- MCFG_PALETTE_INIT_OVERRIDE(sega315_5124_device, sega315_5124)
+ MCFG_PALETTE_ADD("palette", SEGA315_5124_PALETTE_SIZE)
+ MCFG_PALETTE_INIT_OWNER(sega315_5124_device, sega315_5124)
MACHINE_CONFIG_END
//-------------------------------------------------
@@ -1824,7 +1827,8 @@ void sega315_5378_device::device_reset()
}
static MACHINE_CONFIG_FRAGMENT( sega315_5378 )
- MCFG_PALETTE_INIT_OVERRIDE(sega315_5378_device, sega315_5378)
+ MCFG_PALETTE_ADD("palette", SEGA315_5378_PALETTE_SIZE)
+ MCFG_PALETTE_INIT_OWNER(sega315_5378_device, sega315_5378)
MACHINE_CONFIG_END
//-------------------------------------------------
diff --git a/src/emu/video/315_5124.h b/src/emu/video/315_5124.h
index b1a51352787..8310d4231ec 100644
--- a/src/emu/video/315_5124.h
+++ b/src/emu/video/315_5124.h
@@ -166,6 +166,8 @@ protected:
static const device_timer_id TIMER_DRAW = 1;
static const device_timer_id TIMER_CHECK_HINT = 2;
static const device_timer_id TIMER_CHECK_VINT = 3;
+
+ required_device<palette_device> m_palette;
};
diff --git a/src/emu/video/hd66421.c b/src/emu/video/hd66421.c
index f74b9ac1aa7..4c4253fe8bd 100644
--- a/src/emu/video/hd66421.c
+++ b/src/emu/video/hd66421.c
@@ -120,7 +120,8 @@ hd66421_device::hd66421_device(const machine_config &mconfig, const char *tag, d
m_space_config("videoram", ENDIANNESS_LITTLE, 8, 17, 0, NULL, *ADDRESS_MAP_NAME(hd66421)),
m_cmd(0),
m_x(0),
- m_y(0)
+ m_y(0),
+ m_palette(*this, "palette")
{
for (int i = 0; i < 32; i++)
{
@@ -220,9 +221,9 @@ UINT32 hd66421_device::update_screen(screen_device &screen, bitmap_ind16 &bitmap
bright = 1.0 * temp / 31;
pen[i] = i;
#ifdef HD66421_BRIGHTNESS_DOES_NOT_WORK
- palette_set_color(machine(), pen[i], 255 * bright, 255 * bright, 255 * bright);
+ m_palette->set_pen_color(pen[i], 255 * bright, 255 * bright, 255 * bright);
#else
- palette_set_pen_contrast(machine(), pen[i], bright);
+ m_palette->set_pen_contrast(pen[i], bright);
#endif
}
@@ -249,8 +250,36 @@ UINT32 hd66421_device::update_screen(screen_device &screen, bitmap_ind16 &bitmap
else
{
rectangle rect(0, HD66421_WIDTH - 1, 0, HD66421_HEIGHT - 1);
- bitmap.fill(get_white_pen(machine()), rect);
+ bitmap.fill(m_palette->white_pen(), rect);
}
return 0;
}
+
+PALETTE_INIT_MEMBER(hd66421_device, hd66421)
+{
+ // init palette
+ for (int i = 0; i < 4; i++)
+ {
+ palette.set_pen_color(i, rgb_t::white);
+#ifndef HD66421_BRIGHTNESS_DOES_NOT_WORK
+ palette.set_pen_contrast(i, 1.0 * i / (4 - 1));
+#endif
+ }
+}
+
+
+static MACHINE_CONFIG_FRAGMENT( hd66421 )
+ MCFG_PALETTE_ADD("palette", 4)
+ MCFG_PALETTE_INIT_OWNER(hd66421_device, hd66421)
+MACHINE_CONFIG_END
+
+//-------------------------------------------------
+// machine_config_additions - return a pointer to
+// the device's machine fragment
+//-------------------------------------------------
+
+machine_config_constructor hd66421_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( hd66421 );
+}
diff --git a/src/emu/video/hd66421.h b/src/emu/video/hd66421.h
index 11a9dfa9b85..8360a26da99 100644
--- a/src/emu/video/hd66421.h
+++ b/src/emu/video/hd66421.h
@@ -48,12 +48,14 @@ public:
DECLARE_WRITE8_MEMBER( reg_idx_w );
DECLARE_READ8_MEMBER( reg_dat_r );
DECLARE_WRITE8_MEMBER( reg_dat_w );
+ DECLARE_PALETTE_INIT(hd66421);
UINT32 update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
protected:
// device-level overrides
virtual void device_start();
+ virtual machine_config_constructor device_mconfig_additions() const;
// device_config_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const;
@@ -69,6 +71,7 @@ protected:
private:
UINT8 m_cmd, m_reg[32];
int m_x, m_y;
+ required_device<palette_device> m_palette;
};
diff --git a/src/emu/video/huc6260.c b/src/emu/video/huc6260.c
index d2c8af73bfa..22154cb52ad 100644
--- a/src/emu/video/huc6260.c
+++ b/src/emu/video/huc6260.c
@@ -34,8 +34,8 @@ PALETTE_INIT_MEMBER(huc6260_device, huc6260)
int b = pal3bit( ( i ) & 7 );
int y = ( ( 66 * r + 129 * g + 25 * b + 128 ) >> 8 ) + 16;
- palette_set_color_rgb( machine(), i, r, g, b );
- palette_set_color_rgb( machine(), 512 + i, y, y, y );
+ palette.set_pen_color( i, r, g, b );
+ palette.set_pen_color( 512 + i, y, y, y );
}
}
@@ -294,7 +294,8 @@ void huc6260_device::device_reset()
}
static MACHINE_CONFIG_FRAGMENT( huc6260 )
- MCFG_PALETTE_INIT_OVERRIDE(huc6260_device, huc6260)
+ MCFG_PALETTE_ADD("palette", HUC6260_PALETTE_SIZE )
+ MCFG_PALETTE_INIT_OWNER(huc6260_device, huc6260)
MACHINE_CONFIG_END
//-------------------------------------------------
diff --git a/src/emu/video/i8244.c b/src/emu/video/i8244.c
index a2cc0d48075..49846ebd95f 100644
--- a/src/emu/video/i8244.c
+++ b/src/emu/video/i8244.c
@@ -180,7 +180,7 @@ void i8244_device::device_reset()
}
-void i8244_device::palette_init()
+PALETTE_INIT_MEMBER(i8244_device, i8244)
{
static const UINT8 i8244_colors[3*16] =
{
@@ -204,7 +204,7 @@ void i8244_device::palette_init()
for ( int i = 0; i < 16; i++ )
{
- palette_set_color_rgb( machine(), i, i8244_colors[i*3], i8244_colors[i*3+1], i8244_colors[i*3+2] );
+ palette.set_pen_color( i, i8244_colors[i*3], i8244_colors[i*3+1], i8244_colors[i*3+2] );
}
}
diff --git a/src/emu/video/i8244.h b/src/emu/video/i8244.h
index 22b5c1f4546..cc88fff8230 100644
--- a/src/emu/video/i8244.h
+++ b/src/emu/video/i8244.h
@@ -86,12 +86,11 @@ public:
template<class _Object> static devcb2_base &set_irq_cb(device_t &device, _Object object) { return downcast<i8244_device &>(device).m_irq_func.set_callback(object); }
template<class _Object> static devcb2_base &set_postprocess_cb(device_t &device, _Object object) { return downcast<i8244_device &>(device).m_postprocess_func.set_callback(object); }
- virtual void palette_init();
-
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
DECLARE_READ_LINE_MEMBER(vblank);
DECLARE_READ_LINE_MEMBER(hblank);
+ DECLARE_PALETTE_INIT(i8244);
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/emu/video/i8275.c b/src/emu/video/i8275.c
index 331d29e8a91..0b636f62cb8 100644
--- a/src/emu/video/i8275.c
+++ b/src/emu/video/i8275.c
@@ -385,7 +385,7 @@ UINT32 i8275_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
m_fifo_write = 0;
if ((m_status_reg & I8275_STATUS_VIDEO_ENABLE)==0) {
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(rgb_t(0x00,0x00,0x00), cliprect);
} else {
// if value < 16 it is visible otherwise not
m_cursor_blink_cnt++;
diff --git a/src/emu/video/k053250.c b/src/emu/video/k053250.c
index b3d6dc41fda..c18c95eb313 100644
--- a/src/emu/video/k053250.c
+++ b/src/emu/video/k053250.c
@@ -356,7 +356,7 @@ void k053250_device::draw( bitmap_rgb32 &bitmap, const rectangle &cliprect, int
linedata_offs += line_start * linedata_adv; // pre-advance line info offset for the clipped region
// load physical palette base
- pal_base = machine().pens + (colorbase << 4) % machine().total_colors();
+ pal_base = screen->palette()->pens() + (colorbase << 4) % screen->palette()->entries();
// walk the target bitmap within the visible area vertically or horizontally, one line at a time
for (line_pos=line_start; line_pos <= line_end; linedata_offs += linedata_adv, line_pos++)
diff --git a/src/emu/video/mb_vcu.c b/src/emu/video/mb_vcu.c
index c08c6daed33..de2d0fdad88 100644
--- a/src/emu/video/mb_vcu.c
+++ b/src/emu/video/mb_vcu.c
@@ -32,6 +32,17 @@ TODO:
// device type definition
const device_type MB_VCU = &device_creator<mb_vcu_device>;
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void mb_vcu_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<mb_vcu_device &>(device).m_palette.set_tag(tag);
+}
+
+
static ADDRESS_MAP_START( mb_vcu_vram, AS_0, 8, mb_vcu_device )
AM_RANGE(0x00000,0x7ffff) AM_RAM // enough for a 256x256x4 x 2 pages of framebuffer with 4 layers (TODO: doubled for simplicity)
ADDRESS_MAP_END
@@ -72,7 +83,7 @@ WRITE8_MEMBER( mb_vcu_device::mb_vcu_paletteram_w )
bit0 = (m_palram[offset] >> 0) & 0x01;
b = combine_3_weights(m_weights_b, bit0, bit1, bit2);
- palette_set_color(machine(), offset, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset, rgb_t(r, g, b));
}
//-------------------------------------------------
@@ -144,7 +155,8 @@ mb_vcu_device::mb_vcu_device(const machine_config &mconfig, const char *tag, dev
device_memory_interface(mconfig, *this),
device_video_interface(mconfig, *this),
m_videoram_space_config("videoram", ENDIANNESS_LITTLE, 8, 19, 0, NULL, *ADDRESS_MAP_NAME(mb_vcu_vram)),
- m_paletteram_space_config("palram", ENDIANNESS_LITTLE, 8, 16, 0, NULL, *ADDRESS_MAP_NAME(mb_vcu_pal_ram))
+ m_paletteram_space_config("palram", ENDIANNESS_LITTLE, 8, 16, 0, NULL, *ADDRESS_MAP_NAME(mb_vcu_pal_ram)),
+ m_palette(*this)
{
}
@@ -470,7 +482,7 @@ WRITE8_MEMBER( mb_vcu_device::background_color_w )
bit0 = (m_bk_color >> 0) & 0x01;
b = combine_3_weights(m_weights_b, bit0, bit1, bit2);
- palette_set_color(machine(), 0x100, rgb_t(r, g, b));
+ m_palette->set_pen_color(0x100, rgb_t(r, g, b));
}
READ8_MEMBER( mb_vcu_device::status_r )
@@ -506,7 +518,7 @@ UINT32 mb_vcu_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
{
dot|= m_vregs[1] << 4;
- bitmap.pix32(y,x) = machine().pens[dot];
+ bitmap.pix32(y,x) = m_palette->pen(dot);
}
}
}
diff --git a/src/emu/video/mb_vcu.h b/src/emu/video/mb_vcu.h
index 86ec24ba14a..7c83689af13 100644
--- a/src/emu/video/mb_vcu.h
+++ b/src/emu/video/mb_vcu.h
@@ -17,9 +17,10 @@ Template for skeleton device
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_MB_VCU_ADD(_tag,_freq,_config) \
+#define MCFG_MB_VCU_ADD(_tag,_freq,_config, _palette_tag) \
MCFG_DEVICE_ADD(_tag, MB_VCU, _freq) \
- MCFG_DEVICE_CONFIG(_config)
+ MCFG_DEVICE_CONFIG(_config) \
+ mb_vcu_device::static_set_palette_tag(*device, "^" _palette_tag);
//**************************************************************************
// TYPE DEFINITIONS
@@ -43,6 +44,9 @@ public:
// construction/destruction
mb_vcu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ // static configuration
+ static void static_set_palette_tag(device_t &device, const char *tag);
+
// I/O operations
DECLARE_WRITE8_MEMBER( write_vregs );
DECLARE_READ8_MEMBER( read_ram );
@@ -91,6 +95,7 @@ private:
double m_weights_r[2];
double m_weights_g[3];
double m_weights_b[3];
+ required_device<palette_device> m_palette;
};
diff --git a/src/emu/video/pc_cga.c b/src/emu/video/pc_cga.c
index 710b96c4e6f..7f2195d31e5 100644
--- a/src/emu/video/pc_cga.c
+++ b/src/emu/video/pc_cga.c
@@ -206,8 +206,8 @@ MACHINE_CONFIG_FRAGMENT( pcvideo_cga )
MCFG_SCREEN_RAW_PARAMS(XTAL_14_31818MHz,912,0,640,262,0,200)
MCFG_SCREEN_UPDATE_STATIC( mc6845_cga )
- MCFG_PALETTE_LENGTH(/* CGA_PALETTE_SETS * 16*/ 65536 )
- MCFG_PALETTE_INIT(pc_cga)
+ MCFG_PALETTE_ADD("palette", /* CGA_PALETTE_SETS * 16*/ 65536 )
+ MCFG_PALETTE_INIT_LEGACY(pc_cga)
MCFG_MC6845_ADD(CGA_MC6845_NAME, MC6845, CGA_SCREEN_NAME, XTAL_14_31818MHz/8, mc6845_cga_intf)
@@ -231,8 +231,8 @@ MACHINE_CONFIG_FRAGMENT( pcvideo_mc1502 )
MCFG_SCREEN_RAW_PARAMS(XTAL_16MHz,912,0,640,262,0,200)
MCFG_SCREEN_UPDATE_STATIC( cga_poisk2 )
- MCFG_PALETTE_LENGTH(/* CGA_PALETTE_SETS * 16*/ 65536 )
- MCFG_PALETTE_INIT(pc_cga)
+ MCFG_PALETTE_ADD("palette", /* CGA_PALETTE_SETS * 16*/ 65536 )
+ MCFG_PALETTE_INIT_LEGACY(pc_cga)
MCFG_MC6845_ADD(CGA_MC6845_NAME, MC6845, CGA_SCREEN_NAME, XTAL_16MHz/8, mc6845_cga_intf)
@@ -292,7 +292,7 @@ static PALETTE_INIT( pc_cga )
for ( i = 0; i < CGA_PALETTE_SETS * 16; i++ )
{
- palette_set_color_rgb( machine, i, cga_palette[i][0], cga_palette[i][1], cga_palette[i][2] );
+ palette.set_pen_color(i, cga_palette[i][0], cga_palette[i][1], cga_palette[i][2] );
}
i = 0x8000;
@@ -302,7 +302,7 @@ static PALETTE_INIT( pc_cga )
{
for ( b = 0; b < 32; b++ )
{
- palette_set_color_rgb( machine, i, r << 3, g << 3, b << 3 );
+ palette.set_pen_color(i, r << 3, g << 3, b << 3 );
i++;
}
}
diff --git a/src/emu/video/pc_vga.c b/src/emu/video/pc_vga.c
index 4ebefb61ff7..d9f3cf020f3 100644
--- a/src/emu/video/pc_vga.c
+++ b/src/emu/video/pc_vga.c
@@ -127,12 +127,14 @@ const device_type IBM8514A = &device_creator<ibm8514a_device>;
const device_type MACH8 = &device_creator<mach8_device>;
vga_device::vga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+ : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+ m_palette(*this, "^palette")
{
}
vga_device::vga_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : device_t(mconfig, VGA, "VGA", tag, owner, clock, "vga", __FILE__)
+ : device_t(mconfig, VGA, "VGA", tag, owner, clock, "vga", __FILE__),
+ m_palette(*this, "^palette")
{
}
@@ -215,7 +217,7 @@ void vga_device::device_start()
int i;
for (i = 0; i < 0x100; i++)
- palette_set_color_rgb(machine(), i, 0, 0, 0);
+ m_palette->set_pen_color(i, 0, 0, 0);
// Avoid an infinite loop when displaying. 0 is not possible anyway.
vga.crtc.maximum_scan_line = 1;
@@ -249,7 +251,7 @@ void cirrus_vga_device::device_start()
int i;
for (i = 0; i < 0x100; i++)
- palette_set_color_rgb(machine(), i, 0, 0, 0);
+ m_palette->set_pen_color(i, 0, 0, 0);
// Avoid an infinite loop when displaying. 0 is not possible anyway.
vga.crtc.maximum_scan_line = 1;
@@ -491,7 +493,7 @@ void vga_device::vga_vh_vga(bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
if(!machine().primary_screen->visible_area().contains(c+xi-(pel_shift), line + yi))
continue;
- bitmapline[c+xi-(pel_shift)] = machine().pens[vga.memory[(pos & 0xffff)+((xi >> 1)*0x10000)]];
+ bitmapline[c+xi-(pel_shift)] = m_palette->pen(vga.memory[(pos & 0xffff)+((xi >> 1)*0x10000)]);
}
}
}
@@ -518,7 +520,7 @@ void vga_device::vga_vh_vga(bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
if(!machine().primary_screen->visible_area().contains(c+xi-(pel_shift), line + yi))
continue;
- bitmapline[c+xi-pel_shift] = machine().pens[vga.memory[(pos+(xi >> 1)) & 0xffff]];
+ bitmapline[c+xi-pel_shift] = m_palette->pen(vga.memory[(pos+(xi >> 1)) & 0xffff]);
}
}
}
@@ -640,7 +642,7 @@ void svga_device::svga_vh_rgb8(bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
if(!machine().primary_screen->visible_area().contains(c+xi, line + yi))
continue;
- bitmapline[c+xi] = machine().pens[vga.memory[(pos+(xi))]];
+ bitmapline[c+xi] = m_palette->pen(vga.memory[(pos+(xi))]);
}
}
}
@@ -844,7 +846,7 @@ UINT8 vga_device::pc_vga_choosevideomode()
for (i=0; i<256;i++)
{
/* TODO: color shifters? */
- palette_set_color_rgb(machine(), i, (vga.dac.color[i & vga.dac.mask].red & 0x3f) << 2,
+ m_palette->set_pen_color(i, (vga.dac.color[i & vga.dac.mask].red & 0x3f) << 2,
(vga.dac.color[i & vga.dac.mask].green & 0x3f) << 2,
(vga.dac.color[i & vga.dac.mask].blue & 0x3f) << 2);
}
@@ -855,16 +857,16 @@ UINT8 vga_device::pc_vga_choosevideomode()
{
for (i=0; i<16;i++)
{
- vga.pens[i] = machine().pens[(vga.attribute.data[i]&0x0f)
- |((vga.attribute.data[0x14]&0xf)<<4)];
+ vga.pens[i] = m_palette->pen((vga.attribute.data[i]&0x0f)
+ |((vga.attribute.data[0x14]&0xf)<<4));
}
}
else
{
for (i=0; i<16;i++)
{
- vga.pens[i]=machine().pens[(vga.attribute.data[i]&0x3f)
- |((vga.attribute.data[0x14]&0xc)<<4)];
+ vga.pens[i]=m_palette->pen((vga.attribute.data[i]&0x3f)
+ |((vga.attribute.data[0x14]&0xc)<<4));
}
}
@@ -905,7 +907,7 @@ UINT8 svga_device::pc_vga_choosevideomode()
for (i=0; i<256;i++)
{
/* TODO: color shifters? */
- palette_set_color_rgb(machine(), i, (vga.dac.color[i & vga.dac.mask].red & 0x3f) << 2,
+ m_palette->set_pen_color(i, (vga.dac.color[i & vga.dac.mask].red & 0x3f) << 2,
(vga.dac.color[i & vga.dac.mask].green & 0x3f) << 2,
(vga.dac.color[i & vga.dac.mask].blue & 0x3f) << 2);
}
@@ -916,16 +918,16 @@ UINT8 svga_device::pc_vga_choosevideomode()
{
for (i=0; i<16;i++)
{
- vga.pens[i] = machine().pens[(vga.attribute.data[i]&0x0f)
- |((vga.attribute.data[0x14]&0xf)<<4)];
+ vga.pens[i] = m_palette->pen((vga.attribute.data[i]&0x0f)
+ |((vga.attribute.data[0x14]&0xf)<<4));
}
}
else
{
for (i=0; i<16;i++)
{
- vga.pens[i]=machine().pens[(vga.attribute.data[i]&0x3f)
- |((vga.attribute.data[0x14]&0xc)<<4)];
+ vga.pens[i]=m_palette->pen((vga.attribute.data[i]&0x3f)
+ |((vga.attribute.data[0x14]&0xc)<<4));
}
}
@@ -980,7 +982,7 @@ UINT32 vga_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, co
UINT8 cur_mode = pc_vga_choosevideomode();
switch(cur_mode)
{
- case SCREEN_OFF: bitmap.fill (get_black_pen(machine()), cliprect);break;
+ case SCREEN_OFF: bitmap.fill (m_palette->black_pen(), cliprect);break;
case TEXT_MODE: vga_vh_text (bitmap, cliprect); break;
case VGA_MODE: vga_vh_vga (bitmap, cliprect); break;
case EGA_MODE: vga_vh_ega (bitmap, cliprect); break;
@@ -997,7 +999,7 @@ UINT32 svga_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, c
switch(cur_mode)
{
- case SCREEN_OFF: bitmap.fill (get_black_pen(machine()), cliprect);break;
+ case SCREEN_OFF: bitmap.fill (m_palette->black_pen(), cliprect);break;
case TEXT_MODE: vga_vh_text (bitmap, cliprect); break;
case VGA_MODE: vga_vh_vga (bitmap, cliprect); break;
case EGA_MODE: vga_vh_ega (bitmap, cliprect); break;
@@ -1064,8 +1066,8 @@ UINT32 s3_vga_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
}
else /* TODO: other modes */
{
- bg_col = screen.machine().pens[s3.cursor_bg[0]];
- fg_col = screen.machine().pens[s3.cursor_fg[0]];
+ bg_col = m_palette->pen(s3.cursor_bg[0]);
+ fg_col = m_palette->pen(s3.cursor_fg[0]);
}
//popmessage("%08x %08x",(s3.cursor_bg[0])|(s3.cursor_bg[1]<<8)|(s3.cursor_bg[2]<<16)|(s3.cursor_bg[3]<<24)
@@ -2113,7 +2115,7 @@ MACHINE_CONFIG_FRAGMENT( pcvideo_vga )
MCFG_SCREEN_RAW_PARAMS(XTAL_25_1748MHz,900,0,640,526,0,480)
MCFG_SCREEN_UPDATE_DEVICE("vga", vga_device, screen_update)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_DEVICE_ADD("vga", VGA, 0)
MACHINE_CONFIG_END
@@ -2122,7 +2124,7 @@ MACHINE_CONFIG_FRAGMENT( pcvideo_trident_vga )
MCFG_SCREEN_RAW_PARAMS(XTAL_25_1748MHz,900,0,640,526,0,480)
MCFG_SCREEN_UPDATE_DEVICE("vga", trident_vga_device, screen_update)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_DEVICE_ADD("vga", TRIDENT_VGA, 0)
MACHINE_CONFIG_END
@@ -2131,7 +2133,7 @@ MACHINE_CONFIG_FRAGMENT( pcvideo_cirrus_vga )
MCFG_SCREEN_RAW_PARAMS(XTAL_25_1748MHz,900,0,640,526,0,480)
MCFG_SCREEN_UPDATE_DEVICE("vga", cirrus_vga_device, screen_update)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_DEVICE_ADD("vga", CIRRUS_VGA, 0)
MACHINE_CONFIG_END
@@ -2140,7 +2142,7 @@ MACHINE_CONFIG_FRAGMENT( pcvideo_gamtor_vga )
MCFG_SCREEN_RAW_PARAMS(XTAL_25_1748MHz,900,0,640,526,0,480)
MCFG_SCREEN_UPDATE_DEVICE("vga", gamtor_vga_device, screen_update)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_DEVICE_ADD("vga", GAMTOR_VGA, 0)
MACHINE_CONFIG_END
@@ -2149,7 +2151,7 @@ MACHINE_CONFIG_FRAGMENT( pcvideo_s3_vga )
MCFG_SCREEN_RAW_PARAMS(XTAL_25_1748MHz,900,0,640,526,0,480)
MCFG_SCREEN_UPDATE_DEVICE("vga", s3_vga_device, screen_update)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_DEVICE_ADD("vga", S3_VGA, 0)
MACHINE_CONFIG_END
diff --git a/src/emu/video/pc_vga.h b/src/emu/video/pc_vga.h
index ec8131acc4f..62243c68103 100644
--- a/src/emu/video/pc_vga.h
+++ b/src/emu/video/pc_vga.h
@@ -190,6 +190,7 @@ protected:
} vga;
emu_timer *m_vblank_timer;
+ required_device<palette_device> m_palette;
};
diff --git a/src/emu/video/psx.c b/src/emu/video/psx.c
index f523d9372cc..6bf4867c21a 100644
--- a/src/emu/video/psx.c
+++ b/src/emu/video/psx.c
@@ -360,7 +360,7 @@ int psxgpu_device::DebugTextureDisplay( bitmap_ind16 &bitmap )
}
p_n_interleave[ n_x ] = p_p_vram[ n_yi ][ n_xi ];
}
- draw_scanline16( bitmap, 0, n_y, width, p_n_interleave, machine().pens );
+ draw_scanline16( bitmap, 0, n_y, width, p_n_interleave, screen->palette()->pens() );
}
}
return m_debug.b_texture;
@@ -3792,7 +3792,7 @@ PALETTE_INIT_MEMBER( psxgpu_device, psx )
for( n_colour = 0; n_colour < 0x10000; n_colour++ )
{
- palette_set_color( machine(), n_colour, pal555(n_colour, 0, 5, 10) );
+ palette.set_pen_color( n_colour, pal555(n_colour,0, 5, 10) );
}
}
@@ -3805,8 +3805,8 @@ MACHINE_CONFIG_FRAGMENT( psxgpu )
MCFG_SCREEN_UPDATE_DEVICE( DEVICE_SELF, psxgpu_device, update_screen )
((screen_device *)device)->register_vblank_callback(vblank_state_delegate(FUNC(psxgpu_device::vblank), (psxgpu_device *) owner));
- MCFG_PALETTE_LENGTH( 65536 )
- MCFG_PALETTE_INIT_OVERRIDE(psxgpu_device, psx)
+ MCFG_PALETTE_ADD( "palette", 65536 )
+ MCFG_PALETTE_INIT_OWNER(psxgpu_device, psx)
MACHINE_CONFIG_END
//-------------------------------------------------
diff --git a/src/emu/video/ramdac.c b/src/emu/video/ramdac.c
index 956601ebfd7..eb27cd0619b 100644
--- a/src/emu/video/ramdac.c
+++ b/src/emu/video/ramdac.c
@@ -42,11 +42,22 @@ const device_type RAMDAC = &device_creator<ramdac_device>;
ramdac_device::ramdac_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, RAMDAC, "ramdac", tag, owner, clock, "ramdac", __FILE__),
device_memory_interface(mconfig, *this),
- m_space_config("videoram", ENDIANNESS_LITTLE, 8, 10, 0, NULL, *ADDRESS_MAP_NAME(ramdac_palram))
+ m_space_config("videoram", ENDIANNESS_LITTLE, 8, 10, 0, NULL, *ADDRESS_MAP_NAME(ramdac_palram)),
+ m_palette(*this)
{
}
//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void ramdac_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<ramdac_device &>(device).m_palette.set_tag(tag);
+}
+
+//-------------------------------------------------
// memory_space_config - return a description of
// any address spaces owned by this device
//-------------------------------------------------
@@ -198,7 +209,7 @@ WRITE8_MEMBER( ramdac_device::ramdac_rgb666_w )
m_palram[offset] = data & 0x3f;
pal_offs = (offset & 0xff);
- palette_set_color_rgb(machine(),offset&0xff,pal6bit(m_palram[pal_offs|0x000]),pal6bit(m_palram[pal_offs|0x100]),pal6bit(m_palram[pal_offs|0x200]));
+ m_palette->set_pen_color(offset&0xff,pal6bit(m_palram[pal_offs|0x000]),pal6bit(m_palram[pal_offs|0x100]),pal6bit(m_palram[pal_offs|0x200]));
}
WRITE8_MEMBER( ramdac_device::ramdac_rgb888_w )
@@ -208,5 +219,5 @@ WRITE8_MEMBER( ramdac_device::ramdac_rgb888_w )
m_palram[offset] = data;
pal_offs = (offset & 0xff);
- palette_set_color_rgb(machine(),offset&0xff,m_palram[pal_offs|0x000],m_palram[pal_offs|0x100],m_palram[pal_offs|0x200]);
+ m_palette->set_pen_color(offset&0xff,m_palram[pal_offs|0x000],m_palram[pal_offs|0x100],m_palram[pal_offs|0x200]);
}
diff --git a/src/emu/video/ramdac.h b/src/emu/video/ramdac.h
index 1be4dec2eb3..523b4ab64b3 100644
--- a/src/emu/video/ramdac.h
+++ b/src/emu/video/ramdac.h
@@ -16,10 +16,11 @@
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_RAMDAC_ADD(_tag,_config,_map) \
+#define MCFG_RAMDAC_ADD(_tag,_config,_map,_palette_tag) \
MCFG_DEVICE_ADD(_tag, RAMDAC, 0) \
MCFG_DEVICE_CONFIG(_config) \
- MCFG_DEVICE_ADDRESS_MAP(AS_0, _map)
+ MCFG_DEVICE_ADDRESS_MAP(AS_0, _map) \
+ ramdac_device::static_set_palette_tag(*device, "^" _palette_tag);
#define RAMDAC_INTERFACE(name) \
const ramdac_interface (name) =
@@ -45,6 +46,9 @@ public:
// construction/destruction
ramdac_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ // static configuration
+ static void static_set_palette_tag(device_t &device, const char *tag);
+
// I/O operations
DECLARE_READ8_MEMBER( index_r );
DECLARE_READ8_MEMBER( pal_r );
@@ -75,7 +79,8 @@ private:
UINT8 m_int_index[2];
UINT8 *m_palram;
- const address_space_config m_space_config;
+ const address_space_config m_space_config;
+ required_device<palette_device> m_palette;
};
diff --git a/src/emu/video/saa5050.c b/src/emu/video/saa5050.c
index bad179b3ff1..bfe80e3f97d 100644
--- a/src/emu/video/saa5050.c
+++ b/src/emu/video/saa5050.c
@@ -108,7 +108,7 @@ enum
};
-static const rgb_t PALETTE[] =
+static const rgb_t PALETTE_SAA5050[] =
{
rgb_t::black,
rgb_t(0xff, 0x00, 0x00),
diff --git a/src/emu/video/stvvdp2.c b/src/emu/video/stvvdp2.c
index 4098646fa34..1aca651daf8 100644
--- a/src/emu/video/stvvdp2.c
+++ b/src/emu/video/stvvdp2.c
@@ -2413,7 +2413,7 @@ void saturn_state::stv_vdp2_drawgfxzoom(
if( gfx )
{
- const pen_t *pal = &gfx->machine().pens[gfx->colorbase() + gfx->granularity() * (color % gfx->colors())];
+ const pen_t *pal = &m_palette->pen(gfx->colorbase() + gfx->granularity() * (color % gfx->colors()));
const UINT8 *source_base = gfx->get_data(code % gfx->elements());
//int sprite_screen_height = (scaley*gfx->height()+0x8000)>>16;
@@ -3027,7 +3027,7 @@ void saturn_state::stv_vdp2_drawgfx_alpha(bitmap_rgb32 &dest_bmp,const rectangle
UINT32 code,UINT32 color, int flipx,int flipy,int offsx,int offsy,
int transparent_color, int alpha)
{
- const pen_t *pal = &gfx->machine().pens[gfx->colorbase() + gfx->granularity() * (color % gfx->colors())];
+ const pen_t *pal = &m_palette->pen(gfx->colorbase() + gfx->granularity() * (color % gfx->colors()));
const UINT8 *source_base = gfx->get_data(code % gfx->elements());
int x_index_base, y_index, sx, sy, ex, ey;
int xinc, yinc;
@@ -3104,7 +3104,7 @@ void saturn_state::stv_vdp2_drawgfx_transpen(bitmap_rgb32 &dest_bmp,const rectan
UINT32 code,UINT32 color, int flipx,int flipy,int offsx,int offsy,
int transparent_color)
{
- const pen_t *pal = &gfx->machine().pens[gfx->colorbase() + gfx->granularity() * (color % gfx->colors())];
+ const pen_t *pal = &m_palette->pen(gfx->colorbase() + gfx->granularity() * (color % gfx->colors()));
const UINT8 *source_base = gfx->get_data(code % gfx->elements());
int x_index_base, y_index, sx, sy, ex, ey;
int xinc, yinc;
@@ -3224,9 +3224,9 @@ void saturn_state::draw_4bpp_bitmap(bitmap_rgb32 &bitmap, const rectangle &clipr
dot_data += pal_bank;
if ( stv2_current_tilemap.colour_calculation_enabled == 0 )
- bitmap.pix32(ydst, xdst) = machine().pens[dot_data];
+ bitmap.pix32(ydst, xdst) = m_palette->pen(dot_data);
else
- bitmap.pix32(ydst, xdst) = alpha_blend_r32(bitmap.pix32(ydst, xdst), machine().pens[dot_data], stv2_current_tilemap.alpha);
+ bitmap.pix32(ydst, xdst) = alpha_blend_r32(bitmap.pix32(ydst, xdst), m_palette->pen(dot_data), stv2_current_tilemap.alpha);
}
}
}
@@ -3284,9 +3284,9 @@ void saturn_state::draw_8bpp_bitmap(bitmap_rgb32 &bitmap, const rectangle &clipr
dot_data += pal_bank;
if ( stv2_current_tilemap.colour_calculation_enabled == 0 )
- bitmap.pix32(ydst, xdst) = machine().pens[dot_data];
+ bitmap.pix32(ydst, xdst) = m_palette->pen(dot_data);
else
- bitmap.pix32(ydst, xdst) = alpha_blend_r32(bitmap.pix32(ydst, xdst), machine().pens[dot_data], stv2_current_tilemap.alpha);
+ bitmap.pix32(ydst, xdst) = alpha_blend_r32(bitmap.pix32(ydst, xdst), m_palette->pen(dot_data), stv2_current_tilemap.alpha);
}
}
}
@@ -3341,9 +3341,9 @@ void saturn_state::draw_11bpp_bitmap(bitmap_rgb32 &bitmap, const rectangle &clip
dot_data += pal_bank;
if ( stv2_current_tilemap.colour_calculation_enabled == 0 )
- bitmap.pix32(ydst, xdst) = machine().pens[dot_data];
+ bitmap.pix32(ydst, xdst) = m_palette->pen(dot_data);
else
- bitmap.pix32(ydst, xdst) = alpha_blend_r32(bitmap.pix32(ydst, xdst), machine().pens[dot_data], stv2_current_tilemap.alpha);
+ bitmap.pix32(ydst, xdst) = alpha_blend_r32(bitmap.pix32(ydst, xdst), m_palette->pen(dot_data), stv2_current_tilemap.alpha);
}
}
}
@@ -4348,7 +4348,7 @@ void saturn_state::stv_vdp2_draw_line(bitmap_rgb32 &bitmap, const rectangle &cli
pen = (gfxdata[base_offs+0]<<8)|gfxdata[base_offs+1];
pix = bitmap.pix32(y, x);
- bitmap.pix32(y, x) = stv_add_blend(machine().pens[pen & 0x7ff],pix);
+ bitmap.pix32(y, x) = stv_add_blend(m_palette->pen(pen & 0x7ff),pix);
}
}
}
@@ -5431,7 +5431,7 @@ void saturn_state::stv_vdp2_draw_rotation_screen(bitmap_rgb32 &bitmap, const rec
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 )
{
- m_vdp2.roz_bitmap[iRP-1].fill(get_black_pen(machine()), roz_clip_rect );
+ m_vdp2.roz_bitmap[iRP-1].fill(m_palette->black_pen(), roz_clip_rect );
stv_vdp2_check_tilemap(m_vdp2.roz_bitmap[iRP-1], roz_clip_rect);
// prepare cache data
stv_rbg_cache_data.watch_vdp2_vram_writes |= iRP;
@@ -5588,7 +5588,7 @@ void saturn_state::stv_vdp2_draw_back(bitmap_rgb32 &bitmap, const rectangle &cli
/* draw black if BDCLMD and DISP are cleared */
if(!(STV_VDP2_BDCLMD) && !(STV_VDP2_DISP))
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
else
{
base_mask = STV_VDP2_VRAMSZ ? 0x7ffff : 0x3ffff;
@@ -5782,8 +5782,8 @@ WRITE32_MEMBER ( saturn_state::saturn_vdp2_cram_w )
b = ((m_vdp2_cram[offset] & 0x00ff0000) >> 16);
g = ((m_vdp2_cram[offset] & 0x0000ff00) >> 8);
r = ((m_vdp2_cram[offset] & 0x000000ff) >> 0);
- palette_set_color(space.machine(),offset,rgb_t(r,g,b));
- palette_set_color(space.machine(),offset^0x400,rgb_t(r,g,b));
+ m_palette->set_pen_color(offset,rgb_t(r,g,b));
+ m_palette->set_pen_color(offset^0x400,rgb_t(r,g,b));
}
break;
/*Mode 0*/
@@ -5795,16 +5795,16 @@ WRITE32_MEMBER ( saturn_state::saturn_vdp2_cram_w )
b = ((m_vdp2_cram[offset] & 0x00007c00) >> 10);
g = ((m_vdp2_cram[offset] & 0x000003e0) >> 5);
r = ((m_vdp2_cram[offset] & 0x0000001f) >> 0);
- palette_set_color_rgb(space.machine(),(offset*2)+1,pal5bit(r),pal5bit(g),pal5bit(b));
+ m_palette->set_pen_color((offset*2)+1,pal5bit(r),pal5bit(g),pal5bit(b));
if(cmode0)
- palette_set_color_rgb(space.machine(),((offset*2)+1)^0x400,pal5bit(r),pal5bit(g),pal5bit(b));
+ m_palette->set_pen_color(((offset*2)+1)^0x400,pal5bit(r),pal5bit(g),pal5bit(b));
b = ((m_vdp2_cram[offset] & 0x7c000000) >> 26);
g = ((m_vdp2_cram[offset] & 0x03e00000) >> 21);
r = ((m_vdp2_cram[offset] & 0x001f0000) >> 16);
- palette_set_color_rgb(space.machine(),offset*2,pal5bit(r),pal5bit(g),pal5bit(b));
+ m_palette->set_pen_color(offset*2,pal5bit(r),pal5bit(g),pal5bit(b));
if(cmode0)
- palette_set_color_rgb(space.machine(),(offset*2)^0x400,pal5bit(r),pal5bit(g),pal5bit(b));
+ m_palette->set_pen_color((offset*2)^0x400,pal5bit(r),pal5bit(g),pal5bit(b));
}
break;
}
@@ -5826,8 +5826,8 @@ void saturn_state::refresh_palette_data( void )
b = ((m_vdp2_cram[c_i] & 0x00ff0000) >> 16);
g = ((m_vdp2_cram[c_i] & 0x0000ff00) >> 8);
r = ((m_vdp2_cram[c_i] & 0x000000ff) >> 0);
- palette_set_color(machine(),c_i,rgb_t(r,g,b));
- palette_set_color(machine(),c_i+0x400,rgb_t(r,g,b));
+ m_palette->set_pen_color(c_i,rgb_t(r,g,b));
+ m_palette->set_pen_color(c_i+0x400,rgb_t(r,g,b));
}
}
break;
@@ -5840,11 +5840,11 @@ void saturn_state::refresh_palette_data( void )
b = ((m_vdp2_cram[c_i] & 0x00007c00) >> 10);
g = ((m_vdp2_cram[c_i] & 0x000003e0) >> 5);
r = ((m_vdp2_cram[c_i] & 0x0000001f) >> 0);
- palette_set_color_rgb(machine(),(c_i*2)+1+bank*0x400,pal5bit(r),pal5bit(g),pal5bit(b));
+ m_palette->set_pen_color((c_i*2)+1+bank*0x400,pal5bit(r),pal5bit(g),pal5bit(b));
b = ((m_vdp2_cram[c_i] & 0x7c000000) >> 26);
g = ((m_vdp2_cram[c_i] & 0x03e00000) >> 21);
r = ((m_vdp2_cram[c_i] & 0x001f0000) >> 16);
- palette_set_color_rgb(machine(),c_i*2+bank*0x400,pal5bit(r),pal5bit(g),pal5bit(b));
+ m_palette->set_pen_color(c_i*2+bank*0x400,pal5bit(r),pal5bit(g),pal5bit(b));
}
}
}
@@ -5856,11 +5856,11 @@ void saturn_state::refresh_palette_data( void )
b = ((m_vdp2_cram[c_i] & 0x00007c00) >> 10);
g = ((m_vdp2_cram[c_i] & 0x000003e0) >> 5);
r = ((m_vdp2_cram[c_i] & 0x0000001f) >> 0);
- palette_set_color_rgb(machine(),(c_i*2)+1,pal5bit(r),pal5bit(g),pal5bit(b));
+ m_palette->set_pen_color((c_i*2)+1,pal5bit(r),pal5bit(g),pal5bit(b));
b = ((m_vdp2_cram[c_i] & 0x7c000000) >> 26);
g = ((m_vdp2_cram[c_i] & 0x03e00000) >> 21);
r = ((m_vdp2_cram[c_i] & 0x001f0000) >> 16);
- palette_set_color_rgb(machine(),c_i*2,pal5bit(r),pal5bit(g),pal5bit(b));
+ m_palette->set_pen_color(c_i*2,pal5bit(r),pal5bit(g),pal5bit(b));
}
}
break;
@@ -6205,7 +6205,7 @@ void saturn_state::stv_vdp2_fade_effects( void )
for(i=0;i<2048;i++)
{
/*Fade A*/
- color = palette_get_color(machine(), i);
+ color = m_palette->pen_color(i);
t_r = (STV_VDP2_COAR & 0x100) ? (color.r() - (0x100 - (STV_VDP2_COAR & 0xff))) : ((STV_VDP2_COAR & 0xff) + color.r());
t_g = (STV_VDP2_COAG & 0x100) ? (color.g() - (0x100 - (STV_VDP2_COAG & 0xff))) : ((STV_VDP2_COAG & 0xff) + color.g());
t_b = (STV_VDP2_COAB & 0x100) ? (color.b() - (0x100 - (STV_VDP2_COAB & 0xff))) : ((STV_VDP2_COAB & 0xff) + color.b());
@@ -6218,10 +6218,10 @@ void saturn_state::stv_vdp2_fade_effects( void )
r = t_r;
g = t_g;
b = t_b;
- palette_set_color(machine(),i+(2048*1),rgb_t(r,g,b));
+ m_palette->set_pen_color(i+(2048*1),rgb_t(r,g,b));
/*Fade B*/
- color = palette_get_color(machine(), i);
+ color = m_palette->pen_color(i);
t_r = (STV_VDP2_COBR & 0x100) ? (color.r() - (0xff - (STV_VDP2_COBR & 0xff))) : ((STV_VDP2_COBR & 0xff) + color.r());
t_g = (STV_VDP2_COBG & 0x100) ? (color.g() - (0xff - (STV_VDP2_COBG & 0xff))) : ((STV_VDP2_COBG & 0xff) + color.g());
t_b = (STV_VDP2_COBB & 0x100) ? (color.b() - (0xff - (STV_VDP2_COBB & 0xff))) : ((STV_VDP2_COBB & 0xff) + color.b());
@@ -6234,7 +6234,7 @@ void saturn_state::stv_vdp2_fade_effects( void )
r = t_r;
g = t_g;
b = t_b;
- palette_set_color(machine(),i+(2048*2),rgb_t(r,g,b));
+ m_palette->set_pen_color(i+(2048*2),rgb_t(r,g,b));
}
//popmessage("%04x %04x %04x %04x %04x %04x",STV_VDP2_COAR,STV_VDP2_COAG,STV_VDP2_COAB,STV_VDP2_COBR,STV_VDP2_COBG,STV_VDP2_COBB);
}
@@ -6581,7 +6581,7 @@ void saturn_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect,
pix += (STV_VDP2_SPCAOS << 8);
pix &= 0x7ff;
pix += color_offset_pal;
- bitmap_line[x] = machine().pens[ pix ];
+ bitmap_line[x] = m_palette->pen( pix );
}
}
@@ -6681,15 +6681,15 @@ void saturn_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect,
{
if ( STV_VDP2_CCMD )
{
- bitmap_line[x] = stv_add_blend( bitmap_line[x], machine().pens[pix] );
+ bitmap_line[x] = stv_add_blend( bitmap_line[x], m_palette->pen(pix) );
}
else
{
- bitmap_line[x] = alpha_blend_r32( bitmap_line[x], machine().pens[pix], ((UINT16)(0x1f-ccr)*0xff)/0x1f );
+ bitmap_line[x] = alpha_blend_r32( bitmap_line[x], m_palette->pen(pix), ((UINT16)(0x1f-ccr)*0xff)/0x1f );
}
}
else
- bitmap_line[x] = machine().pens[pix];
+ bitmap_line[x] = m_palette->pen(pix);
}
}
@@ -6848,15 +6848,15 @@ void saturn_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect,
{
if(double_x)
{
- bitmap_line[x*2] = machine().pens[ pix ];
- if ( interlace_framebuffer == 1 ) bitmap_line2[x*2] = machine().pens[ pix ];
- bitmap_line[x*2+1] = machine().pens[ pix ];
- if ( interlace_framebuffer == 1 ) bitmap_line2[x*2+1] = machine().pens[ pix ];
+ bitmap_line[x*2] = m_palette->pen( pix );
+ if ( interlace_framebuffer == 1 ) bitmap_line2[x*2] = m_palette->pen( pix );
+ bitmap_line[x*2+1] = m_palette->pen( pix );
+ if ( interlace_framebuffer == 1 ) bitmap_line2[x*2+1] = m_palette->pen( pix );
}
else
{
- bitmap_line[x] = machine().pens[ pix ];
- if ( interlace_framebuffer == 1 ) bitmap_line2[x] = machine().pens[ pix ];
+ bitmap_line[x] = m_palette->pen( pix );
+ if ( interlace_framebuffer == 1 ) bitmap_line2[x] = m_palette->pen( pix );
}
}
else // alpha_blend == 1
@@ -6865,30 +6865,30 @@ void saturn_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect,
{
if(double_x)
{
- bitmap_line[x*2] = stv_add_blend( bitmap_line[x*2], machine().pens[pix] );
- if ( interlace_framebuffer == 1 ) bitmap_line2[x*2] = stv_add_blend( bitmap_line2[x], machine().pens[pix] );
- bitmap_line[x*2+1] = stv_add_blend( bitmap_line[x*2+1], machine().pens[pix] );
- if ( interlace_framebuffer == 1 ) bitmap_line2[x*2+1] = stv_add_blend( bitmap_line2[x], machine().pens[pix] );
+ bitmap_line[x*2] = stv_add_blend( bitmap_line[x*2], m_palette->pen(pix) );
+ if ( interlace_framebuffer == 1 ) bitmap_line2[x*2] = stv_add_blend( bitmap_line2[x], m_palette->pen(pix) );
+ bitmap_line[x*2+1] = stv_add_blend( bitmap_line[x*2+1], m_palette->pen(pix) );
+ if ( interlace_framebuffer == 1 ) bitmap_line2[x*2+1] = stv_add_blend( bitmap_line2[x], m_palette->pen(pix) );
}
else
{
- bitmap_line[x] = stv_add_blend( bitmap_line[x], machine().pens[pix] );
- if ( interlace_framebuffer == 1 ) bitmap_line2[x] = stv_add_blend( bitmap_line2[x], machine().pens[pix] );
+ bitmap_line[x] = stv_add_blend( bitmap_line[x], m_palette->pen(pix) );
+ if ( interlace_framebuffer == 1 ) bitmap_line2[x] = stv_add_blend( bitmap_line2[x], m_palette->pen(pix) );
}
}
else
{
if(double_x)
{
- 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 );
+ bitmap_line[x*2] = alpha_blend_r32( bitmap_line[x*2], m_palette->pen(pix), ((UINT16)(0x1f-ccr)*0xff)/0x1f );
+ if ( interlace_framebuffer == 1 ) bitmap_line2[x*2] = alpha_blend_r32( bitmap_line2[x], m_palette->pen(pix), ((UINT16)(0x1f-ccr)*0xff)/0x1f );
+ bitmap_line[x*2+1] = alpha_blend_r32( bitmap_line[x*2+1], m_palette->pen(pix), ((UINT16)(0x1f-ccr)*0xff)/0x1f );
+ if ( interlace_framebuffer == 1 ) bitmap_line2[x*2+1] = alpha_blend_r32( bitmap_line2[x], m_palette->pen(pix), ((UINT16)(0x1f-ccr)*0xff)/0x1f );
}
else
{
- 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 );
+ bitmap_line[x] = alpha_blend_r32( bitmap_line[x], m_palette->pen(pix), ((UINT16)(0x1f-ccr)*0xff)/0x1f );
+ if ( interlace_framebuffer == 1 ) bitmap_line2[x] = alpha_blend_r32( bitmap_line2[x], m_palette->pen(pix), ((UINT16)(0x1f-ccr)*0xff)/0x1f );
}
}
}
diff --git a/src/emu/video/upd3301.c b/src/emu/video/upd3301.c
index 98c40888e69..af320281977 100644
--- a/src/emu/video/upd3301.c
+++ b/src/emu/video/upd3301.c
@@ -651,7 +651,7 @@ UINT32 upd3301_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap
}
else
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(rgb_t(0x00,0x00,0x00), cliprect);
}
return 0;
}
diff --git a/src/emu/video/v9938.c b/src/emu/video/v9938.c
index 9874cdc1c70..926e56d619c 100644
--- a/src/emu/video/v9938.c
+++ b/src/emu/video/v9938.c
@@ -92,7 +92,8 @@ v99x8_device::v99x8_device(const machine_config &mconfig, device_type type, cons
m_my_delta(0),
m_button_state(0),
m_vdp_ops_count(0),
- m_vdp_engine(NULL)
+ m_vdp_engine(NULL),
+ m_palette(*this, "palette")
{
static_set_addrmap(*this, AS_DATA, ADDRESS_MAP_NAME(memmap));
}
@@ -249,7 +250,7 @@ PALETTE_INIT_MEMBER(v99x8_device, v9938)
// 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));
+ palette.set_pen_color(i, pal3bit(i >> 6), pal3bit(i >> 3), pal3bit(i >> 0));
}
/*
@@ -271,9 +272,9 @@ PALETTE_INIT_MEMBER(v9958_device, v9958)
UINT8 pal[19268*3];
// init v9938 512-color palette
- PALETTE_INIT_CALL_MEMBER(v9938);
+ PALETTE_INIT_NAME(v9938)(palette);
- if(machine().total_colors() != 19780)
+ if(palette.entries() != 19780)
fatalerror("V9958: not enough palette, must be 19780");
// set up YJK table
@@ -312,7 +313,7 @@ PALETTE_INIT_MEMBER(v9958_device, v9958)
pal[i*3+0] = r;
pal[i*3+1] = g;
pal[i*3+2] = b;
- palette_set_color(machine(), i+512, rgb_t(pal5bit(r), pal5bit(g), pal5bit(b)));
+ palette.set_pen_color(i+512, rgb_t(pal5bit(r), pal5bit(g), pal5bit(b)));
v99x8_device::s_pal_indYJK[y | j << 5 | k << (5 + 6)] = i + 512;
i++;
}
@@ -2020,7 +2021,7 @@ void v99x8_device::set_mode()
void v99x8_device::refresh_16(int line)
{
- const pen_t *pens = machine().pens;
+ const pen_t *pens = m_palette->pens();
int i, double_lines;
UINT8 col[256];
UINT16 *ln, *ln2 = NULL;
@@ -3259,7 +3260,8 @@ void v99x8_device::update_command()
}
static MACHINE_CONFIG_FRAGMENT( v9938 )
- MCFG_PALETTE_INIT_OVERRIDE(v9938_device, v9938)
+ MCFG_PALETTE_ADD("palette", 19780)
+ MCFG_PALETTE_INIT_OWNER(v9938_device, v9938)
MACHINE_CONFIG_END
//-------------------------------------------------
@@ -3273,7 +3275,8 @@ machine_config_constructor v9938_device::device_mconfig_additions() const
}
static MACHINE_CONFIG_FRAGMENT( v9958 )
- MCFG_PALETTE_INIT_OVERRIDE(v9958_device, v9958)
+ MCFG_PALETTE_ADD("palette", 19780)
+ MCFG_PALETTE_INIT_OWNER(v9958_device, v9958)
MACHINE_CONFIG_END
//-------------------------------------------------
diff --git a/src/emu/video/v9938.h b/src/emu/video/v9938.h
index e3cd70443e8..8c786af9712 100644
--- a/src/emu/video/v9938.h
+++ b/src/emu/video/v9938.h
@@ -235,8 +235,8 @@ private:
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 const v99x8_mode s_modes[];
+ required_device<palette_device> m_palette;
protected:
static UINT16 s_pal_indYJK[0x20000];
};
diff --git a/src/mame/drivers/1942.c b/src/mame/drivers/1942.c
index 5606592f093..c419b43e579 100644
--- a/src/mame/drivers/1942.c
+++ b/src/mame/drivers/1942.c
@@ -191,7 +191,7 @@ WRITE8_MEMBER(_1942_state::c1942p_palette_w)
int g = (data & 0x38) >> 3;
int b = (data & 0xc0) >> 6;
- colortable_palette_set_color(machine().colortable, offset, rgb_t(r<<5,g<<5,b<<6));
+ m_palette->set_indirect_color(offset, rgb_t(r<<5,g<<5,b<<6));
}
static ADDRESS_MAP_START( c1942p_map, AS_PROGRAM, 8, _1942_state )
@@ -541,7 +541,9 @@ static MACHINE_CONFIG_START( 1942, _1942_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", 1942)
- MCFG_PALETTE_LENGTH(64*4+4*32*8+16*16)
+
+ MCFG_PALETTE_ADD("palette", 64*4+4*32*8+16*16)
+ MCFG_PALETTE_INIT_OWNER(_1942_state, 1942)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -598,8 +600,8 @@ static MACHINE_CONFIG_START( 1942p, _1942_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", 1942p)
- MCFG_PALETTE_LENGTH(0x500)
- MCFG_PALETTE_INIT_OVERRIDE(_1942_state, 1942p)
+ MCFG_PALETTE_ADD("palette", 0x500)
+ MCFG_PALETTE_INIT_OWNER(_1942_state, 1942p)
MCFG_VIDEO_START_OVERRIDE(_1942_state,c1942p)
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/1943.c b/src/mame/drivers/1943.c
index 8b60947b1cd..e7ff9142da4 100644
--- a/src/mame/drivers/1943.c
+++ b/src/mame/drivers/1943.c
@@ -321,7 +321,8 @@ static MACHINE_CONFIG_START( 1943, _1943_state )
MCFG_SCREEN_UPDATE_DRIVER(_1943_state, screen_update_1943)
MCFG_GFXDECODE_ADD("gfxdecode", 1943)
- MCFG_PALETTE_LENGTH(32*4+16*16+16*16+16*16)
+ MCFG_PALETTE_ADD("palette", 32*4+16*16+16*16+16*16)
+ MCFG_PALETTE_INIT_OWNER(_1943_state, 1943)
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/1945kiii.c b/src/mame/drivers/1945kiii.c
index 29f76197eab..b8cea59e7cd 100644
--- a/src/mame/drivers/1945kiii.c
+++ b/src/mame/drivers/1945kiii.c
@@ -118,10 +118,10 @@ void k3_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
ypos = (source[0] & 0x00ff) >> 0;
tileno = (source2[0] & 0x7ffe) >> 1;
xpos |= (source2[0] & 0x0001) << 8;
- gfx->transpen(bitmap,cliprect, tileno, 1, 0, 0, xpos, ypos, 0);
- gfx->transpen(bitmap,cliprect, tileno, 1, 0, 0, xpos, ypos - 0x100, 0); // wrap
- gfx->transpen(bitmap,cliprect, tileno, 1, 0, 0, xpos - 0x200, ypos, 0); // wrap
- gfx->transpen(bitmap,cliprect, tileno, 1, 0, 0, xpos - 0x200, ypos - 0x100, 0); // wrap
+ gfx->transpen(m_palette,bitmap,cliprect, tileno, 1, 0, 0, xpos, ypos, 0);
+ gfx->transpen(m_palette,bitmap,cliprect, tileno, 1, 0, 0, xpos, ypos - 0x100, 0); // wrap
+ gfx->transpen(m_palette,bitmap,cliprect, tileno, 1, 0, 0, xpos - 0x200, ypos, 0); // wrap
+ gfx->transpen(m_palette,bitmap,cliprect, tileno, 1, 0, 0, xpos - 0x200, ypos - 0x100, 0); // wrap
source++;
source2++;
@@ -158,7 +158,7 @@ static ADDRESS_MAP_START( k3_map, AS_PROGRAM, 16, k3_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
AM_RANGE(0x100000, 0x10ffff) AM_RAM // Main Ram
- AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram") // palette
+ AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // palette
AM_RANGE(0x240000, 0x240fff) AM_RAM AM_SHARE("spritera1")
AM_RANGE(0x280000, 0x280fff) AM_RAM AM_SHARE("spritera2")
AM_RANGE(0x2c0000, 0x2c0fff) AM_RAM_WRITE(k3_bgram_w) AM_SHARE("bgram")
@@ -273,8 +273,8 @@ static MACHINE_CONFIG_START( k3, k3_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
MCFG_SCREEN_UPDATE_DRIVER(k3_state, screen_update_k3)
- MCFG_PALETTE_LENGTH(0x800)
-
+ MCFG_PALETTE_ADD("palette", 0x800)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/2mindril.c b/src/mame/drivers/2mindril.c
index 1a3f8f74834..0550204161d 100644
--- a/src/mame/drivers/2mindril.c
+++ b/src/mame/drivers/2mindril.c
@@ -224,7 +224,7 @@ static ADDRESS_MAP_START( drill_map, AS_PROGRAM, 16, _2mindril_state )
AM_RANGE(0x430000, 0x43ffff) AM_READWRITE(f3_pivot_r,f3_pivot_w)
AM_RANGE(0x460000, 0x46000f) AM_WRITE(f3_control_0_w)
AM_RANGE(0x460010, 0x46001f) AM_WRITE(f3_control_1_w)
- AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x500000, 0x501fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x502022, 0x502023) AM_WRITENOP //countinously switches between 0 and 2
AM_RANGE(0x600000, 0x600007) AM_DEVREADWRITE8("ymsnd", ym2610_device, read, write, 0x00ff)
AM_RANGE(0x60000c, 0x60000d) AM_READWRITE(drill_irq_r,drill_irq_w)
@@ -463,7 +463,8 @@ static MACHINE_CONFIG_START( drill, _2mindril_state )
MCFG_SCREEN_UPDATE_DRIVER(_2mindril_state, screen_update_f3)
MCFG_SCREEN_VBLANK_DRIVER(_2mindril_state, screen_eof_f3)
- MCFG_PALETTE_LENGTH(0x2000)
+ MCFG_PALETTE_ADD("palette", 0x2000)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(_2mindril_state,f3)
diff --git a/src/mame/drivers/39in1.c b/src/mame/drivers/39in1.c
index ce591e1384b..4adc5d94ac9 100644
--- a/src/mame/drivers/39in1.c
+++ b/src/mame/drivers/39in1.c
@@ -1101,7 +1101,7 @@ void _39in1_state::pxa255_lcd_dma_kickoff(int channel)
{
UINT16 color = space.read_word((lcd_regs->dma[channel].fsadr &~ 1) + index);
m_pxa255_lcd_palette[index >> 1] = (((((color >> 11) & 0x1f) << 3) | (color >> 13)) << 16) | (((((color >> 5) & 0x3f) << 2) | ((color >> 9) & 0x3)) << 8) | (((color & 0x1f) << 3) | ((color >> 2) & 0x7));
- palette_set_color_rgb(machine(), index >> 1, (((color >> 11) & 0x1f) << 3) | (color >> 13), (((color >> 5) & 0x3f) << 2) | ((color >> 9) & 0x3), ((color & 0x1f) << 3) | ((color >> 2) & 0x7));
+ m_palette->set_pen_color(index >> 1, (((color >> 11) & 0x1f) << 3) | (color >> 13), (((color >> 5) & 0x3f) << 2) | ((color >> 9) & 0x3), ((color & 0x1f) << 3) | ((color >> 2) & 0x7));
}
}
else
@@ -1580,8 +1580,6 @@ static MACHINE_CONFIG_START( 39in1, _39in1_state )
MCFG_CPU_PROGRAM_MAP(39in1_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", _39in1_state, pxa255_vblank_start)
- MCFG_PALETTE_LENGTH(32768)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
@@ -1589,7 +1587,7 @@ static MACHINE_CONFIG_START( 39in1, _39in1_state )
MCFG_SCREEN_VISIBLE_AREA(0, 295, 0, 479)
MCFG_SCREEN_UPDATE_DRIVER(_39in1_state, screen_update_39in1)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_EEPROM_SERIAL_93C66_ADD("eeprom")
diff --git a/src/mame/drivers/3x3puzzl.c b/src/mame/drivers/3x3puzzl.c
index fabcf9d2a1c..67cf00b54aa 100644
--- a/src/mame/drivers/3x3puzzl.c
+++ b/src/mame/drivers/3x3puzzl.c
@@ -211,7 +211,7 @@ static ADDRESS_MAP_START( _3x3puzzle_map, AS_PROGRAM, 16, _3x3puzzle_state )
AM_RANGE(0x201000, 0x201fff) AM_RAM AM_SHARE("videoram2")
AM_RANGE(0x202000, 0x202fff) AM_RAM AM_SHARE("videoram3")
AM_RANGE(0x280000, 0x280001) AM_READ_PORT("VBLANK")
- AM_RANGE(0x300000, 0x3005ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x300000, 0x3005ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x400000, 0x400001) AM_WRITE(tilemap1_scrollx_w)
AM_RANGE(0x480000, 0x480001) AM_WRITE(tilemap1_scrolly_w)
AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1")
@@ -394,7 +394,8 @@ static MACHINE_CONFIG_START( _3x3puzzle, _3x3puzzle_state )
MCFG_GFXDECODE_ADD("gfxdecode", _3x3puzzle)
- MCFG_PALETTE_LENGTH(0x600/2)
+ MCFG_PALETTE_ADD("palette", 0x600/2)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/40love.c b/src/mame/drivers/40love.c
index 80c38d756a7..2d929e0eaad 100644
--- a/src/mame/drivers/40love.c
+++ b/src/mame/drivers/40love.c
@@ -1075,8 +1075,8 @@ static MACHINE_CONFIG_START( 40love, fortyl_state )
MCFG_SCREEN_UPDATE_DRIVER(fortyl_state, screen_update_fortyl)
MCFG_GFXDECODE_ADD("gfxdecode", 40love)
- MCFG_PALETTE_LENGTH(1024)
-
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_INIT_OWNER(fortyl_state, fortyl)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1130,8 +1130,8 @@ static MACHINE_CONFIG_START( undoukai, fortyl_state )
MCFG_SCREEN_UPDATE_DRIVER(fortyl_state, screen_update_fortyl)
MCFG_GFXDECODE_ADD("gfxdecode", 40love)
- MCFG_PALETTE_LENGTH(1024)
-
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_INIT_OWNER(fortyl_state, fortyl)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/4enraya.c b/src/mame/drivers/4enraya.c
index 9ca2ab73595..0cd84758832 100644
--- a/src/mame/drivers/4enraya.c
+++ b/src/mame/drivers/4enraya.c
@@ -301,13 +301,13 @@ void _4enraya_state::machine_reset()
m_last_snd_ctrl = 0;
}
-void _4enraya_state::palette_init()
+PALETTE_INIT_MEMBER(_4enraya_state, _4enraya)
{
int i;
/* RGB format */
for(i=0;i<8;i++)
- palette_set_color(machine(), i, rgb_t(pal1bit(i >> 0),pal1bit(i >> 1),pal1bit(i >> 2)));
+ m_palette->set_pen_color(i, rgb_t(pal1bit(i >> 0),pal1bit(i >> 1),pal1bit(i >> 2)));
}
static MACHINE_CONFIG_START( 4enraya, _4enraya_state )
@@ -329,8 +329,8 @@ static MACHINE_CONFIG_START( 4enraya, _4enraya_state )
MCFG_GFXDECODE_ADD("gfxdecode", 4enraya)
- MCFG_PALETTE_LENGTH(8)
-
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(_4enraya_state, _4enraya)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/4roses.c b/src/mame/drivers/4roses.c
index 0bab35a3060..8fa0d138b29 100644
--- a/src/mame/drivers/4roses.c
+++ b/src/mame/drivers/4roses.c
@@ -403,8 +403,8 @@ static MACHINE_CONFIG_START( 4roses, _4roses_state )
MCFG_GFXDECODE_ADD("gfxdecode", 4roses)
- MCFG_PALETTE_LENGTH(0x1000)
- MCFG_PALETTE_INIT_OVERRIDE(_4roses_state,funworld)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_INIT_OWNER(_4roses_state,funworld)
MCFG_VIDEO_START_OVERRIDE(_4roses_state,funworld)
// MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK/8, mc6845_intf) /* 2MHz, guess */
diff --git a/src/mame/drivers/5clown.c b/src/mame/drivers/5clown.c
index 5f45edb33e8..c6998f8fa56 100644
--- a/src/mame/drivers/5clown.c
+++ b/src/mame/drivers/5clown.c
@@ -490,7 +490,7 @@ public:
DECLARE_DRIVER_INIT(fclown);
TILE_GET_INFO_MEMBER(get_fclown_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(_5clown);
UINT32 screen_update_fclown(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
@@ -552,7 +552,7 @@ UINT32 _5clown_state::screen_update_fclown(screen_device &screen, bitmap_ind16 &
return 0;
}
-void _5clown_state::palette_init()
+PALETTE_INIT_MEMBER(_5clown_state, _5clown)
{
const UINT8 *color_prom = memregion("proms")->base();
/*
@@ -569,7 +569,7 @@ void _5clown_state::palette_init()
if (color_prom == 0) return;
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < m_palette->entries();i++)
{
int bit0, bit1, bit2, bit3, r, g, b, bk;
@@ -589,7 +589,7 @@ void _5clown_state::palette_init()
bit2 = (color_prom[i] >> 2) & 0x01;
b = bk * (bit2 * 0xff);
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ m_palette->set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -1064,8 +1064,8 @@ static MACHINE_CONFIG_START( fclown, _5clown_state )
MCFG_SCREEN_UPDATE_DRIVER(_5clown_state, screen_update_fclown)
MCFG_GFXDECODE_ADD("gfxdecode", fclown)
- MCFG_PALETTE_LENGTH(256)
-
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(_5clown_state, _5clown)
MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK/16, mc6845_intf) /* guess */
diff --git a/src/mame/drivers/8080bw.c b/src/mame/drivers/8080bw.c
index 2effdb32b69..08e1feed3b2 100644
--- a/src/mame/drivers/8080bw.c
+++ b/src/mame/drivers/8080bw.c
@@ -1265,8 +1265,8 @@ static MACHINE_CONFIG_DERIVED_CLASS( rollingc, mw8080bw_root, _8080bw_state )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_rollingc)
- MCFG_PALETTE_LENGTH(16)
- MCFG_PALETTE_INIT_OVERRIDE(_8080bw_state, rollingc)
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(_8080bw_state, rollingc)
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_samples_audio)
diff --git a/src/mame/drivers/88games.c b/src/mame/drivers/88games.c
index 210bbca16fb..2480671c2ec 100644
--- a/src/mame/drivers/88games.c
+++ b/src/mame/drivers/88games.c
@@ -117,7 +117,7 @@ WRITE8_MEMBER(_88games_state::k052109_051960_w)
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, _88games_state )
AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("banked_rom") /* banked ROM + palette RAM */
- AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_be_w) AM_SHARE("paletteram_1000") /* banked ROM + palette RAM */
+ AM_RANGE(0x1000, 0x1fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* banked ROM + palette RAM */
AM_RANGE(0x2000, 0x2fff) AM_RAM
AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x3800, 0x3fff) AM_READWRITE(bankedram_r, bankedram_w) AM_SHARE("ram")
@@ -359,8 +359,6 @@ static MACHINE_CONFIG_START( 88games, _88games_state )
MCFG_NVRAM_ADD_0FILL("nvram")
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
@@ -368,16 +366,21 @@ static MACHINE_CONFIG_START( 88games, _88games_state )
MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(_88games_state, screen_update_88games)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", _88games_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K051960_ADD("k051960", _88games_k051960_intf)
MCFG_K051960_GFXDECODE("gfxdecode")
+ MCFG_K051960_PALETTE("palette")
MCFG_K051316_ADD("k051316", _88games_k051316_intf)
MCFG_K051316_GFXDECODE("gfxdecode")
+ MCFG_K051316_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/ace.c b/src/mame/drivers/ace.c
index f786ef4e229..ca0d6fd7bc4 100644
--- a/src/mame/drivers/ace.c
+++ b/src/mame/drivers/ace.c
@@ -71,7 +71,6 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
UINT32 screen_update_ace(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void ace_postload();
required_device<gfxdecode_device> m_gfxdecode;
@@ -98,19 +97,19 @@ UINT32 aceal_state::screen_update_ace(screen_device &screen, bitmap_ind16 &bitma
/* first of all, fill the screen with the background color */
bitmap.fill(0, cliprect);
- m_gfxdecode->gfx(1)->opaque(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->opaque(m_palette,bitmap,cliprect,
0,
0,
0, 0,
m_objpos[0], m_objpos[1]);
- m_gfxdecode->gfx(2)->opaque(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->opaque(m_palette,bitmap,cliprect,
0,
0,
0, 0,
m_objpos[2], m_objpos[3]);
- m_gfxdecode->gfx(3)->opaque(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->opaque(m_palette,bitmap,cliprect,
0,
0,
0, 0,
@@ -118,7 +117,7 @@ UINT32 aceal_state::screen_update_ace(screen_device &screen, bitmap_ind16 &bitma
for (offs = 0; offs < 8; offs++)
{
- m_gfxdecode->gfx(4)->opaque(bitmap,/* ?? */
+ m_gfxdecode->gfx(4)->opaque(m_palette,bitmap,/* ?? */
cliprect,
offs,
0,
@@ -129,13 +128,6 @@ UINT32 aceal_state::screen_update_ace(screen_device &screen, bitmap_ind16 &bitma
}
-void aceal_state::palette_init()
-{
- palette_set_color(machine(), 0, rgb_t(0x00,0x00,0x00)); /* black */
- palette_set_color(machine(), 1, rgb_t(0xff,0xff,0xff)); /* white */
-}
-
-
WRITE8_MEMBER(aceal_state::ace_characterram_w)
{
if (m_characterram[offset] != data)
@@ -360,7 +352,7 @@ static MACHINE_CONFIG_START( ace, aceal_state )
MCFG_SCREEN_UPDATE_DRIVER(aceal_state, screen_update_ace)
MCFG_GFXDECODE_ADD("gfxdecode", ace)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
/* ???? */
diff --git a/src/mame/drivers/acefruit.c b/src/mame/drivers/acefruit.c
index 8cc4ee383cb..26930d62d91 100644
--- a/src/mame/drivers/acefruit.c
+++ b/src/mame/drivers/acefruit.c
@@ -42,7 +42,7 @@ public:
DECLARE_CUSTOM_INPUT_MEMBER(starspnr_payout_r);
DECLARE_DRIVER_INIT(sidewndr);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(acefruit);
UINT32 screen_update_acefruit(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(acefruit_vblank);
void acefruit_update_irq(int vpos);
@@ -130,7 +130,7 @@ UINT32 acefruit_state::screen_update_acefruit(screen_device &screen, bitmap_ind1
if( color < 0x4 )
{
- m_gfxdecode->gfx(1)->opaque(bitmap,cliprect, code, color, 0, 0, col * 16, row * 8 );
+ m_gfxdecode->gfx(1)->opaque(m_palette,bitmap,cliprect, code, color, 0, 0, col * 16, row * 8 );
}
else if( color >= 0x5 && color <= 0x7 )
{
@@ -282,27 +282,27 @@ WRITE8_MEMBER(acefruit_state::acefruit_solenoid_w)
}
}
-void acefruit_state::palette_init()
+PALETTE_INIT_MEMBER(acefruit_state, acefruit)
{
/* sprites */
- palette_set_color( machine(), 0, rgb_t(0x00, 0x00, 0x00) );
- palette_set_color( machine(), 1, rgb_t(0x00, 0x00, 0xff) );
- palette_set_color( machine(), 2, rgb_t(0x00, 0xff, 0x00) );
- palette_set_color( machine(), 3, rgb_t(0xff, 0x7f, 0x00) );
- palette_set_color( machine(), 4, rgb_t(0xff, 0x00, 0x00) );
- palette_set_color( machine(), 5, rgb_t(0xff, 0xff, 0x00) );
- palette_set_color( machine(), 6, rgb_t(0xff, 0xff, 0xff) );
- palette_set_color( machine(), 7, rgb_t(0x7f, 0x3f, 0x1f) );
+ palette.set_pen_color( 0, rgb_t(0x00, 0x00, 0x00) );
+ palette.set_pen_color( 1, rgb_t(0x00, 0x00, 0xff) );
+ palette.set_pen_color( 2, rgb_t(0x00, 0xff, 0x00) );
+ palette.set_pen_color( 3, rgb_t(0xff, 0x7f, 0x00) );
+ palette.set_pen_color( 4, rgb_t(0xff, 0x00, 0x00) );
+ palette.set_pen_color( 5, rgb_t(0xff, 0xff, 0x00) );
+ palette.set_pen_color( 6, rgb_t(0xff, 0xff, 0xff) );
+ palette.set_pen_color( 7, rgb_t(0x7f, 0x3f, 0x1f) );
/* tiles */
- palette_set_color( machine(), 8, rgb_t(0x00, 0x00, 0x00) );
- palette_set_color( machine(), 9, rgb_t(0xff, 0xff, 0xff) );
- palette_set_color( machine(), 10, rgb_t(0x00, 0x00, 0x00) );
- palette_set_color( machine(), 11, rgb_t(0x00, 0x00, 0xff) );
- palette_set_color( machine(), 12, rgb_t(0x00, 0x00, 0x00) );
- palette_set_color( machine(), 13, rgb_t(0x00, 0xff, 0x00) );
- palette_set_color( machine(), 14, rgb_t(0x00, 0x00, 0x00) );
- palette_set_color( machine(), 15, rgb_t(0xff, 0x00, 0x00) );
+ palette.set_pen_color( 8, rgb_t(0x00, 0x00, 0x00) );
+ palette.set_pen_color( 9, rgb_t(0xff, 0xff, 0xff) );
+ palette.set_pen_color( 10, rgb_t(0x00, 0x00, 0x00) );
+ palette.set_pen_color( 11, rgb_t(0x00, 0x00, 0xff) );
+ palette.set_pen_color( 12, rgb_t(0x00, 0x00, 0x00) );
+ palette.set_pen_color( 13, rgb_t(0x00, 0xff, 0x00) );
+ palette.set_pen_color( 14, rgb_t(0x00, 0x00, 0x00) );
+ palette.set_pen_color( 15, rgb_t(0xff, 0x00, 0x00) );
}
static ADDRESS_MAP_START( acefruit_map, AS_PROGRAM, 8, acefruit_state )
@@ -614,7 +614,8 @@ static MACHINE_CONFIG_START( acefruit, acefruit_state )
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 255)
MCFG_SCREEN_UPDATE_DRIVER(acefruit_state, screen_update_acefruit)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(acefruit_state, acefruit)
MCFG_NVRAM_ADD_0FILL("nvram")
diff --git a/src/mame/drivers/acommand.c b/src/mame/drivers/acommand.c
index 7f651baa333..247ec8c70b3 100644
--- a/src/mame/drivers/acommand.c
+++ b/src/mame/drivers/acommand.c
@@ -177,7 +177,7 @@ void acommand_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
xx = w;
do
{
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx, flipy,
@@ -470,7 +470,7 @@ static ADDRESS_MAP_START( acommand_map, AS_PROGRAM, 16, acommand_state )
AM_RANGE(0x082208, 0x082209) AM_WRITE(ac_unk2_w)
AM_RANGE(0x0a0000, 0x0a3fff) AM_RAM_WRITE(ac_bgvram_w) AM_SHARE("ac_bgvram")
AM_RANGE(0x0b0000, 0x0b3fff) AM_RAM_WRITE(ac_txvram_w) AM_SHARE("ac_txvram")
- AM_RANGE(0x0b8000, 0x0bffff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0b8000, 0x0bffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0f0000, 0x0f7fff) AM_RAM
AM_RANGE(0x0f8000, 0x0f8fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x0f9000, 0x0fffff) AM_RAM
@@ -620,8 +620,8 @@ static MACHINE_CONFIG_START( acommand, acommand_state )
MCFG_SCREEN_UPDATE_DRIVER(acommand_state, screen_update_acommand)
MCFG_GFXDECODE_ADD("gfxdecode", acommand)
- MCFG_PALETTE_LENGTH(0x4000)
-
+ MCFG_PALETTE_ADD("palette", 0x4000)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/actfancr.c b/src/mame/drivers/actfancr.c
index bf4e6563522..f4c3c7a5cdf 100644
--- a/src/mame/drivers/actfancr.c
+++ b/src/mame/drivers/actfancr.c
@@ -79,7 +79,7 @@ static ADDRESS_MAP_START( actfan_map, AS_PROGRAM, 8, actfancr_state )
AM_RANGE(0x072000, 0x0727ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_data_8bit_swap_r, pf_data_8bit_swap_w)
AM_RANGE(0x100000, 0x1007ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x110000, 0x110001) AM_WRITE(actfancr_buffer_spriteram_w)
- AM_RANGE(0x120000, 0x1205ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0x120000, 0x1205ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x130000, 0x130000) AM_READ_PORT("P1")
AM_RANGE(0x130001, 0x130001) AM_READ_PORT("P2")
AM_RANGE(0x130002, 0x130002) AM_READ_PORT("DSW1")
@@ -102,7 +102,7 @@ static ADDRESS_MAP_START( triothep_map, AS_PROGRAM, 8, actfancr_state )
AM_RANGE(0x100000, 0x100001) AM_WRITE(actfancr_sound_w)
AM_RANGE(0x110000, 0x110001) AM_WRITE(actfancr_buffer_spriteram_w)
AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x130000, 0x1305ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0x130000, 0x1305ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x140000, 0x140001) AM_READNOP /* Value doesn't matter */
AM_RANGE(0x1f0000, 0x1f3fff) AM_RAM AM_SHARE("main_ram") /* Main ram */
AM_RANGE(0x1ff000, 0x1ff001) AM_READWRITE(triothep_control_r, triothep_control_select_w)
@@ -326,7 +326,9 @@ static MACHINE_CONFIG_START( actfancr, actfancr_state )
MCFG_SCREEN_UPDATE_DRIVER(actfancr_state, screen_update_actfancr)
MCFG_GFXDECODE_ADD("gfxdecode", actfan)
- MCFG_PALETTE_LENGTH(768)
+
+ MCFG_PALETTE_ADD("palette", 768)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device,2,2,2);
@@ -338,6 +340,7 @@ static MACHINE_CONFIG_START( actfancr, actfancr_state )
MCFG_DEVICE_ADD("spritegen", DECO_MXC06, 0)
deco_mxc06_device::set_gfx_region(*device, 1);
MCFG_DECO_MXC06_GFXDECODE("gfxdecode")
+ MCFG_DECO_MXC06_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -378,7 +381,9 @@ static MACHINE_CONFIG_START( triothep, actfancr_state )
MCFG_SCREEN_UPDATE_DRIVER(actfancr_state, screen_update_actfancr)
MCFG_GFXDECODE_ADD("gfxdecode", triothep)
- MCFG_PALETTE_LENGTH(768)
+
+ MCFG_PALETTE_ADD("palette", 768)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device,2,2,0);
@@ -390,6 +395,7 @@ static MACHINE_CONFIG_START( triothep, actfancr_state )
MCFG_DEVICE_ADD("spritegen", DECO_MXC06, 0)
deco_mxc06_device::set_gfx_region(*device, 1);
MCFG_DECO_MXC06_GFXDECODE("gfxdecode")
+ MCFG_DECO_MXC06_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/adp.c b/src/mame/drivers/adp.c
index 57bba2d241e..8b68e53513b 100644
--- a/src/mame/drivers/adp.c
+++ b/src/mame/drivers/adp.c
@@ -316,7 +316,7 @@ PALETTE_INIT_MEMBER(adp_state,adp)
{
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -337,7 +337,7 @@ PALETTE_INIT_MEMBER(adp_state,adp)
bit2 = (i >> 2) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r,g,b));
+ palette.set_pen_color(i, rgb_t(r,g,b));
}
}
@@ -459,7 +459,7 @@ WRITE8_MEMBER(adp_state::ramdac_io_w)
break;
case 2:
m_pal.b = ((data & 0x3f) << 2) | ((data & 0x30) >> 4);
- palette_set_color(machine(), m_pal.offs, rgb_t(m_pal.r, m_pal.g, m_pal.b));
+ m_palette->set_pen_color(m_pal.offs, rgb_t(m_pal.r, m_pal.g, m_pal.b));
m_pal.offs_internal = 0;
m_pal.offs++;
m_pal.offs&=0xff;
@@ -641,9 +641,9 @@ static MACHINE_CONFIG_START( quickjac, adp_state )
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 280-1)
MCFG_SCREEN_UPDATE_DRIVER(adp_state, screen_update)
- MCFG_PALETTE_LENGTH(0x10)
+ MCFG_PALETTE_ADD("palette", 0x10)
- MCFG_PALETTE_INIT_OVERRIDE(adp_state,adp)
+ MCFG_PALETTE_INIT_OWNER(adp_state,adp)
MCFG_H63484_ADD("h63484", 0, adp_h63484_intf, adp_h63484_map)
@@ -677,9 +677,9 @@ static MACHINE_CONFIG_START( skattv, adp_state )
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 280-1)
MCFG_SCREEN_UPDATE_DRIVER(adp_state, screen_update)
- MCFG_PALETTE_LENGTH(0x10)
+ MCFG_PALETTE_ADD("palette", 0x10)
- MCFG_PALETTE_INIT_OVERRIDE(adp_state,adp)
+ MCFG_PALETTE_INIT_OWNER(adp_state,adp)
MCFG_H63484_ADD("h63484", 0, adp_h63484_intf, adp_h63484_map)
@@ -712,9 +712,9 @@ static MACHINE_CONFIG_START( backgamn, adp_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(adp_state, screen_update)
- MCFG_PALETTE_LENGTH(0x10)
+ MCFG_PALETTE_ADD("palette", 0x10)
-// MCFG_PALETTE_INIT_OVERRIDE(adp_state,adp)
+// MCFG_PALETTE_INIT_OWNER(adp_state,adp)
MCFG_H63484_ADD("h63484", 0, adp_h63484_intf, adp_h63484_map)
@@ -734,8 +734,8 @@ static MACHINE_CONFIG_DERIVED( funland, fashiong )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(funland_mem)
- MCFG_PALETTE_LENGTH(0x100)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, all_black)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD_INIT_BLACK("palette", 0x100)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( fstation, fashiong )
diff --git a/src/mame/drivers/aeroboto.c b/src/mame/drivers/aeroboto.c
index bb61d1ddce8..8ee6ba0ef4b 100644
--- a/src/mame/drivers/aeroboto.c
+++ b/src/mame/drivers/aeroboto.c
@@ -263,9 +263,7 @@ static MACHINE_CONFIG_START( formatz, aeroboto_state )
MCFG_GFXDECODE_ADD("gfxdecode", aeroboto)
- MCFG_PALETTE_LENGTH(256)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/aerofgt.c b/src/mame/drivers/aerofgt.c
index 4595cbe284f..d2c72800210 100644
--- a/src/mame/drivers/aerofgt.c
+++ b/src/mame/drivers/aerofgt.c
@@ -140,7 +140,7 @@ static ADDRESS_MAP_START( pspikes_map, AS_PROGRAM, 16, aerofgt_state )
AM_RANGE(0xff8000, 0xff8fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
AM_RANGE(0xffc000, 0xffc3ff) AM_WRITEONLY AM_SHARE("spriteram3")
AM_RANGE(0xffd000, 0xffdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0") AM_WRITE(pspikes_palette_bank_w)
AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") AM_WRITE(pspikes_gfxbank_w)
AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrolly_w)
@@ -156,7 +156,7 @@ static ADDRESS_MAP_START( pspikesb_map, AS_PROGRAM, 16, aerofgt_state )
AM_RANGE(0xffc000, 0xffcbff) AM_RAM AM_SHARE("spriteram3")
AM_RANGE(0xffd200, 0xffd201) AM_WRITE(pspikesb_gfxbank_w)
AM_RANGE(0xffd000, 0xffdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0")
AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1")
AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrolly_w)
@@ -176,7 +176,7 @@ static ADDRESS_MAP_START( spikes91_map, AS_PROGRAM, 16, aerofgt_state )
AM_RANGE(0xffc000, 0xffcfff) AM_RAM AM_SHARE("spriteram3")
//AM_RANGE(0xffd200, 0xffd201) AM_WRITE(pspikesb_gfxbank_w)
AM_RANGE(0xffd000, 0xffdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0")
AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") AM_WRITE(pspikes_gfxbank_w)
AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrolly_w)
@@ -191,7 +191,7 @@ static ADDRESS_MAP_START( pspikesc_map, AS_PROGRAM, 16, aerofgt_state )
AM_RANGE(0xff8000, 0xff8fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
AM_RANGE(0xffc000, 0xffcbff) AM_RAM AM_SHARE("spriteram3")
AM_RANGE(0xffd000, 0xffdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0") AM_WRITE(pspikes_palette_bank_w)
AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") AM_WRITE(pspikes_gfxbank_w)
AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW")
@@ -209,7 +209,7 @@ static ADDRESS_MAP_START( karatblz_map, AS_PROGRAM, 16, aerofgt_state )
AM_RANGE(0x0c0000, 0x0cffff) AM_RAM /* work RAM */
AM_RANGE(0x0f8000, 0x0fbfff) AM_RAM /* work RAM */
AM_RANGE(0x0fc000, 0x0fc7ff) AM_RAM AM_SHARE("spriteram3")
- AM_RANGE(0x0fe000, 0x0fe7ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0fe000, 0x0fe7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0ff000, 0x0ff001) AM_READ_PORT("IN0")
AM_RANGE(0x0ff002, 0x0ff003) AM_READ_PORT("IN1") AM_WRITE(karatblz_gfxbank_w)
AM_RANGE(0x0ff004, 0x0ff005) AM_READ_PORT("IN2")
@@ -227,7 +227,7 @@ static ADDRESS_MAP_START( spinlbrk_map, AS_PROGRAM, 16, aerofgt_state )
AM_RANGE(0xff8000, 0xffbfff) AM_RAM /* work RAM */
AM_RANGE(0xffc000, 0xffc7ff) AM_RAM AM_SHARE("spriteram3")
AM_RANGE(0xffd000, 0xffd1ff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */
- AM_RANGE(0xffe000, 0xffe7ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xffe000, 0xffe7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0") AM_WRITE(spinlbrk_gfxbank_w)
AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") AM_WRITE(aerofgt_bg2scrollx_w)
AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW")
@@ -245,7 +245,7 @@ static ADDRESS_MAP_START( turbofrc_map, AS_PROGRAM, 16, aerofgt_state )
AM_RANGE(0x0f8000, 0x0fbfff) AM_RAM /* work RAM */
AM_RANGE(0x0fc000, 0x0fc7ff) AM_RAM AM_SHARE("spriteram3")
AM_RANGE(0x0fd000, 0x0fdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */
- AM_RANGE(0x0fe000, 0x0fe7ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0fe000, 0x0fe7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0ff000, 0x0ff001) AM_READ_PORT("IN0")
AM_RANGE(0x0ff002, 0x0ff003) AM_READ_PORT("IN1") AM_WRITE(aerofgt_bg1scrolly_w)
AM_RANGE(0x0ff004, 0x0ff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg2scrollx_w)
@@ -265,7 +265,7 @@ static ADDRESS_MAP_START( aerofgtb_map, AS_PROGRAM, 16, aerofgt_state )
AM_RANGE(0x0e4000, 0x0e7fff) AM_RAM AM_SHARE("spriteram2")
AM_RANGE(0x0f8000, 0x0fbfff) AM_RAM /* work RAM */
AM_RANGE(0x0fc000, 0x0fc7ff) AM_RAM AM_SHARE("spriteram3")
- AM_RANGE(0x0fd000, 0x0fd7ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0fd000, 0x0fd7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0fe000, 0x0fe001) AM_READ_PORT("IN0")
AM_RANGE(0x0fe002, 0x0fe003) AM_READ_PORT("IN1") AM_WRITE(aerofgt_bg1scrolly_w)
AM_RANGE(0x0fe004, 0x0fe005) AM_READ_PORT("DSW1") AM_WRITE(aerofgt_bg2scrollx_w)
@@ -278,7 +278,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( aerofgt_map, AS_PROGRAM, 16, aerofgt_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x1a0000, 0x1a07ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x1a0000, 0x1a07ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x1b0000, 0x1b07ff) AM_RAM AM_SHARE("rasterram") /* used only for the scroll registers */
AM_RANGE(0x1b0800, 0x1b0801) AM_NOP /* ??? */
AM_RANGE(0x1b0ff0, 0x1b0fff) AM_RAM /* stack area during boot */
@@ -309,7 +309,7 @@ static ADDRESS_MAP_START( aerfboot_map, AS_PROGRAM, 16, aerofgt_state )
AM_RANGE(0x0e4000, 0x0e7fff) AM_RAM AM_SHARE("spriteram2")
AM_RANGE(0x0f8000, 0x0fbfff) AM_RAM /* work RAM */
AM_RANGE(0x0fc000, 0x0fc7ff) AM_RAM //AM_SHARE("spriteram3")
- AM_RANGE(0x0fd000, 0x0fd7ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0fd000, 0x0fd7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0fe000, 0x0fe001) AM_READ_PORT("IN0")
AM_RANGE(0x0fe002, 0x0fe003) AM_READ_PORT("IN1")
AM_RANGE(0x0fe004, 0x0fe005) AM_READ_PORT("DSW1")
@@ -338,7 +338,7 @@ static ADDRESS_MAP_START( aerfboo2_map, AS_PROGRAM, 16, aerofgt_state )
AM_RANGE(0x0e4000, 0x0e7fff) AM_RAM AM_SHARE("spriteram2")
AM_RANGE(0x0f8000, 0x0fbfff) AM_RAM /* work RAM */
AM_RANGE(0x0fc000, 0x0fc7ff) AM_RAM AM_SHARE("spriteram3")
- AM_RANGE(0x0fd000, 0x0fd7ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0fd000, 0x0fd7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0fe000, 0x0fe001) AM_READ_PORT("IN0")
AM_RANGE(0x0fe002, 0x0fe003) AM_READ_PORT("IN1")
AM_RANGE(0x0fe004, 0x0fe005) AM_READ_PORT("DSW1")
@@ -365,7 +365,7 @@ static ADDRESS_MAP_START( wbbc97_map, AS_PROGRAM, 16, aerofgt_state )
AM_RANGE(0xff8000, 0xff8fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
AM_RANGE(0xffc000, 0xffc3ff) AM_WRITEONLY AM_SHARE("spriteram3")
AM_RANGE(0xffd000, 0xffdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0") AM_WRITE(pspikes_palette_bank_w)
AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") AM_WRITE(pspikes_gfxbank_w)
AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrolly_w)
@@ -1327,13 +1327,14 @@ static MACHINE_CONFIG_START( pspikes, aerofgt_state )
MCFG_SCREEN_UPDATE_DRIVER(aerofgt_state, screen_update_pspikes)
MCFG_GFXDECODE_ADD("gfxdecode", pspikes)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(1)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
-
+ MCFG_VSYSTEM_SPR2_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(aerofgt_state,pspikes)
@@ -1369,7 +1370,8 @@ static MACHINE_CONFIG_START( spikes91, aerofgt_state )
MCFG_SCREEN_UPDATE_DRIVER(aerofgt_state, screen_update_spikes91)
MCFG_GFXDECODE_ADD("gfxdecode", spikes91)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(aerofgt_state,pspikes)
@@ -1401,7 +1403,8 @@ static MACHINE_CONFIG_START( pspikesb, aerofgt_state )
MCFG_SCREEN_UPDATE_DRIVER(aerofgt_state, screen_update_pspikesb)
MCFG_GFXDECODE_ADD("gfxdecode", pspikesb)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(aerofgt_state,pspikes)
@@ -1431,12 +1434,14 @@ static MACHINE_CONFIG_START( pspikesc, aerofgt_state )
MCFG_SCREEN_UPDATE_DRIVER(aerofgt_state, screen_update_pspikes)
MCFG_GFXDECODE_ADD("gfxdecode", pspikes)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(1)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
+ MCFG_VSYSTEM_SPR2_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(aerofgt_state,pspikes)
@@ -1471,17 +1476,20 @@ static MACHINE_CONFIG_START( karatblz, aerofgt_state )
MCFG_SCREEN_UPDATE_DRIVER(aerofgt_state, screen_update_karatblz)
MCFG_GFXDECODE_ADD("gfxdecode", turbofrc)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(2)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
+ MCFG_VSYSTEM_SPR2_PALETTE("palette")
MCFG_DEVICE_ADD("vsystem_spr_ol2", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_ol2_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(3)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
+ MCFG_VSYSTEM_SPR2_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(aerofgt_state,karatblz)
@@ -1520,18 +1528,21 @@ static MACHINE_CONFIG_START( spinlbrk, aerofgt_state )
MCFG_SCREEN_UPDATE_DRIVER(aerofgt_state, screen_update_spinlbrk)
MCFG_GFXDECODE_ADD("gfxdecode", turbofrc)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_PRITYPE(1)
MCFG_VSYSTEM_SPR2_SET_GFXREGION(2)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
+ MCFG_VSYSTEM_SPR2_PALETTE("palette")
MCFG_DEVICE_ADD("vsystem_spr_ol2", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_ol2_tile_callback ) // rom lookup
MCFG_VSYSTEM_SPR2_SET_PRITYPE(1)
MCFG_VSYSTEM_SPR2_SET_GFXREGION(3)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
+ MCFG_VSYSTEM_SPR2_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(aerofgt_state,spinlbrk)
@@ -1570,17 +1581,20 @@ static MACHINE_CONFIG_START( turbofrc, aerofgt_state )
MCFG_SCREEN_UPDATE_DRIVER(aerofgt_state, screen_update_turbofrc)
MCFG_GFXDECODE_ADD("gfxdecode", turbofrc)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(2)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
+ MCFG_VSYSTEM_SPR2_PALETTE("palette")
MCFG_DEVICE_ADD("vsystem_spr_ol2", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_ol2_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(3)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
+ MCFG_VSYSTEM_SPR2_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(aerofgt_state,turbofrc)
@@ -1620,17 +1634,20 @@ static MACHINE_CONFIG_START( aerofgtb, aerofgt_state )
MCFG_SCREEN_UPDATE_DRIVER(aerofgt_state, screen_update_turbofrc)
MCFG_GFXDECODE_ADD("gfxdecode", aerofgtb)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(2)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
+ MCFG_VSYSTEM_SPR2_PALETTE("palette")
MCFG_DEVICE_ADD("vsystem_spr_ol2", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_ol2_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(3)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
+ MCFG_VSYSTEM_SPR2_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(aerofgt_state,turbofrc)
@@ -1670,12 +1687,14 @@ static MACHINE_CONFIG_START( aerofgt, aerofgt_state )
MCFG_SCREEN_UPDATE_DRIVER(aerofgt_state, screen_update_aerofgt)
MCFG_GFXDECODE_ADD("gfxdecode", aerofgt)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_DEVICE_ADD("vsystem_spr", VSYSTEM_SPR, 0)
MCFG_VSYSTEM_SPR_SET_TILE_INDIRECT( aerofgt_state, aerofgt_tile_callback )
MCFG_VSYSTEM_SPR_SET_GFXREGION(2)
MCFG_VSYSTEM_SPR_GFXDECODE("gfxdecode")
+ MCFG_VSYSTEM_SPR_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(aerofgt_state,turbofrc)
@@ -1713,7 +1732,8 @@ static MACHINE_CONFIG_START( aerfboot, aerofgt_state )
MCFG_SCREEN_UPDATE_DRIVER(aerofgt_state, screen_update_aerfboot)
MCFG_GFXDECODE_ADD("gfxdecode", aerfboot)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(aerofgt_state,turbofrc)
@@ -1744,7 +1764,8 @@ static MACHINE_CONFIG_START( aerfboo2, aerofgt_state )
MCFG_SCREEN_UPDATE_DRIVER(aerofgt_state, screen_update_aerfboo2)
MCFG_GFXDECODE_ADD("gfxdecode", aerfboo2)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(aerofgt_state,turbofrc)
@@ -1777,12 +1798,14 @@ static MACHINE_CONFIG_START( wbbc97, aerofgt_state )
MCFG_SCREEN_UPDATE_DRIVER(aerofgt_state, screen_update_wbbc97)
MCFG_GFXDECODE_ADD("gfxdecode", wbbc97)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(1)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
+ MCFG_VSYSTEM_SPR2_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(aerofgt_state,wbbc97)
diff --git a/src/mame/drivers/airbustr.c b/src/mame/drivers/airbustr.c
index e47708857bd..8fb1c881ca1 100644
--- a/src/mame/drivers/airbustr.c
+++ b/src/mame/drivers/airbustr.c
@@ -324,7 +324,7 @@ WRITE8_MEMBER(airbustr_state::airbustr_paletteram_w)
m_paletteram[offset] = data;
val = (m_paletteram[offset | 1] << 8) | m_paletteram[offset & ~1];
- palette_set_color_rgb(machine(), offset / 2, pal5bit(val >> 5), pal5bit(val >> 10), pal5bit(val >> 0));
+ m_palette->set_pen_color(offset / 2, pal5bit(val >> 5), pal5bit(val >> 10), pal5bit(val >> 0));
}
WRITE8_MEMBER(airbustr_state::airbustr_coin_counter_w)
@@ -637,10 +637,11 @@ static MACHINE_CONFIG_START( airbustr, airbustr_state )
MCFG_SCREEN_VBLANK_DRIVER(airbustr_state, screen_eof_airbustr)
MCFG_GFXDECODE_ADD("gfxdecode", airbustr)
- MCFG_PALETTE_LENGTH(768)
+ MCFG_PALETTE_ADD("palette", 768)
MCFG_KANEKO_PANDORA_ADD("pandora", airbustr_pandora_config)
MCFG_KANEKO_PANDORA_GFXDECODE("gfxdecode")
+ MCFG_KANEKO_PANDORA_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/ajax.c b/src/mame/drivers/ajax.c
index d1224626659..bfed89108d3 100644
--- a/src/mame/drivers/ajax.c
+++ b/src/mame/drivers/ajax.c
@@ -27,7 +27,7 @@ static ADDRESS_MAP_START( ajax_main_map, AS_PROGRAM, 8, ajax_state )
AM_RANGE(0x0000, 0x01c0) AM_READWRITE(ajax_ls138_f10_r, ajax_ls138_f10_w) /* bankswitch + sound command + FIRQ command */
AM_RANGE(0x0800, 0x0807) AM_DEVREADWRITE("k051960", k051960_device, k051937_r, k051937_w) /* sprite control registers */
AM_RANGE(0x0c00, 0x0fff) AM_DEVREADWRITE("k051960", k051960_device, k051960_r, k051960_w) /* sprite RAM 2128SL at J7 */
- AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_be_w) AM_SHARE("paletteram")/* palette */
+ AM_RANGE(0x1000, 0x1fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")/* palette */
AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("share1") /* shared RAM with the 6809 */
AM_RANGE(0x4000, 0x5fff) AM_RAM /* RAM 6264L at K10 */
AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank2") /* banked ROM */
@@ -219,8 +219,6 @@ static MACHINE_CONFIG_START( ajax, ajax_state )
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
@@ -228,16 +226,21 @@ static MACHINE_CONFIG_START( ajax, ajax_state )
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(ajax_state, screen_update_ajax)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", ajax_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K051960_ADD("k051960", ajax_k051960_intf)
MCFG_K051960_GFXDECODE("gfxdecode")
+ MCFG_K051960_PALETTE("palette")
MCFG_K051316_ADD("k051316", ajax_k051316_intf)
MCFG_K051316_GFXDECODE("gfxdecode")
+ MCFG_K051316_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/albazc.c b/src/mame/drivers/albazc.c
index 1dee14b5338..bf7fe6c135c 100644
--- a/src/mame/drivers/albazc.c
+++ b/src/mame/drivers/albazc.c
@@ -35,7 +35,7 @@ public:
DECLARE_WRITE8_MEMBER(hanaroku_out_2_w);
DECLARE_WRITE8_MEMBER(albazc_vregs_w);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(albazc);
UINT32 screen_update_hanaroku(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
@@ -46,7 +46,7 @@ public:
/* video */
-void albazc_state::palette_init()
+PALETTE_INIT_MEMBER(albazc_state, albazc)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -58,7 +58,7 @@ void albazc_state::palette_init()
g = ((color_prom[i * 2 + 1] & 0xe0) | ((color_prom[i * 2 + 0]& 0x03) <<8)) >> 5;
r = (color_prom[i * 2 + 0] & 0x7c) >> 2;
- palette_set_color_rgb(machine(), i, pal5bit(r), pal5bit(g), pal5bit(b));
+ palette.set_pen_color(i, pal5bit(r), pal5bit(g), pal5bit(b));
}
}
@@ -87,7 +87,7 @@ void albazc_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
flipy = !flipy;
}
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, code, color, flipx, flipy,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy,
sx, sy, 0);
}
}
@@ -285,8 +285,9 @@ static MACHINE_CONFIG_START( hanaroku, albazc_state )
MCFG_SCREEN_UPDATE_DRIVER(albazc_state, screen_update_hanaroku)
MCFG_GFXDECODE_ADD("gfxdecode", hanaroku)
- MCFG_PALETTE_LENGTH(0x200)
-
+
+ MCFG_PALETTE_ADD("palette", 0x200)
+ MCFG_PALETTE_INIT_OWNER(albazc_state, albazc)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/albazg.c b/src/mame/drivers/albazg.c
index 9677bc67258..66186f60130 100644
--- a/src/mame/drivers/albazg.c
+++ b/src/mame/drivers/albazg.c
@@ -58,8 +58,6 @@ public:
required_shared_ptr<UINT8> m_cus_ram;
required_shared_ptr<UINT8> m_videoram;
required_shared_ptr<UINT8> m_colorram;
-// UINT8 * m_paletteram; // currently this uses generic palette handling
-// UINT8 * m_paletteram_2; // currently this uses generic palette handling
/* video-related */
tilemap_t *m_bg_tilemap;
@@ -246,8 +244,8 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, albazg_state )
AM_RANGE(0xa7fc, 0xa7fc) AM_WRITE(prot_lock_w)
AM_RANGE(0xa7ff, 0xa7ff) AM_WRITE_PORT("EEPROMOUT")
AM_RANGE(0xaf80, 0xafff) AM_READWRITE(custom_ram_r, custom_ram_w) AM_SHARE("cus_ram")
- AM_RANGE(0xb000, 0xb07f) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_byte_split_lo_w) AM_SHARE("paletteram")
- AM_RANGE(0xb080, 0xb0ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_byte_split_hi_w) AM_SHARE("paletteram2")
+ AM_RANGE(0xb000, 0xb07f) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0xb080, 0xb0ff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(yumefuda_vram_w) AM_SHARE("videoram")
AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(yumefuda_cram_w) AM_SHARE("colorram")
AM_RANGE(0xe000, 0xffff) AM_RAM
@@ -405,8 +403,9 @@ static MACHINE_CONFIG_START( yumefuda, albazg_state )
MCFG_MC6845_ADD("crtc", H46505, "screen", MASTER_CLOCK/16, mc6845_intf) /* hand tuned to get ~60 fps */
- MCFG_GFXDECODE_ADD("gfxdecode", yumefuda )
- MCFG_PALETTE_LENGTH(0x80)
+ MCFG_GFXDECODE_ADD("gfxdecode", yumefuda )
+ MCFG_PALETTE_ADD("palette", 0x80)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
diff --git a/src/mame/drivers/aleck64.c b/src/mame/drivers/aleck64.c
index e78ed5290c0..7a724bc8889 100644
--- a/src/mame/drivers/aleck64.c
+++ b/src/mame/drivers/aleck64.c
@@ -837,7 +837,7 @@ static MACHINE_CONFIG_START( aleck64, aleck64_state )
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 239)
MCFG_SCREEN_UPDATE_DRIVER(aleck64_state, screen_update_n64)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/alg.c b/src/mame/drivers/alg.c
index 8c11f28cdb1..e35127324d7 100644
--- a/src/mame/drivers/alg.c
+++ b/src/mame/drivers/alg.c
@@ -104,7 +104,7 @@ VIDEO_START_MEMBER(alg_state,alg)
VIDEO_START_CALL_MEMBER(amiga);
/* configure pen 4096 as transparent in the renderer and use it for the genlock color */
- palette_set_color(machine(), 4096, rgb_t(0,0,0,0));
+ m_palette->set_pen_color(4096, rgb_t(0,0,0,0));
amiga_set_genlock_color(machine(), 4096);
}
@@ -457,8 +457,8 @@ static MACHINE_CONFIG_START( alg_r1, alg_state )
MCFG_SCREEN_SIZE(512*2, 262)
MCFG_SCREEN_VISIBLE_AREA((129-8)*2, (449+8-1)*2, 44-8, 244+8-1)
- MCFG_PALETTE_LENGTH(4097)
- MCFG_PALETTE_INIT_OVERRIDE(alg_state,amiga)
+ MCFG_PALETTE_ADD("palette", 4097)
+ MCFG_PALETTE_INIT_OWNER(alg_state,amiga)
MCFG_VIDEO_START_OVERRIDE(alg_state,alg)
diff --git a/src/mame/drivers/alien.c b/src/mame/drivers/alien.c
index 3a6e15da595..29fd48a8e2c 100644
--- a/src/mame/drivers/alien.c
+++ b/src/mame/drivers/alien.c
@@ -90,7 +90,7 @@ static MACHINE_CONFIG_START( alien, alien_state )
MCFG_SCREEN_SIZE((32)*8, (32)*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/aliens.c b/src/mame/drivers/aliens.c
index 39ba80a9185..668bad5e541 100644
--- a/src/mame/drivers/aliens.c
+++ b/src/mame/drivers/aliens.c
@@ -34,7 +34,7 @@ READ8_MEMBER(aliens_state::bankedram_r)
WRITE8_MEMBER(aliens_state::bankedram_w)
{
if (m_palette_selected)
- paletteram_xBBBBBGGGGGRRRRR_byte_be_w(space, offset, data);
+ m_palette->write(space, offset, data);
else
m_ram[offset] = data;
}
@@ -241,8 +241,6 @@ static MACHINE_CONFIG_START( aliens, aliens_state )
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.17) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
@@ -250,13 +248,17 @@ static MACHINE_CONFIG_START( aliens, aliens_state )
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(aliens_state, screen_update_aliens)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", aliens_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K051960_ADD("k051960", aliens_k051960_intf)
MCFG_K051960_GFXDECODE("gfxdecode")
+ MCFG_K051960_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/alpha68k.c b/src/mame/drivers/alpha68k.c
index 60ae750c156..8e8e611db8c 100644
--- a/src/mame/drivers/alpha68k.c
+++ b/src/mame/drivers/alpha68k.c
@@ -1964,8 +1964,8 @@ static MACHINE_CONFIG_START( sstingry, alpha68k_state )
MCFG_SCREEN_UPDATE_DRIVER(alpha68k_state, screen_update_sstingry)
MCFG_GFXDECODE_ADD("gfxdecode", sstingry)
- MCFG_PALETTE_LENGTH(256 + 1)
- MCFG_PALETTE_INIT_OVERRIDE(alpha68k_state,kyros)
+ MCFG_PALETTE_ADD("palette", 256 + 1)
+ MCFG_PALETTE_INIT_OWNER(alpha68k_state,kyros)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -2009,9 +2009,9 @@ static MACHINE_CONFIG_START( kyros, alpha68k_state )
MCFG_SCREEN_UPDATE_DRIVER(alpha68k_state, screen_update_kyros)
MCFG_GFXDECODE_ADD("gfxdecode", kyros)
- MCFG_PALETTE_LENGTH(256 + 1)
+ MCFG_PALETTE_ADD("palette", 256 + 1)
- MCFG_PALETTE_INIT_OVERRIDE(alpha68k_state,kyros)
+ MCFG_PALETTE_INIT_OWNER(alpha68k_state,kyros)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -2054,9 +2054,9 @@ static MACHINE_CONFIG_START( jongbou, alpha68k_state )
MCFG_SCREEN_UPDATE_DRIVER(alpha68k_state, screen_update_kyros)
MCFG_GFXDECODE_ADD("gfxdecode", jongbou)
- MCFG_PALETTE_LENGTH(256 + 1)
+ MCFG_PALETTE_ADD("palette", 256 + 1)
- MCFG_PALETTE_INIT_OVERRIDE(alpha68k_state,kyros)
+ MCFG_PALETTE_INIT_OWNER(alpha68k_state,kyros)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -2089,8 +2089,8 @@ static MACHINE_CONFIG_START( alpha68k_I, alpha68k_state )
MCFG_GFXDECODE_ADD("gfxdecode", paddle)
- MCFG_PALETTE_LENGTH(1024)
- MCFG_PALETTE_INIT_OVERRIDE(alpha68k_state,paddlem)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_INIT_OWNER(alpha68k_state,paddlem)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -2130,7 +2130,7 @@ static MACHINE_CONFIG_START( alpha68k_II, alpha68k_state )
MCFG_SCREEN_UPDATE_DRIVER(alpha68k_state, screen_update_alpha68k_II)
MCFG_GFXDECODE_ADD("gfxdecode", alpha68k_II)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_VIDEO_START_OVERRIDE(alpha68k_state,alpha68k)
@@ -2179,7 +2179,7 @@ static MACHINE_CONFIG_START( alpha68k_II_gm, alpha68k_state )
MCFG_SCREEN_UPDATE_DRIVER(alpha68k_state, screen_update_alpha68k_II)
MCFG_GFXDECODE_ADD("gfxdecode", alpha68k_II)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_VIDEO_START_OVERRIDE(alpha68k_state,alpha68k)
@@ -2222,7 +2222,7 @@ static MACHINE_CONFIG_START( alpha68k_V, alpha68k_state )
MCFG_SCREEN_UPDATE_DRIVER(alpha68k_state, screen_update_alpha68k_V)
MCFG_GFXDECODE_ADD("gfxdecode", alpha68k_V)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
MCFG_VIDEO_START_OVERRIDE(alpha68k_state,alpha68k)
@@ -2264,7 +2264,7 @@ static MACHINE_CONFIG_START( alpha68k_V_sb, alpha68k_state )
MCFG_SCREEN_UPDATE_DRIVER(alpha68k_state, screen_update_alpha68k_V_sb)
MCFG_GFXDECODE_ADD("gfxdecode", alpha68k_V)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
MCFG_VIDEO_START_OVERRIDE(alpha68k_state,alpha68k)
@@ -2306,8 +2306,8 @@ static MACHINE_CONFIG_START( tnextspc, alpha68k_state )
MCFG_GFXDECODE_ADD("gfxdecode", tnextspc)
- MCFG_PALETTE_LENGTH(1024)
- MCFG_PALETTE_INIT_OVERRIDE(alpha68k_state,paddlem)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_INIT_OWNER(alpha68k_state,paddlem)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/amaticmg.c b/src/mame/drivers/amaticmg.c
index fc1f6ea9c32..3fb232bfc81 100644
--- a/src/mame/drivers/amaticmg.c
+++ b/src/mame/drivers/amaticmg.c
@@ -451,7 +451,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(amaticmg);
DECLARE_PALETTE_INIT(amaticmg2);
UINT32 screen_update_amaticmg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_amaticmg2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@@ -488,7 +488,7 @@ UINT32 amaticmg_state::screen_update_amaticmg(screen_device &screen, bitmap_ind1
/* TODO: this looks so out of place ... */
color = (m_attr[count]&0xf0)>>3;
- gfx->opaque(bitmap,cliprect,tile,color,0,0,x*4,y*8);
+ gfx->opaque(m_palette,bitmap,cliprect,tile,color,0,0,x*4,y*8);
count++;
}
}
@@ -512,7 +512,7 @@ UINT32 amaticmg_state::screen_update_amaticmg2(screen_device &screen, bitmap_ind
tile += ((m_attr[count]&0xff)<<8);
color = 0;
- gfx->opaque(bitmap,cliprect,tile,color,0,0,x*4,y*8);
+ gfx->opaque(m_palette,bitmap,cliprect,tile,color,0,0,x*4,y*8);
count++;
}
}
@@ -520,7 +520,7 @@ UINT32 amaticmg_state::screen_update_amaticmg2(screen_device &screen, bitmap_ind
return 0;
}
-void amaticmg_state::palette_init()
+PALETTE_INIT_MEMBER(amaticmg_state, amaticmg)
{
const UINT8 *color_prom = memregion("proms")->base();
int bit0, bit1, bit2 , r, g, b;
@@ -541,7 +541,7 @@ void amaticmg_state::palette_init()
bit2 = (color_prom[0] >> 5) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
color_prom++;
}
}
@@ -559,7 +559,7 @@ PALETTE_INIT_MEMBER(amaticmg_state,amaticmg2)
g = ((color_prom[0] & 0xc0) >> 6) | ((color_prom[1] & 0x7) << 2);
r = ((color_prom[0] & 0x3e) >> 1);
- palette_set_color_rgb(machine(), i >> 1, pal5bit(r), pal5bit(g), pal5bit(b));
+ palette.set_pen_color(i >> 1, pal5bit(r), pal5bit(g), pal5bit(b));
color_prom+=2;
}
}
@@ -884,8 +884,8 @@ static MACHINE_CONFIG_START( amaticmg, amaticmg_state )
MCFG_GFXDECODE_ADD("gfxdecode", amaticmg)
- MCFG_PALETTE_LENGTH(0x200)
-
+ MCFG_PALETTE_ADD("palette", 0x200)
+ MCFG_PALETTE_INIT_OWNER(amaticmg_state, amaticmg)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -916,8 +916,9 @@ static MACHINE_CONFIG_DERIVED( amaticmg2, amaticmg )
MCFG_SCREEN_UPDATE_DRIVER(amaticmg_state, screen_update_amaticmg2)
MCFG_GFXDECODE_MODIFY("gfxdecode", amaticmg2)
- MCFG_PALETTE_INIT_OVERRIDE(amaticmg_state,amaticmg2)
- MCFG_PALETTE_LENGTH(0x10000)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 0x10000)
+ MCFG_PALETTE_INIT_OWNER(amaticmg_state,amaticmg2)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ambush.c b/src/mame/drivers/ambush.c
index 58a44cb3bd5..17d40bea828 100644
--- a/src/mame/drivers/ambush.c
+++ b/src/mame/drivers/ambush.c
@@ -243,8 +243,8 @@ static MACHINE_CONFIG_START( ambush, ambush_state )
MCFG_SCREEN_UPDATE_DRIVER(ambush_state, screen_update_ambush)
MCFG_GFXDECODE_ADD("gfxdecode", ambush)
- MCFG_PALETTE_LENGTH(256)
-
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(ambush_state, ambush)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/ampoker2.c b/src/mame/drivers/ampoker2.c
index 39dc7091690..554007fec7b 100644
--- a/src/mame/drivers/ampoker2.c
+++ b/src/mame/drivers/ampoker2.c
@@ -1185,8 +1185,8 @@ static MACHINE_CONFIG_START( ampoker2, ampoker2_state )
MCFG_SCREEN_UPDATE_DRIVER(ampoker2_state, screen_update_ampoker2)
MCFG_GFXDECODE_ADD("gfxdecode", ampoker2)
- MCFG_PALETTE_LENGTH(512)
-
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_INIT_OWNER(ampoker2_state, ampoker2)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/amspdwy.c b/src/mame/drivers/amspdwy.c
index 4acb8e16c45..75b3c934f61 100644
--- a/src/mame/drivers/amspdwy.c
+++ b/src/mame/drivers/amspdwy.c
@@ -274,8 +274,8 @@ static MACHINE_CONFIG_START( amspdwy, amspdwy_state )
MCFG_SCREEN_UPDATE_DRIVER(amspdwy_state, screen_update_amspdwy)
MCFG_GFXDECODE_ADD("gfxdecode", amspdwy)
- MCFG_PALETTE_LENGTH(32)
-
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_FORMAT(BBGGGRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/angelkds.c b/src/mame/drivers/angelkds.c
index a93e743a14b..d82edfecbf3 100644
--- a/src/mame/drivers/angelkds.c
+++ b/src/mame/drivers/angelkds.c
@@ -613,7 +613,7 @@ static MACHINE_CONFIG_START( angelkds, angelkds_state )
MCFG_SCREEN_UPDATE_DRIVER(angelkds_state, screen_update_angelkds)
MCFG_GFXDECODE_ADD("gfxdecode", angelkds)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/appoooh.c b/src/mame/drivers/appoooh.c
index 214bf87e8dd..2bc46c714e6 100644
--- a/src/mame/drivers/appoooh.c
+++ b/src/mame/drivers/appoooh.c
@@ -456,9 +456,9 @@ static MACHINE_CONFIG_DERIVED( appoooh, appoooh_common )
MCFG_SCREEN_UPDATE_DRIVER(appoooh_state, screen_update_appoooh)
MCFG_GFXDECODE_ADD("gfxdecode", appoooh)
- MCFG_PALETTE_LENGTH(32*8+32*8)
+ MCFG_PALETTE_ADD("palette", 32*8+32*8)
- MCFG_PALETTE_INIT_OVERRIDE(appoooh_state,appoooh)
+ MCFG_PALETTE_INIT_OWNER(appoooh_state,appoooh)
MCFG_VIDEO_START_OVERRIDE(appoooh_state,appoooh)
MACHINE_CONFIG_END
@@ -474,9 +474,9 @@ static MACHINE_CONFIG_DERIVED( robowres, appoooh_common )
MCFG_SCREEN_UPDATE_DRIVER(appoooh_state, screen_update_robowres)
MCFG_GFXDECODE_ADD("gfxdecode", robowres)
- MCFG_PALETTE_LENGTH(32*8+32*8)
+ MCFG_PALETTE_ADD("palette", 32*8+32*8)
- MCFG_PALETTE_INIT_OVERRIDE(appoooh_state,robowres)
+ MCFG_PALETTE_INIT_OWNER(appoooh_state,robowres)
MCFG_VIDEO_START_OVERRIDE(appoooh_state,appoooh)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/aquarium.c b/src/mame/drivers/aquarium.c
index 18fbd70ffb6..841d474be20 100644
--- a/src/mame/drivers/aquarium.c
+++ b/src/mame/drivers/aquarium.c
@@ -106,7 +106,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, aquarium_state )
AM_RANGE(0xc01000, 0xc01fff) AM_RAM_WRITE(aquarium_bak_videoram_w) AM_SHARE("bak_videoram")
AM_RANGE(0xc02000, 0xc03fff) AM_RAM_WRITE(aquarium_txt_videoram_w) AM_SHARE("txt_videoram")
AM_RANGE(0xc80000, 0xc81fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd00000, 0xd00fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xd00000, 0xd00fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xd80014, 0xd8001f) AM_WRITEONLY AM_SHARE("scroll")
AM_RANGE(0xd80068, 0xd80069) AM_WRITENOP /* probably not used */
AM_RANGE(0xd80080, 0xd80081) AM_READ_PORT("DSW")
@@ -316,8 +316,8 @@ static MACHINE_CONFIG_START( aquarium, aquarium_state )
MCFG_SCREEN_UPDATE_DRIVER(aquarium_state, screen_update_aquarium)
MCFG_GFXDECODE_ADD("gfxdecode", aquarium)
- MCFG_PALETTE_LENGTH(0x1000/2)
-
+ MCFG_PALETTE_ADD("palette", 0x1000/2)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/arabian.c b/src/mame/drivers/arabian.c
index e57321501a5..77362ae8aa6 100644
--- a/src/mame/drivers/arabian.c
+++ b/src/mame/drivers/arabian.c
@@ -371,8 +371,8 @@ static MACHINE_CONFIG_START( arabian, arabian_state )
MCFG_SCREEN_VISIBLE_AREA(0, 255, 11, 244)
MCFG_SCREEN_UPDATE_DRIVER(arabian_state, screen_update_arabian)
- MCFG_PALETTE_LENGTH(256*32)
-
+ MCFG_PALETTE_ADD("palette", 256*32)
+ MCFG_PALETTE_INIT_OWNER(arabian_state, arabian)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/arcadecl.c b/src/mame/drivers/arcadecl.c
index 1eff42217ef..5031847fbeb 100644
--- a/src/mame/drivers/arcadecl.c
+++ b/src/mame/drivers/arcadecl.c
@@ -328,7 +328,7 @@ static MACHINE_CONFIG_START( arcadecl, arcadecl_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", arcadecl)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_ATARI_MOTION_OBJECTS_ADD("mob", "screen", arcadecl_state::s_mob_config)
MCFG_ATARI_MOTION_OBJECTS_GFXDECODE("gfxdecode")
diff --git a/src/mame/drivers/arcadia.c b/src/mame/drivers/arcadia.c
index 8408eeea53c..460bada4404 100644
--- a/src/mame/drivers/arcadia.c
+++ b/src/mame/drivers/arcadia.c
@@ -346,8 +346,8 @@ static MACHINE_CONFIG_START( arcadia, arcadia_amiga_state )
MCFG_SCREEN_VISIBLE_AREA((129-8)*2, (449+8-1)*2, 44-8, 244+8-1)
MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga)
- MCFG_PALETTE_LENGTH(4096)
- MCFG_PALETTE_INIT_OVERRIDE(arcadia_amiga_state,amiga)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_INIT_OWNER(arcadia_amiga_state,amiga)
MCFG_VIDEO_START_OVERRIDE(arcadia_amiga_state,amiga)
diff --git a/src/mame/drivers/argus.c b/src/mame/drivers/argus.c
index a427a5a2556..cc674b0906d 100644
--- a/src/mame/drivers/argus.c
+++ b/src/mame/drivers/argus.c
@@ -559,7 +559,7 @@ static MACHINE_CONFIG_START( argus, argus_state )
MCFG_SCREEN_UPDATE_DRIVER(argus_state, screen_update_argus)
MCFG_GFXDECODE_ADD("gfxdecode", argus)
- MCFG_PALETTE_LENGTH(896)
+ MCFG_PALETTE_ADD("palette", 896)
MCFG_VIDEO_START_OVERRIDE(argus_state,argus)
MCFG_VIDEO_RESET_OVERRIDE(argus_state,argus)
@@ -604,7 +604,7 @@ static MACHINE_CONFIG_START( valtric, argus_state )
MCFG_SCREEN_UPDATE_DRIVER(argus_state, screen_update_valtric)
MCFG_GFXDECODE_ADD("gfxdecode", valtric)
- MCFG_PALETTE_LENGTH(768)
+ MCFG_PALETTE_ADD("palette", 768)
MCFG_VIDEO_START_OVERRIDE(argus_state,valtric)
MCFG_VIDEO_RESET_OVERRIDE(argus_state,valtric)
@@ -649,7 +649,7 @@ static MACHINE_CONFIG_START( butasan, argus_state )
MCFG_SCREEN_UPDATE_DRIVER(argus_state, screen_update_butasan)
MCFG_GFXDECODE_ADD("gfxdecode", butasan)
- MCFG_PALETTE_LENGTH(768)
+ MCFG_PALETTE_ADD("palette", 768)
MCFG_VIDEO_START_OVERRIDE(argus_state,butasan)
MCFG_VIDEO_RESET_OVERRIDE(argus_state,butasan)
diff --git a/src/mame/drivers/aristmk4.c b/src/mame/drivers/aristmk4.c
index 48455b5a34b..0d557bb5848 100644
--- a/src/mame/drivers/aristmk4.c
+++ b/src/mame/drivers/aristmk4.c
@@ -348,7 +348,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(aristmk4);
DECLARE_PALETTE_INIT(lions);
UINT32 screen_update_aristmk4(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(note_input_reset);
@@ -426,7 +426,7 @@ UINT32 aristmk4_state::screen_update_aristmk4(screen_device &screen, bitmap_ind1
// as we only update the background, not the entire display.
flipx = ((m_mkiv_vram[count]) & 0x04);
flipy = ((m_mkiv_vram[count]) & 0x08);
- gfx->opaque(bitmap,cliprect,tile,color,flipx,flipy,(38-x-1)<<3,(27-y-1)<<3);
+ gfx->opaque(m_palette,bitmap,cliprect,tile,color,flipx,flipy,(38-x-1)<<3,(27-y-1)<<3);
count+=2;
}
}
@@ -1606,12 +1606,12 @@ static I8255A_INTERFACE( ppi8255_intf )
/* same as Casino Winner HW */
-void aristmk4_state::palette_init()
+PALETTE_INIT_MEMBER(aristmk4_state, aristmk4)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int bit0,bit1,bit2,r,g,b;
@@ -1627,7 +1627,7 @@ void aristmk4_state::palette_init()
bit2 = (color_prom[0] >> 7) & 0x01;
r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
color_prom++;
}
}
@@ -1700,7 +1700,8 @@ static MACHINE_CONFIG_START( aristmk4, aristmk4_state )
MCFG_SCREEN_UPDATE_DRIVER(aristmk4_state, screen_update_aristmk4)
MCFG_GFXDECODE_ADD("gfxdecode", aristmk4)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_INIT_OWNER(aristmk4_state, aristmk4)
MCFG_I8255A_ADD( "ppi8255_0", ppi8255_intf )
@@ -1752,7 +1753,7 @@ PALETTE_INIT_MEMBER(aristmk4_state,lions)
{
int i;
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int bit0,bit1,r,g,b;
@@ -1766,12 +1767,13 @@ PALETTE_INIT_MEMBER(aristmk4_state,lions)
bit1 = (i >> 5) & 0x01;
r = 0x4f * bit0 + 0xa8 * bit1;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
static MACHINE_CONFIG_DERIVED( 86lions, aristmk4 )
- MCFG_PALETTE_INIT_OVERRIDE(aristmk4_state,lions)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(aristmk4_state,lions)
MACHINE_CONFIG_END
ROM_START( 3bagflvt )
diff --git a/src/mame/drivers/aristmk5.c b/src/mame/drivers/aristmk5.c
index ee701523dd0..0103f615365 100644
--- a/src/mame/drivers/aristmk5.c
+++ b/src/mame/drivers/aristmk5.c
@@ -436,11 +436,10 @@ static MACHINE_CONFIG_START( aristmk5, aristmk5_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(640, 400)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 400-1)
-
- MCFG_PALETTE_LENGTH(0x200)
-
MCFG_SCREEN_UPDATE_DRIVER(archimedes_state, screen_update)
+ MCFG_PALETTE_ADD("palette", 0x200)
+
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_DAC_ADD("dac0")
MCFG_SOUND_ROUTE(0, "mono", 0.10)
@@ -482,11 +481,10 @@ static MACHINE_CONFIG_START( aristmk5_usa, aristmk5_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(640, 400)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 400-1)
-
- MCFG_PALETTE_LENGTH(0x200)
-
MCFG_SCREEN_UPDATE_DRIVER(archimedes_state, screen_update)
+ MCFG_PALETTE_ADD("palette", 0x200)
+
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_DAC_ADD("dac0")
MCFG_SOUND_ROUTE(0, "mono", 0.10)
diff --git a/src/mame/drivers/aristmk6.c b/src/mame/drivers/aristmk6.c
index e64c33a2238..c6843d076e8 100644
--- a/src/mame/drivers/aristmk6.c
+++ b/src/mame/drivers/aristmk6.c
@@ -62,7 +62,7 @@ UINT32 aristmk6_state::screen_update_aristmk6(screen_device &screen, bitmap_rgb3
popmessage("%d %d %04x %d",m_test_x,m_test_y,m_start_offs,m_type);
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
count = (m_start_offs);
@@ -97,7 +97,7 @@ UINT32 aristmk6_state::screen_update_aristmk6(screen_device &screen, bitmap_rgb3
color = blit_ram[count];
if(cliprect.contains(x, y))
- bitmap.pix32(y, x) = machine().pens[color];
+ bitmap.pix32(y, x) = m_palette->pen(color);
count++;
}
@@ -146,7 +146,7 @@ static MACHINE_CONFIG_START( aristmk6, aristmk6_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(aristmk6_state, screen_update_aristmk6)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/arkanoid.c b/src/mame/drivers/arkanoid.c
index 0a9e15c6845..2ac4cb26e10 100644
--- a/src/mame/drivers/arkanoid.c
+++ b/src/mame/drivers/arkanoid.c
@@ -1220,9 +1220,7 @@ static MACHINE_CONFIG_START( arkanoid, arkanoid_state )
MCFG_SCREEN_UPDATE_DRIVER(arkanoid_state, screen_update_arkanoid)
MCFG_GFXDECODE_ADD("gfxdecode", arkanoid)
- MCFG_PALETTE_LENGTH(512)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 512)
MCFG_VIDEO_START_OVERRIDE(arkanoid_state,arkanoid)
/* sound hardware */
@@ -1253,9 +1251,7 @@ static MACHINE_CONFIG_START( hexa, arkanoid_state )
MCFG_SCREEN_UPDATE_DRIVER(arkanoid_state, screen_update_hexa)
MCFG_GFXDECODE_ADD("gfxdecode", hexa)
- MCFG_PALETTE_LENGTH(256)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
MCFG_VIDEO_START_OVERRIDE(arkanoid_state,arkanoid)
/* sound hardware */
@@ -1298,9 +1294,7 @@ static MACHINE_CONFIG_START( brixian, arkanoid_state )
MCFG_SCREEN_UPDATE_DRIVER(arkanoid_state, screen_update_hexa)
MCFG_GFXDECODE_ADD("gfxdecode", arkanoid)
- MCFG_PALETTE_LENGTH(512)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 512)
MCFG_VIDEO_START_OVERRIDE(arkanoid_state,arkanoid)
/* sound hardware */
diff --git a/src/mame/drivers/armedf.c b/src/mame/drivers/armedf.c
index fcb38717090..b462eb01663 100644
--- a/src/mame/drivers/armedf.c
+++ b/src/mame/drivers/armedf.c
@@ -389,7 +389,7 @@ static ADDRESS_MAP_START( terraf_map, AS_PROGRAM, 16, armedf_state )
AM_RANGE(0x000000, 0x05ffff) AM_ROM
AM_RANGE(0x060000, 0x0603ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x060400, 0x063fff) AM_RAM
- AM_RANGE(0x064000, 0x064fff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x064000, 0x064fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x068000, 0x069fff) AM_READWRITE8(nb1414m4_text_videoram_r,nb1414m4_text_videoram_w,0x00ff)
AM_RANGE(0x06a000, 0x06a9ff) AM_RAM
AM_RANGE(0x06c000, 0x06cfff) AM_RAM AM_SHARE("spr_pal_clut")
@@ -420,7 +420,7 @@ static ADDRESS_MAP_START( cclimbr2_map, AS_PROGRAM, 16, armedf_state )
AM_RANGE(0x000000, 0x05ffff) AM_ROM
AM_RANGE(0x060000, 0x060fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x061000, 0x063fff) AM_RAM
- AM_RANGE(0x064000, 0x064fff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x064000, 0x064fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x068000, 0x069fff) AM_READWRITE8(nb1414m4_text_videoram_r,nb1414m4_text_videoram_w,0x00ff)
AM_RANGE(0x06a000, 0x06a9ff) AM_RAM
AM_RANGE(0x06c000, 0x06cfff) AM_RAM AM_SHARE("spr_pal_clut")
@@ -442,7 +442,7 @@ static ADDRESS_MAP_START( legion_map, AS_PROGRAM, 16, armedf_state )
AM_RANGE(0x000000, 0x05ffff) AM_ROM
AM_RANGE(0x060000, 0x060fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x061000, 0x063fff) AM_RAM
- AM_RANGE(0x064000, 0x064fff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x064000, 0x064fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x068000, 0x069fff) AM_READWRITE8(nb1414m4_text_videoram_r,nb1414m4_text_videoram_w,0x00ff)
AM_RANGE(0x06a000, 0x06a9ff) AM_RAM
AM_RANGE(0x06c000, 0x06cfff) AM_RAM AM_SHARE("spr_pal_clut")
@@ -474,7 +474,7 @@ static ADDRESS_MAP_START( legiono_map, AS_PROGRAM, 16, armedf_state )
AM_RANGE(0x000000, 0x05ffff) AM_ROM
AM_RANGE(0x060000, 0x060fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x061000, 0x063fff) AM_RAM
- AM_RANGE(0x064000, 0x064fff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x064000, 0x064fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x068000, 0x069fff) AM_READWRITE8(nb1414m4_text_videoram_r,nb1414m4_text_videoram_w,0x00ff)
AM_RANGE(0x06a000, 0x06a9ff) AM_RAM
AM_RANGE(0x06c000, 0x06cfff) AM_RAM AM_SHARE("spr_pal_clut")
@@ -499,7 +499,7 @@ static ADDRESS_MAP_START( armedf_map, AS_PROGRAM, 16, armedf_state )
AM_RANGE(0x066000, 0x066fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_SHARE("bg_videoram")
AM_RANGE(0x067000, 0x067fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_SHARE("fg_videoram")
AM_RANGE(0x068000, 0x069fff) AM_READWRITE8(armedf_text_videoram_r,armedf_text_videoram_w,0x00ff)
- AM_RANGE(0x06a000, 0x06afff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x06a000, 0x06afff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x06b000, 0x06bfff) AM_RAM AM_SHARE("spr_pal_clut")
AM_RANGE(0x06c000, 0x06c001) AM_READ_PORT("P1")
AM_RANGE(0x06c002, 0x06c003) AM_READ_PORT("P2")
@@ -672,7 +672,7 @@ static ADDRESS_MAP_START( bigfghtr_map, AS_PROGRAM, 16, bigfghtr_state )
AM_RANGE(0x086000, 0x086fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_SHARE("bg_videoram")
AM_RANGE(0x087000, 0x087fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_SHARE("fg_videoram")
AM_RANGE(0x088000, 0x089fff) AM_READWRITE8(armedf_text_videoram_r,armedf_text_videoram_w,0x00ff)
- AM_RANGE(0x08a000, 0x08afff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x08a000, 0x08afff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x08b000, 0x08bfff) AM_RAM AM_SHARE("spr_pal_clut")
AM_RANGE(0x08c000, 0x08c001) AM_READ_PORT("P1")
AM_RANGE(0x08c002, 0x08c003) AM_READ_PORT("P2")
@@ -1189,7 +1189,8 @@ static MACHINE_CONFIG_START( terraf, armedf_state )
MCFG_GFXDECODE_ADD("gfxdecode", armedf)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
@@ -1237,7 +1238,8 @@ static MACHINE_CONFIG_START( terrafjb, armedf_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", armedf)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
@@ -1281,7 +1283,8 @@ static MACHINE_CONFIG_START( kozure, armedf_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", armedf)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
@@ -1325,7 +1328,8 @@ static MACHINE_CONFIG_START( armedf, armedf_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", armedf)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
@@ -1369,7 +1373,8 @@ static MACHINE_CONFIG_START( cclimbr2, armedf_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", armedf)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
@@ -1413,7 +1418,8 @@ static MACHINE_CONFIG_START( legion, armedf_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", armedf)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
@@ -1457,7 +1463,8 @@ static MACHINE_CONFIG_START( legiono, armedf_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", armedf)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
@@ -1512,7 +1519,8 @@ static MACHINE_CONFIG_START( bigfghtr, bigfghtr_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", armedf)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
diff --git a/src/mame/drivers/ashnojoe.c b/src/mame/drivers/ashnojoe.c
index 5d0508aa684..454da1fcfbb 100644
--- a/src/mame/drivers/ashnojoe.c
+++ b/src/mame/drivers/ashnojoe.c
@@ -104,7 +104,7 @@ static ADDRESS_MAP_START( ashnojoe_map, AS_PROGRAM, 16, ashnojoe_state )
AM_RANGE(0x046000, 0x046fff) AM_RAM_WRITE(ashnojoe_tileram6_w) AM_SHARE("tileram_6")
AM_RANGE(0x047000, 0x047fff) AM_RAM_WRITE(ashnojoe_tileram7_w) AM_SHARE("tileram_7")
AM_RANGE(0x048000, 0x048fff) AM_RAM_WRITE(ashnojoe_tileram_w) AM_SHARE("tileram")
- AM_RANGE(0x049000, 0x049fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x049000, 0x049fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x04a000, 0x04a001) AM_READ_PORT("P1")
AM_RANGE(0x04a002, 0x04a003) AM_READ_PORT("P2")
AM_RANGE(0x04a004, 0x04a005) AM_READ_PORT("DSW")
@@ -357,8 +357,8 @@ static MACHINE_CONFIG_START( ashnojoe, ashnojoe_state )
MCFG_SCREEN_UPDATE_DRIVER(ashnojoe_state, screen_update_ashnojoe)
MCFG_GFXDECODE_ADD("gfxdecode", ashnojoe)
- MCFG_PALETTE_LENGTH(0x1000/2)
-
+ MCFG_PALETTE_ADD("palette", 0x1000/2)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/asterix.c b/src/mame/drivers/asterix.c
index 91a9cb2673a..9fb1b48ba48 100644
--- a/src/mame/drivers/asterix.c
+++ b/src/mame/drivers/asterix.c
@@ -165,7 +165,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, asterix_state )
AM_RANGE(0x180000, 0x1807ff) AM_DEVREADWRITE("k053244", k05324x_device, k053245_word_r, k053245_word_w)
AM_RANGE(0x180800, 0x180fff) AM_RAM // extra RAM, or mirror for the above?
AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE("k053244", k05324x_device, k053244_word_r, k053244_word_w)
- AM_RANGE(0x280000, 0x280fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x280000, 0x280fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x300000, 0x30001f) AM_DEVREADWRITE("k053244", k05324x_device, k053244_lsb_r, k053244_lsb_w)
AM_RANGE(0x380000, 0x380001) AM_READ_PORT("IN0")
AM_RANGE(0x380002, 0x380003) AM_READ_PORT("IN1")
@@ -281,8 +281,6 @@ static MACHINE_CONFIG_START( asterix, asterix_state )
MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
@@ -290,13 +288,17 @@ static MACHINE_CONFIG_START( asterix, asterix_state )
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(asterix_state, screen_update_asterix)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K056832_ADD("k056832", asterix_k056832_intf)
MCFG_K056832_GFXDECODE("gfxdecode")
+ MCFG_K056832_PALETTE("palette")
MCFG_K053244_ADD("k053244", asterix_k05324x_intf)
MCFG_K053244_GFXDECODE("gfxdecode")
+ MCFG_K053244_PALETTE("palette")
MCFG_K053251_ADD("k053251")
/* sound hardware */
diff --git a/src/mame/drivers/astrcorp.c b/src/mame/drivers/astrcorp.c
index 30b99cef54f..dc370753230 100644
--- a/src/mame/drivers/astrcorp.c
+++ b/src/mame/drivers/astrcorp.c
@@ -149,7 +149,7 @@ void astrocorp_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &clipre
{
for (xwrap = 0 ; xwrap <= 0x200 ; xwrap += 0x200)
{
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code, 0,
0, 0,
sx + x * 16 - xwrap, sy + y * 16 - ywrap, 0xff);
@@ -166,7 +166,7 @@ UINT32 astrocorp_state::screen_update_astrocorp(screen_device &screen, bitmap_in
if (m_screen_enable & 1)
copybitmap(bitmap, m_bitmap, 0,0,0,0, cliprect);
else
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
@@ -290,7 +290,7 @@ READ16_MEMBER(astrocorp_state::astrocorp_unk_r)
WRITE16_MEMBER(astrocorp_state::astrocorp_palette_w)
{
COMBINE_DATA(&m_paletteram[offset]);
- palette_set_color_rgb(machine(), offset,
+ m_palette->set_pen_color(offset,
pal5bit((m_paletteram[offset] >> 0) & 0x1f),
pal6bit((m_paletteram[offset] >> 5) & 0x3f),
pal5bit((m_paletteram[offset] >> 11) & 0x1f)
@@ -494,7 +494,7 @@ static MACHINE_CONFIG_START( showhand, astrocorp_state )
MCFG_SCREEN_UPDATE_DRIVER(astrocorp_state, screen_update_astrocorp)
MCFG_GFXDECODE_ADD("gfxdecode", astrocorp)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_VIDEO_START_OVERRIDE(astrocorp_state,astrocorp)
@@ -545,7 +545,7 @@ static MACHINE_CONFIG_START( skilldrp, astrocorp_state )
MCFG_SCREEN_UPDATE_DRIVER(astrocorp_state, screen_update_astrocorp)
MCFG_GFXDECODE_ADD("gfxdecode", astrocorp)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_VIDEO_START_OVERRIDE(astrocorp_state,astrocorp)
diff --git a/src/mame/drivers/astrocde.c b/src/mame/drivers/astrocde.c
index 67a8876e78a..b9cce169924 100644
--- a/src/mame/drivers/astrocde.c
+++ b/src/mame/drivers/astrocde.c
@@ -1273,7 +1273,8 @@ static MACHINE_CONFIG_START( astrocade_base, astrocde_state )
/* each game has its own map */
/* video hardware */
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_INIT_OWNER(astrocde_state, astrocde)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(ASTROCADE_CLOCK, 455, 0, 352, 262, 0, 240)
@@ -1289,9 +1290,10 @@ static MACHINE_CONFIG_DERIVED( astrocade_16color_base, astrocade_base )
MCFG_NVRAM_ADD_0FILL("nvram")
/* video hardware */
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 4096)
- MCFG_PALETTE_INIT_OVERRIDE(astrocde_state,profpac)
+ MCFG_PALETTE_INIT_OWNER(astrocde_state,profpac)
MCFG_VIDEO_START_OVERRIDE(astrocde_state,profpac)
MCFG_SCREEN_MODIFY("screen")
diff --git a/src/mame/drivers/asuka.c b/src/mame/drivers/asuka.c
index 288411828e0..b57114140d3 100644
--- a/src/mame/drivers/asuka.c
+++ b/src/mame/drivers/asuka.c
@@ -895,14 +895,16 @@ static MACHINE_CONFIG_START( bonzeadv, asuka_state )
MCFG_SCREEN_VBLANK_DRIVER(asuka_state, screen_eof_asuka)
MCFG_GFXDECODE_ADD("gfxdecode", asuka)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
MCFG_PC090OJ_ADD("pc090oj", bonzeadv_pc090oj_intf)
MCFG_PC090OJ_GFXDECODE("gfxdecode")
+ MCFG_PC090OJ_PALETTE("palette")
MCFG_TC0100SCN_ADD("tc0100scn", asuka_tc0100scn_intf)
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
MCFG_TC0110PCR_ADD("tc0110pcr", asuka_tc0110pcr_intf)
-
+ MCFG_TC0110PCR_PALETTE("palette")
+
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -940,13 +942,15 @@ static MACHINE_CONFIG_START( asuka, asuka_state )
MCFG_SCREEN_VBLANK_DRIVER(asuka_state, screen_eof_asuka)
MCFG_GFXDECODE_ADD("gfxdecode", asuka)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
MCFG_PC090OJ_ADD("pc090oj", asuka_pc090oj_intf)
MCFG_PC090OJ_GFXDECODE("gfxdecode")
+ MCFG_PC090OJ_PALETTE("palette")
MCFG_TC0100SCN_ADD("tc0100scn", asuka_tc0100scn_intf)
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
MCFG_TC0110PCR_ADD("tc0110pcr", asuka_tc0110pcr_intf)
+ MCFG_TC0110PCR_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -993,13 +997,15 @@ static MACHINE_CONFIG_START( cadash, asuka_state )
MCFG_SCREEN_VBLANK_DRIVER(asuka_state, screen_eof_asuka)
MCFG_GFXDECODE_ADD("gfxdecode", asuka)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
MCFG_PC090OJ_ADD("pc090oj", asuka_pc090oj_intf)
MCFG_PC090OJ_GFXDECODE("gfxdecode")
+ MCFG_PC090OJ_PALETTE("palette")
MCFG_TC0100SCN_ADD("tc0100scn", cadash_tc0100scn_intf)
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
MCFG_TC0110PCR_ADD("tc0110pcr", asuka_tc0110pcr_intf)
+ MCFG_TC0110PCR_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1038,13 +1044,15 @@ static MACHINE_CONFIG_START( mofflott, asuka_state )
MCFG_SCREEN_VBLANK_DRIVER(asuka_state, screen_eof_asuka)
MCFG_GFXDECODE_ADD("gfxdecode", asuka)
- MCFG_PALETTE_LENGTH(4096) /* only Mofflott uses full palette space */
+ MCFG_PALETTE_ADD("palette", 4096) /* only Mofflott uses full palette space */
MCFG_PC090OJ_ADD("pc090oj", bonzeadv_pc090oj_intf)
MCFG_PC090OJ_GFXDECODE("gfxdecode")
+ MCFG_PC090OJ_PALETTE("palette")
MCFG_TC0100SCN_ADD("tc0100scn", cadash_tc0100scn_intf)
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
MCFG_TC0110PCR_ADD("tc0110pcr", asuka_tc0110pcr_intf)
+ MCFG_TC0110PCR_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1087,13 +1095,15 @@ static MACHINE_CONFIG_START( galmedes, asuka_state )
MCFG_SCREEN_VBLANK_DRIVER(asuka_state, screen_eof_asuka)
MCFG_GFXDECODE_ADD("gfxdecode", asuka)
- MCFG_PALETTE_LENGTH(4096) /* only Mofflott uses full palette space */
+ MCFG_PALETTE_ADD("palette", 4096) /* only Mofflott uses full palette space */
MCFG_PC090OJ_ADD("pc090oj", bonzeadv_pc090oj_intf)
MCFG_PC090OJ_GFXDECODE("gfxdecode")
+ MCFG_PC090OJ_PALETTE("palette")
MCFG_TC0100SCN_ADD("tc0100scn", cadash_tc0100scn_intf)
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
MCFG_TC0110PCR_ADD("tc0110pcr", asuka_tc0110pcr_intf)
+ MCFG_TC0110PCR_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1132,13 +1142,15 @@ static MACHINE_CONFIG_START( eto, asuka_state )
MCFG_SCREEN_VBLANK_DRIVER(asuka_state, screen_eof_asuka)
MCFG_GFXDECODE_ADD("gfxdecode", asuka)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
MCFG_PC090OJ_ADD("pc090oj", bonzeadv_pc090oj_intf)
MCFG_PC090OJ_GFXDECODE("gfxdecode")
+ MCFG_PC090OJ_PALETTE("palette")
MCFG_TC0100SCN_ADD("tc0100scn", cadash_tc0100scn_intf)
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
MCFG_TC0110PCR_ADD("tc0110pcr", asuka_tc0110pcr_intf)
+ MCFG_TC0110PCR_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/atarifb.c b/src/mame/drivers/atarifb.c
index ba8f72949a9..ba346cee594 100644
--- a/src/mame/drivers/atarifb.c
+++ b/src/mame/drivers/atarifb.c
@@ -117,25 +117,25 @@
*
*************************************/
-void atarifb_state::palette_init()
+PALETTE_INIT_MEMBER(atarifb_state, atarifb)
{
/* chars */
- palette_set_color(machine(), 0, rgb_t(0xff,0xff,0xff)); /* white */
- palette_set_color(machine(), 1, rgb_t(0x00,0x00,0x00)); /* black */
+ palette.set_pen_color(0, rgb_t(0xff,0xff,0xff)); /* white */
+ palette.set_pen_color(1, rgb_t(0x00,0x00,0x00)); /* black */
/* sprites */
- palette_set_color(machine(), 2, rgb_t(0x40,0x40,0x40)); /* dark grey (?) - used in Soccer only */
- palette_set_color(machine(), 3, rgb_t(0xff,0xff,0xff)); /* white */
- palette_set_color(machine(), 4, rgb_t(0x40,0x40,0x40)); /* dark grey (?) - used in Soccer only */
- palette_set_color(machine(), 5, rgb_t(0x00,0x00,0x00)); /* black */
+ palette.set_pen_color(2, rgb_t(0x40,0x40,0x40)); /* dark grey (?) - used in Soccer only */
+ palette.set_pen_color(3, rgb_t(0xff,0xff,0xff)); /* white */
+ palette.set_pen_color(4, rgb_t(0x40,0x40,0x40)); /* dark grey (?) - used in Soccer only */
+ palette.set_pen_color(5, rgb_t(0x00,0x00,0x00)); /* black */
/* sprite masks */
- palette_set_color(machine(), 6, rgb_t(0x40,0x40,0x40)); /* dark grey (?) - used in Soccer only */
- palette_set_color(machine(), 7, rgb_t(0x80,0x80,0x80)); /* grey */
- palette_set_color(machine(), 8, rgb_t(0x40,0x40,0x40)); /* dark grey (?) - used in Soccer only */
- palette_set_color(machine(), 9, rgb_t(0x00,0x00,0x00)); /* black */
- palette_set_color(machine(), 10, rgb_t(0x40,0x40,0x40)); /* dark grey (?) - used in Soccer only */
- palette_set_color(machine(), 11, rgb_t(0xff,0xff,0xff)); /* white */
+ palette.set_pen_color(6, rgb_t(0x40,0x40,0x40)); /* dark grey (?) - used in Soccer only */
+ palette.set_pen_color(7, rgb_t(0x80,0x80,0x80)); /* grey */
+ palette.set_pen_color(8, rgb_t(0x40,0x40,0x40)); /* dark grey (?) - used in Soccer only */
+ palette.set_pen_color(9, rgb_t(0x00,0x00,0x00)); /* black */
+ palette.set_pen_color(10, rgb_t(0x40,0x40,0x40)); /* dark grey (?) - used in Soccer only */
+ palette.set_pen_color(11, rgb_t(0xff,0xff,0xff)); /* white */
}
@@ -563,8 +563,8 @@ static MACHINE_CONFIG_START( atarifb, atarifb_state )
MCFG_SCREEN_UPDATE_DRIVER(atarifb_state, screen_update_atarifb)
MCFG_GFXDECODE_ADD("gfxdecode", atarifb)
- MCFG_PALETTE_LENGTH(12)
-
+ MCFG_PALETTE_ADD("palette", 12)
+ MCFG_PALETTE_INIT_OWNER(atarifb_state, atarifb)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/atarig1.c b/src/mame/drivers/atarig1.c
index 3f4d6d2ae49..8af4802e2ba 100644
--- a/src/mame/drivers/atarig1.c
+++ b/src/mame/drivers/atarig1.c
@@ -436,7 +436,7 @@ static MACHINE_CONFIG_START( atarig1, atarig1_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", atarig1)
- MCFG_PALETTE_LENGTH(1280)
+ MCFG_PALETTE_ADD("palette", 1280)
/* initialize the playfield */
MCFG_TILEMAP_ADD_STANDARD("playfield", 2, atarig1_state, get_playfield_tile_info, 8,8, SCAN_ROWS, 64,64)
diff --git a/src/mame/drivers/atarig42.c b/src/mame/drivers/atarig42.c
index 3489466bdd9..8da6db91bdc 100644
--- a/src/mame/drivers/atarig42.c
+++ b/src/mame/drivers/atarig42.c
@@ -546,7 +546,7 @@ static MACHINE_CONFIG_START( atarig42, atarig42_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", atarig42)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_TILEMAP_ADD_CUSTOM("playfield", 2, atarig42_state, get_playfield_tile_info, 8,8, atarig42_playfield_scan, 128,64)
MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha", 2, atarig42_state, get_alpha_tile_info, 8,8, SCAN_ROWS, 64,32, 0)
diff --git a/src/mame/drivers/atarigt.c b/src/mame/drivers/atarigt.c
index 72de969e0be..b3e6e0ffd89 100644
--- a/src/mame/drivers/atarigt.c
+++ b/src/mame/drivers/atarigt.c
@@ -832,7 +832,7 @@ static MACHINE_CONFIG_START( atarigt, atarigt_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", atarigt)
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD("palette", 32768)
MCFG_TILEMAP_ADD_CUSTOM("playfield", 2, atarigt_state, get_playfield_tile_info, 8,8, atarigt_playfield_scan, 128,64)
MCFG_TILEMAP_ADD_STANDARD("alpha", 2, atarigt_state, get_alpha_tile_info, 8,8, SCAN_ROWS, 64, 32)
diff --git a/src/mame/drivers/atarigx2.c b/src/mame/drivers/atarigx2.c
index c9da8acb9fd..d13266705f9 100644
--- a/src/mame/drivers/atarigx2.c
+++ b/src/mame/drivers/atarigx2.c
@@ -1464,7 +1464,7 @@ static MACHINE_CONFIG_START( atarigx2, atarigx2_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", atarigx2)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_TILEMAP_ADD_CUSTOM("playfield", 2, atarigx2_state, get_playfield_tile_info, 8,8, atarigx2_playfield_scan, 128,64)
MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha", 2, atarigx2_state, get_alpha_tile_info, 8,8, SCAN_ROWS, 64,32, 0)
diff --git a/src/mame/drivers/atarisy1.c b/src/mame/drivers/atarisy1.c
index 0159d71b1bd..c7cd11f2447 100644
--- a/src/mame/drivers/atarisy1.c
+++ b/src/mame/drivers/atarisy1.c
@@ -442,7 +442,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, atarisy1_state )
AM_RANGE(0xa00000, 0xa01fff) AM_RAM_DEVWRITE("playfield", tilemap_device, write) AM_SHARE("playfield")
AM_RANGE(0xa02000, 0xa02fff) AM_RAM_WRITE(atarisy1_spriteram_w) AM_SHARE("mob")
AM_RANGE(0xa03000, 0xa03fff) AM_RAM_DEVWRITE("alpha", tilemap_device, write) AM_SHARE("alpha")
- AM_RANGE(0xb00000, 0xb007ff) AM_RAM_WRITE(paletteram_IIIIRRRRGGGGBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xb00000, 0xb007ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xf00000, 0xf00fff) AM_DEVREADWRITE8("eeprom", atari_eeprom_device, read, write, 0x00ff)
AM_RANGE(0xf20000, 0xf20007) AM_READ(trakball_r)
AM_RANGE(0xf40000, 0xf4001f) AM_READWRITE(joystick_r, joystick_w)
@@ -729,7 +729,9 @@ static MACHINE_CONFIG_START( atarisy1, atarisy1_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", atarisy1)
- MCFG_PALETTE_LENGTH(1024)
+
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(IIIIRRRRGGGGBBBB)
MCFG_TILEMAP_ADD_STANDARD("playfield", 2, atarisy1_state, get_playfield_tile_info, 8,8, SCAN_ROWS, 64,64)
MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha", 2, atarisy1_state, get_alpha_tile_info, 8,8, SCAN_ROWS, 64,32, 0)
diff --git a/src/mame/drivers/atarisy2.c b/src/mame/drivers/atarisy2.c
index ab30729adbe..08832135fa0 100644
--- a/src/mame/drivers/atarisy2.c
+++ b/src/mame/drivers/atarisy2.c
@@ -1237,7 +1237,7 @@ static MACHINE_CONFIG_START( atarisy2, atarisy2_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", atarisy2)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_TILEMAP_ADD_STANDARD("playfield", 2, atarisy2_state, get_playfield_tile_info, 8,8, SCAN_ROWS, 128,64)
MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha", 2, atarisy2_state, get_alpha_tile_info, 8,8, SCAN_ROWS, 64,48, 0)
diff --git a/src/mame/drivers/atarisy4.c b/src/mame/drivers/atarisy4.c
index ef0a4a26a11..d397abf91a4 100644
--- a/src/mame/drivers/atarisy4.c
+++ b/src/mame/drivers/atarisy4.c
@@ -195,8 +195,8 @@ UINT32 atarisy4_state::screen_update_atarisy4(screen_device &screen, bitmap_rgb3
{
UINT16 data = *src++;
- *dest++ = machine().pens[data & 0xff];
- *dest++ = machine().pens[data >> 8];
+ *dest++ = m_palette->pen(data & 0xff);
+ *dest++ = m_palette->pen(data >> 8);
}
}
return 0;
@@ -400,7 +400,7 @@ void atarisy4_state::execute_gpu_command()
m_b_color_table[table_offs] = val;
/* Update */
- palette_set_color(machine(), table_offs, rgb_t(m_r_color_table[table_offs], m_g_color_table[table_offs], m_b_color_table[table_offs]));
+ m_palette->set_pen_color(table_offs, rgb_t(m_r_color_table[table_offs], m_g_color_table[table_offs], m_b_color_table[table_offs]));
++table_offs;
++offset;
@@ -753,7 +753,7 @@ static MACHINE_CONFIG_START( atarisy4, atarisy4_state )
MCFG_SCREEN_RAW_PARAMS(32000000/2, 660, 0, 512, 404, 0, 384)
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
MCFG_SCREEN_UPDATE_DRIVER(atarisy4_state, screen_update_atarisy4)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ataxx.c b/src/mame/drivers/ataxx.c
index 9b6aa23f567..17c85b40d0d 100644
--- a/src/mame/drivers/ataxx.c
+++ b/src/mame/drivers/ataxx.c
@@ -51,7 +51,7 @@ static ADDRESS_MAP_START( master_map_program, AS_PROGRAM, 8, leland_state )
AM_RANGE(0x2000, 0x9fff) AM_ROMBANK("bank1")
AM_RANGE(0xa000, 0xdfff) AM_ROMBANK("bank2") AM_WRITE(ataxx_battery_ram_w) AM_SHARE("battery")
AM_RANGE(0xe000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xffff) AM_READWRITE(ataxx_paletteram_and_misc_r, ataxx_paletteram_and_misc_w) AM_SHARE("paletteram")
+ AM_RANGE(0xf800, 0xffff) AM_READWRITE(ataxx_paletteram_and_misc_r, ataxx_paletteram_and_misc_w) AM_SHARE("palette")
ADDRESS_MAP_END
diff --git a/src/mame/drivers/atetris.c b/src/mame/drivers/atetris.c
index 11affe4fc47..b4717176f6a 100644
--- a/src/mame/drivers/atetris.c
+++ b/src/mame/drivers/atetris.c
@@ -192,7 +192,7 @@ WRITE8_MEMBER(atetris_state::nvram_enable_w)
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, atetris_state )
AM_RANGE(0x0000, 0x0fff) AM_RAM
AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(atetris_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x2000, 0x20ff) AM_MIRROR(0x0300) AM_RAM_WRITE(paletteram_RRRGGGBB_byte_w) AM_SHARE("paletteram")
+ AM_RANGE(0x2000, 0x20ff) AM_MIRROR(0x0300) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x2400, 0x25ff) AM_MIRROR(0x0200) AM_RAM_WRITE(nvram_w) AM_SHARE("nvram")
AM_RANGE(0x2800, 0x280f) AM_MIRROR(0x03e0) AM_DEVREADWRITE("pokey1", pokey_device, read, write)
AM_RANGE(0x2810, 0x281f) AM_MIRROR(0x03e0) AM_DEVREADWRITE("pokey2", pokey_device, read, write)
@@ -209,7 +209,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( atetrisb2_map, AS_PROGRAM, 8, atetris_state )
AM_RANGE(0x0000, 0x0fff) AM_RAM
AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(atetris_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x2000, 0x20ff) AM_RAM_WRITE(paletteram_RRRGGGBB_byte_w) AM_SHARE("paletteram")
+ AM_RANGE(0x2000, 0x20ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x2400, 0x25ff) AM_RAM_WRITE(nvram_w) AM_SHARE("nvram")
AM_RANGE(0x2802, 0x2802) AM_DEVWRITE("sn1", sn76496_device, write)
AM_RANGE(0x2804, 0x2804) AM_DEVWRITE("sn2", sn76496_device, write)
@@ -332,8 +332,10 @@ static MACHINE_CONFIG_START( atetris, atetris_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", atetris)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(RRRGGGBB)
+
MCFG_SCREEN_ADD("screen", RASTER)
/* note: these parameters are from published specs, not derived */
/* the board uses an SOS-2 chip to generate video signals */
@@ -364,7 +366,9 @@ static MACHINE_CONFIG_START( atetrisb2, atetris_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", atetris)
- MCFG_PALETTE_LENGTH(256)
+
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(RRRGGGBB)
MCFG_SCREEN_ADD("screen", RASTER)
/* note: these parameters are from published specs, not derived */
diff --git a/src/mame/drivers/atlantis.c b/src/mame/drivers/atlantis.c
index 8b7900bd659..2d70c8fdd35 100644
--- a/src/mame/drivers/atlantis.c
+++ b/src/mame/drivers/atlantis.c
@@ -154,8 +154,7 @@ static MACHINE_CONFIG_START( mwskins, atlantis_state )
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_DRIVER(atlantis_state, screen_update_mwskins)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, BBBBB_GGGGG_RRRRR)
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD_BBBBBGGGGGRRRRR("palette")
/* sound hardware */
MCFG_FRAGMENT_ADD(dcs2_audio_denver)
diff --git a/src/mame/drivers/atronic.c b/src/mame/drivers/atronic.c
index 6c78d1b283a..ea389a0a52c 100644
--- a/src/mame/drivers/atronic.c
+++ b/src/mame/drivers/atronic.c
@@ -69,7 +69,7 @@ static MACHINE_CONFIG_START( atronic, atronic_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/atvtrack.c b/src/mame/drivers/atvtrack.c
index bd7030decb4..afc4d55121d 100644
--- a/src/mame/drivers/atvtrack.c
+++ b/src/mame/drivers/atvtrack.c
@@ -409,7 +409,7 @@ static MACHINE_CONFIG_START( atvtrack, atvtrack_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(atvtrack_state, screen_update_atvtrack)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/avt.c b/src/mame/drivers/avt.c
index 7205b611a2f..6ad872a6ec9 100644
--- a/src/mame/drivers/avt.c
+++ b/src/mame/drivers/avt.c
@@ -445,7 +445,7 @@ public:
DECLARE_WRITE8_MEMBER(debug_w);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(avt);
UINT32 screen_update_avt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(avt_vblank_irq);
};
@@ -523,7 +523,7 @@ UINT32 avt_state::screen_update_avt(screen_device &screen, bitmap_ind16 &bitmap,
UINT16 tile = m_videoram[count] | ((m_colorram[count] & 1) << 8);
UINT8 color = (m_colorram[count] & 0xf0) >> 4;
- gfx->opaque(bitmap,cliprect,tile,color,0,0,x*8,(y*8));
+ gfx->opaque(m_palette,bitmap,cliprect,tile,color,0,0,x*8,(y*8));
count++;
}
@@ -533,7 +533,7 @@ UINT32 avt_state::screen_update_avt(screen_device &screen, bitmap_ind16 &bitmap,
}
-void avt_state::palette_init()
+PALETTE_INIT_MEMBER(avt_state, avt)
{
const UINT8 *color_prom = memregion("proms")->base();
/* prom bits
@@ -549,7 +549,7 @@ void avt_state::palette_init()
/* 0000BGRI */
if (color_prom == 0) return;
- for (j = 0; j < machine().total_colors(); j++)
+ for (j = 0; j < palette.entries(); j++)
{
int bit1, bit2, bit3, r, g, b, inten, intenmin, intenmax, i;
@@ -578,9 +578,9 @@ void avt_state::palette_init()
/* hack to switch cyan->magenta for highlighted background */
if (j == 0x40)
- palette_set_color(machine(), j, rgb_t(g, r, b)); // Why this one has R-G swapped?...
+ palette.set_pen_color(j, rgb_t(g, r, b)); // Why this one has R-G swapped?...
else
- palette_set_color(machine(), j, rgb_t(r, g, b));
+ palette.set_pen_color(j, rgb_t(r, g, b));
}
}
@@ -908,8 +908,8 @@ static MACHINE_CONFIG_START( avt, avt_state )
MCFG_GFXDECODE_ADD("gfxdecode", avt)
- MCFG_PALETTE_LENGTH(8*16)
-
+ MCFG_PALETTE_ADD("palette", 8*16)
+ MCFG_PALETTE_INIT_OWNER(avt_state, avt)
MCFG_MC6845_ADD("crtc", MC6845, "screen", CRTC_CLOCK, mc6845_intf) /* guess */
diff --git a/src/mame/drivers/backfire.c b/src/mame/drivers/backfire.c
index d93a3088565..ae0218a5cb5 100644
--- a/src/mame/drivers/backfire.c
+++ b/src/mame/drivers/backfire.c
@@ -232,7 +232,7 @@ WRITE32_MEMBER(backfire_state::backfire_eeprom_w)
WRITE32_MEMBER(backfire_state::backfire_nonbuffered_palette_w)
{
COMBINE_DATA(&m_generic_paletteram_32[offset]);
- palette_set_color_rgb(machine(),offset,pal5bit(m_generic_paletteram_32[offset] >> 0),pal5bit(m_generic_paletteram_32[offset] >> 5),pal5bit(m_generic_paletteram_32[offset] >> 10));
+ m_palette->set_pen_color(offset,pal5bit(m_generic_paletteram_32[offset] >> 0),pal5bit(m_generic_paletteram_32[offset] >> 5),pal5bit(m_generic_paletteram_32[offset] >> 10));
}
/* map 32-bit writes to 16-bit */
@@ -503,7 +503,7 @@ static MACHINE_CONFIG_START( backfire, backfire_state )
/* video hardware */
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_GFXDECODE_ADD("gfxdecode", backfire)
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
@@ -525,22 +525,26 @@ static MACHINE_CONFIG_START( backfire, backfire_state )
MCFG_DECO16IC_ADD("tilegen1", backfire_deco16ic_tilegen1_intf)
MCFG_DECO16IC_SET_SCREEN("lscreen")
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DECO16IC_ADD("tilegen2", backfire_deco16ic_tilegen2_intf)
MCFG_DECO16IC_SET_SCREEN("lscreen")
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
MCFG_VIDEO_SET_SCREEN("lscreen")
decospr_device::set_gfx_region(*device, 4);
decospr_device::set_pri_callback(*device, backfire_pri_callback);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen2", DECO_SPRITE, 0)
MCFG_VIDEO_SET_SCREEN("rscreen")
decospr_device::set_gfx_region(*device, 5);
decospr_device::set_pri_callback(*device, backfire_pri_callback);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
/* sound hardware */
diff --git a/src/mame/drivers/badlands.c b/src/mame/drivers/badlands.c
index eb575147f2d..73dee4a26b1 100644
--- a/src/mame/drivers/badlands.c
+++ b/src/mame/drivers/badlands.c
@@ -511,7 +511,7 @@ static MACHINE_CONFIG_START( badlands, badlands_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", badlands)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_TILEMAP_ADD_STANDARD("playfield", 2, badlands_state, get_playfield_tile_info, 8,8, SCAN_ROWS, 64,32)
MCFG_ATARI_MOTION_OBJECTS_ADD("mob", "screen", badlands_state::s_mob_config)
@@ -714,7 +714,7 @@ static MACHINE_CONFIG_START( badlandsb, badlands_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", badlandsb)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_TILEMAP_ADD_STANDARD("playfield", 2, badlands_state, get_playfield_tile_info, 8,8, SCAN_ROWS, 64,32)
MCFG_ATARI_MOTION_OBJECTS_ADD("mob", "screen", badlands_state::s_mob_config)
diff --git a/src/mame/drivers/bagman.c b/src/mame/drivers/bagman.c
index ed5ecd434aa..730521320ec 100644
--- a/src/mame/drivers/bagman.c
+++ b/src/mame/drivers/bagman.c
@@ -484,9 +484,9 @@ static MACHINE_CONFIG_START( bagman, bagman_state )
MCFG_SCREEN_UPDATE_DRIVER(bagman_state, screen_update_bagman)
MCFG_GFXDECODE_ADD("gfxdecode", bagman)
- MCFG_PALETTE_LENGTH(64)
+ MCFG_PALETTE_ADD("palette", 64)
- MCFG_PALETTE_INIT_OVERRIDE(bagman_state,bagman)
+ MCFG_PALETTE_INIT_OWNER(bagman_state,bagman)
MCFG_VIDEO_START_OVERRIDE(bagman_state,bagman)
MCFG_DEVICE_ADD("tmsprom", TMSPROM, 640000 / 2) /* rom clock */
@@ -520,9 +520,9 @@ static MACHINE_CONFIG_START( pickin, bagman_state )
MCFG_SCREEN_UPDATE_DRIVER(bagman_state, screen_update_bagman)
MCFG_GFXDECODE_ADD("gfxdecode", pickin)
- MCFG_PALETTE_LENGTH(64)
+ MCFG_PALETTE_ADD("palette", 64)
- MCFG_PALETTE_INIT_OVERRIDE(bagman_state,bagman)
+ MCFG_PALETTE_INIT_OWNER(bagman_state,bagman)
MCFG_VIDEO_START_OVERRIDE(bagman_state,bagman)
/* sound hardware */
@@ -572,9 +572,9 @@ static MACHINE_CONFIG_START( botanic, bagman_state )
MCFG_SCREEN_UPDATE_DRIVER(bagman_state, screen_update_bagman)
MCFG_GFXDECODE_ADD("gfxdecode", bagman)
- MCFG_PALETTE_LENGTH(64)
+ MCFG_PALETTE_ADD("palette", 64)
- MCFG_PALETTE_INIT_OVERRIDE(bagman_state,bagman)
+ MCFG_PALETTE_INIT_OWNER(bagman_state,bagman)
MCFG_VIDEO_START_OVERRIDE(bagman_state,bagman)
/* sound hardware */
diff --git a/src/mame/drivers/balsente.c b/src/mame/drivers/balsente.c
index 7dde11a2cdd..a5bcc697b4e 100644
--- a/src/mame/drivers/balsente.c
+++ b/src/mame/drivers/balsente.c
@@ -1226,7 +1226,7 @@ static MACHINE_CONFIG_START( balsente, balsente_state )
MCFG_SCREEN_RAW_PARAMS(BALSENTE_PIXEL_CLOCK, BALSENTE_HTOTAL, BALSENTE_HBEND, BALSENTE_HBSTART, BALSENTE_VTOTAL, BALSENTE_VBEND, BALSENTE_VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(balsente_state, screen_update_balsente)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
/* sound hardware */
diff --git a/src/mame/drivers/bankp.c b/src/mame/drivers/bankp.c
index 0a59841eae3..b194cdfb929 100644
--- a/src/mame/drivers/bankp.c
+++ b/src/mame/drivers/bankp.c
@@ -300,8 +300,8 @@ static MACHINE_CONFIG_START( bankp, bankp_state )
MCFG_SCREEN_UPDATE_DRIVER(bankp_state, screen_update_bankp)
MCFG_GFXDECODE_ADD("gfxdecode", bankp)
- MCFG_PALETTE_LENGTH(32*4+16*8)
-
+ MCFG_PALETTE_ADD("palette", 32*4+16*8)
+ MCFG_PALETTE_INIT_OWNER(bankp_state, bankp)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/baraduke.c b/src/mame/drivers/baraduke.c
index 79347417736..e42839d1f1b 100644
--- a/src/mame/drivers/baraduke.c
+++ b/src/mame/drivers/baraduke.c
@@ -393,8 +393,8 @@ static MACHINE_CONFIG_START( baraduke, baraduke_state )
MCFG_SCREEN_VBLANK_DRIVER(baraduke_state, screen_eof_baraduke)
MCFG_GFXDECODE_ADD("gfxdecode", baraduke)
- MCFG_PALETTE_LENGTH(2048)
-
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_INIT_OWNER(baraduke_state, baraduke)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/bartop52.c b/src/mame/drivers/bartop52.c
index 2c567c79fd7..3bf008a86e6 100644
--- a/src/mame/drivers/bartop52.c
+++ b/src/mame/drivers/bartop52.c
@@ -133,8 +133,8 @@ static MACHINE_CONFIG_START( a5200, bartop52_state )
MCFG_SCREEN_SIZE(HWIDTH*8, TOTAL_LINES_60HZ)
MCFG_SCREEN_UPDATE_STATIC(atari)
- MCFG_PALETTE_LENGTH(256)
- MCFG_PALETTE_INIT(atari)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_LEGACY(atari)
MCFG_VIDEO_START(atari)
diff --git a/src/mame/drivers/batman.c b/src/mame/drivers/batman.c
index ebc78c77f11..f70c808f417 100644
--- a/src/mame/drivers/batman.c
+++ b/src/mame/drivers/batman.c
@@ -208,7 +208,7 @@ static MACHINE_CONFIG_START( batman, batman_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", batman)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_ATARI_VAD_ADD("vad", "screen", WRITELINE(atarigen_state, scanline_int_write_line))
MCFG_ATARI_VAD_PLAYFIELD(batman_state, get_playfield_tile_info)
diff --git a/src/mame/drivers/battlane.c b/src/mame/drivers/battlane.c
index f73a4873f9b..570e6a5118b 100644
--- a/src/mame/drivers/battlane.c
+++ b/src/mame/drivers/battlane.c
@@ -286,7 +286,7 @@ static MACHINE_CONFIG_START( battlane, battlane_state )
MCFG_SCREEN_UPDATE_DRIVER(battlane_state, screen_update_battlane)
MCFG_GFXDECODE_ADD("gfxdecode", battlane)
- MCFG_PALETTE_LENGTH(64)
+ MCFG_PALETTE_ADD("palette", 64)
/* sound hardware */
diff --git a/src/mame/drivers/battlera.c b/src/mame/drivers/battlera.c
index 841ec0422c3..7153079412d 100644
--- a/src/mame/drivers/battlera.c
+++ b/src/mame/drivers/battlera.c
@@ -245,7 +245,7 @@ static MACHINE_CONFIG_START( battlera, battlera_state )
MCFG_SCREEN_UPDATE_DRIVER(battlera_state, screen_update_battlera)
MCFG_GFXDECODE_ADD("gfxdecode", battlera)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
/* sound hardware */
diff --git a/src/mame/drivers/battlex.c b/src/mame/drivers/battlex.c
index f1cb24f3236..8946a1c6e93 100644
--- a/src/mame/drivers/battlex.c
+++ b/src/mame/drivers/battlex.c
@@ -259,7 +259,7 @@ static MACHINE_CONFIG_START( battlex, battlex_state )
MCFG_SCREEN_UPDATE_DRIVER(battlex_state, screen_update_battlex)
MCFG_GFXDECODE_ADD("gfxdecode", battlex)
- MCFG_PALETTE_LENGTH(64)
+ MCFG_PALETTE_ADD("palette", 64)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/battlnts.c b/src/mame/drivers/battlnts.c
index e7a5bbf1e39..9a04143657d 100644
--- a/src/mame/drivers/battlnts.c
+++ b/src/mame/drivers/battlnts.c
@@ -58,7 +58,7 @@ static ADDRESS_MAP_START( battlnts_map, AS_PROGRAM, 8, battlnts_state )
AM_RANGE(0x0000, 0x1fff) AM_DEVREADWRITE("k007342", k007342_device, read, write) /* Color RAM + Video RAM */
AM_RANGE(0x2000, 0x21ff) AM_DEVREADWRITE("k007420", k007420_device, read, write) /* Sprite RAM */
AM_RANGE(0x2200, 0x23ff) AM_DEVREADWRITE("k007342", k007342_device, scroll_r, scroll_w) /* Scroll RAM */
- AM_RANGE(0x2400, 0x24ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_be_w) AM_SHARE("paletteram")/* palette */
+ AM_RANGE(0x2400, 0x24ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")/* palette */
AM_RANGE(0x2600, 0x2607) AM_DEVWRITE("k007342", k007342_device, vreg_w) /* Video Registers */
AM_RANGE(0x2e00, 0x2e00) AM_READ_PORT("DSW1")
AM_RANGE(0x2e01, 0x2e01) AM_READ_PORT("P2")
@@ -256,12 +256,14 @@ static MACHINE_CONFIG_START( battlnts, battlnts_state )
MCFG_SCREEN_UPDATE_DRIVER(battlnts_state, screen_update_battlnts)
MCFG_GFXDECODE_ADD("gfxdecode", battlnts)
- MCFG_PALETTE_LENGTH(128)
+ MCFG_PALETTE_ADD("palette", 128)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_K007342_ADD("k007342", bladestl_k007342_intf)
MCFG_K007342_GFXDECODE("gfxdecode")
MCFG_K007420_ADD("k007420", bladestl_k007420_intf)
+ MCFG_K007420_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/bbusters.c b/src/mame/drivers/bbusters.c
index 54c1f00c7ca..60f0983ea35 100644
--- a/src/mame/drivers/bbusters.c
+++ b/src/mame/drivers/bbusters.c
@@ -331,7 +331,7 @@ static ADDRESS_MAP_START( bbusters_map, AS_PROGRAM, 16, bbusters_state )
AM_RANGE(0x0b4000, 0x0b5fff) AM_RAM /* service mode */
AM_RANGE(0x0b8000, 0x0b8003) AM_WRITEONLY AM_SHARE("pf1_scroll_data")
AM_RANGE(0x0b8008, 0x0b800b) AM_WRITEONLY AM_SHARE("pf2_scroll_data")
- AM_RANGE(0x0d0000, 0x0d0fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0d0000, 0x0d0fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0e0000, 0x0e0001) AM_READ_PORT("COINS") /* Coins */
AM_RANGE(0x0e0002, 0x0e0003) AM_READ_PORT("IN0") /* Player 1 & 2 */
AM_RANGE(0x0e0004, 0x0e0005) AM_READ_PORT("IN1") /* Player 3 */
@@ -358,7 +358,7 @@ static ADDRESS_MAP_START( mechatt_map, AS_PROGRAM, 16, bbusters_state )
AM_RANGE(0x0b8000, 0x0b8003) AM_WRITEONLY AM_SHARE("pf1_scroll_data")
AM_RANGE(0x0c0000, 0x0c3fff) AM_RAM_WRITE(bbusters_pf2_w) AM_SHARE("pf2_data")
AM_RANGE(0x0c8000, 0x0c8003) AM_WRITEONLY AM_SHARE("pf2_scroll_data")
- AM_RANGE(0x0d0000, 0x0d07ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0d0000, 0x0d07ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0e0000, 0x0e0001) AM_READ_PORT("IN0")
AM_RANGE(0x0e0002, 0x0e0003) AM_READ_PORT("DSW1")
AM_RANGE(0x0e0004, 0x0e0007) AM_READ(mechatt_gun_r)
@@ -682,7 +682,8 @@ static MACHINE_CONFIG_START( bbusters, bbusters_state )
MCFG_SCREEN_VBLANK_DRIVER(bbusters_state, screen_eof_bbuster)
MCFG_GFXDECODE_ADD("gfxdecode", bbusters)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
MCFG_VIDEO_START_OVERRIDE(bbusters_state,bbuster)
@@ -720,7 +721,8 @@ static MACHINE_CONFIG_START( mechatt, bbusters_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", mechatt)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
MCFG_VIDEO_START_OVERRIDE(bbusters_state,mechatt)
diff --git a/src/mame/drivers/beathead.c b/src/mame/drivers/beathead.c
index 832ad8a83a2..c445fa12640 100644
--- a/src/mame/drivers/beathead.c
+++ b/src/mame/drivers/beathead.c
@@ -377,7 +377,7 @@ static MACHINE_CONFIG_START( beathead, beathead_state )
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)
+ MCFG_PALETTE_ADD("palette", 32768)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/beezer.c b/src/mame/drivers/beezer.c
index abf9f6edfa6..d79b8f85a05 100644
--- a/src/mame/drivers/beezer.c
+++ b/src/mame/drivers/beezer.c
@@ -99,7 +99,7 @@ static MACHINE_CONFIG_START( beezer, beezer_state )
MCFG_SCREEN_VISIBLE_AREA(16, 304-1, 0, 240-1) // 288 x 240, correct?
MCFG_SCREEN_UPDATE_DRIVER(beezer_state, screen_update_beezer)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
/* sound hardware */
diff --git a/src/mame/drivers/bestleag.c b/src/mame/drivers/bestleag.c
index 4bba2ecff10..09e8c903cba 100644
--- a/src/mame/drivers/bestleag.c
+++ b/src/mame/drivers/bestleag.c
@@ -155,26 +155,26 @@ void bestleag_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
if(m_vregs[0x00/2] & 0x1000)
color &= 7;
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx, 0,
flipx ? (sx+16) : (sx),sy,15);
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code+1,
color,
flipx, 0,
flipx ? (sx) : (sx+16),sy,15);
/* wraparound x */
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx, 0,
flipx ? (sx+16 - 512) : (sx - 512),sy,15);
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code+1,
color,
flipx, 0,
@@ -247,7 +247,7 @@ static ADDRESS_MAP_START( bestleag_map, AS_PROGRAM, 16, bestleag_state )
AM_RANGE(0x0e8000, 0x0ebfff) AM_RAM_WRITE(bestleag_fgram_w) AM_SHARE("fgram")
AM_RANGE(0x0f0000, 0x0f3fff) AM_RAM_WRITE(bestleag_txram_w) AM_SHARE("txram")
AM_RANGE(0x0f8000, 0x0f800b) AM_RAM AM_SHARE("vregs")
- AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x100000, 0x100fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x300010, 0x300011) AM_READ_PORT("SYSTEM")
AM_RANGE(0x300012, 0x300013) AM_READ_PORT("P1")
@@ -381,8 +381,8 @@ static MACHINE_CONFIG_START( bestleag, bestleag_state )
MCFG_SCREEN_UPDATE_DRIVER(bestleag_state, screen_update_bestleag)
MCFG_GFXDECODE_ADD("gfxdecode", bestleag)
- MCFG_PALETTE_LENGTH(0x800)
-
+ MCFG_PALETTE_ADD("palette", 0x800)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/bfcobra.c b/src/mame/drivers/bfcobra.c
index 68768d122bc..2bbcfd95aef 100644
--- a/src/mame/drivers/bfcobra.c
+++ b/src/mame/drivers/bfcobra.c
@@ -428,13 +428,13 @@ UINT32 bfcobra_state::screen_update_bfcobra(screen_device &screen, bitmap_rgb32
if ( ( m_videomode & 0x81 ) == 1 || (m_videomode & 0x80 && pen & 0x80) )
{
- *dest++ = machine().pens[hirescol[pen & 0x0f]];
- *dest++ = machine().pens[hirescol[(pen >> 4) & 0x0f]];
+ *dest++ = m_palette->pen(hirescol[pen & 0x0f]);
+ *dest++ = m_palette->pen(hirescol[(pen >> 4) & 0x0f]);
}
else
{
- *dest++ = machine().pens[lorescol[pen]];
- *dest++ = machine().pens[lorescol[pen]];
+ *dest++ = m_palette->pen(lorescol[pen]);
+ *dest++ = m_palette->pen(lorescol[pen]);
}
}
}
@@ -772,7 +772,7 @@ READ8_MEMBER(bfcobra_state::ramdac_r)
if (*count == 0)
{
rgb_t color;
- color = palette_get_color(machine(), ramdac.addr_r);
+ color = m_palette->pen_color(ramdac.addr_r);
ramdac.color_r[0] = color.r();
ramdac.color_r[1] = color.g();
@@ -817,7 +817,7 @@ WRITE8_MEMBER(bfcobra_state::ramdac_w)
ramdac.color_w[ramdac.count_w] = pal6bit(data);
if (++ramdac.count_w == 3)
{
- palette_set_color_rgb(machine(), ramdac.addr_w, ramdac.color_w[0], ramdac.color_w[1], ramdac.color_w[2]);
+ m_palette->set_pen_color(ramdac.addr_w, ramdac.color_w[0], ramdac.color_w[1], ramdac.color_w[2]);
ramdac.count_w = 0;
ramdac.addr_w++;
}
@@ -1334,7 +1334,7 @@ void bfcobra_state::machine_reset()
for (pal = 0; pal < 256; ++pal)
{
- palette_set_color_rgb(machine(), pal, pal3bit((pal>>5)&7), pal3bit((pal>>2)&7), pal2bit(pal&3));
+ m_palette->set_pen_color(pal, pal3bit((pal>>5)&7), pal3bit((pal>>2)&7), pal2bit(pal&3));
}
m_bank_data[0] = 1;
@@ -1745,7 +1745,7 @@ static MACHINE_CONFIG_START( bfcobra, bfcobra_state )
MCFG_SCREEN_VISIBLE_AREA(0, 512 - 1, 0, 256 - 1)
MCFG_SCREEN_UPDATE_DRIVER(bfcobra_state, screen_update_bfcobra)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/big10.c b/src/mame/drivers/big10.c
index bbdc37544c2..3f44a6269b4 100644
--- a/src/mame/drivers/big10.c
+++ b/src/mame/drivers/big10.c
@@ -266,7 +266,7 @@ static MACHINE_CONFIG_START( big10, big10_state )
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_ADD("palette", 512)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/bigevglf.c b/src/mame/drivers/bigevglf.c
index 0d14b81257f..2313cb9aab9 100644
--- a/src/mame/drivers/bigevglf.c
+++ b/src/mame/drivers/bigevglf.c
@@ -511,7 +511,7 @@ static MACHINE_CONFIG_START( bigevglf, bigevglf_state )
MCFG_SCREEN_UPDATE_DRIVER(bigevglf_state, screen_update_bigevglf)
MCFG_GFXDECODE_ADD("gfxdecode", bigevglf)
- MCFG_PALETTE_LENGTH(0x800)
+ MCFG_PALETTE_ADD("palette", 0x800)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/bigstrkb.c b/src/mame/drivers/bigstrkb.c
index f30020ed03b..0ff6163ab4c 100644
--- a/src/mame/drivers/bigstrkb.c
+++ b/src/mame/drivers/bigstrkb.c
@@ -53,7 +53,7 @@ static ADDRESS_MAP_START( bigstrkb_map, AS_PROGRAM, 16, bigstrkb_state )
AM_RANGE(0x0ec000, 0x0effff) AM_RAM_WRITE(bsb_videoram_w) AM_SHARE("videoram")
AM_RANGE(0x0f0000, 0x0f7fff) AM_RAM
- AM_RANGE(0x0f8000, 0x0f87ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0f8000, 0x0f87ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0f8800, 0x0fffff) AM_RAM
AM_RANGE(0x1f0000, 0x1f7fff) AM_RAM
@@ -209,7 +209,8 @@ static MACHINE_CONFIG_START( bigstrkb, bigstrkb_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(bigstrkb_state, screen_update_bigstrkb)
- MCFG_PALETTE_LENGTH(0x400)
+ MCFG_PALETTE_ADD("palette", 0x400)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/bingoc.c b/src/mame/drivers/bingoc.c
index 8ae0f5b13bf..ee868bf8dfb 100644
--- a/src/mame/drivers/bingoc.c
+++ b/src/mame/drivers/bingoc.c
@@ -168,7 +168,7 @@ static MACHINE_CONFIG_START( bingoc, bingoc_state )
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(bingoc_state, screen_update_bingoc)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") //might just be mono...
diff --git a/src/mame/drivers/bingoman.c b/src/mame/drivers/bingoman.c
index b2f93f668c6..c160a89342a 100644
--- a/src/mame/drivers/bingoman.c
+++ b/src/mame/drivers/bingoman.c
@@ -254,14 +254,13 @@ public:
// screen updates
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
-
+ DECLARE_PALETTE_INIT(bingoman);
protected:
// driver_device overrides
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
};
void bingoman_state::video_start()
@@ -364,7 +363,7 @@ void bingoman_state::machine_reset()
}
-void bingoman_state::palette_init()
+PALETTE_INIT_MEMBER(bingoman_state, bingoman)
{
}
@@ -385,7 +384,8 @@ static MACHINE_CONFIG_START( bingoman, bingoman_state )
MCFG_GFXDECODE_ADD("gfxdecode", bingoman)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(bingoman_state, bingoman)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/bingor.c b/src/mame/drivers/bingor.c
index 681b79d2fce..e069a6e30d2 100644
--- a/src/mame/drivers/bingor.c
+++ b/src/mame/drivers/bingor.c
@@ -470,7 +470,7 @@ UINT32 bingor_state::screen_update_bingor(screen_device &screen, bitmap_rgb32 &b
{
int x,y,count;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
count = (0x2000/2);
@@ -483,22 +483,22 @@ UINT32 bingor_state::screen_update_bingor(screen_device &screen, bitmap_rgb32 &b
color = (m_blit_ram[count] & 0xf000)>>12;
if(cliprect.contains(x+3, y))
- bitmap.pix32(y, x+3) = machine().pens[color];
+ bitmap.pix32(y, x+3) = m_palette->pen(color);
color = (m_blit_ram[count] & 0x0f00)>>8;
if(cliprect.contains(x+2, y))
- bitmap.pix32(y, x+2) = machine().pens[color];
+ bitmap.pix32(y, x+2) = m_palette->pen(color);
color = (m_blit_ram[count] & 0x00f0)>>4;
if(cliprect.contains(x+1, y))
- bitmap.pix32(y, x+1) = machine().pens[color];
+ bitmap.pix32(y, x+1) = m_palette->pen(color);
color = (m_blit_ram[count] & 0x000f)>>0;
if(cliprect.contains(x+0, y))
- bitmap.pix32(y, x+0) = machine().pens[color];
+ bitmap.pix32(y, x+0) = m_palette->pen(color);
count++;
}
@@ -517,7 +517,7 @@ READ16_MEMBER(bingor_state::test_r)
static ADDRESS_MAP_START( bingor_map, AS_PROGRAM, 16, bingor_state )
AM_RANGE(0x00000, 0x0ffff) AM_RAM
AM_RANGE(0x90000, 0x9ffff) AM_ROM AM_REGION("gfx", 0)
- AM_RANGE(0xa0300, 0xa031f) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBIIII_word_w) AM_SHARE("paletteram") //wrong
+ AM_RANGE(0xa0300, 0xa031f) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") //wrong
AM_RANGE(0xa0000, 0xaffff) AM_RAM AM_SHARE("blit_ram")
AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("boot_prg",0)
ADDRESS_MAP_END
@@ -642,8 +642,8 @@ static MACHINE_CONFIG_START( bingor, bingor_state )
MCFG_SCREEN_VISIBLE_AREA(0, 400-1, 0, 300-1)
MCFG_SCREEN_UPDATE_DRIVER(bingor_state, screen_update_bingor)
- MCFG_PALETTE_LENGTH(0x100)
-
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBIIII)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SAA1099_ADD("saa", 6000000 )
diff --git a/src/mame/drivers/bionicc.c b/src/mame/drivers/bionicc.c
index 586d1241f23..9f3dc41fe9b 100644
--- a/src/mame/drivers/bionicc.c
+++ b/src/mame/drivers/bionicc.c
@@ -368,7 +368,7 @@ static MACHINE_CONFIG_START( bionicc, bionicc_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", bionicc)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
diff --git a/src/mame/drivers/bishi.c b/src/mame/drivers/bishi.c
index eb0df04bd8f..f28fcf58ffb 100644
--- a/src/mame/drivers/bishi.c
+++ b/src/mame/drivers/bishi.c
@@ -154,7 +154,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, bishi_state )
AM_RANGE(0x870000, 0x8700ff) AM_DEVWRITE("k055555", k055555_device, k055555_word_w) // PCU2
AM_RANGE(0x880000, 0x880003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xff00)
AM_RANGE(0xa00000, 0xa01fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) // Graphic planes
- AM_RANGE(0xb00000, 0xb03fff) AM_RAM_WRITE(paletteram_xbgr_word_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0xb00000, 0xb03fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xb04000, 0xb047ff) AM_READ(bishi_mirror_r) // bug in the ram/rom test?
AM_RANGE(0xc00000, 0xc01fff) AM_READ(bishi_K056832_rom_r)
ADDRESS_MAP_END
@@ -399,7 +399,7 @@ static MACHINE_CONFIG_START( bishi, bishi_state )
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -408,11 +408,15 @@ static MACHINE_CONFIG_START( bishi, bishi_state )
MCFG_SCREEN_VISIBLE_AREA(29, 29+288-1, 16, 16+224-1)
MCFG_SCREEN_UPDATE_DRIVER(bishi_state, screen_update_bishi)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(XBGR)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_ENABLE_HILIGHTS()
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K056832_ADD("k056832", bishi_k056832_intf)
MCFG_K056832_GFXDECODE("gfxdecode")
+ MCFG_K056832_PALETTE("palette")
MCFG_K054338_ADD("k054338", bishi_k054338_intf)
MCFG_K055555_ADD("k055555")
diff --git a/src/mame/drivers/bking.c b/src/mame/drivers/bking.c
index 734dce70d12..61f11efb72a 100644
--- a/src/mame/drivers/bking.c
+++ b/src/mame/drivers/bking.c
@@ -481,7 +481,8 @@ static MACHINE_CONFIG_START( bking, bking_state )
MCFG_SCREEN_VBLANK_DRIVER(bking_state, screen_eof_bking)
MCFG_GFXDECODE_ADD("gfxdecode", bking)
- MCFG_PALETTE_LENGTH(4*8+4*4+4*2+4*2)
+ MCFG_PALETTE_ADD("palette", 4*8+4*4+4*2+4*2)
+ MCFG_PALETTE_INIT_OWNER(bking_state, bking)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/blackt96.c b/src/mame/drivers/blackt96.c
index 8e58ea0c035..42340469c3e 100644
--- a/src/mame/drivers/blackt96.c
+++ b/src/mame/drivers/blackt96.c
@@ -238,11 +238,11 @@ void blackt96_state::draw_strip(bitmap_ind16 &bitmap, const rectangle &cliprect,
if (tile&0x2000)
{
- gfxbg->transpen(bitmap,cliprect,tile&0x1fff,colour>>4,flipx,0,xx,yy+y*16,0);
+ gfxbg->transpen(m_palette,bitmap,cliprect,tile&0x1fff,colour>>4,flipx,0,xx,yy+y*16,0);
}
else
{
- gfxspr->transpen(bitmap,cliprect,tile&0x1fff,colour,flipx,0,xx,yy+y*16,0);
+ gfxspr->transpen(m_palette,bitmap,cliprect,tile&0x1fff,colour,flipx,0,xx,yy+y*16,0);
}
}
}
@@ -257,7 +257,7 @@ void blackt96_state::draw_page(bitmap_ind16 &bitmap, const rectangle &cliprect,
UINT32 blackt96_state::screen_update_blackt96(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
draw_page(bitmap, cliprect, 2); // bg
draw_page(bitmap, cliprect, 3); // lower pri sprites
@@ -275,7 +275,7 @@ UINT32 blackt96_state::screen_update_blackt96(screen_device &screen, bitmap_ind1
{
UINT16 tile = (m_tilemapram[count*2]&0xff);
tile += m_txt_bank * 0x100;
- gfx->transpen(bitmap,cliprect,tile,0,0,0,x*8,-16+y*8,0);
+ gfx->transpen(m_palette,bitmap,cliprect,tile,0,0,0,x*8,-16+y*8,0);
count++;
}
}
@@ -327,7 +327,7 @@ static ADDRESS_MAP_START( blackt96_map, AS_PROGRAM, 16, blackt96_state )
AM_RANGE(0x207000, 0x207fff) AM_RAM_WRITE(bg_videoram7_w) AM_SHARE("spriteram7")
- AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xc00000, 0xc03fff) AM_RAM // main ram
ADDRESS_MAP_END
@@ -612,7 +612,8 @@ static MACHINE_CONFIG_START( blackt96, blackt96_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 256-1, 0*8, 224-1)
MCFG_SCREEN_UPDATE_DRIVER(blackt96_state, screen_update_blackt96)
- MCFG_PALETTE_LENGTH(0x800)
+ MCFG_PALETTE_ADD("palette", 0x800)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/bladestl.c b/src/mame/drivers/bladestl.c
index c1576eda5ce..ab2a1d9b66d 100644
--- a/src/mame/drivers/bladestl.c
+++ b/src/mame/drivers/bladestl.c
@@ -335,12 +335,14 @@ static MACHINE_CONFIG_START( bladestl, bladestl_state )
MCFG_SCREEN_UPDATE_DRIVER(bladestl_state, screen_update_bladestl)
MCFG_GFXDECODE_ADD("gfxdecode", bladestl)
- MCFG_PALETTE_LENGTH(32 + 16*16)
+ MCFG_PALETTE_ADD("palette", 32 + 16*16)
+ MCFG_PALETTE_INIT_OWNER(bladestl_state, bladestl)
MCFG_K007342_ADD("k007342", bladestl_k007342_intf)
MCFG_K007342_GFXDECODE("gfxdecode")
MCFG_K007420_ADD("k007420", bladestl_k007420_intf)
+ MCFG_K007420_PALETTE("palette")
MCFG_K051733_ADD("k051733")
/* sound hardware */
diff --git a/src/mame/drivers/blitz.c b/src/mame/drivers/blitz.c
index 44caff5dc1a..1fe9f1c50bd 100644
--- a/src/mame/drivers/blitz.c
+++ b/src/mame/drivers/blitz.c
@@ -314,7 +314,7 @@ public:
DECLARE_WRITE8_MEMBER(sound_w);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(blitz);
UINT32 screen_update_megadpkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -371,7 +371,7 @@ UINT32 blitz_state::screen_update_megadpkr(screen_device &screen, bitmap_ind16 &
}
-void blitz_state::palette_init()
+PALETTE_INIT_MEMBER(blitz_state, blitz)
{
const UINT8 *color_prom = memregion("proms")->base();
/*
@@ -392,7 +392,7 @@ void blitz_state::palette_init()
if (color_prom == 0) return;
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int bit0, bit1, bit2, bit3, r, g, b, bk;
@@ -412,7 +412,7 @@ void blitz_state::palette_init()
bit2 = (color_prom[i] >> 2) & 0x01;
b = bk * (bit2 * 0xff);
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -789,8 +789,8 @@ static MACHINE_CONFIG_START( megadpkr, blitz_state )
MCFG_MC6845_ADD("crtc", MC6845, "screen", CPU_CLOCK, mc6845_intf)
MCFG_GFXDECODE_ADD("gfxdecode", megadpkr)
- MCFG_PALETTE_LENGTH(256)
-
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(blitz_state, blitz)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/blitz68k.c b/src/mame/drivers/blitz68k.c
index 8c90bc6497e..66a549caeec 100644
--- a/src/mame/drivers/blitz68k.c
+++ b/src/mame/drivers/blitz68k.c
@@ -221,7 +221,7 @@ UINT32 blitz68k_state::screen_update_blitz68k(screen_device &screen, bitmap_rgb3
{
for(x = 0; x < 512; x++)
{
- bitmap.pix32(y, x) = machine().pens[*src++];
+ bitmap.pix32(y, x) = m_palette->pen(*src++);
}
}
@@ -242,10 +242,10 @@ UINT32 blitz68k_state::screen_update_blitz68k_noblit(screen_device &screen, bitm
for(x = 0; x < 512; )
{
UINT16 pen = *src++;
- bitmap.pix32(y, x++) = machine().pens[(pen >> 8) & 0xf];
- bitmap.pix32(y, x++) = machine().pens[(pen >> 12) & 0xf];
- bitmap.pix32(y, x++) = machine().pens[(pen >> 0) & 0xf];
- bitmap.pix32(y, x++) = machine().pens[(pen >> 4) & 0xf];
+ bitmap.pix32(y, x++) = m_palette->pen((pen >> 8) & 0xf);
+ bitmap.pix32(y, x++) = m_palette->pen((pen >> 12) & 0xf);
+ bitmap.pix32(y, x++) = m_palette->pen((pen >> 0) & 0xf);
+ bitmap.pix32(y, x++) = m_palette->pen((pen >> 4) & 0xf);
}
}
@@ -1733,11 +1733,11 @@ static MACHINE_CONFIG_START( ilpag, blitz68k_state )
MCFG_NVRAM_ADD_0FILL("nvram")
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_VIDEO_START_OVERRIDE(blitz68k_state,blitz68k)
- MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map)
+ MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_DAC_ADD("dac")
@@ -1807,10 +1807,10 @@ static MACHINE_CONFIG_START( cjffruit, blitz68k_state )
MCFG_MC6845_ADD("crtc", R6545_1, "screen", XTAL_22_1184MHz/8, mc6845_intf_irq1)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_VIDEO_START_OVERRIDE(blitz68k_state,blitz68k)
- MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map)
+ MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_DAC_ADD("dac")
@@ -1839,10 +1839,10 @@ static MACHINE_CONFIG_START( bankrob, blitz68k_state )
MCFG_MC6845_ADD("crtc", H46505, "screen", XTAL_11_0592MHz/4, mc6845_intf_irq3)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_VIDEO_START_OVERRIDE(blitz68k_state,blitz68k)
- MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map)
+ MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_DAC_ADD("dac")
@@ -1869,10 +1869,10 @@ static MACHINE_CONFIG_START( bankroba, blitz68k_state )
MCFG_MC6845_ADD("crtc", H46505, "screen", XTAL_11_0592MHz/4, mc6845_intf_irq5)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_VIDEO_START_OVERRIDE(blitz68k_state,blitz68k_addr_factor1)
- MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map)
+ MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_DAC_ADD("dac")
@@ -1898,10 +1898,10 @@ static MACHINE_CONFIG_START( deucesw2, blitz68k_state )
MCFG_MC6845_ADD("crtc", R6545_1, "screen", XTAL_22_1184MHz/8, mc6845_intf_irq3)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_VIDEO_START_OVERRIDE(blitz68k_state,blitz68k)
- MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map)
+ MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_DAC_ADD("dac")
@@ -1929,10 +1929,10 @@ static MACHINE_CONFIG_START( dualgame, blitz68k_state )
MCFG_MC6845_ADD("crtc", H46505, "screen", XTAL_11_0592MHz/4, mc6845_intf_irq3)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_VIDEO_START_OVERRIDE(blitz68k_state,blitz68k)
- MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map)
+ MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_DAC_ADD("dac")
@@ -1958,10 +1958,10 @@ static MACHINE_CONFIG_START( hermit, blitz68k_state )
MCFG_MC6845_ADD("crtc", H46505, "screen", XTAL_22_1184MHz/8, mc6845_intf_irq1)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_VIDEO_START_OVERRIDE(blitz68k_state,blitz68k)
- MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map)
+ MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_DAC_ADD("dac")
@@ -1992,8 +1992,8 @@ static MACHINE_CONFIG_START( maxidbl, blitz68k_state )
MCFG_MC6845_ADD("crtc", H46505, "screen", XTAL_11_0592MHz/4, mc6845_intf_irq3)
- MCFG_PALETTE_LENGTH(0x100)
- MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map)
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SAA1099_ADD("saa", XTAL_8MHz/2)
diff --git a/src/mame/drivers/blktiger.c b/src/mame/drivers/blktiger.c
index c05ad0afab3..54685979731 100644
--- a/src/mame/drivers/blktiger.c
+++ b/src/mame/drivers/blktiger.c
@@ -72,8 +72,8 @@ static ADDRESS_MAP_START( blktiger_map, AS_PROGRAM, 8, blktiger_state )
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
AM_RANGE(0xc000, 0xcfff) AM_READWRITE(blktiger_bgvideoram_r, blktiger_bgvideoram_w)
AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(blktiger_txvideoram_w) AM_SHARE("txvideoram")
- AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_byte_split_lo_w) AM_SHARE("paletteram")
- AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_byte_split_hi_w) AM_SHARE("paletteram2")
+ AM_RANGE(0xd800, 0xdbff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0xdc00, 0xdfff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0xe000, 0xfdff) AM_RAM
AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("spriteram")
ADDRESS_MAP_END
@@ -329,8 +329,9 @@ static MACHINE_CONFIG_START( blktiger, blktiger_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", blktiger)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBRRRRGGGG)
MCFG_BUFFERED_SPRITERAM8_ADD("spriteram")
diff --git a/src/mame/drivers/blmbycar.c b/src/mame/drivers/blmbycar.c
index bc35b0d8a7e..27d488478c0 100644
--- a/src/mame/drivers/blmbycar.c
+++ b/src/mame/drivers/blmbycar.c
@@ -364,7 +364,7 @@ static MACHINE_CONFIG_START( blmbycar, blmbycar_state )
MCFG_SCREEN_UPDATE_DRIVER(blmbycar_state, screen_update_blmbycar)
MCFG_GFXDECODE_ADD("gfxdecode", blmbycar)
- MCFG_PALETTE_LENGTH(0x300)
+ MCFG_PALETTE_ADD("palette", 0x300)
/* sound hardware */
@@ -405,7 +405,7 @@ static MACHINE_CONFIG_START( watrball, blmbycar_state )
MCFG_SCREEN_UPDATE_DRIVER(blmbycar_state, screen_update_blmbycar)
MCFG_GFXDECODE_ADD("gfxdecode", blmbycar)
- MCFG_PALETTE_LENGTH(0x300)
+ MCFG_PALETTE_ADD("palette", 0x300)
/* sound hardware */
diff --git a/src/mame/drivers/blockade.c b/src/mame/drivers/blockade.c
index bd78e006f96..135d1143062 100644
--- a/src/mame/drivers/blockade.c
+++ b/src/mame/drivers/blockade.c
@@ -437,12 +437,6 @@ static GFXDECODE_START( blasto )
GFXDECODE_ENTRY( "gfx1", 0x0000, blasto_layout, 0, 1 )
GFXDECODE_END
-void blockade_state::palette_init()
-{
- palette_set_color(machine(),0,rgb_t(0x00,0x00,0x00)); /* BLACK */
- palette_set_color(machine(),1,rgb_t(0xff,0xff,0xff)); /* WHITE */
-}
-
/*************************************
*
@@ -480,7 +474,7 @@ static MACHINE_CONFIG_START( blockade, blockade_state )
MCFG_SCREEN_UPDATE_DRIVER(blockade_state, screen_update_blockade)
MCFG_GFXDECODE_ADD("gfxdecode", blockade)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
diff --git a/src/mame/drivers/blockhl.c b/src/mame/drivers/blockhl.c
index ed728f01e0a..a92f5e66248 100644
--- a/src/mame/drivers/blockhl.c
+++ b/src/mame/drivers/blockhl.c
@@ -46,7 +46,7 @@ READ8_MEMBER(blockhl_state::bankedram_r)
WRITE8_MEMBER(blockhl_state::bankedram_w)
{
if (m_palette_selected)
- paletteram_xBBBBBGGGGGRRRRR_byte_be_w(space, offset, data);
+ m_palette->write(space, offset, data);
else
m_ram[offset] = data;
}
@@ -209,8 +209,6 @@ static MACHINE_CONFIG_START( blockhl, blockhl_state )
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
@@ -218,13 +216,17 @@ static MACHINE_CONFIG_START( blockhl, blockhl_state )
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(blockhl_state, screen_update_blockhl)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", blockhl_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K051960_ADD("k051960", blockhl_k051960_intf)
MCFG_K051960_GFXDECODE("gfxdecode")
+ MCFG_K051960_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/blockout.c b/src/mame/drivers/blockout.c
index f3d53eed7fb..dafe46efb43 100644
--- a/src/mame/drivers/blockout.c
+++ b/src/mame/drivers/blockout.c
@@ -309,7 +309,7 @@ static MACHINE_CONFIG_START( blockout, blockout_state )
MCFG_SCREEN_VISIBLE_AREA(0, 319, 8, 247)
MCFG_SCREEN_UPDATE_DRIVER(blockout_state, screen_update_blockout)
- MCFG_PALETTE_LENGTH(513)
+ MCFG_PALETTE_ADD("palette", 513)
/* sound hardware */
diff --git a/src/mame/drivers/bloodbro.c b/src/mame/drivers/bloodbro.c
index 4ff2c642ff6..6138af7c61a 100644
--- a/src/mame/drivers/bloodbro.c
+++ b/src/mame/drivers/bloodbro.c
@@ -137,7 +137,7 @@ static ADDRESS_MAP_START( common_map, AS_PROGRAM, 16, bloodbro_state )
AM_RANGE(0x08d400, 0x08d7ff) AM_RAM
AM_RANGE(0x08d800, 0x08dfff) AM_RAM_WRITE(bloodbro_txvideoram_w) AM_SHARE("txvideoram")
AM_RANGE(0x08e000, 0x08e7ff) AM_RAM
- AM_RANGE(0x08e800, 0x08f7ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x08e800, 0x08f7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x08f800, 0x08ffff) AM_RAM
AM_RANGE(0x0a0000, 0x0a000d) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, main_word_r, main_word_w)
// AM_RANGE(0x0c0000, 0x0c007f) AM_RAM AM_SHARE("scroll")
@@ -173,7 +173,7 @@ static ADDRESS_MAP_START( weststry_map, AS_PROGRAM, 16, bloodbro_state )
AM_RANGE(0x0c1002, 0x0c1003) AM_READ_PORT("IN0")
AM_RANGE(0x0c1004, 0x0c1005) AM_READ_PORT("IN1")
AM_RANGE(0x0c1000, 0x0c17ff) AM_RAM
- AM_RANGE(0x128000, 0x1287ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x128000, 0x1287ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x120000, 0x128fff) AM_RAM
ADDRESS_MAP_END
@@ -478,7 +478,8 @@ static MACHINE_CONFIG_START( bloodbro, bloodbro_state )
MCFG_SEIBU_CRTC_ADD("crtc",crtc_intf,0)
MCFG_GFXDECODE_ADD("gfxdecode", bloodbro)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
// sound hardware
SEIBU_SOUND_SYSTEM_YM3812_RAIDEN_INTERFACE(XTAL_7_15909MHz/2, XTAL_12MHz/12)
@@ -491,7 +492,9 @@ static MACHINE_CONFIG_DERIVED( weststry, bloodbro )
MCFG_CPU_VBLANK_INT_DRIVER("screen", bloodbro_state, irq6_line_hold)
MCFG_GFXDECODE_MODIFY("gfxdecode", weststry)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(bloodbro_state, screen_update_weststry)
diff --git a/src/mame/drivers/blstroid.c b/src/mame/drivers/blstroid.c
index 7814d2e61a0..d04e4f692a4 100644
--- a/src/mame/drivers/blstroid.c
+++ b/src/mame/drivers/blstroid.c
@@ -77,7 +77,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, blstroid_state )
AM_RANGE(0xff9804, 0xff9805) AM_MIRROR(0x7f83f8) AM_READ_PORT("DIAL1")
AM_RANGE(0xff9c00, 0xff9c01) AM_MIRROR(0x7f83fc) AM_READ_PORT("IN0")
AM_RANGE(0xff9c02, 0xff9c03) AM_MIRROR(0x7f83fc) AM_READ_PORT("IN1")
- AM_RANGE(0xffa000, 0xffa3ff) AM_MIRROR(0x7f8c00) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xffa000, 0xffa3ff) AM_MIRROR(0x7f8c00) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xffb000, 0xffb3ff) AM_MIRROR(0x7f8c00) AM_DEVREADWRITE8("eeprom", atari_eeprom_device, read, write, 0x00ff)
AM_RANGE(0xffc000, 0xffcfff) AM_MIRROR(0x7f8000) AM_RAM_DEVWRITE("playfield", tilemap_device, write) AM_SHARE("playfield")
AM_RANGE(0xffd000, 0xffdfff) AM_MIRROR(0x7f8000) AM_RAM AM_SHARE("mob")
@@ -184,7 +184,9 @@ static MACHINE_CONFIG_START( blstroid, blstroid_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", blstroid)
- MCFG_PALETTE_LENGTH(512)
+
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_TILEMAP_ADD_STANDARD("playfield", 2, blstroid_state, get_playfield_tile_info, 16,8, SCAN_ROWS, 64,64)
MCFG_ATARI_MOTION_OBJECTS_ADD("mob", "screen", blstroid_state::s_mob_config)
diff --git a/src/mame/drivers/blueprnt.c b/src/mame/drivers/blueprnt.c
index 0243b9e3ba9..09f3c2f62ce 100644
--- a/src/mame/drivers/blueprnt.c
+++ b/src/mame/drivers/blueprnt.c
@@ -386,7 +386,8 @@ static MACHINE_CONFIG_START( blueprnt, blueprnt_state )
MCFG_SCREEN_UPDATE_DRIVER(blueprnt_state, screen_update_blueprnt)
MCFG_GFXDECODE_ADD("gfxdecode", blueprnt)
- MCFG_PALETTE_LENGTH(128*4+8)
+ MCFG_PALETTE_ADD("palette", 128*4+8)
+ MCFG_PALETTE_INIT_OWNER(blueprnt_state, blueprnt)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/bmcbowl.c b/src/mame/drivers/bmcbowl.c
index fe3d46f5112..261c037db2b 100644
--- a/src/mame/drivers/bmcbowl.c
+++ b/src/mame/drivers/bmcbowl.c
@@ -160,7 +160,7 @@ UINT32 bmcbowl_state::screen_update_bmcbowl(screen_device &screen, bitmap_ind16
*/
int x,y,z,pixdat;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
z=0;
for (y=0;y<230;y++)
@@ -231,7 +231,7 @@ WRITE16_MEMBER(bmcbowl_state::bmc_RAMDAC_offset_w)
WRITE16_MEMBER(bmcbowl_state::bmc_RAMDAC_color_w)
{
m_colorram[m_clr_offset]=data;
- palette_set_color_rgb(machine(),m_clr_offset/3,pal6bit(m_colorram[(m_clr_offset/3)*3]),pal6bit(m_colorram[(m_clr_offset/3)*3+1]),pal6bit(m_colorram[(m_clr_offset/3)*3+2]));
+ m_palette->set_pen_color(m_clr_offset/3,pal6bit(m_colorram[(m_clr_offset/3)*3]),pal6bit(m_colorram[(m_clr_offset/3)*3+1]),pal6bit(m_colorram[(m_clr_offset/3)*3+2]));
m_clr_offset=(m_clr_offset+1)%768;
}
@@ -481,7 +481,7 @@ static MACHINE_CONFIG_START( bmcbowl, bmcbowl_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 35*8-1, 0*8, 29*8-1)
MCFG_SCREEN_UPDATE_DRIVER(bmcbowl_state, screen_update_bmcbowl)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_NVRAM_ADD_1FILL("nvram")
diff --git a/src/mame/drivers/bmcpokr.c b/src/mame/drivers/bmcpokr.c
index c981b33a5b8..f2277b628ab 100644
--- a/src/mame/drivers/bmcpokr.c
+++ b/src/mame/drivers/bmcpokr.c
@@ -213,7 +213,7 @@ UINT32 bmcpokr_state::screen_update_bmcpokr(screen_device &screen, bitmap_ind16
UINT16 data = m_videoram[count];
count++;
- gfx->opaque(bitmap,cliprect,data,0,0,0,x*8,y*8);
+ gfx->opaque(m_palette,bitmap,cliprect,data,0,0,0,x*8,y*8);
}
}
@@ -239,7 +239,7 @@ static MACHINE_CONFIG_START( bmcpokr, bmcpokr_state )
MCFG_SCREEN_UPDATE_DRIVER(bmcpokr_state, screen_update_bmcpokr)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_GFXDECODE_ADD("gfxdecode", bmcpokr)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/bnstars.c b/src/mame/drivers/bnstars.c
index da15237fc8c..25d67cae03c 100644
--- a/src/mame/drivers/bnstars.c
+++ b/src/mame/drivers/bnstars.c
@@ -366,7 +366,7 @@ void bnstars_state::update_color(int color, int screen)
g = ((m_ms32_pal_ram[screen][color*2] & 0x00ff) >>0 );
b = ((m_ms32_pal_ram[screen][color*2+1] & 0x00ff) >>0 );
- palette_set_color(machine(),color+screen*0x8000,rgb_t(r,g,b));
+ m_palette->set_pen_color(color+screen*0x8000,rgb_t(r,g,b));
}
WRITE32_MEMBER(bnstars_state::ms32_pal0_ram_w)
@@ -499,7 +499,7 @@ void bnstars_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, co
pri_mask = 0xfe;
gfx->set_source_clip(tx, xsize, ty, ysize);
- gfx->prio_zoom_transpen(bitmap,cliprect,
+ gfx->prio_zoom_transpen(m_palette,bitmap,cliprect,
code,
color,
flipx, flipy,
@@ -1390,7 +1390,7 @@ static MACHINE_CONFIG_START( bnstars, bnstars_state )
MCFG_GFXDECODE_ADD("gfxdecode", bnstars)
- MCFG_PALETTE_LENGTH(0x8000*2)
+ MCFG_PALETTE_ADD("palette", 0x8000*2)
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
diff --git a/src/mame/drivers/bntyhunt.c b/src/mame/drivers/bntyhunt.c
index 5efe3cc2685..7b41d2919cb 100644
--- a/src/mame/drivers/bntyhunt.c
+++ b/src/mame/drivers/bntyhunt.c
@@ -59,7 +59,7 @@ static MACHINE_CONFIG_START( bntyhunt, bntyhunt_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/bogeyman.c b/src/mame/drivers/bogeyman.c
index 8dbbac05158..57ed8dc6bc0 100644
--- a/src/mame/drivers/bogeyman.c
+++ b/src/mame/drivers/bogeyman.c
@@ -251,8 +251,9 @@ static MACHINE_CONFIG_START( bogeyman, bogeyman_state )
MCFG_SCREEN_UPDATE_DRIVER(bogeyman_state, screen_update_bogeyman)
MCFG_GFXDECODE_ADD("gfxdecode", bogeyman)
- MCFG_PALETTE_LENGTH(16+256)
-
+ MCFG_PALETTE_ADD("palette", 16+256)
+ MCFG_PALETTE_FORMAT(BBGGGRRR)
+ MCFG_PALETTE_INIT_OWNER(bogeyman_state, bogeyman)
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/bombjack.c b/src/mame/drivers/bombjack.c
index 8fdd126d70a..6368d5840c5 100644
--- a/src/mame/drivers/bombjack.c
+++ b/src/mame/drivers/bombjack.c
@@ -140,7 +140,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, bombjack_state )
AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(bombjack_colorram_w) AM_SHARE("colorram")
AM_RANGE(0x9820, 0x987f) AM_WRITEONLY AM_SHARE("spriteram")
AM_RANGE(0x9a00, 0x9a00) AM_WRITENOP
- AM_RANGE(0x9c00, 0x9cff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0x9c00, 0x9cff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x9e00, 0x9e00) AM_WRITE(bombjack_background_w)
AM_RANGE(0xb000, 0xb000) AM_READ_PORT("P1")
AM_RANGE(0xb000, 0xb000) AM_WRITE(irq_mask_w)
@@ -371,7 +371,8 @@ static MACHINE_CONFIG_START( bombjack, bombjack_state )
MCFG_SCREEN_UPDATE_DRIVER(bombjack_state, screen_update_bombjack)
MCFG_GFXDECODE_ADD("gfxdecode", bombjack)
- MCFG_PALETTE_LENGTH(128)
+ MCFG_PALETTE_ADD("palette", 128)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
/* sound hardware */
diff --git a/src/mame/drivers/boogwing.c b/src/mame/drivers/boogwing.c
index 121568adda8..19c7e670c85 100644
--- a/src/mame/drivers/boogwing.c
+++ b/src/mame/drivers/boogwing.c
@@ -351,7 +351,7 @@ static MACHINE_CONFIG_START( boogwing, boogwing_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_DRIVER(boogwing_state, screen_update_boogwing)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_GFXDECODE_ADD("gfxdecode", boogwing)
@@ -362,17 +362,21 @@ static MACHINE_CONFIG_START( boogwing, boogwing_state )
MCFG_DECO16IC_ADD("tilegen1", boogwing_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DECO16IC_ADD("tilegen2", boogwing_deco16ic_tilegen2_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen1", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 3);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen2", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 4);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DECO104_ADD("ioprot104")
MCFG_DECO146_SET_INTERFACE_SCRAMBLE_REVERSE
diff --git a/src/mame/drivers/bottom9.c b/src/mame/drivers/bottom9.c
index cb184aad7a4..f8f63cbb4c4 100644
--- a/src/mame/drivers/bottom9.c
+++ b/src/mame/drivers/bottom9.c
@@ -83,7 +83,7 @@ WRITE8_MEMBER(bottom9_state::bottom9_bankedram2_w)
if (m_k052109_selected)
k052109_051960_w(space, offset + 0x2000, data);
else
- paletteram_xBBBBBGGGGGRRRRR_byte_be_w(space, offset, data);
+ m_palette->write(space, offset, data);
}
WRITE8_MEMBER(bottom9_state::bankswitch_w)
@@ -340,8 +340,6 @@ static MACHINE_CONFIG_START( bottom9, bottom9_state )
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
@@ -349,15 +347,20 @@ static MACHINE_CONFIG_START( bottom9, bottom9_state )
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(bottom9_state, screen_update_bottom9)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", bottom9_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K051960_ADD("k051960", bottom9_k051960_intf)
MCFG_K051960_GFXDECODE("gfxdecode")
+ MCFG_K051960_PALETTE("palette")
MCFG_K051316_ADD("k051316", bottom9_k051316_intf)
MCFG_K051316_GFXDECODE("gfxdecode")
+ MCFG_K051316_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/bowltry.c b/src/mame/drivers/bowltry.c
index af23b436a8e..f2730ed7349 100644
--- a/src/mame/drivers/bowltry.c
+++ b/src/mame/drivers/bowltry.c
@@ -67,7 +67,7 @@ static MACHINE_CONFIG_START( bowltry, bowltry_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(bowltry_state, screen_update_bowltry)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
/* tt5665 sound */
diff --git a/src/mame/drivers/boxer.c b/src/mame/drivers/boxer.c
index 2171892b257..dfa850d93a2 100644
--- a/src/mame/drivers/boxer.c
+++ b/src/mame/drivers/boxer.c
@@ -58,7 +58,7 @@ public:
DECLARE_WRITE8_MEMBER(boxer_led_w);
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(boxer);
UINT32 screen_update_boxer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(pot_interrupt);
TIMER_CALLBACK_MEMBER(periodic_callback);
@@ -143,13 +143,13 @@ TIMER_CALLBACK_MEMBER(boxer_state::periodic_callback)
*
*************************************/
-void boxer_state::palette_init()
+PALETTE_INIT_MEMBER(boxer_state, boxer)
{
- palette_set_color(machine(),0, rgb_t(0x00,0x00,0x00));
- palette_set_color(machine(),1, rgb_t(0xff,0xff,0xff));
+ palette.set_pen_color(0, rgb_t(0x00,0x00,0x00));
+ palette.set_pen_color(1, rgb_t(0xff,0xff,0xff));
- palette_set_color(machine(),2, rgb_t(0xff,0xff,0xff));
- palette_set_color(machine(),3, rgb_t(0x00,0x00,0x00));
+ palette.set_pen_color(2, rgb_t(0xff,0xff,0xff));
+ palette.set_pen_color(3, rgb_t(0x00,0x00,0x00));
}
void boxer_state::draw_boxer( bitmap_ind16 &bitmap, const rectangle &cliprect )
@@ -177,7 +177,7 @@ void boxer_state::draw_boxer( bitmap_ind16 &bitmap, const rectangle &cliprect )
code = p[32 * l + 4 * i + j];
- m_gfxdecode->gfx(n)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(n)->transpen(m_palette,bitmap,cliprect,
code,
0,
code & 0x80, 0,
@@ -187,7 +187,7 @@ void boxer_state::draw_boxer( bitmap_ind16 &bitmap, const rectangle &cliprect )
code = p[32 * r + 4 * i - j + 3];
- m_gfxdecode->gfx(n)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(n)->transpen(m_palette,bitmap,cliprect,
code,
0,
!(code & 0x80), 0,
@@ -212,7 +212,7 @@ UINT32 boxer_state::screen_update_boxer(screen_device &screen, bitmap_ind16 &bit
UINT8 code = m_tile_ram[32 * i + j];
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code,
0,
code & 0x40, code & 0x40,
@@ -483,7 +483,8 @@ static MACHINE_CONFIG_START( boxer, boxer_state )
MCFG_SCREEN_UPDATE_DRIVER(boxer_state, screen_update_boxer)
MCFG_GFXDECODE_ADD("gfxdecode", boxer)
- MCFG_PALETTE_LENGTH(4)
+ MCFG_PALETTE_ADD("palette", 4)
+ MCFG_PALETTE_INIT_OWNER(boxer_state, boxer)
/* sound hardware */
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/brkthru.c b/src/mame/drivers/brkthru.c
index bae48ba6c0c..ed1f633db35 100644
--- a/src/mame/drivers/brkthru.c
+++ b/src/mame/drivers/brkthru.c
@@ -382,7 +382,9 @@ static MACHINE_CONFIG_START( brkthru, brkthru_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", brkthru)
- MCFG_PALETTE_LENGTH(256)
+
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(brkthru_state, brkthru)
/* not sure; assuming to be the same as darwin */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -418,7 +420,9 @@ static MACHINE_CONFIG_START( darwin, brkthru_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", brkthru)
- MCFG_PALETTE_LENGTH(256)
+
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(brkthru_state, brkthru)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/2, 384, 8, 248, 272, 8, 248)
diff --git a/src/mame/drivers/bsktball.c b/src/mame/drivers/bsktball.c
index 9d70de695d3..04e966c80d7 100644
--- a/src/mame/drivers/bsktball.c
+++ b/src/mame/drivers/bsktball.c
@@ -35,33 +35,31 @@
*
*************************************/
-void bsktball_state::palette_init()
+PALETTE_INIT_MEMBER(bsktball_state, bsktball)
{
int i;
- machine().colortable = colortable_alloc(machine(), 4);
-
- colortable_palette_set_color(machine().colortable,0,rgb_t(0x00,0x00,0x00)); /* BLACK */
- colortable_palette_set_color(machine().colortable,1,rgb_t(0x80,0x80,0x80)); /* LIGHT GREY */
- colortable_palette_set_color(machine().colortable,2,rgb_t(0x50,0x50,0x50)); /* DARK GREY */
- colortable_palette_set_color(machine().colortable,3,rgb_t(0xff,0xff,0xff)); /* WHITE */
+ palette.set_indirect_color(0,rgb_t(0x00,0x00,0x00)); /* BLACK */
+ palette.set_indirect_color(1,rgb_t(0x80,0x80,0x80)); /* LIGHT GREY */
+ palette.set_indirect_color(2,rgb_t(0x50,0x50,0x50)); /* DARK GREY */
+ palette.set_indirect_color(3,rgb_t(0xff,0xff,0xff)); /* WHITE */
/* playfield */
for (i = 0; i < 2; i++)
{
- colortable_entry_set_value(machine().colortable, i*4 + 0, 1);
- colortable_entry_set_value(machine().colortable, i*4 + 1, 3 * i);
- colortable_entry_set_value(machine().colortable, i*4 + 2, 3 * i);
- colortable_entry_set_value(machine().colortable, i*4 + 3, 3 * i);
+ palette.set_pen_indirect(i*4 + 0, 1);
+ palette.set_pen_indirect(i*4 + 1, 3 * i);
+ palette.set_pen_indirect(i*4 + 2, 3 * i);
+ palette.set_pen_indirect(i*4 + 3, 3 * i);
}
/* motion */
for (i = 0; i < 4*4*4; i++)
{
- colortable_entry_set_value(machine().colortable, 2*4 + i*4 + 0, 1);
- colortable_entry_set_value(machine().colortable, 2*4 + i*4 + 1, (i >> 2) & 3);
- colortable_entry_set_value(machine().colortable, 2*4 + i*4 + 2, (i >> 0) & 3);
- colortable_entry_set_value(machine().colortable, 2*4 + i*4 + 3, (i >> 4) & 3);
+ palette.set_pen_indirect(2*4 + i*4 + 0, 1);
+ palette.set_pen_indirect(2*4 + i*4 + 1, (i >> 2) & 3);
+ palette.set_pen_indirect(2*4 + i*4 + 2, (i >> 0) & 3);
+ palette.set_pen_indirect(2*4 + i*4 + 3, (i >> 4) & 3);
}
}
@@ -259,8 +257,8 @@ static MACHINE_CONFIG_START( bsktball, bsktball_state )
MCFG_SCREEN_UPDATE_DRIVER(bsktball_state, screen_update_bsktball)
MCFG_GFXDECODE_ADD("gfxdecode", bsktball)
- MCFG_PALETTE_LENGTH(2*4 + 4*4*4*4)
-
+ MCFG_PALETTE_ADD("palette", 2*4 + 4*4*4*4)
+ MCFG_PALETTE_INIT_OWNER(bsktball_state, bsktball)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/btime.c b/src/mame/drivers/btime.c
index 374e676796d..6ddde335845 100644
--- a/src/mame/drivers/btime.c
+++ b/src/mame/drivers/btime.c
@@ -190,7 +190,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(btime_state::audio_nmi_gen)
static ADDRESS_MAP_START( btime_map, AS_PROGRAM, 8, btime_state )
AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("rambase")
- AM_RANGE(0x0c00, 0x0c0f) AM_RAM_WRITE(btime_paletteram_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0c00, 0x0c0f) AM_RAM_WRITE(btime_paletteram_w) AM_SHARE("palette")
AM_RANGE(0x1000, 0x13ff) AM_RAM AM_SHARE("videoram")
AM_RANGE(0x1400, 0x17ff) AM_RAM AM_SHARE("colorram")
AM_RANGE(0x1800, 0x1bff) AM_READWRITE(btime_mirrorvideoram_r, btime_mirrorvideoram_w)
@@ -225,7 +225,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( tisland_map, AS_PROGRAM, 8, btime_state )
AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("rambase")
- AM_RANGE(0x0c00, 0x0c0f) AM_RAM_WRITE(btime_paletteram_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0c00, 0x0c0f) AM_RAM_WRITE(btime_paletteram_w) AM_SHARE("palette")
AM_RANGE(0x1000, 0x13ff) AM_RAM AM_SHARE("videoram")
AM_RANGE(0x1400, 0x17ff) AM_RAM AM_SHARE("colorram")
AM_RANGE(0x1800, 0x1bff) AM_READWRITE(btime_mirrorvideoram_r, btime_mirrorvideoram_w)
@@ -302,7 +302,7 @@ static ADDRESS_MAP_START( bnj_map, AS_PROGRAM, 8, btime_state )
AM_RANGE(0x5200, 0x53ff) AM_RAM
AM_RANGE(0x5400, 0x5400) AM_WRITE(bnj_scroll1_w)
AM_RANGE(0x5800, 0x5800) AM_WRITE(bnj_scroll2_w)
- AM_RANGE(0x5c00, 0x5c0f) AM_RAM_WRITE(btime_paletteram_w) AM_SHARE("paletteram")
+ AM_RANGE(0x5c00, 0x5c0f) AM_RAM_WRITE(btime_paletteram_w) AM_SHARE("palette")
AM_RANGE(0xa000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -1318,9 +1318,11 @@ static MACHINE_CONFIG_START( btime, btime_state )
MCFG_MACHINE_RESET_OVERRIDE(btime_state,btime)
MCFG_GFXDECODE_ADD("gfxdecode", btime)
- MCFG_PALETTE_LENGTH(16)
+
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(btime_state,btime)
+ MCFG_PALETTE_FORMAT(BBGGGRRR)
- MCFG_PALETTE_INIT_OVERRIDE(btime_state,btime)
MCFG_VIDEO_START_OVERRIDE(btime_state,btime)
/* sound hardware */
@@ -1355,7 +1357,6 @@ static MACHINE_CONFIG_DERIVED( cookrace, btime )
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", cookrace)
- MCFG_PALETTE_LENGTH(16)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(btime_state, screen_update_cookrace)
@@ -1372,9 +1373,11 @@ static MACHINE_CONFIG_DERIVED( lnc, btime )
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", lnc)
- MCFG_PALETTE_LENGTH(8)
- MCFG_PALETTE_INIT_OVERRIDE(btime_state,lnc)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_ENTRIES(8)
+ MCFG_PALETTE_INIT_OWNER(btime_state,lnc)
+
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(btime_state, screen_update_lnc)
MACHINE_CONFIG_END
@@ -1409,7 +1412,6 @@ static MACHINE_CONFIG_DERIVED( bnj, btime )
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", bnj)
- MCFG_PALETTE_LENGTH(16)
MCFG_VIDEO_START_OVERRIDE(btime_state,bnj)
MCFG_SCREEN_MODIFY("screen")
@@ -1434,9 +1436,11 @@ static MACHINE_CONFIG_DERIVED( zoar, btime )
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", zoar)
- MCFG_PALETTE_LENGTH(64)
- MCFG_DEVICE_MODIFY("screen")
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_ENTRIES(64)
+
+ MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(btime_state, screen_update_zoar)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) // 256 * 240, confirmed
@@ -1462,7 +1466,9 @@ static MACHINE_CONFIG_DERIVED( disco, btime )
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", disco)
- MCFG_PALETTE_LENGTH(32)
+
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_ENTRIES(32)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(btime_state, screen_update_disco)
diff --git a/src/mame/drivers/bublbobl.c b/src/mame/drivers/bublbobl.c
index 3e3f9752fcb..53092cf64ff 100644
--- a/src/mame/drivers/bublbobl.c
+++ b/src/mame/drivers/bublbobl.c
@@ -290,7 +290,7 @@ static ADDRESS_MAP_START( master_map, AS_PROGRAM, 8, bublbobl_state )
AM_RANGE(0xc000, 0xdcff) AM_RAM AM_SHARE("videoram")
AM_RANGE(0xdd00, 0xdfff) AM_RAM AM_SHARE("objectram")
AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xf800, 0xf9ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0xf800, 0xf9ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xfa00, 0xfa00) AM_READWRITE(bublbobl_sound_status_r, bublbobl_sound_command_w)
AM_RANGE(0xfa03, 0xfa03) AM_WRITE(bublbobl_soundcpu_reset_w)
AM_RANGE(0xfa80, 0xfa80) AM_WRITE(watchdog_reset_w)
@@ -346,7 +346,7 @@ static ADDRESS_MAP_START( bootleg_map, AS_PROGRAM, 8, bublbobl_state )
AM_RANGE(0xc000, 0xdcff) AM_RAM AM_SHARE("videoram")
AM_RANGE(0xdd00, 0xdfff) AM_RAM AM_SHARE("objectram")
AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xf800, 0xf9ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0xf800, 0xf9ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xfa00, 0xfa00) AM_READWRITE(bublbobl_sound_status_r, bublbobl_sound_command_w)
AM_RANGE(0xfa03, 0xfa03) AM_WRITE(bublbobl_soundcpu_reset_w)
AM_RANGE(0xfa80, 0xfa80) AM_WRITENOP // ???
@@ -370,7 +370,7 @@ static ADDRESS_MAP_START( tokio_map, AS_PROGRAM, 8, bublbobl_state )
AM_RANGE(0xc000, 0xdcff) AM_RAM AM_SHARE("videoram")
AM_RANGE(0xdd00, 0xdfff) AM_RAM AM_SHARE("objectram")
AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xf800, 0xf9ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0xf800, 0xf9ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xfa00, 0xfa00) AM_WRITE(watchdog_reset_w)
AM_RANGE(0xfa03, 0xfa03) AM_READ_PORT("DSW0")
AM_RANGE(0xfa04, 0xfa04) AM_READ_PORT("DSW1")
@@ -771,7 +771,8 @@ static MACHINE_CONFIG_START( tokio, bublbobl_state )
MCFG_SCREEN_UPDATE_DRIVER(bublbobl_state, screen_update_bublbobl)
MCFG_GFXDECODE_ADD("gfxdecode", bublbobl)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -851,7 +852,8 @@ static MACHINE_CONFIG_START( bublbobl, bublbobl_state )
MCFG_SCREEN_UPDATE_DRIVER(bublbobl_state, screen_update_bublbobl)
MCFG_GFXDECODE_ADD("gfxdecode", bublbobl)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/buggychl.c b/src/mame/drivers/buggychl.c
index 81b4e8c33f2..79745a7e9f1 100644
--- a/src/mame/drivers/buggychl.c
+++ b/src/mame/drivers/buggychl.c
@@ -150,7 +150,7 @@ static ADDRESS_MAP_START( buggychl_map, AS_PROGRAM, 8, buggychl_state )
// AM_RANGE(0xd60b, 0xd60b) // other inputs, not used?
AM_RANGE(0xd610, 0xd610) AM_WRITE(sound_command_w)
AM_RANGE(0xd618, 0xd618) AM_WRITENOP /* accelerator clear */
- AM_RANGE(0xd700, 0xd7ff) AM_WRITE(paletteram_xxxxRRRRGGGGBBBB_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0xd700, 0xd7ff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xd840, 0xd85f) AM_WRITEONLY AM_SHARE("scrollv")
AM_RANGE(0xdb00, 0xdbff) AM_WRITEONLY AM_SHARE("scrollh")
AM_RANGE(0xdc04, 0xdc04) AM_WRITEONLY /* should be fg scroll */
@@ -409,8 +409,9 @@ static MACHINE_CONFIG_START( buggychl, buggychl_state )
MCFG_SCREEN_UPDATE_DRIVER(buggychl_state, screen_update_buggychl)
MCFG_GFXDECODE_ADD("gfxdecode", buggychl)
- MCFG_PALETTE_LENGTH(128+128)
-
+ MCFG_PALETTE_ADD("palette", 128+128)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
+ MCFG_PALETTE_INIT_OWNER(buggychl_state, buggychl)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/buster.c b/src/mame/drivers/buster.c
index a697749c98f..6cc16e6ba77 100644
--- a/src/mame/drivers/buster.c
+++ b/src/mame/drivers/buster.c
@@ -24,7 +24,7 @@ public:
required_shared_ptr<UINT8> m_vram;
DECLARE_READ8_MEMBER(test_r);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(buster);
UINT32 screen_update_buster(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -49,7 +49,7 @@ UINT32 buster_state::screen_update_buster(screen_device &screen, bitmap_ind16 &b
{
int tile = (m_vram[count+1])|(m_vram[count]<<8);
//int colour = tile>>12;
- gfx->opaque(bitmap,cliprect,tile,0,0,0,x*8,y*4);
+ gfx->opaque(m_palette,bitmap,cliprect,tile,0,0,0,x*8,y*4);
count+=2;
}
@@ -325,13 +325,13 @@ static MC6845_INTERFACE( mc6845_intf )
NULL /* update address callback */
};
-void buster_state::palette_init()
+PALETTE_INIT_MEMBER(buster_state, buster)
{
int i;
/* RGB format */
for(i=0;i<8;i++)
- palette_set_color(machine(), i, rgb_t(pal1bit(i >> 0),pal1bit(i >> 1),pal1bit(i >> 2)));
+ palette.set_pen_color(i, rgb_t(pal1bit(i >> 0),pal1bit(i >> 1),pal1bit(i >> 2)));
}
static MACHINE_CONFIG_START( buster, buster_state )
@@ -350,8 +350,8 @@ static MACHINE_CONFIG_START( buster, buster_state )
MCFG_MC6845_ADD("crtc", MC6845, "screen", XTAL_3_579545MHz/4, mc6845_intf) //unknown clock / type
MCFG_GFXDECODE_ADD("gfxdecode", buster)
- MCFG_PALETTE_LENGTH(8)
-
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(buster_state, buster)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/bwing.c b/src/mame/drivers/bwing.c
index 595e45b5fa3..2238e0b227a 100644
--- a/src/mame/drivers/bwing.c
+++ b/src/mame/drivers/bwing.c
@@ -380,7 +380,7 @@ static MACHINE_CONFIG_START( bwing, bwing_state )
MCFG_SCREEN_UPDATE_DRIVER(bwing_state, screen_update_bwing)
MCFG_GFXDECODE_ADD("gfxdecode", bwing)
- MCFG_PALETTE_LENGTH(64)
+ MCFG_PALETTE_ADD("palette", 64)
// sound hardware
diff --git a/src/mame/drivers/cabal.c b/src/mame/drivers/cabal.c
index a3e07eea37f..491010055be 100644
--- a/src/mame/drivers/cabal.c
+++ b/src/mame/drivers/cabal.c
@@ -126,7 +126,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, cabal_state )
AM_RANGE(0xc0000, 0xc0001) AM_WRITE(track_reset_w)
AM_RANGE(0xc0040, 0xc0041) AM_WRITENOP /* ??? */
AM_RANGE(0xc0080, 0xc0081) AM_WRITE(cabal_flipscreen_w)
- AM_RANGE(0xe0000, 0xe07ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xe0000, 0xe07ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xe8008, 0xe8009) AM_WRITE(cabal_sound_irq_trigger_word_w) // fix coin insertion
AM_RANGE(0xe8000, 0xe800d) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, main_word_r, main_word_w)
ADDRESS_MAP_END
@@ -144,7 +144,7 @@ static ADDRESS_MAP_START( cabalbl_main_map, AS_PROGRAM, 16, cabal_state )
AM_RANGE(0xa0010, 0xa0011) AM_READ_PORT("INPUTS")
AM_RANGE(0xc0040, 0xc0041) AM_WRITENOP /* ??? */
AM_RANGE(0xc0080, 0xc0081) AM_WRITE(cabal_flipscreen_w)
- AM_RANGE(0xe0000, 0xe07ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xe0000, 0xe07ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xe8000, 0xe8003) AM_WRITE(cabalbl_sndcmd_w)
AM_RANGE(0xe8004, 0xe8005) AM_READ(soundlatch2_word_r)
AM_RANGE(0xe8008, 0xe8009) AM_WRITE(cabalbl_sound_irq_trigger_word_w)
@@ -489,8 +489,8 @@ static MACHINE_CONFIG_START( cabal, cabal_state )
MCFG_SCREEN_UPDATE_DRIVER(cabal_state, screen_update_cabal)
MCFG_GFXDECODE_ADD("gfxdecode", cabal)
- MCFG_PALETTE_LENGTH(1024)
-
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
/* sound hardware */
MCFG_SEIBU_SOUND_ADD("seibu_sound")
@@ -546,8 +546,8 @@ static MACHINE_CONFIG_START( cabalbl, cabal_state )
MCFG_SCREEN_UPDATE_DRIVER(cabal_state, screen_update_cabal)
MCFG_GFXDECODE_ADD("gfxdecode", cabal)
- MCFG_PALETTE_LENGTH(1024)
-
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/cabaret.c b/src/mame/drivers/cabaret.c
index 3caf3eebb51..1a27572709c 100644
--- a/src/mame/drivers/cabaret.c
+++ b/src/mame/drivers/cabaret.c
@@ -120,7 +120,7 @@ void cabaret_state::video_start()
UINT32 cabaret_state::screen_update_cabaret(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
@@ -188,8 +188,8 @@ static ADDRESS_MAP_START( cabaret_portmap, AS_IO, 8, cabaret_state )
AM_RANGE( 0x2000, 0x27ff ) AM_RAM_WRITE(fg_tile_w ) AM_SHARE("fg_tile_ram")
AM_RANGE( 0x2800, 0x2fff ) AM_RAM_WRITE(fg_color_w ) AM_SHARE("fg_color_ram")
- AM_RANGE( 0x3000, 0x37ff ) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_split_lo_w ) AM_SHARE("paletteram")
- AM_RANGE( 0x3800, 0x3fff ) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_split_hi_w ) AM_SHARE("paletteram2")
+ AM_RANGE( 0x3000, 0x37ff ) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE( 0x3800, 0x3fff ) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE( 0x1000, 0x103f ) AM_RAM_WRITE(bg_scroll_w ) AM_SHARE("bg_scroll")
@@ -352,8 +352,8 @@ static MACHINE_CONFIG_START( cabaret, cabaret_state )
MCFG_SCREEN_UPDATE_DRIVER(cabaret_state, screen_update_cabaret)
MCFG_GFXDECODE_ADD("gfxdecode", cabaret)
- MCFG_PALETTE_LENGTH(0x800)
-
+ MCFG_PALETTE_ADD("palette", 0x800)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/calomega.c b/src/mame/drivers/calomega.c
index 8c952b99349..dd839c347cf 100644
--- a/src/mame/drivers/calomega.c
+++ b/src/mame/drivers/calomega.c
@@ -2649,8 +2649,8 @@ static MACHINE_CONFIG_START( sys903, calomega_state )
MCFG_SCREEN_UPDATE_DRIVER(calomega_state, screen_update_calomega)
MCFG_GFXDECODE_ADD("gfxdecode", calomega)
- MCFG_PALETTE_LENGTH(1024)
-
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_INIT_OWNER(calomega_state, calomega)
MCFG_MC6845_ADD("crtc", MC6845, "screen", CPU_CLOCK, mc6845_intf) /* 6845 @ CPU clock */
diff --git a/src/mame/drivers/calorie.c b/src/mame/drivers/calorie.c
index 3e3c26a7b2f..6336f668577 100644
--- a/src/mame/drivers/calorie.c
+++ b/src/mame/drivers/calorie.c
@@ -195,12 +195,12 @@ UINT32 calorie_state::screen_update_calorie(screen_device &screen, bitmap_ind16
if (m_sprites[x + 1] & 0x10)
{
/* 32x32 sprites */
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect, tileno | 0x40, color, flipx, flipy, xpos, ypos - 31, 0);
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect, tileno | 0x40, color, flipx, flipy, xpos, ypos - 31, 0);
}
else
{
/* 16x16 sprites */
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect, tileno, color, flipx, flipy, xpos, ypos - 15, 0);
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect, tileno, color, flipx, flipy, xpos, ypos - 15, 0);
}
}
return 0;
@@ -255,7 +255,7 @@ static ADDRESS_MAP_START( calorie_map, AS_PROGRAM, 8, calorie_state )
AM_RANGE(0xc000, 0xcfff) AM_RAM
AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(fg_ram_w) AM_SHARE("fg_ram")
AM_RANGE(0xd800, 0xdbff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0xdc00, 0xdcff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0xdc00, 0xdcff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xde00, 0xde00) AM_WRITE(bg_bank_w)
AM_RANGE(0xf000, 0xf000) AM_READ_PORT("P1")
AM_RANGE(0xf001, 0xf001) AM_READ_PORT("P2")
@@ -460,8 +460,8 @@ static MACHINE_CONFIG_START( calorie, calorie_state )
MCFG_SCREEN_UPDATE_DRIVER(calorie_state, screen_update_calorie)
MCFG_GFXDECODE_ADD("gfxdecode", calorie)
- MCFG_PALETTE_LENGTH(0x100)
-
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/canyon.c b/src/mame/drivers/canyon.c
index 22043d27512..877b8fedd28 100644
--- a/src/mame/drivers/canyon.c
+++ b/src/mame/drivers/canyon.c
@@ -48,12 +48,12 @@
*
*************************************/
-void canyon_state::palette_init()
+PALETTE_INIT_MEMBER(canyon_state, canyon)
{
- palette_set_color(machine(), 0, rgb_t(0x80, 0x80, 0x80)); /* GREY */
- palette_set_color(machine(), 1, rgb_t(0x00, 0x00, 0x00)); /* BLACK */
- palette_set_color(machine(), 2, rgb_t(0x80, 0x80, 0x80)); /* GREY */
- palette_set_color(machine(), 3, rgb_t(0xff, 0xff, 0xff)); /* WHITE */
+ palette.set_pen_color(0, rgb_t(0x80, 0x80, 0x80)); /* GREY */
+ palette.set_pen_color(1, rgb_t(0x00, 0x00, 0x00)); /* BLACK */
+ palette.set_pen_color(2, rgb_t(0x80, 0x80, 0x80)); /* GREY */
+ palette.set_pen_color(3, rgb_t(0xff, 0xff, 0xff)); /* WHITE */
}
@@ -251,8 +251,8 @@ static MACHINE_CONFIG_START( canyon, canyon_state )
MCFG_SCREEN_UPDATE_DRIVER(canyon_state, screen_update_canyon)
MCFG_GFXDECODE_ADD("gfxdecode", canyon)
- MCFG_PALETTE_LENGTH(4)
-
+ MCFG_PALETTE_ADD("palette", 4)
+ MCFG_PALETTE_INIT_OWNER(canyon_state, canyon)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/cardline.c b/src/mame/drivers/cardline.c
index 09dd7bd1a44..ba89c4e2977 100644
--- a/src/mame/drivers/cardline.c
+++ b/src/mame/drivers/cardline.c
@@ -42,7 +42,7 @@ public:
DECLARE_WRITE8_MEMBER(video_w);
DECLARE_READ8_MEMBER(unk_r);
DECLARE_WRITE8_MEMBER(lamps_w);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(cardline);
UINT32 screen_update_cardline(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -50,7 +50,7 @@ public:
-#define DRAW_TILE(machine, offset, transparency) m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,\
+#define DRAW_TILE(machine, offset, transparency) m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,\
(m_videoram[index+offset] | (m_colorram[index+offset]<<8))&0x3fff,\
(m_colorram[index+offset]&0x80)>>7,\
0,0,\
@@ -189,12 +189,12 @@ static GFXDECODE_START( cardline )
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 2 )
GFXDECODE_END
-void cardline_state::palette_init()
+PALETTE_INIT_MEMBER(cardline_state, cardline)
{
const UINT8 *color_prom = memregion("proms")->base();
int i,r,g,b,data;
int bit0,bit1,bit2;
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
data=color_prom[i];
@@ -212,7 +212,7 @@ void cardline_state::palette_init()
bit0 = (data >> 0) & 0x01;
bit1 = (data >> 1) & 0x01;
b = 0x55 * bit0 + 0xaa * bit1;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
}
@@ -233,7 +233,8 @@ static MACHINE_CONFIG_START( cardline, cardline_state )
MCFG_SCREEN_UPDATE_DRIVER(cardline_state, screen_update_cardline)
MCFG_GFXDECODE_ADD("gfxdecode", cardline)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_INIT_OWNER(cardline_state, cardline)
MCFG_DEFAULT_LAYOUT(layout_cardline)
diff --git a/src/mame/drivers/carjmbre.c b/src/mame/drivers/carjmbre.c
index 719b012341e..509cd17276c 100644
--- a/src/mame/drivers/carjmbre.c
+++ b/src/mame/drivers/carjmbre.c
@@ -216,8 +216,8 @@ static MACHINE_CONFIG_START( carjmbre, carjmbre_state )
MCFG_SCREEN_UPDATE_DRIVER(carjmbre_state, screen_update_carjmbre)
MCFG_GFXDECODE_ADD("gfxdecode", carjmbre)
- MCFG_PALETTE_LENGTH(64)
-
+ MCFG_PALETTE_ADD("palette", 64)
+ MCFG_PALETTE_INIT_OWNER(carjmbre_state, carjmbre)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/carpolo.c b/src/mame/drivers/carpolo.c
index a9a5d3cbd6b..970c5fd71ce 100644
--- a/src/mame/drivers/carpolo.c
+++ b/src/mame/drivers/carpolo.c
@@ -293,7 +293,8 @@ static MACHINE_CONFIG_START( carpolo, carpolo_state )
MCFG_SCREEN_VBLANK_DRIVER(carpolo_state, screen_eof_carpolo)
MCFG_GFXDECODE_ADD("gfxdecode", carpolo)
- MCFG_PALETTE_LENGTH(12*2+2*16+4*2)
+ MCFG_PALETTE_ADD("palette", 12*2+2*16+4*2)
+ MCFG_PALETTE_INIT_OWNER(carpolo_state,carpolo)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/carrera.c b/src/mame/drivers/carrera.c
index 65902a154b6..8be58182c76 100644
--- a/src/mame/drivers/carrera.c
+++ b/src/mame/drivers/carrera.c
@@ -63,7 +63,7 @@ public:
required_shared_ptr<UINT8> m_tileram;
DECLARE_READ8_MEMBER(unknown_r);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(carrera);
UINT32 screen_update_carrera(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -263,7 +263,7 @@ UINT32 carrera_state::screen_update_carrera(screen_device &screen, bitmap_ind16
{
int tile = m_tileram[count&0x7ff] | m_tileram[(count&0x7ff)+0x800]<<8;
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect,tile,0,0,0,x*8,y*8);
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect,tile,0,0,0,x*8,y*8);
count++;
}
}
@@ -286,7 +286,7 @@ static const ay8910_interface ay8910_config =
DEVCB_NULL
};
-void carrera_state::palette_init()
+PALETTE_INIT_MEMBER(carrera_state, carrera)
{
const UINT8 *color_prom = memregion("proms")->base();
int br_bit0, br_bit1, bit0, bit1, r, g, b;
@@ -307,7 +307,7 @@ void carrera_state::palette_init()
bit1 = (color_prom[0] >> 5) & 0x01;
r = 0x0e * br_bit0 + 0x1f * br_bit1 + 0x43 * bit0 + 0x8f * bit1;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
color_prom++;
}
}
@@ -347,8 +347,9 @@ static MACHINE_CONFIG_START( carrera, carrera_state )
MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK / 16, mc6845_intf)
MCFG_GFXDECODE_ADD("gfxdecode", carrera)
- MCFG_PALETTE_LENGTH(32)
-
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(carrera_state, carrera)
+
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/caswin.c b/src/mame/drivers/caswin.c
index d48375ce9df..c14c5d70ca4 100644
--- a/src/mame/drivers/caswin.c
+++ b/src/mame/drivers/caswin.c
@@ -93,7 +93,7 @@ public:
DECLARE_WRITE8_MEMBER(vvillage_lamps_w);
TILE_GET_INFO_MEMBER(get_sc0_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(caswin);
UINT32 screen_update_vvillage(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -301,7 +301,7 @@ static const ay8910_interface ay8910_config =
DEVCB_NULL
};
-void caswin_state::palette_init()
+PALETTE_INIT_MEMBER(caswin_state, caswin)
{
const UINT8 *color_prom = memregion("proms")->base();
int bit0, bit1, bit2 , r, g, b;
@@ -322,7 +322,7 @@ void caswin_state::palette_init()
bit2 = (color_prom[0] >> 7) & 0x01;
r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
color_prom++;
}
}
@@ -346,8 +346,8 @@ static MACHINE_CONFIG_START( vvillage, caswin_state )
MCFG_NVRAM_ADD_0FILL("nvram")
MCFG_GFXDECODE_ADD("gfxdecode", vvillage)
- MCFG_PALETTE_LENGTH(0x40)
-
+ MCFG_PALETTE_ADD("palette", 0x40)
+ MCFG_PALETTE_INIT_OWNER(caswin_state, caswin)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/cave.c b/src/mame/drivers/cave.c
index 09e02494b0e..ea6c4e729a5 100644
--- a/src/mame/drivers/cave.c
+++ b/src/mame/drivers/cave.c
@@ -2006,8 +2006,8 @@ static MACHINE_CONFIG_START( dfeveron, cave_state )
MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE_ADD("gfxdecode", dfeveron)
- MCFG_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */
- MCFG_PALETTE_INIT_OVERRIDE(cave_state,dfeveron)
+ MCFG_PALETTE_ADD("palette", 0x8000) /* $8000 palette entries for consistency with the other games */
+ MCFG_PALETTE_INIT_OWNER(cave_state,dfeveron)
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_2_layers)
@@ -2048,8 +2048,8 @@ static MACHINE_CONFIG_START( ddonpach, cave_state )
MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE_ADD("gfxdecode", ddonpach)
- MCFG_PALETTE_LENGTH(0x8000 + 0x40*16) // $400 extra entries for layers 1&2
- MCFG_PALETTE_INIT_OVERRIDE(cave_state,ddonpach)
+ MCFG_PALETTE_ADD("palette", 0x8000 + 0x40*16) // $400 extra entries for layers 1&2
+ MCFG_PALETTE_INIT_OWNER(cave_state,ddonpach)
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
@@ -2094,8 +2094,8 @@ static MACHINE_CONFIG_START( donpachi, cave_state )
MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE_ADD("gfxdecode", donpachi)
- MCFG_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */
- MCFG_PALETTE_INIT_OVERRIDE(cave_state,dfeveron)
+ MCFG_PALETTE_ADD("palette", 0x8000) /* $8000 palette entries for consistency with the other games */
+ MCFG_PALETTE_INIT_OWNER(cave_state,dfeveron)
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
@@ -2140,8 +2140,8 @@ static MACHINE_CONFIG_START( esprade, cave_state )
MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE_ADD("gfxdecode", esprade)
- MCFG_PALETTE_LENGTH(0x8000)
- MCFG_PALETTE_INIT_OVERRIDE(cave_state,cave)
+ MCFG_PALETTE_ADD("palette", 0x8000)
+ MCFG_PALETTE_INIT_OWNER(cave_state,cave)
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
@@ -2180,8 +2180,8 @@ static MACHINE_CONFIG_START( gaia, cave_state )
MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE_ADD("gfxdecode", esprade)
- MCFG_PALETTE_LENGTH(0x8000)
- MCFG_PALETTE_INIT_OVERRIDE(cave_state,cave)
+ MCFG_PALETTE_ADD("palette", 0x8000)
+ MCFG_PALETTE_INIT_OWNER(cave_state,cave)
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
@@ -2221,8 +2221,8 @@ static MACHINE_CONFIG_START( guwange, cave_state )
MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE_ADD("gfxdecode", esprade)
- MCFG_PALETTE_LENGTH(0x8000)
- MCFG_PALETTE_INIT_OVERRIDE(cave_state,cave)
+ MCFG_PALETTE_ADD("palette", 0x8000)
+ MCFG_PALETTE_INIT_OWNER(cave_state,cave)
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
@@ -2265,8 +2265,8 @@ static MACHINE_CONFIG_START( hotdogst, cave_state )
MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE_ADD("gfxdecode", hotdogst)
- MCFG_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */
- MCFG_PALETTE_INIT_OVERRIDE(cave_state,dfeveron)
+ MCFG_PALETTE_ADD("palette", 0x8000) /* $8000 palette entries for consistency with the other games */
+ MCFG_PALETTE_INIT_OWNER(cave_state,dfeveron)
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
@@ -2318,8 +2318,8 @@ static MACHINE_CONFIG_START( korokoro, cave_state )
MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE_ADD("gfxdecode", korokoro)
- MCFG_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */
- MCFG_PALETTE_INIT_OVERRIDE(cave_state,korokoro)
+ MCFG_PALETTE_ADD("palette", 0x8000) /* $8000 palette entries for consistency with the other games */
+ MCFG_PALETTE_INIT_OWNER(cave_state,korokoro)
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_1_layer)
@@ -2372,8 +2372,8 @@ static MACHINE_CONFIG_START( mazinger, cave_state )
MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE_ADD("gfxdecode", mazinger)
- MCFG_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */
- MCFG_PALETTE_INIT_OVERRIDE(cave_state,mazinger)
+ MCFG_PALETTE_ADD("palette", 0x8000) /* $8000 palette entries for consistency with the other games */
+ MCFG_PALETTE_INIT_OWNER(cave_state,mazinger)
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_2_layers)
@@ -2431,8 +2431,8 @@ static MACHINE_CONFIG_START( metmqstr, cave_state )
MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE_ADD("gfxdecode", donpachi)
- MCFG_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */
- MCFG_PALETTE_INIT_OVERRIDE(cave_state,dfeveron)
+ MCFG_PALETTE_ADD("palette", 0x8000) /* $8000 palette entries for consistency with the other games */
+ MCFG_PALETTE_INIT_OWNER(cave_state,dfeveron)
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
@@ -2488,8 +2488,8 @@ static MACHINE_CONFIG_START( pacslot, cave_state )
MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE_ADD("gfxdecode", tjumpman)
- MCFG_PALETTE_LENGTH(0x8000)
- MCFG_PALETTE_INIT_OVERRIDE(cave_state,cave)
+ MCFG_PALETTE_ADD("palette", 0x8000)
+ MCFG_PALETTE_INIT_OWNER(cave_state,cave)
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_1_layer)
@@ -2557,8 +2557,8 @@ static MACHINE_CONFIG_START( ppsatan, cave_state )
MCFG_TIMER_DRIVER_ADD("int_timer_right", cave_state, cave_vblank_start_right)
MCFG_GFXDECODE_ADD("gfxdecode", ppsatan)
- MCFG_PALETTE_LENGTH(0x8000)
- MCFG_PALETTE_INIT_OVERRIDE(cave_state,ppsatan)
+ MCFG_PALETTE_ADD("palette", 0x8000)
+ MCFG_PALETTE_INIT_OWNER(cave_state,ppsatan)
MCFG_DEFAULT_LAYOUT(layout_ppsatan)
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
@@ -2609,8 +2609,8 @@ static MACHINE_CONFIG_START( pwrinst2, cave_state )
MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE_ADD("gfxdecode", pwrinst2)
- MCFG_PALETTE_LENGTH(0x8000+0x2800)
- MCFG_PALETTE_INIT_OVERRIDE(cave_state,pwrinst2)
+ MCFG_PALETTE_ADD("palette", 0x8000+0x2800)
+ MCFG_PALETTE_INIT_OWNER(cave_state,pwrinst2)
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_4_layers)
@@ -2673,8 +2673,8 @@ static MACHINE_CONFIG_START( sailormn, cave_state )
MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE_ADD("gfxdecode", sailormn)
- MCFG_PALETTE_LENGTH(0x8000) /* $8000 palette entries for consistency with the other games */
- MCFG_PALETTE_INIT_OVERRIDE(cave_state,sailormn) // 4 bit sprites, 6 bit tiles
+ MCFG_PALETTE_ADD("palette", 0x8000) /* $8000 palette entries for consistency with the other games */
+ MCFG_PALETTE_INIT_OWNER(cave_state,sailormn) // 4 bit sprites, 6 bit tiles
MCFG_VIDEO_START_OVERRIDE(cave_state,sailormn_3_layers) /* Layer 2 has 1 banked ROM */
@@ -2729,8 +2729,8 @@ static MACHINE_CONFIG_START( tjumpman, cave_state )
MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE_ADD("gfxdecode", tjumpman)
- MCFG_PALETTE_LENGTH(0x8000)
- MCFG_PALETTE_INIT_OVERRIDE(cave_state,cave)
+ MCFG_PALETTE_ADD("palette", 0x8000)
+ MCFG_PALETTE_INIT_OWNER(cave_state,cave)
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_1_layer)
@@ -2770,9 +2770,9 @@ static MACHINE_CONFIG_START( uopoko, cave_state )
MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave)
MCFG_GFXDECODE_ADD("gfxdecode", uopoko)
- MCFG_PALETTE_LENGTH(0x8000)
+ MCFG_PALETTE_ADD("palette", 0x8000)
- MCFG_PALETTE_INIT_OVERRIDE(cave_state,cave)
+ MCFG_PALETTE_INIT_OWNER(cave_state,cave)
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_1_layer)
/* sound hardware */
diff --git a/src/mame/drivers/cavepc.c b/src/mame/drivers/cavepc.c
index 41052739968..9570bf4f9a0 100644
--- a/src/mame/drivers/cavepc.c
+++ b/src/mame/drivers/cavepc.c
@@ -118,7 +118,7 @@ static MACHINE_CONFIG_START( cavepc, cavepc_state )
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 199)
MCFG_SCREEN_UPDATE_DRIVER(cavepc_state, screen_update_cavepc)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/cb2001.c b/src/mame/drivers/cb2001.c
index e49c8dc8537..38bc972c399 100644
--- a/src/mame/drivers/cb2001.c
+++ b/src/mame/drivers/cb2001.c
@@ -72,7 +72,7 @@ public:
TILE_GET_INFO_MEMBER(get_cb2001_reel2_tile_info);
TILE_GET_INFO_MEMBER(get_cb2001_reel3_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(cb2001);
UINT32 screen_update_cb2001(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
required_device<cpu_device> m_maincpu;
@@ -340,7 +340,7 @@ e3 -> c6
UINT32 cb2001_state::screen_update_cb2001(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
int count,x,y;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
count = 0x0000;
@@ -361,7 +361,7 @@ UINT32 cb2001_state::screen_update_cb2001(screen_device &screen, bitmap_rgb32 &b
tile += m_videobank*0x2000;
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect,tile,colour,0,0,x*8,y*8);
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect,tile,colour,0,0,x*8,y*8);
count++;
}
@@ -427,7 +427,7 @@ UINT32 cb2001_state::screen_update_cb2001(screen_device &screen, bitmap_rgb32 &b
tile += 0x1000;
}
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,tile,colour,0,0,x*8,y*8,0);
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,tile,colour,0,0,x*8,y*8,0);
count++;
}
}
@@ -775,7 +775,7 @@ static GFXDECODE_START( cb2001 )
GFXDECODE_ENTRY( "gfx", 0, cb2001_layout32, 0x0, 32 )
GFXDECODE_END
-void cb2001_state::palette_init()
+PALETTE_INIT_MEMBER(cb2001_state, cb2001)
{
int i;
for (i = 0; i < 0x200; i++)
@@ -795,11 +795,11 @@ void cb2001_state::palette_init()
if (length==0x400) // are the cb2001 proms dumped incorrectly?
{
- if (!(i&0x20)) palette_set_color(machine(), (i&0x1f) | ((i&~0x3f)>>1), rgb_t(r, g, b));
+ if (!(i&0x20)) palette.set_pen_color((i&0x1f) | ((i&~0x3f)>>1), rgb_t(r, g, b));
}
else
{
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
}
@@ -854,8 +854,8 @@ static MACHINE_CONFIG_START( cb2001, cb2001_state )
MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(cb2001_state, screen_update_cb2001)
- MCFG_PALETTE_LENGTH(0x100)
-
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_INIT_OWNER(cb2001_state, cb2001)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/cball.c b/src/mame/drivers/cball.c
index 2845eba7c33..2433a467a9b 100644
--- a/src/mame/drivers/cball.c
+++ b/src/mame/drivers/cball.c
@@ -40,7 +40,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(cball);
UINT32 screen_update_cball(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(interrupt_callback);
@@ -76,7 +76,7 @@ UINT32 cball_state::screen_update_cball(screen_device &screen, bitmap_ind16 &bit
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
/* draw sprite */
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
m_video_ram[0x399] >> 4,
0,
0, 0,
@@ -124,14 +124,14 @@ void cball_state::machine_reset()
}
-void cball_state::palette_init()
+PALETTE_INIT_MEMBER(cball_state, cball)
{
- palette_set_color(machine(), 0, rgb_t(0x80, 0x80, 0x80));
- palette_set_color(machine(), 1, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), 2, rgb_t(0x80, 0x80, 0x80));
- palette_set_color(machine(), 3, rgb_t(0xff, 0xff, 0xff));
- palette_set_color(machine(), 4, rgb_t(0x80, 0x80, 0x80));
- palette_set_color(machine(), 5, rgb_t(0xc0, 0xc0, 0xc0));
+ palette.set_pen_color(0, rgb_t(0x80, 0x80, 0x80));
+ palette.set_pen_color(1, rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(2, rgb_t(0x80, 0x80, 0x80));
+ palette.set_pen_color(3, rgb_t(0xff, 0xff, 0xff));
+ palette.set_pen_color(4, rgb_t(0x80, 0x80, 0x80));
+ palette.set_pen_color(5, rgb_t(0xc0, 0xc0, 0xc0));
}
@@ -262,8 +262,8 @@ static MACHINE_CONFIG_START( cball, cball_state )
MCFG_SCREEN_UPDATE_DRIVER(cball_state, screen_update_cball)
MCFG_GFXDECODE_ADD("gfxdecode", cball)
- MCFG_PALETTE_LENGTH(6)
-
+ MCFG_PALETTE_ADD("palette", 6)
+ MCFG_PALETTE_INIT_OWNER(cball_state, cball)
/* sound hardware */
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/cbasebal.c b/src/mame/drivers/cbasebal.c
index 290ced11fb1..c59549c0eb1 100644
--- a/src/mame/drivers/cbasebal.c
+++ b/src/mame/drivers/cbasebal.c
@@ -48,7 +48,7 @@ READ8_MEMBER(cbasebal_state::bankedram_r)
return cbasebal_textram_r(space, offset); /* VRAM */
case 1:
if (offset < 0x800)
- return m_generic_paletteram_8[offset];
+ return m_palette->basemem().read8(offset);
else
return 0;
break;
@@ -66,7 +66,7 @@ WRITE8_MEMBER(cbasebal_state::bankedram_w)
break;
case 1:
if (offset < 0x800)
- paletteram_xxxxBBBBRRRRGGGG_byte_le_w(space, offset, data);
+ m_palette->write(space, offset, data);
break;
default:
cbasebal_scrollram_w(space, offset, data);
@@ -271,8 +271,9 @@ static MACHINE_CONFIG_START( cbasebal, cbasebal_state )
MCFG_SCREEN_UPDATE_DRIVER(cbasebal_state, screen_update_cbasebal)
MCFG_GFXDECODE_ADD("gfxdecode", cbasebal)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBRRRRGGGG)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/cbuster.c b/src/mame/drivers/cbuster.c
index 64d902023a6..dd48f8d1d44 100644
--- a/src/mame/drivers/cbuster.c
+++ b/src/mame/drivers/cbuster.c
@@ -317,17 +317,20 @@ static MACHINE_CONFIG_START( twocrude, cbuster_state )
MCFG_SCREEN_UPDATE_DRIVER(cbuster_state, screen_update_twocrude)
MCFG_GFXDECODE_ADD("gfxdecode", cbuster)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_DECO16IC_ADD("tilegen1", twocrude_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DECO16IC_ADD("tilegen2", twocrude_deco16ic_tilegen2_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 3);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/ccastles.c b/src/mame/drivers/ccastles.c
index 0a3f9b5c875..682d8f87219 100644
--- a/src/mame/drivers/ccastles.c
+++ b/src/mame/drivers/ccastles.c
@@ -476,7 +476,7 @@ static MACHINE_CONFIG_START( ccastles, ccastles_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", ccastles)
- MCFG_PALETTE_LENGTH(32)
+ MCFG_PALETTE_ADD("palette", 32)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, 0, HTOTAL - 1, VTOTAL, 0, VTOTAL - 1) /* will be adjusted later */
diff --git a/src/mame/drivers/cchance.c b/src/mame/drivers/cchance.c
index b0b253d6e6f..4d9ba651c11 100644
--- a/src/mame/drivers/cchance.c
+++ b/src/mame/drivers/cchance.c
@@ -222,6 +222,7 @@ static MACHINE_CONFIG_START( cchance, cchance_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -232,8 +233,8 @@ static MACHINE_CONFIG_START( cchance, cchance_state )
MCFG_SCREEN_UPDATE_DRIVER(cchance_state, screen_update_tnzs)
MCFG_SCREEN_VBLANK_DRIVER(cchance_state, screen_eof_tnzs)
- MCFG_PALETTE_LENGTH(512)
- MCFG_PALETTE_INIT_OVERRIDE(cchance_state,arknoid2)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_INIT_OWNER(cchance_state,arknoid2)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/cclimber.c b/src/mame/drivers/cclimber.c
index 457acaa971f..b5f56ce60f1 100644
--- a/src/mame/drivers/cclimber.c
+++ b/src/mame/drivers/cclimber.c
@@ -996,9 +996,9 @@ static MACHINE_CONFIG_START( root, cclimber_state )
MCFG_SCREEN_UPDATE_DRIVER(cclimber_state, screen_update_cclimber)
MCFG_GFXDECODE_ADD("gfxdecode", cclimber)
- MCFG_PALETTE_LENGTH(16*4+8*4)
+ MCFG_PALETTE_ADD("palette", 16*4+8*4)
- MCFG_PALETTE_INIT_OVERRIDE(cclimber_state,cclimber)
+ MCFG_PALETTE_INIT_OWNER(cclimber_state,cclimber)
MCFG_VIDEO_START_OVERRIDE(cclimber_state,cclimber)
MACHINE_CONFIG_END
@@ -1040,8 +1040,9 @@ static MACHINE_CONFIG_DERIVED( yamato, root )
MCFG_CPU_IO_MAP(yamato_audio_portmap)
/* video hardware */
- MCFG_PALETTE_LENGTH(16*4+8*4+256)
- MCFG_PALETTE_INIT_OVERRIDE(cclimber_state,yamato)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 16*4+8*4+256)
+ MCFG_PALETTE_INIT_OWNER(cclimber_state,yamato)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(cclimber_state, screen_update_yamato)
@@ -1064,8 +1065,9 @@ static MACHINE_CONFIG_DERIVED( toprollr, cclimber )
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", toprollr)
- MCFG_PALETTE_LENGTH(32*5)
- MCFG_PALETTE_INIT_OVERRIDE(cclimber_state,toprollr)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 32*5)
+ MCFG_PALETTE_INIT_OWNER(cclimber_state,toprollr)
MCFG_VIDEO_START_OVERRIDE(cclimber_state,toprollr)
MCFG_SCREEN_MODIFY("screen")
@@ -1094,9 +1096,9 @@ static MACHINE_CONFIG_START( swimmer, cclimber_state )
MCFG_SCREEN_UPDATE_DRIVER(cclimber_state, screen_update_swimmer)
MCFG_GFXDECODE_ADD("gfxdecode", swimmer)
- MCFG_PALETTE_LENGTH(32*8+4*8+1)
+ MCFG_PALETTE_ADD("palette", 32*8+4*8+1)
- MCFG_PALETTE_INIT_OVERRIDE(cclimber_state,swimmer)
+ MCFG_PALETTE_INIT_OWNER(cclimber_state,swimmer)
MCFG_VIDEO_START_OVERRIDE(cclimber_state,swimmer)
/* audio hardware */
diff --git a/src/mame/drivers/cdi.c b/src/mame/drivers/cdi.c
index 619140d5b79..6b1d8220d44 100644
--- a/src/mame/drivers/cdi.c
+++ b/src/mame/drivers/cdi.c
@@ -342,7 +342,7 @@ static MACHINE_CONFIG_START( cdi, cdi_state )
MCFG_SCREEN_VISIBLE_AREA(0, 192-1, 0, 22-1)
MCFG_SCREEN_UPDATE_DRIVER(cdi_state, screen_update_cdimono1_lcd)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_DEFAULT_LAYOUT(layout_cdi)
diff --git a/src/mame/drivers/centiped.c b/src/mame/drivers/centiped.c
index fcbd9f15269..21ea0294238 100644
--- a/src/mame/drivers/centiped.c
+++ b/src/mame/drivers/centiped.c
@@ -1752,7 +1752,7 @@ static MACHINE_CONFIG_START( centiped_base, centiped_state )
MCFG_SCREEN_UPDATE_DRIVER(centiped_state, screen_update_centiped)
MCFG_GFXDECODE_ADD("gfxdecode", centiped)
- MCFG_PALETTE_LENGTH(4+4*4*4*4)
+ MCFG_PALETTE_ADD("palette", 4+4*4*4*4)
MCFG_VIDEO_START_OVERRIDE(centiped_state,centiped)
@@ -1825,7 +1825,8 @@ static MACHINE_CONFIG_DERIVED( milliped, centiped )
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", milliped)
- MCFG_PALETTE_LENGTH(4*4+4*4*4*4*4)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 4*4+4*4*4*4*4)
MCFG_VIDEO_START_OVERRIDE(centiped_state,milliped)
MCFG_SCREEN_MODIFY("screen")
@@ -1861,9 +1862,10 @@ static MACHINE_CONFIG_DERIVED( warlords, centiped )
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", warlords)
- MCFG_PALETTE_LENGTH(8*4+8*4)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 8*4+8*4)
- MCFG_PALETTE_INIT_OVERRIDE(centiped_state,warlords)
+ MCFG_PALETTE_INIT_OWNER(centiped_state,warlords)
MCFG_VIDEO_START_OVERRIDE(centiped_state,warlords)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(centiped_state, screen_update_warlords)
@@ -1902,7 +1904,7 @@ static MACHINE_CONFIG_START( bullsdrt, centiped_state )
MCFG_SCREEN_UPDATE_DRIVER(centiped_state, screen_update_bullsdrt)
MCFG_GFXDECODE_ADD("gfxdecode", centiped)
- MCFG_PALETTE_LENGTH(4+4*4*4*4)
+ MCFG_PALETTE_ADD("palette", 4+4*4*4*4)
MCFG_VIDEO_START_OVERRIDE(centiped_state,bullsdrt)
diff --git a/src/mame/drivers/cesclass.c b/src/mame/drivers/cesclass.c
index 78a752b0cfd..8e6eb91e6fc 100644
--- a/src/mame/drivers/cesclass.c
+++ b/src/mame/drivers/cesclass.c
@@ -42,7 +42,7 @@ public:
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-
+ DECLARE_PALETTE_INIT(cesclassic);
protected:
// devices
@@ -53,7 +53,6 @@ protected:
// driver_device overrides
virtual void video_start();
- virtual void palette_init();
};
@@ -65,7 +64,7 @@ UINT32 cesclassic_state::screen_update(screen_device &screen, bitmap_rgb32 &bitm
{
int x,y,xi;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
{
for(y=0;y<64;y++)
@@ -80,7 +79,7 @@ UINT32 cesclassic_state::screen_update(screen_device &screen, bitmap_rgb32 &bitm
color |= (((m_vram[x+y*16])>>(15-xi)) & 1)<<1;
if((x*16+xi)<256 && ((y)+0)<256)
- bitmap.pix32(y, x*16+xi) = machine().pens[color];
+ bitmap.pix32(y, x*16+xi) = m_palette->pen(color);
}
}
}
@@ -233,12 +232,12 @@ static INPUT_PORTS_START( cesclassic )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("l_lcd")
INPUT_PORTS_END
-void cesclassic_state::palette_init()
+PALETTE_INIT_MEMBER(cesclassic_state, cesclassic)
{
int i;
for (i = 0; i < 4; i++)
- palette_set_color_rgb(machine(), i, pal2bit(i), 0, 0);
+ palette.set_pen_color(i, pal2bit(i), 0, 0);
}
static MACHINE_CONFIG_START( cesclassic, cesclassic_state )
@@ -259,7 +258,8 @@ static MACHINE_CONFIG_START( cesclassic, cesclassic_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 8*16*2-1, 0*8, 8*8-1)
MCFG_DEFAULT_LAYOUT( layout_lcd )
- MCFG_PALETTE_LENGTH(4)
+ MCFG_PALETTE_ADD("palette", 4)
+ MCFG_PALETTE_INIT_OWNER(cesclassic_state, cesclassic)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_OKIM6295_ADD("oki", 24000000/16, OKIM6295_PIN7_LOW)
diff --git a/src/mame/drivers/chaknpop.c b/src/mame/drivers/chaknpop.c
index a99d164db39..261789f98db 100644
--- a/src/mame/drivers/chaknpop.c
+++ b/src/mame/drivers/chaknpop.c
@@ -386,8 +386,8 @@ static MACHINE_CONFIG_START( chaknpop, chaknpop_state )
MCFG_SCREEN_UPDATE_DRIVER(chaknpop_state, screen_update_chaknpop)
MCFG_GFXDECODE_ADD("gfxdecode", chaknpop)
- MCFG_PALETTE_LENGTH(1024)
-
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_INIT_OWNER(chaknpop_state, chaknpop)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/cham24.c b/src/mame/drivers/cham24.c
index eaaf4304896..b4fa8e2dcb2 100644
--- a/src/mame/drivers/cham24.c
+++ b/src/mame/drivers/cham24.c
@@ -94,7 +94,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(cham24);
UINT32 screen_update_cham24(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void cham24_set_mirroring( int mirroring );
void ppu_irq(int *ppu_regs);
@@ -281,9 +281,9 @@ void cham24_state::machine_reset()
{
}
-void cham24_state::palette_init()
+PALETTE_INIT_MEMBER(cham24_state, cham24)
{
- m_ppu->init_palette(machine(), 0);
+ m_ppu->init_palette(palette, 0);
}
void cham24_state::ppu_irq(int *ppu_regs)
@@ -358,8 +358,8 @@ static MACHINE_CONFIG_START( cham24, cham24_state )
MCFG_SCREEN_UPDATE_DRIVER(cham24_state, screen_update_cham24)
MCFG_GFXDECODE_ADD("gfxdecode", cham24)
- MCFG_PALETTE_LENGTH(8*4*16)
-
+ MCFG_PALETTE_ADD("palette", 8*4*16)
+ MCFG_PALETTE_INIT_OWNER(cham24_state, cham24)
MCFG_PPU2C04_ADD("ppu", ppu_interface)
MCFG_PPU2C0X_SET_NMI(cham24_state, ppu_irq)
diff --git a/src/mame/drivers/champbas.c b/src/mame/drivers/champbas.c
index 4d0a3a18c2c..2681ebb1d0d 100644
--- a/src/mame/drivers/champbas.c
+++ b/src/mame/drivers/champbas.c
@@ -621,9 +621,9 @@ static MACHINE_CONFIG_START( talbot, champbas_state )
MCFG_SCREEN_VBLANK_DRIVER(champbas_state, screen_eof_champbas)
MCFG_GFXDECODE_ADD("gfxdecode", talbot)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
- MCFG_PALETTE_INIT_OVERRIDE(champbas_state,champbas)
+ MCFG_PALETTE_INIT_OWNER(champbas_state,champbas)
MCFG_VIDEO_START_OVERRIDE(champbas_state,champbas)
/* sound hardware */
@@ -656,9 +656,9 @@ static MACHINE_CONFIG_START( champbas, champbas_state )
MCFG_SCREEN_VBLANK_DRIVER(champbas_state, screen_eof_champbas)
MCFG_GFXDECODE_ADD("gfxdecode", champbas)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
- MCFG_PALETTE_INIT_OVERRIDE(champbas_state,champbas)
+ MCFG_PALETTE_INIT_OWNER(champbas_state,champbas)
MCFG_VIDEO_START_OVERRIDE(champbas_state,champbas)
/* sound hardware */
@@ -713,9 +713,9 @@ static MACHINE_CONFIG_START( exctsccr, champbas_state )
MCFG_SCREEN_VBLANK_DRIVER(champbas_state, screen_eof_champbas)
MCFG_GFXDECODE_ADD("gfxdecode", exctsccr)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
- MCFG_PALETTE_INIT_OVERRIDE(champbas_state,exctsccr)
+ MCFG_PALETTE_INIT_OWNER(champbas_state,exctsccr)
MCFG_VIDEO_START_OVERRIDE(champbas_state,exctsccr)
/* sound hardware */
@@ -764,9 +764,9 @@ static MACHINE_CONFIG_START( exctsccrb, champbas_state )
MCFG_SCREEN_VBLANK_DRIVER(champbas_state, screen_eof_champbas)
MCFG_GFXDECODE_ADD("gfxdecode", exctsccr)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
- MCFG_PALETTE_INIT_OVERRIDE(champbas_state,exctsccr)
+ MCFG_PALETTE_INIT_OWNER(champbas_state,exctsccr)
MCFG_VIDEO_START_OVERRIDE(champbas_state,exctsccr)
/* sound hardware */
diff --git a/src/mame/drivers/champbwl.c b/src/mame/drivers/champbwl.c
index 7a237f7ece1..123115023af 100644
--- a/src/mame/drivers/champbwl.c
+++ b/src/mame/drivers/champbwl.c
@@ -487,6 +487,7 @@ static MACHINE_CONFIG_START( champbwl, champbwl_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -498,9 +499,9 @@ static MACHINE_CONFIG_START( champbwl, champbwl_state )
MCFG_SCREEN_VBLANK_DRIVER(champbwl_state, screen_eof_champbwl)
MCFG_GFXDECODE_ADD("gfxdecode", champbwl)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
- MCFG_PALETTE_INIT_OVERRIDE(champbwl_state,arknoid2)
+ MCFG_PALETTE_INIT_OWNER(champbwl_state,arknoid2)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -548,6 +549,7 @@ static MACHINE_CONFIG_START( doraemon, champbwl_state )
MCFG_NVRAM_ADD_0FILL("nvram")
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(2000), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW )
MCFG_MACHINE_START_OVERRIDE(champbwl_state,doraemon)
@@ -562,9 +564,9 @@ static MACHINE_CONFIG_START( doraemon, champbwl_state )
MCFG_SCREEN_VBLANK_DRIVER(champbwl_state, screen_eof_doraemon)
MCFG_GFXDECODE_ADD("gfxdecode", champbwl)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
- MCFG_PALETTE_INIT_OVERRIDE(champbwl_state,arknoid2)
+ MCFG_PALETTE_INIT_OWNER(champbwl_state,arknoid2)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/chanbara.c b/src/mame/drivers/chanbara.c
index cffb5b68f8e..d501ac0865d 100644
--- a/src/mame/drivers/chanbara.c
+++ b/src/mame/drivers/chanbara.c
@@ -95,25 +95,25 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(chanbara);
UINT32 screen_update_chanbara(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
DECLARE_WRITE_LINE_MEMBER(sound_irq);
};
-void chanbara_state::palette_init()
+PALETTE_INIT_MEMBER(chanbara_state, chanbara)
{
const UINT8 *color_prom = memregion("proms")->base();
int i, red, green, blue;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
red = color_prom[i];
- green = color_prom[machine().total_colors() + i];
- blue = color_prom[2 * machine().total_colors() + i];
+ green = color_prom[palette.entries() + i];
+ blue = color_prom[2 * palette.entries() + i];
- palette_set_color_rgb(machine(), i, pal4bit(red << 1), pal4bit(green << 1), pal4bit(blue << 1));
+ palette.set_pen_color(i, pal4bit(red << 1), pal4bit(green << 1), pal4bit(blue << 1));
}
}
@@ -191,18 +191,18 @@ void chanbara_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
{
if (!flipy)
{
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code, color, flipx, flipy, sx, sy-16, 0);
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code+1, color, flipx, flipy, sx, sy, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy, sx, sy-16, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code+1, color, flipx, flipy, sx, sy, 0);
}
else
{
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code, color, flipx, flipy, sx, sy, 0);
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code+1, color, flipx, flipy, sx, sy-16, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy, sx, sy, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code+1, color, flipx, flipy, sx, sy-16, 0);
}
}
else
{
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code, color, flipx, flipy, sx, sy, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy, sx, sy, 0);
}
}
}
@@ -410,8 +410,9 @@ static MACHINE_CONFIG_START( chanbara, chanbara_state )
MCFG_SCREEN_UPDATE_DRIVER(chanbara_state, screen_update_chanbara)
MCFG_GFXDECODE_ADD("gfxdecode", chanbara)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(chanbara_state, chanbara)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/chance32.c b/src/mame/drivers/chance32.c
index 83d54363974..b4a652a6792 100644
--- a/src/mame/drivers/chance32.c
+++ b/src/mame/drivers/chance32.c
@@ -197,7 +197,7 @@ WRITE8_MEMBER(chance32_state::muxout_w)
static ADDRESS_MAP_START( chance32_map, AS_PROGRAM, 8, chance32_state )
AM_RANGE(0x0000, 0xcfff) AM_ROM
AM_RANGE(0xd800, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(paletteram_xGGGGGRRRRRBBBBB_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0xe000, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(chance32_fgram_w) AM_SHARE("fgram")
AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(chance32_bgram_w) AM_SHARE("bgram")
ADDRESS_MAP_END
@@ -479,8 +479,8 @@ static MACHINE_CONFIG_START( chance32, chance32_state )
MCFG_MC6845_ADD("crtc", H46505, "screen", 12000000/16, mc6845_intf) /* 52.786 Hz (similar to Major Poker) */
MCFG_GFXDECODE_ADD("gfxdecode", chance32)
- MCFG_PALETTE_LENGTH(0x800)
-
+ MCFG_PALETTE_ADD("palette", 0x800)
+ MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/changela.c b/src/mame/drivers/changela.c
index 8609b061d92..b7ad7db4d56 100644
--- a/src/mame/drivers/changela.c
+++ b/src/mame/drivers/changela.c
@@ -510,7 +510,7 @@ static MACHINE_CONFIG_START( changela, changela_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(changela_state, screen_update_changela)
- MCFG_PALETTE_LENGTH(0x40)
+ MCFG_PALETTE_ADD("palette", 0x40)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/cheekyms.c b/src/mame/drivers/cheekyms.c
index b1b4cd8fe41..08a43596148 100644
--- a/src/mame/drivers/cheekyms.c
+++ b/src/mame/drivers/cheekyms.c
@@ -136,8 +136,8 @@ static MACHINE_CONFIG_START( cheekyms, cheekyms_state )
MCFG_SCREEN_UPDATE_DRIVER(cheekyms_state, screen_update_cheekyms)
MCFG_GFXDECODE_ADD("gfxdecode", cheekyms)
- MCFG_PALETTE_LENGTH(0xc0)
-
+ MCFG_PALETTE_ADD("palette", 0xc0)
+ MCFG_PALETTE_INIT_OWNER(cheekyms_state, cheekyms)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/chihiro.c b/src/mame/drivers/chihiro.c
index 0dbcbc70a08..78691251500 100644
--- a/src/mame/drivers/chihiro.c
+++ b/src/mame/drivers/chihiro.c
@@ -3972,7 +3972,7 @@ static MACHINE_CONFIG_START( chihiro_base, chihiro_state )
MCFG_SCREEN_UPDATE_DRIVER(chihiro_state,screen_update_callback)
MCFG_SCREEN_VBLANK_DRIVER(chihiro_state,vblank_callback)
- MCFG_PALETTE_LENGTH(65536)
+ MCFG_PALETTE_ADD("palette", 65536)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( chihirogd, chihiro_base )
diff --git a/src/mame/drivers/chinagat.c b/src/mame/drivers/chinagat.c
index 91fcbe5ddeb..39340d0ed52 100644
--- a/src/mame/drivers/chinagat.c
+++ b/src/mame/drivers/chinagat.c
@@ -322,8 +322,8 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, chinagat_state )
AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(ddragon_fgvideoram_w) AM_SHARE("fgvideoram")
AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(ddragon_bgvideoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0x3000, 0x317f) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_lo_w) AM_SHARE("paletteram")
- AM_RANGE(0x3400, 0x357f) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_hi_w) AM_SHARE("paletteram2")
+ AM_RANGE(0x3000, 0x317f) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0x3400, 0x357f) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette_ext")
AM_RANGE(0x3800, 0x397f) AM_WRITE_BANK("bank3") AM_SHARE("spriteram")
AM_RANGE(0x3e00, 0x3e04) AM_WRITE(chinagat_interrupt_w)
AM_RANGE(0x3e06, 0x3e06) AM_WRITEONLY AM_SHARE("scrolly_lo")
@@ -588,7 +588,8 @@ static MACHINE_CONFIG_START( chinagat, chinagat_state )
MCFG_SCREEN_UPDATE_DRIVER(chinagat_state, screen_update_ddragon)
MCFG_GFXDECODE_ADD("gfxdecode", chinagat)
- MCFG_PALETTE_LENGTH(384)
+ MCFG_PALETTE_ADD("palette", 384)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_VIDEO_START_OVERRIDE(chinagat_state,chinagat)
@@ -632,7 +633,8 @@ static MACHINE_CONFIG_START( saiyugoub1, chinagat_state )
MCFG_SCREEN_UPDATE_DRIVER(chinagat_state, screen_update_ddragon)
MCFG_GFXDECODE_ADD("gfxdecode", chinagat)
- MCFG_PALETTE_LENGTH(384)
+ MCFG_PALETTE_ADD("palette", 384)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_VIDEO_START_OVERRIDE(chinagat_state,chinagat)
@@ -673,7 +675,8 @@ static MACHINE_CONFIG_START( saiyugoub2, chinagat_state )
MCFG_SCREEN_UPDATE_DRIVER(chinagat_state, screen_update_ddragon)
MCFG_GFXDECODE_ADD("gfxdecode", chinagat)
- MCFG_PALETTE_LENGTH(384)
+ MCFG_PALETTE_ADD("palette", 384)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_VIDEO_START_OVERRIDE(chinagat_state,chinagat)
diff --git a/src/mame/drivers/chinsan.c b/src/mame/drivers/chinsan.c
index 95d30b2663a..8d56dda29fa 100644
--- a/src/mame/drivers/chinsan.c
+++ b/src/mame/drivers/chinsan.c
@@ -77,7 +77,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(chinsan);
UINT32 screen_update_chinsan(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE_LINE_MEMBER(chin_adpcm_int);
required_device<cpu_device> m_maincpu;
@@ -92,13 +92,13 @@ public:
*
*************************************/
-void chinsan_state::palette_init()
+PALETTE_INIT_MEMBER(chinsan_state, chinsan)
{
UINT8 *src = memregion( "color_proms" )->base();
int i;
for (i = 0; i < 0x100; i++)
- palette_set_color_rgb(machine(), i, pal4bit(src[i + 0x200]), pal4bit(src[i + 0x100]), pal4bit(src[i + 0x000]));
+ palette.set_pen_color(i, pal4bit(src[i + 0x200]), pal4bit(src[i + 0x100]), pal4bit(src[i + 0x000]));
}
void chinsan_state::video_start()
@@ -116,7 +116,7 @@ UINT32 chinsan_state::screen_update_chinsan(screen_device &screen, bitmap_ind16
int tileno, colour;
tileno = m_video[count] | (m_video[count + 0x800] << 8);
colour = m_video[count + 0x1000] >> 3;
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect,tileno,colour,0,0,x*8,y*8);
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect,tileno,colour,0,0,x*8,y*8);
count++;
}
}
@@ -613,8 +613,8 @@ static MACHINE_CONFIG_START( chinsan, chinsan_state )
MCFG_SCREEN_UPDATE_DRIVER(chinsan_state, screen_update_chinsan)
MCFG_GFXDECODE_ADD("gfxdecode", chinsan)
- MCFG_PALETTE_LENGTH(0x100)
-
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_INIT_OWNER(chinsan_state, chinsan)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/chqflag.c b/src/mame/drivers/chqflag.c
index 610ecc05166..7f2762abd8d 100644
--- a/src/mame/drivers/chqflag.c
+++ b/src/mame/drivers/chqflag.c
@@ -46,7 +46,7 @@ WRITE8_MEMBER(chqflag_state::chqflag_bankswitch_w)
if (data & 0x20)
{
space.install_read_bank(0x1800, 0x1fff, "bank5");
- space.install_write_handler(0x1800, 0x1fff, write8_delegate(FUNC(driver_device::paletteram_xBBBBBGGGGGRRRRR_byte_be_w),this));
+ space.install_write_handler(0x1800, 0x1fff, write8_delegate(FUNC(palette_device::write),m_palette.target()));
membank("bank5")->set_base(m_generic_paletteram_8);
if (m_k051316_readroms)
@@ -83,9 +83,9 @@ WRITE8_MEMBER(chqflag_state::chqflag_vreg_w)
/* the headlight (which have the shadow bit set) become highlights */
/* Maybe one of the bits inverts the SHAD line while the other darkens the background. */
if (data & 0x08)
- palette_set_shadow_factor(machine(), 1 / PALETTE_DEFAULT_SHADOW_FACTOR);
+ m_palette->set_shadow_factor(1 / PALETTE_DEFAULT_SHADOW_FACTOR);
else
- palette_set_shadow_factor(machine(), PALETTE_DEFAULT_SHADOW_FACTOR);
+ m_palette->set_shadow_factor(PALETTE_DEFAULT_SHADOW_FACTOR);
if ((data & 0x80) != m_last_vreg)
{
@@ -96,7 +96,7 @@ WRITE8_MEMBER(chqflag_state::chqflag_vreg_w)
/* only affect the background */
for (i = 512; i < 1024; i++)
- palette_set_pen_contrast(machine(), i, brt);
+ m_palette->set_pen_contrast(i, brt);
}
//if ((data & 0xf8) && (data & 0xf8) != 0x88)
@@ -338,8 +338,6 @@ static MACHINE_CONFIG_START( chqflag, chqflag_state )
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
//TODO: Vsync 59.17hz Hsync 15.13 / 15.19khz
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -348,15 +346,20 @@ static MACHINE_CONFIG_START( chqflag, chqflag_state )
MCFG_SCREEN_VISIBLE_AREA(12*8, (64-14)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(chqflag_state, screen_update_chqflag)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K051960_ADD("k051960", chqflag_k051960_intf)
MCFG_K051960_GFXDECODE("gfxdecode")
+ MCFG_K051960_PALETTE("palette")
MCFG_K051316_ADD("k051316_1", chqflag_k051316_intf_1)
MCFG_K051316_GFXDECODE("gfxdecode")
+ MCFG_K051316_PALETTE("palette")
MCFG_K051316_ADD("k051316_2", chqflag_k051316_intf_2)
MCFG_K051316_GFXDECODE("gfxdecode")
+ MCFG_K051316_PALETTE("palette")
MCFG_K051733_ADD("k051733")
/* sound hardware */
diff --git a/src/mame/drivers/chsuper.c b/src/mame/drivers/chsuper.c
index 0d742af5441..b50aa6605b0 100644
--- a/src/mame/drivers/chsuper.c
+++ b/src/mame/drivers/chsuper.c
@@ -71,7 +71,7 @@ UINT32 chsuper_state::screen_update( screen_device &screen, bitmap_ind16 &bitmap
{
int tile = ((m_vram[count+1]<<8) | m_vram[count]) & 0xffff;
- gfx->opaque(bitmap,cliprect,tile,0,0,0,x*4,y*8);
+ gfx->opaque(m_palette,bitmap,cliprect,tile,0,0,0,x*4,y*8);
count+=2;
}
}
@@ -218,9 +218,9 @@ static MACHINE_CONFIG_START( chsuper, chsuper_state )
MCFG_NVRAM_ADD_0FILL("nvram")
MCFG_GFXDECODE_ADD("gfxdecode", chsuper)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
- MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map)
+ MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/circus.c b/src/mame/drivers/circus.c
index f188705545f..4b1834bab69 100644
--- a/src/mame/drivers/circus.c
+++ b/src/mame/drivers/circus.c
@@ -293,9 +293,8 @@ static MACHINE_CONFIG_START( circus, circus_state )
MCFG_SCREEN_UPDATE_DRIVER(circus_state, screen_update_circus)
MCFG_GFXDECODE_ADD("gfxdecode", circus)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -326,9 +325,8 @@ static MACHINE_CONFIG_START( robotbwl, circus_state )
MCFG_SCREEN_UPDATE_DRIVER(circus_state, screen_update_robotbwl)
MCFG_GFXDECODE_ADD("gfxdecode", robotbwl)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -366,9 +364,8 @@ static MACHINE_CONFIG_START( crash, circus_state )
MCFG_SCREEN_UPDATE_DRIVER(circus_state, screen_update_crash)
MCFG_GFXDECODE_ADD("gfxdecode", circus)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -398,9 +395,8 @@ static MACHINE_CONFIG_START( ripcord, circus_state )
MCFG_SCREEN_UPDATE_DRIVER(circus_state, screen_update_ripcord)
MCFG_GFXDECODE_ADD("gfxdecode", circus)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/circusc.c b/src/mame/drivers/circusc.c
index f1c0c0318a2..8a173e386b1 100644
--- a/src/mame/drivers/circusc.c
+++ b/src/mame/drivers/circusc.c
@@ -348,8 +348,8 @@ static MACHINE_CONFIG_START( circusc, circusc_state )
MCFG_SCREEN_UPDATE_DRIVER(circusc_state, screen_update_circusc)
MCFG_GFXDECODE_ADD("gfxdecode", circusc)
- MCFG_PALETTE_LENGTH(16*16+16*16)
-
+ MCFG_PALETTE_ADD("palette", 16*16+16*16)
+ MCFG_PALETTE_INIT_OWNER(circusc_state, circusc)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/cischeat.c b/src/mame/drivers/cischeat.c
index 3ebbacf9b43..384d6f5ce30 100644
--- a/src/mame/drivers/cischeat.c
+++ b/src/mame/drivers/cischeat.c
@@ -198,17 +198,17 @@ WRITE16_MEMBER(cischeat_state::bigrun_paletteram16_w)
int b = pal5bit(((word >> 3 ) & 0x1E ) | ((word >> 1) & 0x01));
// Scroll 0
- if ( (offset >= 0x0e00/2) && (offset <= 0x0fff/2) ) { palette_set_color(machine(), 0x000 + offset - 0x0e00/2, rgb_t(r,g,b) ); return;}
+ if ( (offset >= 0x0e00/2) && (offset <= 0x0fff/2) ) { m_palette->set_pen_color(0x000 + offset - 0x0e00/2, rgb_t(r,g,b) ); return;}
// Scroll 1
- if ( (offset >= 0x1600/2) && (offset <= 0x17ff/2) ) { palette_set_color(machine(), 0x100 + offset - 0x1600/2, rgb_t(r,g,b) ); return;}
+ if ( (offset >= 0x1600/2) && (offset <= 0x17ff/2) ) { m_palette->set_pen_color(0x100 + offset - 0x1600/2, rgb_t(r,g,b) ); return;}
// Road 0
- if ( (offset >= 0x1800/2) && (offset <= 0x1fff/2) ) { palette_set_color(machine(), 0x200 + offset - 0x1800/2, rgb_t(r,g,b) ); return;}
+ if ( (offset >= 0x1800/2) && (offset <= 0x1fff/2) ) { m_palette->set_pen_color(0x200 + offset - 0x1800/2, rgb_t(r,g,b) ); return;}
// Road 1
- if ( (offset >= 0x2000/2) && (offset <= 0x27ff/2) ) { palette_set_color(machine(), 0x600 + offset - 0x2000/2, rgb_t(r,g,b) ); return;}
+ if ( (offset >= 0x2000/2) && (offset <= 0x27ff/2) ) { m_palette->set_pen_color(0x600 + offset - 0x2000/2, rgb_t(r,g,b) ); return;}
// Sprites
- if ( (offset >= 0x2800/2) && (offset <= 0x2fff/2) ) { palette_set_color(machine(), 0xa00 + offset - 0x2800/2, rgb_t(r,g,b) ); return;}
+ if ( (offset >= 0x2800/2) && (offset <= 0x2fff/2) ) { m_palette->set_pen_color(0xa00 + offset - 0x2800/2, rgb_t(r,g,b) ); return;}
// Scroll 2
- if ( (offset >= 0x3600/2) && (offset <= 0x37ff/2) ) { palette_set_color(machine(), 0xe00 + offset - 0x3600/2, rgb_t(r,g,b) ); return;}
+ if ( (offset >= 0x3600/2) && (offset <= 0x37ff/2) ) { m_palette->set_pen_color(0xe00 + offset - 0x3600/2, rgb_t(r,g,b) ); return;}
}
static ADDRESS_MAP_START( bigrun_map, AS_PROGRAM, 16, cischeat_state )
@@ -251,17 +251,17 @@ WRITE16_MEMBER(cischeat_state::cischeat_paletteram16_w)
int b = pal5bit(((word >> 3 ) & 0x1E ) | ((word >> 1) & 0x01));
// Scroll 0
- if ( (offset >= 0x1c00/2) && (offset <= 0x1fff/2) ) { palette_set_color(machine(), 0x000 + offset - 0x1c00/2, rgb_t(r,g,b) ); return;}
+ if ( (offset >= 0x1c00/2) && (offset <= 0x1fff/2) ) { m_palette->set_pen_color(0x000 + offset - 0x1c00/2, rgb_t(r,g,b) ); return;}
// Scroll 1
- if ( (offset >= 0x2c00/2) && (offset <= 0x2fff/2) ) { palette_set_color(machine(), 0x200 + offset - 0x2c00/2, rgb_t(r,g,b) ); return;}
+ if ( (offset >= 0x2c00/2) && (offset <= 0x2fff/2) ) { m_palette->set_pen_color(0x200 + offset - 0x2c00/2, rgb_t(r,g,b) ); return;}
// Scroll 2
- if ( (offset >= 0x6c00/2) && (offset <= 0x6fff/2) ) { palette_set_color(machine(), 0x400 + offset - 0x6c00/2, rgb_t(r,g,b) ); return;}
+ if ( (offset >= 0x6c00/2) && (offset <= 0x6fff/2) ) { m_palette->set_pen_color(0x400 + offset - 0x6c00/2, rgb_t(r,g,b) ); return;}
// Road 0
- if ( (offset >= 0x3800/2) && (offset <= 0x3fff/2) ) { palette_set_color(machine(), 0x600 + offset - 0x3800/2, rgb_t(r,g,b) ); return;}
+ if ( (offset >= 0x3800/2) && (offset <= 0x3fff/2) ) { m_palette->set_pen_color(0x600 + offset - 0x3800/2, rgb_t(r,g,b) ); return;}
// Road 1
- if ( (offset >= 0x4800/2) && (offset <= 0x4fff/2) ) { palette_set_color(machine(), 0xa00 + offset - 0x4800/2, rgb_t(r,g,b) ); return;}
+ if ( (offset >= 0x4800/2) && (offset <= 0x4fff/2) ) { m_palette->set_pen_color(0xa00 + offset - 0x4800/2, rgb_t(r,g,b) ); return;}
// Sprites
- if ( (offset >= 0x5000/2) && (offset <= 0x5fff/2) ) { palette_set_color(machine(), 0xe00 + offset - 0x5000/2, rgb_t(r,g,b) ); return;}
+ if ( (offset >= 0x5000/2) && (offset <= 0x5fff/2) ) { m_palette->set_pen_color(0xe00 + offset - 0x5000/2, rgb_t(r,g,b) ); return;}
}
static ADDRESS_MAP_START( cischeat_map, AS_PROGRAM, 16, cischeat_state )
@@ -303,17 +303,17 @@ WRITE16_MEMBER(cischeat_state::f1gpstar_paletteram16_w)
int b = pal5bit(((word >> 3 ) & 0x1E ) | ((word >> 1) & 0x01));
// Scroll 0
- if ( (offset >= 0x1e00/2) && (offset <= 0x1fff/2) ) { palette_set_color(machine(), 0x000 + offset - 0x1e00/2, rgb_t(r,g,b) ); return;}
+ if ( (offset >= 0x1e00/2) && (offset <= 0x1fff/2) ) { m_palette->set_pen_color(0x000 + offset - 0x1e00/2, rgb_t(r,g,b) ); return;}
// Scroll 1
- if ( (offset >= 0x2e00/2) && (offset <= 0x2fff/2) ) { palette_set_color(machine(), 0x100 + offset - 0x2e00/2, rgb_t(r,g,b) ); return;}
+ if ( (offset >= 0x2e00/2) && (offset <= 0x2fff/2) ) { m_palette->set_pen_color(0x100 + offset - 0x2e00/2, rgb_t(r,g,b) ); return;}
// Scroll 2
- if ( (offset >= 0x6e00/2) && (offset <= 0x6fff/2) ) { palette_set_color(machine(), 0x200 + offset - 0x6e00/2, rgb_t(r,g,b) ); return;}
+ if ( (offset >= 0x6e00/2) && (offset <= 0x6fff/2) ) { m_palette->set_pen_color(0x200 + offset - 0x6e00/2, rgb_t(r,g,b) ); return;}
// Road 0
- if ( (offset >= 0x3800/2) && (offset <= 0x3fff/2) ) { palette_set_color(machine(), 0x300 + offset - 0x3800/2, rgb_t(r,g,b) ); return;}
+ if ( (offset >= 0x3800/2) && (offset <= 0x3fff/2) ) { m_palette->set_pen_color(0x300 + offset - 0x3800/2, rgb_t(r,g,b) ); return;}
// Road 1
- if ( (offset >= 0x4800/2) && (offset <= 0x4fff/2) ) { palette_set_color(machine(), 0x700 + offset - 0x4800/2, rgb_t(r,g,b) ); return;}
+ if ( (offset >= 0x4800/2) && (offset <= 0x4fff/2) ) { m_palette->set_pen_color(0x700 + offset - 0x4800/2, rgb_t(r,g,b) ); return;}
// Sprites
- if ( (offset >= 0x5000/2) && (offset <= 0x5fff/2) ) { palette_set_color(machine(), 0xb00 + offset - 0x5000/2, rgb_t(r,g,b) ); return;}
+ if ( (offset >= 0x5000/2) && (offset <= 0x5fff/2) ) { m_palette->set_pen_color(0xb00 + offset - 0x5000/2, rgb_t(r,g,b) ); return;}
}
/* F1 GP Star tests:
@@ -384,11 +384,11 @@ WRITE16_MEMBER(cischeat_state::scudhamm_paletteram16_w)
int b = pal5bit(((newword >> 3 ) & 0x1E ) | ((newword >> 1) & 0x01));
// Scroll 0
- if ( (offset >= 0x1e00/2) && (offset <= 0x1fff/2) ) { palette_set_color(machine(), 0x000 + offset - 0x1e00/2, rgb_t(r,g,b) ); return;}
+ if ( (offset >= 0x1e00/2) && (offset <= 0x1fff/2) ) { m_palette->set_pen_color(0x000 + offset - 0x1e00/2, rgb_t(r,g,b) ); return;}
// Scroll 2
- if ( (offset >= 0x4e00/2) && (offset <= 0x4fff/2) ) { palette_set_color(machine(), 0x100 + offset - 0x4e00/2, rgb_t(r,g,b) ); return;}
+ if ( (offset >= 0x4e00/2) && (offset <= 0x4fff/2) ) { m_palette->set_pen_color(0x100 + offset - 0x4e00/2, rgb_t(r,g,b) ); return;}
// Sprites
- if ( (offset >= 0x3000/2) && (offset <= 0x3fff/2) ) { palette_set_color(machine(), 0x200 + offset - 0x3000/2, rgb_t(r,g,b) ); return;}
+ if ( (offset >= 0x3000/2) && (offset <= 0x3fff/2) ) { m_palette->set_pen_color(0x200 + offset - 0x3000/2, rgb_t(r,g,b) ); return;}
}
@@ -1569,7 +1569,7 @@ static MACHINE_CONFIG_START( bigrun, cischeat_state )
MCFG_QUANTUM_TIME(attotime::from_hz(1200))
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK | VIDEO_HAS_SHADOWS)
+ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(30) //TODO: wrong!
@@ -1579,7 +1579,8 @@ static MACHINE_CONFIG_START( bigrun, cischeat_state )
MCFG_SCREEN_UPDATE_DRIVER(cischeat_state, screen_update_bigrun)
MCFG_GFXDECODE_ADD("gfxdecode", bigrun)
- MCFG_PALETTE_LENGTH(16*16 * 3 + 64*16 * 2 + 64*16) /* scroll 0,1,2; road 0,1; sprites */
+ MCFG_PALETTE_ADD("palette", 16*16 * 3 + 64*16 * 2 + 64*16) /* scroll 0,1,2; road 0,1; sprites */
+ MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_VIDEO_START_OVERRIDE(cischeat_state,bigrun)
@@ -1621,7 +1622,8 @@ static MACHINE_CONFIG_DERIVED( cischeat, bigrun )
MCFG_SCREEN_UPDATE_DRIVER(cischeat_state, screen_update_cischeat)
MCFG_GFXDECODE_MODIFY("gfxdecode", cischeat)
- MCFG_PALETTE_LENGTH(32*16 * 3 + 64*16 * 2 + 128*16) /* scroll 0,1,2; road 0,1; sprites */
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 32*16 * 3 + 64*16 * 2 + 128*16) /* scroll 0,1,2; road 0,1; sprites */
MCFG_VIDEO_START_OVERRIDE(cischeat_state,cischeat)
MACHINE_CONFIG_END
@@ -1647,7 +1649,8 @@ static MACHINE_CONFIG_DERIVED( f1gpstar, bigrun )
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", f1gpstar)
- MCFG_PALETTE_LENGTH(16*16 * 3 + 64*16 * 2 + 128*16) /* scroll 0,1,2; road 0,1; sprites */
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 16*16 * 3 + 64*16 * 2 + 128*16) /* scroll 0,1,2; road 0,1; sprites */
MCFG_VIDEO_START_OVERRIDE(cischeat_state,f1gpstar)
MCFG_SCREEN_MODIFY("screen")
@@ -1702,7 +1705,7 @@ static MACHINE_CONFIG_START( scudhamm, cischeat_state )
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", cischeat_state, scudhamm_scanline, "screen", 0, 1)
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK | VIDEO_HAS_SHADOWS)
+ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(30) //TODO: wrong!
@@ -1712,7 +1715,8 @@ static MACHINE_CONFIG_START( scudhamm, cischeat_state )
MCFG_SCREEN_UPDATE_DRIVER(cischeat_state, screen_update_scudhamm)
MCFG_GFXDECODE_ADD("gfxdecode", scudhamm)
- MCFG_PALETTE_LENGTH(16*16+16*16+128*16)
+ MCFG_PALETTE_ADD("palette", 16*16+16*16+128*16)
+ MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_VIDEO_START_OVERRIDE(cischeat_state,f1gpstar)
diff --git a/src/mame/drivers/citycon.c b/src/mame/drivers/citycon.c
index 2f29224133b..a7250f36083 100644
--- a/src/mame/drivers/citycon.c
+++ b/src/mame/drivers/citycon.c
@@ -37,7 +37,7 @@ static ADDRESS_MAP_START( citycon_map, AS_PROGRAM, 8, citycon_state )
AM_RANGE(0x3002, 0x3002) AM_READ_PORT("DSW2") AM_WRITE(soundlatch2_byte_w)
AM_RANGE(0x3004, 0x3005) AM_READNOP AM_WRITEONLY AM_SHARE("scroll")
AM_RANGE(0x3007, 0x3007) AM_READ(citycon_irq_ack_r)
- AM_RANGE(0x3800, 0x3cff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0x3800, 0x3cff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x4000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -215,9 +215,8 @@ static MACHINE_CONFIG_START( citycon, citycon_state )
MCFG_SCREEN_UPDATE_DRIVER(citycon_state, screen_update_citycon)
MCFG_GFXDECODE_ADD("gfxdecode", citycon)
- MCFG_PALETTE_LENGTH(640+1024) /* 640 real palette + 1024 virtual palette */
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, all_black) /* guess */
-
+ MCFG_PALETTE_ADD_INIT_BLACK("palette", 640+1024) /* 640 real palette + 1024 virtual palette */
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/cloak.c b/src/mame/drivers/cloak.c
index 75bae88c2b5..b0443ddcf00 100644
--- a/src/mame/drivers/cloak.c
+++ b/src/mame/drivers/cloak.c
@@ -352,7 +352,7 @@ static MACHINE_CONFIG_START( cloak, cloak_state )
MCFG_SCREEN_UPDATE_DRIVER(cloak_state, screen_update_cloak)
MCFG_GFXDECODE_ADD("gfxdecode", cloak)
- MCFG_PALETTE_LENGTH(64)
+ MCFG_PALETTE_ADD("palette", 64)
/* sound hardware */
diff --git a/src/mame/drivers/cloud9.c b/src/mame/drivers/cloud9.c
index 297ca95eda0..74702fcb6e4 100644
--- a/src/mame/drivers/cloud9.c
+++ b/src/mame/drivers/cloud9.c
@@ -426,7 +426,7 @@ static MACHINE_CONFIG_START( cloud9, cloud9_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", cloud9)
- MCFG_PALETTE_LENGTH(64)
+ MCFG_PALETTE_ADD("palette", 64)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE((float)PIXEL_CLOCK / (float)VTOTAL / (float)HTOTAL)
diff --git a/src/mame/drivers/clshroad.c b/src/mame/drivers/clshroad.c
index ebc6cd92d57..513acac1929 100644
--- a/src/mame/drivers/clshroad.c
+++ b/src/mame/drivers/clshroad.c
@@ -247,9 +247,9 @@ static MACHINE_CONFIG_START( firebatl, clshroad_state )
MCFG_SCREEN_UPDATE_DRIVER(clshroad_state, screen_update_clshroad)
MCFG_GFXDECODE_ADD("gfxdecode", firebatl)
- MCFG_PALETTE_LENGTH(512+64*4)
+ MCFG_PALETTE_ADD("palette", 512+64*4)
- MCFG_PALETTE_INIT_OVERRIDE(clshroad_state,firebatl)
+ MCFG_PALETTE_INIT_OWNER(clshroad_state,firebatl)
MCFG_VIDEO_START_OVERRIDE(clshroad_state,firebatl)
/* sound hardware */
@@ -280,9 +280,9 @@ static MACHINE_CONFIG_START( clshroad, clshroad_state )
MCFG_SCREEN_UPDATE_DRIVER(clshroad_state, screen_update_clshroad)
MCFG_GFXDECODE_ADD("gfxdecode", clshroad)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
- MCFG_PALETTE_INIT_OVERRIDE(clshroad_state,clshroad)
+ MCFG_PALETTE_INIT_OWNER(clshroad_state,clshroad)
MCFG_VIDEO_START_OVERRIDE(clshroad_state,clshroad)
/* sound hardware */
diff --git a/src/mame/drivers/cmmb.c b/src/mame/drivers/cmmb.c
index d91bd6ca01a..b68325146ef 100644
--- a/src/mame/drivers/cmmb.c
+++ b/src/mame/drivers/cmmb.c
@@ -97,7 +97,7 @@ UINT32 cmmb_state::screen_update_cmmb(screen_device &screen, bitmap_ind16 &bitma
{
int tile = videoram[count] & 0x3f;
int colour = (videoram[count] & 0xc0)>>6;
- gfx->opaque(bitmap,cliprect,tile,colour,0,0,x*8,y*8);
+ gfx->opaque(m_palette,bitmap,cliprect,tile,colour,0,0,x*8,y*8);
count++;
}
@@ -130,7 +130,7 @@ WRITE8_MEMBER(cmmb_state::cmmb_charram_w)
WRITE8_MEMBER(cmmb_state::cmmb_paletteram_w)
{
/* RGB output is inverted */
- paletteram_RRRGGGBB_byte_w(space,offset,~data);
+ m_palette->write(space, offset, UINT8(~data), mem_mask);
}
READ8_MEMBER(cmmb_state::cmmb_input_r)
@@ -191,7 +191,7 @@ static ADDRESS_MAP_START( cmmb_map, AS_PROGRAM, 8, cmmb_state )
AM_RANGE(0x0000, 0x01ff) AM_RAM /* zero page address */
// AM_RANGE(0x13c0, 0x13ff) AM_RAM //spriteram
AM_RANGE(0x1000, 0x13ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x2480, 0x249f) AM_RAM_WRITE(cmmb_paletteram_w) AM_SHARE("paletteram")
+ AM_RANGE(0x2480, 0x249f) AM_RAM_WRITE(cmmb_paletteram_w) AM_SHARE("palette")
AM_RANGE(0x4000, 0x400f) AM_READWRITE(cmmb_input_r,cmmb_output_w) //i/o
AM_RANGE(0x4900, 0x4900) AM_READ(kludge_r)
AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
@@ -335,7 +335,9 @@ static MACHINE_CONFIG_START( cmmb, cmmb_state )
MCFG_SCREEN_UPDATE_DRIVER(cmmb_state, screen_update_cmmb)
MCFG_GFXDECODE_ADD("gfxdecode", cmmb)
- MCFG_PALETTE_LENGTH(512)
+
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(RRRGGGBB)
/* sound hardware */
// MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/cninja.c b/src/mame/drivers/cninja.c
index 5e5906e361c..6739b1b39a9 100644
--- a/src/mame/drivers/cninja.c
+++ b/src/mame/drivers/cninja.c
@@ -949,7 +949,7 @@ static MACHINE_CONFIG_START( cninja, cninja_state )
MCFG_SCREEN_UPDATE_DRIVER(cninja_state, screen_update_cninja)
MCFG_GFXDECODE_ADD("gfxdecode", cninja)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
@@ -957,14 +957,17 @@ static MACHINE_CONFIG_START( cninja, cninja_state )
MCFG_DECO16IC_ADD("tilegen1", cninja_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DECO16IC_ADD("tilegen2", cninja_deco16ic_tilegen2_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 3);
decospr_device::set_pri_callback(*device, cninja_pri_callback);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DECO104_ADD("ioprot104")
MCFG_DECO146_SET_USE_MAGIC_ADDRESS_XOR
@@ -1010,7 +1013,7 @@ static MACHINE_CONFIG_START( stoneage, cninja_state )
MCFG_SCREEN_UPDATE_DRIVER(cninja_state, screen_update_cninja)
MCFG_GFXDECODE_ADD("gfxdecode", cninja)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_VIDEO_START_OVERRIDE(cninja_state,stoneage)
@@ -1020,14 +1023,17 @@ static MACHINE_CONFIG_START( stoneage, cninja_state )
MCFG_DECO16IC_ADD("tilegen1", cninja_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DECO16IC_ADD("tilegen2", cninja_deco16ic_tilegen2_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 3);
decospr_device::set_pri_callback(*device, cninja_pri_callback);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DECO104_ADD("ioprot104")
MCFG_DECO146_SET_USE_MAGIC_ADDRESS_XOR
@@ -1070,7 +1076,7 @@ static MACHINE_CONFIG_START( cninjabl, cninja_state )
MCFG_SCREEN_UPDATE_DRIVER(cninja_state, screen_update_cninjabl)
MCFG_GFXDECODE_ADD("gfxdecode", cninjabl)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
@@ -1078,9 +1084,11 @@ static MACHINE_CONFIG_START( cninjabl, cninja_state )
MCFG_DECO16IC_ADD("tilegen1", cninja_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DECO16IC_ADD("tilegen2", cninja_deco16ic_tilegen2_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1116,7 +1124,7 @@ static MACHINE_CONFIG_START( edrandy, cninja_state )
MCFG_SCREEN_UPDATE_DRIVER(cninja_state, screen_update_edrandy)
MCFG_GFXDECODE_ADD("gfxdecode", cninja)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
@@ -1124,14 +1132,17 @@ static MACHINE_CONFIG_START( edrandy, cninja_state )
MCFG_DECO16IC_ADD("tilegen1", edrandy_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DECO16IC_ADD("tilegen2", edrandy_deco16ic_tilegen2_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 3);
decospr_device::set_pri_callback(*device, cninja_pri_callback);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DECO146_ADD("ioprot")
@@ -1176,7 +1187,7 @@ static MACHINE_CONFIG_START( robocop2, cninja_state )
MCFG_SCREEN_UPDATE_DRIVER(cninja_state, screen_update_robocop2)
MCFG_GFXDECODE_ADD("gfxdecode", robocop2)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
@@ -1184,14 +1195,17 @@ static MACHINE_CONFIG_START( robocop2, cninja_state )
MCFG_DECO16IC_ADD("tilegen1", robocop2_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DECO16IC_ADD("tilegen2", robocop2_deco16ic_tilegen2_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 3);
decospr_device::set_pri_callback(*device, cninja_pri_callback);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DECO146_ADD("ioprot")
MCFG_DECO146_SET_USE_MAGIC_ADDRESS_XOR
@@ -1241,7 +1255,7 @@ static MACHINE_CONFIG_START( mutantf, cninja_state )
MCFG_VIDEO_START_OVERRIDE(cninja_state,mutantf)
MCFG_GFXDECODE_ADD("gfxdecode", mutantf)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram2")
@@ -1250,17 +1264,21 @@ static MACHINE_CONFIG_START( mutantf, cninja_state )
MCFG_DECO16IC_ADD("tilegen1", mutantf_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DECO16IC_ADD("tilegen2", mutantf_deco16ic_tilegen2_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen1", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 3);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen2", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 4);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DECO146_ADD("ioprot")
diff --git a/src/mame/drivers/cntsteer.c b/src/mame/drivers/cntsteer.c
index 9d2b474711c..13cf865f39c 100644
--- a/src/mame/drivers/cntsteer.c
+++ b/src/mame/drivers/cntsteer.c
@@ -109,7 +109,7 @@ PALETTE_INIT_MEMBER(cntsteer_state,zerotrgt)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -129,7 +129,7 @@ PALETTE_INIT_MEMBER(cntsteer_state,zerotrgt)
bit2 = (color_prom[i + 256] >> 2) & 0x01;
b = (0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2);
- palette_set_color(machine(), i, rgb_t(r,g,b));
+ palette.set_pen_color(i, rgb_t(r,g,b));
}
}
@@ -217,17 +217,17 @@ void cntsteer_state::zerotrgt_draw_sprites( bitmap_ind16 &bitmap, const rectangl
{
if (fy)
{
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code, color, fx, fy, sx, sy, 0);
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code + 1, color, fx, fy, sx, sy - 16, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code, color, fx, fy, sx, sy, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code + 1, color, fx, fy, sx, sy - 16, 0);
}
else
{
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code, color, fx, fy, sx, sy - 16, 0);
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code + 1, color, fx, fy, sx, sy, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code, color, fx, fy, sx, sy - 16, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code + 1, color, fx, fy, sx, sy, 0);
}
}
else
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code, color, fx, fy, sx, sy, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code, color, fx, fy, sx, sy, 0);
}
}
@@ -274,24 +274,24 @@ void cntsteer_state::cntsteer_draw_sprites( bitmap_ind16 &bitmap, const rectangl
{
if (fy)
{
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code, color, fx, fy, sx, sy, 0);
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code + 1, color, fx, fy, sx, sy - 16, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code, color, fx, fy, sx, sy, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code + 1, color, fx, fy, sx, sy - 16, 0);
}
else
{
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code, color, fx, fy, sx, sy - 16, 0);
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code + 1, color, fx, fy, sx, sy, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code, color, fx, fy, sx, sy - 16, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code + 1, color, fx, fy, sx, sy, 0);
}
}
else
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code, color, fx, fy, sx, sy, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code, color, fx, fy, sx, sy, 0);
}
}
UINT32 cntsteer_state::screen_update_zerotrgt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
if (m_disable_roz)
- bitmap.fill(machine().pens[8 * m_bg_color_bank], cliprect);
+ bitmap.fill(m_palette->pen(8 * m_bg_color_bank), cliprect);
else
{
int p1, p2, p3, p4;
@@ -340,7 +340,7 @@ UINT32 cntsteer_state::screen_update_zerotrgt(screen_device &screen, bitmap_ind1
UINT32 cntsteer_state::screen_update_cntsteer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
if (m_disable_roz)
- bitmap.fill(machine().pens[8 * m_bg_color_bank], cliprect);
+ bitmap.fill(m_palette->pen(8 * m_bg_color_bank), cliprect);
else
{
int p1, p2, p3, p4;
@@ -905,8 +905,8 @@ static MACHINE_CONFIG_START( cntsteer, cntsteer_state )
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
MCFG_GFXDECODE_ADD("gfxdecode", cntsteer)
- MCFG_PALETTE_LENGTH(256)
-// MCFG_PALETTE_INIT_OVERRIDE(cntsteer_state,zerotrgt)
+ MCFG_PALETTE_ADD("palette", 256)
+// MCFG_PALETTE_INIT_OWNER(cntsteer_state,zerotrgt)
MCFG_VIDEO_START_OVERRIDE(cntsteer_state,cntsteer)
@@ -952,9 +952,9 @@ static MACHINE_CONFIG_START( zerotrgt, cntsteer_state )
MCFG_SCREEN_UPDATE_DRIVER(cntsteer_state, screen_update_zerotrgt)
MCFG_GFXDECODE_ADD("gfxdecode", zerotrgt)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
- MCFG_PALETTE_INIT_OVERRIDE(cntsteer_state,zerotrgt)
+ MCFG_PALETTE_INIT_OWNER(cntsteer_state,zerotrgt)
MCFG_VIDEO_START_OVERRIDE(cntsteer_state,zerotrgt)
/* sound hardware */
diff --git a/src/mame/drivers/cobra.c b/src/mame/drivers/cobra.c
index 5d374cf7840..23e502c9827 100644
--- a/src/mame/drivers/cobra.c
+++ b/src/mame/drivers/cobra.c
@@ -1869,7 +1869,7 @@ WRITE32_MEMBER(cobra_state::sub_psac_palette_w)
{
COMBINE_DATA(&m_generic_paletteram_32[offset]);
data = m_generic_paletteram_32[offset];
- palette_set_color_rgb(machine(), offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
+ m_palette->set_pen_color(offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
}
READ32_MEMBER(cobra_state::sub_psac2_r)
@@ -3213,8 +3213,8 @@ static MACHINE_CONFIG_START( cobra, cobra_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(512, 400)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 399)
- MCFG_PALETTE_LENGTH(65536)
MCFG_SCREEN_UPDATE_DRIVER(cobra_state, screen_update_cobra)
+ MCFG_PALETTE_ADD("palette", 65536)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -3233,6 +3233,7 @@ static MACHINE_CONFIG_START( cobra, cobra_state )
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K001604_ADD("k001604", cobra_k001604_intf) // on the LAN board in Racing Jam DX
MCFG_K001604_GFXDECODE("gfxdecode")
+ MCFG_K001604_PALETTE("palette")
MCFG_DEVICE_ADD("cobra_jvs_host", COBRA_JVS_HOST, 4000000)
MCFG_JVS_DEVICE_ADD("cobra_jvs", COBRA_JVS, "cobra_jvs_host")
diff --git a/src/mame/drivers/coinmstr.c b/src/mame/drivers/coinmstr.c
index 6bec5b4b2e5..9d8efb7a6d8 100644
--- a/src/mame/drivers/coinmstr.c
+++ b/src/mame/drivers/coinmstr.c
@@ -73,7 +73,7 @@ WRITE8_MEMBER(coinmstr_state::quizmstr_bg_w)
}
-static void coinmstr_set_pal(running_machine &machine, UINT32 paldat, int col)
+static void coinmstr_set_pal(palette_device &palette, UINT32 paldat, int col)
{
col = col *4;
@@ -97,10 +97,10 @@ static void coinmstr_set_pal(running_machine &machine, UINT32 paldat, int col)
b3 = (paldat & 0x0001) >> 0 ;
- palette_set_color_rgb(machine, col+0, (b0 * 255) << 5, (g0 * 255) << 5, (r0 * 255) << 5);
- palette_set_color_rgb(machine, col+2, (b1 * 255) << 5, (g1 * 255) << 5, (r1 * 255) << 5);
- palette_set_color_rgb(machine, col+1, (b2 * 255) << 5, (g2 * 255) << 5, (r2 * 255) << 5);
- palette_set_color_rgb(machine, col+3, (b3 * 255) << 5, (g3 * 255) << 5, (r3 * 255) << 5);
+ palette.set_pen_color(col+0, (b0 * 255) << 5, (g0 * 255) << 5, (r0 * 255) << 5);
+ palette.set_pen_color(col+2, (b1 * 255) << 5, (g1 * 255) << 5, (r1 * 255) << 5);
+ palette.set_pen_color(col+1, (b2 * 255) << 5, (g2 * 255) << 5, (r2 * 255) << 5);
+ palette.set_pen_color(col+3, (b3 * 255) << 5, (g3 * 255) << 5, (r3 * 255) << 5);
}
}
@@ -116,7 +116,7 @@ WRITE8_MEMBER(coinmstr_state::quizmstr_attr1_w)
UINT32 paldata = (m_attr_ram1[offset] & 0x7f) | ((m_attr_ram2[offset] & 0x7f) << 7);
m_bg_tilemap->mark_tile_dirty(offset - 0x0240);
- coinmstr_set_pal(machine(), paldata, offset - 0x240);
+ coinmstr_set_pal(m_palette, paldata, offset - 0x240);
}
}
@@ -131,7 +131,7 @@ WRITE8_MEMBER(coinmstr_state::quizmstr_attr2_w)
UINT32 paldata = (m_attr_ram1[offset] & 0x7f) | ((m_attr_ram2[offset] & 0x7f) << 7);
m_bg_tilemap->mark_tile_dirty(offset - 0x0240);
- coinmstr_set_pal(machine(), paldata, offset - 0x240);
+ coinmstr_set_pal(m_palette, paldata, offset - 0x240);
}
}
@@ -1169,7 +1169,7 @@ static MACHINE_CONFIG_START( coinmstr, coinmstr_state )
MCFG_SCREEN_UPDATE_DRIVER(coinmstr_state, screen_update_coinmstr)
MCFG_GFXDECODE_ADD("gfxdecode", coinmstr)
- MCFG_PALETTE_LENGTH(46*32*4)
+ MCFG_PALETTE_ADD("palette", 46*32*4)
MCFG_MC6845_ADD("crtc", H46505, "screen", 14000000 / 16, h46505_intf)
diff --git a/src/mame/drivers/coinmvga.c b/src/mame/drivers/coinmvga.c
index 3d19f0edd0f..f93a05c4fcf 100644
--- a/src/mame/drivers/coinmvga.c
+++ b/src/mame/drivers/coinmvga.c
@@ -237,7 +237,7 @@ public:
DECLARE_DRIVER_INIT(colorama);
DECLARE_DRIVER_INIT(cmrltv75);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(coinmvga);
UINT32 screen_update_coinmvga(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
required_device<cpu_device> m_maincpu;
@@ -269,7 +269,7 @@ UINT32 coinmvga_state::screen_update_coinmvga(screen_device &screen, bitmap_ind1
{
int tile = m_vram[count];
//int colour = tile>>12;
- gfx->opaque(bitmap,cliprect,tile,0,0,0,x*8,y*8);
+ gfx->opaque(m_palette,bitmap,cliprect,tile,0,0,0,x*8,y*8);
count++;
}
@@ -280,7 +280,7 @@ UINT32 coinmvga_state::screen_update_coinmvga(screen_device &screen, bitmap_ind1
}
-void coinmvga_state::palette_init()
+PALETTE_INIT_MEMBER(coinmvga_state, coinmvga)
{
}
@@ -315,7 +315,7 @@ WRITE16_MEMBER(coinmvga_state::ramdac_bg_w)
break;
case 2:
m_bgpal.b = ((data & 0x3f) << 2) | ((data & 0x30) >> 4);
- palette_set_color(machine(), m_bgpal.offs, rgb_t(m_bgpal.r, m_bgpal.g, m_bgpal.b));
+ m_palette->set_pen_color(m_bgpal.offs, rgb_t(m_bgpal.r, m_bgpal.g, m_bgpal.b));
m_bgpal.offs_internal = 0;
m_bgpal.offs++;
break;
@@ -345,7 +345,7 @@ WRITE16_MEMBER(coinmvga_state::ramdac_fg_w)
break;
case 2:
m_fgpal.b = ((data & 0x3f) << 2) | ((data & 0x30) >> 4);
- palette_set_color(machine(), 0x100+m_fgpal.offs, rgb_t(m_fgpal.r, m_fgpal.g, m_fgpal.b));
+ m_palette->set_pen_color(0x100+m_fgpal.offs, rgb_t(m_fgpal.r, m_fgpal.g, m_fgpal.b));
m_fgpal.offs_internal = 0;
m_fgpal.offs++;
break;
@@ -688,8 +688,8 @@ static MACHINE_CONFIG_START( coinmvga, coinmvga_state )
MCFG_GFXDECODE_ADD("gfxdecode", coinmvga)
- MCFG_PALETTE_LENGTH(512)
-
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_INIT_OWNER(coinmvga_state, coinmvga)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/combatsc.c b/src/mame/drivers/combatsc.c
index 1b9d16cebd4..01035e50ba1 100644
--- a/src/mame/drivers/combatsc.c
+++ b/src/mame/drivers/combatsc.c
@@ -731,13 +731,15 @@ static MACHINE_CONFIG_START( combatsc, combatsc_state )
MCFG_SCREEN_UPDATE_DRIVER(combatsc_state, screen_update_combatsc)
MCFG_GFXDECODE_ADD("gfxdecode", combatsc)
- MCFG_PALETTE_LENGTH(8*16*16)
+ MCFG_PALETTE_ADD("palette", 8*16*16)
- MCFG_PALETTE_INIT_OVERRIDE(combatsc_state,combatsc)
+ MCFG_PALETTE_INIT_OWNER(combatsc_state,combatsc)
MCFG_VIDEO_START_OVERRIDE(combatsc_state,combatsc)
MCFG_K007121_ADD("k007121_1")
+ MCFG_K007121_PALETTE("palette")
MCFG_K007121_ADD("k007121_2")
+ MCFG_K007121_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -782,9 +784,9 @@ static MACHINE_CONFIG_START( combatscb, combatsc_state )
MCFG_SCREEN_UPDATE_DRIVER(combatsc_state, screen_update_combatscb)
MCFG_GFXDECODE_ADD("gfxdecode", combatscb)
- MCFG_PALETTE_LENGTH(8*16*16)
+ MCFG_PALETTE_ADD("palette", 8*16*16)
- MCFG_PALETTE_INIT_OVERRIDE(combatsc_state,combatscb)
+ MCFG_PALETTE_INIT_OWNER(combatsc_state,combatscb)
MCFG_VIDEO_START_OVERRIDE(combatsc_state,combatscb)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/comebaby.c b/src/mame/drivers/comebaby.c
index 050aba9ae92..94fb1e58386 100644
--- a/src/mame/drivers/comebaby.c
+++ b/src/mame/drivers/comebaby.c
@@ -114,7 +114,7 @@ static MACHINE_CONFIG_START( comebaby, comebaby_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/commando.c b/src/mame/drivers/commando.c
index 5b3e47b8c4c..c14e6f89154 100644
--- a/src/mame/drivers/commando.c
+++ b/src/mame/drivers/commando.c
@@ -260,9 +260,7 @@ static MACHINE_CONFIG_START( commando, commando_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", commando)
- MCFG_PALETTE_LENGTH(256)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
MCFG_BUFFERED_SPRITERAM8_ADD("spriteram")
diff --git a/src/mame/drivers/compgolf.c b/src/mame/drivers/compgolf.c
index cc99a351deb..1f8068c33ad 100644
--- a/src/mame/drivers/compgolf.c
+++ b/src/mame/drivers/compgolf.c
@@ -255,7 +255,7 @@ static MACHINE_CONFIG_START( compgolf, compgolf_state )
MCFG_SCREEN_VISIBLE_AREA(1*8, 32*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_DRIVER(compgolf_state, screen_update_compgolf)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_GFXDECODE_ADD("gfxdecode", compgolf)
diff --git a/src/mame/drivers/contra.c b/src/mame/drivers/contra.c
index 85abddd6f4c..3eab2db9c67 100644
--- a/src/mame/drivers/contra.c
+++ b/src/mame/drivers/contra.c
@@ -203,11 +203,13 @@ static MACHINE_CONFIG_START( contra, contra_state )
MCFG_SCREEN_UPDATE_DRIVER(contra_state, screen_update_contra)
MCFG_GFXDECODE_ADD("gfxdecode", contra)
- MCFG_PALETTE_LENGTH(2*8*16*16)
-
+ MCFG_PALETTE_ADD("palette", 2*8*16*16)
+ MCFG_PALETTE_INIT_OWNER(contra_state, contra)
MCFG_K007121_ADD("k007121_1")
+ MCFG_K007121_PALETTE("palette")
MCFG_K007121_ADD("k007121_2")
+ MCFG_K007121_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/coolridr.c b/src/mame/drivers/coolridr.c
index d9956224808..f29896b5feb 100644
--- a/src/mame/drivers/coolridr.c
+++ b/src/mame/drivers/coolridr.c
@@ -2133,7 +2133,7 @@ void *coolridr_state::draw_object_threaded(void *param, int threadid)
/* This is a RLE-based sprite blitter (US Patent #6,141,122), very unusual from Sega... */
void coolridr_state::blit_current_sprite(address_space &space)
{
-// const pen_t *clut = &machine().pens[0];
+// const pen_t *clut = &m_palette->pen(0);
// Serialized 32-bit words in order of appearance:
// 0: 00000000 - unknown, 0x00000000 or 0x00000001, 0 seems to be regular sprite, 1 seems to change meaning of below, possible clip area?
@@ -3615,8 +3615,7 @@ static MACHINE_CONFIG_START( coolridr, coolridr_state )
MCFG_SCREEN_VISIBLE_AREA(CLIPMINX_FULL,CLIPMAXX_FULL, CLIPMINY_FULL, CLIPMAXY_FULL)
MCFG_SCREEN_UPDATE_DRIVER(coolridr_state, screen_update_coolridr2)
- MCFG_PALETTE_LENGTH(0x10000)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRRR_GGGGG_BBBBB)
+ MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB("palette")
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
diff --git a/src/mame/drivers/cop01.c b/src/mame/drivers/cop01.c
index d32b643e1d7..c9ccad430b4 100644
--- a/src/mame/drivers/cop01.c
+++ b/src/mame/drivers/cop01.c
@@ -463,8 +463,8 @@ static MACHINE_CONFIG_START( cop01, cop01_state )
MCFG_SCREEN_UPDATE_DRIVER(cop01_state, screen_update_cop01)
MCFG_GFXDECODE_ADD("gfxdecode", cop01)
- MCFG_PALETTE_LENGTH(16+8*16+16*16)
-
+ MCFG_PALETTE_ADD("palette", 16+8*16+16*16)
+ MCFG_PALETTE_INIT_OWNER(cop01_state, cop01)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -501,8 +501,8 @@ static MACHINE_CONFIG_START( mightguy, cop01_state )
MCFG_SCREEN_UPDATE_DRIVER(cop01_state, screen_update_cop01)
MCFG_GFXDECODE_ADD("gfxdecode", cop01)
- MCFG_PALETTE_LENGTH(16+8*16+16*16)
-
+ MCFG_PALETTE_ADD("palette", 16+8*16+16*16)
+ MCFG_PALETTE_INIT_OWNER(cop01_state, cop01)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/cops.c b/src/mame/drivers/cops.c
index a746a149c4d..ca9c665a69c 100644
--- a/src/mame/drivers/cops.c
+++ b/src/mame/drivers/cops.c
@@ -601,8 +601,8 @@ static MACHINE_CONFIG_START( cops, cops_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_PALETTE_INIT_OVERRIDE(cops_state,cops)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(cops_state,cops)
/* via */
MCFG_DEVICE_ADD("via6522_1", VIA6522, 0)
diff --git a/src/mame/drivers/copsnrob.c b/src/mame/drivers/copsnrob.c
index 31ca451b720..54447caacfe 100644
--- a/src/mame/drivers/copsnrob.c
+++ b/src/mame/drivers/copsnrob.c
@@ -62,19 +62,6 @@ Added Dip locations according to manual.
/*************************************
*
- * Palette generation
- *
- *************************************/
-
-void copsnrob_state::palette_init()
-{
- palette_set_color(machine(),0,rgb_t(0x00,0x00,0x00)); /* black */
- palette_set_color(machine(),1,rgb_t(0xff,0xff,0xff)); /* white */
-}
-
-
-/*************************************
- *
* I/O
*
*************************************/
@@ -270,7 +257,7 @@ static MACHINE_CONFIG_START( copsnrob, copsnrob_state )
MCFG_SCREEN_UPDATE_DRIVER(copsnrob_state, screen_update_copsnrob)
MCFG_GFXDECODE_ADD("gfxdecode", copsnrob)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/corona.c b/src/mame/drivers/corona.c
index 54f6448f75e..ceaaf8f0dee 100644
--- a/src/mame/drivers/corona.c
+++ b/src/mame/drivers/corona.c
@@ -349,7 +349,7 @@ public:
DECLARE_WRITE8_MEMBER(ay_port_a_out);
DECLARE_WRITE8_MEMBER(ay_port_b_out);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(corona);
UINT32 screen_update_winner(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_luckyrlt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
@@ -361,7 +361,7 @@ public:
* Video Hardware *
*********************************************/
-void corona_state::palette_init()
+PALETTE_INIT_MEMBER(corona_state, corona)
{
const UINT8 *color_prom = memregion("proms")->base();
int bit6, bit7, bit0, bit1, r, g, b;
@@ -384,7 +384,7 @@ void corona_state::palette_init()
bit1 = (color_prom[0] >> 5) & 0x01;
r = 0x0e * bit6 + 0x1f * bit7 + 0x43 * bit0 + 0x8f * bit1;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
color_prom++;
}
}
@@ -1380,8 +1380,8 @@ static MACHINE_CONFIG_START( winner81, corona_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_DRIVER(corona_state, screen_update_winner)
- MCFG_PALETTE_LENGTH(0x100)
-
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_INIT_OWNER(corona_state, corona)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("aysnd", AY8912, AY_CLK1) /* measured */
@@ -1411,8 +1411,8 @@ static MACHINE_CONFIG_START( winner82, corona_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_DRIVER(corona_state, screen_update_winner)
- MCFG_PALETTE_LENGTH(0x100)
-
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_INIT_OWNER(corona_state, corona)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("aysnd", AY8910, AY_CLK2) /* measured */
@@ -1442,8 +1442,8 @@ static MACHINE_CONFIG_START( re800, corona_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(corona_state, screen_update_winner)
- MCFG_PALETTE_LENGTH(0x100)
-
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_INIT_OWNER(corona_state, corona)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("aysnd", AY8912, AY_CLK2)
@@ -1472,8 +1472,8 @@ static MACHINE_CONFIG_START( rcirulet, corona_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(corona_state, screen_update_winner)
- MCFG_PALETTE_LENGTH(0x100)
-
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_INIT_OWNER(corona_state, corona)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("aysnd", AY8912, AY_CLK2)
@@ -1503,8 +1503,8 @@ static MACHINE_CONFIG_START( luckyrlt, corona_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(corona_state, screen_update_luckyrlt)
- MCFG_PALETTE_LENGTH(0x100)
-
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_INIT_OWNER(corona_state, corona)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("aysnd", AY8912, AY_CLK1)
diff --git a/src/mame/drivers/cosmic.c b/src/mame/drivers/cosmic.c
index 4bc6d2f9623..68988dbbd9f 100644
--- a/src/mame/drivers/cosmic.c
+++ b/src/mame/drivers/cosmic.c
@@ -1027,9 +1027,9 @@ static MACHINE_CONFIG_DERIVED( panic, cosmic )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", panic)
- MCFG_PALETTE_LENGTH(16+8*4)
+ MCFG_PALETTE_ADD("palette", 16+8*4)
- MCFG_PALETTE_INIT_OVERRIDE(cosmic_state,panic)
+ MCFG_PALETTE_INIT_OWNER(cosmic_state,panic)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(cosmic_state, screen_update_panic)
@@ -1052,9 +1052,9 @@ static MACHINE_CONFIG_DERIVED( cosmica, cosmic )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", cosmica)
- MCFG_PALETTE_LENGTH(8+16*4)
+ MCFG_PALETTE_ADD("palette", 8+16*4)
- MCFG_PALETTE_INIT_OVERRIDE(cosmic_state,cosmica)
+ MCFG_PALETTE_INIT_OWNER(cosmic_state,cosmica)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(cosmic_state, screen_update_cosmica)
@@ -1097,9 +1097,9 @@ static MACHINE_CONFIG_START( cosmicg, cosmic_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1)
MCFG_SCREEN_UPDATE_DRIVER(cosmic_state, screen_update_cosmicg)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
- MCFG_PALETTE_INIT_OVERRIDE(cosmic_state,cosmicg)
+ MCFG_PALETTE_INIT_OWNER(cosmic_state,cosmicg)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1120,9 +1120,9 @@ static MACHINE_CONFIG_DERIVED( magspot, cosmic )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", panic)
- MCFG_PALETTE_LENGTH(16+8*4)
+ MCFG_PALETTE_ADD("palette", 16+8*4)
- MCFG_PALETTE_INIT_OVERRIDE(cosmic_state,magspot)
+ MCFG_PALETTE_INIT_OWNER(cosmic_state,magspot)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(cosmic_state, screen_update_magspot)
@@ -1152,9 +1152,9 @@ static MACHINE_CONFIG_DERIVED( nomnlnd, cosmic )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", panic)
- MCFG_PALETTE_LENGTH(16+8*4)
+ MCFG_PALETTE_ADD("palette", 16+8*4)
- MCFG_PALETTE_INIT_OVERRIDE(cosmic_state,nomnlnd)
+ MCFG_PALETTE_INIT_OWNER(cosmic_state,nomnlnd)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(cosmic_state, screen_update_nomnlnd)
diff --git a/src/mame/drivers/cps1.c b/src/mame/drivers/cps1.c
index c28a2ad66e2..4182b6efac2 100644
--- a/src/mame/drivers/cps1.c
+++ b/src/mame/drivers/cps1.c
@@ -3171,7 +3171,7 @@ static MACHINE_CONFIG_START( cps1_10MHz, cps_state )
MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1)
MCFG_GFXDECODE_ADD("gfxdecode", cps1)
- MCFG_PALETTE_LENGTH(0xc00)
+ MCFG_PALETTE_ADD("palette", 0xc00)
MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
diff --git a/src/mame/drivers/cps2.c b/src/mame/drivers/cps2.c
index 7a117b2ae04..9d617eb8d7f 100644
--- a/src/mame/drivers/cps2.c
+++ b/src/mame/drivers/cps2.c
@@ -1270,7 +1270,7 @@ static MACHINE_CONFIG_START( cps2, cps_state )
16MHz -> same as 8 but with a /2 divider; also a possibility
*/
MCFG_GFXDECODE_ADD("gfxdecode", cps2)
- MCFG_PALETTE_LENGTH(0xc00)
+ MCFG_PALETTE_ADD("palette", 0xc00)
MCFG_VIDEO_START_OVERRIDE(cps_state,cps2)
diff --git a/src/mame/drivers/cps3.c b/src/mame/drivers/cps3.c
index 104e2d0b50f..90bac75cdcf 100644
--- a/src/mame/drivers/cps3.c
+++ b/src/mame/drivers/cps3.c
@@ -889,7 +889,7 @@ void cps3_state::cps3_set_mame_colours(int colournum, UINT16 data, UINT32 fadeva
m_mame_colours[colournum] = (r << (16+3)) | (g << (8+3)) | (b << (0+3));
- if (colournum<0x10000) palette_set_color(machine(),colournum,m_mame_colours[colournum]/* rgb_t(r<<3,g<<3,b<<3)*/);//m_mame_colours[colournum]);
+ if (colournum<0x10000) m_palette->set_pen_color(colournum,m_mame_colours[colournum]/* rgb_t(r<<3,g<<3,b<<3)*/);//m_mame_colours[colournum]);
}
@@ -904,12 +904,12 @@ void cps3_state::video_start()
save_pointer(NAME(m_char_ram), 0x800000 /4);
/* create the char set (gfx will then be updated dynamically from RAM) */
- m_gfxdecode->set_gfx(0, auto_alloc(machine(), gfx_element(machine(), cps3_tiles8x8_layout, (UINT8 *)m_ss_ram, machine().total_colors() / 16, 0)));
+ m_gfxdecode->set_gfx(0, auto_alloc(machine(), gfx_element(machine(), cps3_tiles8x8_layout, (UINT8 *)m_ss_ram, m_palette->entries() / 16, 0)));
//decode_ssram();
/* create the char set (gfx will then be updated dynamically from RAM) */
- m_gfxdecode->set_gfx(1, auto_alloc(machine(), gfx_element(machine(), cps3_tiles16x16_layout, (UINT8 *)m_char_ram, machine().total_colors() / 64, 0)));
+ m_gfxdecode->set_gfx(1, auto_alloc(machine(), gfx_element(machine(), cps3_tiles16x16_layout, (UINT8 *)m_char_ram, m_palette->entries() / 64, 0)));
m_gfxdecode->gfx(1)->set_granularity(64);
//decode_charram();
@@ -1293,7 +1293,7 @@ UINT32 cps3_state::screen_update_cps3(screen_device &screen, bitmap_rgb32 &bitma
// for (offset=0;offset<0x200;offset++)
// {
// int palreadbase = (m_ss_pal_base << 9);
-// palette_set_color(machine(),offset,m_mame_colours[palreadbase+offset]);
+// m_palette->set_pen_color(offset,m_mame_colours[palreadbase+offset]);
// }
// fg layer
@@ -2585,7 +2585,7 @@ static MACHINE_CONFIG_START( cps3, cps3_state )
*/
MCFG_NVRAM_ADD_0FILL("eeprom")
- MCFG_PALETTE_LENGTH(0x10000) // actually 0x20000 ...
+ MCFG_PALETTE_ADD("palette", 0x10000) // actually 0x20000 ...
MCFG_GFXDECODE_ADD("gfxdecode", empty)
diff --git a/src/mame/drivers/crbaloon.c b/src/mame/drivers/crbaloon.c
index 8f02378f46c..fcf6bc7a25e 100644
--- a/src/mame/drivers/crbaloon.c
+++ b/src/mame/drivers/crbaloon.c
@@ -370,7 +370,8 @@ static MACHINE_CONFIG_START( crbaloon, crbaloon_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_GFXDECODE_ADD("gfxdecode", crbaloon)
- MCFG_PALETTE_LENGTH(32)
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(crbaloon_state, crbaloon)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
diff --git a/src/mame/drivers/crimfght.c b/src/mame/drivers/crimfght.c
index 8f5ef9c1c4a..59628b4a13c 100644
--- a/src/mame/drivers/crimfght.c
+++ b/src/mame/drivers/crimfght.c
@@ -272,8 +272,6 @@ static MACHINE_CONFIG_START( crimfght, crimfght_state )
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.17) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
@@ -281,13 +279,17 @@ static MACHINE_CONFIG_START( crimfght, crimfght_state )
MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(crimfght_state, screen_update_crimfght)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", crimfght_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K051960_ADD("k051960", crimfght_k051960_intf)
MCFG_K051960_GFXDECODE("gfxdecode")
+ MCFG_K051960_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -394,7 +396,7 @@ static KONAMI_SETLINES_CALLBACK( crimfght_banking )
if (lines & 0x20)
{
device->memory().space(AS_PROGRAM).install_read_bank(0x0000, 0x03ff, "bank3");
- device->memory().space(AS_PROGRAM).install_write_handler(0x0000, 0x03ff, write8_delegate(FUNC(crimfght_state::paletteram_xBBBBBGGGGGRRRRR_byte_be_w), state));
+ device->memory().space(AS_PROGRAM).install_write_handler(0x0000, 0x03ff, write8_delegate(FUNC(palette_device::write), state->m_palette.target()));
state->membank("bank3")->set_base(state->m_generic_paletteram_8);
}
else
diff --git a/src/mame/drivers/crospang.c b/src/mame/drivers/crospang.c
index e4369c4aa1b..9653b60e866 100644
--- a/src/mame/drivers/crospang.c
+++ b/src/mame/drivers/crospang.c
@@ -58,7 +58,7 @@ static ADDRESS_MAP_START( crospang_map, AS_PROGRAM, 16, crospang_state )
AM_RANGE(0x10000e, 0x10000f) AM_WRITENOP
AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(crospang_fg_videoram_w) AM_SHARE("fg_videoram")
AM_RANGE(0x122000, 0x1227ff) AM_RAM_WRITE(crospang_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x200000, 0x2005ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x200000, 0x2005ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x210000, 0x2107ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x270000, 0x270001) AM_WRITE(crospang_soundlatch_w)
AM_RANGE(0x280000, 0x280001) AM_READ_PORT("P1_P2")
@@ -78,7 +78,7 @@ static ADDRESS_MAP_START( bestri_map, AS_PROGRAM, 16, crospang_state )
AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(crospang_fg_videoram_w) AM_SHARE("fg_videoram")
AM_RANGE(0x122000, 0x1227ff) AM_RAM_WRITE(crospang_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x200000, 0x2005ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x200000, 0x2005ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x210000, 0x2107ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x270000, 0x270001) AM_WRITE(crospang_soundlatch_w)
AM_RANGE(0x270004, 0x270005) AM_WRITENOP
@@ -354,7 +354,8 @@ static MACHINE_CONFIG_START( crospang, crospang_state )
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 0, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(crospang_state, screen_update_crospang)
- MCFG_PALETTE_LENGTH(0x300)
+ MCFG_PALETTE_ADD("palette", 0x300)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_GFXDECODE_ADD("gfxdecode", crospang)
@@ -363,6 +364,7 @@ static MACHINE_CONFIG_START( crospang, crospang_state )
decospr_device::set_is_bootleg(*device, true);
decospr_device::set_offsets(*device, 5,7);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
/* sound hardware */
diff --git a/src/mame/drivers/crshrace.c b/src/mame/drivers/crshrace.c
index 2319fe15270..d0a26b61399 100644
--- a/src/mame/drivers/crshrace.c
+++ b/src/mame/drivers/crshrace.c
@@ -192,7 +192,7 @@ static ADDRESS_MAP_START( crshrace_map, AS_PROGRAM, 16, crshrace_state )
AM_RANGE(0xfe0000, 0xfeffff) AM_RAM
AM_RANGE(0xffc000, 0xffc001) AM_WRITE(crshrace_roz_bank_w)
AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(crshrace_videoram2_w) AM_SHARE("videoram2")
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_WRITE(paletteram_xGGGGGBBBBBRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("P1") AM_WRITE(crshrace_gfxctrl_w)
AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("P2")
AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW0")
@@ -470,12 +470,14 @@ static MACHINE_CONFIG_START( crshrace, crshrace_state )
MCFG_SCREEN_VBLANK_DRIVER(crshrace_state, screen_eof_crshrace)
MCFG_GFXDECODE_ADD("gfxdecode", crshrace)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xGGGGGBBBBBRRRRR)
MCFG_DEVICE_ADD("vsystem_spr", VSYSTEM_SPR, 0)
MCFG_VSYSTEM_SPR_SET_TILE_INDIRECT( crshrace_state, crshrace_tile_callback )
MCFG_VSYSTEM_SPR_SET_GFXREGION(2)
MCFG_VSYSTEM_SPR_GFXDECODE("gfxdecode")
+ MCFG_VSYSTEM_SPR_PALETTE("palette")
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram2")
diff --git a/src/mame/drivers/crystal.c b/src/mame/drivers/crystal.c
index d5fd2c100a1..d82b63e4829 100644
--- a/src/mame/drivers/crystal.c
+++ b/src/mame/drivers/crystal.c
@@ -924,8 +924,7 @@ static MACHINE_CONFIG_START( crystal, crystal_state )
MCFG_VIDEO_VRENDER0_ADD("vr0", vr0video_config)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRRR_GGGGGG_BBBBB)
- MCFG_PALETTE_LENGTH(65536)
+ MCFG_PALETTE_ADD_RRRRRGGGGGGBBBBB("palette")
MCFG_DS1302_ADD("rtc", XTAL_32_768kHz)
diff --git a/src/mame/drivers/cshooter.c b/src/mame/drivers/cshooter.c
index 8d83f96af91..70c5e70d3fd 100644
--- a/src/mame/drivers/cshooter.c
+++ b/src/mame/drivers/cshooter.c
@@ -125,7 +125,7 @@ public:
DECLARE_DRIVER_INIT(cshooter);
TILE_GET_INFO_MEMBER(get_cstx_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(cshooter);
DECLARE_MACHINE_RESET(cshooter);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_airraid(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@@ -133,21 +133,18 @@ public:
};
-void cshooter_state::palette_init()
+PALETTE_INIT_MEMBER(cshooter_state, cshooter)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- // allocate the colortable
- machine().colortable = colortable_alloc(machine(), 0x100);
-
// text uses colors 0xc0-0xdf
for (i = 0; i < 0x40; i++)
- colortable_entry_set_value(machine().colortable, i, (color_prom[i] & 0x1f) | 0xc0);
+ palette.set_pen_indirect(i, (color_prom[i] & 0x1f) | 0xc0);
// rest is still unknown..
for (i = 0x40; i < 0x100; i++)
- colortable_entry_set_value(machine().colortable, i, color_prom[i]);
+ palette.set_pen_indirect(i, color_prom[i]);
}
TILE_GET_INFO_MEMBER(cshooter_state::get_cstx_tile_info)
@@ -185,10 +182,10 @@ void cshooter_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
tile_low += (tile_low > 0x9) ? 0x37 : 0x30;
tile_high += (tile_high > 0x9) ? 0x37 : 0x30;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, tile_high << 1, m_spriteram[i+1], 0, 0, m_spriteram[i+3],m_spriteram[i+2],0);
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, tile_high << 1, m_spriteram[i+1], 0, 0, m_spriteram[i+3]+8,m_spriteram[i+2],0);
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, tile_low << 1, m_spriteram[i+1], 0, 0, m_spriteram[i+3]+8,m_spriteram[i+2]+8,0);
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, tile_low << 1, m_spriteram[i+1], 0, 0, m_spriteram[i+3],m_spriteram[i+2]+8,0);
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect, tile_high << 1, m_spriteram[i+1], 0, 0, m_spriteram[i+3],m_spriteram[i+2],0);
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect, tile_high << 1, m_spriteram[i+1], 0, 0, m_spriteram[i+3]+8,m_spriteram[i+2],0);
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect, tile_low << 1, m_spriteram[i+1], 0, 0, m_spriteram[i+3]+8,m_spriteram[i+2]+8,0);
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect, tile_low << 1, m_spriteram[i+1], 0, 0, m_spriteram[i+3],m_spriteram[i+2]+8,0);
}
}
@@ -202,7 +199,7 @@ UINT32 cshooter_state::screen_update_airraid(screen_device &screen, bitmap_ind16
int b = m_generic_paletteram2_8[i] & 0xf;
rgb_t color = rgb_t(pal4bit(r), pal4bit(g), pal4bit(b));
- colortable_palette_set_color(machine().colortable, i, color);
+ m_palette->set_indirect_color(i, color);
}
bitmap.fill(0x80, cliprect); // temp
@@ -453,7 +450,8 @@ static MACHINE_CONFIG_START( airraid, cshooter_state )
MCFG_SCREEN_UPDATE_DRIVER(cshooter_state, screen_update_airraid)
MCFG_GFXDECODE_ADD("gfxdecode", cshooter)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_INIT_OWNER(cshooter_state, cshooter)
/* sound hardware */
SEIBU_AIRRAID_SOUND_SYSTEM_YM2151_INTERFACE(XTAL_14_31818MHz/4)
diff --git a/src/mame/drivers/csplayh5.c b/src/mame/drivers/csplayh5.c
index 6b3614cdff4..fa92d66ad5b 100644
--- a/src/mame/drivers/csplayh5.c
+++ b/src/mame/drivers/csplayh5.c
@@ -680,8 +680,6 @@ static MACHINE_CONFIG_START( csplayh5, csplayh5_state )
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_DEVICE("v9958", v9958_device, screen_update)
- MCFG_PALETTE_LENGTH(19780)
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/cswat.c b/src/mame/drivers/cswat.c
index e9e9438561f..81e7e74c368 100644
--- a/src/mame/drivers/cswat.c
+++ b/src/mame/drivers/cswat.c
@@ -273,7 +273,7 @@ static MACHINE_CONFIG_START( cswat, cswat_state )
MCFG_SCREEN_UPDATE_DRIVER(cswat_state, screen_update_cswat)
MCFG_GFXDECODE_ADD("gfxdecode", cswat)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
// TODO
diff --git a/src/mame/drivers/cubeqst.c b/src/mame/drivers/cubeqst.c
index b52764609bb..228d77e1f78 100644
--- a/src/mame/drivers/cubeqst.c
+++ b/src/mame/drivers/cubeqst.c
@@ -62,7 +62,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(cubeqst);
UINT32 screen_update_cubeqst(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank);
TIMER_CALLBACK_MEMBER(delayed_bank_swap);
@@ -95,7 +95,7 @@ void cubeqst_state::video_start()
}
/* TODO: Use resistor values */
-void cubeqst_state::palette_init()
+PALETTE_INIT_MEMBER(cubeqst_state, cubeqst)
{
int i;
diff --git a/src/mame/drivers/cultures.c b/src/mame/drivers/cultures.c
index 0e77be8025c..65726ae71d5 100644
--- a/src/mame/drivers/cultures.c
+++ b/src/mame/drivers/cultures.c
@@ -152,7 +152,7 @@ WRITE8_MEMBER(cultures_state::bg0_videoram_w)
g = ((datax >> 3) & 0x1e) | ((datax & 0x2000) ? 0x1 : 0);
b = ((datax << 1) & 0x1e) | ((datax & 0x1000) ? 0x1 : 0);
- palette_set_color_rgb(machine(), offset, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(offset, pal5bit(r), pal5bit(g), pal5bit(b));
}
else
{
@@ -414,7 +414,7 @@ static MACHINE_CONFIG_START( cultures, cultures_state )
MCFG_SCREEN_UPDATE_DRIVER(cultures_state, screen_update_cultures)
MCFG_GFXDECODE_ADD("gfxdecode", culture)
- MCFG_PALETTE_LENGTH(0x2000)
+ MCFG_PALETTE_ADD("palette", 0x2000)
/* sound hardware */
diff --git a/src/mame/drivers/cupidon.c b/src/mame/drivers/cupidon.c
index 00dcfce3a39..fc6e0e3c25b 100644
--- a/src/mame/drivers/cupidon.c
+++ b/src/mame/drivers/cupidon.c
@@ -107,7 +107,7 @@ static MACHINE_CONFIG_START( cupidon, cupidon_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(cupidon_state, screen_update_cupidon)
- MCFG_PALETTE_LENGTH(0x10000)
+ MCFG_PALETTE_ADD("palette", 0x10000)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
/* unknown sound, probably DAC driven using 68340 DMA */
diff --git a/src/mame/drivers/cv1k.c b/src/mame/drivers/cv1k.c
index 56aef065128..c8d732de29c 100644
--- a/src/mame/drivers/cv1k.c
+++ b/src/mame/drivers/cv1k.c
@@ -453,10 +453,10 @@ static MACHINE_CONFIG_START( cv1k, cv1k_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(0x200, 0x200)
MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xf0-1)
+ MCFG_SCREEN_UPDATE_DRIVER(cv1k_state, screen_update_cv1k)
- MCFG_PALETTE_LENGTH(0x10000)
- MCFG_SCREEN_UPDATE_DRIVER(cv1k_state, screen_update_cv1k)
+ MCFG_PALETTE_ADD("palette", 0x10000)
MCFG_MACHINE_RESET_OVERRIDE(cv1k_state, cv1k)
diff --git a/src/mame/drivers/cvs.c b/src/mame/drivers/cvs.c
index 2b87944b73a..a8d31b2fe64 100644
--- a/src/mame/drivers/cvs.c
+++ b/src/mame/drivers/cvs.c
@@ -1028,8 +1028,9 @@ static MACHINE_CONFIG_START( cvs, cvs_state )
MCFG_VIDEO_START_OVERRIDE(cvs_state,cvs)
MCFG_GFXDECODE_ADD("gfxdecode", cvs)
- MCFG_PALETTE_LENGTH((256+4)*8+8+1)
- MCFG_PALETTE_INIT_OVERRIDE(cvs_state,cvs)
+
+ MCFG_PALETTE_ADD("palette", (256+4)*8+8+1)
+ MCFG_PALETTE_INIT_OWNER(cvs_state,cvs)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_SIZE(32*8, 32*8)
diff --git a/src/mame/drivers/cyberbal.c b/src/mame/drivers/cyberbal.c
index 2750047f544..56fdf254a71 100644
--- a/src/mame/drivers/cyberbal.c
+++ b/src/mame/drivers/cyberbal.c
@@ -411,7 +411,7 @@ static MACHINE_CONFIG_START( cyberbal, cyberbal_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", interleaved)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
MCFG_TILEMAP_ADD_STANDARD("playfield", 2, cyberbal_state, get_playfield_tile_info, 16,8, SCAN_ROWS, 64,64)
MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha", 2, cyberbal_state, get_alpha_tile_info, 16,8, SCAN_ROWS, 64,32, 0)
@@ -475,7 +475,7 @@ static MACHINE_CONFIG_START( cyberbal2p, cyberbal_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", cyberbal)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_TILEMAP_ADD_STANDARD("playfield", 2, cyberbal_state, get_playfield_tile_info, 16,8, SCAN_ROWS, 64,64)
MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha", 2, cyberbal_state, get_alpha_tile_info, 16,8, SCAN_ROWS, 64,32, 0)
diff --git a/src/mame/drivers/cybertnk.c b/src/mame/drivers/cybertnk.c
index a6bcd433a70..62237f7e4de 100644
--- a/src/mame/drivers/cybertnk.c
+++ b/src/mame/drivers/cybertnk.c
@@ -312,7 +312,7 @@ static void draw_road(screen_device &screen, bitmap_ind16 &bitmap, const rectang
// seems to be priority related, cases seen are 0xc0 and 0x00 (once the palette bits are masked out)
if ((param2&0x80) == pri)
{
- gfx->transpen(bitmap,cliprect,param1,col,0,0,-param3+screen_shift,i/4,0);
+ gfx->transpen(state->m_palette,bitmap,cliprect,param1,col,0,0,-param3+screen_shift,i/4,0);
}
@@ -324,7 +324,7 @@ static void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rect
{
cybertnk_state *state = screen.machine().driver_data<cybertnk_state>();
const UINT32 *sprrom = (UINT32*)screen.memregion(":spr_gfx")->base();
- const pen_t *paldata = screen.machine().pens;
+ const pen_t *paldata = state->m_palette->pens();
int miny = cliprect.min_y;
int maxy = cliprect.max_y;
@@ -489,7 +489,7 @@ static UINT32 update_screen(screen_device &screen, bitmap_ind16 &bitmap, const r
- bitmap.fill(get_black_pen(screen.machine()), cliprect);
+ bitmap.fill(state->m_palette->black_pen(), cliprect);
draw_road(screen,bitmap,cliprect,screen_shift, 0x00);
@@ -609,7 +609,7 @@ static ADDRESS_MAP_START( master_mem, AS_PROGRAM, 16, cybertnk_state )
AM_RANGE(0x0c4000, 0x0c5fff) AM_RAM_WRITE(tilemap1_vram_w) AM_SHARE("tilemap1_vram")
AM_RANGE(0x0c8000, 0x0c9fff) AM_RAM_WRITE(tilemap2_vram_w) AM_SHARE("tilemap2_vram")
AM_RANGE(0x0e0000, 0x0e0fff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0x100000, 0x107fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram") /* 2x palettes, one for each screen */
+ AM_RANGE(0x100000, 0x107fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* 2x palettes, one for each screen */
AM_RANGE(0x110000, 0x110001) AM_WRITE8(cybertnk_sound_cmd_w,0xffff)
AM_RANGE(0x110002, 0x110003) AM_READ_PORT("DSW1") AM_WRITENOP// watchdog?
@@ -861,8 +861,8 @@ static MACHINE_CONFIG_START( cybertnk, cybertnk_state )
MCFG_SCREEN_UPDATE_DRIVER(cybertnk_state, screen_update_cybertnk_right)
MCFG_GFXDECODE_ADD("gfxdecode", cybertnk)
- MCFG_PALETTE_LENGTH(0x4000)
-
+ MCFG_PALETTE_ADD("palette", 0x4000)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/cyclemb.c b/src/mame/drivers/cyclemb.c
index 0dc2baf33a7..08d6c13ca53 100644
--- a/src/mame/drivers/cyclemb.c
+++ b/src/mame/drivers/cyclemb.c
@@ -122,7 +122,7 @@ public:
DECLARE_DRIVER_INIT(cyclemb);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(cyclemb);
UINT32 screen_update_cyclemb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_skydest(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void cyclemb_draw_tilemap(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@@ -134,7 +134,7 @@ public:
-void cyclemb_state::palette_init()
+PALETTE_INIT_MEMBER(cyclemb_state, cyclemb)
{
const UINT8 *color_prom = memregion("proms")->base();
int i,r,g,b,val;
@@ -157,7 +157,7 @@ void cyclemb_state::palette_init()
bit2 = (val >> 2) & 0x01;
r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -188,15 +188,15 @@ void cyclemb_state::cyclemb_draw_tilemap(screen_device &screen, bitmap_ind16 &bi
if(flip_screen())
{
- gfx->opaque(bitmap,cliprect,tile,color,1,1,512-(x*8)-scrollx,256-(y*8));
+ gfx->opaque(m_palette,bitmap,cliprect,tile,color,1,1,512-(x*8)-scrollx,256-(y*8));
/* wrap-around */
- gfx->opaque(bitmap,cliprect,tile,color,1,1,512-(x*8)-scrollx+512,256-(y*8));
+ gfx->opaque(m_palette,bitmap,cliprect,tile,color,1,1,512-(x*8)-scrollx+512,256-(y*8));
}
else
{
- gfx->opaque(bitmap,cliprect,tile,color,0,0,(x*8)-scrollx,(y*8));
+ gfx->opaque(m_palette,bitmap,cliprect,tile,color,0,0,(x*8)-scrollx,(y*8));
/* wrap-around */
- gfx->opaque(bitmap,cliprect,tile,color,0,0,(x*8)-scrollx+512,(y*8));
+ gfx->opaque(m_palette,bitmap,cliprect,tile,color,0,0,(x*8)-scrollx+512,(y*8));
}
count++;
@@ -257,7 +257,7 @@ void cyclemb_state::cyclemb_draw_sprites(screen_device &screen, bitmap_ind16 &bi
fx = !fx;
fy = !fy;
}
- m_gfxdecode->gfx(region)->transpen(bitmap,cliprect,spr_offs,col,fx,fy,x,y,0);
+ m_gfxdecode->gfx(region)->transpen(m_palette,bitmap,cliprect,spr_offs,col,fx,fy,x,y,0);
}
}
@@ -295,9 +295,9 @@ void cyclemb_state::skydest_draw_tilemap(screen_device &screen, bitmap_ind16 &bi
scrolly = m_vram[(x-32)*64+1];
- gfx->opaque(bitmap,cliprect,tile,color,0,0,x*8+scrollx,((y*8)-scrolly)&0xff);
- gfx->opaque(bitmap,cliprect,tile,color,0,0,x*8+scrollx-480,((y*8)-scrolly)&0xff);
- gfx->opaque(bitmap,cliprect,tile,color,0,0,x*8+scrollx+480,((y*8)-scrolly)&0xff);
+ gfx->opaque(m_palette,bitmap,cliprect,tile,color,0,0,x*8+scrollx,((y*8)-scrolly)&0xff);
+ gfx->opaque(m_palette,bitmap,cliprect,tile,color,0,0,x*8+scrollx-480,((y*8)-scrolly)&0xff);
+ gfx->opaque(m_palette,bitmap,cliprect,tile,color,0,0,x*8+scrollx+480,((y*8)-scrolly)&0xff);
}
@@ -353,7 +353,7 @@ void cyclemb_state::skydest_draw_sprites(screen_device &screen, bitmap_ind16 &bi
fx = !fx;
fy = !fy;
}
- m_gfxdecode->gfx(region)->transpen(bitmap,cliprect,spr_offs,col,fx,fy,x,y,0);
+ m_gfxdecode->gfx(region)->transpen(m_palette,bitmap,cliprect,spr_offs,col,fx,fy,x,y,0);
}
}
@@ -917,8 +917,8 @@ static MACHINE_CONFIG_START( cyclemb, cyclemb_state )
MCFG_SCREEN_UPDATE_DRIVER(cyclemb_state, screen_update_cyclemb)
MCFG_GFXDECODE_ADD("gfxdecode", cyclemb)
- MCFG_PALETTE_LENGTH(256)
-
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(cyclemb_state, cyclemb)
/* sound hardware */
@@ -937,7 +937,7 @@ static MACHINE_CONFIG_DERIVED( skydest, cyclemb )
MCFG_SCREEN_VISIBLE_AREA(2*8, 34*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(cyclemb_state, screen_update_skydest)
-// MCFG_PALETTE_INIT_OVERRIDE(cyclemb_state,skydest)
+// MCFG_PALETTE_INIT_OWNER(cyclemb_state,skydest)
MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/d9final.c b/src/mame/drivers/d9final.c
index f411f192d6b..f8744dfbee5 100644
--- a/src/mame/drivers/d9final.c
+++ b/src/mame/drivers/d9final.c
@@ -119,8 +119,8 @@ static ADDRESS_MAP_START( d9final_map, AS_PROGRAM, 8, d9final_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xcbff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_byte_split_lo_w) AM_SHARE("paletteram")
- AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_byte_split_hi_w) AM_SHARE("paletteram2")
+ AM_RANGE(0xc800, 0xcbff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0xcc00, 0xcfff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(sc0_lovram) AM_SHARE("lo_vram")
AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(sc0_hivram) AM_SHARE("hi_vram")
AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(sc0_cram) AM_SHARE("cram")
@@ -302,9 +302,8 @@ static MACHINE_CONFIG_START( d9final, d9final_state )
MCFG_SCREEN_UPDATE_DRIVER(d9final_state, screen_update_d9final)
MCFG_GFXDECODE_ADD("gfxdecode", d9final)
- MCFG_PALETTE_LENGTH(0x400)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, all_black)
-
+ MCFG_PALETTE_ADD_INIT_BLACK("palette", 0x400)
+ MCFG_PALETTE_FORMAT(xxxxBBBBRRRRGGGG)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/dacholer.c b/src/mame/drivers/dacholer.c
index 7acfb5985f9..76201b601b0 100644
--- a/src/mame/drivers/dacholer.c
+++ b/src/mame/drivers/dacholer.c
@@ -93,7 +93,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(dacholer);
UINT32 screen_update_dacholer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(sound_irq);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
@@ -151,7 +151,7 @@ void dacholer_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
flipy = !flipy;
}
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code,
0,
flipx,flipy,
@@ -607,7 +607,7 @@ void dacholer_state::machine_reset()
}
/* guess: use the same resistor values as Crazy Climber (needs checking on the real HW) */
-void dacholer_state::palette_init()
+PALETTE_INIT_MEMBER(dacholer_state, dacholer)
{
const UINT8 *color_prom = memregion("proms")->base();
static const int resistances_rg[3] = { 1000, 470, 220 };
@@ -621,7 +621,7 @@ void dacholer_state::palette_init()
2, resistances_b, weights_b, 0, 0,
0, 0, 0, 0, 0);
- for (i = 0;i < machine().total_colors(); i++)
+ for (i = 0;i < palette.entries(); i++)
{
int bit0, bit1, bit2;
int r, g, b;
@@ -643,7 +643,7 @@ void dacholer_state::palette_init()
bit1 = (color_prom[i] >> 7) & 0x01;
b = combine_2_weights(weights_b, bit0, bit1);
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -670,7 +670,8 @@ static MACHINE_CONFIG_START( dacholer, dacholer_state )
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-1-16)
MCFG_SCREEN_UPDATE_DRIVER(dacholer_state, screen_update_dacholer)
- MCFG_PALETTE_LENGTH(32)
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(dacholer_state, dacholer)
MCFG_GFXDECODE_ADD("gfxdecode", dacholer)
diff --git a/src/mame/drivers/dambustr.c b/src/mame/drivers/dambustr.c
index f4366bc1dd8..73b6ab92c60 100644
--- a/src/mame/drivers/dambustr.c
+++ b/src/mame/drivers/dambustr.c
@@ -268,9 +268,9 @@ static MACHINE_CONFIG_START( dambustr, dambustr_state )
MCFG_SCREEN_UPDATE_DRIVER(dambustr_state, screen_update_dambustr)
MCFG_GFXDECODE_ADD("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 */
+ MCFG_PALETTE_ADD("palette", 32+2+64+8) /* 32 for the characters, 2 for the bullets, 64 for the stars, 8 for the background */
- MCFG_PALETTE_INIT_OVERRIDE(dambustr_state,dambustr)
+ MCFG_PALETTE_INIT_OWNER(dambustr_state,dambustr)
MCFG_VIDEO_START_OVERRIDE(dambustr_state,dambustr)
/* sound hardware */
diff --git a/src/mame/drivers/darius.c b/src/mame/drivers/darius.c
index 7524e706c61..f14efda4435 100644
--- a/src/mame/drivers/darius.c
+++ b/src/mame/drivers/darius.c
@@ -243,7 +243,7 @@ static ADDRESS_MAP_START( darius_map, AS_PROGRAM, 16, darius_state )
AM_RANGE(0xd20000, 0xd20003) AM_DEVWRITE("pc080sn", pc080sn_device, yscroll_word_w)
AM_RANGE(0xd40000, 0xd40003) AM_DEVWRITE("pc080sn", pc080sn_device, xscroll_word_w)
AM_RANGE(0xd50000, 0xd50003) AM_DEVWRITE("pc080sn", pc080sn_device, ctrl_word_w)
- AM_RANGE(0xd80000, 0xd80fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")/* palette */
+ AM_RANGE(0xd80000, 0xd80fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")/* palette */
AM_RANGE(0xe00100, 0xe00fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xe01000, 0xe02fff) AM_RAM AM_SHARE("share2")
AM_RANGE(0xe08000, 0xe0ffff) AM_RAM_WRITE(darius_fg_layer_w) AM_SHARE("fg_ram")
@@ -254,7 +254,7 @@ static ADDRESS_MAP_START( darius_cpub_map, AS_PROGRAM, 16, darius_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x040000, 0x04ffff) AM_RAM /* local RAM */
AM_RANGE(0xc00000, 0xc0007f) AM_WRITE(darius_ioc_w) /* only writes $c00050 (?) */
- AM_RANGE(0xd80000, 0xd80fff) AM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w)
+ AM_RANGE(0xd80000, 0xd80fff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xe00100, 0xe00fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xe01000, 0xe02fff) AM_RAM AM_SHARE("share2")
AM_RANGE(0xe08000, 0xe0ffff) AM_RAM_WRITE(darius_fg_layer_w) AM_SHARE("fg_ram")
@@ -874,7 +874,8 @@ static MACHINE_CONFIG_START( darius, darius_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", darius)
- MCFG_PALETTE_LENGTH(4096*2)
+ MCFG_PALETTE_ADD("palette", 4096*2)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_DEFAULT_LAYOUT(layout_darius)
MCFG_SCREEN_ADD("lscreen", RASTER)
@@ -901,6 +902,7 @@ static MACHINE_CONFIG_START( darius, darius_state )
MCFG_PC080SN_ADD("pc080sn", darius_pc080sn_intf)
MCFG_PC080SN_GFXDECODE("gfxdecode")
+ MCFG_PC080SN_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/darkmist.c b/src/mame/drivers/darkmist.c
index 06704f29e87..3776bdff2ea 100644
--- a/src/mame/drivers/darkmist.c
+++ b/src/mame/drivers/darkmist.c
@@ -243,7 +243,8 @@ static MACHINE_CONFIG_START( darkmist, darkmist_state )
MCFG_SCREEN_UPDATE_DRIVER(darkmist_state, screen_update_darkmist)
MCFG_GFXDECODE_ADD("gfxdecode", darkmist)
- MCFG_PALETTE_LENGTH(0x100*4)
+ MCFG_PALETTE_ADD("palette", 0x100*4)
+ MCFG_PALETTE_INIT_OWNER(darkmist_state, darkmist)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/darkseal.c b/src/mame/drivers/darkseal.c
index ce0c7753d6b..861cb7866a9 100644
--- a/src/mame/drivers/darkseal.c
+++ b/src/mame/drivers/darkseal.c
@@ -263,19 +263,22 @@ static MACHINE_CONFIG_START( darkseal, darkseal_state )
MCFG_SCREEN_UPDATE_DRIVER(darkseal_state, screen_update_darkseal)
MCFG_GFXDECODE_ADD("gfxdecode", darkseal)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
MCFG_DECO16IC_ADD("tilegen1", darkseal_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DECO16IC_ADD("tilegen2", darkseal_deco16ic_tilegen2_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 4);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
diff --git a/src/mame/drivers/dassault.c b/src/mame/drivers/dassault.c
index 40bee4df1fa..188da91ff27 100644
--- a/src/mame/drivers/dassault.c
+++ b/src/mame/drivers/dassault.c
@@ -505,7 +505,7 @@ static MACHINE_CONFIG_START( dassault, dassault_state )
MCFG_GFXDECODE_ADD("gfxdecode", dassault)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram2")
@@ -514,17 +514,21 @@ static MACHINE_CONFIG_START( dassault, dassault_state )
MCFG_DECO16IC_ADD("tilegen1", dassault_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DECO16IC_ADD("tilegen2", dassault_deco16ic_tilegen2_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen1", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 3);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen2", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 4);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
/* sound hardware */
diff --git a/src/mame/drivers/dblcrown.c b/src/mame/drivers/dblcrown.c
index fe0a428f028..b653fb9c3ba 100644
--- a/src/mame/drivers/dblcrown.c
+++ b/src/mame/drivers/dblcrown.c
@@ -90,14 +90,13 @@ public:
DECLARE_WRITE8_MEMBER(lamps_w);
TIMER_DEVICE_CALLBACK_MEMBER(dblcrown_irq_scanline);
-
+ DECLARE_PALETTE_INIT(dblcrown);
protected:
// driver_device overrides
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
};
void dblcrown_state::video_start()
@@ -124,7 +123,7 @@ UINT32 dblcrown_state::screen_update( screen_device &screen, bitmap_ind16 &bitma
UINT16 tile = ((m_vram[count])|(m_vram[count+1]<<8)) & 0xfff;
UINT8 col = (m_vram[count+1] >> 4);
- gfx_2->opaque(bitmap,cliprect,tile,col,0,0,x*16,y*16);
+ gfx_2->opaque(m_palette,bitmap,cliprect,tile,col,0,0,x*16,y*16);
count+=2;
}
@@ -139,7 +138,7 @@ UINT32 dblcrown_state::screen_update( screen_device &screen, bitmap_ind16 &bitma
UINT16 tile = ((m_vram[count])|(m_vram[count+1]<<8)) & 0xfff;
UINT8 col = (m_vram[count+1] >> 4); // ok?
- gfx->transpen(bitmap,cliprect,tile,col,0,0,x*8,y*8,0);
+ gfx->transpen(m_palette,bitmap,cliprect,tile,col,0,0,x*8,y*8,0);
count+=2;
}
@@ -194,7 +193,7 @@ WRITE8_MEMBER( dblcrown_state::palette_w)
b = ((datax)&0x0f00)>>8;
/* TODO: remaining bits */
- palette_set_color_rgb(machine(), offset, pal4bit(r), pal4bit(g), pal4bit(b));
+ m_palette->set_pen_color(offset, pal4bit(r), pal4bit(g), pal4bit(b));
}
@@ -510,7 +509,7 @@ void dblcrown_state::machine_reset()
}
-void dblcrown_state::palette_init()
+PALETTE_INIT_MEMBER(dblcrown_state, dblcrown)
{
}
@@ -575,7 +574,8 @@ static MACHINE_CONFIG_START( dblcrown, dblcrown_state )
MCFG_GFXDECODE_ADD("gfxdecode", dblcrown)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_INIT_OWNER(dblcrown_state, dblcrown)
MCFG_NVRAM_ADD_0FILL("nvram")
diff --git a/src/mame/drivers/dblewing.c b/src/mame/drivers/dblewing.c
index 2ad71bca17d..47961e8dbf8 100644
--- a/src/mame/drivers/dblewing.c
+++ b/src/mame/drivers/dblewing.c
@@ -177,7 +177,7 @@ static ADDRESS_MAP_START( dblewing_map, AS_PROGRAM, 16, dblewing_state )
AM_RANGE(0x288000, 0x288001) AM_RAM
AM_RANGE(0x28c000, 0x28c00f) AM_RAM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w)
AM_RANGE(0x300000, 0x3007ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x320000, 0x3207ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x320000, 0x3207ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xff0000, 0xff3fff) AM_MIRROR(0xc000) AM_RAM
ADDRESS_MAP_END
@@ -386,16 +386,19 @@ static MACHINE_CONFIG_START( dblewing, dblewing_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_DRIVER(dblewing_state, screen_update_dblewing)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_GFXDECODE_ADD("gfxdecode", dblewing)
MCFG_DECO16IC_ADD("tilegen1", dblewing_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 2);
decospr_device::set_pri_callback(*device, dblwings_pri_callback);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DECO104_ADD("ioprot104")
MCFG_DECO146_SET_INTERFACE_SCRAMBLE_INTERLEAVE
diff --git a/src/mame/drivers/dbz.c b/src/mame/drivers/dbz.c
index 4074b3cac92..96650cf5219 100644
--- a/src/mame/drivers/dbz.c
+++ b/src/mame/drivers/dbz.c
@@ -110,7 +110,7 @@ static ADDRESS_MAP_START( dbz_map, AS_PROGRAM, 16, dbz_state )
AM_RANGE(0x498000, 0x49ffff) AM_DEVREAD("k056832", k056832_device, rom_word_8000_r) // code near a60 in dbz2, subroutine at 730 in dbz
AM_RANGE(0x4a0000, 0x4a0fff) AM_DEVREADWRITE("k053246", k053247_device, k053247_word_r, k053247_word_w)
AM_RANGE(0x4a1000, 0x4a3fff) AM_RAM
- AM_RANGE(0x4a8000, 0x4abfff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // palette
+ AM_RANGE(0x4a8000, 0x4abfff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // palette
AM_RANGE(0x4c0000, 0x4c0001) AM_DEVREAD("k053246", k053247_device, k053246_word_r)
AM_RANGE(0x4c0000, 0x4c0007) AM_DEVWRITE("k053246", k053247_device, k053246_word_w)
AM_RANGE(0x4c4000, 0x4c4007) AM_DEVWRITE("k053246", k053247_device, k053246_word_w)
@@ -363,8 +363,6 @@ static MACHINE_CONFIG_START( dbz, dbz_state )
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(55)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
@@ -374,12 +372,16 @@ static MACHINE_CONFIG_START( dbz, dbz_state )
MCFG_GFXDECODE_ADD("gfxdecode", dbz)
- MCFG_PALETTE_LENGTH(0x4000/2)
+ MCFG_PALETTE_ADD("palette", 0x4000/2)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
+ MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_K056832_ADD("k056832", dbz_k056832_intf)
MCFG_K056832_GFXDECODE("gfxdecode")
+ MCFG_K056832_PALETTE("palette")
MCFG_K053246_ADD("k053246", dbz_k053246_intf)
MCFG_K053246_GFXDECODE("gfxdecode")
+ MCFG_K053246_PALETTE("palette")
MCFG_K053251_ADD("k053251")
MCFG_K053936_ADD("k053936_1", dbz_k053936_intf)
MCFG_K053936_ADD("k053936_2", dbz_k053936_intf)
diff --git a/src/mame/drivers/dcheese.c b/src/mame/drivers/dcheese.c
index 7e5c6f6d7b7..64a61c56779 100644
--- a/src/mame/drivers/dcheese.c
+++ b/src/mame/drivers/dcheese.c
@@ -417,8 +417,8 @@ static MACHINE_CONFIG_START( dcheese, dcheese_state )
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_DRIVER(dcheese_state, screen_update_dcheese)
- MCFG_PALETTE_LENGTH(65534)
-
+ MCFG_PALETTE_ADD("palette", 65534)
+ MCFG_PALETTE_INIT_OWNER(dcheese_state, dcheese)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/dcon.c b/src/mame/drivers/dcon.c
index f3911fa5a19..e0399f9f80c 100644
--- a/src/mame/drivers/dcon.c
+++ b/src/mame/drivers/dcon.c
@@ -30,7 +30,7 @@ static ADDRESS_MAP_START( dcon_map, AS_PROGRAM, 16, dcon_state )
AM_RANGE(0x8c800, 0x8cfff) AM_RAM_WRITE(dcon_foreground_w) AM_SHARE("fore_data")
AM_RANGE(0x8d000, 0x8d7ff) AM_RAM_WRITE(dcon_midground_w) AM_SHARE("mid_data")
AM_RANGE(0x8d800, 0x8e7ff) AM_RAM_WRITE(dcon_text_w) AM_SHARE("textram")
- AM_RANGE(0x8e800, 0x8f7ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x8e800, 0x8f7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x8f800, 0x8ffff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x9d000, 0x9d7ff) AM_WRITE(dcon_gfxbank_w)
@@ -284,7 +284,8 @@ static MACHINE_CONFIG_START( dcon, dcon_state )
MCFG_SEIBU_CRTC_ADD("crtc",crtc_intf,0)
MCFG_GFXDECODE_ADD("gfxdecode", dcon)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
SEIBU_SOUND_SYSTEM_YM3812_INTERFACE(4000000,1320000)
@@ -310,7 +311,8 @@ static MACHINE_CONFIG_START( sdgndmps, dcon_state )
MCFG_SEIBU_CRTC_ADD("crtc",crtc_intf,0)
MCFG_GFXDECODE_ADD("gfxdecode", dcon)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
SEIBU_SOUND_SYSTEM_YM2151_INTERFACE(14318180/4,1320000)
diff --git a/src/mame/drivers/dday.c b/src/mame/drivers/dday.c
index c3c743dc86a..2ee0717cc74 100644
--- a/src/mame/drivers/dday.c
+++ b/src/mame/drivers/dday.c
@@ -268,9 +268,9 @@ static MACHINE_CONFIG_START( dday, dday_state )
MCFG_SCREEN_UPDATE_DRIVER(dday_state, screen_update_dday)
MCFG_GFXDECODE_ADD("gfxdecode", dday)
- MCFG_PALETTE_LENGTH(256)
-
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_INIT_OWNER(dday_state, dday)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/ddayjlc.c b/src/mame/drivers/ddayjlc.c
index bc812dbfc8f..d3bfa2d2f3b 100644
--- a/src/mame/drivers/ddayjlc.c
+++ b/src/mame/drivers/ddayjlc.c
@@ -107,7 +107,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(ddayjlc);
UINT32 screen_update_ddayjlc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(ddayjlc_interrupt);
INTERRUPT_GEN_MEMBER(ddayjlc_snd_interrupt);
@@ -408,7 +408,7 @@ UINT32 ddayjlc_state::screen_update_ddayjlc(screen_device &screen, bitmap_ind16
code = (code & 0x7f) | ((flags & 0x30) << 3);
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, code, color, xflip, yflip, x, y, 0);
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect, code, color, xflip, yflip, x, y, 0);
}
{
@@ -419,9 +419,9 @@ UINT32 ddayjlc_state::screen_update_ddayjlc(screen_device &screen, bitmap_ind16
{
c = m_videoram[y * 32 + x];
if (x > 1 && x < 30)
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, c + m_char_bank * 0x100, 2, 0, 0, x*8, y*8, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, c + m_char_bank * 0x100, 2, 0, 0, x*8, y*8, 0);
else
- m_gfxdecode->gfx(1)->opaque(bitmap,cliprect, c + m_char_bank * 0x100, 2, 0, 0, x*8, y*8);
+ m_gfxdecode->gfx(1)->opaque(m_palette,bitmap,cliprect, c + m_char_bank * 0x100, 2, 0, 0, x*8, y*8);
}
}
return 0;
@@ -483,7 +483,7 @@ void ddayjlc_state::machine_reset()
}
}
-void ddayjlc_state::palette_init()
+PALETTE_INIT_MEMBER(ddayjlc_state, ddayjlc)
{
const UINT8 *color_prom = memregion("proms")->base();
int i,r,g,b,val;
@@ -506,7 +506,7 @@ void ddayjlc_state::palette_init()
bit2 = (val >> 2) & 0x01;
r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -533,8 +533,8 @@ static MACHINE_CONFIG_START( ddayjlc, ddayjlc_state )
MCFG_SCREEN_UPDATE_DRIVER(ddayjlc_state, screen_update_ddayjlc)
MCFG_GFXDECODE_ADD("gfxdecode", ddayjlc)
- MCFG_PALETTE_LENGTH(0x200)
-
+ MCFG_PALETTE_ADD("palette", 0x200)
+ MCFG_PALETTE_INIT_OWNER(ddayjlc_state, ddayjlc)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/ddealer.c b/src/mame/drivers/ddealer.c
index cfd0f9689d5..942724077a2 100644
--- a/src/mame/drivers/ddealer.c
+++ b/src/mame/drivers/ddealer.c
@@ -224,7 +224,7 @@ void ddealer_state::ddealer_draw_video_layer( UINT16* vreg_base, UINT16* top, UI
UINT16 tile = (src[count] & 0x0fff);
UINT16 colr = (src[count] & 0xf000) >> 12;
count++;
- gfx->transpen(bitmap,cliprect, tile, colr, 0, flipy, (x * 16) - sx, (y * 16) - sy, 15);
+ gfx->transpen(m_palette,bitmap,cliprect, tile, colr, 0, flipy, (x * 16) - sx, (y * 16) - sy, 15);
}
}
count = 0;
@@ -237,7 +237,7 @@ void ddealer_state::ddealer_draw_video_layer( UINT16* vreg_base, UINT16* top, UI
UINT16 tile = (src[count] & 0x0fff);
UINT16 colr = (src[count] & 0xf000) >> 12;
count++;
- gfx->transpen(bitmap,cliprect, tile, colr, 0, flipy, (x * 16) - sx, (y * 16) - sy, 15);
+ gfx->transpen(m_palette,bitmap,cliprect, tile, colr, 0, flipy, (x * 16) - sx, (y * 16) - sy, 15);
}
}
}
@@ -256,7 +256,7 @@ void ddealer_state::ddealer_draw_video_layer( UINT16* vreg_base, UINT16* top, UI
UINT16 tile = (src[count] & 0x0fff);
UINT16 colr = (src[count] & 0xf000) >> 12;
count++;
- gfx->transpen(bitmap,cliprect, tile, colr, flipy, flipy, (x * 16) + sx, (y * 16) + sy, 15);
+ gfx->transpen(m_palette,bitmap,cliprect, tile, colr, flipy, flipy, (x * 16) + sx, (y * 16) + sy, 15);
}
}
count = 0;
@@ -269,7 +269,7 @@ void ddealer_state::ddealer_draw_video_layer( UINT16* vreg_base, UINT16* top, UI
UINT16 tile = (src[count] & 0x0fff);
UINT16 colr = (src[count] & 0xf000) >> 12;
count++;
- gfx->transpen(bitmap,cliprect, tile, colr, flipy, flipy, (x * 16) + sx, (y * 16) + sy, 15);
+ gfx->transpen(m_palette,bitmap,cliprect, tile, colr, flipy, flipy, (x * 16) + sx, (y * 16) + sy, 15);
}
}
}
@@ -479,7 +479,7 @@ static ADDRESS_MAP_START( ddealer, AS_PROGRAM, 16, ddealer_state )
AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSW1")
AM_RANGE(0x08000a, 0x08000b) AM_READ_PORT("UNK")
AM_RANGE(0x084000, 0x084003) AM_DEVWRITE8("ymsnd", ym2203_device, write, 0x00ff) // ym ?
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram") // palette ram
+ AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // palette ram
AM_RANGE(0x08c000, 0x08cfff) AM_RAM_WRITE(ddealer_vregs_w) AM_SHARE("vregs") // palette ram
/* this might actually be 1 tilemap with some funky rowscroll / columnscroll enabled, I'm not sure */
@@ -638,8 +638,8 @@ static MACHINE_CONFIG_START( ddealer, ddealer_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(ddealer_state, screen_update_ddealer)
- MCFG_PALETTE_LENGTH(0x400)
-
+ MCFG_PALETTE_ADD("palette", 0x400)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_TIMER_DRIVER_ADD_PERIODIC("coinsim", ddealer_state, ddealer_mcu_sim, attotime::from_hz(10000))
diff --git a/src/mame/drivers/ddenlovr.c b/src/mame/drivers/ddenlovr.c
index 073454f2035..0843ed9c97a 100644
--- a/src/mame/drivers/ddenlovr.c
+++ b/src/mame/drivers/ddenlovr.c
@@ -1654,7 +1654,7 @@ WRITE8_MEMBER(ddenlovr_state::rongrong_palette_w)
/* what were they smoking??? */
b = ((d1 & 0xe0) >> 5) | (d2 & 0xc0) >> 3;
- palette_set_color_rgb(machine(), indx, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(indx, pal5bit(r), pal5bit(g), pal5bit(b));
}
WRITE16_MEMBER(ddenlovr_state::ddenlovr_palette_w)
@@ -2711,7 +2711,7 @@ WRITE8_MEMBER(ddenlovr_state::hanakanz_palette_w)
int g = m_ddenlovr_blit_latch & 0x1f;
int r = data & 0x1f;
int b = ((data & 0xe0) >> 5) | ((m_ddenlovr_blit_latch & 0x60) >> 2);
- palette_set_color_rgb(machine(), (m_palette_index++) & 0x1ff, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color((m_palette_index++) & 0x1ff, pal5bit(r), pal5bit(g), pal5bit(b));
}
}
@@ -2919,7 +2919,7 @@ WRITE8_MEMBER(ddenlovr_state::mjchuuka_palette_w)
int r = (rgb >> 0) & 0x1f;
int g = (rgb >> 8) & 0x1f;
int b = ((rgb >> 5) & 0x07) | ((rgb & 0x6000) >> 10);
- palette_set_color_rgb(machine(), (m_palette_index++) & 0x1ff, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color((m_palette_index++) & 0x1ff, pal5bit(r), pal5bit(g), pal5bit(b));
}
}
@@ -4226,7 +4226,7 @@ static MACHINE_CONFIG_START( htengoku, ddenlovr_state )
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 0+8, 256-1-8)
MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_htengoku)
- MCFG_PALETTE_LENGTH(16*256)
+ MCFG_PALETTE_ADD("palette", 16*256)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,htengoku)
@@ -9443,7 +9443,7 @@ static MACHINE_CONFIG_START( ddenlovr, ddenlovr_state )
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-16+5-1)
MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,ddenlovr)
@@ -9574,7 +9574,7 @@ static MACHINE_CONFIG_START( quizchq, ddenlovr_state )
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-16+5-1)
MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,ddenlovr)
@@ -9661,7 +9661,7 @@ static MACHINE_CONFIG_START( mmpanic, ddenlovr_state )
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-16+5-1)
MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,mmpanic) // extra layers
@@ -9741,7 +9741,7 @@ static MACHINE_CONFIG_START( hanakanz, ddenlovr_state )
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-11-1)
MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,hanakanz) // blitter commands in the roms are shuffled around
@@ -9785,7 +9785,7 @@ static MACHINE_CONFIG_START( kotbinyo, ddenlovr_state )
MCFG_SCREEN_VISIBLE_AREA(0, 336-1-1, 1+4, 256-15-1+4)
MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,hanakanz) // blitter commands in the roms are shuffled around
@@ -10186,7 +10186,7 @@ static MACHINE_CONFIG_START( jongtei, ddenlovr_state )
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-11-1)
MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,hanakanz) // blitter commands in the roms are shuffled around
@@ -10227,7 +10227,7 @@ static MACHINE_CONFIG_START( sryudens, ddenlovr_state )
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 0+5, 256-12-1)
MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,mjflove) // blitter commands in the roms are shuffled around
@@ -10272,7 +10272,7 @@ static MACHINE_CONFIG_START( janshinp, ddenlovr_state )
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 0+5, 256-12-1)
MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,ddenlovr)
@@ -10346,7 +10346,7 @@ static MACHINE_CONFIG_START( seljan2, ddenlovr_state )
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 0+5, 256-12-1)
MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,mjflove) // blitter commands in the roms are shuffled around
@@ -10393,7 +10393,7 @@ static MACHINE_CONFIG_START( daimyojn, ddenlovr_state )
MCFG_SCREEN_VISIBLE_AREA(0, 336-1-1, 1, 256-15-1)
MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,hanakanz) // blitter commands in the roms are shuffled around
diff --git a/src/mame/drivers/ddragon.c b/src/mame/drivers/ddragon.c
index 58ffdb527f2..487e4d318a5 100644
--- a/src/mame/drivers/ddragon.c
+++ b/src/mame/drivers/ddragon.c
@@ -495,8 +495,8 @@ READ8_MEMBER(ddragon_state::dd_adpcm_status_r)
static ADDRESS_MAP_START( ddragon_map, AS_PROGRAM, 8, ddragon_state )
AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("rambase")
- AM_RANGE(0x1000, 0x11ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_lo_w) AM_SHARE("paletteram")
- AM_RANGE(0x1200, 0x13ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_hi_w) AM_SHARE("paletteram2")
+ AM_RANGE(0x1000, 0x11ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0x1200, 0x13ff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(ddragon_fgvideoram_w) AM_SHARE("fgvideoram")
AM_RANGE(0x2000, 0x21ff) AM_READWRITE(ddragon_comram_r, ddragon_comram_w) AM_SHARE("comram") AM_MIRROR(0x0600)
AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram")
@@ -530,8 +530,8 @@ static ADDRESS_MAP_START( dd2_map, AS_PROGRAM, 8, ddragon_state )
AM_RANGE(0x3809, 0x3809) AM_WRITEONLY AM_SHARE("scrollx_lo")
AM_RANGE(0x380a, 0x380a) AM_WRITEONLY AM_SHARE("scrolly_lo")
AM_RANGE(0x380b, 0x380f) AM_READWRITE(ddragon_interrupt_r, ddragon_interrupt_w)
- AM_RANGE(0x3c00, 0x3dff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_lo_w) AM_SHARE("paletteram")
- AM_RANGE(0x3e00, 0x3fff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_hi_w) AM_SHARE("paletteram2")
+ AM_RANGE(0x3c00, 0x3dff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0x3e00, 0x3fff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -983,7 +983,8 @@ static MACHINE_CONFIG_START( ddragon, ddragon_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", ddragon)
- MCFG_PALETTE_LENGTH(384)
+ MCFG_PALETTE_ADD("palette", 384)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 0, 240)
@@ -1046,7 +1047,8 @@ static MACHINE_CONFIG_START( ddragon6809, ddragon_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", ddragon)
- MCFG_PALETTE_LENGTH(384)
+ MCFG_PALETTE_ADD("palette", 384)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 0, 240)
@@ -1092,7 +1094,8 @@ static MACHINE_CONFIG_START( ddragon2, ddragon_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", ddragon)
- MCFG_PALETTE_LENGTH(384)
+ MCFG_PALETTE_ADD("palette", 384)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 0, 240)
diff --git a/src/mame/drivers/ddragon3.c b/src/mame/drivers/ddragon3.c
index b4c75d7d2bf..ff586357dc1 100644
--- a/src/mame/drivers/ddragon3.c
+++ b/src/mame/drivers/ddragon3.c
@@ -271,7 +271,7 @@ READ16_MEMBER(wwfwfest_state::wwfwfest_paletteram16_xxxxBBBBGGGGRRRR_word_r)
WRITE16_MEMBER(wwfwfest_state::wwfwfest_paletteram16_xxxxBBBBGGGGRRRR_word_w)
{
offset = (offset & 0x000f) | (offset & 0x7fc0) >> 2;
- paletteram_xxxxBBBBGGGGRRRR_word_w (space, offset, data, mem_mask);
+ m_palette->write(space, offset, data, mem_mask);
}
/*- Priority Control -*/
@@ -316,7 +316,7 @@ static ADDRESS_MAP_START( ddragon3_map, AS_PROGRAM, 16, ddragon3_state )
AM_RANGE(0x100004, 0x100005) AM_READ_PORT("DSW")
AM_RANGE(0x100006, 0x100007) AM_READ_PORT("P3")
AM_RANGE(0x100000, 0x10000f) AM_WRITE(ddragon3_io_w)
- AM_RANGE(0x140000, 0x1405ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram") /* Palette RAM */
+ AM_RANGE(0x140000, 0x1405ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* Palette RAM */
AM_RANGE(0x180000, 0x180fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM /* working RAM */
ADDRESS_MAP_END
@@ -327,7 +327,7 @@ static ADDRESS_MAP_START( dd3b_map, AS_PROGRAM, 16, ddragon3_state )
AM_RANGE(0x081000, 0x081fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x082000, 0x0827ff) AM_RAM_WRITE(ddragon3_bg_videoram_w) AM_SHARE("bg_videoram") /* Background (32x32 Tiles - 2 by per tile) */
AM_RANGE(0x0c0000, 0x0c000f) AM_WRITE(ddragon3_scroll_w)
- AM_RANGE(0x100000, 0x1005ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram") /* Palette RAM */
+ AM_RANGE(0x100000, 0x1005ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* Palette RAM */
AM_RANGE(0x140000, 0x14000f) AM_WRITE(ddragon3_io_w)
AM_RANGE(0x180000, 0x180001) AM_READ_PORT("IN0")
AM_RANGE(0x180002, 0x180003) AM_READ_PORT("IN1")
@@ -343,7 +343,7 @@ static ADDRESS_MAP_START( ctribe_map, AS_PROGRAM, 16, ddragon3_state )
AM_RANGE(0x082000, 0x0827ff) AM_RAM_WRITE(ddragon3_bg_videoram_w) AM_SHARE("bg_videoram") /* Background (32x32 Tiles - 2 by per tile) */
AM_RANGE(0x082800, 0x082fff) AM_RAM
AM_RANGE(0x0c0000, 0x0c000f) AM_READWRITE(ddragon3_scroll_r, ddragon3_scroll_w)
- AM_RANGE(0x100000, 0x1005ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram") /* Palette RAM */
+ AM_RANGE(0x100000, 0x1005ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* Palette RAM */
AM_RANGE(0x140000, 0x14000f) AM_WRITE(ddragon3_io_w)
AM_RANGE(0x180000, 0x180001) AM_READ_PORT("IN0")
AM_RANGE(0x180002, 0x180003) AM_READ_PORT("IN1")
@@ -841,7 +841,8 @@ static MACHINE_CONFIG_START( ddragon3, ddragon3_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", ddragon3)
- MCFG_PALETTE_LENGTH(768)
+ MCFG_PALETTE_ADD("palette", 768)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
@@ -872,6 +873,9 @@ static MACHINE_CONFIG_DERIVED( ctribe, ddragon3 )
MCFG_CPU_MODIFY("audiocpu")
MCFG_CPU_PROGRAM_MAP(ctribe_sound_map)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
+
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(ddragon3_state, screen_update_ctribe)
@@ -906,7 +910,8 @@ static MACHINE_CONFIG_START( wwfwfest, wwfwfest_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", wwfwfest)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/ddribble.c b/src/mame/drivers/ddribble.c
index 1dfe29d47b6..28291ef7ef9 100644
--- a/src/mame/drivers/ddribble.c
+++ b/src/mame/drivers/ddribble.c
@@ -286,8 +286,8 @@ static MACHINE_CONFIG_START( ddribble, ddribble_state )
MCFG_SCREEN_UPDATE_DRIVER(ddribble_state, screen_update_ddribble)
MCFG_GFXDECODE_ADD("gfxdecode", ddribble)
- MCFG_PALETTE_LENGTH(64 + 256)
-
+ MCFG_PALETTE_ADD("palette", 64 + 256)
+ MCFG_PALETTE_INIT_OWNER(ddribble_state, ddribble)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/ddz.c b/src/mame/drivers/ddz.c
index 173beb29bd9..cdce25f2427 100644
--- a/src/mame/drivers/ddz.c
+++ b/src/mame/drivers/ddz.c
@@ -82,7 +82,7 @@ static MACHINE_CONFIG_START( ddz, ddz_state )
MCFG_SCREEN_UPDATE_DRIVER(ddz_state, screen_update_ddz)
MCFG_SCREEN_VBLANK_DRIVER(ddz_state, screen_eof_ddz)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/deadang.c b/src/mame/drivers/deadang.c
index 9c69e7c40bc..8190f7e861a 100644
--- a/src/mame/drivers/deadang.c
+++ b/src/mame/drivers/deadang.c
@@ -67,7 +67,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, deadang_state )
AM_RANGE(0x08800, 0x0bfff) AM_WRITEONLY
AM_RANGE(0x0a000, 0x0a001) AM_READ_PORT("P1_P2")
AM_RANGE(0x0a002, 0x0a003) AM_READ_PORT("DSW")
- AM_RANGE(0x0c000, 0x0cfff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0c000, 0x0cfff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0d000, 0x0dfff) AM_WRITEONLY
AM_RANGE(0x0e000, 0x0e0ff) AM_WRITEONLY AM_SHARE("scroll_ram")
AM_RANGE(0x0e100, 0x0ffff) AM_WRITEONLY
@@ -254,7 +254,8 @@ static MACHINE_CONFIG_START( deadang, deadang_state )
MCFG_SCREEN_UPDATE_DRIVER(deadang_state, screen_update_deadang)
MCFG_GFXDECODE_ADD("gfxdecode", deadang)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
/* sound hardware */
diff --git a/src/mame/drivers/dec0.c b/src/mame/drivers/dec0.c
index 66525925def..f22e519b53a 100644
--- a/src/mame/drivers/dec0.c
+++ b/src/mame/drivers/dec0.c
@@ -500,7 +500,7 @@ static ADDRESS_MAP_START( slyspy_map, AS_PROGRAM, 16, dec0_state )
AM_RANGE(0x304000, 0x307fff) AM_RAM AM_SHARE("ram") /* Sly spy main ram */
AM_RANGE(0x308000, 0x3087ff) AM_RAM AM_SHARE("spriteram") /* Sprites */
- AM_RANGE(0x310000, 0x3107ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x310000, 0x3107ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x314000, 0x314003) AM_WRITE(slyspy_control_w)
AM_RANGE(0x314008, 0x31400f) AM_READ(slyspy_controls_r)
AM_RANGE(0x31c000, 0x31c00f) AM_READ(slyspy_protection_r) AM_WRITENOP
@@ -511,7 +511,7 @@ static ADDRESS_MAP_START( midres_map, AS_PROGRAM, 16, dec0_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("ram")
AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x140000, 0x1407ff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x140000, 0x1407ff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x160000, 0x160001) AM_WRITE(dec0_priority_w)
AM_RANGE(0x180000, 0x18000f) AM_READ(midres_controls_r)
AM_RANGE(0x180008, 0x18000f) AM_WRITENOP /* ?? watchdog ?? */
@@ -587,7 +587,7 @@ READ16_MEMBER( dec0_automat_state::automat_palette_r )
WRITE16_MEMBER( dec0_automat_state::automat_palette_w )
{
offset ^=0xf;
- paletteram_xxxxBBBBGGGGRRRR_word_w(space, offset, data, mem_mask);
+ m_palette->write(space, offset, data, mem_mask);
}
@@ -1308,7 +1308,8 @@ WRITE_LINE_MEMBER(dec0_state::sound_irq2)
static MACHINE_CONFIG_START( dec0_base, dec0_state )
MCFG_GFXDECODE_ADD("gfxdecode", dec0)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device,0,0,0);
@@ -1323,6 +1324,7 @@ static MACHINE_CONFIG_START( dec0_base, dec0_state )
MCFG_DEVICE_ADD("spritegen", DECO_MXC06, 0)
deco_mxc06_device::set_gfx_region(*device, 3);
MCFG_DECO_MXC06_GFXDECODE("gfxdecode")
+ MCFG_DECO_MXC06_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(dec0_state,dec0)
MACHINE_CONFIG_END
@@ -1428,8 +1430,9 @@ static MACHINE_CONFIG_START( automat, dec0_automat_state )
MCFG_DEVICE_ADD("spritegen", DECO_MXC06, 0)
deco_mxc06_device::set_gfx_region(*device, 3);
MCFG_DECO_MXC06_GFXDECODE("gfxdecode")
+ MCFG_DECO_MXC06_PALETTE("palette")
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
MCFG_GFXDECODE_ADD("gfxdecode", automat)
/* sound hardware */
@@ -1484,8 +1487,10 @@ static MACHINE_CONFIG_START( secretab, dec0_automat_state )
MCFG_DEVICE_ADD("spritegen", DECO_MXC06, 0)
deco_mxc06_device::set_gfx_region(*device, 3);
MCFG_DECO_MXC06_GFXDECODE("gfxdecode")
+ MCFG_DECO_MXC06_PALETTE("palette")
+
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
MCFG_GFXDECODE_ADD("gfxdecode", secretab)
/* sound hardware */
diff --git a/src/mame/drivers/dec8.c b/src/mame/drivers/dec8.c
index 0ffa85a3f82..5a80f04af14 100644
--- a/src/mame/drivers/dec8.c
+++ b/src/mame/drivers/dec8.c
@@ -561,8 +561,8 @@ WRITE8_MEMBER(dec8_state::flip_screen_w){ flip_screen_set(data); }
static ADDRESS_MAP_START( lastmisn_map, AS_PROGRAM, 8, dec8_state )
AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_lo_w) AM_SHARE("paletteram")
- AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_hi_w) AM_SHARE("paletteram2")
+ AM_RANGE(0x1000, 0x13ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0x1400, 0x17ff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0x1800, 0x1800) AM_READ_PORT("IN0")
AM_RANGE(0x1801, 0x1801) AM_READ_PORT("IN1")
AM_RANGE(0x1802, 0x1802) AM_READ_PORT("IN2")
@@ -587,8 +587,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( lastmisn_sub_map, AS_PROGRAM, 8, dec8_state )
AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_lo_w) AM_SHARE("paletteram")
- AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_hi_w) AM_SHARE("paletteram2")
+ AM_RANGE(0x1000, 0x13ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0x1400, 0x17ff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0x1800, 0x1800) AM_READ_PORT("IN0")
AM_RANGE(0x1801, 0x1801) AM_READ_PORT("IN1")
AM_RANGE(0x1802, 0x1802) AM_READ_PORT("IN2")
@@ -607,8 +607,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( shackled_map, AS_PROGRAM, 8, dec8_state )
AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_lo_w) AM_SHARE("paletteram")
- AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_hi_w) AM_SHARE("paletteram2")
+ AM_RANGE(0x1000, 0x13ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0x1400, 0x17ff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0x1800, 0x1800) AM_READ_PORT("IN0")
AM_RANGE(0x1801, 0x1801) AM_READ_PORT("IN1")
AM_RANGE(0x1802, 0x1802) AM_READ_PORT("IN2")
@@ -631,8 +631,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( shackled_sub_map, AS_PROGRAM, 8, dec8_state )
AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_lo_w) AM_SHARE("paletteram")
- AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_hi_w) AM_SHARE("paletteram2")
+ AM_RANGE(0x1000, 0x13ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0x1400, 0x17ff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0x1800, 0x1800) AM_READ_PORT("IN0")
AM_RANGE(0x1801, 0x1801) AM_READ_PORT("IN1")
AM_RANGE(0x1802, 0x1802) AM_READ_PORT("IN2")
@@ -658,8 +658,8 @@ static ADDRESS_MAP_START( gondo_map, AS_PROGRAM, 8, dec8_state )
AM_RANGE(0x0000, 0x17ff) AM_RAM
AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_SHARE("videoram")
AM_RANGE(0x2000, 0x27ff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_SHARE("bg_data")
- AM_RANGE(0x2800, 0x2bff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_lo_w) AM_SHARE("paletteram")
- AM_RANGE(0x2c00, 0x2fff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_hi_w) AM_SHARE("paletteram2")
+ AM_RANGE(0x2800, 0x2bff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0x2c00, 0x2fff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram") /* Sprites */
AM_RANGE(0x3800, 0x3800) AM_READ_PORT("DSW0") /* Dip 1 */
AM_RANGE(0x3801, 0x3801) AM_READ_PORT("DSW1") /* Dip 2 */
@@ -681,8 +681,8 @@ static ADDRESS_MAP_START( garyoret_map, AS_PROGRAM, 8, dec8_state )
AM_RANGE(0x0000, 0x17ff) AM_RAM
AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_SHARE("videoram")
AM_RANGE(0x2000, 0x27ff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_SHARE("bg_data")
- AM_RANGE(0x2800, 0x2bff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_lo_w) AM_SHARE("paletteram")
- AM_RANGE(0x2c00, 0x2fff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_hi_w) AM_SHARE("paletteram2")
+ AM_RANGE(0x2800, 0x2bff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0x2c00, 0x2fff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram") /* Sprites */
AM_RANGE(0x3800, 0x3800) AM_READ_PORT("DSW0") /* Dip 1 */
AM_RANGE(0x3801, 0x3801) AM_READ_PORT("DSW1") /* Dip 2 */
@@ -725,8 +725,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( csilver_map, AS_PROGRAM, 8, dec8_state )
AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_lo_w) AM_SHARE("paletteram")
- AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_hi_w) AM_SHARE("paletteram2")
+ AM_RANGE(0x1000, 0x13ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0x1400, 0x17ff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0x1800, 0x1800) AM_READ_PORT("IN1")
AM_RANGE(0x1801, 0x1801) AM_READ_PORT("IN0")
AM_RANGE(0x1803, 0x1803) AM_READ_PORT("IN2")
@@ -750,8 +750,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( csilver_sub_map, AS_PROGRAM, 8, dec8_state )
AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_lo_w) AM_SHARE("paletteram")
- AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_hi_w) AM_SHARE("paletteram2")
+ AM_RANGE(0x1000, 0x13ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0x1400, 0x17ff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0x1803, 0x1803) AM_READ_PORT("IN2")
AM_RANGE(0x1804, 0x1804) AM_READ_PORT("DSW1")
AM_RANGE(0x1800, 0x1804) AM_WRITE(shackled_int_w)
@@ -771,7 +771,7 @@ static ADDRESS_MAP_START( oscar_map, AS_PROGRAM, 8, dec8_state )
AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_SHARE("videoram")
AM_RANGE(0x2800, 0x2fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_8bit_r, pf_data_8bit_w)
AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram") /* Sprites */
- AM_RANGE(0x3800, 0x3bff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0x3800, 0x3bff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x3c00, 0x3c00) AM_READ_PORT("IN0")
AM_RANGE(0x3c01, 0x3c01) AM_READ_PORT("IN1")
AM_RANGE(0x3c02, 0x3c02) AM_READ_PORT("IN2") /* VBL & coins */
@@ -809,8 +809,8 @@ static ADDRESS_MAP_START( srdarwin_map, AS_PROGRAM, 8, dec8_state )
AM_RANGE(0x1805, 0x1806) AM_WRITE(srdarwin_control_w) /* Scroll & Bank */
AM_RANGE(0x2000, 0x2000) AM_READWRITE(i8751_h_r, dec8_sound_w) /* Sound */
AM_RANGE(0x2001, 0x2001) AM_READWRITE(i8751_l_r, flip_screen_w) /* Flipscreen */
- AM_RANGE(0x2800, 0x288f) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_lo_w) AM_SHARE("paletteram")
- AM_RANGE(0x3000, 0x308f) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_hi_w) AM_SHARE("paletteram2")
+ AM_RANGE(0x2800, 0x288f) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0x3000, 0x308f) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette_ext")
AM_RANGE(0x3800, 0x3800) AM_READ_PORT("DSW0") /* Dip 1 */
AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN0") /* Player 1 */
AM_RANGE(0x3802, 0x3802) AM_READ_PORT("IN1") /* Player 2 (cocktail) + VBL */
@@ -826,7 +826,7 @@ static ADDRESS_MAP_START( cobra_map, AS_PROGRAM, 8, dec8_state )
AM_RANGE(0x1800, 0x1fff) AM_RAM
AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_SHARE("videoram")
AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x3000, 0x31ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0x3000, 0x31ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x3200, 0x37ff) AM_WRITEONLY /* Unused */
AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0") /* Player 1 */
AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN1") /* Player 2 */
@@ -2016,6 +2016,7 @@ static MACHINE_CONFIG_START( lastmisn, dec8_state )
MCFG_DEVICE_ADD("spritegen_krn", DECO_KARNOVSPRITES, 0)
deco_karnovsprites_device::set_gfx_region(*device, 1);
MCFG_DECO_KARNOVSPRITES_GFXDECODE("gfxdecode")
+ MCFG_DECO_KARNOVSPRITES_PALETTE("palette")
MCFG_SCREEN_ADD("screen", RASTER)
// MCFG_SCREEN_REFRESH_RATE(58)
@@ -2026,7 +2027,8 @@ static MACHINE_CONFIG_START( lastmisn, dec8_state )
MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_lastmisn)
MCFG_GFXDECODE_ADD("gfxdecode", shackled)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_VIDEO_START_OVERRIDE(dec8_state,lastmisn)
@@ -2066,6 +2068,7 @@ static MACHINE_CONFIG_START( shackled, dec8_state )
MCFG_DEVICE_ADD("spritegen_krn", DECO_KARNOVSPRITES, 0)
deco_karnovsprites_device::set_gfx_region(*device, 1);
MCFG_DECO_KARNOVSPRITES_GFXDECODE("gfxdecode")
+ MCFG_DECO_KARNOVSPRITES_PALETTE("palette")
MCFG_SCREEN_ADD("screen", RASTER)
// MCFG_SCREEN_REFRESH_RATE(58)
@@ -2076,7 +2079,8 @@ static MACHINE_CONFIG_START( shackled, dec8_state )
MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_shackled)
MCFG_GFXDECODE_ADD("gfxdecode", shackled)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_VIDEO_START_OVERRIDE(dec8_state,shackled)
@@ -2115,6 +2119,7 @@ static MACHINE_CONFIG_START( gondo, dec8_state )
MCFG_DEVICE_ADD("spritegen_krn", DECO_KARNOVSPRITES, 0)
deco_karnovsprites_device::set_gfx_region(*device, 1);
MCFG_DECO_KARNOVSPRITES_GFXDECODE("gfxdecode")
+ MCFG_DECO_KARNOVSPRITES_PALETTE("palette")
MCFG_SCREEN_ADD("screen", RASTER)
// MCFG_SCREEN_REFRESH_RATE(58)
@@ -2126,7 +2131,8 @@ static MACHINE_CONFIG_START( gondo, dec8_state )
MCFG_SCREEN_VBLANK_DRIVER(dec8_state, screen_eof_dec8)
MCFG_GFXDECODE_ADD("gfxdecode", gondo)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_VIDEO_START_OVERRIDE(dec8_state,gondo)
@@ -2165,6 +2171,7 @@ static MACHINE_CONFIG_START( garyoret, dec8_state )
MCFG_DEVICE_ADD("spritegen_krn", DECO_KARNOVSPRITES, 0)
deco_karnovsprites_device::set_gfx_region(*device, 1);
MCFG_DECO_KARNOVSPRITES_GFXDECODE("gfxdecode")
+ MCFG_DECO_KARNOVSPRITES_PALETTE("palette")
MCFG_SCREEN_ADD("screen", RASTER)
// MCFG_SCREEN_REFRESH_RATE(58)
@@ -2176,7 +2183,8 @@ static MACHINE_CONFIG_START( garyoret, dec8_state )
MCFG_SCREEN_VBLANK_DRIVER(dec8_state, screen_eof_dec8)
MCFG_GFXDECODE_ADD("gfxdecode", gondo)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_VIDEO_START_OVERRIDE(dec8_state,garyoret)
@@ -2219,6 +2227,7 @@ static MACHINE_CONFIG_START( ghostb, dec8_state )
MCFG_DEVICE_ADD("spritegen_krn", DECO_KARNOVSPRITES, 0)
deco_karnovsprites_device::set_gfx_region(*device, 1);
MCFG_DECO_KARNOVSPRITES_GFXDECODE("gfxdecode")
+ MCFG_DECO_KARNOVSPRITES_PALETTE("palette")
MCFG_SCREEN_ADD("screen", RASTER)
// MCFG_SCREEN_REFRESH_RATE(58)
@@ -2230,9 +2239,10 @@ static MACHINE_CONFIG_START( ghostb, dec8_state )
MCFG_SCREEN_VBLANK_DRIVER(dec8_state, screen_eof_dec8)
MCFG_GFXDECODE_ADD("gfxdecode", ghostb)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
- MCFG_PALETTE_INIT_OVERRIDE(dec8_state,ghostb)
+ MCFG_PALETTE_INIT_OWNER(dec8_state,ghostb)
MCFG_VIDEO_START_OVERRIDE(dec8_state,ghostb)
/* sound hardware */
@@ -2276,6 +2286,7 @@ static MACHINE_CONFIG_START( csilver, dec8_state )
MCFG_DEVICE_ADD("spritegen_krn", DECO_KARNOVSPRITES, 0)
deco_karnovsprites_device::set_gfx_region(*device, 1);
MCFG_DECO_KARNOVSPRITES_GFXDECODE("gfxdecode")
+ MCFG_DECO_KARNOVSPRITES_PALETTE("palette")
MCFG_SCREEN_ADD("screen", RASTER)
// MCFG_SCREEN_REFRESH_RATE(58)
@@ -2286,7 +2297,8 @@ static MACHINE_CONFIG_START( csilver, dec8_state )
MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_lastmisn)
MCFG_GFXDECODE_ADD("gfxdecode", shackled)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_VIDEO_START_OVERRIDE(dec8_state,lastmisn)
@@ -2334,6 +2346,7 @@ static MACHINE_CONFIG_START( oscar, dec8_state )
MCFG_DEVICE_ADD("spritegen_mxc", DECO_MXC06, 0)
deco_mxc06_device::set_gfx_region(*device, 1);
MCFG_DECO_MXC06_GFXDECODE("gfxdecode")
+ MCFG_DECO_MXC06_PALETTE("palette")
MCFG_SCREEN_ADD("screen", RASTER)
// MCFG_SCREEN_REFRESH_RATE(58)
@@ -2344,7 +2357,8 @@ static MACHINE_CONFIG_START( oscar, dec8_state )
MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_oscar)
MCFG_GFXDECODE_ADD("gfxdecode", oscar)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_VIDEO_START_OVERRIDE(dec8_state,oscar)
@@ -2386,7 +2400,8 @@ static MACHINE_CONFIG_START( srdarwin, dec8_state )
MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_srdarwin)
MCFG_GFXDECODE_ADD("gfxdecode", srdarwin)
- MCFG_PALETTE_LENGTH(144)
+ MCFG_PALETTE_ADD("palette", 144)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_VIDEO_START_OVERRIDE(dec8_state,srdarwin)
@@ -2429,6 +2444,7 @@ static MACHINE_CONFIG_START( cobracom, dec8_state )
MCFG_DEVICE_ADD("spritegen_mxc", DECO_MXC06, 0)
deco_mxc06_device::set_gfx_region(*device, 1);
MCFG_DECO_MXC06_GFXDECODE("gfxdecode")
+ MCFG_DECO_MXC06_PALETTE("palette")
MCFG_SCREEN_ADD("screen", RASTER)
@@ -2440,7 +2456,8 @@ static MACHINE_CONFIG_START( cobracom, dec8_state )
MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_cobracom)
MCFG_GFXDECODE_ADD("gfxdecode", cobracom)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_VIDEO_START_OVERRIDE(dec8_state,cobracom)
diff --git a/src/mame/drivers/deco156.c b/src/mame/drivers/deco156.c
index 6bdd2208f92..4bf6936c462 100644
--- a/src/mame/drivers/deco156.c
+++ b/src/mame/drivers/deco156.c
@@ -112,7 +112,7 @@ WRITE32_MEMBER(deco156_state::hvysmsh_oki_0_bank_w)
WRITE32_MEMBER(deco156_state::wcvol95_nonbuffered_palette_w)
{
COMBINE_DATA(&m_generic_paletteram_32[offset]);
- palette_set_color_rgb(machine(),offset,pal5bit(m_generic_paletteram_32[offset] >> 0),pal5bit(m_generic_paletteram_32[offset] >> 5),pal5bit(m_generic_paletteram_32[offset] >> 10));
+ m_palette->set_pen_color(offset,pal5bit(m_generic_paletteram_32[offset] >> 0),pal5bit(m_generic_paletteram_32[offset] >> 5),pal5bit(m_generic_paletteram_32[offset] >> 10));
}
/* This is the same as deco32_nonbuffered_palette_w in video/deco32.c */
@@ -126,7 +126,7 @@ WRITE32_MEMBER(deco156_state::deco156_nonbuffered_palette_w)
g = (m_generic_paletteram_32[offset] >> 8) & 0xff;
r = (m_generic_paletteram_32[offset] >> 0) & 0xff;
- palette_set_color(machine(),offset,rgb_t(r,g,b));
+ m_palette->set_pen_color(offset,rgb_t(r,g,b));
}
READ32_MEMBER(deco156_state::wcvol95_pf1_rowscroll_r){ return m_pf1_rowscroll[offset] ^ 0xffff0000; }
@@ -366,16 +366,18 @@ static MACHINE_CONFIG_START( hvysmsh, deco156_state )
MCFG_SCREEN_UPDATE_DRIVER(deco156_state, screen_update_wcvol95)
MCFG_GFXDECODE_ADD("gfxdecode", hvysmsh)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
MCFG_DECO16IC_ADD("tilegen1", deco156_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 2);
decospr_device::set_pri_callback(*device, deco156_pri_callback);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -406,16 +408,18 @@ static MACHINE_CONFIG_START( wcvol95, deco156_state )
MCFG_SCREEN_UPDATE_DRIVER(deco156_state, screen_update_wcvol95)
MCFG_GFXDECODE_ADD("gfxdecode", hvysmsh)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
MCFG_DECO16IC_ADD("tilegen1", deco156_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 2);
decospr_device::set_pri_callback(*device, deco156_pri_callback);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/deco32.c b/src/mame/drivers/deco32.c
index 724fb58effb..9c52c4c3af1 100644
--- a/src/mame/drivers/deco32.c
+++ b/src/mame/drivers/deco32.c
@@ -1753,18 +1753,21 @@ static MACHINE_CONFIG_START( captaven, deco32_state )
MCFG_SCREEN_VBLANK_DRIVER(deco32_state, screen_eof_captaven)
MCFG_GFXDECODE_ADD("gfxdecode", captaven)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_DECO16IC_ADD("tilegen1", captaven_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DECO16IC_ADD("tilegen2", captaven_deco16ic_tilegen2_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 3);
decospr_device::set_pri_callback(*device, captaven_pri_callback);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DECO146_ADD("ioprot")
MCFG_DECO146_SET_SOUNDLATCH_CALLBACK(deco32_state, deco32_sound_cb)
@@ -1825,17 +1828,20 @@ static MACHINE_CONFIG_START( fghthist, deco32_state ) /* DE-0380-2 PCB */
MCFG_SCREEN_UPDATE_DRIVER(deco32_state, screen_update_fghthist)
MCFG_GFXDECODE_ADD("gfxdecode", fghthist)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_DECO16IC_ADD("tilegen1", fghthist_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DECO16IC_ADD("tilegen2", fghthist_deco16ic_tilegen2_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 3);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DECO146_ADD("ioprot")
MCFG_DECO146_SET_PORTA_CALLBACK( deco32_state, port_a_fghthist )
@@ -1884,17 +1890,20 @@ static MACHINE_CONFIG_START( fghthsta, deco32_state ) /* DE-0395-1 PCB */
MCFG_SCREEN_UPDATE_DRIVER(deco32_state, screen_update_fghthist)
MCFG_GFXDECODE_ADD("gfxdecode", fghthist)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_DECO16IC_ADD("tilegen1", fghthist_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DECO16IC_ADD("tilegen2", fghthist_deco16ic_tilegen2_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 3);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DECO146_ADD("ioprot")
MCFG_DECO146_SET_PORTA_CALLBACK( deco32_state, port_a_fghthist )
@@ -2009,12 +2018,14 @@ static MACHINE_CONFIG_START( dragngun, dragngun_state )
MCFG_DECO16IC_ADD("tilegen1", dragngun_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DECO16IC_ADD("tilegen2", dragngun_deco16ic_tilegen2_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", dragngun)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_VIDEO_START_OVERRIDE(dragngun_state,dragngun)
@@ -2094,12 +2105,14 @@ static MACHINE_CONFIG_START( lockload, dragngun_state )
MCFG_DECO16IC_ADD("tilegen1", lockload_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DECO16IC_ADD("tilegen2", lockload_deco16ic_tilegen2_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", dragngun)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_VIDEO_START_OVERRIDE(dragngun_state,lockload)
@@ -2182,20 +2195,24 @@ static MACHINE_CONFIG_START( tattass, deco32_state )
MCFG_DECO16IC_ADD("tilegen1", tattass_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DECO16IC_ADD("tilegen2", tattass_deco16ic_tilegen2_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen1", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 3);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen2", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 4);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", tattass)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_DECO104_ADD("ioprot104")
MCFG_DECO146_SET_PORTB_CALLBACK( deco32_state, port_b_tattass )
@@ -2231,20 +2248,24 @@ static MACHINE_CONFIG_START( nslasher, deco32_state )
MCFG_DECO16IC_ADD("tilegen1", tattass_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DECO16IC_ADD("tilegen2", tattass_deco16ic_tilegen2_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen1", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 3);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen2", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 4);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", nslasher)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_VIDEO_START_OVERRIDE(deco32_state,nslasher)
diff --git a/src/mame/drivers/deco_ld.c b/src/mame/drivers/deco_ld.c
index afd01ba70c1..c4d032a93a8 100644
--- a/src/mame/drivers/deco_ld.c
+++ b/src/mame/drivers/deco_ld.c
@@ -181,7 +181,7 @@ void deco_ld_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect
fx = (spriteram[i+0] & 0x04) ? 1 : 0;
fy = (spriteram[i+0] & 0x02) ? 1 : 0;
- gfx->transpen(bitmap,cliprect,spr_offs,col,fx,fy,x,y,0);
+ gfx->transpen(m_palette,bitmap,cliprect,spr_offs,col,fx,fy,x,y,0);
}
for(i=0x3e0;i<0x400;i+=4)
@@ -196,7 +196,7 @@ void deco_ld_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect
fx = (spriteram[i+0] & 0x04) ? 1 : 0;
fy = (spriteram[i+0] & 0x02) ? 1 : 0;
- gfx->transpen(bitmap,cliprect,spr_offs,col,fx,fy,x,y,0);
+ gfx->transpen(m_palette,bitmap,cliprect,spr_offs,col,fx,fy,x,y,0);
}
}
@@ -218,7 +218,7 @@ UINT32 deco_ld_state::screen_update_rblaster(screen_device &screen, bitmap_rgb32
int tile = m_vram0[x+y*32] | ((attr & 3) << 8);
int colour = (6 & 0x7); /* TODO */
- gfx->transpen(bitmap,cliprect,tile|0x400,colour,0,0,x*8,y*8,0);
+ gfx->transpen(m_palette,bitmap,cliprect,tile|0x400,colour,0,0,x*8,y*8,0);
}
}
@@ -230,7 +230,7 @@ UINT32 deco_ld_state::screen_update_rblaster(screen_device &screen, bitmap_rgb32
int tile = m_vram1[x+y*32] | ((attr & 3) << 8);
int colour = (6 & 0x7); /* TODO */
- gfx->transpen(bitmap,cliprect,tile,colour,0,0,x*8,y*8,0);
+ gfx->transpen(m_palette,bitmap,cliprect,tile,colour,0,0,x*8,y*8,0);
}
}
@@ -262,7 +262,7 @@ WRITE8_MEMBER(deco_ld_state::decold_sound_cmd_w)
/* same as Burger Time HW */
WRITE8_MEMBER(deco_ld_state::decold_palette_w)
{
- paletteram_BBGGGRRR_byte_w(space, offset, ~data);
+ m_palette->write(space, offset, UINT8(~data));
}
/* unknown, but certainly related to audiocpu somehow */
@@ -479,7 +479,7 @@ static MACHINE_CONFIG_START( rblaster, deco_ld_state )
/* video hardware */
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
MCFG_GFXDECODE_ADD("gfxdecode", rblaster)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
/* sound hardware */
/* TODO: mixing */
diff --git a/src/mame/drivers/deco_mlc.c b/src/mame/drivers/deco_mlc.c
index ab120062881..7ad7c6d232a 100644
--- a/src/mame/drivers/deco_mlc.c
+++ b/src/mame/drivers/deco_mlc.c
@@ -190,7 +190,7 @@ WRITE32_MEMBER(deco_mlc_state::avengrs_palette_w)
{
COMBINE_DATA(&m_generic_paletteram_32[offset]);
/* x bbbbb ggggg rrrrr */
- palette_set_color_rgb(machine(),offset,pal5bit(m_generic_paletteram_32[offset] >> 0),pal5bit(m_generic_paletteram_32[offset] >> 5),pal5bit(m_generic_paletteram_32[offset] >> 10));
+ m_palette->set_pen_color(offset,pal5bit(m_generic_paletteram_32[offset] >> 0),pal5bit(m_generic_paletteram_32[offset] >> 5),pal5bit(m_generic_paletteram_32[offset] >> 10));
}
@@ -496,7 +496,7 @@ static MACHINE_CONFIG_START( avengrgs, deco_mlc_state )
MCFG_SCREEN_VBLANK_DRIVER(deco_mlc_state, screen_eof_mlc)
MCFG_GFXDECODE_ADD("gfxdecode", deco_mlc)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_SCANLINE)
MCFG_VIDEO_START_OVERRIDE(deco_mlc_state,mlc)
@@ -529,7 +529,7 @@ static MACHINE_CONFIG_START( mlc, deco_mlc_state )
MCFG_SCREEN_VBLANK_DRIVER(deco_mlc_state, screen_eof_mlc)
MCFG_GFXDECODE_ADD("gfxdecode", deco_mlc)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_SCANLINE)
MCFG_VIDEO_START_OVERRIDE(deco_mlc_state,mlc)
diff --git a/src/mame/drivers/decocass.c b/src/mame/drivers/decocass.c
index 21735d1b2ef..19f5b85cd9f 100644
--- a/src/mame/drivers/decocass.c
+++ b/src/mame/drivers/decocass.c
@@ -684,32 +684,30 @@ static GFXDECODE_START( decocass )
GFXDECODE_ENTRY( NULL, 0xd800, objlayout, 48, 4 ) /* object */
GFXDECODE_END
-void decocass_state::palette_init()
+PALETTE_INIT_MEMBER(decocass_state, decocass)
{
int i;
- machine().colortable = colortable_alloc(machine(), 32);
-
/* set up 32 colors 1:1 pens */
for (i = 0; i < 32; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
/* setup straight/flipped colors for background tiles (D7 of color_center_bot ?) */
for (i = 0; i < 8; i++)
{
- colortable_entry_set_value(machine().colortable, 32+i, 3*8+i);
- colortable_entry_set_value(machine().colortable, 40+i, 3*8+((i << 1) & 0x04) + ((i >> 1) & 0x02) + (i & 0x01));
+ palette.set_pen_indirect(32+i, 3*8+i);
+ palette.set_pen_indirect(40+i, 3*8+((i << 1) & 0x04) + ((i >> 1) & 0x02) + (i & 0x01));
}
/* setup 4 colors for 1bpp object */
- colortable_entry_set_value(machine().colortable, 48+0*2+0, 0);
- colortable_entry_set_value(machine().colortable, 48+0*2+1, 25); /* testtape red from 4th palette section? */
- colortable_entry_set_value(machine().colortable, 48+1*2+0, 0);
- colortable_entry_set_value(machine().colortable, 48+1*2+1, 28); /* testtape blue from 4th palette section? */
- colortable_entry_set_value(machine().colortable, 48+2*2+0, 0);
- colortable_entry_set_value(machine().colortable, 48+2*2+1, 26); /* testtape green from 4th palette section? */
- colortable_entry_set_value(machine().colortable, 48+3*2+0, 0);
- colortable_entry_set_value(machine().colortable, 48+3*2+1, 23); /* ???? */
+ palette.set_pen_indirect(48+0*2+0, 0);
+ palette.set_pen_indirect(48+0*2+1, 25); /* testtape red from 4th palette section? */
+ palette.set_pen_indirect(48+1*2+0, 0);
+ palette.set_pen_indirect(48+1*2+1, 28); /* testtape blue from 4th palette section? */
+ palette.set_pen_indirect(48+2*2+0, 0);
+ palette.set_pen_indirect(48+2*2+1, 26); /* testtape green from 4th palette section? */
+ palette.set_pen_indirect(48+3*2+0, 0);
+ palette.set_pen_indirect(48+3*2+1, 23); /* ???? */
}
@@ -737,7 +735,8 @@ static MACHINE_CONFIG_START( decocass, decocass_state )
MCFG_SCREEN_UPDATE_DRIVER(decocass_state, screen_update_decocass)
MCFG_GFXDECODE_ADD("gfxdecode", decocass)
- MCFG_PALETTE_LENGTH(32+2*8+2*4)
+ MCFG_PALETTE_ADD("palette", 32+2*8+2*4)
+ MCFG_PALETTE_INIT_OWNER(decocass_state, decocass)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/deniam.c b/src/mame/drivers/deniam.c
index e37fd5aeabb..3908653366b 100644
--- a/src/mame/drivers/deniam.c
+++ b/src/mame/drivers/deniam.c
@@ -281,7 +281,7 @@ static MACHINE_CONFIG_START( deniam16b, deniam_state )
MCFG_SCREEN_UPDATE_DRIVER(deniam_state, screen_update_deniam)
MCFG_GFXDECODE_ADD("gfxdecode", deniam)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
/* sound hardware */
@@ -313,7 +313,7 @@ static MACHINE_CONFIG_START( deniam16c, deniam_state )
MCFG_SCREEN_UPDATE_DRIVER(deniam_state, screen_update_deniam)
MCFG_GFXDECODE_ADD("gfxdecode", deniam)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
/* sound hardware */
diff --git a/src/mame/drivers/deshoros.c b/src/mame/drivers/deshoros.c
index 6d91f3ddee5..58e59133ca8 100644
--- a/src/mame/drivers/deshoros.c
+++ b/src/mame/drivers/deshoros.c
@@ -274,7 +274,7 @@ static MACHINE_CONFIG_START( destiny, destiny_state )
MCFG_SCREEN_SIZE(48*8, 16*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 16*8-1)
MCFG_SCREEN_UPDATE_DRIVER(destiny_state, screen_update_destiny)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
/* sound hardware */
diff --git a/src/mame/drivers/destroyr.c b/src/mame/drivers/destroyr.c
index e4ecb5d18ae..7a82dafa039 100644
--- a/src/mame/drivers/destroyr.c
+++ b/src/mame/drivers/destroyr.c
@@ -61,7 +61,7 @@ public:
DECLARE_READ8_MEMBER(destroyr_scanline_r);
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(destroyr);
UINT32 screen_update_destroyr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(destroyr_dial_callback);
TIMER_CALLBACK_MEMBER(destroyr_frame_callback);
@@ -98,7 +98,7 @@ UINT32 destroyr_state::screen_update_destroyr(screen_device &screen, bitmap_ind1
continue;
}
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect, num, 0, flipx, 0, horz, 16 * i, 0);
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect, num, 0, flipx, 0, horz, 16 * i, 0);
}
/* draw alpha numerics */
@@ -108,7 +108,7 @@ UINT32 destroyr_state::screen_update_destroyr(screen_device &screen, bitmap_ind1
{
int num = m_alpha_num_ram[32 * i + j];
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, num, 0, 0, 0, 8 * j, 8 * i, 0);
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect, num, 0, 0, 0, 8 * j, 8 * i, 0);
}
}
@@ -119,13 +119,13 @@ UINT32 destroyr_state::screen_update_destroyr(screen_device &screen, bitmap_ind1
int horz = 256 - m_minor_obj_ram[i + 2];
int vert = 256 - m_minor_obj_ram[i + 4];
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, num, 0, 0, 0, horz, vert, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, num, 0, 0, 0, horz, vert, 0);
}
/* draw waves */
for (i = 0; i < 4; i++)
{
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect, m_wavemod ? 1 : 0, 0, 0, 0, 64 * i, 0x4e, 0);
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect, m_wavemod ? 1 : 0, 0, 0, 0, 64 * i, 0x4e, 0);
}
/* draw cursor */
@@ -448,16 +448,16 @@ static GFXDECODE_START( destroyr )
GFXDECODE_END
-void destroyr_state::palette_init()
+PALETTE_INIT_MEMBER(destroyr_state, destroyr)
{
- palette_set_color(machine(), 0, rgb_t(0x00, 0x00, 0x00)); /* major objects */
- palette_set_color(machine(), 1, rgb_t(0x50, 0x50, 0x50));
- palette_set_color(machine(), 2, rgb_t(0xAF, 0xAF, 0xAF));
- palette_set_color(machine(), 3, rgb_t(0xFF ,0xFF, 0xFF));
- palette_set_color(machine(), 4, rgb_t(0x00, 0x00, 0x00)); /* alpha numerics, waves, minor objects */
- palette_set_color(machine(), 5, rgb_t(0xFF, 0xFF, 0xFF));
- palette_set_color(machine(), 6, rgb_t(0x00, 0x00, 0x00)); /* cursor */
- palette_set_color(machine(), 7, rgb_t(0x78, 0x78, 0x78));
+ palette.set_pen_color(0, rgb_t(0x00, 0x00, 0x00)); /* major objects */
+ palette.set_pen_color(1, rgb_t(0x50, 0x50, 0x50));
+ palette.set_pen_color(2, rgb_t(0xAF, 0xAF, 0xAF));
+ palette.set_pen_color(3, rgb_t(0xFF ,0xFF, 0xFF));
+ palette.set_pen_color(4, rgb_t(0x00, 0x00, 0x00)); /* alpha numerics, waves, minor objects */
+ palette.set_pen_color(5, rgb_t(0xFF, 0xFF, 0xFF));
+ palette.set_pen_color(6, rgb_t(0x00, 0x00, 0x00)); /* cursor */
+ palette.set_pen_color(7, rgb_t(0x78, 0x78, 0x78));
}
@@ -488,7 +488,8 @@ static MACHINE_CONFIG_START( destroyr, destroyr_state )
MCFG_SCREEN_UPDATE_DRIVER(destroyr_state, screen_update_destroyr)
MCFG_GFXDECODE_ADD("gfxdecode", destroyr)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(destroyr_state, destroyr)
/* sound hardware */
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/dfruit.c b/src/mame/drivers/dfruit.c
index ca0a297d234..db12a6a2028 100644
--- a/src/mame/drivers/dfruit.c
+++ b/src/mame/drivers/dfruit.c
@@ -400,11 +400,12 @@ static MACHINE_CONFIG_START( dfruit, dfruit_state )
MCFG_SCREEN_UPDATE_DRIVER(dfruit_state, screen_update)
MCFG_SCREEN_VBLANK_DRIVER(dfruit_state, screen_eof)
- MCFG_GFXDECODE_ADD("gfxdecode", dfruit )
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_GFXDECODE_ADD("gfxdecode", dfruit )
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_DEVICE_ADD("tc0091lvc", TC0091LVC, 0)
MCFG_TC0091LVC_GFXDECODE("gfxdecode")
+ MCFG_TC0091LVC_PALETTE("palette")
MCFG_I8255A_ADD( "ppi8255_0", ppi8255_intf )
diff --git a/src/mame/drivers/dgpix.c b/src/mame/drivers/dgpix.c
index 49da6494d58..d24994e6361 100644
--- a/src/mame/drivers/dgpix.c
+++ b/src/mame/drivers/dgpix.c
@@ -318,8 +318,7 @@ static MACHINE_CONFIG_START( dgpix, dgpix_state )
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_DRIVER(dgpix_state, screen_update_dgpix)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, BBBBB_GGGGG_RRRRR)
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD_BBBBBGGGGGRRRRR("palette")
/* sound hardware */
diff --git a/src/mame/drivers/dietgo.c b/src/mame/drivers/dietgo.c
index 630675845b3..da4cbb23e91 100644
--- a/src/mame/drivers/dietgo.c
+++ b/src/mame/drivers/dietgo.c
@@ -229,17 +229,19 @@ static MACHINE_CONFIG_START( dietgo, dietgo_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_DRIVER(dietgo_state, screen_update_dietgo)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
MCFG_GFXDECODE_ADD("gfxdecode", dietgo)
MCFG_DECOCOMN_ADD("deco_common")
MCFG_DECO16IC_ADD("tilegen1", dietgo_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 2);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DECO104_ADD("ioprot104")
MCFG_DECO146_SET_INTERFACE_SCRAMBLE_INTERLEAVE
diff --git a/src/mame/drivers/discoboy.c b/src/mame/drivers/discoboy.c
index e2befa673a7..7eb943f1528 100644
--- a/src/mame/drivers/discoboy.c
+++ b/src/mame/drivers/discoboy.c
@@ -143,7 +143,7 @@ void discoboy_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
}
}
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipscreen,0,
@@ -168,7 +168,7 @@ UINT32 discoboy_state::screen_update_discoboy(screen_device &screen, bitmap_ind1
g = ((pal >> 4) & 0xf) << 4;
r = ((pal >> 8) & 0xf) << 4;
- palette_set_color(machine(), i / 2, rgb_t(r, g, b));
+ m_palette->set_pen_color(i / 2, rgb_t(r, g, b));
}
for (i = 0; i < 0x800; i += 2)
@@ -181,7 +181,7 @@ UINT32 discoboy_state::screen_update_discoboy(screen_device &screen, bitmap_ind1
g = ((pal >> 4) & 0xf) << 4;
r = ((pal >> 8) & 0xf) << 4;
- palette_set_color(machine(), (i / 2) + 0x400, rgb_t(r, g, b));
+ m_palette->set_pen_color((i / 2) + 0x400, rgb_t(r, g, b));
}
bitmap.fill(0x3ff, cliprect);
@@ -200,7 +200,7 @@ UINT32 discoboy_state::screen_update_discoboy(screen_device &screen, bitmap_ind1
tileno = 0x2000 + (tileno & 0x1fff) + 0x0000;
}
- m_gfxdecode->gfx(1)->opaque(bitmap,cliprect, tileno, m_ram_att[count / 2], 0, 0, x*8, y*8);
+ m_gfxdecode->gfx(1)->opaque(m_palette,bitmap,cliprect, tileno, m_ram_att[count / 2], 0, 0, x*8, y*8);
count += 2;
}
}
@@ -510,7 +510,7 @@ static MACHINE_CONFIG_START( discoboy, discoboy_state )
MCFG_SCREEN_UPDATE_DRIVER(discoboy_state, screen_update_discoboy)
MCFG_GFXDECODE_ADD("gfxdecode", discoboy)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
/* sound hardware */
diff --git a/src/mame/drivers/diverboy.c b/src/mame/drivers/diverboy.c
index b51ee05ca1c..798b2adf499 100644
--- a/src/mame/drivers/diverboy.c
+++ b/src/mame/drivers/diverboy.c
@@ -109,7 +109,7 @@ void diverboy_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipr
if (!flash || (m_screen->frame_number() & 1))
{
- m_gfxdecode->gfx(bank)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(bank)->transpen(m_palette,bitmap,cliprect,
number,
colr,
0,0,
@@ -123,7 +123,7 @@ void diverboy_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipr
UINT32 diverboy_state::screen_update_diverboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
-// bitmap.fill(get_black_pen(machine()), cliprect);
+// bitmap.fill(m_palette->black_pen(), cliprect);
draw_sprites(bitmap, cliprect);
return 0;
}
@@ -152,7 +152,7 @@ static ADDRESS_MAP_START( diverboy_map, AS_PROGRAM, 16, diverboy_state )
AM_RANGE(0x040000, 0x04ffff) AM_RAM
AM_RANGE(0x080000, 0x083fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x100000, 0x100001) AM_WRITE(soundcmd_w)
- AM_RANGE(0x140000, 0x1407ff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x140000, 0x1407ff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x180000, 0x180001) AM_READ_PORT("P1_P2")
AM_RANGE(0x180002, 0x180003) AM_READ_PORT("DSW")
AM_RANGE(0x180008, 0x180009) AM_READ_PORT("COINS")
@@ -273,7 +273,8 @@ static MACHINE_CONFIG_START( diverboy, diverboy_state )
MCFG_SCREEN_VISIBLE_AREA(0*8+4, 40*8+1, 2*8, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(diverboy_state, screen_update_diverboy)
- MCFG_PALETTE_LENGTH(0x400)
+ MCFG_PALETTE_ADD("palette", 0x400)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/djboy.c b/src/mame/drivers/djboy.c
index 3f0d387646a..f81cada472d 100644
--- a/src/mame/drivers/djboy.c
+++ b/src/mame/drivers/djboy.c
@@ -581,10 +581,11 @@ static MACHINE_CONFIG_START( djboy, djboy_state )
MCFG_SCREEN_VBLANK_DRIVER(djboy_state, screen_eof_djboy)
MCFG_GFXDECODE_ADD("gfxdecode", djboy)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
MCFG_KANEKO_PANDORA_ADD("pandora", djboy_pandora_config)
MCFG_KANEKO_PANDORA_GFXDECODE("gfxdecode")
+ MCFG_KANEKO_PANDORA_PALETTE("palette")
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/djmain.c b/src/mame/drivers/djmain.c
index 21dee24f4d6..7b2f848d83b 100644
--- a/src/mame/drivers/djmain.c
+++ b/src/mame/drivers/djmain.c
@@ -95,7 +95,7 @@ WRITE32_MEMBER(djmain_state::paletteram32_w)
g = (data >> 8) & 0xff;
b = (data >> 16) & 0xff;
- palette_set_color(machine(), offset, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset, rgb_t(r, g, b));
}
@@ -1420,11 +1420,12 @@ static MACHINE_CONFIG_START( djmain, djmain_state )
MCFG_SCREEN_VISIBLE_AREA(12, 512-12-1, 0, 384-1)
MCFG_SCREEN_UPDATE_DRIVER(djmain_state, screen_update_djmain)
- MCFG_PALETTE_LENGTH(0x4440/4)
+ MCFG_PALETTE_ADD("palette", 0x4440/4)
MCFG_GFXDECODE_ADD("gfxdecode", djmain)
MCFG_K056832_ADD("k056832", djmain_k056832_intf)
MCFG_K056832_GFXDECODE("gfxdecode")
+ MCFG_K056832_PALETTE("palette")
MCFG_K055555_ADD("k055555")
/* sound hardware */
diff --git a/src/mame/drivers/dkong.c b/src/mame/drivers/dkong.c
index 1c3fb777eb5..23cd715c7c5 100644
--- a/src/mame/drivers/dkong.c
+++ b/src/mame/drivers/dkong.c
@@ -1668,9 +1668,9 @@ static MACHINE_CONFIG_START( dkong_base, dkong_state )
MCFG_SCREEN_UPDATE_DRIVER(dkong_state, screen_update_dkong)
MCFG_GFXDECODE_ADD("gfxdecode", dkong)
- MCFG_PALETTE_LENGTH(DK2B_PALETTE_LENGTH)
+ MCFG_PALETTE_ADD("palette", DK2B_PALETTE_LENGTH)
- MCFG_PALETTE_INIT_OVERRIDE(dkong_state,dkong2b)
+ MCFG_PALETTE_INIT_OWNER(dkong_state,dkong2b)
MCFG_VIDEO_START_OVERRIDE(dkong_state,dkong)
MACHINE_CONFIG_END
@@ -1678,8 +1678,9 @@ static MACHINE_CONFIG_DERIVED( radarscp, dkong_base )
/* basic machine hardware */
MCFG_MACHINE_START_OVERRIDE(dkong_state,radarscp)
- MCFG_PALETTE_LENGTH(RS_PALETTE_LENGTH)
- MCFG_PALETTE_INIT_OVERRIDE(dkong_state,radarscp)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", RS_PALETTE_LENGTH)
+ MCFG_PALETTE_INIT_OWNER(dkong_state,radarscp)
/* sound hardware */
MCFG_FRAGMENT_ADD(radarscp_audio)
@@ -1689,8 +1690,9 @@ static MACHINE_CONFIG_DERIVED( radarscp1, dkong_base )
/* basic machine hardware */
MCFG_MACHINE_START_OVERRIDE(dkong_state,radarscp1)
- MCFG_PALETTE_LENGTH(RS_PALETTE_LENGTH)
- MCFG_PALETTE_INIT_OVERRIDE(dkong_state,radarscp1)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", RS_PALETTE_LENGTH)
+ MCFG_PALETTE_INIT_OWNER(dkong_state,radarscp1)
/* sound hardware */
MCFG_FRAGMENT_ADD(radarscp1_audio)
@@ -1701,7 +1703,8 @@ static MACHINE_CONFIG_DERIVED( dkong2b, dkong_base )
/* basic machine hardware */
MCFG_MACHINE_START_OVERRIDE(dkong_state,dkong2b)
- MCFG_PALETTE_LENGTH(DK2B_PALETTE_LENGTH)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", DK2B_PALETTE_LENGTH)
/* sound hardware */
MCFG_FRAGMENT_ADD(dkong2b_audio)
@@ -1729,10 +1732,10 @@ static MACHINE_CONFIG_START( dkong3, dkong_state )
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(dkong_state, screen_update_dkong)
- MCFG_GFXDECODE_ADD("gfxdecode", dkong)
- MCFG_PALETTE_LENGTH(DK3_PALETTE_LENGTH)
+ MCFG_GFXDECODE_ADD("gfxdecode", dkong)
+ MCFG_PALETTE_ADD("palette", DK3_PALETTE_LENGTH)
- MCFG_PALETTE_INIT_OVERRIDE(dkong_state,dkong3)
+ MCFG_PALETTE_INIT_OWNER(dkong_state,dkong3)
MCFG_VIDEO_START_OVERRIDE(dkong_state,dkong)
/* sound hardware */
@@ -1752,16 +1755,18 @@ static MACHINE_CONFIG_DERIVED( pestplce, dkongjr )
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", pestplce)
- MCFG_PALETTE_LENGTH(DK2B_PALETTE_LENGTH)
- MCFG_PALETTE_INIT_OVERRIDE(dkong_state,dkong2b) /* wrong! */
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", DK2B_PALETTE_LENGTH)
+ MCFG_PALETTE_INIT_OWNER(dkong_state,dkong2b) /* wrong! */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(dkong_state, screen_update_pestplce)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( dkong3b, dkongjr )
- /* basic machine hardware */
- MCFG_PALETTE_INIT_OVERRIDE(dkong_state,dkong3)
+ /* basic machine hardware */
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(dkong_state,dkong3)
MACHINE_CONFIG_END
/*************************************
diff --git a/src/mame/drivers/dlair.c b/src/mame/drivers/dlair.c
index 50b2876b06e..28c109d5845 100644
--- a/src/mame/drivers/dlair.c
+++ b/src/mame/drivers/dlair.c
@@ -233,8 +233,8 @@ PALETTE_INIT_MEMBER(dlair_state,dleuro)
for (i = 0; i < 8; i++)
{
- palette_set_color(machine(), 2 * i + 0, rgb_t(0, 0, 0));
- palette_set_color_rgb(machine(), 2 * i + 1, pal1bit(i >> 0), pal1bit(i >> 1), pal1bit(i >> 2));
+ palette.set_pen_color(2 * i + 0, rgb_t(0, 0, 0));
+ palette.set_pen_color(2 * i + 1, pal1bit(i >> 0), pal1bit(i >> 1), pal1bit(i >> 2));
}
}
@@ -256,7 +256,7 @@ UINT32 dlair_state::screen_update_dleuro(screen_device &screen, bitmap_ind16 &bi
for (x = 0; x < 32; x++)
{
UINT8 *base = &videoram[y * 64 + x * 2 + 1];
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, base[0], base[1], 0, 0, 10 * x, 16 * y);
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, base[0], base[1], 0, 0, 10 * x, 16 * y);
}
return 0;
@@ -775,9 +775,9 @@ static MACHINE_CONFIG_START( dleuro, dlair_state )
MCFG_LASERDISC_SCREEN_ADD_PAL("screen", "ld_22vp932")
MCFG_GFXDECODE_ADD("gfxdecode", dlair)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
- MCFG_PALETTE_INIT_OVERRIDE(dlair_state,dleuro)
+ MCFG_PALETTE_INIT_OWNER(dlair_state,dleuro)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/dlair2.c b/src/mame/drivers/dlair2.c
index dfa9d5aee5f..e0d6ed00e67 100644
--- a/src/mame/drivers/dlair2.c
+++ b/src/mame/drivers/dlair2.c
@@ -45,13 +45,14 @@ public:
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(dlair2_timer_irq);
+ DECLARE_PALETTE_INIT(dlair2);
+
protected:
// driver_device overrides
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
};
void dlair2_state::video_start()
@@ -157,7 +158,7 @@ void dlair2_state::machine_reset()
{
}
-void dlair2_state::palette_init()
+PALETTE_INIT_MEMBER(dlair2_state, dlair2)
{
}
@@ -184,7 +185,8 @@ static MACHINE_CONFIG_START( dlair2, dlair2_state )
// MCFG_GFXDECODE_ADD("gfxdecode", dlair2)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(dlair2_state, dlair2)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/dmndrby.c b/src/mame/drivers/dmndrby.c
index 87b07fb225b..3cfb50d3f35 100644
--- a/src/mame/drivers/dmndrby.c
+++ b/src/mame/drivers/dmndrby.c
@@ -84,7 +84,7 @@ public:
DECLARE_WRITE8_MEMBER(output_w);
TILE_GET_INFO_MEMBER(get_dmndrby_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(dmndrby);
UINT32 screen_update_dderby(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(dderby_irq);
INTERRUPT_GEN_MEMBER(dderby_timer_irq);
@@ -364,7 +364,7 @@ UINT32 dmndrby_state::screen_update_dderby(screen_device &screen, bitmap_ind16 &
gfx_element *sprites = m_gfxdecode->gfx(1);
gfx_element *track = m_gfxdecode->gfx(2);
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
/* Draw racetrack
@@ -383,13 +383,13 @@ can we draw it with the tilemap? maybe not, the layout is a litle strange
int chr = m_racetrack_tilemap_rom[off];
int col = m_racetrack_tilemap_rom[off+0x2000]&0x1f;
int flipx = m_racetrack_tilemap_rom[off+0x2000]&0x40;
- track->opaque(bitmap,cliprect,chr,col,flipx,0,y*16+scrolly,x*16);
+ track->opaque(m_palette,bitmap,cliprect,chr,col,flipx,0,y*16+scrolly,x*16);
// draw another bit of track
// a rubbish way of doing it
chr = m_racetrack_tilemap_rom[off-0x100];
col = m_racetrack_tilemap_rom[off+0x1f00]&0x1f;
flipx = m_racetrack_tilemap_rom[off+0x1f00]&0x40;
- track->opaque(bitmap,cliprect,chr,col,flipx,0,y*16-256+scrolly,x*16);
+ track->opaque(m_palette,bitmap,cliprect,chr,col,flipx,0,y*16-256+scrolly,x*16);
off++;
}
}
@@ -419,13 +419,13 @@ wouldnt like to say its the most effective way though...
for (a=0;a<8 ;a++)
{
for(b=0;b<7;b++) {
- sprites->transpen(bitmap,cliprect,anim+a*8+b,col,0,0,sprx+a*8,spry+b*8,0);
+ sprites->transpen(m_palette,bitmap,cliprect,anim+a*8+b,col,0,0,sprx+a*8,spry+b*8,0);
}
}
// draw the horse number
a=3;
b=3;
- sprites->transpen(bitmap,cliprect,anim+horse,col,0,0,sprx+a*8,spry+b*8,0);
+ sprites->transpen(m_palette,bitmap,cliprect,anim+horse,col,0,0,sprx+a*8,spry+b*8,0);
}
@@ -442,7 +442,7 @@ wouldnt like to say its the most effective way though...
tileno|=(bank<<8);
color=((m_dderby_vidattribs[count])&0x1f);
- gfx->transpen(bitmap,cliprect,tileno,color,0,0,x*8,y*8,(tileno == 0x38) ? 0 : -1);
+ gfx->transpen(m_palette,bitmap,cliprect,tileno,color,0,0,x*8,y*8,(tileno == 0x38) ? 0 : -1);
count++;
}
@@ -453,7 +453,7 @@ wouldnt like to say its the most effective way though...
}
// copied from elsewhere. surely incorrect
-void dmndrby_state::palette_init()
+PALETTE_INIT_MEMBER(dmndrby_state, dmndrby)
{
const UINT8 *color_prom = memregion("proms")->base();
static const int resistances_rg[3] = { 1000, 470, 220 };
@@ -467,9 +467,6 @@ void dmndrby_state::palette_init()
3, &resistances_rg[0], gweights, 470, 0,
2, &resistances_b[0], bweights, 470, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x20);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -493,7 +490,7 @@ void dmndrby_state::palette_init()
bit1 = (color_prom[i] >> 7) & 0x01;
b = combine_2_weights(bweights, bit0, bit1);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -503,7 +500,7 @@ void dmndrby_state::palette_init()
for (i = 0x000; i < 0x300; i++)
{
UINT8 ctabentry = color_prom[i];
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -540,8 +537,8 @@ static MACHINE_CONFIG_START( dderby, dmndrby_state )
MCFG_SCREEN_UPDATE_DRIVER(dmndrby_state, screen_update_dderby)
MCFG_GFXDECODE_ADD("gfxdecode", dmndrby)
- MCFG_PALETTE_LENGTH(0x300)
-
+ MCFG_PALETTE_ADD("palette", 0x300)
+ MCFG_PALETTE_INIT_OWNER(dmndrby_state, dmndrby)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/docastle.c b/src/mame/drivers/docastle.c
index 8c47cbe3af5..3311d49133c 100644
--- a/src/mame/drivers/docastle.c
+++ b/src/mame/drivers/docastle.c
@@ -641,7 +641,8 @@ static MACHINE_CONFIG_START( docastle, docastle_state )
MCFG_SCREEN_UPDATE_DRIVER(docastle_state, screen_update_docastle)
MCFG_GFXDECODE_ADD("gfxdecode", docastle)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_INIT_OWNER(docastle_state, docastle)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/dogfgt.c b/src/mame/drivers/dogfgt.c
index b427a148975..11afc6d7463 100644
--- a/src/mame/drivers/dogfgt.c
+++ b/src/mame/drivers/dogfgt.c
@@ -70,7 +70,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, dogfgt_state )
AM_RANGE(0x1830, 0x1830) AM_READ_PORT("DSW2")
AM_RANGE(0x1830, 0x1830) AM_WRITE(dogfgt_soundlatch_w)
AM_RANGE(0x1840, 0x1840) AM_WRITE(dogfgt_soundcontrol_w)
- AM_RANGE(0x1870, 0x187f) AM_WRITE(paletteram_BBGGGRRR_byte_w) AM_SHARE("paletteram")
+ AM_RANGE(0x1870, 0x187f) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x2000, 0x3fff) AM_READWRITE(dogfgt_bitmapram_r, dogfgt_bitmapram_w)
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -254,7 +254,9 @@ static MACHINE_CONFIG_START( dogfgt, dogfgt_state )
MCFG_SCREEN_UPDATE_DRIVER(dogfgt_state, screen_update_dogfgt)
MCFG_GFXDECODE_ADD("gfxdecode", dogfgt)
- MCFG_PALETTE_LENGTH(16+64)
+ MCFG_PALETTE_ADD("palette", 16+64)
+ MCFG_PALETTE_FORMAT(BBGGGRRR)
+ MCFG_PALETTE_INIT_OWNER(dogfgt_state, dogfgt)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/dominob.c b/src/mame/drivers/dominob.c
index f979927dc08..e33aa9e6b81 100644
--- a/src/mame/drivers/dominob.c
+++ b/src/mame/drivers/dominob.c
@@ -113,12 +113,12 @@ void dominob_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
code = m_spriteram[offs + 3] + ((m_spriteram[offs + 2] & 0x03) << 8) ;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
2 * code,
((m_spriteram[offs + 2] & 0xf8) >> 3) ,
flip_screen_x(),flip_screen_y(),
sx,sy + (flip_screen_y() ? 8 : -8),0);
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
2 * code + 1,
((m_spriteram[offs + 2] & 0xf8) >> 3) ,
flip_screen_x(),flip_screen_y(),
@@ -138,7 +138,7 @@ UINT32 dominob_state::screen_update_dominob(screen_device &screen, bitmap_ind16
for (x = 0; x < 256 / 32; x++)
{
- m_gfxdecode->gfx(1)->opaque(bitmap,
+ m_gfxdecode->gfx(1)->opaque(m_palette,bitmap,
cliprect,
m_bgram[index] + 256 * (m_bgram[index + 1] & 0xf),
m_bgram[index + 1] >> 4,
@@ -153,7 +153,7 @@ UINT32 dominob_state::screen_update_dominob(screen_device &screen, bitmap_ind16
for (x = 0; x < 32; x++)
{
- m_gfxdecode->gfx(0)->transpen(bitmap,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,
cliprect,
m_videoram[(y * 32 + x) * 2 + 1] + (m_videoram[(y * 32 + x) * 2] & 7) * 256,
(m_videoram[(y * 32 + x) * 2] >> 3),
@@ -189,7 +189,7 @@ static ADDRESS_MAP_START( memmap, AS_PROGRAM, 8, dominob_state )
AM_RANGE(0xe840, 0xefff) AM_RAM
AM_RANGE(0xf000, 0xf07f) AM_RAM AM_SHARE("bgram")
AM_RANGE(0xf080, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xfbff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0xf800, 0xfbff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xfc00, 0xffff) AM_RAM
ADDRESS_MAP_END
@@ -314,7 +314,8 @@ static MACHINE_CONFIG_START( dominob, dominob_state )
MCFG_SCREEN_UPDATE_DRIVER(dominob_state, screen_update_dominob)
MCFG_GFXDECODE_ADD("gfxdecode", dominob)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
/* sound hardware */
diff --git a/src/mame/drivers/dooyong.c b/src/mame/drivers/dooyong.c
index 474f1d78aa6..b29ae41444d 100644
--- a/src/mame/drivers/dooyong.c
+++ b/src/mame/drivers/dooyong.c
@@ -126,7 +126,7 @@ static ADDRESS_MAP_START( lastday_map, AS_PROGRAM, 8, dooyong_state )
AM_RANGE(0xc012, 0xc012) AM_WRITE(soundlatch_byte_w)
AM_RANGE(0xc013, 0xc013) AM_READ_PORT("DSWA")
AM_RANGE(0xc014, 0xc014) AM_READ_PORT("DSWB")
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0xc800, 0xcfff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(dooyong_txvideoram8_w) AM_SHARE("txvideoram")
AM_RANGE(0xe000, 0xefff) AM_RAM
AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("spriteram")
@@ -147,7 +147,7 @@ static ADDRESS_MAP_START( pollux_map, AS_PROGRAM, 8, dooyong_state )
AM_RANGE(0xf010, 0xf010) AM_WRITE(soundlatch_byte_w)
AM_RANGE(0xf018, 0xf01f) AM_WRITE(dooyong_bgscroll8_w)
AM_RANGE(0xf020, 0xf027) AM_WRITE(dooyong_fgscroll8_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0xf800, 0xffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
ADDRESS_MAP_END
static ADDRESS_MAP_START( gulfstrm_map, AS_PROGRAM, 8, dooyong_state )
@@ -166,7 +166,7 @@ static ADDRESS_MAP_START( gulfstrm_map, AS_PROGRAM, 8, dooyong_state )
AM_RANGE(0xf010, 0xf010) AM_WRITE(soundlatch_byte_w)
AM_RANGE(0xf018, 0xf01f) AM_WRITE(dooyong_bgscroll8_w)
AM_RANGE(0xf020, 0xf027) AM_WRITE(dooyong_fgscroll8_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0xf800, 0xffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
ADDRESS_MAP_END
static ADDRESS_MAP_START( bluehawk_map, AS_PROGRAM, 8, dooyong_state )
@@ -183,7 +183,7 @@ static ADDRESS_MAP_START( bluehawk_map, AS_PROGRAM, 8, dooyong_state )
AM_RANGE(0xc018, 0xc01f) AM_WRITE(dooyong_fg2scroll8_w)
AM_RANGE(0xc040, 0xc047) AM_WRITE(dooyong_bgscroll8_w)
AM_RANGE(0xc048, 0xc04f) AM_WRITE(dooyong_fgscroll8_w)
- AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0xc800, 0xcfff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(dooyong_txvideoram8_w) AM_SHARE("txvideoram")
AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xf000, 0xffff) AM_RAM
@@ -214,7 +214,7 @@ static ADDRESS_MAP_START( primella_map, AS_PROGRAM, 8, dooyong_state )
AM_RANGE(0xc000, 0xcfff) AM_RAM
AM_RANGE(0xd000, 0xd3ff) AM_RAM /* what is this? looks like a palette? scratchpad RAM maybe? */
AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(dooyong_txvideoram8_w) AM_SHARE("txvideoram")
- AM_RANGE(0xf000, 0xf7ff) AM_WRITE(paletteram_xRRRRRGGGGGBBBBB_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0xf000, 0xf7ff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xf800, 0xf800) AM_READ_PORT("DSWA")
AM_RANGE(0xf800, 0xf800) AM_WRITE(primella_ctrl_w) /* bank switch, flip screen etc */
AM_RANGE(0xf810, 0xf810) AM_READ_PORT("DSWB")
@@ -237,7 +237,7 @@ static ADDRESS_MAP_START( rshark_map, AS_PROGRAM, 16, dooyong_state )
AM_RANGE(0x0c0006, 0x0c0007) AM_READ_PORT("SYSTEM")
AM_RANGE(0x0c4000, 0x0c400f) AM_WRITE(dooyong_bgscroll16_w)
AM_RANGE(0x0c4010, 0x0c401f) AM_WRITE(dooyong_bg2scroll16_w)
- AM_RANGE(0x0c8000, 0x0c8fff) AM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0c8000, 0x0c8fff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0c0012, 0x0c0013) AM_WRITE(soundlatch_word_w)
AM_RANGE(0x0c0014, 0x0c0015) AM_WRITE(rshark_ctrl_w) /* flip screen + unknown stuff */
AM_RANGE(0x0cc000, 0x0cc00f) AM_WRITE(dooyong_fgscroll16_w)
@@ -255,7 +255,7 @@ static ADDRESS_MAP_START( superx_map, AS_PROGRAM, 16, dooyong_state )
AM_RANGE(0x080006, 0x080007) AM_READ_PORT("SYSTEM")
AM_RANGE(0x084000, 0x08400f) AM_WRITE(dooyong_bgscroll16_w)
AM_RANGE(0x084010, 0x08401f) AM_WRITE(dooyong_bg2scroll16_w)
- AM_RANGE(0x088000, 0x088fff) AM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x088000, 0x088fff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x080012, 0x080013) AM_WRITE(soundlatch_word_w)
AM_RANGE(0x080014, 0x080015) AM_WRITE(rshark_ctrl_w) /* flip screen + unknown stuff */
AM_RANGE(0x08c000, 0x08c00f) AM_WRITE(dooyong_fgscroll16_w)
@@ -276,7 +276,7 @@ static ADDRESS_MAP_START( popbingo_map, AS_PROGRAM, 16, dooyong_state )
AM_RANGE(0x0c0018, 0x0c001b) AM_WRITENOP // ?
AM_RANGE(0x0c4000, 0x0c400f) AM_WRITE(dooyong_bgscroll16_w)
AM_RANGE(0x0c4010, 0x0c401f) AM_WRITE(dooyong_bg2scroll16_w) // not used atm
- AM_RANGE(0x0c8000, 0x0c8fff) AM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0c8000, 0x0c8fff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0cc000, 0x0cc00f) AM_WRITE(dooyong_fgscroll16_w) // not used atm
AM_RANGE(0x0cc010, 0x0cc01f) AM_WRITE(dooyong_fg2scroll16_w) // not used atm
AM_RANGE(0x0dc000, 0x0dc01f) AM_RAM // registers of some kind?
@@ -874,7 +874,8 @@ static MACHINE_CONFIG_START( lastday, dooyong_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", lastday)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_VIDEO_START_OVERRIDE(dooyong_state,lastday)
@@ -918,7 +919,8 @@ static MACHINE_CONFIG_START( gulfstrm, dooyong_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", lastday)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(dooyong_state,gulfstrm)
@@ -951,7 +953,8 @@ static MACHINE_CONFIG_START( pollux, dooyong_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", lastday)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(dooyong_state,pollux)
@@ -983,7 +986,8 @@ static MACHINE_CONFIG_START( bluehawk, dooyong_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", bluehawk)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(dooyong_state,bluehawk)
@@ -1015,7 +1019,8 @@ static MACHINE_CONFIG_START( flytiger, dooyong_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", flytiger)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(dooyong_state,flytiger)
@@ -1044,7 +1049,8 @@ static MACHINE_CONFIG_START( primella, dooyong_state )
MCFG_SCREEN_UPDATE_DRIVER(dooyong_state, screen_update_primella)
MCFG_GFXDECODE_ADD("gfxdecode", primella)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(dooyong_state,primella)
@@ -1086,7 +1092,8 @@ static MACHINE_CONFIG_START( rshark, dooyong_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram16", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", rshark)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(dooyong_state,rshark)
@@ -1116,7 +1123,8 @@ static MACHINE_CONFIG_START( superx, dooyong_state ) // dif mem map
MCFG_SCREEN_VBLANK_DEVICE("spriteram16", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", rshark)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(dooyong_state,rshark)
@@ -1146,7 +1154,8 @@ static MACHINE_CONFIG_START( popbingo, dooyong_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram16", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", popbingo)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(dooyong_state,popbingo)
diff --git a/src/mame/drivers/dragrace.c b/src/mame/drivers/dragrace.c
index 247a97b4705..1a231746aef 100644
--- a/src/mame/drivers/dragrace.c
+++ b/src/mame/drivers/dragrace.c
@@ -287,24 +287,24 @@ static GFXDECODE_START( dragrace )
GFXDECODE_END
-void dragrace_state::palette_init()
+PALETTE_INIT_MEMBER(dragrace_state, dragrace)
{
- palette_set_color(machine(), 0, rgb_t(0xFF, 0xFF, 0xFF)); /* 2 color tiles */
- palette_set_color(machine(), 1, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), 2, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), 3, rgb_t(0xFF, 0xFF, 0xFF));
- palette_set_color(machine(), 4, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), 5, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), 6, rgb_t(0xFF, 0xFF, 0xFF));
- palette_set_color(machine(), 7, rgb_t(0xFF, 0xFF, 0xFF));
- palette_set_color(machine(), 8, rgb_t(0xFF, 0xFF, 0xFF)); /* 4 color tiles */
- palette_set_color(machine(), 9, rgb_t(0xB0, 0xB0, 0xB0));
- palette_set_color(machine(), 10,rgb_t(0x5F, 0x5F, 0x5F));
- palette_set_color(machine(), 11,rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), 12,rgb_t(0xFF, 0xFF, 0xFF));
- palette_set_color(machine(), 13,rgb_t(0x5F, 0x5F, 0x5F));
- palette_set_color(machine(), 14,rgb_t(0xB0, 0xB0, 0xB0));
- palette_set_color(machine(), 15,rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(0, rgb_t(0xFF, 0xFF, 0xFF)); /* 2 color tiles */
+ palette.set_pen_color(1, rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(2, rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(3, rgb_t(0xFF, 0xFF, 0xFF));
+ palette.set_pen_color(4, rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(5, rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(6, rgb_t(0xFF, 0xFF, 0xFF));
+ palette.set_pen_color(7, rgb_t(0xFF, 0xFF, 0xFF));
+ palette.set_pen_color(8, rgb_t(0xFF, 0xFF, 0xFF)); /* 4 color tiles */
+ palette.set_pen_color(9, rgb_t(0xB0, 0xB0, 0xB0));
+ palette.set_pen_color(10,rgb_t(0x5F, 0x5F, 0x5F));
+ palette.set_pen_color(11,rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(12,rgb_t(0xFF, 0xFF, 0xFF));
+ palette.set_pen_color(13,rgb_t(0x5F, 0x5F, 0x5F));
+ palette.set_pen_color(14,rgb_t(0xB0, 0xB0, 0xB0));
+ palette.set_pen_color(15,rgb_t(0x00, 0x00, 0x00));
}
@@ -339,7 +339,8 @@ static MACHINE_CONFIG_START( dragrace, dragrace_state )
MCFG_SCREEN_UPDATE_DRIVER(dragrace_state, screen_update_dragrace)
MCFG_GFXDECODE_ADD("gfxdecode", dragrace)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(dragrace_state, dragrace)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/dreambal.c b/src/mame/drivers/dreambal.c
index 3bdb59c9561..3e8c0ee196f 100644
--- a/src/mame/drivers/dreambal.c
+++ b/src/mame/drivers/dreambal.c
@@ -114,7 +114,7 @@ static ADDRESS_MAP_START( dreambal_map, AS_PROGRAM, 16, dreambal_state )
AM_RANGE(0x103000, 0x103fff) AM_RAM
AM_RANGE(0x120000, 0x123fff) AM_RAM
- AM_RANGE(0x140000, 0x1403ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x140000, 0x1403ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x161000, 0x16100f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w)
AM_RANGE(0x160000, 0x163fff) AM_READWRITE(dreambal_protection_region_0_104_r,dreambal_protection_region_0_104_w)AM_SHARE("prot16ram") /* Protection device */
@@ -325,7 +325,8 @@ static MACHINE_CONFIG_START( dreambal, dreambal_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_DRIVER(dreambal_state, screen_update_dreambal)
- MCFG_PALETTE_LENGTH(0x400/2)
+ MCFG_PALETTE_ADD("palette", 0x400/2)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_GFXDECODE_ADD("gfxdecode", dreambal)
MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") // 93lc46b
@@ -334,6 +335,7 @@ static MACHINE_CONFIG_START( dreambal, dreambal_state )
MCFG_DECO16IC_ADD("tilegen1", dreambal_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/dreamwld.c b/src/mame/drivers/dreamwld.c
index 9817120930e..193ba3577e6 100644
--- a/src/mame/drivers/dreamwld.c
+++ b/src/mame/drivers/dreamwld.c
@@ -224,10 +224,10 @@ void dreamwld_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
{
for (xct = 0; xct < xsize; xct++)
{
- gfx->transpen(bitmap,cliprect, redirect[tileno], colour, xflip, yflip, xpos + xct * xinc, ypos + yct * yinc, 0);
- gfx->transpen(bitmap,cliprect, redirect[tileno], colour, xflip, yflip, (xpos + xct * xinc) - 0x200, ypos + yct * yinc, 0);
- gfx->transpen(bitmap,cliprect, redirect[tileno], colour, xflip, yflip, (xpos + xct * xinc) - 0x200, (ypos + yct * yinc) - 0x200, 0);
- gfx->transpen(bitmap,cliprect, redirect[tileno], colour, xflip, yflip, xpos + xct * xinc, (ypos + yct * yinc) - 0x200 , 0);
+ gfx->transpen(m_palette,bitmap,cliprect, redirect[tileno], colour, xflip, yflip, xpos + xct * xinc, ypos + yct * yinc, 0);
+ gfx->transpen(m_palette,bitmap,cliprect, redirect[tileno], colour, xflip, yflip, (xpos + xct * xinc) - 0x200, ypos + yct * yinc, 0);
+ gfx->transpen(m_palette,bitmap,cliprect, redirect[tileno], colour, xflip, yflip, (xpos + xct * xinc) - 0x200, (ypos + yct * yinc) - 0x200, 0);
+ gfx->transpen(m_palette,bitmap,cliprect, redirect[tileno], colour, xflip, yflip, xpos + xct * xinc, (ypos + yct * yinc) - 0x200 , 0);
tileno++;
}
@@ -455,10 +455,10 @@ WRITE32_MEMBER(dreamwld_state::dreamwld_palette_w)
color = offset * 2;
dat = m_paletteram[offset] & 0x7fff;
- palette_set_color_rgb(machine(), color+1, pal5bit(dat >> 10), pal5bit(dat >> 5), pal5bit(dat >> 0));
+ m_palette->set_pen_color(color+1, pal5bit(dat >> 10), pal5bit(dat >> 5), pal5bit(dat >> 0));
dat = (m_paletteram[offset] >> 16) & 0x7fff;
- palette_set_color_rgb(machine(), color, pal5bit(dat >> 10), pal5bit(dat >> 5), pal5bit(dat >> 0));
+ m_palette->set_pen_color(color, pal5bit(dat >> 10), pal5bit(dat >> 5), pal5bit(dat >> 0));
}
@@ -602,7 +602,7 @@ static MACHINE_CONFIG_START( baryon, dreamwld_state )
MCFG_SCREEN_UPDATE_DRIVER(dreamwld_state, screen_update_dreamwld)
MCFG_SCREEN_VBLANK_DRIVER(dreamwld_state, screen_eof_dreamwld)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
MCFG_GFXDECODE_ADD("gfxdecode", dreamwld)
diff --git a/src/mame/drivers/drgnmst.c b/src/mame/drivers/drgnmst.c
index beaf1da5194..5691560c22a 100644
--- a/src/mame/drivers/drgnmst.c
+++ b/src/mame/drivers/drgnmst.c
@@ -197,7 +197,7 @@ static ADDRESS_MAP_START( drgnmst_main_map, AS_PROGRAM, 16, drgnmst_state )
AM_RANGE(0x800180, 0x800181) AM_WRITE(drgnmst_snd_command_w)
AM_RANGE(0x800188, 0x800189) AM_WRITE(drgnmst_snd_flag_w)
AM_RANGE(0x8001e0, 0x8001e1) AM_WRITENOP
- AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x900000, 0x903fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x904000, 0x907fff) AM_RAM_WRITE(drgnmst_md_videoram_w) AM_SHARE("md_videoram")
AM_RANGE(0x908000, 0x90bfff) AM_RAM_WRITE(drgnmst_bg_videoram_w) AM_SHARE("bg_videoram")
AM_RANGE(0x90c000, 0x90ffff) AM_RAM_WRITE(drgnmst_fg_videoram_w) AM_SHARE("fg_videoram")
@@ -409,8 +409,8 @@ static MACHINE_CONFIG_START( drgnmst, drgnmst_state )
MCFG_SCREEN_VISIBLE_AREA(8*8, 56*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(drgnmst_state, screen_update_drgnmst)
- MCFG_PALETTE_LENGTH(0x2000)
-
+ MCFG_PALETTE_ADD("palette", 0x2000)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/dribling.c b/src/mame/drivers/dribling.c
index debaf209333..8bc4301cc20 100644
--- a/src/mame/drivers/dribling.c
+++ b/src/mame/drivers/dribling.c
@@ -314,8 +314,8 @@ static MACHINE_CONFIG_START( dribling, dribling_state )
MCFG_SCREEN_VISIBLE_AREA(0, 255, 40, 255)
MCFG_SCREEN_UPDATE_DRIVER(dribling_state, screen_update_dribling)
- MCFG_PALETTE_LENGTH(256)
-
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(dribling_state, dribling)
/* sound hardware */
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/drmicro.c b/src/mame/drivers/drmicro.c
index 6eafe6fb0df..f6c2f4b0214 100644
--- a/src/mame/drivers/drmicro.c
+++ b/src/mame/drivers/drmicro.c
@@ -259,8 +259,8 @@ static MACHINE_CONFIG_START( drmicro, drmicro_state )
MCFG_SCREEN_UPDATE_DRIVER(drmicro_state, screen_update_drmicro)
MCFG_GFXDECODE_ADD("gfxdecode", drmicro)
- MCFG_PALETTE_LENGTH(512)
-
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_INIT_OWNER(drmicro_state, drmicro)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/drtomy.c b/src/mame/drivers/drtomy.c
index b7fc0fd3f09..8792189ccfe 100644
--- a/src/mame/drivers/drtomy.c
+++ b/src/mame/drivers/drtomy.c
@@ -120,7 +120,7 @@ void drtomy_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
ex = xflip ? (spr_size - 1 - x) : x;
ey = yflip ? (spr_size - 1 - y) : y;
- gfx->transpen(bitmap,cliprect,number + x_offset[ex] + y_offset[ey],
+ gfx->transpen(m_palette,bitmap,cliprect,number + x_offset[ex] + y_offset[ey],
color,xflip,yflip,
sx-0x09+x*8,sy+y*8,0);
}
@@ -171,7 +171,7 @@ static ADDRESS_MAP_START( drtomy_map, AS_PROGRAM, 16, drtomy_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM /* ROM */
AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(drtomy_vram_fg_w) AM_SHARE("videorafg") /* Video RAM FG */
AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(drtomy_vram_bg_w) AM_SHARE("videorabg") /* Video RAM BG */
- AM_RANGE(0x200000, 0x2007ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") /* Palette */
+ AM_RANGE(0x200000, 0x2007ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* Palette */
AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW1")
AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW2")
@@ -311,7 +311,8 @@ static MACHINE_CONFIG_START( drtomy, drtomy_state )
MCFG_SCREEN_UPDATE_DRIVER(drtomy_state, screen_update_drtomy)
MCFG_GFXDECODE_ADD("gfxdecode", drtomy)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
diff --git a/src/mame/drivers/drw80pkr.c b/src/mame/drivers/drw80pkr.c
index 451ed646f08..5048bbe7c50 100644
--- a/src/mame/drivers/drw80pkr.c
+++ b/src/mame/drivers/drw80pkr.c
@@ -71,7 +71,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void machine_start();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(drw80pkr);
UINT32 screen_update_drw80pkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -350,12 +350,12 @@ UINT32 drw80pkr_state::screen_update_drw80pkr(screen_device &screen, bitmap_ind1
return 0;
}
-void drw80pkr_state::palette_init()
+PALETTE_INIT_MEMBER(drw80pkr_state, drw80pkr)
{
const UINT8 *color_prom = memregion("proms")->base();
int j;
- for (j = 0; j < machine().total_colors(); j++)
+ for (j = 0; j < palette.entries(); j++)
{
int r, g, b, tr, tg, tb, i;
@@ -374,7 +374,7 @@ void drw80pkr_state::palette_init()
tb = 0xf0 - (0xf0 * ((color_prom[j] >> 2) & 0x01));
b = tb - (i * (tb / 5));
- palette_set_color(machine(), j, rgb_t(r, g, b));
+ palette.set_pen_color(j, rgb_t(r, g, b));
}
}
@@ -483,8 +483,8 @@ static MACHINE_CONFIG_START( drw80pkr, drw80pkr_state )
MCFG_SCREEN_UPDATE_DRIVER(drw80pkr_state, screen_update_drw80pkr)
MCFG_GFXDECODE_ADD("gfxdecode", drw80pkr)
- MCFG_PALETTE_LENGTH(16*16)
-
+ MCFG_PALETTE_ADD("palette", 16*16)
+ MCFG_PALETTE_INIT_OWNER(drw80pkr_state, drw80pkr)
MCFG_NVRAM_ADD_0FILL("nvram")
diff --git a/src/mame/drivers/dunhuang.c b/src/mame/drivers/dunhuang.c
index 27b2e0b73a4..ad04a3a4074 100644
--- a/src/mame/drivers/dunhuang.c
+++ b/src/mame/drivers/dunhuang.c
@@ -177,7 +177,7 @@ if (machine().input().code_pressed(KEYCODE_Z))
}
#endif
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
switch (m_layers)
{
@@ -403,7 +403,7 @@ WRITE8_MEMBER(dunhuang_state::dunhuang_paldata_w)
{
m_paldata[m_paloffs] = data;
- palette_set_color_rgb( machine(), m_paloffs/3,
+ m_palette->set_pen_color( m_paloffs/3,
pal6bit(m_paldata[(m_paloffs/3)*3+0]),
pal6bit(m_paldata[(m_paloffs/3)*3+1]),
pal6bit(m_paldata[(m_paloffs/3)*3+2])
@@ -835,7 +835,7 @@ static MACHINE_CONFIG_START( dunhuang, dunhuang_state )
MCFG_SCREEN_UPDATE_DRIVER(dunhuang_state, screen_update_dunhuang)
MCFG_GFXDECODE_ADD("gfxdecode", dunhuang)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
/* sound hardware */
diff --git a/src/mame/drivers/dwarfd.c b/src/mame/drivers/dwarfd.c
index 0a91dc745d6..89b711d57e6 100644
--- a/src/mame/drivers/dwarfd.c
+++ b/src/mame/drivers/dwarfd.c
@@ -351,7 +351,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(dwarfd);
UINT32 screen_update_dwarfd(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(dwarfd_interrupt);
void drawCrt( bitmap_rgb32 &bitmap,const rectangle &cliprect );
@@ -837,7 +837,7 @@ void dwarfd_state::drawCrt( bitmap_rgb32 &bitmap,const rectangle &cliprect )
else
b = 1;
}
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
tile + (m_bank + bank2) * 128,
0,
0, 0,
@@ -849,7 +849,7 @@ void dwarfd_state::drawCrt( bitmap_rgb32 &bitmap,const rectangle &cliprect )
UINT32 dwarfd_state::screen_update_dwarfd(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
drawCrt(bitmap, cliprect);
return 0;
}
@@ -978,7 +978,7 @@ static GFXDECODE_START( dwarfd )
GFXDECODE_ENTRY( "gfx2", 0, tiles8x8_layout3, 0, 16 )
GFXDECODE_END
-void dwarfd_state::palette_init()
+PALETTE_INIT_MEMBER(dwarfd_state, dwarfd)
{
int i;
@@ -989,12 +989,12 @@ void dwarfd_state::palette_init()
int b = machine().rand()|0x80;
if (i == 0) r = g = b = 0;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
- palette_set_color(machine(), 8, rgb_t(255, 255, 0));
- palette_set_color(machine(), 12, rgb_t(127, 127, 255));
- palette_set_color(machine(), 4, rgb_t(0, 255, 0));
- palette_set_color(machine(), 6, rgb_t(255, 0, 0));
+ palette.set_pen_color(8, rgb_t(255, 255, 0));
+ palette.set_pen_color(12, rgb_t(127, 127, 255));
+ palette.set_pen_color(4, rgb_t(0, 255, 0));
+ palette.set_pen_color(6, rgb_t(255, 0, 0));
}
static const ay8910_interface ay8910_config =
@@ -1070,8 +1070,8 @@ static MACHINE_CONFIG_START( dwarfd, dwarfd_state )
MCFG_SCREEN_UPDATE_DRIVER(dwarfd_state, screen_update_dwarfd)
MCFG_GFXDECODE_ADD("gfxdecode", dwarfd)
- MCFG_PALETTE_LENGTH(0x100)
-
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_INIT_OWNER(dwarfd_state, dwarfd)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("aysnd", AY8910, 1500000)
diff --git a/src/mame/drivers/dynadice.c b/src/mame/drivers/dynadice.c
index 7f1c6efceef..ea4f774ec02 100644
--- a/src/mame/drivers/dynadice.c
+++ b/src/mame/drivers/dynadice.c
@@ -66,7 +66,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(dynadice);
UINT32 screen_update_dynadice(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -225,11 +225,11 @@ UINT32 dynadice_state::screen_update_dynadice(screen_device &screen, bitmap_ind1
return 0;
}
-void dynadice_state::palette_init()
+PALETTE_INIT_MEMBER(dynadice_state, dynadice)
{
int i;
for(i = 0; i < 8; i++)
- palette_set_color_rgb(machine(), i, pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 0));
+ palette.set_pen_color(i, pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 0));
}
void dynadice_state::machine_start()
@@ -265,8 +265,8 @@ static MACHINE_CONFIG_START( dynadice, dynadice_state )
MCFG_SCREEN_UPDATE_DRIVER(dynadice_state, screen_update_dynadice)
MCFG_GFXDECODE_ADD("gfxdecode", dynadice)
- MCFG_PALETTE_LENGTH(8)
-
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(dynadice_state, dynadice)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/dynax.c b/src/mame/drivers/dynax.c
index 9c67fd4bab1..1543e389d55 100644
--- a/src/mame/drivers/dynax.c
+++ b/src/mame/drivers/dynax.c
@@ -325,7 +325,7 @@ WRITE8_MEMBER(dynax_state::hnoridur_palette_w)
int r = BITSWAP8((x >> 0) & 0x1f, 7, 6, 5, 0, 1, 2, 3, 4);
int g = BITSWAP8((x >> 5) & 0x1f, 7, 6, 5, 0, 1, 2, 3, 4);
int b = BITSWAP8((x >> 10) & 0x1f, 7, 6, 5, 0, 1, 2, 3, 4);
- palette_set_color_rgb(machine(), 256 * m_palbank + offset, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(256 * m_palbank + offset, pal5bit(r), pal5bit(g), pal5bit(b));
}
}
@@ -358,7 +358,7 @@ WRITE8_MEMBER(dynax_state::yarunara_palette_w)
int r = br & 0x1f;
int g = bg & 0x1f;
int b = ((bg & 0xc0) >> 3) | ((br & 0xe0) >> 5);
- palette_set_color_rgb(machine(), 256 * m_palbank + ((offset & 0x0f) | ((offset & 0x1e0) >> 1)), pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(256 * m_palbank + ((offset & 0x0f) | ((offset & 0x1e0) >> 1)), pal5bit(r), pal5bit(g), pal5bit(b));
}
}
@@ -385,7 +385,7 @@ WRITE8_MEMBER(dynax_state::nanajign_palette_w)
int r = br & 0x1f;
int g = bg & 0x1f;
int b = ((bg & 0xc0) >> 3) | ((br & 0xe0) >> 5);
- palette_set_color_rgb(machine(), 256 * m_palbank + offset, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(256 * m_palbank + offset, pal5bit(r), pal5bit(g), pal5bit(b));
}
}
@@ -1211,7 +1211,7 @@ WRITE8_MEMBER(dynax_state::tenkai_palette_w)
int r = br & 0x1f;
int g = bg & 0x1f;
int b = ((bg & 0xc0) >> 3) | ((br & 0xe0) >> 5);
- palette_set_color_rgb(machine(), 256 * m_palbank + ((offset & 0xf) | ((offset & 0x1e0) >> 1)), pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(256 * m_palbank + ((offset & 0xf) | ((offset & 0x1e0) >> 1)), pal5bit(r), pal5bit(g), pal5bit(b));
}
}
@@ -4103,9 +4103,9 @@ static MACHINE_CONFIG_START( hanamai, dynax_state )
MCFG_SCREEN_VISIBLE_AREA(0, 512-1-4, 16+8, 255-8)
MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_hanamai)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
- MCFG_PALETTE_INIT_OVERRIDE(dynax_state,sprtmtch) // static palette
+ MCFG_PALETTE_INIT_OWNER(dynax_state,sprtmtch) // static palette
MCFG_VIDEO_START_OVERRIDE(dynax_state,hanamai)
/* sound hardware */
@@ -4161,7 +4161,7 @@ static MACHINE_CONFIG_START( hnoridur, dynax_state )
MCFG_SCREEN_VISIBLE_AREA(0, 512-1-4, 16, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_hnoridur)
- MCFG_PALETTE_LENGTH(16*256)
+ MCFG_PALETTE_ADD("palette", 16*256)
MCFG_VIDEO_START_OVERRIDE(dynax_state,hnoridur)
@@ -4206,7 +4206,7 @@ static MACHINE_CONFIG_START( hjingi, dynax_state )
MCFG_SCREEN_VISIBLE_AREA(0, 512-1-4, 16, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_hnoridur)
- MCFG_PALETTE_LENGTH(16*256)
+ MCFG_PALETTE_ADD("palette", 16*256)
MCFG_VIDEO_START_OVERRIDE(dynax_state,hnoridur)
@@ -4261,9 +4261,9 @@ static MACHINE_CONFIG_START( sprtmtch, dynax_state )
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_sprtmtch)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
- MCFG_PALETTE_INIT_OVERRIDE(dynax_state,sprtmtch) // static palette
+ MCFG_PALETTE_INIT_OWNER(dynax_state,sprtmtch) // static palette
MCFG_VIDEO_START_OVERRIDE(dynax_state,sprtmtch)
/* sound hardware */
@@ -4304,9 +4304,9 @@ static MACHINE_CONFIG_START( mjfriday, dynax_state )
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_mjdialq2)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
- MCFG_PALETTE_INIT_OVERRIDE(dynax_state,sprtmtch) // static palette
+ MCFG_PALETTE_INIT_OWNER(dynax_state,sprtmtch) // static palette
MCFG_VIDEO_START_OVERRIDE(dynax_state,mjdialq2)
/* sound hardware */
@@ -4454,7 +4454,8 @@ static MACHINE_CONFIG_START( jantouki, dynax_state )
MCFG_NVRAM_ADD_0FILL("nvram")
/* video hardware */
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_INIT_OWNER(dynax_state,sprtmtch) // static palette
MCFG_DEFAULT_LAYOUT(layout_dualhuov)
MCFG_SCREEN_ADD("top", RASTER)
@@ -4471,7 +4472,6 @@ static MACHINE_CONFIG_START( jantouki, dynax_state )
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_jantouki_bottom)
- MCFG_PALETTE_INIT_OVERRIDE(dynax_state,sprtmtch) // static palette
MCFG_VIDEO_START_OVERRIDE(dynax_state,jantouki)
/* sound hardware */
@@ -4497,7 +4497,8 @@ static MACHINE_CONFIG_START( jantouki, dynax_state )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( janyuki, jantouki )
- MCFG_PALETTE_INIT_OVERRIDE(dynax_state,janyuki) // static palette
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(dynax_state,janyuki) // static palette
MACHINE_CONFIG_END
@@ -4660,7 +4661,7 @@ static MACHINE_CONFIG_START( tenkai, dynax_state )
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_DRIVER(dynax_state, screen_update_hnoridur)
- MCFG_PALETTE_LENGTH(16*256)
+ MCFG_PALETTE_ADD("palette", 16*256)
MCFG_VIDEO_START_OVERRIDE(dynax_state,mjelctrn)
@@ -4679,8 +4680,9 @@ static MACHINE_CONFIG_START( tenkai, dynax_state )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( majrjhdx, tenkai )
- MCFG_PALETTE_LENGTH(512)
- MCFG_PALETTE_INIT_OVERRIDE(dynax_state,sprtmtch) // static palette
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_INIT_OWNER(dynax_state,sprtmtch) // static palette
MACHINE_CONFIG_END
/***************************************************************************
@@ -4727,8 +4729,8 @@ static MACHINE_CONFIG_START( gekisha, dynax_state )
MCFG_SCREEN_VISIBLE_AREA(2, 256-1, 16, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_mjdialq2)
- MCFG_PALETTE_LENGTH(512)
- MCFG_PALETTE_INIT_OVERRIDE(dynax_state,sprtmtch) // static palette
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_INIT_OWNER(dynax_state,sprtmtch) // static palette
MCFG_VIDEO_START_OVERRIDE(dynax_state,mjdialq2)
/* sound hardware */
diff --git a/src/mame/drivers/dynduke.c b/src/mame/drivers/dynduke.c
index 91b79f0d61a..041c4176969 100644
--- a/src/mame/drivers/dynduke.c
+++ b/src/mame/drivers/dynduke.c
@@ -296,7 +296,7 @@ static MACHINE_CONFIG_START( dynduke, dynduke_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", dynduke)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
// sound hardware
diff --git a/src/mame/drivers/egghunt.c b/src/mame/drivers/egghunt.c
index fbb22c082b1..289bb88ac64 100644
--- a/src/mame/drivers/egghunt.c
+++ b/src/mame/drivers/egghunt.c
@@ -121,7 +121,7 @@ void egghunt_state::draw_sprites( bitmap_ind16 &bitmap,const rectangle &cliprect
sx = 496 - sx;
sy = 240 - sy;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipscreen,flipscreen,
@@ -227,7 +227,7 @@ WRITE8_MEMBER(egghunt_state::egghunt_okibanking_w)
static ADDRESS_MAP_START( egghunt_map, AS_PROGRAM, 8, egghunt_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0xc000, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(egghunt_atram_w) AM_SHARE("atram")
AM_RANGE(0xd000, 0xdfff) AM_READWRITE(egghunt_bgram_r, egghunt_bgram_w)
AM_RANGE(0xe000, 0xffff) AM_RAM
@@ -429,8 +429,9 @@ static MACHINE_CONFIG_START( egghunt, egghunt_state )
MCFG_SCREEN_UPDATE_DRIVER(egghunt_state, screen_update_egghunt)
MCFG_GFXDECODE_ADD("gfxdecode", egghunt)
- MCFG_PALETTE_LENGTH(0x400)
+ MCFG_PALETTE_ADD("palette", 0x400)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/eolith.c b/src/mame/drivers/eolith.c
index 8ccf2ede085..4c166abbdbd 100644
--- a/src/mame/drivers/eolith.c
+++ b/src/mame/drivers/eolith.c
@@ -592,8 +592,7 @@ static MACHINE_CONFIG_START( eolith45, eolith_state )
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_DRIVER(eolith_state, screen_update_eolith)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRRR_GGGGG_BBBBB)
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB("palette")
MCFG_VIDEO_START_OVERRIDE(eolith_state,eolith)
diff --git a/src/mame/drivers/eolith16.c b/src/mame/drivers/eolith16.c
index d9edbc83801..ce511d71275 100644
--- a/src/mame/drivers/eolith16.c
+++ b/src/mame/drivers/eolith16.c
@@ -158,7 +158,7 @@ PALETTE_INIT_MEMBER(eolith16_state,eolith16)
bit1 = (c >> 7) & 0x01;
b = 0x55 * bit0 + 0xaa * bit1;
- palette_set_color(machine(),c,rgb_t(r,g,b));
+ palette.set_pen_color(c,rgb_t(r,g,b));
}
}
@@ -179,9 +179,9 @@ static MACHINE_CONFIG_START( eolith16, eolith16_state )
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 199)
MCFG_SCREEN_UPDATE_DRIVER(eolith16_state, screen_update_eolith16)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
- MCFG_PALETTE_INIT_OVERRIDE(eolith16_state,eolith16)
+ MCFG_PALETTE_INIT_OWNER(eolith16_state,eolith16)
MCFG_VIDEO_START_OVERRIDE(eolith16_state,eolith16)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/eprom.c b/src/mame/drivers/eprom.c
index a528a039829..05d665cd801 100644
--- a/src/mame/drivers/eprom.c
+++ b/src/mame/drivers/eprom.c
@@ -398,7 +398,7 @@ static MACHINE_CONFIG_START( eprom, eprom_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", eprom)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_TILEMAP_ADD_STANDARD("playfield", 2, eprom_state, get_playfield_tile_info, 8,8, SCAN_COLS, 64,64)
MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha", 2, eprom_state, get_alpha_tile_info, 8,8, SCAN_ROWS, 64,32, 0)
@@ -439,7 +439,7 @@ static MACHINE_CONFIG_START( klaxp, eprom_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", eprom)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_TILEMAP_ADD_STANDARD("playfield", 2, eprom_state, get_playfield_tile_info, 8,8, SCAN_COLS, 64,64)
MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha", 2, eprom_state, get_alpha_tile_info, 8,8, SCAN_ROWS, 64,32, 0)
@@ -479,7 +479,7 @@ static MACHINE_CONFIG_START( guts, eprom_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", guts)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_TILEMAP_ADD_STANDARD("playfield", 2, eprom_state, guts_get_playfield_tile_info, 8,8, SCAN_COLS, 64,64)
MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha", 2, eprom_state, get_alpha_tile_info, 8,8, SCAN_ROWS, 64,32, 0)
diff --git a/src/mame/drivers/equites.c b/src/mame/drivers/equites.c
index 832bd34fdfa..caa73799646 100644
--- a/src/mame/drivers/equites.c
+++ b/src/mame/drivers/equites.c
@@ -1240,8 +1240,8 @@ static MACHINE_CONFIG_START( equites, equites_state )
MCFG_SCREEN_UPDATE_DRIVER(equites_state, screen_update_equites)
MCFG_GFXDECODE_ADD("gfxdecode", equites)
- MCFG_PALETTE_LENGTH(0x180)
- MCFG_PALETTE_INIT_OVERRIDE(equites_state,equites)
+ MCFG_PALETTE_ADD("palette", 0x180)
+ MCFG_PALETTE_INIT_OWNER(equites_state,equites)
MCFG_VIDEO_START_OVERRIDE(equites_state,equites)
MCFG_MACHINE_START_OVERRIDE(equites_state,equites)
@@ -1277,8 +1277,8 @@ static MACHINE_CONFIG_START( splndrbt, equites_state )
MCFG_SCREEN_UPDATE_DRIVER(equites_state, screen_update_splndrbt)
MCFG_GFXDECODE_ADD("gfxdecode", splndrbt)
- MCFG_PALETTE_LENGTH(0x280)
- MCFG_PALETTE_INIT_OVERRIDE(equites_state,splndrbt)
+ MCFG_PALETTE_ADD("palette", 0x280)
+ MCFG_PALETTE_INIT_OWNER(equites_state,splndrbt)
MCFG_VIDEO_START_OVERRIDE(equites_state,splndrbt)
MCFG_MACHINE_START_OVERRIDE(equites_state,equites)
diff --git a/src/mame/drivers/ertictac.c b/src/mame/drivers/ertictac.c
index ea7a1140014..75ad4014c0a 100644
--- a/src/mame/drivers/ertictac.c
+++ b/src/mame/drivers/ertictac.c
@@ -239,7 +239,7 @@ static MACHINE_CONFIG_START( ertictac, ertictac_state )
MCFG_SCREEN_VISIBLE_AREA(0, 1280-1, 0, 1024-1)
MCFG_SCREEN_UPDATE_DRIVER(archimedes_state, screen_update)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_DAC_ADD("dac0")
diff --git a/src/mame/drivers/esd16.c b/src/mame/drivers/esd16.c
index aaeaa179bcb..37b167fa9d8 100644
--- a/src/mame/drivers/esd16.c
+++ b/src/mame/drivers/esd16.c
@@ -146,7 +146,7 @@ WRITE16_MEMBER(esd16_state::esd_eeprom_w)
AM_RANGE(_BASE + 0xc, _BASE + 0xd) AM_WRITENOP \
AM_RANGE(_BASE + 0xe, _BASE + 0xf) AM_WRITEONLY AM_SHARE("head_layersize")
#define ESD16_PALETTE_AREA( _BASE ) \
- AM_RANGE(_BASE + 0x000, _BASE + 0xfff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(_BASE + 0x000, _BASE + 0xfff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
#define ESD16_SPRITE_AREA( _BASE ) \
AM_RANGE(_BASE + 0x000, _BASE + 0x7ff) AM_WRITEONLY AM_SHARE("spriteram") AM_MIRROR(0x000800)
#define ESD16_VRAM_AREA( _BASE ) \
@@ -627,9 +627,11 @@ static MACHINE_CONFIG_START( esd16, esd16_state )
decospr_device::set_pri_callback(*device, esd16_state::hedpanic_pri_callback);
decospr_device::set_flipallx(*device, 1);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", esd16)
- MCFG_PALETTE_LENGTH(0x1000/2)
+ MCFG_PALETTE_ADD("palette", 0x1000/2)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
diff --git a/src/mame/drivers/esh.c b/src/mame/drivers/esh.c
index 391e4309b6b..705c88b5bc2 100644
--- a/src/mame/drivers/esh.c
+++ b/src/mame/drivers/esh.c
@@ -55,7 +55,7 @@ public:
DECLARE_WRITE8_MEMBER(nmi_line_w);
DECLARE_DRIVER_INIT(esh);
virtual void machine_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(esh);
UINT32 screen_update_esh(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_callback_esh);
required_device<cpu_device> m_maincpu;
@@ -90,7 +90,7 @@ UINT32 esh_state::screen_update_esh(screen_device &screen, bitmap_rgb32 &bitmap,
//int blinkLine = (m_tile_control_ram[current_screen_character] & 0x40) >> 6;
//int blinkChar = (m_tile_control_ram[current_screen_character] & 0x80) >> 7;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
m_tile_ram[current_screen_character] + (0x100 * tileOffs),
palIndex,
0, 0, charx*8, chary*8, 0);
@@ -238,13 +238,13 @@ static INPUT_PORTS_START( esh )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
-void esh_state::palette_init()
+PALETTE_INIT_MEMBER(esh_state, esh)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
/* Oddly enough, the top 4 bits of each byte is 0 */
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int r,g,b;
int bit0,bit1,bit2;
@@ -269,11 +269,11 @@ void esh_state::palette_init()
bit2 = (color_prom[i+0x100] >> 6) & 0x01;
b = (0x97 * bit2) + (0x47 * bit1) + (0x21 * bit0);
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
/* make color 0 transparent */
- palette_set_color(machine(), 0, rgb_t(0,0,0,0));
+ palette.set_pen_color(0, rgb_t(0,0,0,0));
}
static const gfx_layout esh_gfx_layout =
@@ -333,7 +333,8 @@ static MACHINE_CONFIG_START( esh, esh_state )
/* video hardware */
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(esh_state, esh)
MCFG_GFXDECODE_ADD("gfxdecode", esh)
diff --git a/src/mame/drivers/espial.c b/src/mame/drivers/espial.c
index da47b8c1b65..310e6bc30bc 100644
--- a/src/mame/drivers/espial.c
+++ b/src/mame/drivers/espial.c
@@ -332,8 +332,8 @@ static MACHINE_CONFIG_START( espial, espial_state )
MCFG_SCREEN_UPDATE_DRIVER(espial_state, screen_update_espial)
MCFG_GFXDECODE_ADD("gfxdecode", espial)
- MCFG_PALETTE_LENGTH(256)
-
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(espial_state, espial)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/ettrivia.c b/src/mame/drivers/ettrivia.c
index 6ca896618be..975b805a49b 100644
--- a/src/mame/drivers/ettrivia.c
+++ b/src/mame/drivers/ettrivia.c
@@ -61,7 +61,7 @@ public:
TILE_GET_INFO_MEMBER(get_tile_info_bg);
TILE_GET_INFO_MEMBER(get_tile_info_fg);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(ettrivia);
UINT32 screen_update_ettrivia(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(ettrivia_interrupt);
inline void get_tile_info(tile_data &tileinfo, int tile_index, UINT8 *vidram, int gfx_code);
@@ -221,7 +221,7 @@ TILE_GET_INFO_MEMBER(ettrivia_state::get_tile_info_fg)
get_tile_info(tileinfo, tile_index, m_fg_videoram, 1);
}
-void ettrivia_state::palette_init()
+PALETTE_INIT_MEMBER(ettrivia_state, ettrivia)
{
const UINT8 *color_prom = memregion("proms")->base();
static const int resistances[2] = { 270, 130 };
@@ -234,7 +234,7 @@ void ettrivia_state::palette_init()
2, resistances, weights, 0, 0,
0, 0, 0, 0, 0);
- for (i = 0;i < machine().total_colors(); i++)
+ for (i = 0;i < palette.entries(); i++)
{
int bit0, bit1;
int r, g, b;
@@ -254,7 +254,7 @@ void ettrivia_state::palette_init()
bit1 = (color_prom[i+0x100] >> 1) & 0x01;
b = combine_2_weights(weights, bit0, bit1);
- palette_set_color(machine(), BITSWAP8(i,5,7,6,2,1,0,4,3), rgb_t(r, g, b));
+ palette.set_pen_color(BITSWAP8(i,5,7,6,2,1,0,4,3), rgb_t(r, g, b));
}
}
@@ -319,8 +319,8 @@ static MACHINE_CONFIG_START( ettrivia, ettrivia_state )
MCFG_SCREEN_UPDATE_DRIVER(ettrivia_state, screen_update_ettrivia)
MCFG_GFXDECODE_ADD("gfxdecode", ettrivia)
- MCFG_PALETTE_LENGTH(256)
-
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(ettrivia_state, ettrivia)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/exedexes.c b/src/mame/drivers/exedexes.c
index 1f586d4e782..1690d918b5d 100644
--- a/src/mame/drivers/exedexes.c
+++ b/src/mame/drivers/exedexes.c
@@ -235,8 +235,9 @@ static MACHINE_CONFIG_START( exedexes, exedexes_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", exedexes)
- MCFG_PALETTE_LENGTH(64*4+64*4+16*16+16*16)
-
+
+ MCFG_PALETTE_ADD("palette", 64*4+64*4+16*16+16*16)
+ MCFG_PALETTE_INIT_OWNER(exedexes_state, exedexes)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/exerion.c b/src/mame/drivers/exerion.c
index 3816735a5c4..66c80903dcc 100644
--- a/src/mame/drivers/exerion.c
+++ b/src/mame/drivers/exerion.c
@@ -420,8 +420,8 @@ static MACHINE_CONFIG_START( exerion, exerion_state )
MCFG_SCREEN_UPDATE_DRIVER(exerion_state, screen_update_exerion)
MCFG_GFXDECODE_ADD("gfxdecode", exerion)
- MCFG_PALETTE_LENGTH(256*3)
-
+ MCFG_PALETTE_ADD("palette", 256*3)
+ MCFG_PALETTE_INIT_OWNER(exerion_state, exerion)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/exidy.c b/src/mame/drivers/exidy.c
index 900a7b2043f..19c11aefb00 100644
--- a/src/mame/drivers/exidy.c
+++ b/src/mame/drivers/exidy.c
@@ -812,7 +812,7 @@ static MACHINE_CONFIG_START( base, exidy_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_GFXDECODE_ADD("gfxdecode", exidy)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(EXIDY_PIXEL_CLOCK, EXIDY_HTOTAL, EXIDY_HBEND, EXIDY_HBSTART, EXIDY_VTOTAL, EXIDY_VBEND, EXIDY_VBSTART)
diff --git a/src/mame/drivers/expro02.c b/src/mame/drivers/expro02.c
index e7939d3fa42..f506c1a79b0 100644
--- a/src/mame/drivers/expro02.c
+++ b/src/mame/drivers/expro02.c
@@ -181,14 +181,14 @@ public:
DECLARE_DRIVER_INIT(galsnew);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(expro02);
UINT32 screen_update_galsnew(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(expro02_scanline);
required_device<cpu_device> m_maincpu;
};
-void expro02_state::palette_init()
+PALETTE_INIT_MEMBER(expro02_state, expro02)
{
int i;
@@ -196,7 +196,7 @@ void expro02_state::palette_init()
/* initialize 555 RGB lookup */
for (i = 0; i < 32768; i++)
- palette_set_color_rgb(machine(),2048 + i,pal5bit(i >> 5),pal5bit(i >> 10),pal5bit(i >> 0));
+ palette.set_pen_color(2048 + i,pal5bit(i >> 5),pal5bit(i >> 10),pal5bit(i >> 0));
}
UINT32 expro02_state::screen_update_galsnew(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -418,7 +418,7 @@ WRITE16_MEMBER(expro02_state::galsnew_6295_bankswitch_w)
WRITE16_MEMBER(expro02_state::galsnew_paletteram_w)
{
data = COMBINE_DATA(&m_generic_paletteram_16[offset]);
- palette_set_color_rgb(machine(),offset,pal5bit(data >> 6),pal5bit(data >> 11),pal5bit(data >> 1));
+ m_palette->set_pen_color(offset,pal5bit(data >> 6),pal5bit(data >> 11),pal5bit(data >> 1));
}
@@ -560,7 +560,8 @@ static MACHINE_CONFIG_START( galsnew, expro02_state )
MCFG_SCREEN_UPDATE_DRIVER(expro02_state, screen_update_galsnew)
MCFG_GFXDECODE_ADD("gfxdecode", 1x4bit_1x4bit)
- MCFG_PALETTE_LENGTH(2048 + 32768)
+ MCFG_PALETTE_ADD("palette", 2048 + 32768)
+ MCFG_PALETTE_INIT_OWNER(expro02_state, expro02)
MCFG_DEVICE_ADD("view2_0", KANEKO_TMAP, 0)
kaneko_view2_tilemap_device::set_gfx_region(*device, 1);
diff --git a/src/mame/drivers/exprraid.c b/src/mame/drivers/exprraid.c
index 7e3cf4e649d..25e29e99e99 100644
--- a/src/mame/drivers/exprraid.c
+++ b/src/mame/drivers/exprraid.c
@@ -517,9 +517,7 @@ static MACHINE_CONFIG_START( exprraid, exprraid_state )
MCFG_SCREEN_UPDATE_DRIVER(exprraid_state, screen_update_exprraid)
MCFG_GFXDECODE_ADD("gfxdecode", exprraid)
- MCFG_PALETTE_LENGTH(256)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/exterm.c b/src/mame/drivers/exterm.c
index d3f771a0581..74c9187c379 100644
--- a/src/mame/drivers/exterm.c
+++ b/src/mame/drivers/exterm.c
@@ -283,7 +283,7 @@ static ADDRESS_MAP_START( master_map, AS_PROGRAM, 16, exterm_state )
AM_RANGE(0x01500000, 0x0153ffff) AM_MIRROR(0xfc000000) AM_WRITE(exterm_output_port_0_w)
AM_RANGE(0x01580000, 0x015bffff) AM_MIRROR(0xfc000000) AM_WRITE(sound_latch_w)
AM_RANGE(0x015c0000, 0x015fffff) AM_MIRROR(0xfc000000) AM_WRITE(watchdog_reset16_w)
- AM_RANGE(0x01800000, 0x01807fff) AM_MIRROR(0xfc7f8000) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x01800000, 0x01807fff) AM_MIRROR(0xfc7f8000) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x02800000, 0x02807fff) AM_MIRROR(0xfc7f8000) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x03000000, 0x03ffffff) AM_MIRROR(0xfc000000) AM_ROM AM_REGION("user1", 0)
ADDRESS_MAP_END
@@ -458,7 +458,9 @@ static MACHINE_CONFIG_START( exterm, exterm_state )
MCFG_TIMER_DRIVER_ADD("snd_nmi_timer", exterm_state, master_sound_nmi_callback)
/* video hardware */
- MCFG_PALETTE_LENGTH(2048+32768)
+ MCFG_PALETTE_ADD("palette", 2048+32768)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
+ MCFG_PALETTE_INIT_OWNER(exterm_state, exterm)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(40000000/8, 318, 0, 256, 264, 0, 240)
diff --git a/src/mame/drivers/exzisus.c b/src/mame/drivers/exzisus.c
index 4bde78db4ce..ecc6d286139 100644
--- a/src/mame/drivers/exzisus.c
+++ b/src/mame/drivers/exzisus.c
@@ -287,9 +287,7 @@ static MACHINE_CONFIG_START( exzisus, exzisus_state )
MCFG_SCREEN_UPDATE_DRIVER(exzisus_state, screen_update_exzisus)
MCFG_GFXDECODE_ADD("gfxdecode", exzisus)
- MCFG_PALETTE_LENGTH(1024)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 1024)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/f-32.c b/src/mame/drivers/f-32.c
index 1b693821c6a..600d872ad48 100644
--- a/src/mame/drivers/f-32.c
+++ b/src/mame/drivers/f-32.c
@@ -149,8 +149,7 @@ static MACHINE_CONFIG_START( mosaicf2, mosaicf2_state )
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 223)
MCFG_SCREEN_UPDATE_DRIVER(mosaicf2_state, screen_update_mosaicf2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRRR_GGGGG_BBBBB)
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/f1gp.c b/src/mame/drivers/f1gp.c
index 480e2f01e37..ced59e427ea 100644
--- a/src/mame/drivers/f1gp.c
+++ b/src/mame/drivers/f1gp.c
@@ -102,7 +102,7 @@ static ADDRESS_MAP_START( f1gp_cpu1_map, AS_PROGRAM, 16, f1gp_state )
AM_RANGE(0xff8000, 0xffbfff) AM_RAM // WORK RAM-1
AM_RANGE(0xffc000, 0xffcfff) AM_READWRITE(sharedram_r, sharedram_w) AM_SHARE("sharedram") // DUAL RAM
AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(f1gp_fgvideoram_w) AM_SHARE("fgvideoram") // CHARACTER
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // PALETTE
+ AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // PALETTE
AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("INPUTS")
AM_RANGE(0xfff000, 0xfff001) AM_WRITE(f1gp_gfxctrl_w)
// AM_RANGE(0xfff002, 0xfff003) analog wheel?
@@ -124,7 +124,7 @@ static ADDRESS_MAP_START( f1gp2_cpu1_map, AS_PROGRAM, 16, f1gp_state )
AM_RANGE(0xff8000, 0xffbfff) AM_RAM // WORK RAM-1
AM_RANGE(0xffc000, 0xffcfff) AM_READWRITE(sharedram_r, sharedram_w) AM_SHARE("sharedram") // DUAL RAM
AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(f1gp_fgvideoram_w) AM_SHARE("fgvideoram") // CHARACTER
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // PALETTE
+ AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // PALETTE
AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("INPUTS") AM_WRITE(f1gp2_gfxctrl_w)
// AM_RANGE(0xfff002, 0xfff003) analog wheel?
AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW1")
@@ -197,7 +197,7 @@ static ADDRESS_MAP_START( f1gpb_cpu1_map, AS_PROGRAM, 16, f1gp_state )
AM_RANGE(0xff8000, 0xffbfff) AM_RAM
AM_RANGE(0xffc000, 0xffcfff) AM_READWRITE(sharedram_r, sharedram_w) AM_SHARE("sharedram")
AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(f1gp_fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("INPUTS")
AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW1")
AM_RANGE(0xfff006, 0xfff007) AM_READ_PORT("DSW2")
@@ -462,19 +462,22 @@ static MACHINE_CONFIG_START( f1gp, f1gp_state )
MCFG_SCREEN_UPDATE_DRIVER(f1gp_state, screen_update_f1gp)
MCFG_GFXDECODE_ADD("gfxdecode", f1gp)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( f1gp_state, f1gp_old_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(1)
MCFG_VSYSTEM_SPR2_SET_PRITYPE(2)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
+ MCFG_VSYSTEM_SPR2_PALETTE("palette")
MCFG_DEVICE_ADD("vsystem_spr_ol2", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( f1gp_state, f1gp_ol2_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(2)
MCFG_VSYSTEM_SPR2_SET_PRITYPE(2)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
+ MCFG_VSYSTEM_SPR2_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(f1gp_state,f1gp)
@@ -517,7 +520,8 @@ static MACHINE_CONFIG_START( f1gpb, f1gp_state )
MCFG_SCREEN_UPDATE_DRIVER(f1gp_state, screen_update_f1gpb)
MCFG_GFXDECODE_ADD("gfxdecode", f1gp)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(f1gp_state,f1gpb)
@@ -547,6 +551,7 @@ static MACHINE_CONFIG_DERIVED( f1gp2, f1gp )
MCFG_VSYSTEM_SPR_SET_TILE_INDIRECT( f1gp_state, f1gp2_tile_callback )
MCFG_VSYSTEM_SPR_SET_GFXREGION(1)
MCFG_VSYSTEM_SPR_GFXDECODE("gfxdecode")
+ MCFG_VSYSTEM_SPR_PALETTE("palette")
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 ea2c058ead0..e35eab57dd2 100644
--- a/src/mame/drivers/famibox.c
+++ b/src/mame/drivers/famibox.c
@@ -116,7 +116,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(famibox);
UINT32 screen_update_famibox(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(famicombox_attract_timer_callback);
TIMER_CALLBACK_MEMBER(famicombox_gameplay_timer_callback);
@@ -516,9 +516,9 @@ static const nesapu_interface famibox_interface_1 =
"maincpu"
};
-void famibox_state::palette_init()
+PALETTE_INIT_MEMBER(famibox_state, famibox)
{
- m_ppu->init_palette(machine(), 0);
+ m_ppu->init_palette(palette, 0);
}
void famibox_state::ppu_irq(int *ppu_regs)
@@ -592,7 +592,8 @@ static MACHINE_CONFIG_START( famibox, famibox_state )
MCFG_SCREEN_UPDATE_DRIVER(famibox_state, screen_update_famibox)
MCFG_GFXDECODE_ADD("gfxdecode", famibox)
- MCFG_PALETTE_LENGTH(8*4*16)
+ MCFG_PALETTE_ADD("palette", 8*4*16)
+ MCFG_PALETTE_INIT_OWNER(famibox_state, famibox)
MCFG_PPU2C04_ADD("ppu", ppu_interface)
diff --git a/src/mame/drivers/fantland.c b/src/mame/drivers/fantland.c
index d71641ad8a2..08591b89032 100644
--- a/src/mame/drivers/fantland.c
+++ b/src/mame/drivers/fantland.c
@@ -123,7 +123,7 @@ static ADDRESS_MAP_START( fantland_map, AS_PROGRAM, 16, fantland_state )
AM_RANGE( 0x00000, 0x07fff ) AM_RAM
AM_RANGE( 0x08000, 0x7ffff ) AM_ROM
- AM_RANGE( 0xa2000, 0xa21ff ) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w ) AM_SHARE("paletteram")
+ AM_RANGE( 0xa2000, 0xa21ff ) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE( 0xa3000, 0xa3001 ) AM_READ_PORT("a3000") AM_WRITE(fantland_nmi_enable_16_w )
AM_RANGE( 0xa3002, 0xa3003 ) AM_READ_PORT("a3002") AM_WRITE(fantland_soundlatch_16_w )
@@ -143,7 +143,7 @@ static ADDRESS_MAP_START( galaxygn_map, AS_PROGRAM, 8, fantland_state )
AM_RANGE( 0x00000, 0x07fff ) AM_RAM
AM_RANGE( 0x10000, 0x2ffff ) AM_ROM
- AM_RANGE( 0x52000, 0x521ff ) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_byte_le_w ) AM_SHARE("paletteram")
+ AM_RANGE( 0x52000, 0x521ff ) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE( 0x53000, 0x53000 ) AM_READ_PORT("P1") AM_WRITE(fantland_nmi_enable_w )
AM_RANGE( 0x53001, 0x53001 ) AM_READ_PORT("P2")
@@ -235,7 +235,7 @@ static ADDRESS_MAP_START( borntofi_map, AS_PROGRAM, 8, fantland_state )
AM_RANGE( 0x00000, 0x07fff ) AM_RAM
AM_RANGE( 0x10000, 0x2ffff ) AM_ROM
- AM_RANGE( 0x52000, 0x521ff ) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_byte_le_w ) AM_SHARE("paletteram")
+ AM_RANGE( 0x52000, 0x521ff ) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE( 0x53000, 0x53001 ) AM_READWRITE(borntofi_inputs_r, borntofi_nmi_enable_w )
AM_RANGE( 0x53002, 0x53002 ) AM_READ_PORT( "DSW" ) AM_WRITE(fantland_soundlatch_w )
AM_RANGE( 0x53003, 0x53003 ) AM_READ_PORT( "Controls" )
@@ -264,7 +264,7 @@ static ADDRESS_MAP_START( wheelrun_map, AS_PROGRAM, 8, fantland_state )
AM_RANGE(0x30000, 0x3ffff) AM_ROM
AM_RANGE(0x70000, 0x7ffff) AM_ROM
- AM_RANGE(0x52000, 0x521ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_byte_le_w ) AM_SHARE( "paletteram" )
+ AM_RANGE(0x52000, 0x521ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x53000, 0x53000) AM_READ_PORT( "53000" ) AM_WRITE(borntofi_nmi_enable_w )
AM_RANGE(0x53001, 0x53001) AM_READ_PORT( "53001" )
@@ -861,8 +861,8 @@ static MACHINE_CONFIG_START( fantland, fantland_state )
MCFG_SCREEN_UPDATE_DRIVER(fantland_state, screen_update_fantland)
MCFG_GFXDECODE_ADD("gfxdecode", fantland)
- MCFG_PALETTE_LENGTH(256)
-
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -905,7 +905,8 @@ static MACHINE_CONFIG_START( galaxygn, fantland_state )
MCFG_SCREEN_UPDATE_DRIVER(fantland_state, screen_update_fantland)
MCFG_GFXDECODE_ADD("gfxdecode", fantland)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1003,7 +1004,8 @@ static MACHINE_CONFIG_START( borntofi, fantland_state )
MCFG_SCREEN_UPDATE_DRIVER(fantland_state, screen_update_fantland)
MCFG_GFXDECODE_ADD("gfxdecode", fantland)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1038,7 +1040,8 @@ static MACHINE_CONFIG_START( wheelrun, fantland_state )
MCFG_SCREEN_UPDATE_DRIVER(fantland_state, screen_update_fantland)
MCFG_GFXDECODE_ADD("gfxdecode", fantland)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/fastfred.c b/src/mame/drivers/fastfred.c
index 25f8f88a2bf..e120a7ec8be 100644
--- a/src/mame/drivers/fastfred.c
+++ b/src/mame/drivers/fastfred.c
@@ -654,9 +654,9 @@ static MACHINE_CONFIG_START( fastfred, fastfred_state )
MCFG_SCREEN_UPDATE_DRIVER(fastfred_state, screen_update_fastfred)
MCFG_GFXDECODE_ADD("gfxdecode", fastfred)
- MCFG_PALETTE_LENGTH(32*8)
+ MCFG_PALETTE_ADD("palette", 32*8)
- MCFG_PALETTE_INIT_OVERRIDE(fastfred_state,fastfred)
+ MCFG_PALETTE_INIT_OWNER(fastfred_state,fastfred)
MCFG_VIDEO_START_OVERRIDE(fastfred_state,fastfred)
/* sound hardware */
@@ -693,7 +693,8 @@ static MACHINE_CONFIG_DERIVED( imago, fastfred )
MCFG_MACHINE_START_OVERRIDE(fastfred_state,imago)
/* video hardware */
- MCFG_PALETTE_LENGTH(256+64+2) /* 256 for characters, 64 for the stars and 2 for the web */
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 256+64+2) /* 256 for characters, 64 for the stars and 2 for the web */
MCFG_GFXDECODE_MODIFY("gfxdecode", imago)
MCFG_VIDEO_START_OVERRIDE(fastfred_state,imago)
diff --git a/src/mame/drivers/fastlane.c b/src/mame/drivers/fastlane.c
index ae102fb23a1..ac5446b1102 100644
--- a/src/mame/drivers/fastlane.c
+++ b/src/mame/drivers/fastlane.c
@@ -218,9 +218,11 @@ static MACHINE_CONFIG_START( fastlane, fastlane_state )
MCFG_SCREEN_UPDATE_DRIVER(fastlane_state, screen_update_fastlane)
MCFG_GFXDECODE_ADD("gfxdecode", fastlane)
- MCFG_PALETTE_LENGTH(1024*16)
+ MCFG_PALETTE_ADD("palette", 1024*16)
+ MCFG_PALETTE_INIT_OWNER(fastlane_state, fastlane)
MCFG_K007121_ADD("k007121")
+ MCFG_K007121_PALETTE("palette")
MCFG_K051733_ADD("k051733")
/* sound hardware */
diff --git a/src/mame/drivers/fcombat.c b/src/mame/drivers/fcombat.c
index 55a590ddbfc..d4a3eee122e 100644
--- a/src/mame/drivers/fcombat.c
+++ b/src/mame/drivers/fcombat.c
@@ -295,8 +295,8 @@ static MACHINE_CONFIG_START( fcombat, fcombat_state )
MCFG_SCREEN_UPDATE_DRIVER(fcombat_state, screen_update_fcombat)
MCFG_GFXDECODE_ADD("gfxdecode", fcombat)
- MCFG_PALETTE_LENGTH(256*3)
-
+ MCFG_PALETTE_ADD("palette", 256*3)
+ MCFG_PALETTE_INIT_OWNER(fcombat_state, fcombat)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/fcrash.c b/src/mame/drivers/fcrash.c
index cc3dac07410..cb68d823707 100644
--- a/src/mame/drivers/fcrash.c
+++ b/src/mame/drivers/fcrash.c
@@ -513,7 +513,7 @@ void cps_state::fcrash_render_sprites( screen_device &screen, bitmap_ind16 &bitm
ypos = 256 - ypos - 16;
xpos = xpos + m_sprite_x_offset + 49;
- m_gfxdecode->gfx(2)->prio_transpen(bitmap,cliprect, tileno, colour, flipx, flipy, xpos, ypos, screen.priority(), 0x02, 15);
+ m_gfxdecode->gfx(2)->prio_transpen(m_palette,bitmap,cliprect, tileno, colour, flipx, flipy, xpos, ypos, screen.priority(), 0x02, 15);
}
}
}
@@ -571,7 +571,7 @@ void cps_state::fcrash_build_palette()
g = ((palette >> 4) & 0x0f) * 0x11 * bright / 0x2d;
b = ((palette >> 0) & 0x0f) * 0x11 * bright / 0x2d;
- palette_set_color (machine(), offset, rgb_t(r, g, b));
+ m_palette->set_pen_color (offset, rgb_t(r, g, b));
}
}
@@ -1490,7 +1490,7 @@ static MACHINE_CONFIG_START( fcrash, cps_state )
MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1)
MCFG_GFXDECODE_ADD("gfxdecode", cps1)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
@@ -1548,7 +1548,7 @@ static MACHINE_CONFIG_START( kodb, cps_state )
MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1)
MCFG_GFXDECODE_ADD("gfxdecode", cps1)
- MCFG_PALETTE_LENGTH(0xc00)
+ MCFG_PALETTE_ADD("palette", 0xc00)
MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
@@ -1588,7 +1588,7 @@ static MACHINE_CONFIG_START( sf2mdt, cps_state )
MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1)
MCFG_GFXDECODE_ADD("gfxdecode", cps1)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
@@ -1631,7 +1631,7 @@ static MACHINE_CONFIG_START( knightsb, cps_state )
MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1)
MCFG_GFXDECODE_ADD("gfxdecode", cps1)
- MCFG_PALETTE_LENGTH(0xc00)
+ MCFG_PALETTE_ADD("palette", 0xc00)
MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
@@ -1970,7 +1970,7 @@ static MACHINE_CONFIG_START( dinopic, cps_state )
MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1)
MCFG_GFXDECODE_ADD("gfxdecode", cps1)
- MCFG_PALETTE_LENGTH(0xc00)
+ MCFG_PALETTE_ADD("palette", 0xc00)
MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
@@ -2122,7 +2122,7 @@ static MACHINE_CONFIG_START( sgyxz, cps_state )
MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1)
MCFG_GFXDECODE_ADD("gfxdecode", cps1)
- MCFG_PALETTE_LENGTH(0xc00)
+ MCFG_PALETTE_ADD("palette", 0xc00)
MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom")
@@ -2215,7 +2215,7 @@ static MACHINE_CONFIG_START( punipic, cps_state )
MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1)
MCFG_GFXDECODE_ADD("gfxdecode", cps1)
- MCFG_PALETTE_LENGTH(0xc00)
+ MCFG_PALETTE_ADD("palette", 0xc00)
MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
@@ -2401,7 +2401,7 @@ static MACHINE_CONFIG_START( sf2m1, cps_state )
MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1)
MCFG_GFXDECODE_ADD("gfxdecode", cps1)
- MCFG_PALETTE_LENGTH(0xc00)
+ MCFG_PALETTE_ADD("palette", 0xc00)
MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
/* sound hardware */
@@ -2605,7 +2605,7 @@ static MACHINE_CONFIG_START( slampic, cps_state )
MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1)
MCFG_GFXDECODE_ADD("gfxdecode", cps1)
- MCFG_PALETTE_LENGTH(0xc00)
+ MCFG_PALETTE_ADD("palette", 0xc00)
MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
diff --git a/src/mame/drivers/feversoc.c b/src/mame/drivers/feversoc.c
index 0b6ed15238c..2617141d05d 100644
--- a/src/mame/drivers/feversoc.c
+++ b/src/mame/drivers/feversoc.c
@@ -102,7 +102,7 @@ UINT32 feversoc_state::screen_update_feversoc(screen_device &screen, bitmap_ind1
UINT32 *spriteram32 = m_spriteram;
int offs,spr_offs,colour,sx,sy,h,w,dx,dy;
- bitmap.fill(machine().pens[0], cliprect); //black pen
+ bitmap.fill(m_palette->pen(0), cliprect); //black pen
for(offs=(0x2000/4)-2;offs>-1;offs-=2)
{
@@ -120,7 +120,7 @@ UINT32 feversoc_state::screen_update_feversoc(screen_device &screen, bitmap_ind1
for(dx=0;dx<w;dx++)
for(dy=0;dy<h;dy++)
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,spr_offs++,colour,0,0,(sx+dx*16),(sy+dy*16),0x3f);
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,spr_offs++,colour,0,0,(sx+dx*16),(sy+dy*16),0x3f);
}
return 0;
@@ -135,13 +135,13 @@ WRITE32_MEMBER(feversoc_state::fs_paletteram_w)
g = ((m_generic_paletteram_32[offset] & 0x03e00000)>>16) >> 2;
b = ((m_generic_paletteram_32[offset] & 0x7c000000)>>16) >> 7;
- palette_set_color(machine(),offset*2+0,rgb_t(r,g,b));
+ m_palette->set_pen_color(offset*2+0,rgb_t(r,g,b));
r = (m_generic_paletteram_32[offset] & 0x001f) << 3;
g = (m_generic_paletteram_32[offset] & 0x03e0) >> 2;
b = (m_generic_paletteram_32[offset] & 0x7c00) >> 7;
- palette_set_color(machine(),offset*2+1,rgb_t(r,g,b));
+ m_palette->set_pen_color(offset*2+1,rgb_t(r,g,b));
}
READ32_MEMBER(feversoc_state::in0_r)
@@ -275,7 +275,7 @@ static MACHINE_CONFIG_START( feversoc, feversoc_state )
MCFG_SCREEN_UPDATE_DRIVER(feversoc_state, screen_update_feversoc)
MCFG_GFXDECODE_ADD("gfxdecode", feversoc)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
/* sound hardware */
diff --git a/src/mame/drivers/fgoal.c b/src/mame/drivers/fgoal.c
index e123d95ea03..ba22042dc75 100644
--- a/src/mame/drivers/fgoal.c
+++ b/src/mame/drivers/fgoal.c
@@ -44,7 +44,7 @@ int fgoal_state::intensity(int bits)
}
-void fgoal_state::palette_init()
+PALETTE_INIT_MEMBER(fgoal_state, fgoal)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -54,17 +54,17 @@ void fgoal_state::palette_init()
for (i = 0; i < 128; i++)
{
UINT8 color = color_prom[0x80 | i] & 63;
- palette_set_color_rgb(machine(), i, intensity(color >> 4), intensity(color >> 2), intensity(color >> 0));
+ palette.set_pen_color(i, intensity(color >> 4), intensity(color >> 2), intensity(color >> 0));
}
for (i = 0; i < 8; i++)
{
- palette_set_color(machine(), 128 + 0*8 + i, rgb_t(0x2e,0x80,0x2e));
- palette_set_color(machine(), 128 + 1*8 + i, rgb_t(0x2e,0x2e,0x2e));
+ palette.set_pen_color(128 + 0*8 + i, rgb_t(0x2e,0x80,0x2e));
+ palette.set_pen_color(128 + 1*8 + i, rgb_t(0x2e,0x2e,0x2e));
}
/* ball is a fixed color */
- palette_set_color_rgb(machine(), 128 + 16, intensity(0x38 >> 4), intensity(0x38 >> 2), intensity(0x38 >> 0));
+ palette.set_pen_color(128 + 16, intensity(0x38 >> 4), intensity(0x38 >> 2), intensity(0x38 >> 0));
}
@@ -378,8 +378,8 @@ static MACHINE_CONFIG_START( fgoal, fgoal_state )
MCFG_SCREEN_UPDATE_DRIVER(fgoal_state, screen_update_fgoal)
MCFG_GFXDECODE_ADD("gfxdecode", fgoal)
- MCFG_PALETTE_LENGTH(128 + 16 + 1)
-
+ MCFG_PALETTE_ADD("palette", 128 + 16 + 1)
+ MCFG_PALETTE_INIT_OWNER(fgoal_state, fgoal)
/* sound hardware */
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/finalizr.c b/src/mame/drivers/finalizr.c
index bc3e806bd70..6c96ad091d2 100644
--- a/src/mame/drivers/finalizr.c
+++ b/src/mame/drivers/finalizr.c
@@ -271,8 +271,8 @@ static MACHINE_CONFIG_START( finalizr, finalizr_state )
MCFG_SCREEN_UPDATE_DRIVER(finalizr_state, screen_update_finalizr)
MCFG_GFXDECODE_ADD("gfxdecode", finalizr)
- MCFG_PALETTE_LENGTH(2*16*16)
-
+ MCFG_PALETTE_ADD("palette", 2*16*16)
+ MCFG_PALETTE_INIT_OWNER(finalizr_state, finalizr)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/firebeat.c b/src/mame/drivers/firebeat.c
index 9b1c43c4e87..079decc967e 100644
--- a/src/mame/drivers/firebeat.c
+++ b/src/mame/drivers/firebeat.c
@@ -1762,8 +1762,7 @@ static MACHINE_CONFIG_START( firebeat, firebeat_state )
MCFG_DEVICE_CARD_MACHINE_CONFIG( "cdrom", cdrom_config )
/* video hardware */
- MCFG_PALETTE_LENGTH(32768)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRRR_GGGGG_BBBBB)
+ MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB("palette")
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -1810,8 +1809,7 @@ static MACHINE_CONFIG_START( firebeat2, firebeat_state )
MCFG_DEVICE_CARD_MACHINE_CONFIG( "cdrom", cdrom_config )
/* video hardware */
- MCFG_PALETTE_LENGTH(32768)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRRR_GGGGG_BBBBB)
+ MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB("palette")
MCFG_SCREEN_ADD("lscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
diff --git a/src/mame/drivers/firefox.c b/src/mame/drivers/firefox.c
index a2f24f98a14..dd2d9f9a418 100644
--- a/src/mame/drivers/firefox.c
+++ b/src/mame/drivers/firefox.c
@@ -229,7 +229,7 @@ UINT32 firefox_state::screen_update_firefox(screen_device &screen, bitmap_rgb32
int sprite;
int gfxtop = screen.visible_area().min_y;
- bitmap.fill(palette_get_color(machine(), 256), cliprect);
+ bitmap.fill(m_palette->pen_color(256), cliprect);
for( sprite = 0; sprite < 32; sprite++ )
{
@@ -249,7 +249,7 @@ UINT32 firefox_state::screen_update_firefox(screen_device &screen, bitmap_rgb32
int flipx = flags & 0x20;
int code = sprite_data[ 15 - row ] + ( 256 * ( ( flags >> 6 ) & 3 ) );
- m_gfxdecode->gfx( 1 )->transpen(bitmap,cliprect, code, color, flipx, flipy, x + 8, gfxtop + 500 - y - ( row * 16 ), 0 );
+ m_gfxdecode->gfx( 1 )->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy, x + 8, gfxtop + 500 - y - ( row * 16 ), 0 );
}
}
}
@@ -273,7 +273,7 @@ void firefox_state::set_rgba( int start, int index, unsigned char *palette_ram )
int b = palette_ram[ index + 512 ];
int a = ( b & 3 ) * 0x55;
- palette_set_color( machine(), start + index, rgb_t( a, r, g, b ) );
+ m_palette->set_pen_color( start + index, rgb_t( a, r, g, b ) );
}
WRITE8_MEMBER(firefox_state::tile_palette_w)
@@ -722,7 +722,7 @@ static MACHINE_CONFIG_START( firefox, firefox_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", firefox)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_LASERDISC_22VP931_ADD("laserdisc")
diff --git a/src/mame/drivers/firetrap.c b/src/mame/drivers/firetrap.c
index ce99197bd41..f11e7ab1316 100644
--- a/src/mame/drivers/firetrap.c
+++ b/src/mame/drivers/firetrap.c
@@ -651,7 +651,8 @@ static MACHINE_CONFIG_START( firetrap, firetrap_state )
MCFG_SCREEN_UPDATE_DRIVER(firetrap_state, screen_update_firetrap)
MCFG_GFXDECODE_ADD("gfxdecode", firetrap)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(firetrap_state, firetrap)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -686,7 +687,8 @@ static MACHINE_CONFIG_START( firetrapbl, firetrap_state )
MCFG_SCREEN_UPDATE_DRIVER(firetrap_state, screen_update_firetrap)
MCFG_GFXDECODE_ADD("gfxdecode", firetrap)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(firetrap_state, firetrap)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/firetrk.c b/src/mame/drivers/firetrk.c
index 0e91959dbe1..d41ba2042eb 100644
--- a/src/mame/drivers/firetrk.c
+++ b/src/mame/drivers/firetrk.c
@@ -866,7 +866,9 @@ static MACHINE_CONFIG_START( firetrk, firetrk_state )
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_DRIVER(firetrk_state, screen_update_firetrk)
- MCFG_PALETTE_LENGTH(28)
+ MCFG_PALETTE_ADD("palette", 28)
+ MCFG_PALETTE_INIT_OWNER(firetrk_state, firetrk)
+
MCFG_GFXDECODE_ADD("gfxdecode", firetrk)
/* sound hardware */
@@ -890,7 +892,10 @@ static MACHINE_CONFIG_DERIVED( superbug, firetrk )
MCFG_VIDEO_START_OVERRIDE(firetrk_state,superbug)
MCFG_GFXDECODE_MODIFY("gfxdecode", superbug)
- MCFG_PALETTE_LENGTH(28)
+
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 28)
+ MCFG_PALETTE_INIT_OWNER(firetrk_state, firetrk)
/* sound hardware */
MCFG_SOUND_REPLACE("discrete", DISCRETE, 0)
@@ -912,8 +917,9 @@ static MACHINE_CONFIG_DERIVED( montecar, firetrk )
MCFG_VIDEO_START_OVERRIDE(firetrk_state,montecar)
MCFG_GFXDECODE_MODIFY("gfxdecode", montecar)
- MCFG_PALETTE_INIT_OVERRIDE(firetrk_state,montecar)
- MCFG_PALETTE_LENGTH(46)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 46)
+ MCFG_PALETTE_INIT_OWNER(firetrk_state,montecar)
/* sound hardware */
MCFG_SOUND_REPLACE("discrete", DISCRETE, 0)
diff --git a/src/mame/drivers/fitfight.c b/src/mame/drivers/fitfight.c
index f40eed9a69b..590b0e0d585 100644
--- a/src/mame/drivers/fitfight.c
+++ b/src/mame/drivers/fitfight.c
@@ -169,7 +169,7 @@ static ADDRESS_MAP_START( fitfight_main_map, AS_PROGRAM, 16, fitfight_state )
AM_RANGE(0xb14000, 0xb17fff) AM_RAM //used by histryma @0x0000b25a,b270
AM_RANGE(0xb18000, 0xb1bfff) AM_RAM //used by histryma @0x0000b25a,b270,b286
- AM_RANGE(0xc00000, 0xc00fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xc00000, 0xc00fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xd00000, 0xd007ff) AM_RAM AM_SHARE("spriteram")
@@ -201,7 +201,7 @@ static ADDRESS_MAP_START( bbprot_main_map, AS_PROGRAM, 16, fitfight_state )
AM_RANGE(0xb0c000, 0xb0ffff) AM_RAM_WRITE(fof_txt_tileram_w) AM_SHARE("fof_txt_tileram")
AM_RANGE(0xc00000, 0xc00fff) AM_READONLY
- AM_RANGE(0xc00000, 0xc03fff) AM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xc00000, 0xc03fff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xd00000, 0xd007ff) AM_RAM AM_SHARE("spriteram")
@@ -744,7 +744,8 @@ static MACHINE_CONFIG_START( fitfight, fitfight_state )
MCFG_SCREEN_VISIBLE_AREA(2*8, 39*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(fitfight_state, screen_update_fitfight)
- MCFG_PALETTE_LENGTH(0x800)
+ MCFG_PALETTE_ADD("palette", 0x800)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -769,7 +770,8 @@ static MACHINE_CONFIG_START( bbprot, fitfight_state )
MCFG_SCREEN_VISIBLE_AREA(2*8, 39*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(fitfight_state, screen_update_fitfight)
- MCFG_PALETTE_LENGTH(0x2000)
+ MCFG_PALETTE_ADD("palette", 0x2000)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/flipjack.c b/src/mame/drivers/flipjack.c
index cf9ad949fee..5d69522a933 100644
--- a/src/mame/drivers/flipjack.c
+++ b/src/mame/drivers/flipjack.c
@@ -126,7 +126,7 @@ public:
DECLARE_READ8_MEMBER(flipjack_soundlatch_r);
DECLARE_WRITE8_MEMBER(flipjack_portc_w);
virtual void machine_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(flipjack);
UINT32 screen_update_flipjack(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
@@ -137,19 +137,19 @@ public:
***************************************************************************/
-void flipjack_state::palette_init()
+PALETTE_INIT_MEMBER(flipjack_state, flipjack)
{
// from prom
const UINT8 *color_prom = memregion("proms")->base();
for (int i = 0; i < 0x40; i++)
{
- palette_set_color_rgb(machine(), 2*i+1, pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 0));
- palette_set_color_rgb(machine(), 2*i+0, pal1bit(color_prom[i] >> 1), pal1bit(color_prom[i] >> 2), pal1bit(color_prom[i] >> 0));
+ palette.set_pen_color(2*i+1, pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 0));
+ palette.set_pen_color(2*i+0, pal1bit(color_prom[i] >> 1), pal1bit(color_prom[i] >> 2), pal1bit(color_prom[i] >> 0));
}
// standard 3bpp for blitter
for (int i = 0; i < 8; i++)
- palette_set_color_rgb(machine(), i+0x80, pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 0));
+ palette.set_pen_color(i+0x80, pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 0));
}
@@ -157,7 +157,7 @@ UINT32 flipjack_state::screen_update_flipjack(screen_device &screen, bitmap_rgb3
{
int x,y,count;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
// draw playfield
if (m_layer & 2)
@@ -184,7 +184,7 @@ UINT32 flipjack_state::screen_update_flipjack(screen_device &screen, bitmap_rgb3
color = ((pen_r >> (7-xi)) & 1)<<0;
color|= ((pen_g >> (7-xi)) & 1)<<1;
color|= ((pen_b >> (7-xi)) & 1)<<2;
- bitmap.pix32(y, x+xi) = machine().pens[color+0x80];
+ bitmap.pix32(y, x+xi) = m_palette->pen(color+0x80);
}
}
@@ -202,7 +202,7 @@ UINT32 flipjack_state::screen_update_flipjack(screen_device &screen, bitmap_rgb3
int tile = m_bank << 8 | m_vram[x+y*0x100];
int color = m_cram[x+y*0x100] & 0x3f;
- gfx->transpen(bitmap,cliprect, tile, color, 0, 0, x*8, y*8, 0);
+ gfx->transpen(m_palette,bitmap,cliprect, tile, color, 0, 0, x*8, y*8, 0);
}
}
@@ -226,7 +226,7 @@ UINT32 flipjack_state::screen_update_flipjack(screen_device &screen, bitmap_rgb3
{
color = ((pen >> (7-xi)) & 1) ? 0x87 : 0;
if(color)
- bitmap.pix32(y, x+xi) = machine().pens[color];
+ bitmap.pix32(y, x+xi) = m_palette->pen(color);
}
}
@@ -503,7 +503,8 @@ static MACHINE_CONFIG_START( flipjack, flipjack_state )
MCFG_GFXDECODE_ADD("gfxdecode", flipjack)
- MCFG_PALETTE_LENGTH(128+8)
+ MCFG_PALETTE_ADD("palette", 128+8)
+ MCFG_PALETTE_INIT_OWNER(flipjack_state, flipjack)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/flkatck.c b/src/mame/drivers/flkatck.c
index 5800d70c4a3..1348a86cdad 100644
--- a/src/mame/drivers/flkatck.c
+++ b/src/mame/drivers/flkatck.c
@@ -91,7 +91,7 @@ static ADDRESS_MAP_START( flkatck_map, AS_PROGRAM, 8, flkatck_state )
AM_RANGE(0x0000, 0x0007) AM_RAM_WRITE(flkatck_k007121_regs_w) /* 007121 registers */
AM_RANGE(0x0008, 0x03ff) AM_RAM /* RAM */
AM_RANGE(0x0400, 0x041f) AM_READWRITE(flkatck_ls138_r, flkatck_ls138_w) /* inputs, DIPS, bankswitch, counters, sound command */
- AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_le_w) AM_SHARE("paletteram") /* palette */
+ AM_RANGE(0x0800, 0x0bff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* palette */
AM_RANGE(0x1000, 0x1fff) AM_RAM /* RAM */
AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(flkatck_k007121_w) AM_SHARE("k007121_ram") /* Video RAM (007121) */
AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank1") /* banked ROM */
@@ -230,10 +230,11 @@ static MACHINE_CONFIG_START( flkatck, flkatck_state )
MCFG_SCREEN_UPDATE_DRIVER(flkatck_state, screen_update_flkatck)
MCFG_GFXDECODE_ADD("gfxdecode", flkatck)
- MCFG_PALETTE_LENGTH(512)
-
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_K007121_ADD("k007121")
+ MCFG_K007121_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/flower.c b/src/mame/drivers/flower.c
index 10cb80532ae..e9722444d95 100644
--- a/src/mame/drivers/flower.c
+++ b/src/mame/drivers/flower.c
@@ -274,7 +274,8 @@ static MACHINE_CONFIG_START( flower, flower_state )
MCFG_SCREEN_UPDATE_DRIVER(flower_state, screen_update_flower)
MCFG_GFXDECODE_ADD("gfxdecode", flower)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(flower_state, flower)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/flstory.c b/src/mame/drivers/flstory.c
index bc2a8bf216e..656695d748c 100644
--- a/src/mame/drivers/flstory.c
+++ b/src/mame/drivers/flstory.c
@@ -1086,7 +1086,8 @@ static MACHINE_CONFIG_START( flstory, flstory_state )
MCFG_SCREEN_UPDATE_DRIVER(flstory_state, screen_update_flstory)
MCFG_GFXDECODE_ADD("gfxdecode", flstory)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_VIDEO_START_OVERRIDE(flstory_state,flstory)
@@ -1143,7 +1144,8 @@ static MACHINE_CONFIG_START( onna34ro, flstory_state )
MCFG_SCREEN_UPDATE_DRIVER(flstory_state, screen_update_flstory)
MCFG_GFXDECODE_ADD("gfxdecode", flstory)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_VIDEO_START_OVERRIDE(flstory_state,flstory)
@@ -1200,7 +1202,8 @@ static MACHINE_CONFIG_START( victnine, flstory_state )
MCFG_SCREEN_UPDATE_DRIVER(flstory_state, screen_update_victnine)
MCFG_GFXDECODE_ADD("gfxdecode", flstory)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_VIDEO_START_OVERRIDE(flstory_state,victnine)
@@ -1263,7 +1266,8 @@ static MACHINE_CONFIG_START( rumba, flstory_state )
MCFG_SCREEN_UPDATE_DRIVER(flstory_state, screen_update_rumba)
MCFG_GFXDECODE_ADD("gfxdecode", flstory)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_VIDEO_START_OVERRIDE(flstory_state,rumba)
diff --git a/src/mame/drivers/flyball.c b/src/mame/drivers/flyball.c
index 3f6807149e0..789901f5b6c 100644
--- a/src/mame/drivers/flyball.c
+++ b/src/mame/drivers/flyball.c
@@ -69,7 +69,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(flyball);
UINT32 screen_update_flyball(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(flyball_joystick_callback);
TIMER_CALLBACK_MEMBER(flyball_quarter_callback);
@@ -132,7 +132,7 @@ UINT32 flyball_state::screen_update_flyball(screen_device &screen, bitmap_ind16
m_tmap->draw(screen, bitmap, cliprect, 0, 0);
/* draw pitcher */
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, m_pitcher_pic ^ 0xf, 0, 1, 0, pitcherx, pitchery, 1);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, m_pitcher_pic ^ 0xf, 0, 1, 0, pitcherx, pitchery, 1);
/* draw ball */
@@ -386,12 +386,12 @@ static GFXDECODE_START( flyball )
GFXDECODE_END
-void flyball_state::palette_init()
+PALETTE_INIT_MEMBER(flyball_state, flyball)
{
- palette_set_color(machine(), 0, rgb_t(0x3F, 0x3F, 0x3F)); /* tiles, ball */
- palette_set_color(machine(), 1, rgb_t(0xFF, 0xFF, 0xFF));
- palette_set_color(machine(), 2, rgb_t(0xFF ,0xFF, 0xFF)); /* sprites */
- palette_set_color(machine(), 3, rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(0, rgb_t(0x3F, 0x3F, 0x3F)); /* tiles, ball */
+ palette.set_pen_color(1, rgb_t(0xFF, 0xFF, 0xFF));
+ palette.set_pen_color(2, rgb_t(0xFF ,0xFF, 0xFF)); /* sprites */
+ palette.set_pen_color(3, rgb_t(0x00, 0x00, 0x00));
}
@@ -452,8 +452,8 @@ static MACHINE_CONFIG_START( flyball, flyball_state )
MCFG_SCREEN_UPDATE_DRIVER(flyball_state, screen_update_flyball)
MCFG_GFXDECODE_ADD("gfxdecode", flyball)
- MCFG_PALETTE_LENGTH(4)
-
+ MCFG_PALETTE_ADD("palette", 4)
+ MCFG_PALETTE_INIT_OWNER(flyball_state, flyball)
/* sound hardware */
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/foodf.c b/src/mame/drivers/foodf.c
index 31fbef0aa4c..c4a9f971e84 100644
--- a/src/mame/drivers/foodf.c
+++ b/src/mame/drivers/foodf.c
@@ -367,7 +367,7 @@ static MACHINE_CONFIG_START( foodf, foodf_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", foodf)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("playfield", 2, foodf_state, get_playfield_tile_info, 8,8, SCAN_COLS, 32,32, 0)
diff --git a/src/mame/drivers/fortecar.c b/src/mame/drivers/fortecar.c
index 8ba05ee1704..8f39e3a2e77 100644
--- a/src/mame/drivers/fortecar.c
+++ b/src/mame/drivers/fortecar.c
@@ -346,7 +346,7 @@ public:
DECLARE_DRIVER_INIT(fortecar);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(fortecar);
UINT32 screen_update_fortecar(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<eeprom_serial_93cxx_device> m_eeprom;
required_device<gfxdecode_device> m_gfxdecode;
@@ -375,7 +375,7 @@ UINT32 fortecar_state::screen_update_fortecar(screen_device &screen, bitmap_ind1
if(bpp)
color&=0x3;
- m_gfxdecode->gfx(bpp)->opaque(bitmap,cliprect,tile,color,0,0,x*8,y*8);
+ m_gfxdecode->gfx(bpp)->opaque(m_palette,bitmap,cliprect,tile,color,0,0,x*8,y*8);
count++;
}
@@ -384,7 +384,7 @@ UINT32 fortecar_state::screen_update_fortecar(screen_device &screen, bitmap_ind1
return 0;
}
-void fortecar_state::palette_init()
+PALETTE_INIT_MEMBER(fortecar_state, fortecar)
{
const UINT8 *color_prom = memregion("proms")->base();
/* Video resistors...
@@ -431,7 +431,7 @@ R = 82 Ohms Pull Down.
bit1 = (color_prom[i] >> 7) & 0x01;
b = combine_2_weights(weights_b, bit0, bit1);
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -699,8 +699,8 @@ static MACHINE_CONFIG_START( fortecar, fortecar_state )
MCFG_V3021_ADD("rtc")
MCFG_GFXDECODE_ADD("gfxdecode", fortecar)
- MCFG_PALETTE_LENGTH(0x200)
-
+ MCFG_PALETTE_ADD("palette", 0x200)
+ MCFG_PALETTE_INIT_OWNER(fortecar_state, fortecar)
MCFG_MC6845_ADD("crtc", MC6845, "screen", CRTC_CLOCK, mc6845_intf) /* 1.5 MHz, measured */
diff --git a/src/mame/drivers/freekick.c b/src/mame/drivers/freekick.c
index 37825da3608..ead25abeb1b 100644
--- a/src/mame/drivers/freekick.c
+++ b/src/mame/drivers/freekick.c
@@ -638,8 +638,7 @@ static MACHINE_CONFIG_START( base, freekick_state )
MCFG_SCREEN_UPDATE_DRIVER(freekick_state, screen_update_pbillrd)
MCFG_GFXDECODE_ADD("gfxdecode", freekick)
- MCFG_PALETTE_LENGTH(0x200)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 0x200)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/fresh.c b/src/mame/drivers/fresh.c
index 75b75ae6f9d..8816eaff0a5 100644
--- a/src/mame/drivers/fresh.c
+++ b/src/mame/drivers/fresh.c
@@ -154,7 +154,7 @@ void fresh_state::update_palette( int offset )
UINT16 pal1 = m_paletteram_1[offset];
UINT8 pal2 = m_paletteram_2[offset];
- palette_set_color(machine(),offset,rgb_t(pal1&0xff,(pal1>>8)&0xff,pal2));
+ m_palette->set_pen_color(offset,rgb_t(pal1&0xff,(pal1>>8)&0xff,pal2));
}
WRITE16_MEMBER(fresh_state::fresh_paletteram_1_w)
@@ -626,7 +626,7 @@ static MACHINE_CONFIG_START( fresh, fresh_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(fresh_state, screen_update_fresh)
- MCFG_PALETTE_LENGTH(0x1000) // or 0xc00
+ MCFG_PALETTE_ADD("palette", 0x1000) // or 0xc00
MCFG_GFXDECODE_ADD("gfxdecode", fresh)
/* sound hw? */
diff --git a/src/mame/drivers/fromanc2.c b/src/mame/drivers/fromanc2.c
index 870755c6909..fd1656aee74 100644
--- a/src/mame/drivers/fromanc2.c
+++ b/src/mame/drivers/fromanc2.c
@@ -538,7 +538,7 @@ static MACHINE_CONFIG_START( fromanc2, fromanc2_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", fromanc2)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
@@ -588,7 +588,7 @@ static MACHINE_CONFIG_START( fromancr, fromanc2_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", fromancr)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
@@ -634,7 +634,7 @@ static MACHINE_CONFIG_START( fromanc4, fromanc2_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", fromancr)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
diff --git a/src/mame/drivers/fromance.c b/src/mame/drivers/fromance.c
index 381c1b63f1c..842d5ef3bdc 100644
--- a/src/mame/drivers/fromance.c
+++ b/src/mame/drivers/fromance.c
@@ -1043,7 +1043,7 @@ static MACHINE_CONFIG_START( nekkyoku, fromance_state )
MCFG_SCREEN_UPDATE_DRIVER(fromance_state, screen_update_fromance)
MCFG_GFXDECODE_ADD("gfxdecode", fromance)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
MCFG_VIDEO_START_OVERRIDE(fromance_state,nekkyoku)
@@ -1081,7 +1081,7 @@ static MACHINE_CONFIG_START( idolmj, fromance_state )
MCFG_SCREEN_UPDATE_DRIVER(fromance_state, screen_update_fromance)
MCFG_GFXDECODE_ADD("gfxdecode", fromance)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_VIDEO_START_OVERRIDE(fromance_state,fromance)
@@ -1119,7 +1119,7 @@ static MACHINE_CONFIG_START( fromance, fromance_state )
MCFG_SCREEN_UPDATE_DRIVER(fromance_state, screen_update_fromance)
MCFG_GFXDECODE_ADD("gfxdecode", fromance)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_VIDEO_START_OVERRIDE(fromance_state,fromance)
diff --git a/src/mame/drivers/funkybee.c b/src/mame/drivers/funkybee.c
index c8b4e1fe924..e124dbf777f 100644
--- a/src/mame/drivers/funkybee.c
+++ b/src/mame/drivers/funkybee.c
@@ -306,8 +306,8 @@ static MACHINE_CONFIG_START( funkybee, funkybee_state )
MCFG_SCREEN_UPDATE_DRIVER(funkybee_state, screen_update_funkybee)
MCFG_GFXDECODE_ADD("gfxdecode", funkybee)
- MCFG_PALETTE_LENGTH(32)
-
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(funkybee_state, funkybee)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/funkyjet.c b/src/mame/drivers/funkyjet.c
index d72c28dce09..1da2c73740b 100644
--- a/src/mame/drivers/funkyjet.c
+++ b/src/mame/drivers/funkyjet.c
@@ -127,7 +127,7 @@ WRITE16_MEMBER( funkyjet_state::funkyjet_protection_region_0_146_w )
static ADDRESS_MAP_START( funkyjet_map, AS_PROGRAM, 16, funkyjet_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x120000, 0x1207ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x140000, 0x143fff) AM_RAM
AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x180000, 0x183fff) AM_READWRITE(funkyjet_protection_region_0_146_r,funkyjet_protection_region_0_146_w) AM_SHARE("prot16ram") /* Protection device */ // unlikely to be cs0 region
@@ -338,14 +338,17 @@ static MACHINE_CONFIG_START( funkyjet, funkyjet_state )
MCFG_GFXDECODE_ADD("gfxdecode", funkyjet)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_DECO16IC_ADD("tilegen1", funkyjet_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 2);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/funworld.c b/src/mame/drivers/funworld.c
index 3879648b813..712ec3f9701 100644
--- a/src/mame/drivers/funworld.c
+++ b/src/mame/drivers/funworld.c
@@ -2945,8 +2945,8 @@ static MACHINE_CONFIG_START( fw1stpal, funworld_state )
MCFG_GFXDECODE_ADD("gfxdecode", fw1stpal)
- MCFG_PALETTE_LENGTH(0x200)
- MCFG_PALETTE_INIT_OVERRIDE(funworld_state, funworld)
+ MCFG_PALETTE_ADD("palette", 0x200)
+ MCFG_PALETTE_INIT_OWNER(funworld_state, funworld)
MCFG_VIDEO_START_OVERRIDE(funworld_state, funworld)
MCFG_MC6845_ADD("crtc", MC6845, "screen", CRTC_CLOCK, mc6845_intf) /* 2MHz, veryfied on jollycrd & royalcrd */
diff --git a/src/mame/drivers/funybubl.c b/src/mame/drivers/funybubl.c
index 6e840d4bec8..53c85fdc37c 100644
--- a/src/mame/drivers/funybubl.c
+++ b/src/mame/drivers/funybubl.c
@@ -234,7 +234,7 @@ static MACHINE_CONFIG_START( funybubl, funybubl_state )
MCFG_SCREEN_UPDATE_DRIVER(funybubl_state, screen_update_funybubl)
MCFG_GFXDECODE_ADD("gfxdecode", funybubl)
- MCFG_PALETTE_LENGTH(0x400)
+ MCFG_PALETTE_ADD("palette", 0x400)
/* sound hardware */
diff --git a/src/mame/drivers/fuukifg2.c b/src/mame/drivers/fuukifg2.c
index 9df20d97701..5d37389987d 100644
--- a/src/mame/drivers/fuukifg2.c
+++ b/src/mame/drivers/fuukifg2.c
@@ -91,7 +91,7 @@ static ADDRESS_MAP_START( fuuki16_map, AS_PROGRAM, 16, fuuki16_state )
AM_RANGE(0x504000, 0x505fff) AM_RAM_WRITE(fuuki16_vram_2_w) AM_SHARE("vram.2") //
AM_RANGE(0x506000, 0x507fff) AM_RAM_WRITE(fuuki16_vram_3_w) AM_SHARE("vram.3") //
AM_RANGE(0x600000, 0x601fff) AM_MIRROR(0x008000) AM_RAM AM_SHARE("spriteram") // Sprites, mirrored?
- AM_RANGE(0x700000, 0x703fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x700000, 0x703fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x800000, 0x800001) AM_READ_PORT("SYSTEM")
AM_RANGE(0x810000, 0x810001) AM_READ_PORT("P1_P2")
AM_RANGE(0x880000, 0x880001) AM_READ_PORT("DSW")
@@ -466,7 +466,8 @@ static MACHINE_CONFIG_START( fuuki16, fuuki16_state )
MCFG_SCREEN_UPDATE_DRIVER(fuuki16_state, screen_update_fuuki16)
MCFG_GFXDECODE_ADD("gfxdecode", fuuki16)
- MCFG_PALETTE_LENGTH(0x800*4)
+ MCFG_PALETTE_ADD("palette", 0x800*4)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
diff --git a/src/mame/drivers/fuukifg3.c b/src/mame/drivers/fuukifg3.c
index f9e61d0c5d5..4c08deb2444 100644
--- a/src/mame/drivers/fuukifg3.c
+++ b/src/mame/drivers/fuukifg3.c
@@ -175,7 +175,7 @@ WRITE32_MEMBER(fuuki32_state::paletteram32_xRRRRRGGGGGBBBBB_dword_w)
g = (m_paletteram[offset] & 0x03e00000) >> (5 + 16);
b = (m_paletteram[offset] & 0x001f0000) >> (0 + 16);
- palette_set_color_rgb(machine(), offset * 2, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(offset * 2, pal5bit(r), pal5bit(g), pal5bit(b));
}
if(ACCESSING_BITS_0_15)
@@ -187,7 +187,7 @@ WRITE32_MEMBER(fuuki32_state::paletteram32_xRRRRRGGGGGBBBBB_dword_w)
g = (m_paletteram[offset] & 0x000003e0) >> (5);
b = (m_paletteram[offset] & 0x0000001f) >> (0);
- palette_set_color_rgb(machine(), offset * 2 + 1, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(offset * 2 + 1, pal5bit(r), pal5bit(g), pal5bit(b));
}
}
@@ -592,7 +592,7 @@ static MACHINE_CONFIG_START( fuuki32, fuuki32_state )
MCFG_SCREEN_VBLANK_DRIVER(fuuki32_state, screen_eof_fuuki32)
MCFG_GFXDECODE_ADD("gfxdecode", fuuki32)
- MCFG_PALETTE_LENGTH(0x4000/2)
+ MCFG_PALETTE_ADD("palette", 0x4000/2)
/* sound hardware */
diff --git a/src/mame/drivers/gaelco.c b/src/mame/drivers/gaelco.c
index 113d2d3f44f..38b73625a68 100644
--- a/src/mame/drivers/gaelco.c
+++ b/src/mame/drivers/gaelco.c
@@ -117,7 +117,7 @@ static ADDRESS_MAP_START( bigkarnk_map, AS_PROGRAM, 16, gaelco_state )
AM_RANGE(0x102000, 0x103fff) AM_RAM /* Screen RAM */
AM_RANGE(0x108000, 0x108007) AM_WRITEONLY AM_SHARE("vregs") /* Video Registers */
// AM_RANGE(0x10800c, 0x10800d) AM_WRITE(watchdog_reset_w) /* INT 6 ACK/Watchdog timer */
- AM_RANGE(0x200000, 0x2007ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram") /* Palette */
+ AM_RANGE(0x200000, 0x2007ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* Palette */
AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW1")
AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW2")
@@ -144,7 +144,7 @@ static ADDRESS_MAP_START( maniacsq_map, AS_PROGRAM, 16, gaelco_state )
AM_RANGE(0x102000, 0x103fff) AM_RAM /* Screen RAM */
AM_RANGE(0x108000, 0x108007) AM_WRITEONLY AM_SHARE("vregs") /* Video Registers */
// AM_RANGE(0x10800c, 0x10800d) AM_WRITE(watchdog_reset_w) /* INT 6 ACK/Watchdog timer */
- AM_RANGE(0x200000, 0x2007ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram") /* Palette */
+ AM_RANGE(0x200000, 0x2007ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* Palette */
AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW2")
AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW1")
@@ -161,7 +161,7 @@ static ADDRESS_MAP_START( squash_map, AS_PROGRAM, 16, gaelco_state )
AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(gaelco_encrypted_w) AM_SHARE("screenram") /* Screen RAM */
AM_RANGE(0x108000, 0x108007) AM_WRITEONLY AM_SHARE("vregs") /* Video Registers */
// AM_RANGE(0x10800c, 0x10800d) AM_WRITE(watchdog_reset_w) /* INT 6 ACK/Watchdog timer */
- AM_RANGE(0x200000, 0x2007ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram") /* Palette */
+ AM_RANGE(0x200000, 0x2007ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* Palette */
AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW2")
AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW1")
@@ -178,7 +178,7 @@ static ADDRESS_MAP_START( thoop_map, AS_PROGRAM, 16, gaelco_state )
AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(thoop_encrypted_w) AM_SHARE("screenram") /* Screen RAM */
AM_RANGE(0x108000, 0x108007) AM_WRITEONLY AM_SHARE("vregs") /* Video Registers */
// AM_RANGE(0x10800c, 0x10800d) AM_WRITE(watchdog_reset_w) /* INT 6 ACK/Watchdog timer */
- AM_RANGE(0x200000, 0x2007ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram") /* Palette */
+ AM_RANGE(0x200000, 0x2007ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* Palette */
AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW2")
AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW1")
@@ -516,7 +516,8 @@ static MACHINE_CONFIG_START( bigkarnk, gaelco_state )
MCFG_SCREEN_UPDATE_DRIVER(gaelco_state, screen_update_bigkarnk)
MCFG_GFXDECODE_ADD("gfxdecode", 0x100000)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(gaelco_state,bigkarnk)
@@ -547,7 +548,8 @@ static MACHINE_CONFIG_START( maniacsq, gaelco_state )
MCFG_SCREEN_UPDATE_DRIVER(gaelco_state, screen_update_maniacsq)
MCFG_GFXDECODE_ADD("gfxdecode", 0x100000)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(gaelco_state,maniacsq)
@@ -577,7 +579,8 @@ static MACHINE_CONFIG_START( squash, gaelco_state )
MCFG_SCREEN_UPDATE_DRIVER(gaelco_state, screen_update_maniacsq)
MCFG_GFXDECODE_ADD("gfxdecode", 0x100000)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(gaelco_state,maniacsq)
@@ -607,7 +610,8 @@ static MACHINE_CONFIG_START( thoop, gaelco_state )
MCFG_SCREEN_UPDATE_DRIVER(gaelco_state, screen_update_maniacsq)
MCFG_GFXDECODE_ADD("gfxdecode", 0x100000)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(gaelco_state,maniacsq)
diff --git a/src/mame/drivers/gaelco2.c b/src/mame/drivers/gaelco2.c
index 453a792bc3e..57483239bfe 100644
--- a/src/mame/drivers/gaelco2.c
+++ b/src/mame/drivers/gaelco2.c
@@ -171,7 +171,7 @@ static MACHINE_CONFIG_START( maniacsq, gaelco2_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", 0x0080000)
- MCFG_PALETTE_LENGTH(4096*16 - 16) /* game's palette is 4096 but we allocate 15 more for shadows & highlights */
+ MCFG_PALETTE_ADD("palette", 4096*16 - 16) /* game's palette is 4096 but we allocate 15 more for shadows & highlights */
MCFG_VIDEO_START_OVERRIDE(gaelco2_state,gaelco2)
@@ -291,7 +291,7 @@ static MACHINE_CONFIG_START( bang, gaelco2_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", 0x0200000)
- MCFG_PALETTE_LENGTH(4096*16 - 16) /* game's palette is 4096 but we allocate 15 more for shadows & highlights */
+ MCFG_PALETTE_ADD("palette", 4096*16 - 16) /* game's palette is 4096 but we allocate 15 more for shadows & highlights */
MCFG_VIDEO_START_OVERRIDE(gaelco2_state,gaelco2)
@@ -532,7 +532,7 @@ static MACHINE_CONFIG_START( alighunt, gaelco2_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", 0x0400000)
- MCFG_PALETTE_LENGTH(4096*16 - 16) /* game's palette is 4096 but we allocate 15 more for shadows & highlights */
+ MCFG_PALETTE_ADD("palette", 4096*16 - 16) /* game's palette is 4096 but we allocate 15 more for shadows & highlights */
MCFG_VIDEO_START_OVERRIDE(gaelco2_state,gaelco2)
@@ -765,7 +765,7 @@ static MACHINE_CONFIG_START( touchgo, gaelco2_state )
/* video hardware */
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
MCFG_GFXDECODE_ADD("gfxdecode", 0x0400000)
- MCFG_PALETTE_LENGTH(4096*16 - 16) /* game's palette is 4096 but we allocate 15 more for shadows & highlights */
+ MCFG_PALETTE_ADD("palette", 4096*16 - 16) /* game's palette is 4096 but we allocate 15 more for shadows & highlights */
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
@@ -968,7 +968,7 @@ static MACHINE_CONFIG_START( snowboar, gaelco2_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", 0x0400000)
- MCFG_PALETTE_LENGTH(4096*16 - 16) /* game's palette is 4096 but we allocate 15 more for shadows & highlights */
+ MCFG_PALETTE_ADD("palette", 4096*16 - 16) /* game's palette is 4096 but we allocate 15 more for shadows & highlights */
MCFG_VIDEO_START_OVERRIDE(gaelco2_state,gaelco2)
@@ -1200,7 +1200,7 @@ static MACHINE_CONFIG_START( wrally2, gaelco2_state )
/* video hardware */
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
MCFG_GFXDECODE_ADD("gfxdecode", 0x0200000)
- MCFG_PALETTE_LENGTH(4096*16 - 16) /* game's palette is 4096 but we allocate 15 more for shadows & highlights */
+ MCFG_PALETTE_ADD("palette", 4096*16 - 16) /* game's palette is 4096 but we allocate 15 more for shadows & highlights */
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
diff --git a/src/mame/drivers/gaelco3d.c b/src/mame/drivers/gaelco3d.c
index d85f7893943..e0013316cd7 100644
--- a/src/mame/drivers/gaelco3d.c
+++ b/src/mame/drivers/gaelco3d.c
@@ -1009,9 +1009,7 @@ static MACHINE_CONFIG_START( gaelco3d, gaelco3d_state )
MCFG_SCREEN_VISIBLE_AREA(0, 575, 0, 431)
MCFG_SCREEN_UPDATE_DRIVER(gaelco3d_state, screen_update_gaelco3d)
- MCFG_PALETTE_LENGTH(32768)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRRR_GGGGG_BBBBB)
+ MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/gaiden.c b/src/mame/drivers/gaiden.c
index 498bb25094b..415bd47e7e6 100644
--- a/src/mame/drivers/gaiden.c
+++ b/src/mame/drivers/gaiden.c
@@ -385,7 +385,7 @@ static ADDRESS_MAP_START( gaiden_map, AS_PROGRAM, 16, gaiden_state )
AM_RANGE(0x072000, 0x073fff) AM_READWRITE(gaiden_videoram2_r, gaiden_videoram2_w) AM_SHARE("videoram2")
AM_RANGE(0x074000, 0x075fff) AM_READWRITE(gaiden_videoram3_r, gaiden_videoram3_w) AM_SHARE("videoram3")
AM_RANGE(0x076000, 0x077fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x078000, 0x079fff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x078000, 0x079fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x07a000, 0x07a001) AM_READ_PORT("SYSTEM")
AM_RANGE(0x07a002, 0x07a003) AM_READ_PORT("P1_P2") AM_WRITE(gaiden_sproffsety_w)
AM_RANGE(0x07a004, 0x07a005) AM_READ_PORT("DSW")
@@ -411,7 +411,7 @@ static ADDRESS_MAP_START( drgnbowl_map, AS_PROGRAM, 16, gaiden_state )
AM_RANGE(0x072000, 0x073fff) AM_RAM_WRITE(gaiden_videoram2_w) AM_SHARE("videoram2")
AM_RANGE(0x074000, 0x075fff) AM_RAM_WRITE(gaiden_videoram3_w) AM_SHARE("videoram3")
AM_RANGE(0x076000, 0x077fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x078000, 0x079fff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x078000, 0x079fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x07a000, 0x07a001) AM_READ_PORT("SYSTEM")
AM_RANGE(0x07a002, 0x07a003) AM_READ_PORT("P1_P2")
AM_RANGE(0x07a004, 0x07a005) AM_READ_PORT("DSW")
@@ -771,7 +771,8 @@ static MACHINE_CONFIG_START( shadoww, gaiden_state )
MCFG_SCREEN_UPDATE_DRIVER(gaiden_state, screen_update_gaiden)
MCFG_GFXDECODE_ADD("gfxdecode", gaiden)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_VIDEO_START_OVERRIDE(gaiden_state,gaiden)
@@ -828,7 +829,8 @@ static MACHINE_CONFIG_START( drgnbowl, gaiden_state )
MCFG_SCREEN_UPDATE_DRIVER(gaiden_state, screen_update_drgnbowl)
MCFG_GFXDECODE_ADD("gfxdecode", drgnbowl)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_VIDEO_START_OVERRIDE(gaiden_state,drgnbowl)
@@ -904,7 +906,7 @@ static ADDRESS_MAP_START( mastninj_map, AS_PROGRAM, 16, gaiden_state )
AM_RANGE(0x072000, 0x073fff) AM_READWRITE(gaiden_videoram2_r, gaiden_videoram2_w) AM_SHARE("videoram2")
AM_RANGE(0x074000, 0x075fff) AM_READWRITE(gaiden_videoram3_r, gaiden_videoram3_w) AM_SHARE("videoram3")
AM_RANGE(0x076000, 0x077fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x078000, 0x079fff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x078000, 0x079fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
// AM_RANGE(0x078800, 0x079fff) AM_RAM
AM_RANGE(0x07a000, 0x07a001) AM_READ_PORT("SYSTEM")
AM_RANGE(0x07a002, 0x07a003) AM_READ_PORT("P1_P2")
@@ -944,7 +946,8 @@ static MACHINE_CONFIG_START( mastninj, gaiden_state )
MCFG_SCREEN_UPDATE_DRIVER(gaiden_state, screen_update_gaiden)
MCFG_GFXDECODE_ADD("gfxdecode", mastninj)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_VIDEO_START_OVERRIDE(gaiden_state,mastninj)
diff --git a/src/mame/drivers/gal3.c b/src/mame/drivers/gal3.c
index ee65bdae491..97197de83c5 100644
--- a/src/mame/drivers/gal3.c
+++ b/src/mame/drivers/gal3.c
@@ -189,7 +189,7 @@ void gal3_state::update_palette( )
g = data1&0xff;
b = data2&0xff;
- palette_set_color( machine(),i, rgb_t(r,g,b) );
+ m_palette->set_pen_color( i, rgb_t(r,g,b) );
}
} /* update_palette */
@@ -631,7 +631,7 @@ static MACHINE_CONFIG_START( gal3, gal3_state )
MCFG_SCREEN_UPDATE_DRIVER(gal3_state, screen_update_gal3)
MCFG_GFXDECODE_ADD("gfxdecode", namcos21)
- MCFG_PALETTE_LENGTH(NAMCOS21_NUM_COLORS)
+ MCFG_PALETTE_ADD("palette", NAMCOS21_NUM_COLORS)
MCFG_VIDEO_START_OVERRIDE(gal3_state,gal3)
diff --git a/src/mame/drivers/galaga.c b/src/mame/drivers/galaga.c
index 5f0b6cfb238..009bf3d2290 100644
--- a/src/mame/drivers/galaga.c
+++ b/src/mame/drivers/galaga.c
@@ -1696,9 +1696,9 @@ static MACHINE_CONFIG_START( bosco, bosco_state )
MCFG_SCREEN_VBLANK_DRIVER(bosco_state, screen_eof_bosco)
MCFG_GFXDECODE_ADD("gfxdecode", bosco)
- MCFG_PALETTE_LENGTH(64*4+64*4+4+64)
+ MCFG_PALETTE_ADD("palette", 64*4+64*4+4+64)
- MCFG_PALETTE_INIT_OVERRIDE(bosco_state,bosco)
+ MCFG_PALETTE_INIT_OWNER(bosco_state,bosco)
MCFG_VIDEO_START_OVERRIDE(bosco_state,bosco)
/* sound hardware */
@@ -1752,9 +1752,9 @@ static MACHINE_CONFIG_START( galaga, galaga_state )
MCFG_SCREEN_VBLANK_DRIVER(galaga_state, screen_eof_galaga)
MCFG_GFXDECODE_ADD("gfxdecode", galaga)
- MCFG_PALETTE_LENGTH(64*4+64*4+64)
+ MCFG_PALETTE_ADD("palette", 64*4+64*4+64)
- MCFG_PALETTE_INIT_OVERRIDE(galaga_state,galaga)
+ MCFG_PALETTE_INIT_OWNER(galaga_state,galaga)
MCFG_VIDEO_START_OVERRIDE(galaga_state,galaga)
/* sound hardware */
@@ -1829,9 +1829,9 @@ static MACHINE_CONFIG_START( xevious, xevious_state )
MCFG_SCREEN_UPDATE_DRIVER(xevious_state, screen_update_xevious)
MCFG_GFXDECODE_ADD("gfxdecode", xevious)
- MCFG_PALETTE_LENGTH(128*4+64*8+64*2)
+ MCFG_PALETTE_ADD("palette", 128*4+64*8+64*2)
- MCFG_PALETTE_INIT_OVERRIDE(xevious_state,xevious)
+ MCFG_PALETTE_INIT_OWNER(xevious_state,xevious)
MCFG_VIDEO_START_OVERRIDE(xevious_state,xevious)
/* sound hardware */
@@ -1872,7 +1872,8 @@ static MACHINE_CONFIG_DERIVED( battles, xevious )
MCFG_MACHINE_RESET_OVERRIDE(xevious_state,battles)
/* video hardware */
- MCFG_PALETTE_INIT_OVERRIDE(xevious_state,battles)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(xevious_state,battles)
/* sound hardware */
MCFG_DEVICE_REMOVE("discrete")
@@ -1918,9 +1919,9 @@ static MACHINE_CONFIG_START( digdug, digdug_state )
MCFG_SCREEN_UPDATE_DRIVER(digdug_state, screen_update_digdug)
MCFG_GFXDECODE_ADD("gfxdecode", digdug)
- MCFG_PALETTE_LENGTH(16*2+64*4+64*4)
+ MCFG_PALETTE_ADD("palette", 16*2+64*4+64*4)
- MCFG_PALETTE_INIT_OVERRIDE(digdug_state,digdug)
+ MCFG_PALETTE_INIT_OWNER(digdug_state,digdug)
MCFG_VIDEO_START_OVERRIDE(digdug_state,digdug)
/* sound hardware */
diff --git a/src/mame/drivers/galastrm.c b/src/mame/drivers/galastrm.c
index de832cc3cb5..4e086b5e86d 100644
--- a/src/mame/drivers/galastrm.c
+++ b/src/mame/drivers/galastrm.c
@@ -71,7 +71,7 @@ WRITE32_MEMBER(galastrm_state::galastrm_palette_w)
if (ACCESSING_BITS_16_31)
m_tc0110pcr_addr = data >> 16;
if ((ACCESSING_BITS_0_15) && (m_tc0110pcr_addr < 4096))
- palette_set_color_rgb(machine(), m_tc0110pcr_addr, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
+ m_palette->set_pen_color(m_tc0110pcr_addr, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
}
WRITE32_MEMBER(galastrm_state::galastrm_tc0610_0_w)
@@ -313,7 +313,7 @@ static MACHINE_CONFIG_START( galastrm, galastrm_state )
MCFG_SCREEN_UPDATE_DRIVER(galastrm_state, screen_update_galastrm)
MCFG_GFXDECODE_ADD("gfxdecode", galastrm)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
MCFG_TC0100SCN_ADD("tc0100scn", galastrm_tc0100scn_intf)
diff --git a/src/mame/drivers/galaxi.c b/src/mame/drivers/galaxi.c
index 92c21ec0a9b..f23a6805ea7 100644
--- a/src/mame/drivers/galaxi.c
+++ b/src/mame/drivers/galaxi.c
@@ -204,7 +204,7 @@ UINT32 galaxi_state::screen_update_galaxi(screen_device &screen, bitmap_ind16 &b
#endif
if (layers_ctrl & 1) m_bg1_tmap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
- else bitmap.fill(get_black_pen(machine()), cliprect);
+ else bitmap.fill(m_palette->black_pen(), cliprect);
if (layers_ctrl & 2) m_bg2_tmap->draw(screen, bitmap, cliprect, 0, 0);
if (layers_ctrl & 4) m_bg3_tmap->draw(screen, bitmap, cliprect, 0, 0);
if (layers_ctrl & 8) m_bg4_tmap->draw(screen, bitmap, cliprect, 0, 0);
@@ -292,7 +292,7 @@ static ADDRESS_MAP_START( galaxi_map, AS_PROGRAM, 16, galaxi_state )
AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(galaxi_fg_w ) AM_SHARE("fg_ram")
AM_RANGE(0x102000, 0x1047ff) AM_READNOP // unknown
- AM_RANGE(0x300000, 0x3007ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x300000, 0x3007ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x500000, 0x500001) AM_READ_PORT("INPUTS")
AM_RANGE(0x500000, 0x500001) AM_WRITE(galaxi_500000_w)
@@ -419,7 +419,8 @@ static MACHINE_CONFIG_START( galaxi, galaxi_state )
MCFG_SCREEN_UPDATE_DRIVER(galaxi_state, screen_update_galaxi)
MCFG_GFXDECODE_ADD("gfxdecode", galaxi)
- MCFG_PALETTE_LENGTH(0x400)
+ MCFG_PALETTE_ADD("palette", 0x400)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
diff --git a/src/mame/drivers/galaxia.c b/src/mame/drivers/galaxia.c
index a4e04ef2428..0649aa4a006 100644
--- a/src/mame/drivers/galaxia.c
+++ b/src/mame/drivers/galaxia.c
@@ -305,9 +305,9 @@ static MACHINE_CONFIG_START( galaxia, galaxia_state )
MCFG_SCREEN_UPDATE_DRIVER(galaxia_state, screen_update_galaxia)
MCFG_GFXDECODE_ADD("gfxdecode", galaxia)
- MCFG_PALETTE_LENGTH(0x18+2)
+ MCFG_PALETTE_ADD("palette", 0x18+2)
- MCFG_PALETTE_INIT_OVERRIDE(galaxia_state,galaxia)
+ MCFG_PALETTE_INIT_OWNER(galaxia_state,galaxia)
MCFG_VIDEO_START_OVERRIDE(galaxia_state,galaxia)
MCFG_S2636_ADD("s2636_0", galaxia_s2636_config[0])
@@ -341,9 +341,9 @@ static MACHINE_CONFIG_START( astrowar, galaxia_state )
MCFG_SCREEN_UPDATE_DRIVER(galaxia_state, screen_update_astrowar)
MCFG_GFXDECODE_ADD("gfxdecode", astrowar)
- MCFG_PALETTE_LENGTH(0x18+2)
+ MCFG_PALETTE_ADD("palette", 0x18+2)
- MCFG_PALETTE_INIT_OVERRIDE(galaxia_state,astrowar)
+ MCFG_PALETTE_INIT_OWNER(galaxia_state,astrowar)
MCFG_VIDEO_START_OVERRIDE(galaxia_state,astrowar)
MCFG_S2636_ADD("s2636_0", astrowar_s2636_config)
diff --git a/src/mame/drivers/galaxian.c b/src/mame/drivers/galaxian.c
index 666c81ea0b7..d56733f0714 100644
--- a/src/mame/drivers/galaxian.c
+++ b/src/mame/drivers/galaxian.c
@@ -5169,7 +5169,8 @@ static MACHINE_CONFIG_START( galaxian_base, galaxian_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", galaxian)
- MCFG_PALETTE_LENGTH(32)
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(galaxian_state, galaxian)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(GALAXIAN_PIXEL_CLOCK, GALAXIAN_HTOTAL, GALAXIAN_HBEND, GALAXIAN_HBSTART, GALAXIAN_VTOTAL, GALAXIAN_VBEND, GALAXIAN_VBSTART)
@@ -5290,7 +5291,9 @@ static MACHINE_CONFIG_DERIVED( gmgalax, galaxian )
/* banked video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", gmgalax)
- MCFG_PALETTE_LENGTH(64)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 64)
+ MCFG_PALETTE_INIT_OWNER(galaxian_state, galaxian)
MACHINE_CONFIG_END
@@ -5616,7 +5619,8 @@ static MACHINE_CONFIG_DERIVED( moonwar, scobra )
MCFG_I8255A_ADD( "ppi8255_0", moonwar_ppi8255_0_intf )
MCFG_I8255A_ADD( "ppi8255_1", konami_ppi8255_1_intf )
- MCFG_PALETTE_INIT_OVERRIDE(galaxian_state,moonwar) // bullets are less yellow
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(galaxian_state,moonwar) // bullets are less yellow
MACHINE_CONFIG_END
@@ -6054,7 +6058,7 @@ void galaxian_state::tenspot_set_game_bank(running_machine& machine, int bank, i
dstregion = machine.root_device().memregion("proms")->base();
memcpy(dstregion, srcregion, 0x20);
- galaxian_state::palette_init();
+ PALETTE_INIT_NAME(galaxian)(m_palette);
}
DRIVER_INIT_MEMBER(galaxian_state,tenspot)
diff --git a/src/mame/drivers/galaxold.c b/src/mame/drivers/galaxold.c
index d64d1031539..974051b3b57 100644
--- a/src/mame/drivers/galaxold.c
+++ b/src/mame/drivers/galaxold.c
@@ -2346,13 +2346,13 @@ static MACHINE_CONFIG_START( galaxold_base, galaxold_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", galaxian)
- MCFG_PALETTE_LENGTH(32+2+64) /* 32 for the characters, 2 for the bullets, 64 for the stars */
+ MCFG_PALETTE_ADD("palette", 32+2+64) /* 32 for the characters, 2 for the bullets, 64 for the stars */
+ MCFG_PALETTE_INIT_OWNER(galaxold_state,galaxold)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(galaxold_state, screen_update_galaxold)
- MCFG_PALETTE_INIT_OVERRIDE(galaxold_state,galaxold)
MCFG_VIDEO_START_OVERRIDE(galaxold_state,galaxold)
/* sound hardware */
@@ -2403,9 +2403,10 @@ static MACHINE_CONFIG_DERIVED( scramblb, galaxian )
MCFG_CPU_PROGRAM_MAP(scramblb_map)
/* video hardware */
- MCFG_PALETTE_LENGTH(32+2+64+1) /* 32 for the characters, 2 for the bullets, 64 for the stars, 1 for background */
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 32+2+64+1) /* 32 for the characters, 2 for the bullets, 64 for the stars, 1 for background */
- MCFG_PALETTE_INIT_OVERRIDE(galaxold_state,scrambold)
+ MCFG_PALETTE_INIT_OWNER(galaxold_state,scrambold)
MCFG_VIDEO_START_OVERRIDE(galaxold_state,scrambold)
MACHINE_CONFIG_END
@@ -2417,9 +2418,10 @@ static MACHINE_CONFIG_DERIVED( scramb2, galaxian )
MCFG_CPU_PROGRAM_MAP(scramb2_map)
/* video hardware */
- MCFG_PALETTE_LENGTH(32+2+64+1) /* 32 for the characters, 2 for the bullets, 64 for the stars, 1 for background */
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 32+2+64+1) /* 32 for the characters, 2 for the bullets, 64 for the stars, 1 for background */
- MCFG_PALETTE_INIT_OVERRIDE(galaxold_state,scrambold)
+ MCFG_PALETTE_INIT_OWNER(galaxold_state,scrambold)
MCFG_VIDEO_START_OVERRIDE(galaxold_state,scrambold)
MACHINE_CONFIG_END
@@ -2431,9 +2433,10 @@ static MACHINE_CONFIG_DERIVED( scrambler, galaxian )
MCFG_CPU_PROGRAM_MAP(scrambler_map)
/* video hardware */
- MCFG_PALETTE_LENGTH(32+2+64+1) /* 32 for the characters, 2 for the bullets, 64 for the stars, 1 for background */
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 32+2+64+1) /* 32 for the characters, 2 for the bullets, 64 for the stars, 1 for background */
- MCFG_PALETTE_INIT_OVERRIDE(galaxold_state,scrambold)
+ MCFG_PALETTE_INIT_OWNER(galaxold_state,scrambold)
MCFG_VIDEO_START_OVERRIDE(galaxold_state,scrambold)
MACHINE_CONFIG_END
@@ -2445,9 +2448,10 @@ static MACHINE_CONFIG_DERIVED( guttang, galaxian )
MCFG_CPU_PROGRAM_MAP(guttang_map)
/* video hardware */
- MCFG_PALETTE_LENGTH(32+2+64+1) /* 32 for the characters, 2 for the bullets, 64 for the stars, 1 for background */
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 32+2+64+1) /* 32 for the characters, 2 for the bullets, 64 for the stars, 1 for background */
-// MCFG_PALETTE_INIT_OVERRIDE(galaxold_state,scrambold)
+// MCFG_PALETTE_INIT_OWNER(galaxold_state,scrambold)
MCFG_VIDEO_START_OVERRIDE(galaxold_state,mooncrst)
MACHINE_CONFIG_END
@@ -2498,8 +2502,9 @@ static MACHINE_CONFIG_DERIVED( rockclim, galaxian )
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(galaxold_state,rockclim)
- MCFG_PALETTE_LENGTH(64+64+2) /* 64 colors only, but still uses bullets so we need to keep the palette big */
- MCFG_PALETTE_INIT_OVERRIDE(galaxold_state,rockclim)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 64+64+2) /* 64 colors only, but still uses bullets so we need to keep the palette big */
+ MCFG_PALETTE_INIT_OWNER(galaxold_state,rockclim)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_SIZE(64*8, 32*8)
@@ -2517,8 +2522,9 @@ static MACHINE_CONFIG_DERIVED( ozon1, galaxold_base )
MCFG_MACHINE_RESET_REMOVE()
/* video hardware */
- MCFG_PALETTE_INIT_OVERRIDE(galaxold_state,rockclim)
- MCFG_PALETTE_LENGTH(32)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(galaxold_state,rockclim)
MCFG_VIDEO_START_OVERRIDE(galaxold_state,ozon1)
MCFG_SOUND_ADD("aysnd", AY8910, PIXEL_CLOCK/4)
@@ -2541,12 +2547,12 @@ static MACHINE_CONFIG_START( drivfrcg, galaxold_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(galaxold_state, screen_update_galaxold)
+
+ MCFG_PALETTE_ADD("palette", 64)
+ MCFG_PALETTE_INIT_OWNER(galaxold_state,rockclim)
- MCFG_PALETTE_LENGTH(64)
MCFG_GFXDECODE_ADD("gfxdecode", gmgalax)
- MCFG_PALETTE_INIT_OVERRIDE(galaxold_state,rockclim)
-
MCFG_VIDEO_START_OVERRIDE(galaxold_state,drivfrcg)
/* sound hardware */
@@ -2611,13 +2617,13 @@ static MACHINE_CONFIG_START( racknrol, galaxold_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", galaxian)
- MCFG_PALETTE_LENGTH(32)
-
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(galaxold_state,rockclim)
+
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(galaxold_state, screen_update_galaxold)
- MCFG_PALETTE_INIT_OVERRIDE(galaxold_state,rockclim)
MCFG_VIDEO_START_OVERRIDE(galaxold_state,racknrol)
/* sound hardware */
@@ -2636,13 +2642,13 @@ static MACHINE_CONFIG_START( hexpoola, galaxold_state )
MCFG_CPU_VBLANK_INT_DRIVER("screen", galaxold_state, hunchbks_vh_interrupt)
MCFG_GFXDECODE_ADD("gfxdecode", galaxian)
- MCFG_PALETTE_LENGTH(32)
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(galaxold_state,rockclim)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(galaxold_state, screen_update_galaxold)
- MCFG_PALETTE_INIT_OVERRIDE(galaxold_state,rockclim)
MCFG_VIDEO_START_OVERRIDE(galaxold_state,racknrol)
/* sound hardware */
diff --git a/src/mame/drivers/galgame.c b/src/mame/drivers/galgame.c
index 8219b3039fd..0cf0e65483c 100644
--- a/src/mame/drivers/galgame.c
+++ b/src/mame/drivers/galgame.c
@@ -47,7 +47,6 @@ public:
DECLARE_WRITE16_MEMBER(clk_w);
DECLARE_DRIVER_INIT(galaxygame);
virtual void machine_reset();
- virtual void palette_init();
UINT32 screen_update_galaxygame(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(galaxygame_irq);
IRQ_CALLBACK_MEMBER(galaxygame_irq_callback);
@@ -173,7 +172,7 @@ WRITE16_MEMBER(galaxygame_state::ke_w)
UINT32 galaxygame_state::screen_update_galaxygame(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
for (int i = 0; i < m_point_display_list_index; i++ )
{
bitmap.pix16(m_point_display_list[i].x >> 7, m_point_display_list[i].y >> 7) = 1;
@@ -291,12 +290,6 @@ static ADDRESS_MAP_START( galaxygame_map, AS_PROGRAM, 16, galaxygame_state )
ADDRESS_MAP_END
-void galaxygame_state::palette_init()
-{
- palette_set_color(machine(),0,rgb_t::black); /* black */
- palette_set_color(machine(),1,rgb_t::white); /* white */
-}
-
IRQ_CALLBACK_MEMBER(galaxygame_state::galaxygame_irq_callback)
{
device.execute().set_input_line(0, CLEAR_LINE);
@@ -337,7 +330,7 @@ static MACHINE_CONFIG_START( galaxygame, galaxygame_state )
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 511)
MCFG_SCREEN_UPDATE_DRIVER(galaxygame_state, screen_update_galaxygame)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/galivan.c b/src/mame/drivers/galivan.c
index a7b1b14c328..358879b2f27 100644
--- a/src/mame/drivers/galivan.c
+++ b/src/mame/drivers/galivan.c
@@ -437,8 +437,9 @@ static MACHINE_CONFIG_START( galivan, galivan_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", galivan)
- MCFG_PALETTE_LENGTH(8*16+16*16+256*16)
-
+ MCFG_PALETTE_ADD("palette", 8*16+16*16+256*16)
+ MCFG_PALETTE_INIT_OWNER(galivan_state, galivan)
+
MCFG_VIDEO_START_OVERRIDE(galivan_state,galivan)
/* sound hardware */
@@ -482,7 +483,8 @@ static MACHINE_CONFIG_START( ninjemak, galivan_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", galivan)
- MCFG_PALETTE_LENGTH(8*16+16*16+256*16)
+ MCFG_PALETTE_ADD("palette", 8*16+16*16+256*16)
+ MCFG_PALETTE_INIT_OWNER(galivan_state, galivan)
MCFG_VIDEO_START_OVERRIDE(galivan_state,ninjemak)
diff --git a/src/mame/drivers/galpani2.c b/src/mame/drivers/galpani2.c
index 2cb037a66e8..04e2a37f5e1 100644
--- a/src/mame/drivers/galpani2.c
+++ b/src/mame/drivers/galpani2.c
@@ -343,7 +343,7 @@ static ADDRESS_MAP_START( galpani2_mem1, AS_PROGRAM, 16, galpani2_state )
AM_RANGE(0x314000, 0x314001) AM_WRITENOP // ? flip backgrounds ?
AM_RANGE(0x318000, 0x318001) AM_READWRITE(galpani2_eeprom_r, galpani2_eeprom_w) // EEPROM
AM_RANGE(0x380000, 0x387fff) AM_RAM // Palette?
- AM_RANGE(0x388000, 0x38ffff) AM_RAM_WRITE(paletteram_xGGGGGRRRRRBBBBB_word_w) AM_SHARE("paletteram" ) // Palette
+ AM_RANGE(0x388000, 0x38ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x390000, 0x3901ff) AM_WRITENOP // ? at startup of service mode
AM_RANGE(0x400000, 0x43ffff) AM_RAM_WRITE(galpani2_bg8_0_w) AM_SHARE("bg8.0") // Background 0
@@ -628,7 +628,9 @@ static MACHINE_CONFIG_START( galpani2, galpani2_state )
MCFG_SCREEN_UPDATE_DRIVER(galpani2_state, screen_update_galpani2)
MCFG_GFXDECODE_ADD("gfxdecode", galpani2)
- MCFG_PALETTE_LENGTH(0x4000 + 0x200 + 0x8000) // sprites, bg8, bg15
+ MCFG_PALETTE_ADD("palette", 0x4000 + 0x200 + 0x8000) // sprites, bg8, bg15
+ MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
+ MCFG_PALETTE_INIT_OWNER(galpani2_state, galpani2)
MCFG_DEVICE_ADD_KC002_SPRITES
kaneko16_sprite_device::set_offsets(*device, 0x10000 - 0x16c0 + 0xc00, 0);
diff --git a/src/mame/drivers/galpani3.c b/src/mame/drivers/galpani3.c
index f7cd379748d..4bd6a3a3470 100644
--- a/src/mame/drivers/galpani3.c
+++ b/src/mame/drivers/galpani3.c
@@ -195,7 +195,7 @@ UINT32 galpani3_state::screen_update_galpani3(screen_device &screen, bitmap_rgb3
UINT16* src1;
UINT32* dst;
UINT16 pixdata1;
- const pen_t *paldata = machine().pens;
+ const pen_t *paldata = m_palette->pens();
bitmap.fill(0x0000, cliprect);
@@ -457,7 +457,7 @@ static ADDRESS_MAP_START( galpani3_map, AS_PROGRAM, 16, galpani3_state )
AM_RANGE(0x000000, 0x17ffff) AM_ROM
AM_RANGE(0x200000, 0x20ffff) AM_RAM // area [B] - Work RAM
- AM_RANGE(0x280000, 0x287fff) AM_RAM_WRITE(paletteram_xGGGGGRRRRRBBBBB_word_w) AM_SHARE("paletteram") // area [A] - palette for sprites
+ AM_RANGE(0x280000, 0x287fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // area [A] - palette for sprites
AM_RANGE(0x300000, 0x303fff) AM_RAM_WRITE(galpani3_suprnova_sprite32_w) AM_SHARE("spriteram")
AM_RANGE(0x380000, 0x38003f) AM_RAM_WRITE(galpani3_suprnova_sprite32regs_w) AM_SHARE("sprregs")
@@ -508,19 +508,22 @@ static MACHINE_CONFIG_START( galpani3, galpani3_state )
MCFG_DEVICE_ADD("toybox", KANEKO_TOYBOX, 0)
- MCFG_PALETTE_LENGTH(0x4303)
-
+ MCFG_PALETTE_ADD("palette", 0x4303)
+ MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
MCFG_DEVICE_ADD("spritegen", SKNS_SPRITE, 0)
MCFG_DEVICE_ADD("grap2_0", KANEKO_GRAP2, 0)
kaneko_grap2_device::set_chipnum(*device, 0);
+ MCFG_KANEKO_GRAP2_PALETTE("palette")
MCFG_DEVICE_ADD("grap2_1", KANEKO_GRAP2, 0)
kaneko_grap2_device::set_chipnum(*device, 1);
+ MCFG_KANEKO_GRAP2_PALETTE("palette")
MCFG_DEVICE_ADD("grap2_2", KANEKO_GRAP2, 0)
kaneko_grap2_device::set_chipnum(*device, 2);
+ MCFG_KANEKO_GRAP2_PALETTE("palette")
/* sound hardware */
diff --git a/src/mame/drivers/galpanic.c b/src/mame/drivers/galpanic.c
index 36c60f3d79f..bb7f59e9305 100644
--- a/src/mame/drivers/galpanic.c
+++ b/src/mame/drivers/galpanic.c
@@ -569,10 +569,12 @@ static MACHINE_CONFIG_START( galpanic, galpanic_state )
MCFG_SCREEN_VBLANK_DRIVER(galpanic_state, screen_eof_galpanic)
MCFG_GFXDECODE_ADD("gfxdecode", galpanic)
- MCFG_PALETTE_LENGTH(1024 + 32768)
+ MCFG_PALETTE_ADD("palette", 1024 + 32768)
+ MCFG_PALETTE_INIT_OWNER(galpanic_state,galpanic)
MCFG_KANEKO_PANDORA_ADD("pandora", galpanic_pandora_config)
MCFG_KANEKO_PANDORA_GFXDECODE("gfxdecode")
+ MCFG_KANEKO_PANDORA_PALETTE("palette")
MCFG_DEVICE_ADD("calc1_mcu", KANEKO_HIT, 0)
kaneko_hit_device::set_type(*device, 0);
@@ -580,7 +582,6 @@ static MACHINE_CONFIG_START( galpanic, galpanic_state )
- MCFG_PALETTE_INIT_OVERRIDE(galpanic_state,galpanic)
MCFG_VIDEO_START_OVERRIDE(galpanic_state,galpanic)
/* sound hardware */
diff --git a/src/mame/drivers/galspnbl.c b/src/mame/drivers/galspnbl.c
index a4a6aeb9a4c..a176fb88609 100644
--- a/src/mame/drivers/galspnbl.c
+++ b/src/mame/drivers/galspnbl.c
@@ -67,7 +67,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, galspnbl_state )
AM_RANGE(0x905000, 0x907fff) AM_WRITENOP /* ??? */
AM_RANGE(0x980000, 0x9bffff) AM_RAM AM_SHARE("bgvideoram")
AM_RANGE(0xa00000, 0xa00fff) AM_WRITENOP /* more palette ? */
- AM_RANGE(0xa01000, 0xa017ff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xa01000, 0xa017ff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xa01800, 0xa027ff) AM_WRITENOP /* more palette ? */
AM_RANGE(0xa80000, 0xa80001) AM_READ_PORT("IN0")
AM_RANGE(0xa80010, 0xa80011) AM_READ_PORT("IN1") AM_WRITE(soundcommand_w)
@@ -236,8 +236,10 @@ static MACHINE_CONFIG_START( galspnbl, galspnbl_state )
MCFG_SCREEN_UPDATE_DRIVER(galspnbl_state, screen_update_galspnbl)
MCFG_GFXDECODE_ADD("gfxdecode", galspnbl)
- MCFG_PALETTE_LENGTH(1024 + 32768)
+ MCFG_PALETTE_ADD("palette", 1024 + 32768)
+ MCFG_PALETTE_INIT_OWNER(galspnbl_state, galspnbl)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/gambl186.c b/src/mame/drivers/gambl186.c
index 536c3f3b209..29ae8501fb2 100644
--- a/src/mame/drivers/gambl186.c
+++ b/src/mame/drivers/gambl186.c
@@ -73,7 +73,7 @@ static MACHINE_CONFIG_START( gambl186, gambl186_state )
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 255)
MCFG_SCREEN_UPDATE_DRIVER(gambl186_state, screen_update_gambl186)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/gamecstl.c b/src/mame/drivers/gamecstl.c
index 8d69b666bfa..60129b34ee3 100644
--- a/src/mame/drivers/gamecstl.c
+++ b/src/mame/drivers/gamecstl.c
@@ -109,7 +109,7 @@ void gamecstl_state::video_start()
{
int i;
for (i=0; i < 16; i++)
- palette_set_color(machine(), i, cga_palette[i]);
+ m_palette->set_pen_color(i, cga_palette[i]);
}
void gamecstl_state::draw_char(bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx, int ch, int att, int x, int y)
@@ -449,7 +449,7 @@ static MACHINE_CONFIG_START( gamecstl, gamecstl_state )
MCFG_SCREEN_UPDATE_DRIVER(gamecstl_state, screen_update_gamecstl)
MCFG_GFXDECODE_ADD("gfxdecode", CGA)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/gaplus.c b/src/mame/drivers/gaplus.c
index 6035be6eef5..9913c6bc3bb 100644
--- a/src/mame/drivers/gaplus.c
+++ b/src/mame/drivers/gaplus.c
@@ -596,7 +596,8 @@ static MACHINE_CONFIG_START( gaplus, gaplus_state )
MCFG_SCREEN_VBLANK_DRIVER(gaplus_state, screen_eof_gaplus)
MCFG_GFXDECODE_ADD("gfxdecode", gaplus)
- MCFG_PALETTE_LENGTH(64*4+64*8)
+ MCFG_PALETTE_ADD("palette", 64*4+64*8)
+ MCFG_PALETTE_INIT_OWNER(gaplus_state, gaplus)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/gatron.c b/src/mame/drivers/gatron.c
index 380522026ad..ef94335ad88 100644
--- a/src/mame/drivers/gatron.c
+++ b/src/mame/drivers/gatron.c
@@ -570,7 +570,8 @@ static MACHINE_CONFIG_START( gat, gatron_state )
MCFG_SCREEN_UPDATE_DRIVER(gatron_state, screen_update_gat)
MCFG_GFXDECODE_ADD("gfxdecode", gat)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(gatron_state, gatron)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/gauntlet.c b/src/mame/drivers/gauntlet.c
index dcc8f5732fd..e8547746dc2 100644
--- a/src/mame/drivers/gauntlet.c
+++ b/src/mame/drivers/gauntlet.c
@@ -307,7 +307,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, gauntlet_state )
AM_RANGE(0x905f6e, 0x905f6f) AM_MIRROR(0x2c8000) AM_RAM_WRITE(gauntlet_yscroll_w) AM_SHARE("yscroll")
AM_RANGE(0x905000, 0x905f7f) AM_MIRROR(0x2c8000) AM_RAM_DEVWRITE("alpha", tilemap_device, write) AM_SHARE("alpha")
AM_RANGE(0x905f80, 0x905fff) AM_MIRROR(0x2c8000) AM_RAM AM_SHARE("mob:slip")
- AM_RANGE(0x910000, 0x9107ff) AM_MIRROR(0x2cf800) AM_RAM_WRITE(paletteram_IIIIRRRRGGGGBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x910000, 0x9107ff) AM_MIRROR(0x2cf800) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x930000, 0x930001) AM_MIRROR(0x2cfffe) AM_WRITE(gauntlet_xscroll_w) AM_SHARE("xscroll")
ADDRESS_MAP_END
@@ -510,7 +510,9 @@ static MACHINE_CONFIG_START( gauntlet, gauntlet_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", gauntlet)
- MCFG_PALETTE_LENGTH(1024)
+
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(IIIIRRRRGGGGBBBB)
MCFG_TILEMAP_ADD_STANDARD("playfield", 2, gauntlet_state, get_playfield_tile_info, 8,8, SCAN_COLS, 64,64)
MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha", 2, gauntlet_state, get_alpha_tile_info, 8,8, SCAN_ROWS, 64,32, 0)
diff --git a/src/mame/drivers/gberet.c b/src/mame/drivers/gberet.c
index c624abce5f4..ab5367ec327 100644
--- a/src/mame/drivers/gberet.c
+++ b/src/mame/drivers/gberet.c
@@ -416,9 +416,9 @@ static MACHINE_CONFIG_START( gberet, gberet_state )
MCFG_SCREEN_UPDATE_DRIVER(gberet_state, screen_update_gberet)
MCFG_GFXDECODE_ADD("gfxdecode", gberet)
- MCFG_PALETTE_LENGTH(2*16*16)
+ MCFG_PALETTE_ADD("palette", 2*16*16)
- MCFG_PALETTE_INIT_OVERRIDE(gberet_state,gberet)
+ MCFG_PALETTE_INIT_OWNER(gberet_state,gberet)
MCFG_VIDEO_START_OVERRIDE(gberet_state,gberet)
/* sound hardware */
@@ -455,9 +455,9 @@ static MACHINE_CONFIG_START( gberetb, gberet_state )
MCFG_SCREEN_UPDATE_DRIVER(gberet_state, screen_update_gberetb)
MCFG_GFXDECODE_ADD("gfxdecode", gberetb)
- MCFG_PALETTE_LENGTH(2*16*16)
+ MCFG_PALETTE_ADD("palette", 2*16*16)
- MCFG_PALETTE_INIT_OVERRIDE(gberet_state,gberet)
+ MCFG_PALETTE_INIT_OWNER(gberet_state,gberet)
MCFG_VIDEO_START_OVERRIDE(gberet_state,gberet)
/* sound hardware */
diff --git a/src/mame/drivers/gbusters.c b/src/mame/drivers/gbusters.c
index 848b44c6df4..5a97cf782d6 100644
--- a/src/mame/drivers/gbusters.c
+++ b/src/mame/drivers/gbusters.c
@@ -35,7 +35,7 @@ READ8_MEMBER(gbusters_state::bankedram_r)
WRITE8_MEMBER(gbusters_state::bankedram_w)
{
if (m_palette_selected)
- paletteram_xBBBBBGGGGGRRRRR_byte_be_w(space, offset, data);
+ m_palette->write(space, offset, data);
else
m_ram[offset] = data;
}
@@ -294,8 +294,6 @@ static MACHINE_CONFIG_START( gbusters, gbusters_state )
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
@@ -303,13 +301,17 @@ static MACHINE_CONFIG_START( gbusters, gbusters_state )
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(gbusters_state, screen_update_gbusters)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", gbusters_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K051960_ADD("k051960", gbusters_k051960_intf)
MCFG_K051960_GFXDECODE("gfxdecode")
+ MCFG_K051960_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/gcpinbal.c b/src/mame/drivers/gcpinbal.c
index 74defec4daf..67c131935c3 100644
--- a/src/mame/drivers/gcpinbal.c
+++ b/src/mame/drivers/gcpinbal.c
@@ -236,7 +236,7 @@ static ADDRESS_MAP_START( gcpinbal_map, AS_PROGRAM, 16, gcpinbal_state )
AM_RANGE(0x000000, 0x1fffff) AM_ROM
AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(gcpinbal_tilemaps_word_r, gcpinbal_tilemaps_word_w) AM_SHARE("tilemapram")
AM_RANGE(0xc80000, 0xc80fff) AM_RAM AM_SHARE("spriteram") /* sprite ram */
- AM_RANGE(0xd00000, 0xd00fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xd00000, 0xd00fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xd80000, 0xd800ff) AM_READWRITE(ioc_r, ioc_w) AM_SHARE("ioc_ram")
AM_RANGE(0xff0000, 0xffffff) AM_RAM /* RAM */
ADDRESS_MAP_END
@@ -448,8 +448,8 @@ static MACHINE_CONFIG_START( gcpinbal, gcpinbal_state )
MCFG_GFXDECODE_ADD("gfxdecode", gcpinbal)
- MCFG_PALETTE_LENGTH(4096)
-
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/gei.c b/src/mame/drivers/gei.c
index 5b635bcd6a2..9fee1ee7f06 100644
--- a/src/mame/drivers/gei.c
+++ b/src/mame/drivers/gei.c
@@ -139,7 +139,7 @@ public:
DECLARE_READ8_MEMBER(portC_r);
DECLARE_DRIVER_INIT(geimulti);
DECLARE_DRIVER_INIT(setbank);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(gei);
DECLARE_PALETTE_INIT(quizvid);
INTERRUPT_GEN_MEMBER(vblank_irq);
};
@@ -173,13 +173,13 @@ WRITE8_MEMBER(gei_state::gei_bitmap_w)
m_bitmap.pix16(sy, sx+i) = m_color[8-i-1];
}
-void gei_state::palette_init()
+PALETTE_INIT_MEMBER(gei_state, gei)
{
int i;
for (i = 0; i < 8; i++ )
{
- palette_set_color(machine(), i, rgb_t(pal1bit(i >> 2), pal1bit(i), pal1bit(i >> 1)));
+ palette.set_pen_color(i, rgb_t(pal1bit(i >> 2), pal1bit(i), pal1bit(i >> 1)));
}
}
@@ -189,7 +189,7 @@ PALETTE_INIT_MEMBER(gei_state,quizvid)
for (i = 0; i < 8; i++ )
{
- palette_set_color(machine(), i, rgb_t(pal1bit(i >> 1), pal1bit(i), pal1bit(i >> 2)));
+ palette.set_pen_color(i, rgb_t(pal1bit(i >> 1), pal1bit(i), pal1bit(i >> 2)));
}
}
@@ -1164,7 +1164,8 @@ static MACHINE_CONFIG_START( getrivia, gei_state )
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(48, 511-48, 16, 255-16)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(gei_state, gei)
MCFG_NVRAM_ADD_0FILL("nvram")
@@ -1192,8 +1193,9 @@ static MACHINE_CONFIG_DERIVED( quizvid, findout )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(quizvid_map)
-
- MCFG_PALETTE_INIT_OVERRIDE(gei_state,quizvid)
+
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(gei_state,quizvid)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( gselect, getrivia )
diff --git a/src/mame/drivers/ggconnie.c b/src/mame/drivers/ggconnie.c
index 1a402180103..f27f59e45ae 100644
--- a/src/mame/drivers/ggconnie.c
+++ b/src/mame/drivers/ggconnie.c
@@ -271,8 +271,6 @@ static MACHINE_CONFIG_START( ggconnie, ggconnie_state )
MCFG_SCREEN_RAW_PARAMS(PCE_MAIN_CLOCK/3, HUC6260_WPF, 64, 64 + 1024 + 64, HUC6260_LPF, 18, 18 + 242)
MCFG_SCREEN_UPDATE_DRIVER( ggconnie_state, screen_update )
- MCFG_PALETTE_LENGTH( HUC6260_PALETTE_SIZE )
-
MCFG_HUC6260_ADD( "huc6260", PCE_MAIN_CLOCK/3, sgx_huc6260_config )
MCFG_HUC6270_ADD( "huc6270_0", sgx_huc6270_0_config )
MCFG_HUC6270_ADD( "huc6270_1", sgx_huc6270_1_config )
diff --git a/src/mame/drivers/ghosteo.c b/src/mame/drivers/ghosteo.c
index 52b5ee86381..d7d4c2251ad 100644
--- a/src/mame/drivers/ghosteo.c
+++ b/src/mame/drivers/ghosteo.c
@@ -653,10 +653,10 @@ static MACHINE_CONFIG_START( ghosteo, ghosteo_state )
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-1)
MCFG_SCREEN_UPDATE_DEVICE("s3c2410", s3c2410_device, screen_update)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
- MCFG_S3C2410_ADD("s3c2410", 12000000, bballoon_s3c2410_intf)
+ MCFG_S3C2410_ADD("s3c2410", 12000000, bballoon_s3c2410_intf, "palette")
// MCFG_NAND_ADD("nand", 0xEC, 0x75)
// MCFG_DEVICE_CONFIG(bballoon_nand_intf)
diff --git a/src/mame/drivers/gijoe.c b/src/mame/drivers/gijoe.c
index be15d7bde16..1340d7ee41f 100644
--- a/src/mame/drivers/gijoe.c
+++ b/src/mame/drivers/gijoe.c
@@ -216,7 +216,7 @@ static ADDRESS_MAP_START( gijoe_map, AS_PROGRAM, 16, gijoe_state )
AM_RANGE(0x160000, 0x160007) AM_DEVWRITE("k056832", k056832_device, b_word_w) // VSCCS (board dependent)
AM_RANGE(0x170000, 0x170001) AM_WRITENOP // Watchdog
AM_RANGE(0x180000, 0x18ffff) AM_RAM AM_SHARE("workram") // Main RAM. Spec. 180000-1803ff, 180400-187fff
- AM_RANGE(0x190000, 0x190fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x190000, 0x190fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x1a0000, 0x1a001f) AM_DEVWRITE("k053251", k053251_device, lsb_w)
AM_RANGE(0x1b0000, 0x1b003f) AM_DEVWRITE("k056832", k056832_device, word_w)
AM_RANGE(0x1c000c, 0x1c000d) AM_WRITE(sound_cmd_w)
@@ -338,7 +338,7 @@ static MACHINE_CONFIG_START( gijoe, gijoe_state )
MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_UPDATE_BEFORE_VBLANK)
+ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -347,13 +347,17 @@ static MACHINE_CONFIG_START( gijoe, gijoe_state )
MCFG_SCREEN_VISIBLE_AREA(24, 24+288-1, 16, 16+224-1)
MCFG_SCREEN_UPDATE_DRIVER(gijoe_state, screen_update_gijoe)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
+ MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K056832_ADD("k056832", gijoe_k056832_intf)
MCFG_K056832_GFXDECODE("gfxdecode")
+ MCFG_K056832_PALETTE("palette")
MCFG_K053246_ADD("k053246", gijoe_k053247_intf)
MCFG_K053246_GFXDECODE("gfxdecode")
+ MCFG_K053246_PALETTE("palette")
MCFG_K053251_ADD("k053251")
/* sound hardware */
diff --git a/src/mame/drivers/ginganin.c b/src/mame/drivers/ginganin.c
index 5cc68325012..fbf4b6773d5 100644
--- a/src/mame/drivers/ginganin.c
+++ b/src/mame/drivers/ginganin.c
@@ -76,7 +76,7 @@ static ADDRESS_MAP_START( ginganin_map, AS_PROGRAM, 16, ginganin_state )
AM_RANGE(0x020000, 0x023fff) AM_RAM
AM_RANGE(0x030000, 0x0307ff) AM_RAM_WRITE(ginganin_txtram16_w) AM_SHARE("txtram")
AM_RANGE(0x040000, 0x0407ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x050000, 0x0507ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x050000, 0x0507ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x060000, 0x06000f) AM_RAM_WRITE(ginganin_vregs16_w) AM_SHARE("vregs")
AM_RANGE(0x068000, 0x06bfff) AM_RAM_WRITE(ginganin_fgram16_w) AM_SHARE("fgram")
AM_RANGE(0x070000, 0x070001) AM_READ_PORT("P1_P2")
@@ -274,8 +274,8 @@ static MACHINE_CONFIG_START( ginganin, ginganin_state )
MCFG_SCREEN_UPDATE_DRIVER(ginganin_state, screen_update_ginganin)
MCFG_GFXDECODE_ADD("gfxdecode", ginganin)
- MCFG_PALETTE_LENGTH(1024)
-
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/gladiatr.c b/src/mame/drivers/gladiatr.c
index f8bc5fc45d5..80a749fbe87 100644
--- a/src/mame/drivers/gladiatr.c
+++ b/src/mame/drivers/gladiatr.c
@@ -683,7 +683,7 @@ static MACHINE_CONFIG_START( ppking, gladiatr_state )
MCFG_SCREEN_UPDATE_DRIVER(gladiatr_state, screen_update_ppking)
MCFG_GFXDECODE_ADD("gfxdecode", ppking)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
MCFG_VIDEO_START_OVERRIDE(gladiatr_state,ppking)
@@ -731,7 +731,7 @@ static MACHINE_CONFIG_START( gladiatr, gladiatr_state )
MCFG_SCREEN_UPDATE_DRIVER(gladiatr_state, screen_update_gladiatr)
MCFG_GFXDECODE_ADD("gfxdecode", gladiatr)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
MCFG_VIDEO_START_OVERRIDE(gladiatr_state,gladiatr)
diff --git a/src/mame/drivers/glass.c b/src/mame/drivers/glass.c
index 77e899e4f28..323f2fdcfc1 100644
--- a/src/mame/drivers/glass.c
+++ b/src/mame/drivers/glass.c
@@ -81,7 +81,7 @@ static ADDRESS_MAP_START( glass_map, AS_PROGRAM, 16, glass_state )
AM_RANGE(0x102000, 0x102fff) AM_RAM /* Extra Video RAM */
AM_RANGE(0x108000, 0x108007) AM_WRITEONLY AM_SHARE("vregs") /* Video Registers */
AM_RANGE(0x108008, 0x108009) AM_WRITE(clr_int_w) /* CLR INT Video */
- AM_RANGE(0x200000, 0x2007ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram") /* Palette */
+ AM_RANGE(0x200000, 0x2007ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* Palette */
AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW2")
AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW1")
@@ -205,8 +205,8 @@ static MACHINE_CONFIG_START( glass, glass_state )
MCFG_SCREEN_UPDATE_DRIVER(glass_state, screen_update_glass)
MCFG_GFXDECODE_ADD("gfxdecode", glass)
- MCFG_PALETTE_LENGTH(1024)
-
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/gluck2.c b/src/mame/drivers/gluck2.c
index 1d97c93e149..d0347161be6 100644
--- a/src/mame/drivers/gluck2.c
+++ b/src/mame/drivers/gluck2.c
@@ -303,7 +303,7 @@ PALETTE_INIT_MEMBER(gluck2_state, gluck2)
bit3 = (color_prom[i + 0x200] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -568,8 +568,8 @@ static MACHINE_CONFIG_START( gluck2, gluck2_state )
MCFG_SCREEN_UPDATE_DRIVER(gluck2_state, screen_update_gluck2)
MCFG_GFXDECODE_ADD("gfxdecode", gluck2)
- MCFG_PALETTE_LENGTH(0x100)
- MCFG_PALETTE_INIT_OVERRIDE(gluck2_state, gluck2)
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_INIT_OWNER(gluck2_state, gluck2)
MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK/16, mc6845_intf) /* guess */
diff --git a/src/mame/drivers/gng.c b/src/mame/drivers/gng.c
index f23654305ab..646c372418f 100644
--- a/src/mame/drivers/gng.c
+++ b/src/mame/drivers/gng.c
@@ -50,8 +50,8 @@ static ADDRESS_MAP_START( gng_map, AS_PROGRAM, 8, gng_state )
AM_RANGE(0x3002, 0x3002) AM_READ_PORT("P2")
AM_RANGE(0x3003, 0x3003) AM_READ_PORT("DSW1")
AM_RANGE(0x3004, 0x3004) AM_READ_PORT("DSW2")
- AM_RANGE(0x3800, 0x38ff) AM_WRITE(paletteram_RRRRGGGGBBBBxxxx_byte_split_hi_w) AM_SHARE("paletteram2")
- AM_RANGE(0x3900, 0x39ff) AM_WRITE(paletteram_RRRRGGGGBBBBxxxx_byte_split_lo_w) AM_SHARE("paletteram")
+ AM_RANGE(0x3800, 0x38ff) AM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
+ AM_RANGE(0x3900, 0x39ff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x3a00, 0x3a00) AM_WRITE(soundlatch_byte_w)
AM_RANGE(0x3b08, 0x3b09) AM_WRITE(gng_bgscrollx_w)
AM_RANGE(0x3b0a, 0x3b0b) AM_WRITE(gng_bgscrolly_w)
@@ -324,14 +324,14 @@ void gng_state::machine_reset()
For now let's fill everything with white colors until we have better info about it */
for(i=0;i<0x100;i+=4)
{
- m_generic_paletteram_8[i] = m_generic_paletteram2_8[i] = 0x00;
- m_generic_paletteram_8[i+1] = m_generic_paletteram2_8[i+1] = 0x55;
- m_generic_paletteram_8[i+2] = m_generic_paletteram2_8[i+2] = 0xaa;
- m_generic_paletteram_8[i+3] = m_generic_paletteram2_8[i+3] = 0xff;
- palette_set_color_rgb(machine(),i+0,0x00,0x00,0x00);
- palette_set_color_rgb(machine(),i+1,0x55,0x55,0x55);
- palette_set_color_rgb(machine(),i+2,0xaa,0xaa,0xaa);
- palette_set_color_rgb(machine(),i+3,0xff,0xff,0xff);
+ m_palette->basemem().write8(i, 0x00); m_palette->extmem().write8(i, 0x00);
+ m_palette->basemem().write8(i+1, 0x55); m_palette->extmem().write8(i+1, 0x55);
+ m_palette->basemem().write8(i+2, 0xaa); m_palette->extmem().write8(i+2, 0xaa);
+ m_palette->basemem().write8(i+3, 0xff); m_palette->extmem().write8(i+3, 0xff);
+ m_palette->set_pen_color(i+0,0x00,0x00,0x00);
+ m_palette->set_pen_color(i+1,0x55,0x55,0x55);
+ m_palette->set_pen_color(i+2,0xaa,0xaa,0xaa);
+ m_palette->set_pen_color(i+3,0xff,0xff,0xff);
}
}
}
@@ -360,8 +360,9 @@ static MACHINE_CONFIG_START( gng, gng_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", gng)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/go2000.c b/src/mame/drivers/go2000.c
index fe8cb2c6854..2b71b135dbd 100644
--- a/src/mame/drivers/go2000.c
+++ b/src/mame/drivers/go2000.c
@@ -73,7 +73,7 @@ static ADDRESS_MAP_START( go2000_map, AS_PROGRAM, 16, go2000_state )
AM_RANGE(0x200000, 0x203fff) AM_RAM
AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("videoram")
AM_RANGE(0x610000, 0x61ffff) AM_RAM AM_SHARE("videoram2")
- AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x800000, 0x800fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xa00000, 0xa00001) AM_READ_PORT("INPUTS")
AM_RANGE(0xa00002, 0xa00003) AM_READ_PORT("DSW")
AM_RANGE(0x620002, 0x620003) AM_WRITE(sound_cmd_w)
@@ -191,7 +191,7 @@ UINT32 go2000_state::screen_update_go2000(screen_device &screen, bitmap_ind16 &b
{
int tile = m_videoram[count];
int attr = m_videoram2[count];
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, tile, attr, 0, 0, x * 8, y * 8);
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, tile, attr, 0, 0, x * 8, y * 8);
count++;
}
}
@@ -203,7 +203,7 @@ UINT32 go2000_state::screen_update_go2000(screen_device &screen, bitmap_ind16 &b
{
int tile = m_videoram[count];
int attr = m_videoram2[count];
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, tile, attr, 0, 0, x * 8, y * 8, 0xf);
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect, tile, attr, 0, 0, x * 8, y * 8, 0xf);
count++;
}
}
@@ -291,7 +291,7 @@ UINT32 go2000_state::screen_update_go2000(screen_device &screen, bitmap_ind16 &b
tile_flipy = !tile_flipy;
}
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
(tile & 0x1fff) + bank*0x4000,
attr,
tile_flipx, tile_flipy,
@@ -340,7 +340,8 @@ static MACHINE_CONFIG_START( go2000, go2000_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(go2000_state, screen_update_go2000)
- MCFG_PALETTE_LENGTH(0x800)
+ MCFG_PALETTE_ADD("palette", 0x800)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/goal92.c b/src/mame/drivers/goal92.c
index 841ea98456b..cf828ab9c53 100644
--- a/src/mame/drivers/goal92.c
+++ b/src/mame/drivers/goal92.c
@@ -53,7 +53,7 @@ static ADDRESS_MAP_START( goal92_map, AS_PROGRAM, 16, goal92_state )
AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(goal92_foreground_w) AM_SHARE("fg_data")
AM_RANGE(0x101800, 0x101fff) AM_RAM // it has tiles for clouds, but they aren't used
AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(goal92_text_w) AM_SHARE("tx_data")
- AM_RANGE(0x103000, 0x103fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x103000, 0x103fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x104000, 0x13ffff) AM_RAM
AM_RANGE(0x140000, 0x1407ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x140800, 0x140801) AM_WRITENOP
@@ -324,8 +324,8 @@ static MACHINE_CONFIG_START( goal92, goal92_state )
MCFG_SCREEN_VBLANK_DRIVER(goal92_state, screen_eof_goal92)
MCFG_GFXDECODE_ADD("gfxdecode", goal92)
- MCFG_PALETTE_LENGTH(128*16)
-
+ MCFG_PALETTE_ADD("palette", 128*16)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/goindol.c b/src/mame/drivers/goindol.c
index 4cd44359b0b..35a596bfdd4 100644
--- a/src/mame/drivers/goindol.c
+++ b/src/mame/drivers/goindol.c
@@ -248,9 +248,7 @@ static MACHINE_CONFIG_START( goindol, goindol_state )
MCFG_SCREEN_UPDATE_DRIVER(goindol_state, screen_update_goindol)
MCFG_GFXDECODE_ADD("gfxdecode", goindol)
- MCFG_PALETTE_LENGTH(256)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/goldngam.c b/src/mame/drivers/goldngam.c
index 8ad8426fa23..1cb7fe5c2ca 100644
--- a/src/mame/drivers/goldngam.c
+++ b/src/mame/drivers/goldngam.c
@@ -248,7 +248,7 @@ public:
required_shared_ptr<UINT16> m_videoram;
DECLARE_READ16_MEMBER(unk_r);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(goldngam);
UINT32 screen_update_goldngam(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
};
@@ -283,7 +283,7 @@ UINT32 goldngam_state::screen_update_goldngam(screen_device &screen, bitmap_ind1
}
-void goldngam_state::palette_init()
+PALETTE_INIT_MEMBER(goldngam_state, goldngam)
{
}
@@ -571,8 +571,8 @@ static MACHINE_CONFIG_START( swisspkr, goldngam_state )
MCFG_GFXDECODE_ADD("gfxdecode", goldngam)
- MCFG_PALETTE_LENGTH(512)
-
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_INIT_OWNER(goldngam_state, goldngam)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/goldnpkr.c b/src/mame/drivers/goldnpkr.c
index 5c08874d9e9..d153dabce4d 100644
--- a/src/mame/drivers/goldnpkr.c
+++ b/src/mame/drivers/goldnpkr.c
@@ -1076,7 +1076,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(wcrdxtnd_get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(goldnpkr);
DECLARE_PALETTE_INIT(witchcrd);
DECLARE_VIDEO_START(wcrdxtnd);
DECLARE_PALETTE_INIT(wcrdxtnd);
@@ -1158,7 +1158,7 @@ UINT32 goldnpkr_state::screen_update_goldnpkr(screen_device &screen, bitmap_ind1
return 0;
}
-void goldnpkr_state::palette_init()
+PALETTE_INIT_MEMBER(goldnpkr_state, goldnpkr)
{
const UINT8 *color_prom = memregion("proms")->base();
/* prom bits
@@ -1174,7 +1174,7 @@ void goldnpkr_state::palette_init()
/* 0000IBGR */
if (color_prom == 0) return;
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int bit0, bit1, bit2, r, g, b, inten, intenmin, intenmax;
@@ -1198,7 +1198,7 @@ void goldnpkr_state::palette_init()
b = (bit2 * intenmin) + (inten * (bit2 * (intenmax - intenmin)));
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -1226,7 +1226,7 @@ PALETTE_INIT_MEMBER(goldnpkr_state,witchcrd)
if (color_prom == 0) return;
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int bit0, bit1, bit2, bit3, r, g, b, bk;
@@ -1246,7 +1246,7 @@ PALETTE_INIT_MEMBER(goldnpkr_state,witchcrd)
bit2 = (color_prom[i] >> 2) & 0x01;
b = bk * (bit2 * 0xff);
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -1270,7 +1270,7 @@ PALETTE_INIT_MEMBER(goldnpkr_state,wcrdxtnd)
if (color_prom == 0) return;
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int bit0, bit1, bit2, bit3, r, g, b, bk;
@@ -1292,7 +1292,7 @@ PALETTE_INIT_MEMBER(goldnpkr_state,wcrdxtnd)
//if ((b == 0) & (bk = 1)) --> needs better implementation
// b = 0x3f;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -3746,7 +3746,8 @@ static MACHINE_CONFIG_START( goldnpkr_base, goldnpkr_state )
MCFG_MC6845_ADD("crtc", MC6845, "screen", CPU_CLOCK, mc6845_intf) /* 68B45 or 6845s @ CPU clock */
MCFG_GFXDECODE_ADD("gfxdecode", goldnpkr)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(goldnpkr_state, goldnpkr)
MACHINE_CONFIG_END
@@ -3789,7 +3790,8 @@ static MACHINE_CONFIG_DERIVED( witchcrd, goldnpkr_base )
MCFG_PIA_WRITEPA_HANDLER(WRITE8(goldnpkr_state, mux_port_w))
/* video hardware */
- MCFG_PALETTE_INIT_OVERRIDE(goldnpkr_state,witchcrd)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(goldnpkr_state,witchcrd)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -3812,7 +3814,8 @@ static MACHINE_CONFIG_DERIVED( wcfalcon, goldnpkr_base )
MCFG_PIA_WRITEPA_HANDLER(WRITE8(goldnpkr_state, wcfalcon_snd_w)) /* port A out, custom handler due to address + data are muxed */
/* video hardware */
- MCFG_PALETTE_INIT_OVERRIDE(goldnpkr_state,witchcrd)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(goldnpkr_state,witchcrd)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -3834,7 +3837,8 @@ static MACHINE_CONFIG_DERIVED( wildcard, goldnpkr_base )
/* video hardware */
// MCFG_GFXDECODE_MODIFY("gfxdecode", wildcard)
- MCFG_PALETTE_INIT_OVERRIDE(goldnpkr_state,witchcrd)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(goldnpkr_state,witchcrd)
// MCFG_VIDEO_START_OVERRIDE(goldnpkr_state,wildcard)
/* sound hardware */
@@ -3857,7 +3861,8 @@ static MACHINE_CONFIG_DERIVED( wcrdxtnd, goldnpkr_base )
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", wcrdxtnd)
- MCFG_PALETTE_INIT_OVERRIDE(goldnpkr_state,wcrdxtnd)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(goldnpkr_state,wcrdxtnd)
MCFG_VIDEO_START_OVERRIDE(goldnpkr_state,wcrdxtnd)
/* sound hardware */
@@ -3886,7 +3891,8 @@ static MACHINE_CONFIG_DERIVED( wildcrdb, goldnpkr_base )
/* video hardware */
// MCFG_GFXDECODE_MODIFY("gfxdecode", wildcard)
- MCFG_PALETTE_INIT_OVERRIDE(goldnpkr_state,witchcrd)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(goldnpkr_state,witchcrd)
// MCFG_VIDEO_START_OVERRIDE(goldnpkr_state,wildcard)
/* sound hardware */
@@ -3908,7 +3914,8 @@ static MACHINE_CONFIG_DERIVED( genie, goldnpkr_base )
MCFG_PIA_WRITEPA_HANDLER(WRITE8(goldnpkr_state, mux_port_w))
/* video hardware */
- MCFG_PALETTE_INIT_OVERRIDE(goldnpkr_state, witchcrd)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(goldnpkr_state,witchcrd)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/goldstar.c b/src/mame/drivers/goldstar.c
index f8997a42ced..7db3e4f96e0 100644
--- a/src/mame/drivers/goldstar.c
+++ b/src/mame/drivers/goldstar.c
@@ -162,7 +162,7 @@ static ADDRESS_MAP_START( goldstar_map, AS_PROGRAM, 8, goldstar_state )
AM_RANGE(0xf840, 0xf840) AM_DEVWRITE("aysnd", ay8910_device, address_w)
AM_RANGE(0xfa00, 0xfa00) AM_WRITE(goldstar_fa00_w)
AM_RANGE(0xfb00, 0xfb00) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xfd00, 0xfdff) AM_RAM_WRITE(paletteram_BBGGGRRR_byte_w) AM_SHARE("paletteram")
+ AM_RANGE(0xfd00, 0xfdff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xfe00, 0xfe00) AM_READWRITE(protection_r,protection_w)
ADDRESS_MAP_END
@@ -521,8 +521,8 @@ READ8_MEMBER(goldstar_state::unkch_unk_r)
/* newer / more capable hw */
static ADDRESS_MAP_START( unkch_map, AS_PROGRAM, 8, goldstar_state )
AM_RANGE(0x0000, 0x9fff) AM_ROM
- AM_RANGE(0xc000, 0xc1ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_split_lo_w) AM_SHARE("paletteram")
- AM_RANGE(0xc800, 0xc9ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_split_hi_w) AM_SHARE("paletteram2")
+ AM_RANGE(0xc000, 0xc1ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0xc800, 0xc9ff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("nvram")
@@ -6245,7 +6245,8 @@ static MACHINE_CONFIG_START( goldstar, goldstar_state )
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE_ADD("gfxdecode", goldstar)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(BBGGGRRR)
MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,goldstar)
@@ -6279,7 +6280,8 @@ static MACHINE_CONFIG_START( goldstbl, goldstar_state )
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE_ADD("gfxdecode", bl)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(BBGGGRRR)
MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,goldstar)
@@ -6312,7 +6314,8 @@ static MACHINE_CONFIG_START( moonlght, goldstar_state )
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE_ADD("gfxdecode", ml)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(BBGGGRRR)
MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,goldstar)
@@ -6345,7 +6348,9 @@ static MACHINE_CONFIG_START( goldfrui, goldstar_state )
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE_ADD("gfxdecode", goldfrui)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(BBGGGRRR)
+
MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,goldstar)
@@ -6374,7 +6379,7 @@ PALETTE_INIT_MEMBER(goldstar_state,cm)
data = proms[0x000 + i] | (proms[0x100 + i] << 4);
- palette_set_color_rgb(machine(), i, pal3bit(data >> 0), pal3bit(data >> 3), pal2bit(data >> 6));
+ palette.set_pen_color(i, pal3bit(data >> 0), pal3bit(data >> 3), pal2bit(data >> 6));
}
}
@@ -6391,7 +6396,7 @@ PALETTE_INIT_MEMBER(goldstar_state,cmast91)
g = proms[0x100 + i] << 4;
r = proms[0x200 + i] << 4;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -6408,7 +6413,7 @@ PALETTE_INIT_MEMBER(goldstar_state,lucky8)
{
data = proms[0x000 + i] | (proms[0x100 + i] << 4);
- palette_set_color_rgb(machine(), i, pal3bit(data >> 0), pal3bit(data >> 3), pal2bit(data >> 6));
+ palette.set_pen_color(i, pal3bit(data >> 0), pal3bit(data >> 3), pal2bit(data >> 6));
}
proms = memregion("proms2")->base();
@@ -6416,7 +6421,7 @@ PALETTE_INIT_MEMBER(goldstar_state,lucky8)
{
data = proms[i];
- palette_set_color_rgb(machine(), i + 0x80, pal3bit(data >> 0), pal3bit(data >> 3), pal2bit(data >> 6));
+ palette.set_pen_color(i + 0x80, pal3bit(data >> 0), pal3bit(data >> 3), pal2bit(data >> 6));
}
}
@@ -6443,8 +6448,8 @@ static MACHINE_CONFIG_START( chrygld, goldstar_state )
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE_ADD("gfxdecode", chry10)
- MCFG_PALETTE_LENGTH(256)
- MCFG_PALETTE_INIT_OVERRIDE(goldstar_state,cm)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(goldstar_state,cm)
MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,goldstar)
@@ -6484,8 +6489,8 @@ static MACHINE_CONFIG_START( cb3c, goldstar_state )
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE_ADD("gfxdecode", cb3c)
- MCFG_PALETTE_LENGTH(256)
- MCFG_PALETTE_INIT_OVERRIDE(goldstar_state,cm)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(goldstar_state,cm)
MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,goldstar)
@@ -6524,8 +6529,8 @@ static MACHINE_CONFIG_START( ncb3, goldstar_state )
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE_ADD("gfxdecode", ncb3)
- MCFG_PALETTE_LENGTH(256)
- MCFG_PALETTE_INIT_OVERRIDE(goldstar_state,cm)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(goldstar_state,cm)
MCFG_NVRAM_ADD_1FILL("nvram")
@@ -6564,8 +6569,8 @@ static MACHINE_CONFIG_START( cm, goldstar_state )
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE_ADD("gfxdecode", cmbitmap)
- MCFG_PALETTE_LENGTH(256)
- MCFG_PALETTE_INIT_OVERRIDE(goldstar_state,cm)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(goldstar_state,cm)
MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,cherrym)
@@ -6604,8 +6609,8 @@ static MACHINE_CONFIG_START( cmnobmp, goldstar_state )
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE_ADD("gfxdecode", cm)
- MCFG_PALETTE_LENGTH(256)
- MCFG_PALETTE_INIT_OVERRIDE(goldstar_state,cm)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(goldstar_state,cm)
MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,cherrym)
@@ -6639,8 +6644,8 @@ static MACHINE_CONFIG_START( cmast91, goldstar_state )
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_cmast91)
MCFG_GFXDECODE_ADD("gfxdecode", cmast91)
- MCFG_PALETTE_LENGTH(256)
- MCFG_PALETTE_INIT_OVERRIDE(goldstar_state,cmast91)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(goldstar_state,cmast91)
MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,cherrym)
@@ -6677,11 +6682,12 @@ static MACHINE_CONFIG_START( lucky8, goldstar_state )
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_PALETTE_INIT_OVERRIDE(goldstar_state,lucky8)
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE_ADD("gfxdecode", ncb3)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(BBGGGRRR)
+ MCFG_PALETTE_INIT_OWNER(goldstar_state,lucky8)
MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,goldstar)
@@ -6716,11 +6722,11 @@ static MACHINE_CONFIG_START( bingowng, goldstar_state )
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_PALETTE_INIT_OVERRIDE(goldstar_state,lucky8)
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_bingowng)
MCFG_GFXDECODE_ADD("gfxdecode", ncb3)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(goldstar_state,lucky8)
MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,bingowng)
@@ -6755,11 +6761,11 @@ static MACHINE_CONFIG_START( bingownga, goldstar_state )
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
- MCFG_PALETTE_INIT_OVERRIDE(goldstar_state,lucky8)
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_bingowng)
MCFG_GFXDECODE_ADD("gfxdecode", bingownga) /* GFX Decode is the only difference with the parent machine */
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(goldstar_state,lucky8)
MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,bingowng)
@@ -6788,7 +6794,7 @@ PALETTE_INIT_MEMBER(goldstar_state,magodds)
g = proms[0x100 + i] << 4;
r = proms[0x200 + i] << 4;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -6812,10 +6818,10 @@ static MACHINE_CONFIG_START( magodds, goldstar_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_magical)
- MCFG_PALETTE_INIT_OVERRIDE(goldstar_state,magodds)
MCFG_GFXDECODE_ADD("gfxdecode", magodds)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(goldstar_state,magodds)
MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,magical)
@@ -6853,10 +6859,10 @@ static MACHINE_CONFIG_START( kkotnoli, goldstar_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
- MCFG_PALETTE_INIT_OVERRIDE(goldstar_state,lucky8)
MCFG_GFXDECODE_ADD("gfxdecode", ncb3)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(goldstar_state,lucky8)
MCFG_VIDEO_START_OVERRIDE(goldstar_state,goldstar)
@@ -6888,10 +6894,10 @@ static MACHINE_CONFIG_START( ladylinr, goldstar_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
- MCFG_PALETTE_INIT_OVERRIDE(goldstar_state,lucky8)
MCFG_GFXDECODE_ADD("gfxdecode", ncb3)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(goldstar_state,lucky8)
MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,goldstar)
@@ -6928,10 +6934,10 @@ static MACHINE_CONFIG_START( wcat3, goldstar_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
- MCFG_PALETTE_INIT_OVERRIDE(goldstar_state,lucky8)
MCFG_GFXDECODE_ADD("gfxdecode", ncb3)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(goldstar_state,lucky8)
MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,goldstar)
@@ -6971,8 +6977,8 @@ static MACHINE_CONFIG_START( amcoe1, goldstar_state )
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE_ADD("gfxdecode", cm)
- MCFG_PALETTE_LENGTH(256)
- MCFG_PALETTE_INIT_OVERRIDE(goldstar_state,cm)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(goldstar_state,cm)
MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,cherrym)
@@ -7010,8 +7016,8 @@ static MACHINE_CONFIG_START( amcoe1a, goldstar_state )
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_amcoe1a)
MCFG_GFXDECODE_ADD("gfxdecode", cm)
- MCFG_PALETTE_LENGTH(256)
- MCFG_PALETTE_INIT_OVERRIDE(goldstar_state,cm)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(goldstar_state,cm)
MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,cherrym)
@@ -7049,8 +7055,8 @@ static MACHINE_CONFIG_START( amcoe2, goldstar_state )
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE_ADD("gfxdecode", cm)
- MCFG_PALETTE_LENGTH(256)
- MCFG_PALETTE_INIT_OVERRIDE(goldstar_state,cm)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(goldstar_state,cm)
MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,cherrym)
@@ -7083,8 +7089,8 @@ static MACHINE_CONFIG_START( nfm, goldstar_state )
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE_ADD("gfxdecode", nfm)
- MCFG_PALETTE_LENGTH(256)
- MCFG_PALETTE_INIT_OVERRIDE(goldstar_state,cm)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(goldstar_state,cm)
MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,cherrym)
@@ -7114,7 +7120,8 @@ static MACHINE_CONFIG_START( unkch, goldstar_state )
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_unkch)
MCFG_GFXDECODE_ADD("gfxdecode", unkch)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
//MCFG_NVRAM_HANDLER(goldstar)
@@ -7162,8 +7169,8 @@ static MACHINE_CONFIG_START( pkrmast, goldstar_state )
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
MCFG_GFXDECODE_ADD("gfxdecode", pkrmast)
- MCFG_PALETTE_LENGTH(256)
- MCFG_PALETTE_INIT_OVERRIDE(goldstar_state,cm)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(goldstar_state,cm)
MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,cherrym)
@@ -7196,10 +7203,10 @@ static MACHINE_CONFIG_START( megaline, goldstar_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar)
- MCFG_PALETTE_INIT_OVERRIDE(goldstar_state,lucky8)
MCFG_GFXDECODE_ADD("gfxdecode", megaline)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(goldstar_state,lucky8)
// MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,goldstar)
diff --git a/src/mame/drivers/gomoku.c b/src/mame/drivers/gomoku.c
index c67b362d1f4..16b8fb624b1 100644
--- a/src/mame/drivers/gomoku.c
+++ b/src/mame/drivers/gomoku.c
@@ -134,8 +134,8 @@ static MACHINE_CONFIG_START( gomoku, gomoku_state )
MCFG_SCREEN_UPDATE_DRIVER(gomoku_state, screen_update_gomoku)
MCFG_GFXDECODE_ADD("gfxdecode", gomoku)
- MCFG_PALETTE_LENGTH(64)
-
+ MCFG_PALETTE_ADD("palette", 64)
+ MCFG_PALETTE_INIT_OWNER(gomoku_state, gomoku)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/good.c b/src/mame/drivers/good.c
index 98b0f8c0cd0..a1176fb1e4f 100644
--- a/src/mame/drivers/good.c
+++ b/src/mame/drivers/good.c
@@ -117,7 +117,7 @@ static ADDRESS_MAP_START( good_map, AS_PROGRAM, 16, good_state )
AM_RANGE(0x280002, 0x280003) AM_READ_PORT("IN1")
AM_RANGE(0x280004, 0x280005) AM_READ_PORT("IN2")
- AM_RANGE(0x800000, 0x8007ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x800000, 0x8007ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x820000, 0x820fff) AM_RAM_WRITE(fg_tilemapram_w) AM_SHARE("fg_tilemapram")
AM_RANGE(0x822000, 0x822fff) AM_RAM_WRITE(bg_tilemapram_w) AM_SHARE("bg_tilemapram")
@@ -294,7 +294,8 @@ static MACHINE_CONFIG_START( good, good_state )
MCFG_SCREEN_VISIBLE_AREA(1*16, 23*16-1, 0*16, 14*16-1)
MCFG_SCREEN_UPDATE_DRIVER(good_state, screen_update_good)
- MCFG_PALETTE_LENGTH(0x400)
+ MCFG_PALETTE_ADD("palette", 0x400)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/goodejan.c b/src/mame/drivers/goodejan.c
index 0a83e922c45..4298d77058f 100644
--- a/src/mame/drivers/goodejan.c
+++ b/src/mame/drivers/goodejan.c
@@ -307,11 +307,11 @@ void goodejan_state::draw_sprites(running_machine &machine, bitmap_ind16 &bitmap
for (ax=0; ax<dx; ax++)
for (ay=0; ay<dy; ay++) {
if (!fx)
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
sprite++,
color,fx,fy,x+ax*16,y+ay*16,15);
else
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
sprite++,
color,fx,fy,x+(dx-1-ax)*16,y+ay*16,15);
}
@@ -334,7 +334,7 @@ void goodejan_state::video_start()
UINT32 goodejan_state::screen_update_goodejan(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(screen.machine().pens[0x7ff], cliprect); //black pen
+ bitmap.fill(m_palette->pen(0x7ff), cliprect); //black pen
m_sc0_tilemap->set_scrollx(0, (SEIBU_CRTC_SC0_SX) & 0x1ff );
m_sc0_tilemap->set_scrolly(0, (SEIBU_CRTC_SC0_SY) & 0x1ff );
@@ -395,7 +395,7 @@ static ADDRESS_MAP_START( goodejan_map, AS_PROGRAM, 16, goodejan_state )
AM_RANGE(0x00000, 0x0afff) AM_RAM
AM_RANGE(0x0c000, 0x0c7ff) AM_RAM_WRITE(seibucrtc_sc0vram_w) AM_SHARE("sc0_vram")
AM_RANGE(0x0c800, 0x0cfff) AM_RAM_WRITE(seibucrtc_sc3vram_w) AM_SHARE("sc3_vram")
- AM_RANGE(0x0d000, 0x0dfff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0d000, 0x0dfff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
/*Guess: these two aren't used/initialized at all.*/
AM_RANGE(0x0e000, 0x0e7ff) AM_RAM_WRITE(seibucrtc_sc1vram_w) AM_SHARE("sc1_vram")
AM_RANGE(0x0e800, 0x0efff) AM_RAM_WRITE(seibucrtc_sc2vram_w) AM_SHARE("sc2_vram")
@@ -662,7 +662,8 @@ static MACHINE_CONFIG_START( goodejan, goodejan_state )
MCFG_SEIBU_CRTC_ADD("crtc",crtc_intf,0)
MCFG_GFXDECODE_ADD("gfxdecode", goodejan)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
/* sound hardware */
SEIBU_SOUND_SYSTEM_YM3812_INTERFACE(GOODEJAN_MHZ1/2,GOODEJAN_MHZ2/16)
diff --git a/src/mame/drivers/gotcha.c b/src/mame/drivers/gotcha.c
index d6ceb176ea5..d55ce88244f 100644
--- a/src/mame/drivers/gotcha.c
+++ b/src/mame/drivers/gotcha.c
@@ -99,7 +99,7 @@ static ADDRESS_MAP_START( gotcha_map, AS_PROGRAM, 16, gotcha_state )
AM_RANGE(0x100002, 0x100003) AM_WRITE(gotcha_lamps_w)
AM_RANGE(0x100004, 0x100005) AM_WRITE(gotcha_oki_bank_w)
AM_RANGE(0x120000, 0x12ffff) AM_RAM
- AM_RANGE(0x140000, 0x1405ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x140000, 0x1405ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x180000, 0x180001) AM_READ_PORT("INPUTS")
AM_RANGE(0x180002, 0x180003) AM_READ_PORT("SYSTEM")
@@ -275,7 +275,8 @@ static MACHINE_CONFIG_START( gotcha, gotcha_state )
MCFG_SCREEN_UPDATE_DRIVER(gotcha_state, screen_update_gotcha)
MCFG_GFXDECODE_ADD("gfxdecode", gotcha)
- MCFG_PALETTE_LENGTH(768)
+ MCFG_PALETTE_ADD("palette", 768)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
@@ -283,6 +284,7 @@ static MACHINE_CONFIG_START( gotcha, gotcha_state )
decospr_device::set_is_bootleg(*device, true);
decospr_device::set_offsets(*device, 5,-1); // aligned to 2nd instruction screen in attract
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/gottlieb.c b/src/mame/drivers/gottlieb.c
index dff6f77a60e..eaed5e3fbf2 100644
--- a/src/mame/drivers/gottlieb.c
+++ b/src/mame/drivers/gottlieb.c
@@ -1740,7 +1740,7 @@ static MACHINE_CONFIG_START( gottlieb_core, gottlieb_state )
MCFG_SCREEN_UPDATE_DRIVER(gottlieb_state, screen_update_gottlieb)
MCFG_GFXDECODE_ADD("gfxdecode", gfxdecode)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
// basic speaker configuration
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/gotya.c b/src/mame/drivers/gotya.c
index f7c14f7f6b0..4431ebf6d0b 100644
--- a/src/mame/drivers/gotya.c
+++ b/src/mame/drivers/gotya.c
@@ -203,8 +203,8 @@ static MACHINE_CONFIG_START( gotya, gotya_state )
MCFG_SCREEN_UPDATE_DRIVER(gotya_state, screen_update_gotya)
MCFG_GFXDECODE_ADD("gfxdecode", gotya)
- MCFG_PALETTE_LENGTH(16*4)
-
+ MCFG_PALETTE_ADD("palette", 16*4)
+ MCFG_PALETTE_INIT_OWNER(gotya_state, gotya)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/gpworld.c b/src/mame/drivers/gpworld.c
index f23c7c1a482..8a93e3c59a1 100644
--- a/src/mame/drivers/gpworld.c
+++ b/src/mame/drivers/gpworld.c
@@ -110,7 +110,7 @@ void gpworld_state::gpworld_draw_tiles(bitmap_rgb32 &bitmap,const rectangle &cli
{
int current_screen_character = (characterY*64) + characterX;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, m_tile_ram[current_screen_character],
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect, m_tile_ram[current_screen_character],
characterY, 0, 0, characterX*8, characterY*8, 0);
}
}
@@ -125,7 +125,7 @@ void gpworld_state::draw_pixel(bitmap_rgb32 &bitmap,const rectangle &cliprect,in
}
if (cliprect.contains(x, y))
- bitmap.pix32(y, x) = machine().pens[color];
+ bitmap.pix32(y, x) = m_palette->pen(color);
}
void gpworld_state::gpworld_draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect)
@@ -215,10 +215,10 @@ void gpworld_state::gpworld_draw_sprites(bitmap_rgb32 &bitmap, const rectangle &
}
/* Daphne says "don't draw the pixel if it's black". */
- draw_pixel(bitmap,cliprect,x+0,y,palette_get_color(machine(), pixel1 + (sprite_color*0x10 + 0x200)),flip);
- draw_pixel(bitmap,cliprect,x+1,y,palette_get_color(machine(), pixel2 + (sprite_color*0x10 + 0x200)),flip);
- draw_pixel(bitmap,cliprect,x+2,y,palette_get_color(machine(), pixel3 + (sprite_color*0x10 + 0x200)),flip);
- draw_pixel(bitmap,cliprect,x+3,y,palette_get_color(machine(), pixel4 + (sprite_color*0x10 + 0x200)),flip);
+ draw_pixel(bitmap,cliprect,x+0,y,m_palette->pen_color(pixel1 + (sprite_color*0x10 + 0x200)),flip);
+ draw_pixel(bitmap,cliprect,x+1,y,m_palette->pen_color(pixel2 + (sprite_color*0x10 + 0x200)),flip);
+ draw_pixel(bitmap,cliprect,x+2,y,m_palette->pen_color(pixel3 + (sprite_color*0x10 + 0x200)),flip);
+ draw_pixel(bitmap,cliprect,x+3,y,m_palette->pen_color(pixel4 + (sprite_color*0x10 + 0x200)),flip);
x += 4;
@@ -307,7 +307,7 @@ WRITE8_MEMBER(gpworld_state::palette_write)
/* logerror("PAL WRITE index : %x rgb : %d %d %d (real %x) at %x\n", pal_index, r,g,b, data, offset); */
- palette_set_color(machine(), (pal_index & 0xffe) >> 1, rgb_t(a, r, g, b));
+ m_palette->set_pen_color((pal_index & 0xffe) >> 1, rgb_t(a, r, g, b));
}
/* PROGRAM MAP */
@@ -497,7 +497,7 @@ static MACHINE_CONFIG_START( gpworld, gpworld_state )
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
MCFG_GFXDECODE_ADD("gfxdecode", gpworld)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/gradius3.c b/src/mame/drivers/gradius3.c
index 95cdc90a7d1..306adaba72e 100644
--- a/src/mame/drivers/gradius3.c
+++ b/src/mame/drivers/gradius3.c
@@ -143,7 +143,7 @@ WRITE8_MEMBER(gradius3_state::sound_bank_w)
static ADDRESS_MAP_START( gradius3_map, AS_PROGRAM, 16, gradius3_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x040000, 0x043fff) AM_RAM
- AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x080000, 0x080fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE(cpuA_ctrl_w) /* halt cpu B, irq enable, priority, coin counters, other? */
AM_RANGE(0x0c8000, 0x0c8001) AM_READ_PORT("SYSTEM")
AM_RANGE(0x0c8002, 0x0c8003) AM_READ_PORT("P1")
@@ -308,8 +308,6 @@ static MACHINE_CONFIG_START( gradius3, gradius3_state )
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
@@ -317,13 +315,17 @@ static MACHINE_CONFIG_START( gradius3, gradius3_state )
MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(gradius3_state, screen_update_gradius3)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
+ MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", gradius3_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K051960_ADD("k051960", gradius3_k051960_intf)
MCFG_K051960_GFXDECODE("gfxdecode")
+ MCFG_K051960_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/grchamp.c b/src/mame/drivers/grchamp.c
index 8497b6bb6b0..93944252fd0 100644
--- a/src/mame/drivers/grchamp.c
+++ b/src/mame/drivers/grchamp.c
@@ -681,6 +681,7 @@ static MACHINE_CONFIG_START( grchamp, grchamp_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
+
MCFG_GFXDECODE_ADD("gfxdecode", grchamp)
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/gridlee.c b/src/mame/drivers/gridlee.c
index 4fd97861196..a356823bc6a 100644
--- a/src/mame/drivers/gridlee.c
+++ b/src/mame/drivers/gridlee.c
@@ -427,8 +427,8 @@ static MACHINE_CONFIG_START( gridlee, gridlee_state )
MCFG_SCREEN_RAW_PARAMS(GRIDLEE_PIXEL_CLOCK, GRIDLEE_HTOTAL, GRIDLEE_HBEND, GRIDLEE_HBSTART, GRIDLEE_VTOTAL, GRIDLEE_VBEND, GRIDLEE_VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(gridlee_state, screen_update_gridlee)
- MCFG_PALETTE_LENGTH(2048)
-
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_INIT_OWNER(gridlee_state,gridlee)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/groundfx.c b/src/mame/drivers/groundfx.c
index 9e5f726cf81..a1ad1451ee0 100644
--- a/src/mame/drivers/groundfx.c
+++ b/src/mame/drivers/groundfx.c
@@ -88,7 +88,7 @@ WRITE32_MEMBER(groundfx_state::color_ram_w)
g = (a &0xff00) >> 8;
b = (a &0xff);
- palette_set_color(machine(),offset,rgb_t(r,g,b));
+ m_palette->set_pen_color(offset,rgb_t(r,g,b));
}
}
@@ -367,7 +367,7 @@ static MACHINE_CONFIG_START( groundfx, groundfx_state )
MCFG_SCREEN_UPDATE_DRIVER(groundfx_state, screen_update_groundfx)
MCFG_GFXDECODE_ADD("gfxdecode", groundfx)
- MCFG_PALETTE_LENGTH(16384)
+ MCFG_PALETTE_ADD("palette", 16384)
MCFG_TC0100SCN_ADD("tc0100scn", groundfx_tc0100scn_intf)
diff --git a/src/mame/drivers/gstream.c b/src/mame/drivers/gstream.c
index 49de479241a..6a2f15dd334 100644
--- a/src/mame/drivers/gstream.c
+++ b/src/mame/drivers/gstream.c
@@ -246,12 +246,12 @@ WRITE32_MEMBER(gstream_state::gstream_palette_w)
{
COMBINE_DATA(&m_paletteram[offset]);
- palette_set_color_rgb(machine(), offset * 2, pal5bit(m_paletteram[offset] >> (0 + 16)),
+ m_palette->set_pen_color(offset * 2, pal5bit(m_paletteram[offset] >> (0 + 16)),
pal5bit(m_paletteram[offset] >> (6 + 16)),
pal5bit(m_paletteram[offset] >> (11 + 16)));
- palette_set_color_rgb(machine(),offset * 2 + 1,pal5bit(m_paletteram[offset] >> (0)),
+ m_palette->set_pen_color(offset * 2 + 1,pal5bit(m_paletteram[offset] >> (0)),
pal5bit(m_paletteram[offset] >> (6)),
pal5bit(m_paletteram[offset] >> (11)));
}
@@ -785,7 +785,7 @@ void gstream_state::draw_bg_gstream(bitmap_rgb32 &bitmap, const rectangle &clipr
if (m_gfxdecode->gfx(map+5))
drawgfx_transpen_x2222(bitmap,cliprect,m_gfxdecode->gfx(map),m_gfxdecode->gfx(map+5),code,0,0,0,(x*32)-(scrollx&0x1f)-m_xoffset,(y*32)-(scrolly&0x1f),0);
else
- m_gfxdecode->gfx(map)->transpen(bitmap,cliprect,code,pal,0,0,(x*32)-(scrollx&0x1f)-m_xoffset,(y*32)-(scrolly&0x1f),0);
+ m_gfxdecode->gfx(map)->transpen(m_palette,bitmap,cliprect,code,pal,0,0,(x*32)-(scrollx&0x1f)-m_xoffset,(y*32)-(scrolly&0x1f),0);
basex++;
}
@@ -841,10 +841,10 @@ UINT32 gstream_state::screen_update_gstream(screen_device &screen, bitmap_rgb32
}
else
{
- m_gfxdecode->gfx(3)->transpen(bitmap, cliprect, code, col, 0, 0, x - m_xoffset, y, 0);
- m_gfxdecode->gfx(3)->transpen(bitmap, cliprect, code, col, 0, 0, x - m_xoffset, y-0x100, 0);
- m_gfxdecode->gfx(3)->transpen(bitmap, cliprect, code, col, 0, 0, x - m_xoffset - 0x200, y, 0);
- m_gfxdecode->gfx(3)->transpen(bitmap, cliprect, code, col, 0, 0, x - m_xoffset - 0x200, y-0x100, 0);
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap, cliprect, code, col, 0, 0, x - m_xoffset, y, 0);
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap, cliprect, code, col, 0, 0, x - m_xoffset, y-0x100, 0);
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap, cliprect, code, col, 0, 0, x - m_xoffset - 0x200, y, 0);
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap, cliprect, code, col, 0, 0, x - m_xoffset - 0x200, y-0x100, 0);
}
}
@@ -895,8 +895,8 @@ static MACHINE_CONFIG_START( gstream, gstream_state )
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_DRIVER(gstream_state, screen_update_gstream)
- MCFG_PALETTE_LENGTH(0x1000 + 0x400 + 0x400 + 0x400) // sprites + 3 bg layers
- MCFG_GFXDECODE_ADD("gfxdecode",gstream)
+ MCFG_PALETTE_ADD("palette", 0x1000 + 0x400 + 0x400 + 0x400) // sprites + 3 bg layers
+ MCFG_GFXDECODE_ADD("gfxdecode", gstream)
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -927,8 +927,8 @@ static MACHINE_CONFIG_START( x2222, gstream_state )
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_DRIVER(gstream_state, screen_update_gstream)
- MCFG_PALETTE_LENGTH(0x1000 + 0x400 + 0x400 + 0x400) // doesn't use a palette, but keep fake gfxdecode happy
- MCFG_GFXDECODE_ADD("gfxdecode",x2222)
+ MCFG_PALETTE_ADD("palette", 0x1000 + 0x400 + 0x400 + 0x400) // doesn't use a palette, but keep fake gfxdecode happy
+ MCFG_GFXDECODE_ADD("gfxdecode", x2222)
// unknown sound hw (no sound roms dumped)
diff --git a/src/mame/drivers/gstriker.c b/src/mame/drivers/gstriker.c
index ce4ec2887d6..99a279c7859 100644
--- a/src/mame/drivers/gstriker.c
+++ b/src/mame/drivers/gstriker.c
@@ -277,7 +277,7 @@ static ADDRESS_MAP_START( gstriker_map, AS_PROGRAM, 16, gstriker_state )
AM_RANGE(0x140000, 0x141fff) AM_RAM AM_SHARE("cg10103_vram")
AM_RANGE(0x180000, 0x180fff) AM_RAM_WRITE(VS920A_0_vram_w) AM_SHARE("vs920a_vram")
AM_RANGE(0x181000, 0x181fff) AM_RAM AM_SHARE("lineram")
- AM_RANGE(0x1c0000, 0x1c0fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x1c0000, 0x1c0fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x200000, 0x20000f) AM_RAM_WRITE(MB60553_0_regs_w)
AM_RANGE(0x200040, 0x20005f) AM_RAM
@@ -314,7 +314,7 @@ static ADDRESS_MAP_START( vgoal_map, AS_PROGRAM, 16, gstriker_state )
AM_RANGE(0x140000, 0x141fff) AM_RAM AM_SHARE("cg10103_vram")
AM_RANGE(0x180000, 0x180fff) AM_RAM_WRITE(VS920A_0_vram_w) AM_SHARE("vs920a_vram")
AM_RANGE(0x181000, 0x181fff) AM_RAM AM_SHARE("lineram")
- AM_RANGE(0x1c0000, 0x1c4fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x1c0000, 0x1c4fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x200000, 0x20000f) AM_RAM_WRITE(MB60553_0_regs_w)
AM_RANGE(0x200040, 0x20005f) AM_RAM
@@ -553,7 +553,8 @@ static MACHINE_CONFIG_START( gstriker, gstriker_state )
MCFG_SCREEN_UPDATE_DRIVER(gstriker_state, screen_update_gstriker)
MCFG_GFXDECODE_ADD("gfxdecode", gstriker)
- MCFG_PALETTE_LENGTH(0x800)
+ MCFG_PALETTE_ADD("palette", 0x800)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_DEVICE_ADD("vsystem_spr", VSYSTEM_SPR, 0)
MCFG_VSYSTEM_SPR_SET_GFXREGION(2)
@@ -561,6 +562,7 @@ static MACHINE_CONFIG_START( gstriker, gstriker_state )
MCFG_VSYSTEM_SPR_SET_PALMASK(0x1f)
MCFG_VSYSTEM_SPR_SET_TRANSPEN(0)
MCFG_VSYSTEM_SPR_GFXDECODE("gfxdecode")
+ MCFG_VSYSTEM_SPR_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(gstriker_state,gstriker)
@@ -602,12 +604,14 @@ static MACHINE_CONFIG_START( vgoal, gstriker_state )
MCFG_SCREEN_UPDATE_DRIVER(gstriker_state, screen_update_gstriker)
MCFG_GFXDECODE_ADD("gfxdecode", gstriker)
- MCFG_PALETTE_LENGTH(0x2000)
+ MCFG_PALETTE_ADD("palette", 0x2000)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_DEVICE_ADD("vsystem_spr", VSYSTEM_SPR, 0)
MCFG_VSYSTEM_SPR_SET_GFXREGION(2)
MCFG_VSYSTEM_SPR_SET_PALBASE(0x00)
MCFG_VSYSTEM_SPR_GFXDECODE("gfxdecode")
+ MCFG_VSYSTEM_SPR_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(gstriker_state,vgoalsoc)
diff --git a/src/mame/drivers/gsword.c b/src/mame/drivers/gsword.c
index 175c45d5d2e..b03d34a889d 100644
--- a/src/mame/drivers/gsword.c
+++ b/src/mame/drivers/gsword.c
@@ -686,9 +686,9 @@ static MACHINE_CONFIG_START( gsword, gsword_state )
MCFG_SCREEN_UPDATE_DRIVER(gsword_state, screen_update_gsword)
MCFG_GFXDECODE_ADD("gfxdecode", gsword)
- MCFG_PALETTE_LENGTH(64*4+64*4)
+ MCFG_PALETTE_ADD("palette", 64*4+64*4)
- MCFG_PALETTE_INIT_OVERRIDE(gsword_state,gsword)
+ MCFG_PALETTE_INIT_OWNER(gsword_state,gsword)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -729,9 +729,9 @@ static MACHINE_CONFIG_START( josvolly, gsword_state )
MCFG_SCREEN_UPDATE_DRIVER(gsword_state, screen_update_gsword)
MCFG_GFXDECODE_ADD("gfxdecode", gsword)
- MCFG_PALETTE_LENGTH(64*4+64*4)
+ MCFG_PALETTE_ADD("palette", 64*4+64*4)
- MCFG_PALETTE_INIT_OVERRIDE(gsword_state,josvolly)
+ MCFG_PALETTE_INIT_OWNER(gsword_state,josvolly)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/gticlub.c b/src/mame/drivers/gticlub.c
index afc8b543c13..ead1976c286 100644
--- a/src/mame/drivers/gticlub.c
+++ b/src/mame/drivers/gticlub.c
@@ -308,7 +308,7 @@ WRITE32_MEMBER(gticlub_state::paletteram32_w)
{
COMBINE_DATA(&m_generic_paletteram_32[offset]);
data = m_generic_paletteram_32[offset];
- palette_set_color_rgb(machine(), offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
+ m_palette->set_pen_color(offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
}
WRITE_LINE_MEMBER(gticlub_state::voodoo_vblank_0)
@@ -917,7 +917,7 @@ UINT32 gticlub_state::screen_update_gticlub(screen_device &screen, bitmap_rgb32
UINT32 gticlub_state::screen_update_hangplt(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(machine().pens[0], cliprect);
+ bitmap.fill(m_palette->pen(0), cliprect);
if (strcmp(screen.tag(), ":lscreen") == 0)
{
@@ -979,13 +979,14 @@ static MACHINE_CONFIG_START( gticlub, gticlub_state )
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 383)
MCFG_SCREEN_UPDATE_DRIVER(gticlub_state, screen_update_gticlub)
- MCFG_PALETTE_LENGTH(65536)
+ MCFG_PALETTE_ADD("palette", 65536)
MCFG_VIDEO_START_OVERRIDE(gticlub_state,gticlub)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K001604_ADD("k001604_1", gticlub_k001604_intf)
MCFG_K001604_GFXDECODE("gfxdecode")
+ MCFG_K001604_PALETTE("palette")
MCFG_K056800_ADD("k056800", XTAL_33_8688MHz/2)
MCFG_K056800_INT_HANDLER(INPUTLINE("audiocpu", M68K_IRQ_2))
@@ -1014,6 +1015,7 @@ static MACHINE_CONFIG_DERIVED( slrasslt, gticlub )
MCFG_DEVICE_REMOVE("k001604_1")
MCFG_K001604_ADD("k001604_1", slrasslt_k001604_intf)
MCFG_K001604_GFXDECODE("gfxdecode")
+ MCFG_K001604_PALETTE("palette")
MACHINE_CONFIG_END
@@ -1089,7 +1091,7 @@ static MACHINE_CONFIG_START( hangplt, gticlub_state )
MCFG_K033906_ADD("k033906_2", hangplt_k033906_intf_1)
/* video hardware */
- MCFG_PALETTE_LENGTH(65536)
+ MCFG_PALETTE_ADD("palette", 65536)
MCFG_SCREEN_ADD("lscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -1107,9 +1109,11 @@ static MACHINE_CONFIG_START( hangplt, gticlub_state )
MCFG_K001604_ADD("k001604_1", hangplt_k001604_intf_l)
MCFG_K001604_GFXDECODE("gfxdecode")
+ MCFG_K001604_PALETTE("palette")
MCFG_K001604_ADD("k001604_2", hangplt_k001604_intf_r)
MCFG_K001604_GFXDECODE("gfxdecode")
+ MCFG_K001604_PALETTE("palette")
MCFG_K056800_ADD("k056800", XTAL_33_8688MHz/2)
MCFG_K056800_INT_HANDLER(INPUTLINE("audiocpu", M68K_IRQ_2))
diff --git a/src/mame/drivers/guab.c b/src/mame/drivers/guab.c
index ac1644243ea..419152c1b65 100644
--- a/src/mame/drivers/guab.c
+++ b/src/mame/drivers/guab.c
@@ -228,7 +228,7 @@ WRITE16_MEMBER(guab_state::ef9369_w)
col = pal.clut[entry] & 0xfff;
/* Update the MAME palette */
- palette_set_color_rgb(machine(), entry, pal4bit(col >> 0), pal4bit(col >> 4), pal4bit(col >> 8));
+ m_palette->set_pen_color(entry, pal4bit(col >> 0), pal4bit(col >> 4), pal4bit(col >> 8));
}
/* Address register auto-increment */
@@ -265,7 +265,7 @@ UINT32 guab_state::screen_update_guab(screen_device &screen, bitmap_ind16 &bitma
/* If blanked, fill with black */
if (m_tms34061->m_display.blanked)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
@@ -279,8 +279,8 @@ UINT32 guab_state::screen_update_guab(screen_device &screen, bitmap_ind16 &bitma
UINT8 pen = src[x >> 1];
/* Draw two 4-bit pixels */
- *dest++ = machine().pens[pen >> 4];
- *dest++ = machine().pens[pen & 0x0f];
+ *dest++ = m_palette->pen(pen >> 4);
+ *dest++ = m_palette->pen(pen & 0x0f);
}
}
@@ -805,7 +805,7 @@ static MACHINE_CONFIG_START( guab, guab_state )
MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(guab_state, screen_update_guab)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
MCFG_TMS34061_ADD("tms34061", tms34061intf)
diff --git a/src/mame/drivers/gumbo.c b/src/mame/drivers/gumbo.c
index 19b5c9cf69b..55431d51644 100644
--- a/src/mame/drivers/gumbo.c
+++ b/src/mame/drivers/gumbo.c
@@ -49,7 +49,7 @@ PCB Layout
static ADDRESS_MAP_START( gumbo_map, AS_PROGRAM, 16, gumbo_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x080000, 0x083fff) AM_RAM // main ram
- AM_RANGE(0x1b0000, 0x1b03ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x1b0000, 0x1b03ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x1c0100, 0x1c0101) AM_READ_PORT("P1_P2")
AM_RANGE(0x1c0200, 0x1c0201) AM_READ_PORT("DSW")
AM_RANGE(0x1c0300, 0x1c0301) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
@@ -63,7 +63,7 @@ static ADDRESS_MAP_START( mspuzzle_map, AS_PROGRAM, 16, gumbo_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x100000, 0x103fff) AM_RAM // main ram
AM_RANGE(0x190000, 0x197fff) AM_RAM_WRITE(gumbo_fg_videoram_w) AM_SHARE("fg_videoram") // fg tilemap
- AM_RANGE(0x1a0000, 0x1a03ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x1a0000, 0x1a03ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x1b0100, 0x1b0101) AM_READ_PORT("P1_P2")
AM_RANGE(0x1b0200, 0x1b0201) AM_READ_PORT("DSW")
AM_RANGE(0x1b0300, 0x1b0301) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
@@ -73,7 +73,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( dblpoint_map, AS_PROGRAM, 16, gumbo_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x080000, 0x083fff) AM_RAM // main ram
- AM_RANGE(0x1b0000, 0x1b03ff) AM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x1b0000, 0x1b03ff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x1c0100, 0x1c0101) AM_READ_PORT("P1_P2")
AM_RANGE(0x1c0200, 0x1c0201) AM_READ_PORT("DSW")
AM_RANGE(0x1c0300, 0x1c0301) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
@@ -242,8 +242,8 @@ static MACHINE_CONFIG_START( gumbo, gumbo_state )
MCFG_SCREEN_VISIBLE_AREA(8*8, 48*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(gumbo_state, screen_update_gumbo)
- MCFG_PALETTE_LENGTH(0x200)
-
+ MCFG_PALETTE_ADD("palette", 0x200)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/gunbustr.c b/src/mame/drivers/gunbustr.c
index 61d8f805c81..664d3ab45b2 100644
--- a/src/mame/drivers/gunbustr.c
+++ b/src/mame/drivers/gunbustr.c
@@ -75,10 +75,10 @@ WRITE32_MEMBER(gunbustr_state::gunbustr_palette_w)
COMBINE_DATA(&m_generic_paletteram_32[offset]);
a = m_generic_paletteram_32[offset] >> 16;
- palette_set_color_rgb(machine(),offset*2,pal5bit(a >> 10),pal5bit(a >> 5),pal5bit(a >> 0));
+ m_palette->set_pen_color(offset*2,pal5bit(a >> 10),pal5bit(a >> 5),pal5bit(a >> 0));
a = m_generic_paletteram_32[offset] &0xffff;
- palette_set_color_rgb(machine(),offset*2+1,pal5bit(a >> 10),pal5bit(a >> 5),pal5bit(a >> 0));
+ m_palette->set_pen_color(offset*2+1,pal5bit(a >> 10),pal5bit(a >> 5),pal5bit(a >> 0));
}
CUSTOM_INPUT_MEMBER(gunbustr_state::coin_word_r)
@@ -312,7 +312,7 @@ static MACHINE_CONFIG_START( gunbustr, gunbustr_state )
MCFG_SCREEN_UPDATE_DRIVER(gunbustr_state, screen_update_gunbustr)
MCFG_GFXDECODE_ADD("gfxdecode", gunbustr)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
MCFG_TC0480SCP_ADD("tc0480scp", gunbustr_tc0480scp_intf)
diff --git a/src/mame/drivers/gundealr.c b/src/mame/drivers/gundealr.c
index b24cc57d037..c5a6a0ba1f9 100644
--- a/src/mame/drivers/gundealr.c
+++ b/src/mame/drivers/gundealr.c
@@ -418,7 +418,7 @@ static MACHINE_CONFIG_START( gundealr, gundealr_state )
MCFG_SCREEN_UPDATE_DRIVER(gundealr_state, screen_update_gundealr)
MCFG_GFXDECODE_ADD("gfxdecode", gundealr)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
/* sound hardware */
diff --git a/src/mame/drivers/gunpey.c b/src/mame/drivers/gunpey.c
index d465b887c5a..c43f39a08dd 100644
--- a/src/mame/drivers/gunpey.c
+++ b/src/mame/drivers/gunpey.c
@@ -222,7 +222,6 @@ public:
DECLARE_WRITE16_MEMBER(gunpey_vregs_addr_w);
DECLARE_DRIVER_INIT(gunpey);
virtual void video_start();
- virtual void palette_init();
UINT32 screen_update_gunpey(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(gunpey_scanline);
TIMER_CALLBACK_MEMBER(blitter_end);
@@ -555,7 +554,7 @@ UINT32 gunpey_state::screen_update_gunpey(screen_device &screen, bitmap_ind16 &b
int count;
int scene_index;
- bitmap.fill(machine().pens[0], cliprect); //black pen
+ bitmap.fill(m_palette->pen(0), cliprect); //black pen
if((!(m_vreg_addr & 0x8000)) || (!(m_vram_bank & 0x8000)))
return 0;
@@ -1407,15 +1406,6 @@ INPUT_PORTS_END
/***************************************************************************************/
-void gunpey_state::palette_init()
-{
- int i;
-
- for (i = 0; i < 0x8000; i++)
- palette_set_color(machine(), i, rgb_t( pal5bit((i >> 10)&0x1f), pal5bit(((i >> 5))&0x1f), pal5bit((i >> 0)&0x1f)));
-}
-
-
/*:
0x01
0x04 blitter ready
@@ -1464,7 +1454,7 @@ static MACHINE_CONFIG_START( gunpey, gunpey_state )
MCFG_SCREEN_RAW_PARAMS(57242400/8, 442, 0, 320, 264, 0, 240) /* just to get ~60 Hz */
MCFG_SCREEN_UPDATE_DRIVER(gunpey_state, screen_update_gunpey)
- MCFG_PALETTE_LENGTH(0x10000)
+ MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB("palette")
MCFG_GFXDECODE_ADD("gfxdecode", gunpey)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker","rspeaker")
diff --git a/src/mame/drivers/gunsmoke.c b/src/mame/drivers/gunsmoke.c
index da44342a432..33ffe3afd58 100644
--- a/src/mame/drivers/gunsmoke.c
+++ b/src/mame/drivers/gunsmoke.c
@@ -312,7 +312,9 @@ static MACHINE_CONFIG_START( gunsmoke, gunsmoke_state )
MCFG_SCREEN_UPDATE_DRIVER(gunsmoke_state, screen_update_gunsmoke)
MCFG_GFXDECODE_ADD("gfxdecode", gunsmoke)
- MCFG_PALETTE_LENGTH(32*4+16*16+16*16)
+
+ MCFG_PALETTE_ADD("palette", 32*4+16*16+16*16)
+ MCFG_PALETTE_INIT_OWNER(gunsmoke_state, gunsmoke)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/gyruss.c b/src/mame/drivers/gyruss.c
index 0c9444742df..a58c40feae0 100644
--- a/src/mame/drivers/gyruss.c
+++ b/src/mame/drivers/gyruss.c
@@ -535,8 +535,8 @@ static MACHINE_CONFIG_START( gyruss, gyruss_state )
MCFG_SCREEN_UPDATE_DRIVER(gyruss_state, screen_update_gyruss)
MCFG_GFXDECODE_ADD("gfxdecode", gyruss)
- MCFG_PALETTE_LENGTH(16*4+16*16)
-
+ MCFG_PALETTE_ADD("palette", 16*4+16*16)
+ MCFG_PALETTE_INIT_OWNER(gyruss_state, gyruss)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/halleys.c b/src/mame/drivers/halleys.c
index b232f4d10de..e0a430e863f 100644
--- a/src/mame/drivers/halleys.c
+++ b/src/mame/drivers/halleys.c
@@ -265,7 +265,7 @@ public:
DECLARE_DRIVER_INIT(halleys);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(halleys);
UINT32 screen_update_halleys(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_benberob(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(blitter_reset);
@@ -1122,7 +1122,7 @@ READ8_MEMBER(halleys_state::collision_id_r)
//**************************************************************************
// Video Initializations and Updates
-void halleys_state::palette_init()
+PALETTE_INIT_MEMBER(halleys_state, halleys)
{
UINT32 d, r, g, b, i, j, count;
UINT32 *pal_ptr = m_internal_palette;
@@ -1130,7 +1130,7 @@ void halleys_state::palette_init()
for (count=0; count<1024; count++)
{
pal_ptr[count] = 0;
- palette_set_color(machine(), count, rgb_t(0, 0, 0));
+ palette.set_pen_color(count, rgb_t(0, 0, 0));
}
// 00-31: palette RAM(ffc0-ffdf)
@@ -1151,7 +1151,7 @@ void halleys_state::palette_init()
g = r + count + BG_MONO;
r += i;
pal_ptr[g] = d;
- palette_set_color(machine(), g, rgb_t(r, r, r));
+ palette.set_pen_color(g, rgb_t(r, r, r));
}
}
@@ -1166,7 +1166,7 @@ void halleys_state::palette_init()
g = d & 0x0c; g |= i;
b = d<<2 & 0x0c; b |= i;
- palette_set_color_rgb(machine(), j, pal4bit(r), pal4bit(g), pal4bit(b));
+ palette.set_pen_color(j, pal4bit(r), pal4bit(g), pal4bit(b));
}
}
@@ -1234,13 +1234,13 @@ WRITE8_MEMBER(halleys_state::halleys_paletteram_IIRRGGBB_w)
g = d & 0x0c; g |= i; g = g<<4 | g;
b = d<<2 & 0x0c; b |= i; b = b<<4 | b;
- palette_set_color(machine(), offset, rgb_t(r, g, b));
- palette_set_color(machine(), offset+SP_2BACK, rgb_t(r, g, b));
- palette_set_color(machine(), offset+SP_ALPHA, rgb_t(r, g, b));
- palette_set_color(machine(), offset+SP_COLLD, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset+SP_2BACK, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset+SP_ALPHA, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset+SP_COLLD, rgb_t(r, g, b));
halleys_decode_rgb(&r, &g, &b, offset, 0);
- palette_set_color(machine(), offset+0x20, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset+0x20, rgb_t(r, g, b));
}
@@ -1943,7 +1943,7 @@ void halleys_state::machine_reset()
m_blitter_busy = 0;
m_collision_count = 0;
m_stars_enabled = 0;
- m_bgcolor = get_black_pen(machine());
+ m_bgcolor = m_palette->black_pen();
m_fftail = m_ffhead = m_ffcount = 0;
memset(m_io_ram, 0xff, m_io_ram.bytes());
@@ -1981,8 +1981,8 @@ static MACHINE_CONFIG_START( halleys, halleys_state )
MCFG_SCREEN_VISIBLE_AREA(VIS_MINX, VIS_MAXX, VIS_MINY, VIS_MAXY)
MCFG_SCREEN_UPDATE_DRIVER(halleys_state, screen_update_halleys)
- MCFG_PALETTE_LENGTH(PALETTE_SIZE)
-
+ MCFG_PALETTE_ADD("palette", PALETTE_SIZE)
+ MCFG_PALETTE_INIT_OWNER(halleys_state, halleys)
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/hanaawas.c b/src/mame/drivers/hanaawas.c
index 74a867deb06..151912588c8 100644
--- a/src/mame/drivers/hanaawas.c
+++ b/src/mame/drivers/hanaawas.c
@@ -210,8 +210,8 @@ static MACHINE_CONFIG_START( hanaawas, hanaawas_state )
MCFG_SCREEN_UPDATE_DRIVER(hanaawas_state, screen_update_hanaawas)
MCFG_GFXDECODE_ADD("gfxdecode", hanaawas)
- MCFG_PALETTE_LENGTH(32*8)
-
+ MCFG_PALETTE_ADD("palette", 32*8)
+ MCFG_PALETTE_INIT_OWNER(hanaawas_state, hanaawas)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/harddriv.c b/src/mame/drivers/harddriv.c
index 15b76f0f44f..98a75195f99 100644
--- a/src/mame/drivers/harddriv.c
+++ b/src/mame/drivers/harddriv.c
@@ -1340,7 +1340,7 @@ static MACHINE_CONFIG_START( driver_nomsp, harddriv_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(HARDDRIV_GSP_CLOCK/12*4, 160*4, 0, 127*4, 417, 0, 384)
diff --git a/src/mame/drivers/hcastle.c b/src/mame/drivers/hcastle.c
index 324c8d226b0..329cf9ad435 100644
--- a/src/mame/drivers/hcastle.c
+++ b/src/mame/drivers/hcastle.c
@@ -214,11 +214,14 @@ static MACHINE_CONFIG_START( hcastle, hcastle_state )
MCFG_SCREEN_UPDATE_DRIVER(hcastle_state, screen_update_hcastle)
MCFG_GFXDECODE_ADD("gfxdecode", hcastle)
- MCFG_PALETTE_LENGTH(2*8*16*16)
+ MCFG_PALETTE_ADD("palette", 2*8*16*16)
+ MCFG_PALETTE_INIT_OWNER(hcastle_state, hcastle)
MCFG_K007121_ADD("k007121_1")
+ MCFG_K007121_PALETTE("palette")
MCFG_K007121_ADD("k007121_2")
+ MCFG_K007121_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/headonb.c b/src/mame/drivers/headonb.c
index b592cc94133..51491bc3fcd 100644
--- a/src/mame/drivers/headonb.c
+++ b/src/mame/drivers/headonb.c
@@ -47,7 +47,6 @@ public:
DECLARE_WRITE8_MEMBER(headonb_video_ram_w);
- virtual void palette_init();
virtual void video_start();
UINT32 screen_update_headonb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TILE_GET_INFO_MEMBER(get_headonb_tile_info);
@@ -62,12 +61,6 @@ public:
***************************************************************************/
-void headonb_state::palette_init()
-{
- palette_set_color(machine(), 0, rgb_t::black);
- palette_set_color(machine(), 1, rgb_t::white);
-}
-
TILE_GET_INFO_MEMBER(headonb_state::get_headonb_tile_info)
{
UINT8 code = m_video_ram[tile_index];
@@ -178,7 +171,7 @@ static MACHINE_CONFIG_START( headonb, headonb_state )
MCFG_SCREEN_UPDATE_DRIVER(headonb_state, screen_update_headonb)
MCFG_GFXDECODE_ADD("gfxdecode", headonb)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
// TODO
diff --git a/src/mame/drivers/hexion.c b/src/mame/drivers/hexion.c
index ecf110b63d4..e1f80244179 100644
--- a/src/mame/drivers/hexion.c
+++ b/src/mame/drivers/hexion.c
@@ -235,9 +235,7 @@ static MACHINE_CONFIG_START( hexion, hexion_state )
MCFG_SCREEN_UPDATE_DRIVER(hexion_state, screen_update_hexion)
MCFG_GFXDECODE_ADD("gfxdecode", hexion)
- MCFG_PALETTE_LENGTH(256)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/hideseek.c b/src/mame/drivers/hideseek.c
index 5feba86cadb..042b64d3fec 100644
--- a/src/mame/drivers/hideseek.c
+++ b/src/mame/drivers/hideseek.c
@@ -41,7 +41,7 @@ public:
DECLARE_DRIVER_INIT(hideseek);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(hideseek);
UINT32 screen_update_hideseek(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -82,12 +82,12 @@ static GFXDECODE_START( hideseek )
GFXDECODE_END
-void hideseek_state::palette_init()
+PALETTE_INIT_MEMBER(hideseek_state, hideseek)
{
int i;
for (i = 0; i < 0x8000; i++)
- palette_set_color(machine(), i, rgb_t( pal5bit((i >> 10)&0x1f), pal5bit(((i >> 5))&0x1f), pal5bit((i >> 0)&0x1f)));
+ palette.set_pen_color(i, rgb_t( pal5bit((i >> 10)&0x1f), pal5bit(((i >> 5))&0x1f), pal5bit((i >> 0)&0x1f)));
}
@@ -107,7 +107,8 @@ static MACHINE_CONFIG_START( hideseek, hideseek_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(hideseek_state, screen_update_hideseek)
- MCFG_PALETTE_LENGTH(0x10000)
+ MCFG_PALETTE_ADD("palette", 0x10000)
+ MCFG_PALETTE_INIT_OWNER(hideseek_state, hideseek)
MCFG_GFXDECODE_ADD("gfxdecode", hideseek)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker","rspeaker")
diff --git a/src/mame/drivers/higemaru.c b/src/mame/drivers/higemaru.c
index 3af74abecc4..2315fa5112d 100644
--- a/src/mame/drivers/higemaru.c
+++ b/src/mame/drivers/higemaru.c
@@ -173,8 +173,9 @@ static MACHINE_CONFIG_START( higemaru, higemaru_state )
MCFG_SCREEN_UPDATE_DRIVER(higemaru_state, screen_update_higemaru)
MCFG_GFXDECODE_ADD("gfxdecode", higemaru)
- MCFG_PALETTE_LENGTH(32*4+16*16)
+ MCFG_PALETTE_ADD("palette", 32*4+16*16)
+ MCFG_PALETTE_INIT_OWNER(higemaru_state, higemaru)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/highvdeo.c b/src/mame/drivers/highvdeo.c
index faa2fd7577d..c5c7033c507 100644
--- a/src/mame/drivers/highvdeo.c
+++ b/src/mame/drivers/highvdeo.c
@@ -172,12 +172,12 @@ UINT32 highvdeo_state::screen_update_tourvisn(screen_device &screen, bitmap_rgb3
color = ((m_blit_ram[count]) & 0x00ff)>>0;
if(cliprect.contains((x*2)+0, y))
- bitmap.pix32(y, (x*2)+0) = machine().pens[color];
+ bitmap.pix32(y, (x*2)+0) = m_palette->pen(color);
color = ((m_blit_ram[count]) & 0xff00)>>8;
if(cliprect.contains((x*2)+1, y))
- bitmap.pix32(y, (x*2)+1) = machine().pens[color];
+ bitmap.pix32(y, (x*2)+1) = m_palette->pen(color);
count++;
}
@@ -257,7 +257,7 @@ WRITE16_MEMBER(highvdeo_state::tv_vcf_paletteram_w)
break;
case 2:
m_pal.b = ((data & 0x3f) << 2) | ((data & 0x30) >> 4);
- palette_set_color(machine(), m_pal.offs, rgb_t(m_pal.r, m_pal.g, m_pal.b));
+ m_palette->set_pen_color(m_pal.offs, rgb_t(m_pal.r, m_pal.g, m_pal.b));
m_pal.offs_internal = 0;
m_pal.offs++;
break;
@@ -441,7 +441,7 @@ WRITE16_MEMBER(highvdeo_state::tv_tcf_paletteram_w)
g = (color >> 3) & 0xf8;
b = (color << 3) & 0xf8;
- palette_set_color_rgb(machine(), offset, r, g, b);
+ m_palette->set_pen_color(offset, r, g, b);
}
WRITE16_MEMBER(highvdeo_state::tv_tcf_bankselect_w)
@@ -1086,7 +1086,7 @@ static MACHINE_CONFIG_START( tv_vcf, highvdeo_state )
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
MCFG_SCREEN_UPDATE_DRIVER(highvdeo_state, screen_update_tourvisn)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_VIDEO_START_OVERRIDE(highvdeo_state,tourvisn)
@@ -1160,7 +1160,7 @@ static MACHINE_CONFIG_START( brasil, highvdeo_state )
MCFG_SCREEN_VISIBLE_AREA(0, 400-1, 0, 300-1)
MCFG_SCREEN_UPDATE_DRIVER(highvdeo_state, screen_update_brasil)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_VIDEO_START_OVERRIDE(highvdeo_state,tourvisn)
diff --git a/src/mame/drivers/hikaru.c b/src/mame/drivers/hikaru.c
index 8aafac4c226..73d888258f6 100644
--- a/src/mame/drivers/hikaru.c
+++ b/src/mame/drivers/hikaru.c
@@ -502,7 +502,7 @@ static MACHINE_CONFIG_START( hikaru, hikaru_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(hikaru_state, screen_update_hikaru)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
// MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/himesiki.c b/src/mame/drivers/himesiki.c
index d4c45545447..4a11ffda16c 100644
--- a/src/mame/drivers/himesiki.c
+++ b/src/mame/drivers/himesiki.c
@@ -109,7 +109,7 @@ static ADDRESS_MAP_START( himesiki_prm0, AS_PROGRAM, 8, himesiki_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x9fff) AM_RAM
AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0xa800, 0xafff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xb000, 0xbfff) AM_RAM_WRITE(himesiki_bg_ram_w) AM_SHARE("bg_ram")
AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank1")
ADDRESS_MAP_END
@@ -306,7 +306,8 @@ static MACHINE_CONFIG_START( himesiki, himesiki_state )
MCFG_SCREEN_UPDATE_DRIVER(himesiki_state, screen_update_himesiki)
MCFG_GFXDECODE_ADD("gfxdecode", himesiki)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
diff --git a/src/mame/drivers/hitme.c b/src/mame/drivers/hitme.c
index 97dbf9518bd..d7babf8a7ad 100644
--- a/src/mame/drivers/hitme.c
+++ b/src/mame/drivers/hitme.c
@@ -323,9 +323,8 @@ static MACHINE_CONFIG_START( hitme, hitme_state )
MCFG_SCREEN_UPDATE_DRIVER(hitme_state, screen_update_hitme)
MCFG_GFXDECODE_ADD("gfxdecode", hitme)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/hitpoker.c b/src/mame/drivers/hitpoker.c
index 99b60be8487..6fefcfc8f1e 100644
--- a/src/mame/drivers/hitpoker.c
+++ b/src/mame/drivers/hitpoker.c
@@ -117,7 +117,7 @@ UINT32 hitpoker_state::screen_update_hitpoker(screen_device &screen, bitmap_ind1
gfx_bpp = (m_colorram[count] & 0x80)>>7; //flag between 4 and 8 bpp
color = gfx_bpp ? ((m_colorram[count] & 0x70)>>4) : (m_colorram[count] & 0xf);
- m_gfxdecode->gfx(gfx_bpp)->opaque(bitmap,cliprect,tile,color,0,0,x*8,y*8);
+ m_gfxdecode->gfx(gfx_bpp)->opaque(m_palette,bitmap,cliprect,tile,color,0,0,x*8,y*8);
count+=2;
}
@@ -181,7 +181,7 @@ WRITE8_MEMBER(hitpoker_state::hitpoker_paletteram_w)
g = ((datax)&0x07e0)>>5;
r = ((datax)&0x001f)>>0;
- palette_set_color_rgb(machine(), offset, pal5bit(r), pal6bit(g), pal5bit(b));
+ m_palette->set_pen_color(offset, pal5bit(r), pal6bit(g), pal5bit(b));
}
READ8_MEMBER(hitpoker_state::rtc_r)
@@ -511,7 +511,7 @@ static MACHINE_CONFIG_START( hitpoker, hitpoker_state )
MCFG_MC6845_ADD("crtc", H46505, "screen", CRTC_CLOCK/2, mc6845_intf) /* hand tuned to get ~60 fps */
MCFG_GFXDECODE_ADD("gfxdecode", hitpoker)
- MCFG_PALETTE_LENGTH(0x800)
+ MCFG_PALETTE_ADD("palette", 0x800)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/hnayayoi.c b/src/mame/drivers/hnayayoi.c
index 10b286098f8..8ac847bd948 100644
--- a/src/mame/drivers/hnayayoi.c
+++ b/src/mame/drivers/hnayayoi.c
@@ -565,9 +565,7 @@ static MACHINE_CONFIG_START( hnayayoi, hnayayoi_state )
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(hnayayoi_state, screen_update_hnayayoi)
- MCFG_PALETTE_LENGTH(256)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/hng64.c b/src/mame/drivers/hng64.c
index 8983d59e173..0f039cb5d7f 100644
--- a/src/mame/drivers/hng64.c
+++ b/src/mame/drivers/hng64.c
@@ -525,7 +525,7 @@ WRITE32_MEMBER(hng64_state::hng64_pal_w)
g = ((paletteram[offset] & 0x0000ff00) >>8);
r = ((paletteram[offset] & 0x00ff0000) >>16);
//a = ((paletteram[offset] & 0xff000000) >>24);
- palette_set_color(machine(),offset,rgb_t(r,g,b));
+ m_palette->set_pen_color(offset,rgb_t(r,g,b));
}
READ32_MEMBER(hng64_state::hng64_sysregs_r)
@@ -1970,10 +1970,9 @@ static MACHINE_CONFIG_START( hng64, hng64_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(hng64_state, screen_update_hng64)
-
- MCFG_PALETTE_LENGTH(0x1000)
-
MCFG_SCREEN_VBLANK_DRIVER(hng64_state, screen_eof_hng64)
+
+ MCFG_PALETTE_ADD("palette", 0x1000)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/holeland.c b/src/mame/drivers/holeland.c
index 7484ca2133e..32668afdbc7 100644
--- a/src/mame/drivers/holeland.c
+++ b/src/mame/drivers/holeland.c
@@ -291,9 +291,7 @@ static MACHINE_CONFIG_START( holeland, holeland_state )
MCFG_SCREEN_UPDATE_DRIVER(holeland_state, screen_update_holeland)
MCFG_GFXDECODE_ADD("gfxdecode", holeland)
- MCFG_PALETTE_LENGTH(256)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
MCFG_VIDEO_START_OVERRIDE(holeland_state,holeland)
/* sound hardware */
@@ -361,9 +359,7 @@ static MACHINE_CONFIG_START( crzrally, holeland_state )
MCFG_SCREEN_UPDATE_DRIVER(holeland_state, screen_update_crzrally)
MCFG_GFXDECODE_ADD("gfxdecode", crzrally)
- MCFG_PALETTE_LENGTH(256)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
MCFG_VIDEO_START_OVERRIDE(holeland_state,crzrally)
/* sound hardware */
diff --git a/src/mame/drivers/homedata.c b/src/mame/drivers/homedata.c
index 89559180671..97148393b47 100644
--- a/src/mame/drivers/homedata.c
+++ b/src/mame/drivers/homedata.c
@@ -1241,9 +1241,9 @@ static MACHINE_CONFIG_START( mrokumei, homedata_state )
MCFG_SCREEN_VBLANK_DRIVER(homedata_state, screen_eof_homedata)
MCFG_GFXDECODE_ADD("gfxdecode", mrokumei)
- MCFG_PALETTE_LENGTH(0x8000)
+ MCFG_PALETTE_ADD("palette", 0x8000)
- MCFG_PALETTE_INIT_OVERRIDE(homedata_state,mrokumei)
+ MCFG_PALETTE_INIT_OWNER(homedata_state,mrokumei)
MCFG_VIDEO_START_OVERRIDE(homedata_state,mrokumei)
/* sound hardware */
@@ -1298,9 +1298,9 @@ static MACHINE_CONFIG_START( reikaids, homedata_state )
MCFG_SCREEN_VBLANK_DRIVER(homedata_state, screen_eof_homedata)
MCFG_GFXDECODE_ADD("gfxdecode", reikaids)
- MCFG_PALETTE_LENGTH(0x8000)
+ MCFG_PALETTE_ADD("palette", 0x8000)
- MCFG_PALETTE_INIT_OVERRIDE(homedata_state,reikaids)
+ MCFG_PALETTE_INIT_OWNER(homedata_state,reikaids)
MCFG_VIDEO_START_OVERRIDE(homedata_state,reikaids)
/* sound hardware */
@@ -1348,9 +1348,9 @@ static MACHINE_CONFIG_START( pteacher, homedata_state )
MCFG_SCREEN_VBLANK_DRIVER(homedata_state, screen_eof_homedata)
MCFG_GFXDECODE_ADD("gfxdecode", pteacher)
- MCFG_PALETTE_LENGTH(0x8000)
+ MCFG_PALETTE_ADD("palette", 0x8000)
- MCFG_PALETTE_INIT_OVERRIDE(homedata_state,pteacher)
+ MCFG_PALETTE_INIT_OWNER(homedata_state,pteacher)
MCFG_VIDEO_START_OVERRIDE(homedata_state,pteacher)
/* sound hardware */
@@ -1510,9 +1510,9 @@ static MACHINE_CONFIG_START( mirderby, homedata_state )
MCFG_SCREEN_UPDATE_DRIVER(homedata_state, screen_update_mirderby)
MCFG_GFXDECODE_ADD("gfxdecode", mirderby)
- MCFG_PALETTE_LENGTH(0x8000)
+ MCFG_PALETTE_ADD("palette", 0x8000)
- MCFG_PALETTE_INIT_OVERRIDE(homedata_state,mirderby)
+ MCFG_PALETTE_INIT_OWNER(homedata_state,mirderby)
MCFG_VIDEO_START_OVERRIDE(homedata_state,mirderby)
/* sound hardware */
diff --git a/src/mame/drivers/homerun.c b/src/mame/drivers/homerun.c
index 73a842b1fbf..4b1374d5349 100644
--- a/src/mame/drivers/homerun.c
+++ b/src/mame/drivers/homerun.c
@@ -390,7 +390,7 @@ static MACHINE_CONFIG_START( dynashot, homerun_state )
MCFG_SCREEN_UPDATE_DRIVER(homerun_state, screen_update_homerun)
MCFG_GFXDECODE_ADD("gfxdecode", homerun)
- MCFG_PALETTE_LENGTH(16*4)
+ MCFG_PALETTE_ADD("palette", 16*4)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/hornet.c b/src/mame/drivers/hornet.c
index c197a41d335..a6c2c38daa5 100644
--- a/src/mame/drivers/hornet.c
+++ b/src/mame/drivers/hornet.c
@@ -999,12 +999,13 @@ static MACHINE_CONFIG_START( hornet, hornet_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 48*8-1)
MCFG_SCREEN_UPDATE_DRIVER(hornet_state, screen_update_hornet)
- MCFG_PALETTE_LENGTH(65536)
+ MCFG_PALETTE_ADD("palette", 65536)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K037122_ADD("k037122_1", "screen", 0)
MCFG_K037122_GFXDECODE("gfxdecode")
+ MCFG_K037122_PALETTE("palette")
MCFG_K056800_ADD("k056800", XTAL_16_9344MHz)
MCFG_K056800_INT_HANDLER(INPUTLINE("audiocpu", M68K_IRQ_2))
@@ -1075,9 +1076,11 @@ static MACHINE_CONFIG_DERIVED( hornet_2board, hornet )
MCFG_DEVICE_REMOVE("k037122_1")
MCFG_K037122_ADD("k037122_1", "lscreen", 0)
MCFG_K037122_GFXDECODE("gfxdecode")
+ MCFG_K037122_PALETTE("palette")
MCFG_K037122_ADD("k037122_2", "rscreen", 1)
MCFG_K037122_GFXDECODE("gfxdecode")
+ MCFG_K037122_PALETTE("palette")
MCFG_DEVICE_REMOVE("voodoo0")
MCFG_3DFX_VOODOO_1_ADD("voodoo0", STD_VOODOO_1_CLOCK, voodoo_l_intf)
@@ -1086,7 +1089,8 @@ static MACHINE_CONFIG_DERIVED( hornet_2board, hornet )
MCFG_K033906_ADD("k033906_2", hornet_k033906_intf_1)
/* video hardware */
- MCFG_PALETTE_LENGTH(65536)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 65536)
MCFG_DEVICE_REMOVE("screen")
diff --git a/src/mame/drivers/hotblock.c b/src/mame/drivers/hotblock.c
index 4f49c01bb59..de7a58c6340 100644
--- a/src/mame/drivers/hotblock.c
+++ b/src/mame/drivers/hotblock.c
@@ -152,12 +152,12 @@ UINT32 hotblock_state::screen_update_hotblock(screen_device &screen, bitmap_ind1
int i;
static const int xxx = 320, yyy = 204;
- bitmap.fill(get_black_pen(machine()));
+ bitmap.fill(m_palette->black_pen());
for (i = 0; i < 256; i++)
{
int dat = (m_pal[i * 2 + 1] << 8) | m_pal[i * 2];
- palette_set_color_rgb(machine(), i, pal5bit(dat >> 0), pal5bit(dat >> 5), pal5bit(dat >> 10));
+ m_palette->set_pen_color(i, pal5bit(dat >> 0), pal5bit(dat >> 5), pal5bit(dat >> 10));
}
count = 0;
@@ -230,7 +230,7 @@ static MACHINE_CONFIG_START( hotblock, hotblock_state )
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
MCFG_SCREEN_UPDATE_DRIVER(hotblock_state, screen_update_hotblock)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
diff --git a/src/mame/drivers/hotstuff.c b/src/mame/drivers/hotstuff.c
index cbe5ab2217a..cec4fd0591f 100644
--- a/src/mame/drivers/hotstuff.c
+++ b/src/mame/drivers/hotstuff.c
@@ -136,7 +136,7 @@ static MACHINE_CONFIG_START( hotstuff, hotstuff_state )
MCFG_SCREEN_VISIBLE_AREA((0x10*4)+8, 101*8-1, 0*8, 33*8-1)
MCFG_SCREEN_UPDATE_DRIVER(hotstuff_state, screen_update_hotstuff)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/hvyunit.c b/src/mame/drivers/hvyunit.c
index b24703a353d..7e21642c5c3 100644
--- a/src/mame/drivers/hvyunit.c
+++ b/src/mame/drivers/hvyunit.c
@@ -187,7 +187,7 @@ UINT32 hvyunit_state::screen_update_hvyunit(screen_device &screen, bitmap_ind16
m_bg_tilemap->set_scrollx(0, ((m_port0_data & 0x40) << 2) + m_scrollx + SX_POS); // TODO
m_bg_tilemap->set_scrolly(0, ((m_port0_data & 0x80) << 1) + m_scrolly + SY_POS); // TODO
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
m_pandora->update(bitmap, cliprect);
@@ -422,8 +422,8 @@ static ADDRESS_MAP_START( slave_memory, AS_PROGRAM, 8, hvyunit_state )
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2")
AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(hu_videoram_w) AM_SHARE("videoram")
AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(hu_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xd000, 0xd1ff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_byte_split_hi_w) AM_SHARE("paletteram2")
- AM_RANGE(0xd800, 0xd9ff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_byte_split_lo_w) AM_SHARE("paletteram")
+ AM_RANGE(0xd000, 0xd1ff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
+ AM_RANGE(0xd800, 0xd9ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xd000, 0xdfff) AM_RAM
AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("share1")
ADDRESS_MAP_END
@@ -668,10 +668,12 @@ static MACHINE_CONFIG_START( hvyunit, hvyunit_state )
MCFG_SCREEN_VBLANK_DRIVER(hvyunit_state, screen_eof_hvyunit)
MCFG_GFXDECODE_ADD("gfxdecode", hvyunit)
- MCFG_PALETTE_LENGTH(0x800)
+ MCFG_PALETTE_ADD("palette", 0x800)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
MCFG_KANEKO_PANDORA_ADD("pandora", hvyunit_pandora_config)
MCFG_KANEKO_PANDORA_GFXDECODE("gfxdecode")
+ MCFG_KANEKO_PANDORA_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/hyperspt.c b/src/mame/drivers/hyperspt.c
index 9cde7e130f4..506ecca6d12 100644
--- a/src/mame/drivers/hyperspt.c
+++ b/src/mame/drivers/hyperspt.c
@@ -308,8 +308,8 @@ static MACHINE_CONFIG_START( hyperspt, hyperspt_state )
MCFG_SCREEN_UPDATE_DRIVER(hyperspt_state, screen_update_hyperspt)
MCFG_GFXDECODE_ADD("gfxdecode", hyperspt)
- MCFG_PALETTE_LENGTH(16*16+16*16)
-
+ MCFG_PALETTE_ADD("palette", 16*16+16*16)
+ MCFG_PALETTE_INIT_OWNER(hyperspt_state, hyperspt)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/hyprduel.c b/src/mame/drivers/hyprduel.c
index 0318f816e60..bf55ca9673b 100644
--- a/src/mame/drivers/hyprduel.c
+++ b/src/mame/drivers/hyprduel.c
@@ -663,7 +663,7 @@ static MACHINE_CONFIG_START( hyprduel, hyprduel_state )
MCFG_SCREEN_UPDATE_DRIVER(hyprduel_state, screen_update_hyprduel)
MCFG_GFXDECODE_ADD("gfxdecode", 14220)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
MCFG_VIDEO_START_OVERRIDE(hyprduel_state,hyprduel_14220)
@@ -704,7 +704,7 @@ static MACHINE_CONFIG_START( magerror, hyprduel_state )
MCFG_SCREEN_UPDATE_DRIVER(hyprduel_state, screen_update_hyprduel)
MCFG_GFXDECODE_ADD("gfxdecode", 14220)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
MCFG_VIDEO_START_OVERRIDE(hyprduel_state,magerror_14220)
diff --git a/src/mame/drivers/ichiban.c b/src/mame/drivers/ichiban.c
index 1e1887265c2..d69cebcb0cf 100644
--- a/src/mame/drivers/ichiban.c
+++ b/src/mame/drivers/ichiban.c
@@ -130,8 +130,7 @@ static MACHINE_CONFIG_START( ichibanjyan, ichibanjyan_state )
MCFG_GFXDECODE_ADD("gfxdecode", ichibanjyan)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 512)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/igs009.c b/src/mame/drivers/igs009.c
index 5cdd058581b..c70cb892f54 100644
--- a/src/mame/drivers/igs009.c
+++ b/src/mame/drivers/igs009.c
@@ -328,7 +328,7 @@ UINT32 igs009_state::screen_update_jingbell(screen_device &screen, bitmap_ind16
/* draw top of screen */
clip.set(visarea.min_x, visarea.max_x, startclipmin, startclipmin+2);
- bitmap.fill(machine().pens[rowenable], clip);
+ bitmap.fill(m_palette->pen(rowenable), clip);
if (rowenable==0)
{ // 0 and 1 are the same? or is there a global switchoff?
@@ -352,7 +352,7 @@ UINT32 igs009_state::screen_update_jingbell(screen_device &screen, bitmap_ind16
}
}
- else bitmap.fill(get_black_pen(machine()), cliprect);
+ else bitmap.fill(m_palette->black_pen(), cliprect);
if (layers_ctrl & 2) m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
@@ -475,8 +475,8 @@ static ADDRESS_MAP_START( jingbell_portmap, AS_IO, 8, igs009_state )
AM_RANGE( 0x1000, 0x11ff ) AM_RAM_WRITE(bg_scroll_w ) AM_SHARE("bg_scroll")
- AM_RANGE( 0x2000, 0x23ff ) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_split_lo_w ) AM_SHARE("paletteram")
- AM_RANGE( 0x2400, 0x27ff ) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_split_hi_w ) AM_SHARE("paletteram2")
+ AM_RANGE( 0x2000, 0x23ff ) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE( 0x2400, 0x27ff ) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE( 0x3000, 0x33ff ) AM_RAM_WRITE(gp98_reel1_ram_w ) AM_SHARE("gp98_reel1_ram")
AM_RANGE( 0x3400, 0x37ff ) AM_RAM_WRITE(gp98_reel2_ram_w ) AM_SHARE("gp98_reel2_ram")
@@ -763,7 +763,8 @@ static MACHINE_CONFIG_START( jingbell, igs009_state )
MCFG_SCREEN_UPDATE_DRIVER(igs009_state, screen_update_jingbell)
MCFG_GFXDECODE_ADD("gfxdecode", jingbell)
- MCFG_PALETTE_LENGTH(0x400)
+ MCFG_PALETTE_ADD("palette", 0x400)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
diff --git a/src/mame/drivers/igs011.c b/src/mame/drivers/igs011.c
index 430fd3ebee7..68fa2d07ed0 100644
--- a/src/mame/drivers/igs011.c
+++ b/src/mame/drivers/igs011.c
@@ -315,7 +315,7 @@ UINT32 igs011_state::screen_update_igs011(screen_device &screen, bitmap_ind16 &b
#ifdef MAME_DEBUG
if ((layer_enable != -1) && (pri_addr == 0xff))
- bitmap.pix16(y, x) = get_black_pen(machine());
+ bitmap.pix16(y, x) = m_palette->black_pen();
else
#endif
bitmap.pix16(y, x) = m_layer[l][scr_addr] | (l << 8);
@@ -389,7 +389,7 @@ WRITE16_MEMBER(igs011_state::igs011_palette)
COMBINE_DATA(&m_generic_paletteram_16[offset]);
rgb = (m_generic_paletteram_16[offset & 0x7ff] & 0xff) | ((m_generic_paletteram_16[offset | 0x800] & 0xff) << 8);
- palette_set_color_rgb(machine(),offset & 0x7ff,pal5bit(rgb >> 0),pal5bit(rgb >> 5),pal5bit(rgb >> 10));
+ m_palette->set_pen_color(offset & 0x7ff,pal5bit(rgb >> 0),pal5bit(rgb >> 5),pal5bit(rgb >> 10));
}
/***************************************************************************
@@ -3941,7 +3941,7 @@ static MACHINE_CONFIG_START( igs011_base, igs011_state )
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 240-1)
MCFG_SCREEN_UPDATE_DRIVER(igs011_state, screen_update_igs011)
- MCFG_PALETTE_LENGTH(0x800)
+ MCFG_PALETTE_ADD("palette", 0x800)
// MCFG_GFXDECODE_ADD("gfxdecode", igs011)
diff --git a/src/mame/drivers/igs017.c b/src/mame/drivers/igs017.c
index bc2e80615d6..a043d4152d8 100644
--- a/src/mame/drivers/igs017.c
+++ b/src/mame/drivers/igs017.c
@@ -356,9 +356,9 @@ void igs017_state::draw_sprite(bitmap_ind16 &bitmap,const rectangle &cliprect, i
if ( addr + dimx * dimy >= m_sprites_gfx_size )
return;
- gfx_element gfx(machine(), m_sprites_gfx + addr, dimx, dimy, dimx, 0x100, 32);
+ gfx_element gfx(machine(), m_sprites_gfx + addr, dimx, dimy, dimx, m_palette->entries(), 0x100, 32);
- gfx.transpen(bitmap,cliprect,
+ gfx.transpen(m_palette, bitmap,cliprect,
0, color,
flipx, flipy,
sx, sy, 0x1f );
@@ -459,7 +459,7 @@ UINT32 igs017_state::screen_update_igs017(screen_device &screen, bitmap_ind16 &b
if (debug_viewer(bitmap,cliprect))
return 0;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
if (m_video_disable)
return 0;
@@ -1395,7 +1395,7 @@ static ADDRESS_MAP_START( iqblocka_io, AS_IO, 8, igs017_state )
AM_RANGE( 0x0000, 0x003f ) AM_RAM // internal regs
AM_RANGE( 0x1000, 0x17ff ) AM_RAM AM_SHARE("spriteram")
- AM_RANGE( 0x1800, 0x1bff ) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_byte_le_w ) AM_SHARE("paletteram")
+ AM_RANGE( 0x1800, 0x1bff ) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE( 0x1c00, 0x1fff ) AM_RAM
// AM_RANGE(0x200a, 0x200a) AM_WRITENOP
@@ -1511,7 +1511,7 @@ WRITE16_MEMBER(igs017_state::mgcs_paletteram_w)
// bitswap
bgr = BITSWAP16(bgr, 7,8,9,2,14,3,13,15,12,11,10,0,1,4,5,6);
- palette_set_color_rgb(machine(), offset/2, pal5bit(bgr >> 0), pal5bit(bgr >> 5), pal5bit(bgr >> 10));
+ m_palette->set_pen_color(offset/2, pal5bit(bgr >> 0), pal5bit(bgr >> 5), pal5bit(bgr >> 10));
}
static ADDRESS_MAP_START( mgcs, AS_PROGRAM, 16, igs017_state )
@@ -1541,7 +1541,7 @@ WRITE16_MEMBER(igs017_state::sdmg2_paletteram_w)
int bgr = ((m_generic_paletteram_16[offset/2*2+1] & 0xff) << 8) | (m_generic_paletteram_16[offset/2*2+0] & 0xff);
- palette_set_color_rgb(machine(), offset/2, pal5bit(bgr >> 0), pal5bit(bgr >> 5), pal5bit(bgr >> 10));
+ m_palette->set_pen_color(offset/2, pal5bit(bgr >> 0), pal5bit(bgr >> 5), pal5bit(bgr >> 10));
}
READ8_MEMBER(igs017_state::sdmg2_keys_r)
@@ -1759,7 +1759,7 @@ WRITE8_MEMBER(igs017_state::tjsb_paletteram_w)
// bitswap
bgr = BITSWAP16(bgr, 15,12,3,6,10,5,4,2,9,13,8,7,11,1,0,14);
- palette_set_color_rgb(machine(), offset/2, pal5bit(bgr >> 0), pal5bit(bgr >> 5), pal5bit(bgr >> 10));
+ m_palette->set_pen_color(offset/2, pal5bit(bgr >> 0), pal5bit(bgr >> 5), pal5bit(bgr >> 10));
}
WRITE8_MEMBER(igs017_state::tjsb_output_w)
@@ -1878,7 +1878,7 @@ static ADDRESS_MAP_START( spkrform_io, AS_IO, 8, igs017_state )
AM_RANGE( 0x0000, 0x003f ) AM_RAM // internal regs
AM_RANGE( 0x1000, 0x17ff ) AM_RAM AM_SHARE("spriteram")
- AM_RANGE( 0x1800, 0x1bff ) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_le_w ) AM_SHARE("paletteram")
+ AM_RANGE( 0x1800, 0x1bff ) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE( 0x1c00, 0x1fff ) AM_RAM
AM_RANGE( 0x2010, 0x2013 ) AM_DEVREAD("ppi8255", i8255_device, read)
@@ -2224,7 +2224,7 @@ WRITE16_MEMBER(igs017_state::lhzb2a_paletteram_w)
// bitswap
bgr = BITSWAP16(bgr, 15,9,13,12,11,5,4,8,7,6,0,14,3,2,1,10);
- palette_set_color_rgb(machine(), offset/2, pal5bit(bgr >> 0), pal5bit(bgr >> 5), pal5bit(bgr >> 10));
+ m_palette->set_pen_color(offset/2, pal5bit(bgr >> 0), pal5bit(bgr >> 5), pal5bit(bgr >> 10));
}
READ16_MEMBER(igs017_state::lhzb2a_input_r)
@@ -2329,7 +2329,7 @@ WRITE16_MEMBER(igs017_state::slqz2_paletteram_w)
// bitswap
bgr = BITSWAP16(bgr, 15,14,9,4,11,10,12,3,7,6,5,8,13,2,1,0);
- palette_set_color_rgb(machine(), offset/2, pal5bit(bgr >> 0), pal5bit(bgr >> 5), pal5bit(bgr >> 10));
+ m_palette->set_pen_color(offset/2, pal5bit(bgr >> 0), pal5bit(bgr >> 5), pal5bit(bgr >> 10));
}
WRITE16_MEMBER(igs017_state::slqz2_magic_w)
@@ -3498,7 +3498,8 @@ static MACHINE_CONFIG_START( iqblocka, igs017_state )
MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
MCFG_GFXDECODE_ADD("gfxdecode", igs017)
- MCFG_PALETTE_LENGTH(0x100*2)
+ MCFG_PALETTE_ADD("palette", 0x100*2)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
@@ -3562,7 +3563,8 @@ static MACHINE_CONFIG_START( mgcs, igs017_state )
MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
MCFG_GFXDECODE_ADD("gfxdecode", igs017_flipped)
- MCFG_PALETTE_LENGTH(0x100*2)
+ MCFG_PALETTE_ADD("palette", 0x100*2)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
@@ -3603,7 +3605,8 @@ static MACHINE_CONFIG_START( lhzb2, igs017_state )
MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
MCFG_GFXDECODE_ADD("gfxdecode", igs017_swapped)
- MCFG_PALETTE_LENGTH(0x100*2)
+ MCFG_PALETTE_ADD("palette", 0x100*2)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
// protection
MCFG_DEVICE_ADD("igs025", IGS025, 0)
@@ -3646,7 +3649,8 @@ static MACHINE_CONFIG_START( lhzb2a, igs017_state )
MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
MCFG_GFXDECODE_ADD("gfxdecode", igs017_swapped)
- MCFG_PALETTE_LENGTH(0x100*2)
+ MCFG_PALETTE_ADD("palette", 0x100*2)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
@@ -3677,7 +3681,8 @@ static MACHINE_CONFIG_START( slqz2, igs017_state )
MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
MCFG_GFXDECODE_ADD("gfxdecode", igs017)
- MCFG_PALETTE_LENGTH(0x100*2)
+ MCFG_PALETTE_ADD("palette", 0x100*2)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
// protection
MCFG_DEVICE_ADD("igs025", IGS025, 0)
@@ -3723,7 +3728,8 @@ static MACHINE_CONFIG_START( sdmg2, igs017_state )
MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
MCFG_GFXDECODE_ADD("gfxdecode", igs017)
- MCFG_PALETTE_LENGTH(0x100*2)
+ MCFG_PALETTE_ADD("palette", 0x100*2)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
@@ -3774,7 +3780,8 @@ static MACHINE_CONFIG_START( mgdha, igs017_state )
MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
MCFG_GFXDECODE_ADD("gfxdecode", igs017_swapped)
- MCFG_PALETTE_LENGTH(0x100*2)
+ MCFG_PALETTE_ADD("palette", 0x100*2)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
@@ -3805,7 +3812,8 @@ static MACHINE_CONFIG_START( tjsb, igs017_state )
MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
MCFG_GFXDECODE_ADD("gfxdecode", igs017)
- MCFG_PALETTE_LENGTH(0x100*2)
+ MCFG_PALETTE_ADD("palette", 0x100*2)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
@@ -3839,7 +3847,8 @@ static MACHINE_CONFIG_START( spkrform, igs017_state )
MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
MCFG_GFXDECODE_ADD("gfxdecode", igs017)
- MCFG_PALETTE_LENGTH(0x100*2)
+ MCFG_PALETTE_ADD("palette", 0x100*2)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
diff --git a/src/mame/drivers/igs_m027.c b/src/mame/drivers/igs_m027.c
index 7fda99077f4..9501eaba080 100644
--- a/src/mame/drivers/igs_m027.c
+++ b/src/mame/drivers/igs_m027.c
@@ -200,7 +200,7 @@ void igs_m027_state::video_start()
UINT32 igs_m027_state::screen_update_igs_majhong(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
//??????????
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
//??????
m_igs_bg_tilemap->draw(screen, bitmap, cliprect, 0,0);
@@ -403,7 +403,7 @@ static MACHINE_CONFIG_START( igs_majhong, igs_m027_state )
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(igs_m027_state, screen_update_igs_majhong)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
/* sound hardware */
@@ -429,7 +429,7 @@ static MACHINE_CONFIG_START( fearless, igs_m027_state )
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(igs_m027_state, screen_update_fearless)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/igs_m036.c b/src/mame/drivers/igs_m036.c
index c69d88f1436..9b672be8de0 100644
--- a/src/mame/drivers/igs_m036.c
+++ b/src/mame/drivers/igs_m036.c
@@ -255,7 +255,7 @@ static MACHINE_CONFIG_START( igs_m036, igs_m036_state )
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(igs_m036_state, screen_update_igs_m036)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
/* sound hardware (OKI) */
MACHINE_CONFIG_END
@@ -273,7 +273,7 @@ static MACHINE_CONFIG_START( igs_m036_tt, igs_m036_state )
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(igs_m036_state, screen_update_igs_m036)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
/* sound hardware (TT5665) */
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/igspoker.c b/src/mame/drivers/igspoker.c
index 28341b31518..f9962538e76 100644
--- a/src/mame/drivers/igspoker.c
+++ b/src/mame/drivers/igspoker.c
@@ -203,7 +203,7 @@ void igspoker_state::video_start()
UINT32 igspoker_state::screen_update_igs_video(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
// FIX: CSK227IT must have some way to disable background, or wrong gfx?
if (m_bg_enable) m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
@@ -364,8 +364,8 @@ static ADDRESS_MAP_START( igspoker_prg_map, AS_PROGRAM, 8, igspoker_state )
ADDRESS_MAP_END
static ADDRESS_MAP_START( igspoker_io_map, AS_IO, 8, igspoker_state )
- AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_split_lo_w ) AM_SHARE("paletteram")
- AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_split_hi_w ) AM_SHARE("paletteram2")
+ AM_RANGE(0x2000, 0x27ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0x2800, 0x2fff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSW1") /* DSW1 */
AM_RANGE(0x4001, 0x4001) AM_READ_PORT("DSW2") /* DSW2 */
AM_RANGE(0x4002, 0x4002) AM_READ_PORT("DSW3") /* DSW3 */
@@ -1118,8 +1118,8 @@ INPUT_PORTS_END
static ADDRESS_MAP_START( number10_io_map, AS_IO, 8, igspoker_state )
- AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_split_lo_w ) AM_SHARE("paletteram")
- AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_split_hi_w ) AM_SHARE("paletteram2")
+ AM_RANGE(0x2000, 0x27ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0x2800, 0x2fff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSW1") /* DSW1 */
AM_RANGE(0x4001, 0x4001) AM_READ_PORT("DSW2") /* DSW2 */
AM_RANGE(0x4002, 0x4002) AM_READ_PORT("DSW3") /* DSW3 */
@@ -1141,8 +1141,8 @@ static ADDRESS_MAP_START( number10_io_map, AS_IO, 8, igspoker_state )
ADDRESS_MAP_END
static ADDRESS_MAP_START( cpokerpk_io_map, AS_IO, 8, igspoker_state )
- AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_split_lo_w ) AM_SHARE("paletteram")
- AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_split_hi_w ) AM_SHARE("paletteram2")
+ AM_RANGE(0x2000, 0x27ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0x2800, 0x2fff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSW1") /* DSW1 */
AM_RANGE(0x4001, 0x4001) AM_READ_PORT("DSW2") /* DSW2 */
AM_RANGE(0x4002, 0x4002) AM_READ_PORT("DSW3") /* DSW3 */
@@ -1785,8 +1785,8 @@ static MACHINE_CONFIG_START( igspoker, igspoker_state )
MCFG_SCREEN_UPDATE_DRIVER(igspoker_state, screen_update_igs_video)
MCFG_GFXDECODE_ADD("gfxdecode", igspoker)
- MCFG_PALETTE_LENGTH(2048)
-
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/ikki.c b/src/mame/drivers/ikki.c
index a999766a3e2..897ac036a18 100644
--- a/src/mame/drivers/ikki.c
+++ b/src/mame/drivers/ikki.c
@@ -258,8 +258,8 @@ static MACHINE_CONFIG_START( ikki, ikki_state )
MCFG_SCREEN_UPDATE_DRIVER(ikki_state, screen_update_ikki)
MCFG_GFXDECODE_ADD("gfxdecode", ikki)
- MCFG_PALETTE_LENGTH(1024)
-
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_INIT_OWNER(ikki_state, ikki)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/imolagp.c b/src/mame/drivers/imolagp.c
index eb27a93bdd2..dccc58935a8 100644
--- a/src/mame/drivers/imolagp.c
+++ b/src/mame/drivers/imolagp.c
@@ -125,7 +125,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(imolagp);
UINT32 screen_update_imolagp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -136,16 +136,16 @@ public:
***************************************************************************/
-void imolagp_state::palette_init()
+PALETTE_INIT_MEMBER(imolagp_state, imolagp)
{
// palette seems like 3bpp + intensity
// this still needs to be verified
for (int i = 0; i < 8; i++)
{
- palette_set_color_rgb(machine(), i*4+0, 0, 0, 0);
- palette_set_color_rgb(machine(), i*4+1, pal1bit(i >> 2)/2, pal1bit(i >> 1)/2, pal1bit(i >> 0)/2);
- palette_set_color_rgb(machine(), i*4+2, 0, 0, 0);
- palette_set_color_rgb(machine(), i*4+3, pal1bit(i >> 2), pal1bit(i >> 1), pal1bit(i >> 0));
+ palette.set_pen_color(i*4+0, 0, 0, 0);
+ palette.set_pen_color(i*4+1, pal1bit(i >> 2)/2, pal1bit(i >> 1)/2, pal1bit(i >> 0)/2);
+ palette.set_pen_color(i*4+2, 0, 0, 0);
+ palette.set_pen_color(i*4+3, pal1bit(i >> 2), pal1bit(i >> 1), pal1bit(i >> 0));
}
}
@@ -517,7 +517,8 @@ static MACHINE_CONFIG_START( imolagp, imolagp_state )
MCFG_SCREEN_VISIBLE_AREA(0+48,255,0+16,255)
MCFG_SCREEN_UPDATE_DRIVER(imolagp_state, screen_update_imolagp)
- MCFG_PALETTE_LENGTH(0x20)
+ MCFG_PALETTE_ADD("palette", 0x20)
+ MCFG_PALETTE_INIT_OWNER(imolagp_state, imolagp)
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_SCANLINE)
/* sound hardware */
diff --git a/src/mame/drivers/intrscti.c b/src/mame/drivers/intrscti.c
index 6c51b199e9d..96e23952ca5 100644
--- a/src/mame/drivers/intrscti.c
+++ b/src/mame/drivers/intrscti.c
@@ -45,7 +45,7 @@ UINT32 intrscti_state::screen_update_intrscti(screen_device &screen, bitmap_ind1
int y,x;
int count;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
count = 0;
for (y=0;y<32;y++)
@@ -54,7 +54,7 @@ UINT32 intrscti_state::screen_update_intrscti(screen_device &screen, bitmap_ind1
{
int dat;
dat = m_vram[count];
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,dat/*+0x100*/,0,0,0,x*8,y*8,0);
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,dat/*+0x100*/,0,0,0,x*8,y*8,0);
count++;
}
}
@@ -66,7 +66,7 @@ UINT32 intrscti_state::screen_update_intrscti(screen_device &screen, bitmap_ind1
{
int dat;
dat = m_vram[count];
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,dat+0x100,0,0,0,x*8,y*8,0);
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,dat+0x100,0,0,0,x*8,y*8,0);
count++;
}
}
@@ -192,7 +192,7 @@ static MACHINE_CONFIG_START( intrscti, intrscti_state )
MCFG_SCREEN_UPDATE_DRIVER(intrscti_state, screen_update_intrscti)
MCFG_GFXDECODE_ADD("gfxdecode", intrscti)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/inufuku.c b/src/mame/drivers/inufuku.c
index 9ee1d72fddf..8c117525e24 100644
--- a/src/mame/drivers/inufuku.c
+++ b/src/mame/drivers/inufuku.c
@@ -143,7 +143,7 @@ static ADDRESS_MAP_START( inufuku_map, AS_PROGRAM, 16, inufuku_state )
AM_RANGE(0x200000, 0x200001) AM_WRITE_PORT("EEPROMOUT")
AM_RANGE(0x280000, 0x280001) AM_WRITE(inufuku_soundcommand_w) // sound command
- AM_RANGE(0x300000, 0x301fff) AM_RAM_WRITE(paletteram_xGGGGGBBBBBRRRRR_word_w) AM_SHARE("paletteram") // palette ram
+ AM_RANGE(0x300000, 0x301fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // palette ram
AM_RANGE(0x380000, 0x3801ff) AM_WRITEONLY AM_SHARE("bg_rasterram") // bg raster ram
AM_RANGE(0x400000, 0x401fff) AM_READWRITE(inufuku_bg_videoram_r, inufuku_bg_videoram_w) AM_SHARE("bg_videoram") // bg ram
AM_RANGE(0x402000, 0x403fff) AM_READWRITE(inufuku_tx_videoram_r, inufuku_tx_videoram_w) AM_SHARE("tx_videoram") // text ram
@@ -392,10 +392,11 @@ static MACHINE_CONFIG_START( inufuku, inufuku_state )
MCFG_VSYSTEM_SPR_SET_TILE_INDIRECT( inufuku_state, inufuku_tile_callback )
MCFG_VSYSTEM_SPR_SET_GFXREGION(2)
MCFG_VSYSTEM_SPR_GFXDECODE("gfxdecode")
+ MCFG_VSYSTEM_SPR_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", inufuku)
- MCFG_PALETTE_LENGTH(4096)
-
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(xGGGGGBBBBBRRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/invqix.c b/src/mame/drivers/invqix.c
index e9f9c65990f..da73b924652 100644
--- a/src/mame/drivers/invqix.c
+++ b/src/mame/drivers/invqix.c
@@ -336,7 +336,7 @@ static MACHINE_CONFIG_START( invqix, invqix_state )
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 256, 0, 240)
- MCFG_PALETTE_LENGTH(65536)
+ MCFG_PALETTE_ADD("palette", 65536)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/iqblock.c b/src/mame/drivers/iqblock.c
index be5ecefb17b..45cb42e981b 100644
--- a/src/mame/drivers/iqblock.c
+++ b/src/mame/drivers/iqblock.c
@@ -129,8 +129,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( main_portmap, AS_IO, 8, iqblock_state )
- AM_RANGE(0x2000, 0x23ff) AM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_split_lo_w)
- AM_RANGE(0x2800, 0x2bff) AM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_split_hi_w)
+ AM_RANGE(0x2000, 0x23ff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0x2800, 0x2bff) AM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0x6000, 0x603f) AM_WRITE(iqblock_fgscroll_w)
AM_RANGE(0x6800, 0x69ff) AM_WRITE(iqblock_fgvideoram_w) /* initialized up to 6fff... bug or larger tilemap? */
AM_RANGE(0x7000, 0x7fff) AM_WRITE(iqblock_bgvideoram_w)
@@ -289,8 +289,8 @@ static MACHINE_CONFIG_START( iqblock, iqblock_state )
MCFG_SCREEN_UPDATE_DRIVER(iqblock_state, screen_update_iqblock)
MCFG_GFXDECODE_ADD("gfxdecode", iqblock)
- MCFG_PALETTE_LENGTH(1024)
-
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/irobot.c b/src/mame/drivers/irobot.c
index 58b3f4aaaca..8c402a17331 100644
--- a/src/mame/drivers/irobot.c
+++ b/src/mame/drivers/irobot.c
@@ -327,8 +327,8 @@ static MACHINE_CONFIG_START( irobot, irobot_state )
MCFG_SCREEN_UPDATE_DRIVER(irobot_state, screen_update_irobot)
MCFG_GFXDECODE_ADD("gfxdecode", irobot)
- MCFG_PALETTE_LENGTH(64 + 32) /* 64 for polygons, 32 for text */
-
+ MCFG_PALETTE_ADD("palette", 64 + 32) /* 64 for polygons, 32 for text */
+ MCFG_PALETTE_INIT_OWNER(irobot_state, irobot)
MCFG_TIMER_DRIVER_ADD("irvg_timer", irobot_state, irobot_irvg_done_callback)
MCFG_TIMER_DRIVER_ADD("irmb_timer", irobot_state, irobot_irmb_done_callback)
diff --git a/src/mame/drivers/ironhors.c b/src/mame/drivers/ironhors.c
index bda50958d64..d0050771b19 100644
--- a/src/mame/drivers/ironhors.c
+++ b/src/mame/drivers/ironhors.c
@@ -386,8 +386,8 @@ static MACHINE_CONFIG_START( ironhors, ironhors_state )
MCFG_SCREEN_UPDATE_DRIVER(ironhors_state, screen_update_ironhors)
MCFG_GFXDECODE_ADD("gfxdecode", ironhors)
- MCFG_PALETTE_LENGTH(16*8*16+16*8*16)
-
+ MCFG_PALETTE_ADD("palette", 16*8*16+16*8*16)
+ MCFG_PALETTE_INIT_OWNER(ironhors_state, ironhors)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/istellar.c b/src/mame/drivers/istellar.c
index 54cdfb75745..757e5ab5035 100644
--- a/src/mame/drivers/istellar.c
+++ b/src/mame/drivers/istellar.c
@@ -55,7 +55,7 @@ public:
DECLARE_WRITE8_MEMBER(z80_2_ldp_write);
DECLARE_DRIVER_INIT(istellar);
virtual void machine_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(istellar);
UINT32 screen_update_istellar(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_callback_istellar);
required_device<cpu_device> m_maincpu;
@@ -84,7 +84,7 @@ UINT32 istellar_state::screen_update_istellar(screen_device &screen, bitmap_rgb3
int tile = m_tile_ram[x+y*32];
int attr = m_tile_control_ram[x+y*32];
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,tile,attr & 0x0f,0, 0, x*8, y*8, 0);
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,tile,attr & 0x0f,0, 0, x*8, y*8, 0);
}
}
@@ -271,12 +271,12 @@ static INPUT_PORTS_START( istellar )
/* SERVICE might be hanging out back here */
INPUT_PORTS_END
-void istellar_state::palette_init()
+PALETTE_INIT_MEMBER(istellar_state, istellar)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int r,g,b;
int bit0,bit1,bit2,bit3;
@@ -304,7 +304,7 @@ void istellar_state::palette_init()
bit3 = (color_prom[i+0x200] >> 3) & 0x01;
b = (0x8f * bit3) + (0x43 * bit2) + (0x1f * bit1) + (0x0e * bit0);
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
}
@@ -358,7 +358,8 @@ static MACHINE_CONFIG_START( istellar, istellar_state )
/* video hardware */
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(istellar_state, istellar)
MCFG_GFXDECODE_ADD("gfxdecode", istellar)
diff --git a/src/mame/drivers/itech32.c b/src/mame/drivers/itech32.c
index 71f1d3fc7cf..420d6f6d307 100644
--- a/src/mame/drivers/itech32.c
+++ b/src/mame/drivers/itech32.c
@@ -1679,7 +1679,7 @@ static MACHINE_CONFIG_START( timekill, itech32_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK, 508, 0, 384, 262, 0, 256)
@@ -1708,7 +1708,8 @@ static MACHINE_CONFIG_DERIVED( bloodstm, timekill )
MCFG_CPU_PROGRAM_MAP(bloodstm_map)
/* video hardware */
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 32768)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/itech8.c b/src/mame/drivers/itech8.c
index 9ca99aed8ca..89fe7db38c7 100644
--- a/src/mame/drivers/itech8.c
+++ b/src/mame/drivers/itech8.c
@@ -1772,7 +1772,7 @@ static MACHINE_CONFIG_DERIVED( grmatch, itech8_core_hi )
MCFG_SCREEN_UPDATE_DRIVER(itech8_state, screen_update_itech8_grmatch)
/* palette updater */
- MCFG_TIMER_DRIVER_ADD_SCANLINE("palette", itech8_state, grmatch_palette_update, "screen", 0, 0)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("palette_timer", itech8_state, grmatch_palette_update, "screen", 0, 0)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/itgambl2.c b/src/mame/drivers/itgambl2.c
index b5b4ceb5790..e82aaee0ea4 100644
--- a/src/mame/drivers/itgambl2.c
+++ b/src/mame/drivers/itgambl2.c
@@ -69,7 +69,7 @@ public:
int m_start_offs;
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(itgambl2);
UINT32 screen_update_itgambl2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
};
@@ -118,7 +118,7 @@ UINT32 itgambl2_state::screen_update_itgambl2(screen_device &screen, bitmap_rgb3
popmessage("%d %d %04x",m_test_x,m_test_y,m_start_offs);
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
count = (m_start_offs);
@@ -131,7 +131,7 @@ UINT32 itgambl2_state::screen_update_itgambl2(screen_device &screen, bitmap_rgb3
color = (blit_ram[count] & 0xff)>>0;
if(cliprect.contains(x, y))
- bitmap.pix32(y, x) = machine().pens[color];
+ bitmap.pix32(y, x) = m_palette->pen(color);
count++;
}
@@ -246,7 +246,7 @@ void itgambl2_state::machine_reset()
}
/* default 444 palette for debug purpose*/
-void itgambl2_state::palette_init()
+PALETTE_INIT_MEMBER(itgambl2_state, itgambl2)
{
int x,r,g,b;
@@ -255,7 +255,7 @@ void itgambl2_state::palette_init()
r = (x & 0xf)*0x10;
g = ((x & 0x3c)>>2)*0x10;
b = ((x & 0xf0)>>4)*0x10;
- palette_set_color(machine(),x,rgb_t(r,g,b));
+ palette.set_pen_color(x,rgb_t(r,g,b));
}
}
@@ -279,7 +279,8 @@ static MACHINE_CONFIG_START( itgambl2, itgambl2_state )
MCFG_GFXDECODE_ADD("gfxdecode", itgambl2)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
+ MCFG_PALETTE_INIT_OWNER(itgambl2_state, itgambl2)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/itgambl3.c b/src/mame/drivers/itgambl3.c
index 90eee9555d0..7480ce41cf3 100644
--- a/src/mame/drivers/itgambl3.c
+++ b/src/mame/drivers/itgambl3.c
@@ -57,7 +57,7 @@ public:
int m_start_offs;
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(itgambl3);
UINT32 screen_update_itgambl3(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
};
@@ -106,7 +106,7 @@ UINT32 itgambl3_state::screen_update_itgambl3(screen_device &screen, bitmap_rgb3
popmessage("%d %d %04x",m_test_x,m_test_y,m_start_offs);
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
count = (m_start_offs);
@@ -119,7 +119,7 @@ UINT32 itgambl3_state::screen_update_itgambl3(screen_device &screen, bitmap_rgb3
color = (blit_ram[count] & 0xff)>>0;
if(cliprect.contains(x, y))
- bitmap.pix32(y, x) = machine().pens[color];
+ bitmap.pix32(y, x) = m_palette->pen(color);
count++;
}
@@ -234,7 +234,7 @@ void itgambl3_state::machine_reset()
}
/* default 444 palette for debug purpose*/
-void itgambl3_state::palette_init()
+PALETTE_INIT_MEMBER(itgambl3_state, itgambl3)
{
int x,r,g,b;
@@ -243,7 +243,7 @@ void itgambl3_state::palette_init()
r = (x & 0xf)*0x11;
g = ((x & 0x3c)>>2)*0x11;
b = ((x & 0xf0)>>4)*0x11;
- palette_set_color(machine(),x,rgb_t(r,g,b));
+ palette.set_pen_color(x,rgb_t(r,g,b));
}
}
@@ -268,7 +268,8 @@ static MACHINE_CONFIG_START( itgambl3, itgambl3_state )
MCFG_GFXDECODE_ADD("gfxdecode", itgambl3)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
+ MCFG_PALETTE_INIT_OWNER(itgambl3_state, itgambl3)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/itgamble.c b/src/mame/drivers/itgamble.c
index eb80f167c36..0b7d3dd73b5 100644
--- a/src/mame/drivers/itgamble.c
+++ b/src/mame/drivers/itgamble.c
@@ -90,7 +90,7 @@ void itgamble_state::video_start()
UINT32 itgamble_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()));
+ bitmap.fill(m_palette->black_pen());
return 0;
}
@@ -217,7 +217,7 @@ static MACHINE_CONFIG_START( itgamble, itgamble_state )
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
MCFG_GFXDECODE_ADD("gfxdecode", itgamble)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/jack.c b/src/mame/drivers/jack.c
index 1b1c4d5ee37..5f13a6f0693 100644
--- a/src/mame/drivers/jack.c
+++ b/src/mame/drivers/jack.c
@@ -148,7 +148,7 @@ WRITE8_MEMBER(jack_state::joinem_control_w)
// d2: ?
// d3-d4: palette bank
- int palette_bank = data & (machine().total_colors() - 1) >> 3 & 0x18;
+ int palette_bank = data & (m_palette->entries() - 1) >> 3 & 0x18;
if (m_joinem_palette_bank != palette_bank)
{
m_joinem_palette_bank = palette_bank;
@@ -184,7 +184,7 @@ static ADDRESS_MAP_START( jack_map, AS_PROGRAM, 8, jack_state )
AM_RANGE(0xb504, 0xb504) AM_READ_PORT("IN2")
AM_RANGE(0xb505, 0xb505) AM_READ_PORT("IN3")
AM_RANGE(0xb506, 0xb507) AM_READWRITE(jack_flipscreen_r, jack_flipscreen_w)
- AM_RANGE(0xb600, 0xb61f) AM_WRITE(jack_paletteram_w) AM_SHARE("paletteram")
+ AM_RANGE(0xb600, 0xb61f) AM_WRITE(jack_paletteram_w) AM_SHARE("palette")
AM_RANGE(0xb800, 0xbbff) AM_RAM_WRITE(jack_videoram_w) AM_SHARE("videoram")
AM_RANGE(0xbc00, 0xbfff) AM_RAM_WRITE(jack_colorram_w) AM_SHARE("colorram")
AM_RANGE(0xc000, 0xffff) AM_ROM
@@ -923,7 +923,9 @@ static MACHINE_CONFIG_START( jack, jack_state )
MCFG_SCREEN_UPDATE_DRIVER(jack_state, screen_update_jack)
MCFG_GFXDECODE_ADD("gfxdecode", jack)
- MCFG_PALETTE_LENGTH(32)
+
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_FORMAT(BBGGGRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -973,9 +975,12 @@ static MACHINE_CONFIG_DERIVED( joinem, jack )
MCFG_SCREEN_UPDATE_DRIVER(jack_state, screen_update_joinem)
MCFG_GFXDECODE_MODIFY("gfxdecode", joinem)
- MCFG_PALETTE_LENGTH(0x40)
- MCFG_PALETTE_INIT_OVERRIDE(jack_state,joinem)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 0x40)
+ MCFG_PALETTE_INIT_OWNER(jack_state,joinem)
+ MCFG_PALETTE_FORMAT(BBGGGRRR)
+
MCFG_VIDEO_START_OVERRIDE(jack_state,joinem)
MACHINE_CONFIG_END
@@ -990,7 +995,8 @@ static MACHINE_CONFIG_DERIVED( unclepoo, joinem )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_ENTRIES(0x100)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/jackal.c b/src/mame/drivers/jackal.c
index c3626c39aa3..f27aa0c40e8 100644
--- a/src/mame/drivers/jackal.c
+++ b/src/mame/drivers/jackal.c
@@ -369,8 +369,8 @@ static MACHINE_CONFIG_START( jackal, jackal_state )
MCFG_SCREEN_UPDATE_DRIVER(jackal_state, screen_update_jackal)
MCFG_GFXDECODE_ADD("gfxdecode", jackal)
- MCFG_PALETTE_LENGTH(0x300)
-
+ MCFG_PALETTE_ADD("palette", 0x300)
+ MCFG_PALETTE_INIT_OWNER(jackal_state, jackal)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/jackie.c b/src/mame/drivers/jackie.c
index bf9d6c60bd1..536808c94af 100644
--- a/src/mame/drivers/jackie.c
+++ b/src/mame/drivers/jackie.c
@@ -207,7 +207,7 @@ UINT32 jackie_state::screen_update_jackie(screen_device &screen, bitmap_ind16 &b
int startclipmin = 0;
const rectangle &visarea = screen.visible_area();
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
for (i=0;i < 0x40;i++)
{
@@ -371,8 +371,8 @@ static ADDRESS_MAP_START( jackie_io_map, AS_IO, 8, jackie_state )
AM_RANGE(0x05a0, 0x05a4) AM_WRITE(jackie_unk_reg3_lo_w)
AM_RANGE(0x0da0, 0x0da4) AM_WRITE(jackie_unk_reg3_hi_w)
AM_RANGE(0x1000, 0x1107) AM_RAM AM_SHARE("bg_scroll2")
- AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_split_lo_w ) AM_SHARE("paletteram")
- AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_split_hi_w ) AM_SHARE("paletteram2")
+ AM_RANGE(0x2000, 0x27ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0x2800, 0x2fff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSW1") /* DSW1 */
AM_RANGE(0x4001, 0x4001) AM_READ_PORT("DSW2") /* DSW2 */
AM_RANGE(0x4002, 0x4002) AM_READ_PORT("DSW3") /* DSW3 */
@@ -590,8 +590,8 @@ static MACHINE_CONFIG_START( jackie, jackie_state )
MCFG_SCREEN_UPDATE_DRIVER(jackie_state, screen_update_jackie)
MCFG_GFXDECODE_ADD("gfxdecode", jackie)
- MCFG_PALETTE_LENGTH(2048)
-
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/jackpool.c b/src/mame/drivers/jackpool.c
index 8df34358a8f..d84904f675d 100644
--- a/src/mame/drivers/jackpool.c
+++ b/src/mame/drivers/jackpool.c
@@ -70,7 +70,7 @@ UINT32 jackpool_state::screen_update_jackpool(screen_device &screen, bitmap_ind1
int tile = (m_vram[count+(0x2000/2)] & 0x7fff);
int attr = (m_vram[count+(0x2000/2)+0x800] & 0x1f00)>>8;
- gfx->opaque(bitmap,cliprect,tile,attr,0,0,x*8,y*8);
+ gfx->opaque(m_palette,bitmap,cliprect,tile,attr,0,0,x*8,y*8);
count++;
}
}
@@ -87,7 +87,7 @@ UINT32 jackpool_state::screen_update_jackpool(screen_device &screen, bitmap_ind1
int attr = (m_vram[count+0x800] & 0x1f00)>>8;
int t_pen = (m_vram[count+0x800] & 0x1000);
- gfx->transpen(bitmap,cliprect,tile,attr,0,0,x*8,y*8,(t_pen) ? 0 : -1);
+ gfx->transpen(m_palette,bitmap,cliprect,tile,attr,0,0,x*8,y*8,(t_pen) ? 0 : -1);
}
count++;
@@ -187,7 +187,7 @@ static ADDRESS_MAP_START( jackpool_mem, AS_PROGRAM, 16, jackpool_state )
AM_RANGE(0x340000, 0x347fff) AM_RAM AM_SHARE("vram")
AM_RANGE(0x348000, 0x34ffff) AM_RAM //<- vram banks 2 & 3?
- AM_RANGE(0x360000, 0x3603ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x360000, 0x3603ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x380000, 0x380061) AM_READWRITE(jackpool_io_r,jackpool_io_w) AM_SHARE("io")//AM_READ(jackpool_io_r)
AM_RANGE(0x800000, 0x80000f) AM_READ(jackpool_ff_r) AM_WRITENOP //UART
@@ -279,8 +279,8 @@ static MACHINE_CONFIG_START( jackpool, jackpool_state )
MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
- MCFG_PALETTE_LENGTH(0x200)
-
+ MCFG_PALETTE_ADD("palette", 0x200)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/jailbrek.c b/src/mame/drivers/jailbrek.c
index 5886f8b35b0..eed2616dd1f 100644
--- a/src/mame/drivers/jailbrek.c
+++ b/src/mame/drivers/jailbrek.c
@@ -252,7 +252,8 @@ static MACHINE_CONFIG_START( jailbrek, jailbrek_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", jailbrek)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_INIT_OWNER(jailbrek_state, jailbrek)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 396, 8, 248, 256, 16, 240)
diff --git a/src/mame/drivers/jalmah.c b/src/mame/drivers/jalmah.c
index 5cb42ec9425..5cdc3857507 100644
--- a/src/mame/drivers/jalmah.c
+++ b/src/mame/drivers/jalmah.c
@@ -497,7 +497,7 @@ UINT32 jalmah_state::screen_update_jalmah(screen_device &screen, bitmap_ind16 &b
m_sc3_tilemap_2->set_scrolly(0, jm_scrollram[7] & 0x1ff);
m_sc3_tilemap_3->set_scrolly(0, jm_scrollram[7] & 0x3ff);
- bitmap.fill(machine().pens[0xff], cliprect); //selectable by a ram address?
+ bitmap.fill(m_palette->pen(0xff), cliprect); //selectable by a ram address?
for(cur_prin=1;cur_prin<=0x8;cur_prin<<=1)
{
@@ -519,7 +519,7 @@ UINT32 jalmah_state::screen_update_urashima(screen_device &screen, bitmap_ind16
m_sc0_tilemap_0->set_scrolly(0, jm_scrollram[4]);
m_sc3_tilemap_0->set_scrolly(0, jm_scrollram[7]);
- bitmap.fill(machine().pens[0x1ff], cliprect);//selectable by a ram address?
+ bitmap.fill(m_palette->pen(0x1ff), cliprect);//selectable by a ram address?
if(m_jm_vregs[0] & 1) { m_sc0_tilemap_0->draw(screen, bitmap, cliprect, 0,0); }
if(m_jm_vregs[3] & 1) { m_sc3_tilemap_0->draw(screen, bitmap, cliprect, 0,0); }
return 0;
@@ -1018,7 +1018,7 @@ static ADDRESS_MAP_START( jalmah, AS_PROGRAM, 16, jalmah_state )
/**/AM_RANGE(0x080020, 0x08003f) AM_RAM_WRITE(jalmah_scroll_w)
AM_RANGE(0x080040, 0x080041) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
// 0x084000, 0x084001 ?
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram") /* Palette RAM */
+ AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* Palette RAM */
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(sc0_vram_w) AM_SHARE("sc0_vram")
AM_RANGE(0x094000, 0x097fff) AM_RAM_WRITE(sc1_vram_w) AM_SHARE("sc1_vram")
AM_RANGE(0x098000, 0x09bfff) AM_RAM_WRITE(sc2_vram_w) AM_SHARE("sc2_vram")
@@ -1042,7 +1042,7 @@ static ADDRESS_MAP_START( urashima, AS_PROGRAM, 16, jalmah_state )
/**/AM_RANGE(0x08001c, 0x08001d) AM_RAM_WRITE(urashima_bank_w)
AM_RANGE(0x080040, 0x080041) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
// 0x084000, 0x084001 ?
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram") /* Palette RAM */
+ AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* Palette RAM */
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(urashima_sc0_vram_w) AM_SHARE("sc0_vram")
AM_RANGE(0x094000, 0x097fff) AM_RAM_WRITE(urashima_sc0_vram_w)
AM_RANGE(0x098000, 0x09bfff) AM_RAM_WRITE(urashima_sc0_vram_w)
@@ -1425,8 +1425,8 @@ static MACHINE_CONFIG_START( jalmah, jalmah_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(jalmah_state, screen_update_jalmah)
- MCFG_PALETTE_LENGTH(0x400)
-
+ MCFG_PALETTE_ADD("palette", 0x400)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_TIMER_DRIVER_ADD_PERIODIC("mcusim", jalmah_state, jalmah_mcu_sim, attotime::from_hz(10000))
diff --git a/src/mame/drivers/jangou.c b/src/mame/drivers/jangou.c
index 36683e97468..e1b7855c4db 100644
--- a/src/mame/drivers/jangou.c
+++ b/src/mame/drivers/jangou.c
@@ -93,7 +93,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(jangou);
DECLARE_MACHINE_START(jngolady);
DECLARE_MACHINE_RESET(jngolady);
DECLARE_MACHINE_START(common);
@@ -113,7 +113,7 @@ public:
*************************************/
/* guess: use the same resistor values as Crazy Climber (needs checking on the real HW) */
-void jangou_state::palette_init()
+PALETTE_INIT_MEMBER(jangou_state, jangou)
{
const UINT8 *color_prom = memregion("proms")->base();
static const int resistances_rg[3] = { 1000, 470, 220 };
@@ -127,7 +127,7 @@ void jangou_state::palette_init()
2, resistances_b, weights_b, 0, 0,
0, 0, 0, 0, 0);
- for (i = 0;i < machine().total_colors(); i++)
+ for (i = 0;i < palette.entries(); i++)
{
int bit0, bit1, bit2;
int r, g, b;
@@ -149,7 +149,7 @@ void jangou_state::palette_init()
bit1 = (color_prom[i] >> 7) & 0x01;
b = combine_2_weights(weights_b, bit0, bit1);
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -170,8 +170,8 @@ UINT32 jangou_state::screen_update_jangou(screen_device &screen, bitmap_ind16 &b
for (x = cliprect.min_x; x <= cliprect.max_x; x += 2)
{
UINT32 srcpix = *src++;
- *dst++ = machine().pens[srcpix & 0xf];
- *dst++ = machine().pens[(srcpix >> 4) & 0xf];
+ *dst++ = m_palette->pen(srcpix & 0xf);
+ *dst++ = m_palette->pen((srcpix >> 4) & 0xf);
}
}
@@ -997,8 +997,8 @@ static MACHINE_CONFIG_START( jangou, jangou_state )
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
MCFG_SCREEN_UPDATE_DRIVER(jangou_state, screen_update_jangou)
- MCFG_PALETTE_LENGTH(32)
-
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(jangou_state, jangou)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/jantotsu.c b/src/mame/drivers/jantotsu.c
index c5c8398fbd0..6b5fcff99d8 100644
--- a/src/mame/drivers/jantotsu.c
+++ b/src/mame/drivers/jantotsu.c
@@ -133,7 +133,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(jantotsu);
UINT32 screen_update_jantotsu(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
DECLARE_WRITE_LINE_MEMBER(jan_adpcm_int);
required_device<cpu_device> m_maincpu;
@@ -175,7 +175,7 @@ UINT32 jantotsu_state::screen_update_jantotsu(screen_device &screen, bitmap_rgb3
color |= (((m_bitmap[count + pen_i*0x2000]) >> (7 - i)) & 1) << pen_i;
if (cliprect.contains(x + i, y))
- bitmap.pix32(y, x + i) = machine().pens[color];
+ bitmap.pix32(y, x + i) = m_palette->pen(color);
}
count++;
@@ -207,7 +207,7 @@ WRITE8_MEMBER(jantotsu_state::bankaddr_w)
logerror("I/O port $07 write trips %02x\n",data);
}
-void jantotsu_state::palette_init()
+PALETTE_INIT_MEMBER(jantotsu_state, jantotsu)
{
const UINT8 *color_prom = memregion("proms")->base();
int bit0, bit1, bit2, r, g, b;
@@ -228,7 +228,7 @@ void jantotsu_state::palette_init()
bit2 = (color_prom[0] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
color_prom++;
}
}
@@ -519,8 +519,8 @@ static MACHINE_CONFIG_START( jantotsu, jantotsu_state )
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
MCFG_SCREEN_UPDATE_DRIVER(jantotsu_state, screen_update_jantotsu)
- MCFG_PALETTE_LENGTH(0x20)
-
+ MCFG_PALETTE_ADD("palette", 0x20)
+ MCFG_PALETTE_INIT_OWNER(jantotsu_state, jantotsu)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/jchan.c b/src/mame/drivers/jchan.c
index cb9ba13d724..f63c264201d 100644
--- a/src/mame/drivers/jchan.c
+++ b/src/mame/drivers/jchan.c
@@ -305,7 +305,7 @@ UINT32 jchan_state::screen_update_jchan(screen_device &screen, bitmap_ind16 &bit
UINT16 pixdata1;
UINT16 pixdata2;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
screen.priority().fill(0, cliprect);
@@ -446,7 +446,7 @@ static ADDRESS_MAP_START( jchan_main, AS_PROGRAM, 16, jchan_state )
AM_RANGE(0x500000, 0x503fff) AM_RAM_WRITE(jchan_suprnova_sprite32_1_w) AM_SHARE("spriteram_1")
AM_RANGE(0x600000, 0x60003f) AM_RAM_WRITE(jchan_suprnova_sprite32regs_1_w) AM_SHARE("sprregs_1")
- AM_RANGE(0x700000, 0x70ffff) AM_RAM_WRITE(paletteram_xGGGGGRRRRRBBBBB_word_w) AM_SHARE("paletteram") // palette for sprites?
+ AM_RANGE(0x700000, 0x70ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // palette for sprites?
AM_RANGE(0xf00000, 0xf00007) AM_READWRITE(jchan_ctrl_r, jchan_ctrl_w) AM_SHARE("ctrl")
@@ -598,7 +598,8 @@ static MACHINE_CONFIG_START( jchan, jchan_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(jchan_state, screen_update_jchan)
- MCFG_PALETTE_LENGTH(0x10000)
+ MCFG_PALETTE_ADD("palette", 0x10000)
+ MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
MCFG_DEVICE_ADD("view2_0", KANEKO_TMAP, 0)
kaneko_view2_tilemap_device::set_gfx_region(*device, 1);
diff --git a/src/mame/drivers/jclub2.c b/src/mame/drivers/jclub2.c
index a5d783a32e4..b61469e9def 100644
--- a/src/mame/drivers/jclub2.c
+++ b/src/mame/drivers/jclub2.c
@@ -220,7 +220,7 @@ void darkhors_state::draw_sprites_darkhors(bitmap_ind16 &bitmap, const rectangle
sy = -sy;
sy += 0xf8;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code/2, color,
flipx, flipy, sx, sy, 0);
}
@@ -251,7 +251,7 @@ UINT32 darkhors_state::screen_update_darkhors(screen_device &screen, bitmap_ind1
}
#endif
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
m_tmap->set_scrollx(0, (m_tmapscroll[0] >> 16) - 5);
m_tmap->set_scrolly(0, (m_tmapscroll[0] & 0xffff) - 0xff );
@@ -306,8 +306,8 @@ WRITE32_MEMBER(darkhors_state::darkhors_eeprom_w)
WRITE32_MEMBER(darkhors_state::paletteram32_xBBBBBGGGGGRRRRR_dword_w)
{
- if (ACCESSING_BITS_16_31) paletteram_xBBBBBGGGGGRRRRR_word_w(space, offset*2, data >> 16, mem_mask >> 16);
- if (ACCESSING_BITS_0_15) paletteram_xBBBBBGGGGGRRRRR_word_w(space, offset*2+1, data, mem_mask);
+ if (ACCESSING_BITS_16_31) m_palette->write(space, offset*2, data >> 16, mem_mask >> 16);
+ if (ACCESSING_BITS_0_15) m_palette->write(space, offset*2+1, data, mem_mask);
}
WRITE32_MEMBER(darkhors_state::darkhors_input_sel_w)
@@ -703,7 +703,7 @@ static MACHINE_CONFIG_START( darkhors, darkhors_state )
MCFG_SCREEN_UPDATE_DRIVER(darkhors_state, screen_update_darkhors)
MCFG_GFXDECODE_ADD("gfxdecode", darkhors)
- MCFG_PALETTE_LENGTH(0x10000)
+ MCFG_PALETTE_ADD("palette", 0x10000)
MCFG_VIDEO_START_OVERRIDE(darkhors_state,darkhors)
@@ -750,8 +750,9 @@ static MACHINE_CONFIG_START( jclub2, darkhors_state )
st0020_device::set_is_st0032(*device, 1);
st0020_device::set_is_jclub2o(*device, 1); // offsets
MCFG_ST0020_SPRITES_GFXDECODE("gfxdecode")
+ MCFG_ST0020_SPRITES_PALETTE("palette")
- MCFG_PALETTE_LENGTH(0x10000)
+ MCFG_PALETTE_ADD("palette", 0x10000)
MCFG_VIDEO_START_OVERRIDE(darkhors_state,jclub2)
MACHINE_CONFIG_END
@@ -812,13 +813,14 @@ static MACHINE_CONFIG_START( jclub2o, darkhors_state )
MCFG_SCREEN_VISIBLE_AREA(0, 0x190-1, 8, 0x100-8-1)
MCFG_SCREEN_UPDATE_DRIVER(darkhors_state, screen_update_jclub2o)
- MCFG_PALETTE_LENGTH(0x10000)
+ MCFG_PALETTE_ADD("palette", 0x10000)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_DEVICE_ADD("st0020_spr", ST0020_SPRITES, 0)
st0020_device::set_is_jclub2o(*device, 1);
MCFG_ST0020_SPRITES_GFXDECODE("gfxdecode")
+ MCFG_ST0020_SPRITES_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(darkhors_state,jclub2o)
diff --git a/src/mame/drivers/jokrwild.c b/src/mame/drivers/jokrwild.c
index 94c7031d37b..ac4141be6a3 100644
--- a/src/mame/drivers/jokrwild.c
+++ b/src/mame/drivers/jokrwild.c
@@ -118,7 +118,7 @@ public:
DECLARE_DRIVER_INIT(jokrwild);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(jokrwild);
UINT32 screen_update_jokrwild(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -172,7 +172,7 @@ UINT32 jokrwild_state::screen_update_jokrwild(screen_device &screen, bitmap_ind1
}
-void jokrwild_state::palette_init()
+PALETTE_INIT_MEMBER(jokrwild_state, jokrwild)
{
//missing proms
}
@@ -475,7 +475,8 @@ static MACHINE_CONFIG_START( jokrwild, jokrwild_state )
MCFG_SCREEN_UPDATE_DRIVER(jokrwild_state, screen_update_jokrwild)
MCFG_GFXDECODE_ADD("gfxdecode", jokrwild)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_INIT_OWNER(jokrwild_state, jokrwild)
MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK/16, mc6845_intf) /* guess */
diff --git a/src/mame/drivers/jollyjgr.c b/src/mame/drivers/jollyjgr.c
index fbd95f0e5c6..7798cf081f3 100644
--- a/src/mame/drivers/jollyjgr.c
+++ b/src/mame/drivers/jollyjgr.c
@@ -140,7 +140,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(jollyjgr);
UINT32 screen_update_jollyjgr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_fspider(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(jollyjgr_interrupt);
@@ -411,7 +411,7 @@ INPUT_PORTS_END
*
*************************************/
-void jollyjgr_state::palette_init()
+PALETTE_INIT_MEMBER(jollyjgr_state, jollyjgr)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -436,13 +436,13 @@ void jollyjgr_state::palette_init()
bit1 = BIT(*color_prom, 7);
b = 0x4f * bit0 + 0xa8 * bit1;
- palette_set_color(machine(), i, rgb_t(r,g,b));
+ palette.set_pen_color(i, rgb_t(r,g,b));
color_prom++;
}
/* bitmap palette */
for (i = 0;i < 8;i++)
- palette_set_color_rgb(machine(), 32 + i, pal1bit(i >> 0), pal1bit(i >> 1), pal1bit(i >> 2));
+ palette.set_pen_color(32 + i, pal1bit(i >> 0), pal1bit(i >> 1), pal1bit(i >> 2));
}
/* Tilemap is the same as in Galaxian */
@@ -543,7 +543,7 @@ UINT32 jollyjgr_state::screen_update_jollyjgr(screen_device &screen, bitmap_ind1
if (offs < 3 * 4)
sy++;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,color,
flipx,flipy,
sx,sy,0);
@@ -665,8 +665,8 @@ static MACHINE_CONFIG_START( jollyjgr, jollyjgr_state )
MCFG_SCREEN_UPDATE_DRIVER(jollyjgr_state, screen_update_jollyjgr)
MCFG_GFXDECODE_ADD("gfxdecode", jollyjgr)
- MCFG_PALETTE_LENGTH(32+8) /* 32 for tilemap and sprites + 8 for the bitmap */
-
+ MCFG_PALETTE_ADD("palette", 32+8) /* 32 for tilemap and sprites + 8 for the bitmap */
+ MCFG_PALETTE_INIT_OWNER(jollyjgr_state, jollyjgr)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/jongkyo.c b/src/mame/drivers/jongkyo.c
index d29ad29109f..2865995fb66 100644
--- a/src/mame/drivers/jongkyo.c
+++ b/src/mame/drivers/jongkyo.c
@@ -59,7 +59,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(jongkyo);
UINT32 screen_update_jongkyo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
};
@@ -441,7 +441,7 @@ INPUT_PORTS_END
*
*************************************/
-void jongkyo_state::palette_init()
+PALETTE_INIT_MEMBER(jongkyo_state, jongkyo)
{
int i;
UINT8* proms = memregion("proms")->base();
@@ -453,7 +453,7 @@ void jongkyo_state::palette_init()
int g = (data >> 3) & 0x07;
int b = (data >> 6) & 0x03;
- palette_set_color_rgb(machine(), i, r << 5, g << 5, b << 6 );
+ palette.set_pen_color(i, r << 5, g << 5, b << 6 );
}
}
@@ -513,8 +513,8 @@ static MACHINE_CONFIG_START( jongkyo, jongkyo_state )
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 8, 256-8-1)
MCFG_SCREEN_UPDATE_DRIVER(jongkyo_state, screen_update_jongkyo)
- MCFG_PALETTE_LENGTH(0x100)
-
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_INIT_OWNER(jongkyo_state, jongkyo)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("aysnd", AY8910, JONGKYO_CLOCK/8)
diff --git a/src/mame/drivers/jpmimpct.c b/src/mame/drivers/jpmimpct.c
index 14fedee1db4..79fe00bc432 100644
--- a/src/mame/drivers/jpmimpct.c
+++ b/src/mame/drivers/jpmimpct.c
@@ -880,7 +880,7 @@ static MACHINE_CONFIG_START( jpmimpct, jpmimpct_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(40000000/4, 156*4, 0, 100*4, 328, 0, 300)
MCFG_SCREEN_UPDATE_DEVICE("dsp", tms34010_device, tms340x0_rgb32)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("upd", UPD7759, UPD7759_STANDARD_CLOCK)
diff --git a/src/mame/drivers/jpmsys5.c b/src/mame/drivers/jpmsys5.c
index 24489cb308c..cec82599acc 100644
--- a/src/mame/drivers/jpmsys5.c
+++ b/src/mame/drivers/jpmsys5.c
@@ -132,12 +132,12 @@ WRITE16_MEMBER(jpmsys5_state::ramdac_w)
}
else if (offset == 1)
{
- m_palette[m_pal_addr][m_pal_idx] = data;
+ m_palette_val[m_pal_addr][m_pal_idx] = data;
if (++m_pal_idx == 3)
{
/* Update the MAME palette */
- palette_set_color_rgb(machine(), m_pal_addr, pal6bit(m_palette[m_pal_addr][0]), pal6bit(m_palette[m_pal_addr][1]), pal6bit(m_palette[m_pal_addr][2]));
+ m_palette->set_pen_color(m_pal_addr, pal6bit(m_palette_val[m_pal_addr][0]), pal6bit(m_palette_val[m_pal_addr][1]), pal6bit(m_palette_val[m_pal_addr][2]));
m_pal_addr++;
m_pal_idx = 0;
}
@@ -156,7 +156,7 @@ UINT32 jpmsys5_state::screen_update_jpmsys5v(screen_device &screen, bitmap_rgb32
if (m_tms34061->m_display.blanked)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
@@ -170,8 +170,8 @@ UINT32 jpmsys5_state::screen_update_jpmsys5v(screen_device &screen, bitmap_rgb32
UINT8 pen = src[(x-cliprect.min_x)>>1];
/* Draw two 4-bit pixels */
- *dest++ = machine().pens[(pen >> 4) & 0xf];
- *dest++ = machine().pens[pen & 0xf];
+ *dest++ = m_palette->pen((pen >> 4) & 0xf);
+ *dest++ = m_palette->pen(pen & 0xf);
}
}
@@ -665,7 +665,7 @@ static MACHINE_CONFIG_START( jpmsys5v, jpmsys5_state )
MCFG_TMS34061_ADD("tms34061", tms34061intf)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/jrpacman.c b/src/mame/drivers/jrpacman.c
index 2f246a92a69..5d89830c892 100644
--- a/src/mame/drivers/jrpacman.c
+++ b/src/mame/drivers/jrpacman.c
@@ -301,9 +301,9 @@ static MACHINE_CONFIG_START( jrpacman, jrpacman_state )
MCFG_SCREEN_UPDATE_DRIVER(jrpacman_state, screen_update_pacman)
MCFG_GFXDECODE_ADD("gfxdecode", jrpacman)
- MCFG_PALETTE_LENGTH(128*4)
+ MCFG_PALETTE_ADD("palette", 128*4)
- MCFG_PALETTE_INIT_OVERRIDE(jrpacman_state,pacman)
+ MCFG_PALETTE_INIT_OWNER(jrpacman_state,pacman)
MCFG_VIDEO_START_OVERRIDE(jrpacman_state,jrpacman)
/* sound hardware */
diff --git a/src/mame/drivers/jubilee.c b/src/mame/drivers/jubilee.c
index f5c5f84e019..2106e6c9e40 100644
--- a/src/mame/drivers/jubilee.c
+++ b/src/mame/drivers/jubilee.c
@@ -222,7 +222,6 @@ public:
DECLARE_READ8_MEMBER(mux_port_r);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
UINT32 screen_update_jubileep(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(jubileep_interrupt);
required_device<cpu_device> m_maincpu;
@@ -275,9 +274,6 @@ UINT32 jubilee_state::screen_update_jubileep(screen_device &screen, bitmap_ind16
return 0;
}
-void jubilee_state::palette_init()
-{}
-
/**************************
* Read / Write Handlers *
@@ -506,7 +502,7 @@ static MACHINE_CONFIG_START( jubileep, jubilee_state )
MCFG_SCREEN_UPDATE_DRIVER(jubilee_state, screen_update_jubileep)
MCFG_GFXDECODE_ADD("gfxdecode", jubileep)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette",8)
MCFG_MC6845_ADD("crtc", MC6845, "screen", CRTC_CLOCK, mc6845_intf)
diff --git a/src/mame/drivers/kaneko16.c b/src/mame/drivers/kaneko16.c
index 96acacd14f6..35e9be3d58a 100644
--- a/src/mame/drivers/kaneko16.c
+++ b/src/mame/drivers/kaneko16.c
@@ -236,7 +236,7 @@ static ADDRESS_MAP_START( berlwall, AS_PROGRAM, 16, kaneko16_berlwall_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
AM_RANGE(0x200000, 0x20ffff) AM_RAM // Work RAM
AM_RANGE(0x30e000, 0x30ffff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(paletteram_xGGGGGRRRRRBBBBB_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
// AM_RANGE(0x480000, 0x480001) AM_RAM // ?
AM_RANGE(0x500000, 0x500001) AM_READWRITE(kaneko16_bg15_reg_r, kaneko16_bg15_reg_w) AM_SHARE("bg15_reg") // High Color Background
AM_RANGE(0x580000, 0x580001) AM_READWRITE(kaneko16_bg15_select_r, kaneko16_bg15_select_w) AM_SHARE("bg15_select")
@@ -284,7 +284,7 @@ static ADDRESS_MAP_START( bakubrkr, AS_PROGRAM, 16, kaneko16_state )
AM_RANGE(0x500000, 0x503fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
AM_RANGE(0x580000, 0x583fff) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
AM_RANGE(0x600000, 0x601fff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0x700000, 0x700fff) AM_RAM_WRITE(paletteram_xGGGGGRRRRRBBBBB_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x700000, 0x700fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x800000, 0x80001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w)
AM_RANGE(0x900000, 0x90001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w)
AM_RANGE(0xa80000, 0xa80001) AM_READ(watchdog_reset16_r) // Watchdog
@@ -304,7 +304,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( blazeon, AS_PROGRAM, 16, kaneko16_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
AM_RANGE(0x300000, 0x30ffff) AM_RAM // Work RAM
- AM_RANGE(0x500000, 0x500fff) AM_RAM_WRITE(paletteram_xGGGGGRRRRRBBBBB_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x500000, 0x500fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
AM_RANGE(0x700000, 0x700fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0x800000, 0x80001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w)
@@ -363,7 +363,7 @@ static ADDRESS_MAP_START( bloodwar, AS_PROGRAM, 16, kaneko16_gtmr_state )
AM_RANGE(0x2b0000, 0x2b0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com1_w)
AM_RANGE(0x2c0000, 0x2c0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com2_w)
AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com3_w)
- AM_RANGE(0x300000, 0x30ffff) AM_RAM_WRITE(paletteram_xGGGGGRRRRRBBBBB_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x300000, 0x30ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0x500000, 0x503fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
AM_RANGE(0x580000, 0x583fff) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
@@ -417,7 +417,7 @@ static ADDRESS_MAP_START( bonkadv, AS_PROGRAM, 16, kaneko16_gtmr_state )
AM_RANGE(0x2b0000, 0x2b0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com1_w)
AM_RANGE(0x2c0000, 0x2c0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com2_w)
AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com3_w)
- AM_RANGE(0x300000, 0x30ffff) AM_RAM_WRITE(paletteram_xGGGGGRRRRRBBBBB_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x300000, 0x30ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0x500000, 0x503fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
AM_RANGE(0x580000, 0x583fff) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
@@ -489,7 +489,7 @@ static ADDRESS_MAP_START( gtmr_map, AS_PROGRAM, 16, kaneko16_gtmr_state )
AM_RANGE(0x2c0000, 0x2c0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com2_w)
AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com3_w)
- AM_RANGE(0x300000, 0x30ffff) AM_RAM_WRITE(paletteram_xGGGGGRRRRRBBBBB_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x300000, 0x30ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x310000, 0x327fff) AM_RAM //
AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram") // Sprites
@@ -558,7 +558,7 @@ static ADDRESS_MAP_START( gtmr2_map, AS_PROGRAM, 16, kaneko16_gtmr_state )
AM_RANGE(0x2c0000, 0x2c0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com2_w)
AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com3_w)
- AM_RANGE(0x300000, 0x30ffff) AM_RAM_WRITE(paletteram_xGGGGGRRRRRBBBBB_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x300000, 0x30ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x310000, 0x327fff) AM_RAM //
AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram") // Sprites
@@ -598,7 +598,7 @@ static ADDRESS_MAP_START( mgcrystl, AS_PROGRAM, 16, kaneko16_state )
AM_RANGE(0x400000, 0x40001f) AM_READWRITE(kaneko16_ay1_YM2149_r, kaneko16_ay1_YM2149_w) // Sound
AM_RANGE(0x400200, 0x40021f) AM_READWRITE(kaneko16_ay2_YM2149_r, kaneko16_ay2_YM2149_w)
AM_RANGE(0x400400, 0x400401) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x500000, 0x500fff) AM_RAM_WRITE(paletteram_xGGGGGRRRRRBBBBB_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x500000, 0x500fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
AM_RANGE(0x680000, 0x683fff) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
AM_RANGE(0x700000, 0x701fff) AM_RAM AM_SHARE("spriteram") // Sprites
@@ -660,7 +660,7 @@ static ADDRESS_MAP_START( shogwarr, AS_PROGRAM, 16, kaneko16_shogwarr_state )
AM_RANGE(0x2b0000, 0x2b0001) AM_DEVWRITE("calc3_prot", kaneko_calc3_device, calc3_mcu_com2_w)
//AM_RANGE(0x2c0000, 0x2c0001) // run calc 3? or irq ack?
AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE("calc3_prot", kaneko_calc3_device, calc3_mcu_com3_w)
- AM_RANGE(0x380000, 0x380fff) AM_RAM_WRITE(paletteram_xGGGGGRRRRRBBBBB_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x380000, 0x380fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x400000, 0x400001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // Samples
AM_RANGE(0x480000, 0x480001) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff)
AM_RANGE(0x580000, 0x581fff) AM_RAM AM_SHARE("spriteram") // Sprites
@@ -1633,7 +1633,9 @@ static MACHINE_CONFIG_START( berlwall, kaneko16_berlwall_state )
MCFG_SCREEN_UPDATE_DRIVER(kaneko16_berlwall_state, screen_update_berlwall)
MCFG_GFXDECODE_ADD("gfxdecode", 1x4bit_1x4bit)
- MCFG_PALETTE_LENGTH(2048 + 32768) /* 32768 static colors for the bg */
+ MCFG_PALETTE_ADD("palette", 2048 + 32768) /* 32768 static colors for the bg */
+ MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
+ MCFG_PALETTE_INIT_OWNER(kaneko16_berlwall_state,berlwall)
MCFG_DEVICE_ADD("view2_0", KANEKO_TMAP, 0)
kaneko_view2_tilemap_device::set_gfx_region(*device, 1);
@@ -1644,8 +1646,6 @@ static MACHINE_CONFIG_START( berlwall, kaneko16_berlwall_state )
kaneko16_sprite_device::set_altspacing(*device, 1);
MCFG_KANEKO16_SPRITE_GFXDECODE("gfxdecode")
-
- MCFG_PALETTE_INIT_OVERRIDE(kaneko16_berlwall_state,berlwall)
MCFG_VIDEO_START_OVERRIDE(kaneko16_berlwall_state,berlwall)
/* sound hardware */
@@ -1689,7 +1689,8 @@ static MACHINE_CONFIG_START( bakubrkr, kaneko16_state )
MCFG_SCREEN_UPDATE_DRIVER(kaneko16_berlwall_state, screen_update_kaneko16)
MCFG_GFXDECODE_ADD("gfxdecode", 1x4bit_2x4bit)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
MCFG_DEVICE_ADD("view2_0", KANEKO_TMAP, 0)
kaneko_view2_tilemap_device::set_gfx_region(*device, 1);
@@ -1761,7 +1762,8 @@ static MACHINE_CONFIG_START( blazeon, kaneko16_state )
MCFG_SCREEN_UPDATE_DRIVER(kaneko16_berlwall_state, screen_update_kaneko16)
MCFG_GFXDECODE_ADD("gfxdecode", 1x4bit_1x4bit)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
MCFG_DEVICE_ADD("view2_0", KANEKO_TMAP, 0)
kaneko_view2_tilemap_device::set_gfx_region(*device, 1);
@@ -1823,7 +1825,8 @@ static MACHINE_CONFIG_START( gtmr, kaneko16_gtmr_state )
MCFG_SCREEN_UPDATE_DRIVER(kaneko16_berlwall_state, screen_update_kaneko16)
MCFG_GFXDECODE_ADD("gfxdecode", 1x8bit_2x4bit)
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD("palette", 32768)
+ MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
MCFG_DEVICE_ADD("view2_0", KANEKO_TMAP, 0)
kaneko_view2_tilemap_device::set_gfx_region(*device, 1);
@@ -1944,7 +1947,8 @@ static MACHINE_CONFIG_START( mgcrystl, kaneko16_state )
MCFG_SCREEN_UPDATE_DRIVER(kaneko16_berlwall_state, screen_update_kaneko16)
MCFG_GFXDECODE_ADD("gfxdecode", 1x4bit_2x4bit)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
MCFG_DEVICE_ADD("view2_0", KANEKO_TMAP, 0)
kaneko_view2_tilemap_device::set_gfx_region(*device, 1);
@@ -2071,7 +2075,8 @@ static MACHINE_CONFIG_START( shogwarr, kaneko16_shogwarr_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", 1x4bit_1x4bit)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
MCFG_DEVICE_ADD("view2_0", KANEKO_TMAP, 0)
kaneko_view2_tilemap_device::set_gfx_region(*device, 1);
diff --git a/src/mame/drivers/karnov.c b/src/mame/drivers/karnov.c
index 3a24e26e2cb..515c62e2657 100644
--- a/src/mame/drivers/karnov.c
+++ b/src/mame/drivers/karnov.c
@@ -803,11 +803,13 @@ static MACHINE_CONFIG_START( karnov, karnov_state )
MCFG_SCREEN_UPDATE_DRIVER(karnov_state, screen_update_karnov)
MCFG_GFXDECODE_ADD("gfxdecode", karnov)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_INIT_OWNER(karnov_state, karnov)
MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0)
deco_karnovsprites_device::set_gfx_region(*device, 2);
MCFG_DECO_KARNOVSPRITES_GFXDECODE("gfxdecode")
+ MCFG_DECO_KARNOVSPRITES_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(karnov_state,karnov)
@@ -845,11 +847,12 @@ static MACHINE_CONFIG_START( wndrplnt, karnov_state )
MCFG_SCREEN_UPDATE_DRIVER(karnov_state, screen_update_karnov)
MCFG_GFXDECODE_ADD("gfxdecode", karnov)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0)
deco_karnovsprites_device::set_gfx_region(*device, 2);
MCFG_DECO_KARNOVSPRITES_GFXDECODE("gfxdecode")
+ MCFG_DECO_KARNOVSPRITES_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(karnov_state,wndrplnt)
diff --git a/src/mame/drivers/kas89.c b/src/mame/drivers/kas89.c
index fd37ca4412f..bd2a720de41 100644
--- a/src/mame/drivers/kas89.c
+++ b/src/mame/drivers/kas89.c
@@ -798,7 +798,7 @@ static MACHINE_CONFIG_START( kas89, kas89_state )
MCFG_SCREEN_SIZE(544, 524)
MCFG_SCREEN_VISIBLE_AREA(0, 544 - 1, 0, 480 - 1)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/kchamp.c b/src/mame/drivers/kchamp.c
index 7908dfb0e71..bf321563589 100644
--- a/src/mame/drivers/kchamp.c
+++ b/src/mame/drivers/kchamp.c
@@ -422,7 +422,8 @@ static MACHINE_CONFIG_START( kchampvs, kchamp_state )
MCFG_SCREEN_UPDATE_DRIVER(kchamp_state, screen_update_kchampvs)
MCFG_GFXDECODE_ADD("gfxdecode", kchamp)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(kchamp_state, kchamp)
/* sound hardware */
@@ -469,7 +470,8 @@ static MACHINE_CONFIG_START( kchamp, kchamp_state )
MCFG_SCREEN_UPDATE_DRIVER(kchamp_state, screen_update_kchamp)
MCFG_GFXDECODE_ADD("gfxdecode", kchamp)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(kchamp_state, kchamp)
/* sound hardware */
diff --git a/src/mame/drivers/kickgoal.c b/src/mame/drivers/kickgoal.c
index 38adbd2d184..9e85a3539e0 100644
--- a/src/mame/drivers/kickgoal.c
+++ b/src/mame/drivers/kickgoal.c
@@ -488,7 +488,7 @@ static ADDRESS_MAP_START( kickgoal_program_map, AS_PROGRAM, 16, kickgoal_state )
AM_RANGE(0xa0c000, 0xa0ffff) AM_RAM // more tilemap?
AM_RANGE(0xa10000, 0xa1000f) AM_WRITEONLY AM_SHARE("scrram") /* Scroll Registers */
AM_RANGE(0xb00000, 0xb007ff) AM_WRITEONLY AM_SHARE("spriteram") /* Sprites */
- AM_RANGE(0xc00000, 0xc007ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram") /* Palette */ // actionhw reads this
+ AM_RANGE(0xc00000, 0xc007ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* Palette */ // actionhw reads this
AM_RANGE(0xff0000, 0xffffff) AM_RAM
ADDRESS_MAP_END
@@ -661,7 +661,8 @@ static MACHINE_CONFIG_START( kickgoal, kickgoal_state )
MCFG_SCREEN_UPDATE_DRIVER(kickgoal_state, screen_update_kickgoal)
MCFG_GFXDECODE_ADD("gfxdecode", kickgoal)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_VIDEO_START_OVERRIDE(kickgoal_state,kickgoal)
@@ -696,7 +697,8 @@ static MACHINE_CONFIG_START( actionhw, kickgoal_state )
MCFG_SCREEN_UPDATE_DRIVER(kickgoal_state, screen_update_kickgoal)
MCFG_GFXDECODE_ADD("gfxdecode", actionhw)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_VIDEO_START_OVERRIDE(kickgoal_state,actionhw)
diff --git a/src/mame/drivers/kingdrby.c b/src/mame/drivers/kingdrby.c
index 691a88c5dea..6fae2d3a88d 100644
--- a/src/mame/drivers/kingdrby.c
+++ b/src/mame/drivers/kingdrby.c
@@ -223,13 +223,13 @@ void kingdrby_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
{
for(dy=0;dy<h;dy++)
for(dx=0;dx<w;dx++)
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,spr_offs++,colour,1,0,((x+16*w)-(dx+1)*16),(y+dy*16),0);
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,spr_offs++,colour,1,0,((x+16*w)-(dx+1)*16),(y+dy*16),0);
}
else
{
for(dy=0;dy<h;dy++)
for(dx=0;dx<w;dx++)
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,spr_offs++,colour,0,0,(x+dx*16),(y+dy*16),0);
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,spr_offs++,colour,0,0,(x+dx*16),(y+dy*16),0);
}
}
}
@@ -980,7 +980,7 @@ PALETTE_INIT_MEMBER(kingdrby_state,kingdrby)
bit2 = (color_prom[0] >> 5) & 0x01;
r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
color_prom++;
}
}
@@ -1013,7 +1013,7 @@ PALETTE_INIT_MEMBER(kingdrby_state,kingdrbb)
bit2 = (prom[i] >> 5) & 0x01;
r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -1041,8 +1041,8 @@ static MACHINE_CONFIG_START( kingdrby, kingdrby_state )
MCFG_I8255A_ADD( "ppi8255_1", ppi8255_1_intf )
MCFG_GFXDECODE_ADD("gfxdecode", kingdrby)
- MCFG_PALETTE_LENGTH(0x200)
- MCFG_PALETTE_INIT_OVERRIDE(kingdrby_state,kingdrby)
+ MCFG_PALETTE_ADD("palette", 0x200)
+ MCFG_PALETTE_INIT_OWNER(kingdrby_state,kingdrby)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
@@ -1065,7 +1065,8 @@ static MACHINE_CONFIG_DERIVED( kingdrbb, kingdrby )
MCFG_CPU_MODIFY("slave")
MCFG_CPU_PROGRAM_MAP(slave_1986_map)
- MCFG_PALETTE_INIT_OVERRIDE(kingdrby_state,kingdrbb)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(kingdrby_state,kingdrbb)
MCFG_DEVICE_REMOVE("ppi8255_0")
MCFG_DEVICE_REMOVE("ppi8255_1")
@@ -1080,7 +1081,8 @@ static MACHINE_CONFIG_DERIVED( cowrace, kingdrbb )
MCFG_CPU_IO_MAP(cowrace_sound_io)
MCFG_GFXDECODE_MODIFY("gfxdecode", cowrace)
- MCFG_PALETTE_INIT_OVERRIDE(kingdrby_state,kingdrby)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(kingdrby_state,kingdrby)
MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
diff --git a/src/mame/drivers/kingobox.c b/src/mame/drivers/kingobox.c
index cb1457dd663..1090c1e2e5a 100644
--- a/src/mame/drivers/kingobox.c
+++ b/src/mame/drivers/kingobox.c
@@ -492,9 +492,9 @@ static MACHINE_CONFIG_START( kingofb, kingofb_state )
MCFG_SCREEN_UPDATE_DRIVER(kingofb_state, screen_update_kingofb)
MCFG_GFXDECODE_ADD("gfxdecode", kingobox)
- MCFG_PALETTE_LENGTH(256+8*2)
+ MCFG_PALETTE_ADD("palette", 256+8*2)
- MCFG_PALETTE_INIT_OVERRIDE(kingofb_state,kingofb)
+ MCFG_PALETTE_INIT_OWNER(kingofb_state,kingofb)
MCFG_VIDEO_START_OVERRIDE(kingofb_state,kingofb)
/* sound hardware */
@@ -542,9 +542,9 @@ static MACHINE_CONFIG_START( ringking, kingofb_state )
MCFG_SCREEN_UPDATE_DRIVER(kingofb_state, screen_update_ringking)
MCFG_GFXDECODE_ADD("gfxdecode", rk)
- MCFG_PALETTE_LENGTH(256+8*2)
+ MCFG_PALETTE_ADD("palette", 256+8*2)
- MCFG_PALETTE_INIT_OVERRIDE(kingofb_state,ringking)
+ MCFG_PALETTE_INIT_OWNER(kingofb_state,ringking)
MCFG_VIDEO_START_OVERRIDE(kingofb_state,ringking)
/* sound hardware */
diff --git a/src/mame/drivers/kinst.c b/src/mame/drivers/kinst.c
index bc53d026f3c..99e5966d0b2 100644
--- a/src/mame/drivers/kinst.c
+++ b/src/mame/drivers/kinst.c
@@ -696,8 +696,7 @@ static MACHINE_CONFIG_START( kinst, kinst_state )
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_DRIVER(kinst_state, screen_update_kinst)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, BBBBB_GGGGG_RRRRR)
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD_BBBBBGGGGGRRRRR("palette")
/* sound hardware */
MCFG_FRAGMENT_ADD(dcs_audio_2k)
diff --git a/src/mame/drivers/klax.c b/src/mame/drivers/klax.c
index c85a9e34a21..8c114f0daf2 100644
--- a/src/mame/drivers/klax.c
+++ b/src/mame/drivers/klax.c
@@ -170,7 +170,7 @@ static MACHINE_CONFIG_START( klax, klax_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", klax)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_TILEMAP_ADD_STANDARD("playfield", 2, klax_state, get_playfield_tile_info, 8,8, SCAN_COLS, 64,32)
MCFG_ATARI_MOTION_OBJECTS_ADD("mob", "screen", klax_state::s_mob_config)
diff --git a/src/mame/drivers/kncljoe.c b/src/mame/drivers/kncljoe.c
index 7560b2675bc..33ef8c65d31 100644
--- a/src/mame/drivers/kncljoe.c
+++ b/src/mame/drivers/kncljoe.c
@@ -286,8 +286,8 @@ static MACHINE_CONFIG_START( kncljoe, kncljoe_state )
MCFG_SCREEN_UPDATE_DRIVER(kncljoe_state, screen_update_kncljoe)
MCFG_GFXDECODE_ADD("gfxdecode", kncljoe)
- MCFG_PALETTE_LENGTH(16*8+16*8)
-
+ MCFG_PALETTE_ADD("palette", 16*8+16*8)
+ MCFG_PALETTE_INIT_OWNER(kncljoe_state, kncljoe)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/koftball.c b/src/mame/drivers/koftball.c
index 38925f237b3..06166b73511 100644
--- a/src/mame/drivers/koftball.c
+++ b/src/mame/drivers/koftball.c
@@ -117,7 +117,7 @@ WRITE16_MEMBER(koftball_state::bmc_RAMDAC_offset_w)
WRITE16_MEMBER(koftball_state::bmc_RAMDAC_color_w)
{
m_colorram[m_clr_offset]=data;
- palette_set_color_rgb(machine(),m_clr_offset/3,pal6bit(m_colorram[(m_clr_offset/3)*3]),pal6bit(m_colorram[(m_clr_offset/3)*3+1]),pal6bit(m_colorram[(m_clr_offset/3)*3+2]));
+ m_palette->set_pen_color(m_clr_offset/3,pal6bit(m_colorram[(m_clr_offset/3)*3]),pal6bit(m_colorram[(m_clr_offset/3)*3+1]),pal6bit(m_colorram[(m_clr_offset/3)*3+2]));
m_clr_offset=(m_clr_offset+1)%768;
}
@@ -253,7 +253,7 @@ static MACHINE_CONFIG_START( koftball, koftball_state )
MCFG_SCREEN_UPDATE_DRIVER(koftball_state, screen_update_koftball)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 30*8-1)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_GFXDECODE_ADD("gfxdecode", koftball)
diff --git a/src/mame/drivers/koikoi.c b/src/mame/drivers/koikoi.c
index 60e10619bbc..73fb49ade8a 100644
--- a/src/mame/drivers/koikoi.c
+++ b/src/mame/drivers/koikoi.c
@@ -74,7 +74,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(koikoi);
UINT32 screen_update_koikoi(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -96,14 +96,11 @@ TILE_GET_INFO_MEMBER(koikoi_state::get_tile_info)
SET_TILE_INFO_MEMBER(m_gfxdecode, 0, code, color, flip);
}
-void koikoi_state::palette_init()
+PALETTE_INIT_MEMBER(koikoi_state, koikoi)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x10);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x10; i++)
{
@@ -128,7 +125,7 @@ void koikoi_state::palette_init()
bit2 = (color_prom[i] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -138,7 +135,7 @@ void koikoi_state::palette_init()
for (i = 0; i < 0x100; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -379,8 +376,8 @@ static MACHINE_CONFIG_START( koikoi, koikoi_state )
MCFG_SCREEN_UPDATE_DRIVER(koikoi_state, screen_update_koikoi)
MCFG_GFXDECODE_ADD("gfxdecode", koikoi)
- MCFG_PALETTE_LENGTH(8*32)
-
+ MCFG_PALETTE_ADD("palette", 8*32)
+ MCFG_PALETTE_INIT_OWNER(koikoi_state, koikoi)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/konamigx.c b/src/mame/drivers/konamigx.c
index b88ba150f17..279dd9243ef 100644
--- a/src/mame/drivers/konamigx.c
+++ b/src/mame/drivers/konamigx.c
@@ -1627,7 +1627,7 @@ static MACHINE_CONFIG_START( konamigx, konamigx_state )
MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(6000000, 288+16+32+48, 0, 287, 224+16+8+16, 0, 223)
@@ -1639,16 +1639,20 @@ static MACHINE_CONFIG_START( konamigx, konamigx_state )
MCFG_SCREEN_VISIBLE_AREA(24, 24+288-1, 16, 16+224-1)
MCFG_SCREEN_UPDATE_DRIVER(konamigx_state, screen_update_konamigx)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_ENABLE_HILIGHTS()
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K056832_ADD_NOINTF("k056832"/*, konamigx_k056832_intf*/)
MCFG_K056832_GFXDECODE("gfxdecode")
+ MCFG_K056832_PALETTE("palette")
MCFG_K055555_ADD("k055555")
MCFG_K055673_ADD_NOINTF("k055673")
MCFG_K055673_SET_SCREEN("screen")
MCFG_K055673_GFXDECODE("gfxdecode")
+ MCFG_K055673_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(konamigx_state,konamigx_5bpp)
@@ -1722,10 +1726,16 @@ static MACHINE_CONFIG_DERIVED( gxtype3, konamigx )
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", konamigx_state, konamigx_hbinterrupt, "screen", 0, 1)
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK | VIDEO_ALWAYS_UPDATE)
+ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK | VIDEO_ALWAYS_UPDATE)
MCFG_VIDEO_START_OVERRIDE(konamigx_state,konamigx_type3)
- MCFG_PALETTE_LENGTH(16384)
+
+
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 16384)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_ENABLE_HILIGHTS()
+
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_SIZE(576, 264)
MCFG_SCREEN_VISIBLE_AREA(0, 576-1, 16, 32*8-1-16)
@@ -1747,7 +1757,7 @@ static MACHINE_CONFIG_DERIVED( gxtype4, konamigx )
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", konamigx_state, konamigx_hbinterrupt, "screen", 0, 1)
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK | VIDEO_ALWAYS_UPDATE)
+ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK | VIDEO_ALWAYS_UPDATE)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_SIZE(128*8, 264)
@@ -1760,7 +1770,11 @@ static MACHINE_CONFIG_DERIVED( gxtype4, konamigx )
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 16, 32*8-1-16)
MCFG_SCREEN_UPDATE_DRIVER(konamigx_state, screen_update_konamigx_right)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 8192)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_ENABLE_HILIGHTS()
+
MCFG_GFXDECODE_MODIFY("gfxdecode", type4)
MCFG_VIDEO_START_OVERRIDE(konamigx_state,konamigx_type4)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/konamim2.c b/src/mame/drivers/konamim2.c
index a02eba0c4a7..517e545ff8a 100644
--- a/src/mame/drivers/konamim2.c
+++ b/src/mame/drivers/konamim2.c
@@ -1190,8 +1190,7 @@ static MACHINE_CONFIG_START( m2, konamim2_state )
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 383)
MCFG_SCREEN_UPDATE_DRIVER(konamim2_state, screen_update_m2)
- MCFG_PALETTE_LENGTH(32768)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRRR_GGGGG_BBBBB)
+ MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB("palette")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/konendev.c b/src/mame/drivers/konendev.c
index da1a73cbb71..e158a4e7ddc 100644
--- a/src/mame/drivers/konendev.c
+++ b/src/mame/drivers/konendev.c
@@ -109,8 +109,7 @@ static MACHINE_CONFIG_START( konendev, konendev_state )
MCFG_CPU_PROGRAM_MAP(konendev_map)
/* video hardware */
- MCFG_PALETTE_LENGTH(32768)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRRR_GGGGG_BBBBB)
+ MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB("palette")
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
diff --git a/src/mame/drivers/kontest.c b/src/mame/drivers/kontest.c
index 523ff2657ac..428ecc7b092 100644
--- a/src/mame/drivers/kontest.c
+++ b/src/mame/drivers/kontest.c
@@ -54,8 +54,8 @@ protected:
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
public:
+ DECLARE_PALETTE_INIT(kontest);
INTERRUPT_GEN_MEMBER(kontest_interrupt);
};
@@ -66,7 +66,7 @@ public:
***************************************************************************/
-void kontest_state::palette_init()
+PALETTE_INIT_MEMBER(kontest_state, kontest)
{
const UINT8 *color_prom = memregion("proms")->base();
int bit0, bit1, bit2 , r, g, b;
@@ -87,7 +87,7 @@ void kontest_state::palette_init()
bit2 = (color_prom[i] >> 2) & 0x01;
r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -135,7 +135,7 @@ UINT32 kontest_state::screen_update( screen_device &screen, bitmap_rgb32 &bitmap
res_y = y*8+yi;
if (cliprect.contains(res_x, res_y))
- bitmap.pix32(res_y, res_x) = machine().pens[color|attr*4];
+ bitmap.pix32(res_y, res_x) = m_palette->pen(color|attr*4);
}
}
}
@@ -259,7 +259,8 @@ static MACHINE_CONFIG_START( kontest, kontest_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_PALETTE_LENGTH(32)
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(kontest_state, kontest)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/kopunch.c b/src/mame/drivers/kopunch.c
index 1e1df3c1058..57c5b26e9af 100644
--- a/src/mame/drivers/kopunch.c
+++ b/src/mame/drivers/kopunch.c
@@ -195,8 +195,8 @@ static MACHINE_CONFIG_START( kopunch, kopunch_state )
MCFG_SCREEN_UPDATE_DRIVER(kopunch_state, screen_update_kopunch)
MCFG_GFXDECODE_ADD("gfxdecode", kopunch)
- MCFG_PALETTE_LENGTH(8)
-
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(kopunch_state, kopunch)
/* sound hardware */
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ksayakyu.c b/src/mame/drivers/ksayakyu.c
index 78a3782731c..f4eddb92690 100644
--- a/src/mame/drivers/ksayakyu.c
+++ b/src/mame/drivers/ksayakyu.c
@@ -288,8 +288,8 @@ static MACHINE_CONFIG_START( ksayakyu, ksayakyu_state )
MCFG_SCREEN_UPDATE_DRIVER(ksayakyu_state, screen_update_ksayakyu)
MCFG_GFXDECODE_ADD("gfxdecode", ksayakyu)
- MCFG_PALETTE_LENGTH(256)
-
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(ksayakyu_state, ksayakyu)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/kurukuru.c b/src/mame/drivers/kurukuru.c
index e22a6f68555..ff8eeef4153 100644
--- a/src/mame/drivers/kurukuru.c
+++ b/src/mame/drivers/kurukuru.c
@@ -588,7 +588,7 @@ static MACHINE_CONFIG_START( kurukuru, kurukuru_state )
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_DEVICE("v9938", v9938_device, screen_update)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW )
diff --git a/src/mame/drivers/kyugo.c b/src/mame/drivers/kyugo.c
index 0c4bb1fa5d9..5af882ce5d5 100644
--- a/src/mame/drivers/kyugo.c
+++ b/src/mame/drivers/kyugo.c
@@ -548,9 +548,7 @@ static MACHINE_CONFIG_START( gyrodine, kyugo_state )
MCFG_SCREEN_UPDATE_DRIVER(kyugo_state, screen_update_kyugo)
MCFG_GFXDECODE_ADD("gfxdecode", kyugo)
- MCFG_PALETTE_LENGTH(256)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/labyrunr.c b/src/mame/drivers/labyrunr.c
index bb4a25568ab..dd4e9adc440 100644
--- a/src/mame/drivers/labyrunr.c
+++ b/src/mame/drivers/labyrunr.c
@@ -200,10 +200,11 @@ static MACHINE_CONFIG_START( labyrunr, labyrunr_state )
MCFG_SCREEN_UPDATE_DRIVER(labyrunr_state, screen_update_labyrunr)
MCFG_GFXDECODE_ADD("gfxdecode", labyrunr)
- MCFG_PALETTE_LENGTH(2*8*16*16)
-
+ MCFG_PALETTE_ADD("palette", 2*8*16*16)
+ MCFG_PALETTE_INIT_OWNER(labyrunr_state, labyrunr)
MCFG_K007121_ADD("k007121")
+ MCFG_K007121_PALETTE("palette")
MCFG_K051733_ADD("k051733")
/* sound hardware */
diff --git a/src/mame/drivers/ladybug.c b/src/mame/drivers/ladybug.c
index c054f5f22cf..584862f2a4b 100644
--- a/src/mame/drivers/ladybug.c
+++ b/src/mame/drivers/ladybug.c
@@ -767,9 +767,10 @@ static MACHINE_CONFIG_START( ladybug, ladybug_state )
MCFG_SCREEN_UPDATE_DRIVER(ladybug_state, screen_update_ladybug)
MCFG_GFXDECODE_ADD("gfxdecode", ladybug)
- MCFG_PALETTE_LENGTH(4*8+4*16)
+ MCFG_PALETTE_ADD("palette", 4*8+4*16)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
- MCFG_PALETTE_INIT_OVERRIDE(ladybug_state,ladybug)
+ MCFG_PALETTE_INIT_OWNER(ladybug_state,ladybug)
MCFG_VIDEO_START_OVERRIDE(ladybug_state,ladybug)
/* sound hardware */
@@ -808,9 +809,10 @@ static MACHINE_CONFIG_START( sraider, ladybug_state )
MCFG_SCREEN_VBLANK_DRIVER(ladybug_state, screen_eof_sraider)
MCFG_GFXDECODE_ADD("gfxdecode", sraider)
- MCFG_PALETTE_LENGTH(4*8+4*16+32+2)
+ MCFG_PALETTE_ADD("palette", 4*8+4*16+32+2)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
- MCFG_PALETTE_INIT_OVERRIDE(ladybug_state,sraider)
+ MCFG_PALETTE_INIT_OWNER(ladybug_state,sraider)
MCFG_VIDEO_START_OVERRIDE(ladybug_state,sraider)
/* sound hardware */
diff --git a/src/mame/drivers/ladyfrog.c b/src/mame/drivers/ladyfrog.c
index 03981336dbb..c7c9080f6c6 100644
--- a/src/mame/drivers/ladyfrog.c
+++ b/src/mame/drivers/ladyfrog.c
@@ -315,7 +315,7 @@ static MACHINE_CONFIG_START( ladyfrog, ladyfrog_state )
MCFG_SCREEN_UPDATE_DRIVER(ladyfrog_state, screen_update_ladyfrog)
MCFG_GFXDECODE_ADD("gfxdecode", ladyfrog)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
/* sound hardware */
diff --git a/src/mame/drivers/laserbas.c b/src/mame/drivers/laserbas.c
index b7ae86d8543..1459e8f8e74 100644
--- a/src/mame/drivers/laserbas.c
+++ b/src/mame/drivers/laserbas.c
@@ -218,7 +218,7 @@ static ADDRESS_MAP_START( laserbas_io, AS_IO, 8, laserbas_state )
AM_RANGE(0x20, 0x23) AM_WRITE(out_w)
AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("pit0", pit8253_device, read, write)
AM_RANGE(0x44, 0x47) AM_DEVREADWRITE("pit1", pit8253_device, read, write)
- AM_RANGE(0x80, 0x9f) AM_RAM_WRITE(paletteram_RRRGGGBB_byte_w) AM_SHARE("paletteram")
+ AM_RANGE(0x80, 0x9f) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
ADDRESS_MAP_END
static INPUT_PORTS_START( laserbas )
@@ -330,7 +330,8 @@ static MACHINE_CONFIG_START( laserbas, laserbas_state )
MCFG_MC6845_ADD("crtc", H46505, "screen", 3000000/4, mc6845_intf) /* unknown clock, hand tuned to get ~60 fps */
- MCFG_PALETTE_LENGTH(32)
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_FORMAT(RRRGGGBB)
MACHINE_CONFIG_END
/*
diff --git a/src/mame/drivers/laserbat.c b/src/mame/drivers/laserbat.c
index aa45208609a..8d4a9b77eae 100644
--- a/src/mame/drivers/laserbat.c
+++ b/src/mame/drivers/laserbat.c
@@ -521,7 +521,7 @@ UINT32 laserbat_state::screen_update_laserbat(screen_device &screen, bitmap_ind1
}
if (m_sprite_enable)
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
m_sprite_code,
m_sprite_color,
0,0,
@@ -723,7 +723,7 @@ static MACHINE_CONFIG_START( laserbat, laserbat_state )
MCFG_SCREEN_UPDATE_DRIVER(laserbat_state, screen_update_laserbat)
MCFG_GFXDECODE_ADD("gfxdecode", laserbat)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
MCFG_S2636_ADD("s2636_1", s2636_1_config)
MCFG_S2636_ADD("s2636_2", s2636_2_config)
@@ -771,7 +771,7 @@ static MACHINE_CONFIG_START( catnmous, laserbat_state )
MCFG_SCREEN_UPDATE_DRIVER(laserbat_state, screen_update_laserbat)
MCFG_GFXDECODE_ADD("gfxdecode", laserbat)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
MCFG_S2636_ADD("s2636_1", s2636_1_config)
MCFG_S2636_ADD("s2636_2", s2636_2_config)
diff --git a/src/mame/drivers/lasso.c b/src/mame/drivers/lasso.c
index 422452c5db1..efeee23f8e3 100644
--- a/src/mame/drivers/lasso.c
+++ b/src/mame/drivers/lasso.c
@@ -497,8 +497,8 @@ static MACHINE_CONFIG_START( base, lasso_state )
MCFG_SCREEN_UPDATE_DRIVER(lasso_state, screen_update_lasso)
MCFG_GFXDECODE_ADD("gfxdecode", lasso)
- MCFG_PALETTE_LENGTH(0x40)
-
+ MCFG_PALETTE_ADD("palette", 0x40)
+ MCFG_PALETTE_INIT_OWNER(lasso_state, lasso)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -549,9 +549,9 @@ static MACHINE_CONFIG_DERIVED( wwjgtin, base )
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1) // Smaller visible area?
MCFG_SCREEN_UPDATE_DRIVER(lasso_state, screen_update_wwjgtin)
MCFG_GFXDECODE_MODIFY("gfxdecode", wwjgtin) // Has 1 additional layer
- MCFG_PALETTE_LENGTH(0x40 + 16*16)
-
- MCFG_PALETTE_INIT_OVERRIDE(lasso_state,wwjgtin)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 0x40 + 16*16)
+ MCFG_PALETTE_INIT_OWNER(lasso_state,wwjgtin)
MCFG_VIDEO_START_OVERRIDE(lasso_state,wwjgtin)
/* sound hardware */
@@ -572,8 +572,8 @@ static MACHINE_CONFIG_DERIVED( pinbo, base )
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", pinbo)
- MCFG_PALETTE_LENGTH(256)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
MCFG_VIDEO_START_OVERRIDE(lasso_state,pinbo)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(lasso_state, screen_update_chameleo)
diff --git a/src/mame/drivers/lastbank.c b/src/mame/drivers/lastbank.c
index d1704cf7bdb..3756dc00562 100644
--- a/src/mame/drivers/lastbank.c
+++ b/src/mame/drivers/lastbank.c
@@ -477,11 +477,12 @@ static MACHINE_CONFIG_START( lastbank, lastbank_state )
MCFG_SCREEN_UPDATE_DRIVER(lastbank_state, screen_update)
MCFG_SCREEN_VBLANK_DRIVER(lastbank_state, screen_eof)
- MCFG_GFXDECODE_ADD("gfxdecode", lastbank )
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_GFXDECODE_ADD("gfxdecode", lastbank )
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_DEVICE_ADD("tc0091lvc", TC0091LVC, 0)
MCFG_TC0091LVC_GFXDECODE("gfxdecode")
+ MCFG_TC0091LVC_PALETTE("palette")
// MCFG_VIDEO_START_OVERRIDE(lastbank_state,lastbank)
diff --git a/src/mame/drivers/lastduel.c b/src/mame/drivers/lastduel.c
index bdadb8f4958..b093a350e31 100644
--- a/src/mame/drivers/lastduel.c
+++ b/src/mame/drivers/lastduel.c
@@ -518,7 +518,7 @@ static MACHINE_CONFIG_START( lastduel, lastduel_state )
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
MCFG_GFXDECODE_ADD("gfxdecode", lastduel)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
MCFG_VIDEO_START_OVERRIDE(lastduel_state,lastduel)
@@ -562,7 +562,7 @@ static MACHINE_CONFIG_START( madgear, lastduel_state )
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
MCFG_GFXDECODE_ADD("gfxdecode", madgear)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
MCFG_VIDEO_START_OVERRIDE(lastduel_state,madgear)
diff --git a/src/mame/drivers/lastfght.c b/src/mame/drivers/lastfght.c
index 8fb4a330ee2..956db22ce5f 100644
--- a/src/mame/drivers/lastfght.c
+++ b/src/mame/drivers/lastfght.c
@@ -163,12 +163,12 @@ UINT32 lastfght_state::screen_update_lastfght(screen_device &screen, bitmap_ind1
count = m_base;
- bitmap.fill(get_black_pen(machine()), cliprect );
+ bitmap.fill(m_palette->black_pen(), cliprect );
for (y = 0 ; y < 256; y++)
{
for (x = 0; x < 512; x++)
{
- data = (((count & 0xf) == 0) && ((count & 0x1e00) == 0)) ? get_white_pen(machine()) : gfxdata[count]; // white grid or data
+ data = (((count & 0xf) == 0) && ((count & 0x1e00) == 0)) ? m_palette->white_pen() : gfxdata[count]; // white grid or data
bitmap.pix16(y, x) = data;
count++;
}
@@ -191,7 +191,7 @@ WRITE16_MEMBER(lastfght_state::colordac_w)
if (ACCESSING_BITS_0_7)
{
m_colorram[m_clr_offset] = data;
- palette_set_color_rgb(machine(), m_clr_offset / 3,
+ m_palette->set_pen_color(m_clr_offset / 3,
pal6bit(m_colorram[(m_clr_offset / 3) * 3 + 0]),
pal6bit(m_colorram[(m_clr_offset / 3) * 3 + 1]),
pal6bit(m_colorram[(m_clr_offset / 3) * 3 + 2])
@@ -573,7 +573,7 @@ static MACHINE_CONFIG_START( lastfght, lastfght_state )
/* video hardware */
- MCFG_PALETTE_LENGTH( 256 )
+ MCFG_PALETTE_ADD( "palette", 256 )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_SIZE( 512, 256 )
diff --git a/src/mame/drivers/lazercmd.c b/src/mame/drivers/lazercmd.c
index 8f3e46bc828..8b552acce9b 100644
--- a/src/mame/drivers/lazercmd.c
+++ b/src/mame/drivers/lazercmd.c
@@ -593,15 +593,15 @@ static GFXDECODE_START( lazercmd )
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 2 )
GFXDECODE_END
-void lazercmd_state::palette_init()
+PALETTE_INIT_MEMBER(lazercmd_state, lazercmd)
{
- palette_set_color(machine(), 0, rgb_t(0xb0, 0xb0, 0xb0)); /* white */
- palette_set_color(machine(), 1, rgb_t(0x00, 0x00, 0x00)); /* black */
+ palette.set_pen_color(0, rgb_t(0xb0, 0xb0, 0xb0)); /* white */
+ palette.set_pen_color(1, rgb_t(0x00, 0x00, 0x00)); /* black */
- palette_set_color(machine(), 2, rgb_t(0x00, 0x00, 0x00)); /* black */
- palette_set_color(machine(), 3, rgb_t(0xb0, 0xb0, 0xb0)); /* white */
+ palette.set_pen_color(2, rgb_t(0x00, 0x00, 0x00)); /* black */
+ palette.set_pen_color(3, rgb_t(0xb0, 0xb0, 0xb0)); /* white */
- palette_set_color(machine(), 4, rgb_t(0xff, 0xff, 0xff)); /* bright white */
+ palette.set_pen_color(4, rgb_t(0xff, 0xff, 0xff)); /* bright white */
}
@@ -647,7 +647,8 @@ static MACHINE_CONFIG_START( lazercmd, lazercmd_state )
MCFG_SCREEN_UPDATE_DRIVER(lazercmd_state, screen_update_lazercmd)
MCFG_GFXDECODE_ADD("gfxdecode", lazercmd)
- MCFG_PALETTE_LENGTH(5)
+ MCFG_PALETTE_ADD("palette", 5)
+ MCFG_PALETTE_INIT_OWNER(lazercmd_state, lazercmd)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -678,7 +679,8 @@ static MACHINE_CONFIG_START( medlanes, lazercmd_state )
MCFG_SCREEN_UPDATE_DRIVER(lazercmd_state, screen_update_lazercmd)
MCFG_GFXDECODE_ADD("gfxdecode", lazercmd)
- MCFG_PALETTE_LENGTH(5)
+ MCFG_PALETTE_ADD("palette", 5)
+ MCFG_PALETTE_INIT_OWNER(lazercmd_state, lazercmd)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -709,7 +711,8 @@ static MACHINE_CONFIG_START( bbonk, lazercmd_state )
MCFG_SCREEN_UPDATE_DRIVER(lazercmd_state, screen_update_lazercmd)
MCFG_GFXDECODE_ADD("gfxdecode", lazercmd)
- MCFG_PALETTE_LENGTH(5)
+ MCFG_PALETTE_ADD("palette", 5)
+ MCFG_PALETTE_INIT_OWNER(lazercmd_state, lazercmd)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/lbeach.c b/src/mame/drivers/lbeach.c
index 7e1e0c353bf..64100ce9556 100644
--- a/src/mame/drivers/lbeach.c
+++ b/src/mame/drivers/lbeach.c
@@ -71,7 +71,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(lbeach);
UINT32 screen_update_lbeach(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -83,28 +83,28 @@ public:
***************************************************************************/
-void lbeach_state::palette_init()
+PALETTE_INIT_MEMBER(lbeach_state, lbeach)
{
// tiles
- palette_set_color_rgb(machine(), 0, 0x00, 0x00, 0x00);
- palette_set_color_rgb(machine(), 1, 0xc0, 0xc0, 0xc0);
+ palette.set_pen_color(0, 0x00, 0x00, 0x00);
+ palette.set_pen_color(1, 0xc0, 0xc0, 0xc0);
// road
- palette_set_color_rgb(machine(), 2, 0x00, 0x00, 0x00);
- palette_set_color_rgb(machine(), 3, 0xff, 0xff, 0xff);
+ palette.set_pen_color(2, 0x00, 0x00, 0x00);
+ palette.set_pen_color(3, 0xff, 0xff, 0xff);
- palette_set_color_rgb(machine(), 4, 0x80, 0x80, 0x80);
- palette_set_color_rgb(machine(), 5, 0xff, 0xff, 0xff);
+ palette.set_pen_color(4, 0x80, 0x80, 0x80);
+ palette.set_pen_color(5, 0xff, 0xff, 0xff);
- palette_set_color_rgb(machine(), 6, 0x00, 0x00, 0x00);
- palette_set_color_rgb(machine(), 7, 0x80, 0x80, 0x80);
+ palette.set_pen_color(6, 0x00, 0x00, 0x00);
+ palette.set_pen_color(7, 0x80, 0x80, 0x80);
- palette_set_color_rgb(machine(), 8, 0x80, 0x80, 0x80);
- palette_set_color_rgb(machine(), 9, 0xff, 0xff, 0xff);
+ palette.set_pen_color(8, 0x80, 0x80, 0x80);
+ palette.set_pen_color(9, 0xff, 0xff, 0xff);
// player car
- palette_set_color_rgb(machine(), 10, 0x00, 0x00, 0x00);
- palette_set_color_rgb(machine(), 11, 0xff, 0xff, 0xff);
+ palette.set_pen_color(10, 0x00, 0x00, 0x00);
+ palette.set_pen_color(11, 0xff, 0xff, 0xff);
}
@@ -148,7 +148,7 @@ UINT32 lbeach_state::screen_update_lbeach(screen_device &screen, bitmap_ind16 &b
int sprite_y = 160;
m_colmap_car.fill(0, cliprect);
- m_gfxdecode->gfx(2)->transpen(m_colmap_car,cliprect, sprite_code, 0, 0, 0, sprite_x, sprite_y, 0);
+ m_gfxdecode->gfx(2)->transpen(m_palette,m_colmap_car,cliprect, sprite_code, 0, 0, 0, sprite_x, sprite_y, 0);
bitmap_ind16 &fg_bitmap = m_fg_tilemap->pixmap();
m_collision_bg_car = 0;
@@ -167,7 +167,7 @@ UINT32 lbeach_state::screen_update_lbeach(screen_device &screen, bitmap_ind16 &b
m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
// draw player car
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect, sprite_code, 0, 0, 0, sprite_x, sprite_y, 0);
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect, sprite_code, 0, 0, 0, sprite_x, sprite_y, 0);
return 0;
}
@@ -336,8 +336,8 @@ static MACHINE_CONFIG_START( lbeach, lbeach_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) // needed for collision detection
MCFG_GFXDECODE_ADD("gfxdecode", lbeach)
- MCFG_PALETTE_LENGTH(2+8+2)
-
+ MCFG_PALETTE_ADD("palette", 2+8+2)
+ MCFG_PALETTE_INIT_OWNER(lbeach_state, lbeach)
/* sound hardware */
// ...
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/legionna.c b/src/mame/drivers/legionna.c
index 5d37547485c..7b0a8043b8a 100644
--- a/src/mame/drivers/legionna.c
+++ b/src/mame/drivers/legionna.c
@@ -89,7 +89,7 @@ static ADDRESS_MAP_START( legionna_map, AS_PROGRAM, 16, legionna_state )
AM_RANGE(0x101800, 0x101fff) AM_RAM_WRITE(legionna_foreground_w) AM_SHARE("fore_data")
AM_RANGE(0x102000, 0x1027ff) AM_RAM_WRITE(legionna_midground_w) AM_SHARE("mid_data")
AM_RANGE(0x102800, 0x1037ff) AM_RAM_WRITE(legionna_text_w) AM_SHARE("textram")
- AM_RANGE(0x104000, 0x104fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram") /* palette xRRRRxGGGGxBBBBx ? */
+ AM_RANGE(0x104000, 0x104fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* palette xRRRRxGGGGxBBBBx ? */
AM_RANGE(0x105000, 0x105fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x106000, 0x107fff) AM_RAM
AM_RANGE(0x108000, 0x11ffff) AM_RAM /* main ram */
@@ -105,7 +105,7 @@ static ADDRESS_MAP_START( heatbrl_map, AS_PROGRAM, 16, legionna_state )
AM_RANGE(0x101800, 0x101fff) AM_RAM_WRITE(legionna_midground_w) AM_SHARE("mid_data")
AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(legionna_text_w) AM_SHARE("textram")
AM_RANGE(0x103000, 0x103fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x104000, 0x104fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x104000, 0x104fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x108000, 0x11ffff) AM_RAM
ADDRESS_MAP_END
@@ -118,7 +118,7 @@ static ADDRESS_MAP_START( godzilla_map, AS_PROGRAM, 16, legionna_state )
AM_RANGE(0x102000, 0x1027ff) AM_RAM_WRITE(legionna_midground_w) AM_SHARE("mid_data")
AM_RANGE(0x102800, 0x1037ff) AM_RAM_WRITE(legionna_text_w) AM_SHARE("textram")
AM_RANGE(0x103800, 0x103fff) AM_RAM_WRITE(legionna_foreground_w) AM_SHARE("fore_data")
- AM_RANGE(0x104000, 0x104fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x104000, 0x104fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x105000, 0x105fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x106000, 0x1067ff) AM_RAM
AM_RANGE(0x106800, 0x106fff) AM_RAM
@@ -131,7 +131,7 @@ WRITE16_MEMBER(legionna_state::denjin_paletteram16_xBBBBBGGGGGRRRRR_word_w)
{
offset^=1;
COMBINE_DATA(&m_generic_paletteram_16[offset]);
- paletteram_xBBBBBGGGGGRRRRR_word_w(space,offset,data,mem_mask);
+ m_palette->write(space,offset,data,mem_mask);
}
static ADDRESS_MAP_START( denjinmk_map, AS_PROGRAM, 16, legionna_state )
@@ -159,7 +159,7 @@ static ADDRESS_MAP_START( grainbow_map, AS_PROGRAM, 16, legionna_state )
AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(legionna_foreground_w) AM_SHARE("fore_data")
AM_RANGE(0x101800, 0x101fff) AM_RAM_WRITE(legionna_midground_w) AM_SHARE("mid_data")
AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(legionna_text_w) AM_SHARE("textram")
- AM_RANGE(0x103000, 0x103fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x103000, 0x103fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x104000, 0x104fff) AM_RAM//_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
AM_RANGE(0x105000, 0x105fff) AM_RAM
AM_RANGE(0x106000, 0x106fff) AM_RAM
@@ -175,7 +175,7 @@ static ADDRESS_MAP_START( cupsoc_mem, AS_PROGRAM, 16, legionna_state )
AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(legionna_foreground_w) AM_SHARE("fore_data")
AM_RANGE(0x101800, 0x101fff) AM_RAM_WRITE(legionna_midground_w) AM_SHARE("mid_data")
AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(legionna_text_w) AM_SHARE("textram")
- AM_RANGE(0x103000, 0x103fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x103000, 0x103fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x104000, 0x104fff) AM_RAM
AM_RANGE(0x105000, 0x106fff) AM_RAM
AM_RANGE(0x107000, 0x1077ff) AM_RAM AM_SHARE("spriteram")
@@ -194,7 +194,7 @@ static ADDRESS_MAP_START( cupsocs_mem, AS_PROGRAM, 16, legionna_state )
AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(legionna_foreground_w) AM_SHARE("fore_data")
AM_RANGE(0x101800, 0x101fff) AM_RAM_WRITE(legionna_midground_w) AM_SHARE("mid_data")
AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(legionna_text_w) AM_SHARE("textram")
- AM_RANGE(0x103000, 0x103fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x103000, 0x103fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x104000, 0x104fff) AM_RAM
AM_RANGE(0x105000, 0x106fff) AM_RAM
AM_RANGE(0x107000, 0x1077ff) AM_RAM AM_SHARE("spriteram")
@@ -213,7 +213,7 @@ static ADDRESS_MAP_START( cupsocbl_mem, AS_PROGRAM, 16, legionna_state )
AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(legionna_foreground_w) AM_SHARE("fore_data")
AM_RANGE(0x101800, 0x101fff) AM_RAM_WRITE(legionna_midground_w) AM_SHARE("mid_data")
AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(legionna_text_w) AM_SHARE("textram")
- AM_RANGE(0x103000, 0x103fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x103000, 0x103fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x104000, 0x104fff) AM_RAM
AM_RANGE(0x105000, 0x106fff) AM_RAM
AM_RANGE(0x107000, 0x1077ff) AM_RAM AM_SHARE("spriteram")
@@ -1078,8 +1078,8 @@ static MACHINE_CONFIG_START( legionna, legionna_state )
MCFG_SCREEN_UPDATE_DRIVER(legionna_state, screen_update_legionna)
MCFG_GFXDECODE_ADD("gfxdecode", legionna)
- MCFG_PALETTE_LENGTH(128*16)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, all_black)
+ MCFG_PALETTE_ADD_INIT_BLACK("palette", 128*16)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(legionna_state,legionna)
@@ -1108,8 +1108,9 @@ static MACHINE_CONFIG_START( heatbrl, legionna_state )
MCFG_SCREEN_UPDATE_DRIVER(legionna_state, screen_update_legionna)
MCFG_GFXDECODE_ADD("gfxdecode", heatbrl)
- MCFG_PALETTE_LENGTH(128*16)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, all_black)
+
+ MCFG_PALETTE_ADD_INIT_BLACK("palette", 128*16)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(legionna_state,legionna)
@@ -1138,8 +1139,9 @@ static MACHINE_CONFIG_START( godzilla, legionna_state )
MCFG_SCREEN_UPDATE_DRIVER(legionna_state, screen_update_godzilla)
MCFG_GFXDECODE_ADD("gfxdecode", heatbrl)
- MCFG_PALETTE_LENGTH(128*16)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, all_black)
+
+ MCFG_PALETTE_ADD_INIT_BLACK("palette", 128*16)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(legionna_state,godzilla)
@@ -1167,8 +1169,9 @@ static MACHINE_CONFIG_START( denjinmk, legionna_state )
MCFG_SCREEN_UPDATE_DRIVER(legionna_state, screen_update_godzilla)
MCFG_GFXDECODE_ADD("gfxdecode", heatbrl)
- MCFG_PALETTE_LENGTH(128*16)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, all_black)
+
+ MCFG_PALETTE_ADD_INIT_BLACK("palette", 128*16)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(legionna_state,denjinmk)
@@ -1196,8 +1199,9 @@ static MACHINE_CONFIG_START( grainbow, legionna_state )
MCFG_SCREEN_UPDATE_DRIVER(legionna_state, screen_update_grainbow)
MCFG_GFXDECODE_ADD("gfxdecode", grainbow)
- MCFG_PALETTE_LENGTH(128*16)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, all_black)
+
+ MCFG_PALETTE_ADD_INIT_BLACK("palette", 128*16)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(legionna_state,grainbow)
@@ -1226,8 +1230,9 @@ static MACHINE_CONFIG_START( cupsoc, legionna_state )
MCFG_SCREEN_UPDATE_DRIVER(legionna_state, screen_update_grainbow)
MCFG_GFXDECODE_ADD("gfxdecode", cupsoc)
- MCFG_PALETTE_LENGTH(128*16)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, all_black)
+
+ MCFG_PALETTE_ADD_INIT_BLACK("palette", 128*16)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(legionna_state,cupsoc)
@@ -1264,8 +1269,9 @@ static MACHINE_CONFIG_START( cupsocbl, legionna_state )
MCFG_SCREEN_UPDATE_DRIVER(legionna_state, screen_update_grainbow)
MCFG_GFXDECODE_ADD("gfxdecode", heatbrl_csb)
- MCFG_PALETTE_LENGTH(128*16)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, all_black)
+
+ MCFG_PALETTE_ADD_INIT_BLACK("palette", 128*16)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(legionna_state,cupsoc)
diff --git a/src/mame/drivers/leland.c b/src/mame/drivers/leland.c
index 8d3d281f2d6..7bb30685bb7 100644
--- a/src/mame/drivers/leland.c
+++ b/src/mame/drivers/leland.c
@@ -69,7 +69,7 @@ static ADDRESS_MAP_START( master_map_program, AS_PROGRAM, 8, leland_state )
AM_RANGE(0x2000, 0x9fff) AM_ROMBANK("bank1")
AM_RANGE(0xa000, 0xdfff) AM_ROMBANK("bank2") AM_WRITE(leland_battery_ram_w) AM_SHARE("battery")
AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xf000, 0xf3ff) AM_READWRITE(leland_gated_paletteram_r, leland_gated_paletteram_w) AM_SHARE("paletteram")
+ AM_RANGE(0xf000, 0xf3ff) AM_READWRITE(leland_gated_paletteram_r, leland_gated_paletteram_w) AM_SHARE("palette")
AM_RANGE(0xf800, 0xf801) AM_WRITE(leland_master_video_addr_w)
ADDRESS_MAP_END
diff --git a/src/mame/drivers/lemmings.c b/src/mame/drivers/lemmings.c
index b933c73c24f..77c511b9838 100644
--- a/src/mame/drivers/lemmings.c
+++ b/src/mame/drivers/lemmings.c
@@ -56,7 +56,7 @@ WRITE16_MEMBER(lemmings_state::lemmings_palette_24bit_w)
g = (m_paletteram[offset + 1] >> 8) & 0xff;
r = (m_paletteram[offset + 1] >> 0) & 0xff;
- palette_set_color(machine(), offset / 2, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset / 2, rgb_t(r, g, b));
}
void lemmings_state::lemmings_sound_cb( address_space &space, UINT16 data, UINT16 mem_mask )
@@ -264,16 +264,18 @@ static MACHINE_CONFIG_START( lemmings, lemmings_state )
MCFG_SCREEN_VBLANK_DRIVER(lemmings_state, screen_eof_lemmings)
MCFG_GFXDECODE_ADD("gfxdecode", lemmings)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 1);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen2", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 0);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DECO146_ADD("ioprot")
MCFG_DECO146_SET_USE_MAGIC_ADDRESS_XOR
diff --git a/src/mame/drivers/lethal.c b/src/mame/drivers/lethal.c
index 4b62f2e4298..aed95de93fd 100644
--- a/src/mame/drivers/lethal.c
+++ b/src/mame/drivers/lethal.c
@@ -387,7 +387,7 @@ WRITE8_MEMBER(lethal_state::le_4800_w)
{
if (m_cur_control2 & 0x10) // RAM enable
{
- paletteram_xBBBBBGGGGGRRRRR_byte_be_w(space, offset, data);
+ m_palette->write(space, offset, data);
}
else
{
@@ -478,7 +478,7 @@ WRITE8_MEMBER(lethal_state::le_4800_w)
// use one more palette entry for the BG color
WRITE8_MEMBER(lethal_state::le_bgcolor_w)
{
- paletteram_xBBBBBGGGGGRRRRR_byte_be_w(space, 0x3800 + offset, data);
+ m_palette->write(space, 0x3800 + offset, data);
}
READ8_MEMBER(lethal_state::guns_r)
@@ -720,8 +720,6 @@ static MACHINE_CONFIG_START( lethalen, lethal_state )
MCFG_GFXDECODE_ADD("gfxdecode", lethal)
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.62) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
@@ -729,12 +727,16 @@ static MACHINE_CONFIG_START( lethalen, lethal_state )
MCFG_SCREEN_VISIBLE_AREA(216, 504-1, 16, 240-1)
MCFG_SCREEN_UPDATE_DRIVER(lethal_state, screen_update_lethalen)
- MCFG_PALETTE_LENGTH(7168+1)
+ MCFG_PALETTE_ADD("palette", 7168+1)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_K056832_ADD("k056832", lethalen_k056832_intf)
MCFG_K056832_GFXDECODE("gfxdecode")
+ MCFG_K056832_PALETTE("palette")
MCFG_K053244_ADD("k053244", lethalen_k05324x_intf)
MCFG_K053244_GFXDECODE("gfxdecode")
+ MCFG_K053244_PALETTE("palette")
MCFG_K054000_ADD("k054000")
/* sound hardware */
@@ -754,6 +756,7 @@ static MACHINE_CONFIG_DERIVED( lethalej, lethalen )
MCFG_DEVICE_REMOVE("k053244")
MCFG_K053244_ADD("k053244", lethalej_k05324x_intf)
MCFG_K053244_GFXDECODE("gfxdecode")
+ MCFG_K053244_PALETTE("palette")
MACHINE_CONFIG_END
ROM_START( lethalen ) // US version UAE
diff --git a/src/mame/drivers/lethalj.c b/src/mame/drivers/lethalj.c
index 00ba7c897a6..3dcc5ddc74b 100644
--- a/src/mame/drivers/lethalj.c
+++ b/src/mame/drivers/lethalj.c
@@ -676,8 +676,7 @@ static MACHINE_CONFIG_START( gameroom, lethalj_state )
MCFG_SCREEN_UPDATE_DEVICE("maincpu", tms34010_device, tms340x0_ind16)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRRR_GGGGG_BBBBB)
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/lgp.c b/src/mame/drivers/lgp.c
index 4986d261051..2437e0bc862 100644
--- a/src/mame/drivers/lgp.c
+++ b/src/mame/drivers/lgp.c
@@ -107,7 +107,7 @@ UINT32 lgp_state::screen_update_lgp(screen_device &screen, bitmap_rgb32 &bitmap,
int charx, chary;
/* make color 0 transparent */
- palette_set_color(machine(), 0, rgb_t(0,0,0,0));
+ m_palette->set_pen_color(0, rgb_t(0,0,0,0));
/* clear */
bitmap.fill(0, cliprect);
@@ -121,7 +121,7 @@ UINT32 lgp_state::screen_update_lgp(screen_device &screen, bitmap_rgb32 &bitmap,
/* Somewhere there's a flag that offsets the tilemap by 0x100*x */
/* Palette is likely set somewhere as well (tile_control_ram?) */
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
m_tile_ram[current_screen_character],
0,
0, 0, charx*8, chary*8, 0);
@@ -379,8 +379,8 @@ static MACHINE_CONFIG_START( lgp, lgp_state )
/* video hardware */
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
- MCFG_PALETTE_LENGTH(256)
- /* MCFG_PALETTE_INIT_OVERRIDE(lgp_state,lgp) */
+ MCFG_PALETTE_ADD("palette", 256)
+ /* MCFG_PALETTE_INIT_OWNER(lgp_state,lgp) */
MCFG_GFXDECODE_ADD("gfxdecode", lgp)
diff --git a/src/mame/drivers/liberate.c b/src/mame/drivers/liberate.c
index 56feaa014cc..dd89f7834fb 100644
--- a/src/mame/drivers/liberate.c
+++ b/src/mame/drivers/liberate.c
@@ -839,8 +839,8 @@ static MACHINE_CONFIG_START( liberate, liberate_state )
MCFG_SCREEN_UPDATE_DRIVER(liberate_state, screen_update_liberate)
MCFG_GFXDECODE_ADD("gfxdecode", liberate)
- MCFG_PALETTE_LENGTH(33)
- MCFG_PALETTE_INIT_OVERRIDE(liberate_state,liberate)
+ MCFG_PALETTE_ADD("palette", 33)
+ MCFG_PALETTE_INIT_OWNER(liberate_state,liberate)
MCFG_VIDEO_START_OVERRIDE(liberate_state,liberate)
@@ -918,7 +918,7 @@ static MACHINE_CONFIG_START( prosport, liberate_state )
MCFG_SCREEN_UPDATE_DRIVER(liberate_state, screen_update_prosport)
MCFG_GFXDECODE_ADD("gfxdecode", prosport)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_VIDEO_START_OVERRIDE(liberate_state,prosport)
diff --git a/src/mame/drivers/limenko.c b/src/mame/drivers/limenko.c
index 2cac7db301a..f296cedfd22 100644
--- a/src/mame/drivers/limenko.c
+++ b/src/mame/drivers/limenko.c
@@ -115,13 +115,13 @@ WRITE32_MEMBER(limenko_state::limenko_paletteram_w)
if(ACCESSING_BITS_0_15)
{
paldata = m_generic_paletteram_32[offset] & 0x7fff;
- palette_set_color_rgb(machine(), offset * 2 + 1, pal5bit(paldata >> 0), pal5bit(paldata >> 5), pal5bit(paldata >> 10));
+ m_palette->set_pen_color(offset * 2 + 1, pal5bit(paldata >> 0), pal5bit(paldata >> 5), pal5bit(paldata >> 10));
}
if(ACCESSING_BITS_16_31)
{
paldata = (m_generic_paletteram_32[offset] >> 16) & 0x7fff;
- palette_set_color_rgb(machine(), offset * 2 + 0, pal5bit(paldata >> 0), pal5bit(paldata >> 5), pal5bit(paldata >> 10));
+ m_palette->set_pen_color(offset * 2 + 0, pal5bit(paldata >> 0), pal5bit(paldata >> 5), pal5bit(paldata >> 10));
}
}
@@ -467,7 +467,7 @@ void limenko_state::draw_sprites(UINT32 *sprites, const rectangle &cliprect, int
continue;
/* prepare GfxElement on the fly */
- gfx_element gfx(machine(), gfxdata, width, height, width, 0, 256);
+ gfx_element gfx(machine(), gfxdata, width, height, width, m_palette->entries(), 0, 256);
draw_single_sprite(m_sprites_bitmap,cliprect,&gfx,0,color,flipx,flipy,x,y,pri);
@@ -767,7 +767,7 @@ static MACHINE_CONFIG_START( limenko, limenko_state )
MCFG_SCREEN_UPDATE_DRIVER(limenko_state, screen_update_limenko)
MCFG_GFXDECODE_ADD("gfxdecode", limenko)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
/* sound hardware */
@@ -798,7 +798,7 @@ static MACHINE_CONFIG_START( spotty, limenko_state )
MCFG_SCREEN_UPDATE_DRIVER(limenko_state, screen_update_limenko)
MCFG_GFXDECODE_ADD("gfxdecode", limenko)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
/* sound hardware */
diff --git a/src/mame/drivers/littlerb.c b/src/mame/drivers/littlerb.c
index 0c1ac1e9ea2..5df55e79e87 100644
--- a/src/mame/drivers/littlerb.c
+++ b/src/mame/drivers/littlerb.c
@@ -950,10 +950,11 @@ static MACHINE_CONFIG_START( littlerb, littlerb_state )
MCFG_DEVICE_ADD("littlerbvdp", LITTLERBVDP, 0)
#endif
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
- MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map)
+ MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
+// MCFG_PALETTE_INIT_OWNER(littlerb_state,littlerb)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker","rspeaker")
MCFG_DAC_ADD("dacl")
diff --git a/src/mame/drivers/lkage.c b/src/mame/drivers/lkage.c
index bb3a1108ba9..83779441988 100644
--- a/src/mame/drivers/lkage.c
+++ b/src/mame/drivers/lkage.c
@@ -133,7 +133,7 @@ READ8_MEMBER(lkage_state::sound_status_r)
static ADDRESS_MAP_START( lkage_map, AS_PROGRAM, 8, lkage_state )
AM_RANGE(0x0000, 0xdfff) AM_ROM
AM_RANGE(0xe000, 0xe7ff) AM_RAM /* work ram */
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xf000, 0xf003) AM_RAM AM_SHARE("vreg") /* video registers */
AM_RANGE(0xf060, 0xf060) AM_WRITE(lkage_sound_command_w)
AM_RANGE(0xf061, 0xf061) AM_WRITENOP AM_READ(sound_status_r)
@@ -563,7 +563,8 @@ static MACHINE_CONFIG_START( lkage, lkage_state )
MCFG_SCREEN_UPDATE_DRIVER(lkage_state, screen_update_lkage)
MCFG_GFXDECODE_ADD("gfxdecode", lkage)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
/* sound hardware */
@@ -607,7 +608,8 @@ static MACHINE_CONFIG_START( lkageb, lkage_state )
MCFG_SCREEN_UPDATE_DRIVER(lkage_state, screen_update_lkage)
MCFG_GFXDECODE_ADD("gfxdecode", lkage)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
/* sound hardware */
diff --git a/src/mame/drivers/lockon.c b/src/mame/drivers/lockon.c
index 61077b0c365..2b25fd271c7 100644
--- a/src/mame/drivers/lockon.c
+++ b/src/mame/drivers/lockon.c
@@ -513,8 +513,8 @@ static MACHINE_CONFIG_START( lockon, lockon_state )
MCFG_SCREEN_VBLANK_DRIVER(lockon_state, screen_eof_lockon)
MCFG_GFXDECODE_ADD("gfxdecode", lockon)
- MCFG_PALETTE_LENGTH(1024 + 2048)
-
+ MCFG_PALETTE_ADD("palette", 1024 + 2048)
+ MCFG_PALETTE_INIT_OWNER(lockon_state, lockon)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/looping.c b/src/mame/drivers/looping.c
index fba464999a5..d5cfded32dc 100644
--- a/src/mame/drivers/looping.c
+++ b/src/mame/drivers/looping.c
@@ -148,7 +148,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(looping);
UINT32 screen_update_looping(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(looping_interrupt);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
@@ -166,7 +166,7 @@ public:
*
*************************************/
-void looping_state::palette_init()
+PALETTE_INIT_MEMBER(looping_state, looping)
{
const UINT8 *color_prom = memregion("proms")->base();
static const int resistances[3] = { 1000, 470, 220 };
@@ -201,7 +201,7 @@ void looping_state::palette_init()
bit1 = (color_prom[i] >> 7) & 1;
b = combine_2_weights(bweights, bit0, bit1);
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -310,7 +310,7 @@ void looping_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code, color, flipx, flipy, sx, sy, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy, sx, sy, 0);
}
}
@@ -684,8 +684,9 @@ static MACHINE_CONFIG_START( looping, looping_state )
MCFG_SCREEN_UPDATE_DRIVER(looping_state, screen_update_looping)
MCFG_GFXDECODE_ADD("gfxdecode", looping)
- MCFG_PALETTE_LENGTH(32)
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(looping_state, looping)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/lordgun.c b/src/mame/drivers/lordgun.c
index 70f57f816df..bcae664bcb9 100644
--- a/src/mame/drivers/lordgun.c
+++ b/src/mame/drivers/lordgun.c
@@ -687,7 +687,7 @@ static MACHINE_CONFIG_START( lordgun, lordgun_state )
MCFG_SCREEN_UPDATE_DRIVER(lordgun_state, screen_update_lordgun)
MCFG_GFXDECODE_ADD("gfxdecode", lordgun)
- MCFG_PALETTE_LENGTH(0x800 * 8) // 0x800 real colors, repeated per priority level
+ MCFG_PALETTE_ADD("palette", 0x800 * 8) // 0x800 real colors, repeated per priority level
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -723,7 +723,7 @@ static MACHINE_CONFIG_START( aliencha, lordgun_state )
MCFG_SCREEN_UPDATE_DRIVER(lordgun_state, screen_update_lordgun)
MCFG_GFXDECODE_ADD("gfxdecode", lordgun)
- MCFG_PALETTE_LENGTH(0x800 * 8) // 0x800 real colors, repeated per priority level
+ MCFG_PALETTE_ADD("palette", 0x800 * 8) // 0x800 real colors, repeated per priority level
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/lsasquad.c b/src/mame/drivers/lsasquad.c
index 67f98f83d20..d6ffe6d6186 100644
--- a/src/mame/drivers/lsasquad.c
+++ b/src/mame/drivers/lsasquad.c
@@ -633,9 +633,7 @@ static MACHINE_CONFIG_START( lsasquad, lsasquad_state )
MCFG_SCREEN_UPDATE_DRIVER(lsasquad_state, screen_update_lsasquad)
MCFG_GFXDECODE_ADD("gfxdecode", lsasquad)
- MCFG_PALETTE_LENGTH(512)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 512)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -690,9 +688,7 @@ static MACHINE_CONFIG_START( daikaiju, lsasquad_state )
MCFG_SCREEN_UPDATE_DRIVER(lsasquad_state, screen_update_daikaiju)
MCFG_GFXDECODE_ADD("gfxdecode", lsasquad)
- MCFG_PALETTE_LENGTH(512)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 512)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/ltcasino.c b/src/mame/drivers/ltcasino.c
index 84db2f4950e..1f5bfe69806 100644
--- a/src/mame/drivers/ltcasino.c
+++ b/src/mame/drivers/ltcasino.c
@@ -662,7 +662,7 @@ static MACHINE_CONFIG_START( ltcasino, ltcasino_state )
MCFG_SCREEN_UPDATE_DRIVER(ltcasino_state, screen_update_ltcasino)
MCFG_GFXDECODE_ADD("gfxdecode", ltcasino)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
/* sound hardware */
diff --git a/src/mame/drivers/luckgrln.c b/src/mame/drivers/luckgrln.c
index 7a5da863735..f264bbd9104 100644
--- a/src/mame/drivers/luckgrln.c
+++ b/src/mame/drivers/luckgrln.c
@@ -367,10 +367,10 @@ UINT32 luckgrln_state::screen_update_luckgrln(screen_device &screen, bitmap_ind1
if (bgenable==3) m_reel4_tilemap->draw(screen, bitmap, clip, 0, 0);
}
- if (tileattr&0x08) m_gfxdecode->gfx(region)->transpen(bitmap,clip,tile,col,0,0,x*8,y*8, 0);
+ if (tileattr&0x08) m_gfxdecode->gfx(region)->transpen(m_palette,bitmap,clip,tile,col,0,0,x*8,y*8, 0);
#else // treat it as priority flag instead (looks better in non-adult title screen - needs verifying)
- if (!(tileattr&0x08)) m_gfxdecode->gfx(region)->transpen(bitmap,clip,tile,col,0,0,x*8,y*8, 0);
+ if (!(tileattr&0x08)) m_gfxdecode->gfx(region)->transpen(m_palette,bitmap,clip,tile,col,0,0,x*8,y*8, 0);
if (tileattr&0x04)
{
@@ -380,7 +380,7 @@ UINT32 luckgrln_state::screen_update_luckgrln(screen_device &screen, bitmap_ind1
if (bgenable==3) m_reel4_tilemap->draw(screen, bitmap, clip, 0, 0);
}
- if ((tileattr&0x08)) m_gfxdecode->gfx(region)->transpen(bitmap,clip,tile,col,0,0,x*8,y*8, 0);
+ if ((tileattr&0x08)) m_gfxdecode->gfx(region)->transpen(m_palette,bitmap,clip,tile,col,0,0,x*8,y*8, 0);
#endif
count++;
@@ -470,7 +470,7 @@ WRITE8_MEMBER(luckgrln_state::palette_w)
g = (dat >> 5) & 0x1f;
b = (dat >> 10) & 0x1f;
- palette_set_color_rgb(machine(), offs/2, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(offs/2, pal5bit(r), pal5bit(g), pal5bit(b));
}
@@ -1014,7 +1014,7 @@ static MACHINE_CONFIG_START( luckgrln, luckgrln_state )
MCFG_SCREEN_UPDATE_DRIVER(luckgrln_state, screen_update_luckgrln)
MCFG_GFXDECODE_ADD("gfxdecode", luckgrln)
- MCFG_PALETTE_LENGTH(0x8000)
+ MCFG_PALETTE_ADD("palette", 0x8000)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/lucky74.c b/src/mame/drivers/lucky74.c
index 5feca86d6d8..3c8da314782 100644
--- a/src/mame/drivers/lucky74.c
+++ b/src/mame/drivers/lucky74.c
@@ -1552,8 +1552,8 @@ static MACHINE_CONFIG_START( lucky74, lucky74_state )
MCFG_GFXDECODE_ADD("gfxdecode", lucky74)
- MCFG_PALETTE_LENGTH(512)
-
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_INIT_OWNER(lucky74_state, lucky74)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/lvcards.c b/src/mame/drivers/lvcards.c
index 9ef2aaea5a0..13438c1ae9e 100644
--- a/src/mame/drivers/lvcards.c
+++ b/src/mame/drivers/lvcards.c
@@ -477,8 +477,8 @@ static MACHINE_CONFIG_START( lvcards, lvcards_state )
MCFG_SCREEN_UPDATE_DRIVER(lvcards_state, screen_update_lvcards)
MCFG_GFXDECODE_ADD("gfxdecode", lvcards)
- MCFG_PALETTE_LENGTH(256)
-
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(lvcards_state, lvcards)
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -507,7 +507,8 @@ static MACHINE_CONFIG_DERIVED( ponttehk, lvcards )
MCFG_MACHINE_RESET_OVERRIDE(lvcards_state,lvpoker)
// video hardware
- MCFG_PALETTE_INIT_OVERRIDE(lvcards_state,ponttehk)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(lvcards_state,ponttehk)
MACHINE_CONFIG_END
ROM_START( lvpoker )
diff --git a/src/mame/drivers/lwings.c b/src/mame/drivers/lwings.c
index c4d6c722d6d..5d4dfcfa7ee 100644
--- a/src/mame/drivers/lwings.c
+++ b/src/mame/drivers/lwings.c
@@ -280,8 +280,8 @@ static ADDRESS_MAP_START( avengers_map, AS_PROGRAM, 8, lwings_state )
AM_RANGE(0xdf80, 0xdfff) AM_RAM
AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(lwings_fgvideoram_w) AM_SHARE("fgvideoram")
AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(lwings_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_byte_split_hi_w) AM_SHARE("paletteram2")
- AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_byte_split_lo_w) AM_SHARE("paletteram")
+ AM_RANGE(0xf000, 0xf3ff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
+ AM_RANGE(0xf400, 0xf7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xf800, 0xf801) AM_WRITE(lwings_bg1_scrollx_w)
AM_RANGE(0xf802, 0xf803) AM_WRITE(lwings_bg1_scrolly_w)
AM_RANGE(0xf804, 0xf804) AM_WRITE(trojan_bg2_scrollx_w)
@@ -303,8 +303,8 @@ static ADDRESS_MAP_START( lwings_map, AS_PROGRAM, 8, lwings_state )
AM_RANGE(0xde00, 0xdfff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(lwings_fgvideoram_w) AM_SHARE("fgvideoram")
AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(lwings_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_byte_split_hi_w) AM_SHARE("paletteram2")
- AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_byte_split_lo_w) AM_SHARE("paletteram")
+ AM_RANGE(0xf000, 0xf3ff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
+ AM_RANGE(0xf400, 0xf7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xf808, 0xf808) AM_READ_PORT("SERVICE")
AM_RANGE(0xf809, 0xf809) AM_READ_PORT("P1")
@@ -325,8 +325,8 @@ static ADDRESS_MAP_START( trojan_map, AS_PROGRAM, 8, lwings_state )
AM_RANGE(0xdf80, 0xdfff) AM_RAM
AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(lwings_fgvideoram_w) AM_SHARE("fgvideoram")
AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(lwings_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_byte_split_hi_w) AM_SHARE("paletteram2")
- AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_byte_split_lo_w) AM_SHARE("paletteram")
+ AM_RANGE(0xf000, 0xf3ff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
+ AM_RANGE(0xf400, 0xf7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xf800, 0xf801) AM_WRITE(lwings_bg1_scrollx_w)
AM_RANGE(0xf802, 0xf803) AM_WRITE(lwings_bg1_scrolly_w)
@@ -792,8 +792,9 @@ static MACHINE_CONFIG_START( lwings, lwings_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", lwings)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/m10.c b/src/mame/drivers/m10.c
index 03161d81144..fc282dbc370 100644
--- a/src/mame/drivers/m10.c
+++ b/src/mame/drivers/m10.c
@@ -185,7 +185,7 @@ PALETTE_INIT_MEMBER(m10_state,m10)
else
color = rgb_t::black;
- palette_set_color(machine(), i, color);
+ palette.set_pen_color(i, color);
}
}
@@ -855,9 +855,9 @@ static MACHINE_CONFIG_START( m10, m10_state )
MCFG_SCREEN_UPDATE_DRIVER(m10_state, screen_update_m10)
MCFG_GFXDECODE_ADD("gfxdecode", m10)
- MCFG_PALETTE_LENGTH(2*8)
+ MCFG_PALETTE_ADD("palette", 2*8)
- MCFG_PALETTE_INIT_OVERRIDE(m10_state,m10)
+ MCFG_PALETTE_INIT_OWNER(m10_state,m10)
MCFG_VIDEO_START_OVERRIDE(m10_state,m10)
/* 74LS123 */
@@ -900,9 +900,9 @@ static MACHINE_CONFIG_START( m15, m10_state )
MCFG_SCREEN_UPDATE_DRIVER(m10_state, screen_update_m15)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
- MCFG_PALETTE_LENGTH(2*8)
+ MCFG_PALETTE_ADD("palette", 2*8)
- MCFG_PALETTE_INIT_OVERRIDE(m10_state,m10)
+ MCFG_PALETTE_INIT_OWNER(m10_state,m10)
MCFG_VIDEO_START_OVERRIDE(m10_state, m15 )
/* sound hardware */
diff --git a/src/mame/drivers/m107.c b/src/mame/drivers/m107.c
index cecb62cbd72..d5a4ae97eb2 100644
--- a/src/mame/drivers/m107.c
+++ b/src/mame/drivers/m107.c
@@ -131,7 +131,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, m107_state )
AM_RANGE(0xd0000, 0xdffff) AM_RAM_WRITE(m107_vram_w) AM_SHARE("vram_data")
AM_RANGE(0xe0000, 0xeffff) AM_RAM /* System ram */
AM_RANGE(0xf8000, 0xf8fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf9000, 0xf9fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xf9000, 0xf9fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xffff0, 0xfffff) AM_ROM AM_REGION("maincpu", 0x7fff0)
ADDRESS_MAP_END
@@ -777,7 +777,8 @@ static MACHINE_CONFIG_START( firebarr, m107_state )
MCFG_SCREEN_UPDATE_DRIVER(m107_state, screen_update_m107)
MCFG_GFXDECODE_ADD("gfxdecode", firebarr)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
diff --git a/src/mame/drivers/m14.c b/src/mame/drivers/m14.c
index 746027ecbae..0cc6501079c 100644
--- a/src/mame/drivers/m14.c
+++ b/src/mame/drivers/m14.c
@@ -90,7 +90,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(m14);
UINT32 screen_update_m14(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(m14_irq);
};
@@ -103,7 +103,7 @@ public:
*************************************/
/* guess, might not be 100% accurate. */
-void m14_state::palette_init()
+PALETTE_INIT_MEMBER(m14_state, m14)
{
int i;
@@ -116,7 +116,7 @@ void m14_state::palette_init()
else
color = (i & 0x10) ? rgb_t::white : rgb_t::black;
- palette_set_color(machine(), i, color);
+ palette.set_pen_color(i, color);
}
}
@@ -347,7 +347,8 @@ static MACHINE_CONFIG_START( m14, m14_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
MCFG_SCREEN_UPDATE_DRIVER(m14_state, screen_update_m14)
MCFG_GFXDECODE_ADD("gfxdecode", m14)
- MCFG_PALETTE_LENGTH(0x20)
+ MCFG_PALETTE_ADD("palette", 0x20)
+ MCFG_PALETTE_INIT_OWNER(m14_state, m14)
/* sound hardware */
diff --git a/src/mame/drivers/m52.c b/src/mame/drivers/m52.c
index 7ed501dd802..9250d1d9bb7 100644
--- a/src/mame/drivers/m52.c
+++ b/src/mame/drivers/m52.c
@@ -399,7 +399,8 @@ static MACHINE_CONFIG_START( m52, m52_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", m52)
- MCFG_PALETTE_LENGTH(128*4+16*4+3*4)
+ MCFG_PALETTE_ADD("palette", 128*4+16*4+3*4)
+ MCFG_PALETTE_INIT_OWNER(m52_state, m52)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 136, 376, 282, 22, 274)
diff --git a/src/mame/drivers/m57.c b/src/mame/drivers/m57.c
index 9402707a2de..33bad79d0e3 100644
--- a/src/mame/drivers/m57.c
+++ b/src/mame/drivers/m57.c
@@ -241,8 +241,8 @@ static MACHINE_CONFIG_START( m57, m57_state )
MCFG_SCREEN_UPDATE_DRIVER(m57_state, screen_update_m57)
MCFG_GFXDECODE_ADD("gfxdecode", m57)
- MCFG_PALETTE_LENGTH(32*8+32*8)
-
+ MCFG_PALETTE_ADD("palette", 32*8+32*8)
+ MCFG_PALETTE_INIT_OWNER(m57_state, m57)
/* sound hardware */
MCFG_FRAGMENT_ADD(m52_sound_c_audio)
diff --git a/src/mame/drivers/m58.c b/src/mame/drivers/m58.c
index 6860caad00b..2652d59a993 100644
--- a/src/mame/drivers/m58.c
+++ b/src/mame/drivers/m58.c
@@ -197,7 +197,8 @@ static MACHINE_CONFIG_START( yard, m58_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", yard)
- MCFG_PALETTE_LENGTH(256+256+256)
+ MCFG_PALETTE_ADD("palette", 256+256+256)
+ MCFG_PALETTE_INIT_OWNER(m58_state, m58)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 256, 282, 42, 266)
diff --git a/src/mame/drivers/m62.c b/src/mame/drivers/m62.c
index d6e58df5617..ac1e1c8e910 100644
--- a/src/mame/drivers/m62.c
+++ b/src/mame/drivers/m62.c
@@ -947,8 +947,8 @@ static MACHINE_CONFIG_START( ldrun, m62_state )
MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_ldrun)
MCFG_GFXDECODE_ADD("gfxdecode", ldrun)
- MCFG_PALETTE_LENGTH(512)
-
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_INIT_OWNER(m62_state,m62)
/* sound hardware */
MCFG_FRAGMENT_ADD(m62_audio)
@@ -985,9 +985,10 @@ static MACHINE_CONFIG_DERIVED( battroad, ldrun )
MCFG_SCREEN_VISIBLE_AREA((64*8-256)/2, 64*8-(64*8-256)/2-1, 0*8, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_battroad)
MCFG_GFXDECODE_MODIFY("gfxdecode", battroad)
- MCFG_PALETTE_LENGTH(544)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 544)
- MCFG_PALETTE_INIT_OVERRIDE(m62_state,battroad)
+ MCFG_PALETTE_INIT_OWNER(m62_state,battroad)
MCFG_VIDEO_START_OVERRIDE(m62_state,battroad)
MACHINE_CONFIG_END
@@ -1043,9 +1044,11 @@ static MACHINE_CONFIG_DERIVED( lotlot, ldrun )
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", lotlot)
- MCFG_PALETTE_LENGTH(768)
+
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 768)
- MCFG_PALETTE_INIT_OVERRIDE(m62_state,lotlot)
+ MCFG_PALETTE_INIT_OWNER(m62_state,lotlot)
MCFG_VIDEO_START_OVERRIDE(m62_state,lotlot)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_lotlot)
@@ -1091,9 +1094,10 @@ static MACHINE_CONFIG_DERIVED( spelunk2, ldrun )
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", spelunk2)
- MCFG_PALETTE_LENGTH(768)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 768)
- MCFG_PALETTE_INIT_OVERRIDE(m62_state,spelunk2)
+ MCFG_PALETTE_INIT_OWNER(m62_state,spelunk2)
MCFG_VIDEO_START_OVERRIDE(m62_state,spelunk2)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(m62_state, screen_update_spelunk2)
diff --git a/src/mame/drivers/m63.c b/src/mame/drivers/m63.c
index 465583936d8..15996ad761f 100644
--- a/src/mame/drivers/m63.c
+++ b/src/mame/drivers/m63.c
@@ -228,7 +228,7 @@ PALETTE_INIT_MEMBER(m63_state,m63)
bit3 = (color_prom[i + 2*256] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
color_prom += 3 * 256;
@@ -252,7 +252,7 @@ PALETTE_INIT_MEMBER(m63_state,m63)
bit1 = (color_prom[i] >> 7) & 0x01;
b = 0x4f * bit0 + 0xa8 * bit1;
- palette_set_color(machine(),i+256,rgb_t(r,g,b));
+ palette.set_pen_color(i+256,rgb_t(r,g,b));
}
}
@@ -346,7 +346,7 @@ void m63_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
}
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code, color,
flipx, flipy,
sx, sy, 0);
@@ -355,7 +355,7 @@ void m63_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
if (sx > 0xf0)
{
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code, color,
flipx, flipy,
sx - 0x100, sy, 0);
@@ -775,9 +775,9 @@ static MACHINE_CONFIG_START( m63, m63_state )
MCFG_SCREEN_UPDATE_DRIVER(m63_state, screen_update_m63)
MCFG_GFXDECODE_ADD("gfxdecode", m63)
- MCFG_PALETTE_LENGTH(256+4)
+ MCFG_PALETTE_ADD("palette", 256+4)
- MCFG_PALETTE_INIT_OVERRIDE(m63_state,m63)
+ MCFG_PALETTE_INIT_OWNER(m63_state,m63)
MCFG_VIDEO_START_OVERRIDE(m63_state,m63)
/* sound hardware */
@@ -819,9 +819,7 @@ static MACHINE_CONFIG_START( fghtbskt, m63_state )
MCFG_SCREEN_UPDATE_DRIVER(m63_state, screen_update_m63)
MCFG_GFXDECODE_ADD("gfxdecode", fghtbskt)
- MCFG_PALETTE_LENGTH(256)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
MCFG_VIDEO_START_OVERRIDE(m63_state,m63)
/* sound hardware */
diff --git a/src/mame/drivers/m72.c b/src/mame/drivers/m72.c
index 3ef1198fe06..781c11e4900 100644
--- a/src/mame/drivers/m72.c
+++ b/src/mame/drivers/m72.c
@@ -1802,7 +1802,7 @@ static MACHINE_CONFIG_START( m72_base, m72_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", m72)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
@@ -1857,7 +1857,7 @@ static MACHINE_CONFIG_START( rtype, m72_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", m72)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
@@ -1894,7 +1894,7 @@ static MACHINE_CONFIG_START( xmultipl, m72_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", m72)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
@@ -1935,7 +1935,7 @@ static MACHINE_CONFIG_START( xmultiplm72, m72_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", m72)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
@@ -1976,7 +1976,7 @@ static MACHINE_CONFIG_START( dbreed, m72_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", rtype2)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
@@ -2017,7 +2017,7 @@ static MACHINE_CONFIG_START( dbreedm72, m72_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", m72)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
@@ -2058,7 +2058,7 @@ static MACHINE_CONFIG_START( rtype2, m72_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", rtype2)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
@@ -2099,7 +2099,7 @@ static MACHINE_CONFIG_START( majtitle, m72_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", majtitle)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
@@ -2140,7 +2140,7 @@ static MACHINE_CONFIG_START( hharry, m72_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", rtype2)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
@@ -2181,7 +2181,7 @@ static MACHINE_CONFIG_START( hharryu, m72_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", rtype2)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
@@ -2222,7 +2222,7 @@ static MACHINE_CONFIG_START( dkgenm72, m72_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", m72)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
@@ -2263,7 +2263,7 @@ static MACHINE_CONFIG_START( poundfor, m72_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", rtype2)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
@@ -2304,7 +2304,7 @@ static MACHINE_CONFIG_START( cosmccop, m72_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", rtype2)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256)
diff --git a/src/mame/drivers/m90.c b/src/mame/drivers/m90.c
index 5b91592160f..64ae18307ee 100644
--- a/src/mame/drivers/m90.c
+++ b/src/mame/drivers/m90.c
@@ -75,7 +75,7 @@ static ADDRESS_MAP_START( m90_main_cpu_map, AS_PROGRAM, 16, m90_state )
AM_RANGE(0x80000, 0x8ffff) AM_ROMBANK("bank1") /* Quiz F1 only */
AM_RANGE(0xa0000, 0xa3fff) AM_RAM
AM_RANGE(0xd0000, 0xdffff) AM_RAM_WRITE(m90_video_w) AM_SHARE("video_data")
- AM_RANGE(0xe0000, 0xe03ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xe0000, 0xe03ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xffff0, 0xfffff) AM_ROM
ADDRESS_MAP_END
@@ -84,7 +84,7 @@ static ADDRESS_MAP_START( dynablsb_main_cpu_map, AS_PROGRAM, 16, m90_state )
AM_RANGE(0x6000e, 0x60fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xa0000, 0xa3fff) AM_RAM
AM_RANGE(0xd0000, 0xdffff) AM_RAM_WRITE(m90_video_w) AM_SHARE("video_data")
- AM_RANGE(0xe0000, 0xe03ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xe0000, 0xe03ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xffff0, 0xfffff) AM_ROM
ADDRESS_MAP_END
@@ -93,7 +93,7 @@ static ADDRESS_MAP_START( bomblord_main_cpu_map, AS_PROGRAM, 16, m90_state )
AM_RANGE(0xa0000, 0xa3fff) AM_RAM
AM_RANGE(0xc000e, 0xc0fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xd0000, 0xdffff) AM_RAM_WRITE(m90_video_w) AM_SHARE("video_data")
- AM_RANGE(0xe0000, 0xe03ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xe0000, 0xe03ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xffff0, 0xfffff) AM_ROM
ADDRESS_MAP_END
@@ -735,8 +735,8 @@ static MACHINE_CONFIG_START( m90, m90_state )
MCFG_SCREEN_UPDATE_DRIVER(m90_state, screen_update_m90)
MCFG_GFXDECODE_ADD("gfxdecode", m90)
- MCFG_PALETTE_LENGTH(512)
-
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/m92.c b/src/mame/drivers/m92.c
index c9c4b56cdde..e19a17e3bd1 100644
--- a/src/mame/drivers/m92.c
+++ b/src/mame/drivers/m92.c
@@ -942,7 +942,8 @@ static MACHINE_CONFIG_START( m92, m92_state )
MCFG_SCREEN_UPDATE_DRIVER(m92_state, screen_update_m92)
MCFG_GFXDECODE_ADD("gfxdecode", m92)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(m92_state,m92)
@@ -1021,7 +1022,8 @@ static MACHINE_CONFIG_START( ppan, m92_state )
MCFG_SCREEN_UPDATE_DRIVER(m92_state, screen_update_ppan)
MCFG_GFXDECODE_ADD("gfxdecode", m92)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(m92_state,ppan)
diff --git a/src/mame/drivers/macrossp.c b/src/mame/drivers/macrossp.c
index e5f1020a3b5..4ad83b03982 100644
--- a/src/mame/drivers/macrossp.c
+++ b/src/mame/drivers/macrossp.c
@@ -300,7 +300,7 @@ WRITE32_MEMBER(macrossp_state::paletteram32_macrossp_w)
g = ((m_paletteram[offset] & 0x00ff0000) >>16);
r = ((m_paletteram[offset] & 0xff000000) >>24);
- palette_set_color(machine(), offset, rgb_t(r,g,b));
+ m_palette->set_pen_color(offset, rgb_t(r,g,b));
}
@@ -361,7 +361,7 @@ void macrossp_state::update_colors( )
else
r -= m_fade_effect;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ m_palette->set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -616,7 +616,7 @@ static MACHINE_CONFIG_START( macrossp, macrossp_state )
MCFG_SCREEN_VBLANK_DRIVER(macrossp_state, screen_eof_macrossp)
MCFG_GFXDECODE_ADD("gfxdecode", macrossp)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
/* sound hardware */
diff --git a/src/mame/drivers/macs.c b/src/mame/drivers/macs.c
index 252845bfcc5..649122902bd 100644
--- a/src/mame/drivers/macs.c
+++ b/src/mame/drivers/macs.c
@@ -494,7 +494,7 @@ static MACHINE_CONFIG_START( macs, macs_state )
MCFG_SCREEN_UPDATE_DRIVER(st0016_state, screen_update_st0016)
MCFG_GFXDECODE_ADD("gfxdecode", macs)
- MCFG_PALETTE_LENGTH(16*16*4+1)
+ MCFG_PALETTE_ADD("palette", 16*16*4+1)
MCFG_VIDEO_START_OVERRIDE(st0016_state,st0016)
diff --git a/src/mame/drivers/madmotor.c b/src/mame/drivers/madmotor.c
index b3a3447fdb8..3a9e58ad367 100644
--- a/src/mame/drivers/madmotor.c
+++ b/src/mame/drivers/madmotor.c
@@ -54,7 +54,7 @@ static ADDRESS_MAP_START( madmotor_map, AS_PROGRAM, 16, madmotor_state )
AM_RANGE(0x1a4000, 0x1a4fff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_data_r, pf_data_w)
AM_RANGE(0x3e0000, 0x3e3fff) AM_RAM
AM_RANGE(0x3e8000, 0x3e87ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x3f0000, 0x3f07ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x3f0000, 0x3f07ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x3f8002, 0x3f8003) AM_READ_PORT("P1_P2")
AM_RANGE(0x3f8004, 0x3f8005) AM_READ_PORT("DSW")
AM_RANGE(0x3f8006, 0x3f8007) AM_READ_PORT("SYSTEM")
@@ -249,7 +249,8 @@ static MACHINE_CONFIG_START( madmotor, madmotor_state )
MCFG_SCREEN_UPDATE_DRIVER(madmotor_state, screen_update_madmotor)
MCFG_GFXDECODE_ADD("gfxdecode", madmotor)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device,0,0,0);
@@ -264,6 +265,7 @@ static MACHINE_CONFIG_START( madmotor, madmotor_state )
MCFG_DEVICE_ADD("spritegen", DECO_MXC06, 0)
deco_mxc06_device::set_gfx_region(*device, 3);
MCFG_DECO_MXC06_GFXDECODE("gfxdecode")
+ MCFG_DECO_MXC06_PALETTE("palette")
diff --git a/src/mame/drivers/magic10.c b/src/mame/drivers/magic10.c
index 0ef55236961..0715b636dcb 100644
--- a/src/mame/drivers/magic10.c
+++ b/src/mame/drivers/magic10.c
@@ -155,7 +155,7 @@ WRITE16_MEMBER(magic10_state::layer2_videoram_w)
WRITE16_MEMBER(magic10_state::paletteram_w)
{
data = COMBINE_DATA(&m_generic_paletteram_16[offset]);
- palette_set_color_rgb( machine(), offset, pal4bit(data >> 4), pal4bit(data >> 0), pal4bit(data >> 8));
+ m_palette->set_pen_color( offset, pal4bit(data >> 4), pal4bit(data >> 0), pal4bit(data >> 8));
}
@@ -749,7 +749,7 @@ static MACHINE_CONFIG_START( magic10, magic10_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 44*8-1, 2*8, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(magic10_state, screen_update_magic10)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_GFXDECODE_ADD("gfxdecode", magic10)
diff --git a/src/mame/drivers/magicard.c b/src/mame/drivers/magicard.c
index ac8d2391b1d..e735537bc18 100644
--- a/src/mame/drivers/magicard.c
+++ b/src/mame/drivers/magicard.c
@@ -424,7 +424,7 @@ UINT32 magicard_state::screen_update_magicard(screen_device &screen, bitmap_rgb3
int x,y;
UINT32 count;
- bitmap.fill(get_black_pen(machine()), cliprect); //TODO
+ bitmap.fill(m_palette->black_pen(), cliprect); //TODO
if(!(SCC_DE_VREG)) //display enable
return 0;
@@ -442,22 +442,22 @@ UINT32 magicard_state::screen_update_magicard(screen_device &screen, bitmap_rgb3
color = ((m_magicram[count]) & 0x000f)>>0;
if(cliprect.contains((x*4)+3, y))
- bitmap.pix32(y, (x*4)+3) = machine().pens[color];
+ bitmap.pix32(y, (x*4)+3) = m_palette->pen(color);
color = ((m_magicram[count]) & 0x00f0)>>4;
if(cliprect.contains((x*4)+2, y))
- bitmap.pix32(y, (x*4)+2) = machine().pens[color];
+ bitmap.pix32(y, (x*4)+2) = m_palette->pen(color);
color = ((m_magicram[count]) & 0x0f00)>>8;
if(cliprect.contains((x*4)+1, y))
- bitmap.pix32(y, (x*4)+1) = machine().pens[color];
+ bitmap.pix32(y, (x*4)+1) = m_palette->pen(color);
color = ((m_magicram[count]) & 0xf000)>>12;
if(cliprect.contains((x*4)+0, y))
- bitmap.pix32(y, (x*4)+0) = machine().pens[color];
+ bitmap.pix32(y, (x*4)+0) = m_palette->pen(color);
count++;
}
@@ -474,12 +474,12 @@ UINT32 magicard_state::screen_update_magicard(screen_device &screen, bitmap_rgb3
color = ((m_magicram[count]) & 0x00ff)>>0;
if(cliprect.contains((x*2)+1, y))
- bitmap.pix32(y, (x*2)+1) = machine().pens[color];
+ bitmap.pix32(y, (x*2)+1) = m_palette->pen(color);
color = ((m_magicram[count]) & 0xff00)>>8;
if(cliprect.contains((x*2)+0, y))
- bitmap.pix32(y, (x*2)+0) = machine().pens[color];
+ bitmap.pix32(y, (x*2)+0) = m_palette->pen(color);
count++;
}
@@ -522,7 +522,7 @@ WRITE16_MEMBER(magicard_state::paletteram_io_w)
break;
case 2:
m_pal.b = ((data & 0x3f) << 2) | ((data & 0x30) >> 4);
- palette_set_color(machine(), m_pal.offs, rgb_t(m_pal.r, m_pal.g, m_pal.b));
+ m_palette->set_pen_color(m_pal.offs, rgb_t(m_pal.r, m_pal.g, m_pal.b));
m_pal.offs_internal = 0;
m_pal.offs++;
break;
@@ -733,7 +733,7 @@ static MACHINE_CONFIG_START( magicard, magicard_state )
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-1) //dynamic resolution,TODO
MCFG_SCREEN_UPDATE_DRIVER(magicard_state, screen_update_magicard)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
diff --git a/src/mame/drivers/magicfly.c b/src/mame/drivers/magicfly.c
index eccd3c2e81d..143a05698ea 100644
--- a/src/mame/drivers/magicfly.c
+++ b/src/mame/drivers/magicfly.c
@@ -568,23 +568,23 @@ PALETTE_INIT_MEMBER(magicfly_state, magicfly)
for (i = 0x00; i < 0x10; i += 0x10)
{
/* 1st gfx bank */
- palette_set_color(machine(), i + 0, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), i + 2, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), i + 4, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), i + 6, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), i + 8, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), i + 10, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), i + 12, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), i + 14, rgb_t(0x00, 0x00, 0x00));
-
- palette_set_color(machine(), i + 1, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), i + 3, rgb_t(0xff, 0x00, 0x00));
- palette_set_color(machine(), i + 5, rgb_t(0x00, 0xff, 0x00));
- palette_set_color(machine(), i + 7, rgb_t(0xff, 0xff, 0x00));
- palette_set_color(machine(), i + 9, rgb_t(0x00, 0x00, 0xff));
- palette_set_color(machine(), i + 11, rgb_t(0xff, 0x00, 0xff));
- palette_set_color(machine(), i + 13, rgb_t(0x00, 0xff, 0xff));
- palette_set_color(machine(), i + 15, rgb_t(0xff, 0xff, 0xff));
+ palette.set_pen_color(i + 0, rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(i + 2, rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(i + 4, rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(i + 6, rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(i + 8, rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(i + 10, rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(i + 12, rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(i + 14, rgb_t(0x00, 0x00, 0x00));
+
+ palette.set_pen_color(i + 1, rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(i + 3, rgb_t(0xff, 0x00, 0x00));
+ palette.set_pen_color(i + 5, rgb_t(0x00, 0xff, 0x00));
+ palette.set_pen_color(i + 7, rgb_t(0xff, 0xff, 0x00));
+ palette.set_pen_color(i + 9, rgb_t(0x00, 0x00, 0xff));
+ palette.set_pen_color(i + 11, rgb_t(0xff, 0x00, 0xff));
+ palette.set_pen_color(i + 13, rgb_t(0x00, 0xff, 0xff));
+ palette.set_pen_color(i + 15, rgb_t(0xff, 0xff, 0xff));
}
}
@@ -595,27 +595,27 @@ PALETTE_INIT_MEMBER(magicfly_state, bchance)
for (i = 0x00; i < 0x10; i += 0x10)
{
/* 1st gfx bank */
- palette_set_color(machine(), i + 0, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), i + 2, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), i + 4, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), i + 6, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), i + 8, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), i + 10, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), i + 12, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), i + 14, rgb_t(0x00, 0x00, 0x00));
-
- palette_set_color(machine(), i + 1, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), i + 3, rgb_t(0xff, 0x00, 0x00));
- palette_set_color(machine(), i + 5, rgb_t(0x00, 0xff, 0x00));
- palette_set_color(machine(), i + 7, rgb_t(0xff, 0xff, 0x00));
- palette_set_color(machine(), i + 9, rgb_t(0x00, 0x00, 0xff));
- palette_set_color(machine(), i + 11, rgb_t(0xff, 0x00, 0xff));
- palette_set_color(machine(), i + 13, rgb_t(0x00, 0xff, 0xff));
- palette_set_color(machine(), i + 15, rgb_t(0xff, 0xff, 0xff));
+ palette.set_pen_color(i + 0, rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(i + 2, rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(i + 4, rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(i + 6, rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(i + 8, rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(i + 10, rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(i + 12, rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(i + 14, rgb_t(0x00, 0x00, 0x00));
+
+ palette.set_pen_color(i + 1, rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(i + 3, rgb_t(0xff, 0x00, 0x00));
+ palette.set_pen_color(i + 5, rgb_t(0x00, 0xff, 0x00));
+ palette.set_pen_color(i + 7, rgb_t(0xff, 0xff, 0x00));
+ palette.set_pen_color(i + 9, rgb_t(0x00, 0x00, 0xff));
+ palette.set_pen_color(i + 11, rgb_t(0xff, 0x00, 0xff));
+ palette.set_pen_color(i + 13, rgb_t(0x00, 0xff, 0xff));
+ palette.set_pen_color(i + 15, rgb_t(0xff, 0xff, 0xff));
}
- palette_set_color(machine(), 0x08 , rgb_t(0xff, 0xff, 0xff)); // white for the cards back logo background.
- palette_set_color(machine(), 0x12 , rgb_t(0x00, 0x00, 0x00)); // black for the cards corners (should be transparent)
+ palette.set_pen_color(0x08 , rgb_t(0xff, 0xff, 0xff)); // white for the cards back logo background.
+ palette.set_pen_color(0x12 , rgb_t(0x00, 0x00, 0x00)); // black for the cards corners (should be transparent)
}
@@ -959,8 +959,8 @@ static MACHINE_CONFIG_START( magicfly, magicfly_state )
MCFG_SCREEN_UPDATE_DRIVER(magicfly_state, screen_update_magicfly)
MCFG_GFXDECODE_ADD("gfxdecode", magicfly)
- MCFG_PALETTE_LENGTH(32)
- MCFG_PALETTE_INIT_OVERRIDE(magicfly_state, magicfly)
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(magicfly_state, magicfly)
MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK/16, mc6845_intf) /* guess */
@@ -983,7 +983,8 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( bchance, magicfly )
/* video hardware */
- MCFG_PALETTE_INIT_OVERRIDE(magicfly_state, bchance)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(magicfly_state, bchance)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/magmax.c b/src/mame/drivers/magmax.c
index 8580a42ecfd..22a311b1256 100644
--- a/src/mame/drivers/magmax.c
+++ b/src/mame/drivers/magmax.c
@@ -363,8 +363,8 @@ static MACHINE_CONFIG_START( magmax, magmax_state )
MCFG_SCREEN_UPDATE_DRIVER(magmax_state, screen_update_magmax)
MCFG_GFXDECODE_ADD("gfxdecode", magmax)
- MCFG_PALETTE_LENGTH(1*16 + 16*16 + 256)
-
+ MCFG_PALETTE_ADD("palette", 1*16 + 16*16 + 256)
+ MCFG_PALETTE_INIT_OWNER(magmax_state, magmax)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/mainevt.c b/src/mame/drivers/mainevt.c
index 7247da870c7..19bae7e8479 100644
--- a/src/mame/drivers/mainevt.c
+++ b/src/mame/drivers/mainevt.c
@@ -167,7 +167,7 @@ static ADDRESS_MAP_START( mainevt_map, AS_PROGRAM, 8, mainevt_state )
AM_RANGE(0x0000, 0x3fff) AM_READWRITE(k052109_051960_r, k052109_051960_w)
AM_RANGE(0x4000, 0x5dff) AM_RAM
- AM_RANGE(0x5e00, 0x5fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0x5e00, 0x5fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1")
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -191,7 +191,7 @@ static ADDRESS_MAP_START( devstors_map, AS_PROGRAM, 8, mainevt_state )
AM_RANGE(0x0000, 0x3fff) AM_READWRITE(k052109_051960_r, k052109_051960_w)
AM_RANGE(0x4000, 0x5dff) AM_RAM
- AM_RANGE(0x5e00, 0x5fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0x5e00, 0x5fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1")
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -436,8 +436,6 @@ static MACHINE_CONFIG_START( mainevt, mainevt_state )
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
@@ -445,15 +443,19 @@ static MACHINE_CONFIG_START( mainevt, mainevt_state )
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(mainevt_state, screen_update_mainevt)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(mainevt_state,mainevt)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", mainevt_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K051960_ADD("k051960", mainevt_k051960_intf)
MCFG_K051960_GFXDECODE("gfxdecode")
+ MCFG_K051960_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -497,8 +499,6 @@ static MACHINE_CONFIG_START( devstors, mainevt_state )
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
@@ -506,15 +506,19 @@ static MACHINE_CONFIG_START( devstors, mainevt_state )
MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(mainevt_state, screen_update_dv)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(mainevt_state,dv)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", dv_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K051960_ADD("k051960", dv_k051960_intf)
MCFG_K051960_GFXDECODE("gfxdecode")
+ MCFG_K051960_PALETTE("palette")
MCFG_K051733_ADD("k051733")
/* sound hardware */
diff --git a/src/mame/drivers/mainsnk.c b/src/mame/drivers/mainsnk.c
index 38ce6e80e43..68058ddc58d 100644
--- a/src/mame/drivers/mainsnk.c
+++ b/src/mame/drivers/mainsnk.c
@@ -395,8 +395,6 @@ static MACHINE_CONFIG_START( mainsnk, mainsnk_state )
MCFG_CPU_PERIODIC_INT_DRIVER(mainsnk_state, irq0_line_hold, 244)
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(36*8, 28*8)
@@ -404,8 +402,9 @@ static MACHINE_CONFIG_START( mainsnk, mainsnk_state )
MCFG_SCREEN_UPDATE_DRIVER(mainsnk_state, screen_update_mainsnk)
MCFG_GFXDECODE_ADD("gfxdecode", mainsnk)
- MCFG_PALETTE_LENGTH(0x400)
-
+ MCFG_PALETTE_ADD("palette", 0x400)
+ MCFG_PALETTE_INIT_OWNER(mainsnk_state, mainsnk)
+ MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/majorpkr.c b/src/mame/drivers/majorpkr.c
index ac05aab7a9f..a56b0915a88 100644
--- a/src/mame/drivers/majorpkr.c
+++ b/src/mame/drivers/majorpkr.c
@@ -540,7 +540,7 @@ void majorpkr_state::video_start()
UINT32 majorpkr_state::screen_update_majorpkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
rectangle custom_clip;
@@ -590,7 +590,7 @@ WRITE8_MEMBER(majorpkr_state::paletteram_w)
offset >>= 1;
int color = m_generic_paletteram_8[m_palette_bank * 0x800 + offset * 2] + m_generic_paletteram_8[m_palette_bank * 0x800 + offset * 2 + 1] * 256;
- palette_set_color(machine(), offset + m_palette_bank * 256 * 4, rgb_t(pal5bit(color >> 5), pal5bit(color >> 10), pal5bit(color)));
+ m_palette->set_pen_color(offset + m_palette_bank * 256 * 4, rgb_t(pal5bit(color >> 5), pal5bit(color >> 10), pal5bit(color)));
}
@@ -1041,7 +1041,7 @@ static MACHINE_CONFIG_START( majorpkr, majorpkr_state )
MCFG_SCREEN_UPDATE_DRIVER(majorpkr_state, screen_update_majorpkr)
MCFG_GFXDECODE_ADD("gfxdecode", majorpkr)
- MCFG_PALETTE_LENGTH(0x100 * 16)
+ MCFG_PALETTE_ADD("palette", 0x100 * 16)
MCFG_MC6845_ADD("crtc", MC6845, "screen", CRTC_CLOCK, mc6845_intf) /* verified */
diff --git a/src/mame/drivers/malzak.c b/src/mame/drivers/malzak.c
index 2990113c03f..ea71d54305a 100644
--- a/src/mame/drivers/malzak.c
+++ b/src/mame/drivers/malzak.c
@@ -259,14 +259,14 @@ static GFXDECODE_START( malzak )
GFXDECODE_END
-void malzak_state::palette_init()
+PALETTE_INIT_MEMBER(malzak_state, malzak)
{
int i;
for (i = 0; i < 8 * 8; i++)
{
- palette_set_color_rgb(machine(), i * 2 + 0, pal1bit(i >> 3), pal1bit(i >> 4), pal1bit(i >> 5));
- palette_set_color_rgb(machine(), i * 2 + 1, pal1bit(i >> 0), pal1bit(i >> 1), pal1bit(i >> 2));
+ palette.set_pen_color(i * 2 + 0, pal1bit(i >> 3), pal1bit(i >> 4), pal1bit(i >> 5));
+ palette.set_pen_color(i * 2 + 1, pal1bit(i >> 0), pal1bit(i >> 1), pal1bit(i >> 2));
}
}
@@ -358,7 +358,8 @@ static MACHINE_CONFIG_START( malzak, malzak_state )
MCFG_SCREEN_UPDATE_DRIVER(malzak_state, screen_update_malzak)
MCFG_GFXDECODE_ADD("gfxdecode", malzak)
- MCFG_PALETTE_LENGTH(128)
+ MCFG_PALETTE_ADD("palette", 128)
+ MCFG_PALETTE_INIT_OWNER(malzak_state, malzak)
MCFG_S2636_ADD("s2636_0", malzac_s2636_0_config)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
diff --git a/src/mame/drivers/mappy.c b/src/mame/drivers/mappy.c
index ff94ab3682d..85e6acb7a51 100644
--- a/src/mame/drivers/mappy.c
+++ b/src/mame/drivers/mappy.c
@@ -1720,13 +1720,13 @@ static MACHINE_CONFIG_FRAGMENT( superpac_common )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", superpac)
- MCFG_PALETTE_LENGTH(64*4+64*4)
+ MCFG_PALETTE_ADD("palette", 64*4+64*4)
+ MCFG_PALETTE_INIT_OWNER(mappy_state,superpac)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(mappy_state, screen_update_superpac)
- MCFG_PALETTE_INIT_OVERRIDE(mappy_state,superpac)
MCFG_VIDEO_START_OVERRIDE(mappy_state,superpac)
/* sound hardware */
@@ -1800,13 +1800,13 @@ static MACHINE_CONFIG_START( phozon, mappy_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", phozon)
- MCFG_PALETTE_LENGTH(64*4+64*4)
+ MCFG_PALETTE_ADD("palette", 64*4+64*4)
+ MCFG_PALETTE_INIT_OWNER(mappy_state,phozon)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(mappy_state, screen_update_phozon)
- MCFG_PALETTE_INIT_OVERRIDE(mappy_state,phozon)
MCFG_VIDEO_START_OVERRIDE(mappy_state,phozon)
/* sound hardware */
@@ -1837,13 +1837,13 @@ static MACHINE_CONFIG_FRAGMENT( mappy_common )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", mappy)
- MCFG_PALETTE_LENGTH(64*4+16*16)
+ MCFG_PALETTE_ADD("palette", 64*4+16*16)
+ MCFG_PALETTE_INIT_OWNER(mappy_state,mappy)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(mappy_state, screen_update_mappy)
- MCFG_PALETTE_INIT_OVERRIDE(mappy_state,mappy)
MCFG_VIDEO_START_OVERRIDE(mappy_state,mappy)
/* sound hardware */
@@ -1879,7 +1879,8 @@ static MACHINE_CONFIG_DERIVED( todruaga, digdug2 )
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", todruaga)
- MCFG_PALETTE_LENGTH(64*4+64*16)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 64*4+64*16)
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( motos, mappy_state )
diff --git a/src/mame/drivers/marineb.c b/src/mame/drivers/marineb.c
index 24a6a9963e6..572f1af1f70 100644
--- a/src/mame/drivers/marineb.c
+++ b/src/mame/drivers/marineb.c
@@ -547,8 +547,8 @@ static MACHINE_CONFIG_START( marineb, marineb_state )
MCFG_SCREEN_UPDATE_DRIVER(marineb_state, screen_update_marineb)
MCFG_GFXDECODE_ADD("gfxdecode", marineb)
- MCFG_PALETTE_LENGTH(256)
-
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(marineb_state, marineb)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/marinedt.c b/src/mame/drivers/marinedt.c
index d6967a0f7ee..a2be759013b 100644
--- a/src/mame/drivers/marinedt.c
+++ b/src/mame/drivers/marinedt.c
@@ -153,7 +153,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(marinedt);
UINT32 screen_update_marinedt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -451,12 +451,12 @@ static GFXDECODE_START( marinedt )
GFXDECODE_ENTRY( "gfx3", 0, marinedt_objlayout, 32, 4 )
GFXDECODE_END
-void marinedt_state::palette_init()
+PALETTE_INIT_MEMBER(marinedt_state, marinedt)
{
const UINT8 *color_prom = memregion("proms")->base();
int i,r,b,g;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2;
@@ -480,7 +480,7 @@ bit0 = 0;
// *(palette++) = 0x92 * bit0 + 0x46 * bit1 + 0x27 * bit2;
b = 0x27 * bit0 + 0x46 * bit1 + 0x92 * bit2;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -529,14 +529,14 @@ UINT32 marinedt_state::screen_update_marinedt(screen_device &screen, bitmap_ind1
m_tx_tilemap->draw(screen, *m_tile, cliprect, 0, 0);
m_obj1->fill(0);
- m_gfxdecode->gfx(1)->transpen(*m_obj1,m_obj1->cliprect(),
+ m_gfxdecode->gfx(1)->transpen(m_palette,*m_obj1,m_obj1->cliprect(),
OBJ_CODE(m_obj1_a),
OBJ_COLOR(m_obj1_a),
OBJ_FLIPX(m_obj1_a), OBJ_FLIPY(m_obj1_a),
0, 0, 0);
m_obj2->fill(0);
- m_gfxdecode->gfx(2)->transpen(*m_obj2,m_obj2->cliprect(),
+ m_gfxdecode->gfx(2)->transpen(m_palette,*m_obj2,m_obj2->cliprect(),
OBJ_CODE(m_obj2_a),
OBJ_COLOR(m_obj2_a),
OBJ_FLIPX(m_obj2_a), OBJ_FLIPY(m_obj2_a),
@@ -685,8 +685,8 @@ static MACHINE_CONFIG_START( marinedt, marinedt_state )
MCFG_SCREEN_UPDATE_DRIVER(marinedt_state, screen_update_marinedt)
MCFG_GFXDECODE_ADD("gfxdecode", marinedt)
- MCFG_PALETTE_LENGTH(64)
-
+ MCFG_PALETTE_ADD("palette", 64)
+ MCFG_PALETTE_INIT_OWNER(marinedt_state, marinedt)
/* sound hardware */
//discrete sound
diff --git a/src/mame/drivers/mario.c b/src/mame/drivers/mario.c
index 763850c7482..7e116c04eb7 100644
--- a/src/mame/drivers/mario.c
+++ b/src/mame/drivers/mario.c
@@ -353,8 +353,8 @@ static MACHINE_CONFIG_START( mario_base, mario_state )
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(mario_state, screen_update_mario)
MCFG_GFXDECODE_ADD("gfxdecode", mario)
- MCFG_PALETTE_LENGTH(512)
-
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_INIT_OWNER(mario_state, mario)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/markham.c b/src/mame/drivers/markham.c
index d4188f97d13..a4a33d14d55 100644
--- a/src/mame/drivers/markham.c
+++ b/src/mame/drivers/markham.c
@@ -194,8 +194,8 @@ static MACHINE_CONFIG_START( markham, markham_state )
MCFG_SCREEN_UPDATE_DRIVER(markham_state, screen_update_markham)
MCFG_GFXDECODE_ADD("gfxdecode", markham)
- MCFG_PALETTE_LENGTH(1024)
-
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_INIT_OWNER(markham_state, markham)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/mastboy.c b/src/mame/drivers/mastboy.c
index c24c2725e42..d11bd1eb0fd 100644
--- a/src/mame/drivers/mastboy.c
+++ b/src/mame/drivers/mastboy.c
@@ -506,7 +506,7 @@ UINT32 mastboy_state::screen_update_mastboy(screen_device &screen, bitmap_ind16
{
int coldat = m_colram[i+1] | (m_colram[i+0]<<8);
- palette_set_color_rgb(machine(),i/2,pal4bit(coldat>>8),pal4bit(coldat>>12),pal4bit(coldat>>4));
+ m_palette->set_pen_color(i/2,pal4bit(coldat>>8),pal4bit(coldat>>12),pal4bit(coldat>>4));
}
for (y=0;y<32;y++)
@@ -529,7 +529,7 @@ UINT32 mastboy_state::screen_update_mastboy(screen_device &screen, bitmap_ind16
}
- gfx->opaque(bitmap,cliprect,tileno,attr,0,0,x*8,y*8);
+ gfx->opaque(m_palette,bitmap,cliprect,tileno,attr,0,0,x*8,y*8);
count+=4;
@@ -903,7 +903,7 @@ static MACHINE_CONFIG_START( mastboy, mastboy_state )
MCFG_SCREEN_UPDATE_DRIVER(mastboy_state, screen_update_mastboy)
MCFG_GFXDECODE_ADD("gfxdecode", mastboy)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
// sound hardware
diff --git a/src/mame/drivers/matmania.c b/src/mame/drivers/matmania.c
index 0fdc4afca50..fcb3f5242cb 100644
--- a/src/mame/drivers/matmania.c
+++ b/src/mame/drivers/matmania.c
@@ -324,8 +324,8 @@ static MACHINE_CONFIG_START( matmania, matmania_state )
MCFG_SCREEN_UPDATE_DRIVER(matmania_state, screen_update_matmania)
MCFG_GFXDECODE_ADD("gfxdecode", matmania)
- MCFG_PALETTE_LENGTH(64+16)
-
+ MCFG_PALETTE_ADD("palette", 64+16)
+ MCFG_PALETTE_INIT_OWNER(matmania_state, matmania)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -405,8 +405,8 @@ static MACHINE_CONFIG_START( maniach, matmania_state )
MCFG_SCREEN_UPDATE_DRIVER(matmania_state, screen_update_maniach)
MCFG_GFXDECODE_ADD("gfxdecode", maniach)
- MCFG_PALETTE_LENGTH(64+16)
-
+ MCFG_PALETTE_ADD("palette", 64+16)
+ MCFG_PALETTE_INIT_OWNER(matmania_state, matmania)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/maxaflex.c b/src/mame/drivers/maxaflex.c
index 3747e30ff64..9222b54af25 100644
--- a/src/mame/drivers/maxaflex.c
+++ b/src/mame/drivers/maxaflex.c
@@ -418,8 +418,8 @@ static MACHINE_CONFIG_START( a600xl, maxaflex_state )
MCFG_SCREEN_SIZE(HWIDTH*8, TOTAL_LINES_60HZ)
MCFG_SCREEN_UPDATE_STATIC(atari)
- MCFG_PALETTE_LENGTH(256)
- MCFG_PALETTE_INIT(atari)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_LEGACY(atari)
MCFG_DEFAULT_LAYOUT(layout_maxaflex)
MCFG_VIDEO_START(atari)
diff --git a/src/mame/drivers/maygayv1.c b/src/mame/drivers/maygayv1.c
index 99a1a4d5f09..61eb97d3d3c 100644
--- a/src/mame/drivers/maygayv1.c
+++ b/src/mame/drivers/maygayv1.c
@@ -323,7 +323,7 @@ UINT32 maygayv1_state::screen_update_maygayv1(screen_device &screen, bitmap_ind1
/* If screen output is disabled, fill with black */
if (!(VREG(VCR0) & VCR0_DEN))
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
@@ -465,7 +465,7 @@ void maygayv1_state::screen_eof_maygayv1(screen_device &screen, bool state)
for (i = 0; i < 16; ++i)
{
UINT16 entry = *palbase++;
- palette_set_color_rgb(machine(), entry & 0xf, pal4bit(entry >> 12), pal4bit(entry >> 8), pal4bit(entry >> 4));
+ m_palette->set_pen_color(entry & 0xf, pal4bit(entry >> 12), pal4bit(entry >> 8), pal4bit(entry >> 4));
}
}
}
@@ -1032,7 +1032,7 @@ static MACHINE_CONFIG_START( maygayv1, maygayv1_state )
MCFG_SCREEN_UPDATE_DRIVER(maygayv1_state, screen_update_maygayv1)
MCFG_SCREEN_VBLANK_DRIVER(maygayv1_state, screen_eof_maygayv1)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
MCFG_DUARTN68681_ADD("duart68681", DUART_CLOCK)
MCFG_DUARTN68681_IRQ_CALLBACK(WRITELINE(maygayv1_state, duart_irq_handler))
diff --git a/src/mame/drivers/mayumi.c b/src/mame/drivers/mayumi.c
index ac64f09fff1..9556e35a007 100644
--- a/src/mame/drivers/mayumi.c
+++ b/src/mame/drivers/mayumi.c
@@ -411,9 +411,7 @@ static MACHINE_CONFIG_START( mayumi, mayumi_state )
MCFG_SCREEN_UPDATE_DRIVER(mayumi_state, screen_update_mayumi)
MCFG_GFXDECODE_ADD("gfxdecode", mayumi)
- MCFG_PALETTE_LENGTH(256)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/mazerbla.c b/src/mame/drivers/mazerbla.c
index ffa9f3ba2ad..f6aee4eb5f0 100644
--- a/src/mame/drivers/mazerbla.c
+++ b/src/mame/drivers/mazerbla.c
@@ -221,7 +221,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(mazerbla);
UINT32 screen_update_mazerbla(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void screen_eof(screen_device &screen, bool state);
INTERRUPT_GEN_MEMBER(sound_interrupt);
@@ -251,7 +251,7 @@ public:
***************************************************************************/
-void mazerbla_state::palette_init()
+PALETTE_INIT_MEMBER(mazerbla_state, mazerbla)
{
static const int resistances_r[2] = { 4700, 2200 };
static const int resistances_gb[3] = { 10000, 4700, 2200 };
@@ -328,7 +328,7 @@ WRITE8_MEMBER(mazerbla_state::cfb_backgnd_color_w)
bit0 = BIT(data, 0);
b = combine_3_weights(m_weights_b, bit0, bit1, bit2);
- palette_set_color(machine(), 255, rgb_t(r, g, b));
+ m_palette->set_pen_color(255, rgb_t(r, g, b));
//logerror("background color (port 01) write=%02x\n",data);
}
}
@@ -674,7 +674,7 @@ READ8_MEMBER(mazerbla_state::vcu_set_clr_addr_r)
b = combine_3_weights(m_weights_b, bit0, bit1, bit2);
if ((x + y * 16) < 255)//keep color 255 free for use as background color
- palette_set_color(machine(), x + y * 16, rgb_t(r, g, b));
+ m_palette->set_pen_color(x + y * 16, rgb_t(r, g, b));
m_lookup_ram[lookup_offs + x + y * 16] = colour;
}
@@ -1491,7 +1491,7 @@ static MACHINE_CONFIG_START( mazerbla, mazerbla_state )
MCFG_CPU_VBLANK_INT_DRIVER("screen", mazerbla_state, irq0_line_hold)
/* synchronization forced on the fly */
- MCFG_MB_VCU_ADD("vcu",SOUND_CLOCK/4,vcu_interface)
+ MCFG_MB_VCU_ADD("vcu",SOUND_CLOCK/4,vcu_interface,"palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -1501,9 +1501,9 @@ static MACHINE_CONFIG_START( mazerbla, mazerbla_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
MCFG_SCREEN_UPDATE_DRIVER(mazerbla_state, screen_update_mazerbla)
- MCFG_PALETTE_LENGTH(256+1)
-
-
+ MCFG_PALETTE_ADD("palette", 256+1)
+ MCFG_PALETTE_INIT_OWNER(mazerbla_state, mazerbla)
+
/* sound hardware */
MACHINE_CONFIG_END
@@ -1528,7 +1528,7 @@ static MACHINE_CONFIG_START( greatgun, mazerbla_state )
*/
MCFG_CPU_VBLANK_INT_DRIVER("screen", mazerbla_state, irq0_line_hold)
- MCFG_MB_VCU_ADD("vcu",SOUND_CLOCK/4,vcu_interface)
+ MCFG_MB_VCU_ADD("vcu",SOUND_CLOCK/4,vcu_interface,"palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -1539,8 +1539,8 @@ static MACHINE_CONFIG_START( greatgun, mazerbla_state )
MCFG_SCREEN_UPDATE_DRIVER(mazerbla_state, screen_update_mazerbla)
MCFG_SCREEN_VBLANK_DRIVER(mazerbla_state, screen_eof)
- MCFG_PALETTE_LENGTH(256+1)
-
+ MCFG_PALETTE_ADD("palette", 256+1)
+ MCFG_PALETTE_INIT_OWNER(mazerbla_state, mazerbla)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/mcatadv.c b/src/mame/drivers/mcatadv.c
index 4c1e0577c65..35a9e150e49 100644
--- a/src/mame/drivers/mcatadv.c
+++ b/src/mame/drivers/mcatadv.c
@@ -182,7 +182,7 @@ static ADDRESS_MAP_START( mcatadv_map, AS_PROGRAM, 16, mcatadv_state )
AM_RANGE(0x400000, 0x401fff) AM_RAM_WRITE(mcatadv_videoram1_w) AM_SHARE("videoram1") // Tilemap 0
AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(mcatadv_videoram2_w) AM_SHARE("videoram2") // Tilemap 1
- AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(paletteram_xGGGGGRRRRRBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x602000, 0x602fff) AM_RAM // Bigger than needs to be?
AM_RANGE(0x700000, 0x707fff) AM_RAM AM_SHARE("spriteram") // Sprites, two halves for double buffering
@@ -452,7 +452,8 @@ static MACHINE_CONFIG_START( mcatadv, mcatadv_state )
MCFG_SCREEN_VBLANK_DRIVER(mcatadv_state, screen_eof_mcatadv)
MCFG_GFXDECODE_ADD("gfxdecode", mcatadv)
- MCFG_PALETTE_LENGTH(0x2000/2)
+ MCFG_PALETTE_ADD("palette", 0x2000/2)
+ MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
MCFG_WATCHDOG_TIME_INIT(attotime::from_seconds(3)) /* a guess, and certainly wrong */
diff --git a/src/mame/drivers/mcr.c b/src/mame/drivers/mcr.c
index 3df99672558..baa468803c7 100644
--- a/src/mame/drivers/mcr.c
+++ b/src/mame/drivers/mcr.c
@@ -765,8 +765,8 @@ static ADDRESS_MAP_START( cpu_90009_map, AS_PROGRAM, 8, mcr_state )
AM_RANGE(0x0000, 0x6fff) AM_ROM
AM_RANGE(0x7000, 0x77ff) AM_MIRROR(0x0800) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xf000, 0xf1ff) AM_MIRROR(0x0200) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xf400, 0xf41f) AM_MIRROR(0x03e0) AM_WRITE(paletteram_xxxxRRRRBBBBGGGG_byte_split_lo_w) AM_SHARE("paletteram")
- AM_RANGE(0xf800, 0xf81f) AM_MIRROR(0x03e0) AM_WRITE(paletteram_xxxxRRRRBBBBGGGG_byte_split_hi_w) AM_SHARE("paletteram2")
+ AM_RANGE(0xf400, 0xf41f) AM_MIRROR(0x03e0) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0xf800, 0xf81f) AM_MIRROR(0x03e0) AM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0xfc00, 0xffff) AM_RAM_WRITE(mcr_90009_videoram_w) AM_SHARE("videoram")
ADDRESS_MAP_END
@@ -1852,7 +1852,8 @@ static MACHINE_CONFIG_START( mcr_90009, mcr_state )
MCFG_SCREEN_UPDATE_DRIVER(mcr_state, screen_update_mcr)
MCFG_GFXDECODE_ADD("gfxdecode", mcr)
- MCFG_PALETTE_LENGTH(32)
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_FORMAT(xxxxRRRRBBBBGGGG)
MCFG_VIDEO_START_OVERRIDE(mcr_state,mcr)
@@ -1882,7 +1883,9 @@ static MACHINE_CONFIG_DERIVED( mcr_90010, mcr_90009 )
MCFG_CPU_IO_MAP(cpu_90010_portmap)
/* video hardware */
- MCFG_PALETTE_LENGTH(64)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 64)
+ MCFG_PALETTE_FORMAT(xxxxRRRRBBBBGGGG)
MACHINE_CONFIG_END
@@ -1900,7 +1903,9 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( mcr_91475, mcr_90010 )
/* video hardware */
- MCFG_PALETTE_LENGTH(128)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 128)
+ MCFG_PALETTE_FORMAT(xxxxRRRRBBBBGGGG)
/* sound hardware */
MCFG_SAMPLES_ADD("samples", journey_samples_interface)
diff --git a/src/mame/drivers/mcr3.c b/src/mame/drivers/mcr3.c
index 92470ae4b79..8f4bb0e0202 100644
--- a/src/mame/drivers/mcr3.c
+++ b/src/mame/drivers/mcr3.c
@@ -1326,7 +1326,7 @@ static MACHINE_CONFIG_START( mcrmono, mcr3_state )
MCFG_SCREEN_UPDATE_DRIVER(mcr3_state, screen_update_mcr3)
MCFG_GFXDECODE_ADD("gfxdecode", mcr3)
- MCFG_PALETTE_LENGTH(64)
+ MCFG_PALETTE_ADD("palette", 64)
MCFG_VIDEO_START_OVERRIDE(mcr3_state,mcrmono)
MACHINE_CONFIG_END
@@ -1376,9 +1376,10 @@ static MACHINE_CONFIG_DERIVED( mcrscroll, mcrmono )
MCFG_SCREEN_VISIBLE_AREA(0, 30*16-1, 0, 30*16-1)
MCFG_SCREEN_UPDATE_DRIVER(mcr3_state, screen_update_spyhunt)
MCFG_GFXDECODE_MODIFY("gfxdecode", spyhunt)
- MCFG_PALETTE_LENGTH(64+4)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 64+4)
- MCFG_PALETTE_INIT_OVERRIDE(mcr3_state,spyhunt)
+ MCFG_PALETTE_INIT_OWNER(mcr3_state,spyhunt)
MCFG_VIDEO_START_OVERRIDE(mcr3_state,spyhunt)
MACHINE_CONFIG_END
@@ -1445,9 +1446,9 @@ static MACHINE_CONFIG_START( spyhuntpr, mcr3_state )
MCFG_SCREEN_UPDATE_DRIVER(mcr3_state, screen_update_spyhuntpr)
MCFG_GFXDECODE_ADD("gfxdecode", spyhuntpr)
- MCFG_PALETTE_LENGTH(64+4)
+ MCFG_PALETTE_ADD("palette", 64+4)
- MCFG_PALETTE_INIT_OVERRIDE(mcr3_state,spyhunt)
+ MCFG_PALETTE_INIT_OWNER(mcr3_state,spyhunt)
MCFG_VIDEO_START_OVERRIDE(mcr3_state,spyhuntpr)
diff --git a/src/mame/drivers/mcr68.c b/src/mame/drivers/mcr68.c
index 5495a0325f7..0920c6235b1 100644
--- a/src/mame/drivers/mcr68.c
+++ b/src/mame/drivers/mcr68.c
@@ -1052,7 +1052,7 @@ static MACHINE_CONFIG_START( zwackery, mcr68_state )
MCFG_SCREEN_UPDATE_DRIVER(mcr68_state, screen_update_zwackery)
MCFG_GFXDECODE_ADD("gfxdecode", zwackery)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
MCFG_VIDEO_START_OVERRIDE(mcr68_state,zwackery)
@@ -1083,7 +1083,7 @@ static MACHINE_CONFIG_START( mcr68, mcr68_state )
MCFG_SCREEN_UPDATE_DRIVER(mcr68_state, screen_update_mcr68)
MCFG_GFXDECODE_ADD("gfxdecode", mcr68)
- MCFG_PALETTE_LENGTH(64)
+ MCFG_PALETTE_ADD("palette", 64)
MCFG_VIDEO_START_OVERRIDE(mcr68_state,mcr68)
diff --git a/src/mame/drivers/meadows.c b/src/mame/drivers/meadows.c
index dc6362add9e..3bb8c43d84f 100644
--- a/src/mame/drivers/meadows.c
+++ b/src/mame/drivers/meadows.c
@@ -313,19 +313,6 @@ INTERRUPT_GEN_MEMBER(meadows_state::audio_interrupt)
/*************************************
*
- * Palette init
- *
- *************************************/
-
-void meadows_state::palette_init()
-{
- palette_set_color(machine(), 0, rgb_t::black);
- palette_set_color(machine(), 1, rgb_t::white);
-}
-
-
-/*************************************
- *
* Main CPU memory handlers
*
*************************************/
@@ -655,7 +642,7 @@ static MACHINE_CONFIG_START( meadows, meadows_state )
MCFG_SCREEN_UPDATE_DRIVER(meadows_state, screen_update_meadows)
MCFG_GFXDECODE_ADD("gfxdecode", meadows)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -684,7 +671,7 @@ static MACHINE_CONFIG_START( minferno, meadows_state )
MCFG_SCREEN_UPDATE_DRIVER(meadows_state, screen_update_meadows)
MCFG_GFXDECODE_ADD("gfxdecode", minferno)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* audio hardware */
// TODO
@@ -712,7 +699,7 @@ static MACHINE_CONFIG_START( bowl3d, meadows_state )
MCFG_SCREEN_UPDATE_DRIVER(meadows_state, screen_update_meadows)
MCFG_GFXDECODE_ADD("gfxdecode", meadows)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/mediagx.c b/src/mame/drivers/mediagx.c
index 194abb14bfd..00014a93212 100644
--- a/src/mame/drivers/mediagx.c
+++ b/src/mame/drivers/mediagx.c
@@ -227,7 +227,7 @@ void mediagx_state::video_start()
int i;
for (i=0; i < 16; i++)
{
- palette_set_color(machine(), i, cga_palette[i]);
+ m_palette->set_pen_color(i, cga_palette[i]);
}
}
@@ -236,7 +236,7 @@ void mediagx_state::draw_char(bitmap_rgb32 &bitmap, const rectangle &cliprect, g
int i,j;
const UINT8 *dp;
int index = 0;
- const pen_t *pens = gfx->machine().pens;
+ const pen_t *pens = &m_palette->pen(0);
dp = gfx->get_data(ch);
@@ -888,7 +888,7 @@ static MACHINE_CONFIG_START( mediagx, mediagx_state )
MCFG_TIMER_DRIVER_ADD("sound_timer", mediagx_state, sound_timer_callback)
- MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map)
+ MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -898,7 +898,8 @@ static MACHINE_CONFIG_START( mediagx, mediagx_state )
MCFG_SCREEN_UPDATE_DRIVER(mediagx_state, screen_update_mediagx)
MCFG_GFXDECODE_ADD("gfxdecode", CGA)
- MCFG_PALETTE_LENGTH(256)
+
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/megaphx.c b/src/mame/drivers/megaphx.c
index 3e263a67234..5c968587402 100644
--- a/src/mame/drivers/megaphx.c
+++ b/src/mame/drivers/megaphx.c
@@ -193,7 +193,7 @@ static void megaphx_scanline(screen_device &screen, bitmap_rgb32 &bitmap, int sc
UINT16 *vram = &state->m_vram[(params->rowaddr << 8) & 0x3ff00];
UINT32 *dest = &bitmap.pix32(scanline);
- const pen_t *paldata = screen.machine().pens;
+ const pen_t *paldata = state->m_palette->pens();
int coladdr = params->coladdr;
int x;
@@ -456,11 +456,11 @@ static MACHINE_CONFIG_START( megaphx, megaphx_state )
MCFG_SCREEN_RAW_PARAMS(XTAL_40MHz/12, 424, 0, 338-1, 262, 0, 246-1)
MCFG_SCREEN_UPDATE_DEVICE("tms", tms34010_device, tms340x0_rgb32)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_GFXDECODE_ADD("gfxdecode", megaphx)
- MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map)
+ MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/megasys1.c b/src/mame/drivers/megasys1.c
index f939480be0d..171b07d9fb3 100644
--- a/src/mame/drivers/megasys1.c
+++ b/src/mame/drivers/megasys1.c
@@ -178,7 +178,7 @@ static ADDRESS_MAP_START( megasys1A_map, AS_PROGRAM, 16, megasys1_state )
AM_RANGE(0x080006, 0x080007) AM_READ_PORT("DSW")
AM_RANGE(0x080008, 0x080009) AM_READ(soundlatch2_word_r) /* from sound cpu */
AM_RANGE(0x084000, 0x0843ff) AM_RAM_WRITE(megasys1_vregs_A_w) AM_SHARE("vregs")
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x08e000, 0x08ffff) AM_RAM AM_SHARE("objectram")
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(megasys1_scrollram_0_w) AM_SHARE("scrollram.0")
AM_RANGE(0x094000, 0x097fff) AM_RAM_WRITE(megasys1_scrollram_1_w) AM_SHARE("scrollram.1")
@@ -255,7 +255,7 @@ static ADDRESS_MAP_START( megasys1B_map, AS_PROGRAM, 16, megasys1_state )
ADDRESS_MAP_GLOBAL_MASK(0xfffff)
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x044000, 0x0443ff) AM_RAM_WRITE(megasys1_vregs_A_w) AM_SHARE("vregs")
- AM_RANGE(0x048000, 0x0487ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x048000, 0x0487ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x04e000, 0x04ffff) AM_RAM AM_SHARE("objectram")
AM_RANGE(0x050000, 0x053fff) AM_RAM_WRITE(megasys1_scrollram_0_w) AM_SHARE("scrollram.0")
AM_RANGE(0x054000, 0x057fff) AM_RAM_WRITE(megasys1_scrollram_1_w) AM_SHARE("scrollram.1")
@@ -282,7 +282,7 @@ static ADDRESS_MAP_START( megasys1C_map, AS_PROGRAM, 16, megasys1_state )
AM_RANGE(0x0e0000, 0x0e3fff) AM_RAM_WRITE(megasys1_scrollram_0_w) AM_SHARE("scrollram.0")
AM_RANGE(0x0e8000, 0x0ebfff) AM_RAM_WRITE(megasys1_scrollram_1_w) AM_SHARE("scrollram.1")
AM_RANGE(0x0f0000, 0x0f3fff) AM_RAM_WRITE(megasys1_scrollram_2_w) AM_SHARE("scrollram.2")
- AM_RANGE(0x0f8000, 0x0f87ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0f8000, 0x0f87ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0d8000, 0x0d8001) AM_READWRITE(ip_select_r,ip_select_w)
AM_RANGE(0x1c0000, 0x1cffff) AM_MIRROR(0x30000) AM_RAM AM_SHARE("ram") //0x1f****, Cybattler reads attract mode inputs at 0x1d****
ADDRESS_MAP_END
@@ -303,7 +303,7 @@ static ADDRESS_MAP_START( megasys1D_map, AS_PROGRAM, 16, megasys1_state )
AM_RANGE(0x0ca000, 0x0cbfff) AM_RAM AM_SHARE("objectram")
AM_RANGE(0x0d0000, 0x0d3fff) AM_RAM_WRITE(megasys1_scrollram_1_w) AM_SHARE("scrollram.1")
AM_RANGE(0x0d4000, 0x0d7fff) AM_RAM_WRITE(megasys1_scrollram_2_w) AM_SHARE("scrollram.2")
- AM_RANGE(0x0d8000, 0x0d87ff) AM_MIRROR(0x3000) AM_RAM_WRITE(paletteram_RRRRRGGGGGBBBBBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0d8000, 0x0d87ff) AM_MIRROR(0x3000) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0e0000, 0x0e0001) AM_READ_PORT("DSW")
AM_RANGE(0x0e8000, 0x0ebfff) AM_RAM_WRITE(megasys1_scrollram_0_w) AM_SHARE("scrollram.0")
AM_RANGE(0x0f0000, 0x0f0001) AM_READ_PORT("SYSTEM")
@@ -1477,9 +1477,9 @@ static MACHINE_CONFIG_START( system_A, megasys1_state )
MCFG_SCREEN_VBLANK_DRIVER(megasys1_state, screen_eof_megasys1)
MCFG_GFXDECODE_ADD("gfxdecode", ABC)
- MCFG_PALETTE_LENGTH(1024)
-
- MCFG_PALETTE_INIT_OVERRIDE(megasys1_state,megasys1)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
+ MCFG_PALETTE_INIT_OWNER(megasys1_state,megasys1)
MCFG_VIDEO_START_OVERRIDE(megasys1_state,megasys1)
/* sound hardware */
@@ -1537,9 +1537,9 @@ static MACHINE_CONFIG_START( system_Bbl, megasys1_state )
MCFG_SCREEN_VBLANK_DRIVER(megasys1_state, screen_eof_megasys1)
MCFG_GFXDECODE_ADD("gfxdecode", ABC)
- MCFG_PALETTE_LENGTH(1024)
-
- MCFG_PALETTE_INIT_OVERRIDE(megasys1_state,megasys1)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
+ MCFG_PALETTE_INIT_OWNER(megasys1_state,megasys1)
MCFG_VIDEO_START_OVERRIDE(megasys1_state,megasys1)
/* sound hardware */
@@ -1609,9 +1609,9 @@ static MACHINE_CONFIG_START( system_D, megasys1_state )
MCFG_SCREEN_VBLANK_DRIVER(megasys1_state, screen_eof_megasys1)
MCFG_GFXDECODE_ADD("gfxdecode", ABC)
- MCFG_PALETTE_LENGTH(1024)
-
- MCFG_PALETTE_INIT_OVERRIDE(megasys1_state,megasys1)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRRGGGGGBBBBBx)
+ MCFG_PALETTE_INIT_OWNER(megasys1_state,megasys1)
MCFG_VIDEO_START_OVERRIDE(megasys1_state,megasys1)
/* sound hardware */
@@ -1668,7 +1668,8 @@ static MACHINE_CONFIG_START( system_Z, megasys1_state )
MCFG_SCREEN_UPDATE_DRIVER(megasys1_state, screen_update_megasys1)
MCFG_GFXDECODE_ADD("gfxdecode", Z)
- MCFG_PALETTE_LENGTH(768)
+ MCFG_PALETTE_ADD("palette", 768)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(megasys1_state,megasys1)
diff --git a/src/mame/drivers/megatech.c b/src/mame/drivers/megatech.c
index 9d61c38ed88..db0a1565cbb 100644
--- a/src/mame/drivers/megatech.c
+++ b/src/mame/drivers/megatech.c
@@ -521,8 +521,6 @@ static MACHINE_CONFIG_START( megatech, mtech_state )
SEGA315_5124_HEIGHT_NTSC, SEGA315_5124_TBORDER_START + SEGA315_5124_NTSC_224_TBORDER_HEIGHT, SEGA315_5124_TBORDER_START + SEGA315_5124_NTSC_224_TBORDER_HEIGHT + 224)
MCFG_SCREEN_UPDATE_DRIVER(mtech_state, screen_update_megatech_menu)
- MCFG_PALETTE_LENGTH(SEGA315_5124_PALETTE_SIZE)
-
MCFG_SEGA315_5246_ADD("vdp1", _vdp_intf)
MCFG_SEGA315_5246_SET_SCREEN("menu")
diff --git a/src/mame/drivers/megazone.c b/src/mame/drivers/megazone.c
index 7ee45690c0d..a546956fb72 100644
--- a/src/mame/drivers/megazone.c
+++ b/src/mame/drivers/megazone.c
@@ -270,8 +270,8 @@ static MACHINE_CONFIG_START( megazone, megazone_state )
MCFG_SCREEN_UPDATE_DRIVER(megazone_state, screen_update_megazone)
MCFG_GFXDECODE_ADD("gfxdecode", megazone)
- MCFG_PALETTE_LENGTH(16*16+16*16)
-
+ MCFG_PALETTE_ADD("palette", 16*16+16*16)
+ MCFG_PALETTE_INIT_OWNER(megazone_state, megazone)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/meijinsn.c b/src/mame/drivers/meijinsn.c
index e0670c6b6c2..54f770f7c43 100644
--- a/src/mame/drivers/meijinsn.c
+++ b/src/mame/drivers/meijinsn.c
@@ -95,7 +95,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(meijinsn);
UINT32 screen_update_meijinsn(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(meijinsn_interrupt);
};
@@ -252,7 +252,7 @@ void meijinsn_state::video_start()
{
}
-void meijinsn_state::palette_init()
+PALETTE_INIT_MEMBER(meijinsn_state, meijinsn)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -266,7 +266,7 @@ void meijinsn_state::palette_init()
3, resistances_rg, weights_g, 0, 1000+1000,
2, resistances_b, weights_b, 0, 1000+1000);
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -287,7 +287,7 @@ void meijinsn_state::palette_init()
bit1 = BIT(color_prom[i], 7);
b = combine_2_weights(weights_b, bit0, bit1);
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -371,8 +371,8 @@ static MACHINE_CONFIG_START( meijinsn, meijinsn_state )
MCFG_SCREEN_VISIBLE_AREA(12, 243, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(meijinsn_state, screen_update_meijinsn)
- MCFG_PALETTE_LENGTH(32)
-
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(meijinsn_state, meijinsn)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/meritm.c b/src/mame/drivers/meritm.c
index 88f15278983..480cdf82c51 100644
--- a/src/mame/drivers/meritm.c
+++ b/src/mame/drivers/meritm.c
@@ -355,7 +355,7 @@ UINT32 meritm_state::screen_update_meritm(screen_device &screen, bitmap_ind16 &b
popmessage("Layer 1 %sabled",m_layer1_enabled ? "en" : "dis");
}
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
if ( m_layer0_enabled )
{
@@ -1120,7 +1120,7 @@ static MACHINE_CONFIG_START( meritm_crt250, meritm_state )
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_DRIVER(meritm_state, screen_update_meritm)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/mermaid.c b/src/mame/drivers/mermaid.c
index e1f5fbe5bd4..87eea536e64 100644
--- a/src/mame/drivers/mermaid.c
+++ b/src/mame/drivers/mermaid.c
@@ -450,8 +450,8 @@ static MACHINE_CONFIG_START( mermaid, mermaid_state )
MCFG_SCREEN_VBLANK_DRIVER(mermaid_state, screen_eof_mermaid)
MCFG_GFXDECODE_ADD("gfxdecode", mermaid)
- MCFG_PALETTE_LENGTH(4*16+2*2)
-
+ MCFG_PALETTE_ADD("palette", 4*16+2*2)
+ MCFG_PALETTE_INIT_OWNER(mermaid_state, mermaid)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -469,7 +469,8 @@ static MACHINE_CONFIG_DERIVED( rougien, mermaid )
MCFG_DEVICE_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(rougien_map)
- MCFG_PALETTE_INIT_OVERRIDE(mermaid_state,rougien)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(mermaid_state,rougien)
MCFG_SOUND_ADD("adpcm", MSM5205, 384000)
MCFG_SOUND_CONFIG(msm5205_config)
diff --git a/src/mame/drivers/metalmx.c b/src/mame/drivers/metalmx.c
index 60e76f69e64..fe4b36e18f6 100644
--- a/src/mame/drivers/metalmx.c
+++ b/src/mame/drivers/metalmx.c
@@ -748,9 +748,7 @@ static MACHINE_CONFIG_START( metalmx, metalmx_state )
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 383)
MCFG_SCREEN_UPDATE_DRIVER(metalmx_state, screen_update_metalmx)
- MCFG_PALETTE_LENGTH(65536)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRRR_GGGGGG_BBBBB)
-
+ MCFG_PALETTE_ADD_RRRRRGGGGGGBBBBB("palette")
MCFG_FRAGMENT_ADD(cage)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/metlclsh.c b/src/mame/drivers/metlclsh.c
index 175da2a41a1..11bcc7ad03c 100644
--- a/src/mame/drivers/metlclsh.c
+++ b/src/mame/drivers/metlclsh.c
@@ -65,8 +65,8 @@ static ADDRESS_MAP_START( metlclsh_master_map, AS_PROGRAM, 8, metlclsh_state )
AM_RANGE(0xc080, 0xc080) AM_WRITENOP // ? 0
AM_RANGE(0xc0c2, 0xc0c2) AM_WRITE(metlclsh_cause_irq) // cause irq on cpu #2
AM_RANGE(0xc0c3, 0xc0c3) AM_WRITE(metlclsh_ack_nmi) // nmi ack
-/**/AM_RANGE(0xc800, 0xc82f) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_lo_w) AM_SHARE("paletteram")
-/**/AM_RANGE(0xcc00, 0xcc2f) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_hi_w) AM_SHARE("paletteram2")
+/**/AM_RANGE(0xc800, 0xc82f) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+/**/AM_RANGE(0xcc00, 0xcc2f) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0xd000, 0xd001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
/**/AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(metlclsh_fgram_w) AM_SHARE("fgram")
AM_RANGE(0xe000, 0xe001) AM_DEVWRITE("ym2", ym3526_device, write)
@@ -289,8 +289,8 @@ static MACHINE_CONFIG_START( metlclsh, metlclsh_state )
MCFG_SCREEN_UPDATE_DRIVER(metlclsh_state, screen_update_metlclsh)
MCFG_GFXDECODE_ADD("gfxdecode", metlclsh)
- MCFG_PALETTE_LENGTH(3 * 16)
-
+ MCFG_PALETTE_ADD("palette", 3 * 16)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/metro.c b/src/mame/drivers/metro.c
index 36a8ceada05..907960e9a7f 100644
--- a/src/mame/drivers/metro.c
+++ b/src/mame/drivers/metro.c
@@ -775,7 +775,7 @@ static ADDRESS_MAP_START( balcube_map, AS_PROGRAM, 16, metro_state )
AM_RANGE(0x640000, 0x65ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2
AM_RANGE(0x660000, 0x66ffff) AM_READ(metro_bankedrom_r) // Banked ROM
AM_RANGE(0x670000, 0x671fff) AM_RAM // ???
- AM_RANGE(0x672000, 0x673fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x672000, 0x673fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x674000, 0x674fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0x678000, 0x6787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set
AM_RANGE(0x678840, 0x67884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter
@@ -804,7 +804,7 @@ static ADDRESS_MAP_START( daitoa_map, AS_PROGRAM, 16, metro_state )
AM_RANGE(0x140000, 0x15ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2
AM_RANGE(0x160000, 0x16ffff) AM_READ(metro_bankedrom_r) // Banked ROM
AM_RANGE(0x170000, 0x171fff) AM_RAM // ???
- AM_RANGE(0x172000, 0x173fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x172000, 0x173fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x174000, 0x174fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0x178000, 0x1787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set
AM_RANGE(0x178840, 0x17884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter
@@ -846,7 +846,7 @@ static ADDRESS_MAP_START( bangball_map, AS_PROGRAM, 16, metro_state )
AM_RANGE(0xe40000, 0xe5ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2
AM_RANGE(0xe60000, 0xe6ffff) AM_READ(metro_bankedrom_r) // Banked ROM
AM_RANGE(0xe70000, 0xe71fff) AM_RAM // ???
- AM_RANGE(0xe72000, 0xe73fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0xe72000, 0xe73fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0xe74000, 0xe74fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0xe78000, 0xe787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set
AM_RANGE(0xe78840, 0xe7884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter
@@ -874,7 +874,7 @@ static ADDRESS_MAP_START( batlbubl_map, AS_PROGRAM, 16, metro_state )
AM_RANGE(0x140000, 0x15ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2
AM_RANGE(0x160000, 0x16ffff) AM_READ(metro_bankedrom_r) // Banked ROM
AM_RANGE(0x170000, 0x171fff) AM_RAM // ???
- AM_RANGE(0x172000, 0x173fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x172000, 0x173fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x174000, 0x174fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0x178000, 0x1787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set
AM_RANGE(0x178840, 0x17884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter
@@ -910,7 +910,7 @@ static ADDRESS_MAP_START( msgogo_map, AS_PROGRAM, 16, metro_state )
AM_RANGE(0x140000, 0x15ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2
AM_RANGE(0x160000, 0x16ffff) AM_READ(metro_bankedrom_r) // Banked ROM
AM_RANGE(0x170000, 0x171fff) AM_RAM // ???
- AM_RANGE(0x172000, 0x173fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x172000, 0x173fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x174000, 0x174fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0x178000, 0x1787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set
AM_RANGE(0x178840, 0x17884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter
@@ -944,7 +944,7 @@ static ADDRESS_MAP_START( daitorid_map, AS_PROGRAM, 16, metro_state )
AM_RANGE(0x440000, 0x45ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2
AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r) // Banked ROM
AM_RANGE(0x470000, 0x471fff) AM_RAM // ???
- AM_RANGE(0x472000, 0x473fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x472000, 0x473fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x474000, 0x474fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set
AM_RANGE(0x478840, 0x47884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter
@@ -979,7 +979,7 @@ static ADDRESS_MAP_START( dharma_map, AS_PROGRAM, 16, metro_state )
AM_RANGE(0x840000, 0x85ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2
AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r) // Banked ROM
AM_RANGE(0x870000, 0x871fff) AM_RAM // ???
- AM_RANGE(0x872000, 0x873fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x872000, 0x873fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x874000, 0x874fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set
AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter
@@ -1030,7 +1030,7 @@ static ADDRESS_MAP_START( karatour_map, AS_PROGRAM, 16, metro_state )
AM_RANGE(0x40000c, 0x40000d) AM_READ_PORT("IN2") //
AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r) // Banked ROM
AM_RANGE(0x870000, 0x871fff) AM_RAM // ???
- AM_RANGE(0x872000, 0x873fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x872000, 0x873fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x874000, 0x874fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0x875000, 0x875fff) AM_READWRITE(karatour_vram_0_r, karatour_vram_0_w) // Layer 0 (Part of)
AM_RANGE(0x876000, 0x876fff) AM_READWRITE(karatour_vram_1_r, karatour_vram_1_w) // Layer 1 (Part of)
@@ -1062,7 +1062,7 @@ static ADDRESS_MAP_START( kokushi_map, AS_PROGRAM, 16, metro_state )
AM_RANGE(0x700000, 0x70ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored)
AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r) // Banked ROM
AM_RANGE(0x870000, 0x871fff) AM_RAM // ???
- AM_RANGE(0x872000, 0x873fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x872000, 0x873fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x874000, 0x874fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0x875000, 0x875fff) AM_READWRITE(karatour_vram_0_r, karatour_vram_0_w) // Layer 0 (Part of)
AM_RANGE(0x876000, 0x876fff) AM_READWRITE(karatour_vram_1_r, karatour_vram_1_w) // Layer 1 (Part of)
@@ -1098,7 +1098,7 @@ static ADDRESS_MAP_START( lastfort_map, AS_PROGRAM, 16, metro_state )
AM_RANGE(0x840000, 0x85ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2
AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r) // Banked ROM
AM_RANGE(0x870000, 0x871fff) AM_RAM // ???
- AM_RANGE(0x872000, 0x873fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x872000, 0x873fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x874000, 0x874fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set
AM_RANGE(0x878800, 0x878813) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers
@@ -1139,7 +1139,7 @@ static ADDRESS_MAP_START( lastforg_map, AS_PROGRAM, 16, metro_state )
AM_RANGE(0x8c0000, 0x8dffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2
AM_RANGE(0x8e0000, 0x8effff) AM_READ(metro_bankedrom_r) // Banked ROM
AM_RANGE(0x8f0000, 0x8f1fff) AM_RAM // ???
- AM_RANGE(0x8f2000, 0x8f3fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x8f2000, 0x8f3fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x8f4000, 0x8f4fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0x8f8000, 0x8f87ff) AM_RAM AM_SHARE("tiletable") // Tiles Set
AM_RANGE(0x8f8800, 0x8f8813) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers
@@ -1225,7 +1225,7 @@ static ADDRESS_MAP_START( gakusai_map, AS_PROGRAM, 16, metro_state )
AM_RANGE(0x240000, 0x25ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2
AM_RANGE(0x260000, 0x26ffff) AM_READ(metro_bankedrom_r) // Banked ROM
AM_RANGE(0x270000, 0x271fff) AM_RAM // ???
- AM_RANGE(0x272000, 0x273fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x272000, 0x273fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x274000, 0x274fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0x278000, 0x2787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set
AM_RANGE(0x27880e, 0x27880f) AM_RAM AM_SHARE("screenctrl") // Screen Control
@@ -1263,7 +1263,7 @@ static ADDRESS_MAP_START( gakusai2_map, AS_PROGRAM, 16, metro_state )
AM_RANGE(0x640000, 0x65ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2
AM_RANGE(0x660000, 0x66ffff) AM_READ(metro_bankedrom_r) // Banked ROM
AM_RANGE(0x670000, 0x671fff) AM_RAM // ???
- AM_RANGE(0x672000, 0x673fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x672000, 0x673fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x674000, 0x674fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0x675000, 0x675fff) AM_RAM // Sprites?
AM_RANGE(0x678000, 0x6787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set
@@ -1333,7 +1333,7 @@ static ADDRESS_MAP_START( dokyusp_map, AS_PROGRAM, 16, metro_state )
AM_RANGE(0x240000, 0x25ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2
AM_RANGE(0x260000, 0x26ffff) AM_READ(metro_bankedrom_r) // Banked ROM
AM_RANGE(0x270000, 0x271fff) AM_RAM // ???
- AM_RANGE(0x272000, 0x273fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x272000, 0x273fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x274000, 0x274fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0x278000, 0x2787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set
AM_RANGE(0x278810, 0x27881f) AM_WRITEONLY AM_SHARE("irq_levels") // IRQ Levels
@@ -1372,7 +1372,7 @@ static ADDRESS_MAP_START( dokyusei_map, AS_PROGRAM, 16, metro_state )
AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r) // Banked ROM
AM_RANGE(0x460000, 0x46ffff) AM_WRITENOP // DSW Selection
AM_RANGE(0x470000, 0x471fff) AM_RAM // ???
- AM_RANGE(0x472000, 0x473fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x472000, 0x473fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x474000, 0x474fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set
AM_RANGE(0x47880e, 0x47880f) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control
@@ -1412,7 +1412,7 @@ static ADDRESS_MAP_START( pangpoms_map, AS_PROGRAM, 16, metro_state )
AM_RANGE(0x440000, 0x45ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2
AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r) // Banked ROM
AM_RANGE(0x470000, 0x471fff) AM_RAM // ???
- AM_RANGE(0x472000, 0x473fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x472000, 0x473fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x474000, 0x474fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set
AM_RANGE(0x478800, 0x478813) AM_RAM AM_SHARE("videoregs") // Video Registers
@@ -1455,7 +1455,7 @@ static ADDRESS_MAP_START( poitto_map, AS_PROGRAM, 16, metro_state )
AM_RANGE(0xc40000, 0xc5ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2
AM_RANGE(0xc60000, 0xc6ffff) AM_READ(metro_bankedrom_r) // Banked ROM
AM_RANGE(0xc70000, 0xc71fff) AM_RAM // ???
- AM_RANGE(0xc72000, 0xc73fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0xc72000, 0xc73fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0xc74000, 0xc74fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0xc78000, 0xc787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set
AM_RANGE(0xc78800, 0xc78813) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers
@@ -1491,7 +1491,7 @@ static ADDRESS_MAP_START( skyalert_map, AS_PROGRAM, 16, metro_state )
AM_RANGE(0x840000, 0x85ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2
AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r) // Banked ROM
AM_RANGE(0x870000, 0x871fff) AM_RAM // ???
- AM_RANGE(0x872000, 0x873fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x872000, 0x873fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x874000, 0x874fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set
AM_RANGE(0x878800, 0x878813) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers
@@ -1526,7 +1526,7 @@ static ADDRESS_MAP_START( pururun_map, AS_PROGRAM, 16, metro_state )
AM_RANGE(0xc40000, 0xc5ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2
AM_RANGE(0xc60000, 0xc6ffff) AM_READ(metro_bankedrom_r) // Banked ROM
AM_RANGE(0xc70000, 0xc71fff) AM_RAM // ???
- AM_RANGE(0xc72000, 0xc73fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0xc72000, 0xc73fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0xc74000, 0xc74fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0xc78000, 0xc787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set
AM_RANGE(0xc78840, 0xc7884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter
@@ -1560,7 +1560,7 @@ static ADDRESS_MAP_START( toride2g_map, AS_PROGRAM, 16, metro_state )
AM_RANGE(0xc40000, 0xc5ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2
AM_RANGE(0xc60000, 0xc6ffff) AM_READ(metro_bankedrom_r) // Banked ROM
AM_RANGE(0xc70000, 0xc71fff) AM_RAM // ???
- AM_RANGE(0xc72000, 0xc73fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0xc72000, 0xc73fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0xc74000, 0xc74fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0xc78000, 0xc787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set
AM_RANGE(0xc78840, 0xc7884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter
@@ -1622,7 +1622,7 @@ static ADDRESS_MAP_START( blzntrnd_map, AS_PROGRAM, 16, metro_state )
AM_RANGE(0x260000, 0x26ffff) AM_READ(metro_bankedrom_r) // Banked ROM
AM_RANGE(0x260000, 0x26ffff) AM_WRITENOP // ??????
AM_RANGE(0x270000, 0x271fff) AM_RAM // ???
- AM_RANGE(0x272000, 0x273fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x272000, 0x273fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x274000, 0x274fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0x278000, 0x2787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set
AM_RANGE(0x278860, 0x27886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window
@@ -1664,7 +1664,7 @@ static ADDRESS_MAP_START( mouja_map, AS_PROGRAM, 16, metro_state )
AM_RANGE(0x420000, 0x43ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1") // Layer 1
AM_RANGE(0x440000, 0x45ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2
AM_RANGE(0x470000, 0x471fff) AM_RAM // ???
- AM_RANGE(0x472000, 0x473fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x472000, 0x473fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x474000, 0x474fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set
AM_RANGE(0x47880e, 0x47880f) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control
@@ -1752,7 +1752,7 @@ static ADDRESS_MAP_START( puzzlet_map, AS_PROGRAM, 16, metro_state )
AM_RANGE(0x770000, 0x771fff) AM_RAM // ???
// AM_RANGE(0x772000, 0x773fff) AM_RAM
- AM_RANGE(0x772000, 0x773fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x772000, 0x773fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x775000, 0x775fff) AM_RAM_WRITE(vram_0_clr_w)
AM_RANGE(0x776000, 0x776fff) AM_RAM_WRITE(vram_1_clr_w)
@@ -1862,7 +1862,7 @@ static ADDRESS_MAP_START( vmetal_map, AS_PROGRAM, 16, metro_state )
AM_RANGE(0x140000, 0x15ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2
AM_RANGE(0x160000, 0x16ffff) AM_READ(metro_bankedrom_r) // Banked ROM
AM_RANGE(0x170000, 0x171fff) AM_RAM // ???
- AM_RANGE(0x172000, 0x173fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x172000, 0x173fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x174000, 0x174fff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0x178000, 0x1787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set
AM_RANGE(0x178840, 0x17884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter
@@ -3571,7 +3571,8 @@ static MACHINE_CONFIG_START( balcube, metro_state )
MCFG_GFXDECODE_ADD("gfxdecode", i4220)
MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220_dx_tmap)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -3604,7 +3605,8 @@ static MACHINE_CONFIG_START( daitoa, metro_state )
MCFG_GFXDECODE_ADD("gfxdecode", i4220)
MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220_dx_tmap)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -3637,7 +3639,8 @@ static MACHINE_CONFIG_START( msgogo, metro_state )
MCFG_GFXDECODE_ADD("gfxdecode", i4220)
MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220_dx_tmap)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -3670,7 +3673,8 @@ static MACHINE_CONFIG_START( bangball, metro_state )
MCFG_GFXDECODE_ADD("gfxdecode", i4220)
MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220_dx_tmap)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -3703,7 +3707,8 @@ static MACHINE_CONFIG_START( batlbubl, metro_state )
MCFG_GFXDECODE_ADD("gfxdecode", i4220)
MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220_dx_tmap)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -3740,7 +3745,8 @@ static MACHINE_CONFIG_START( daitorid, metro_state )
MCFG_GFXDECODE_ADD("gfxdecode", i4220)
MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220_dx_tmap)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -3782,7 +3788,8 @@ static MACHINE_CONFIG_START( dharma, metro_state )
MCFG_GFXDECODE_ADD("gfxdecode", i4220)
MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -3823,7 +3830,8 @@ static MACHINE_CONFIG_START( karatour, metro_state )
MCFG_GFXDECODE_ADD("gfxdecode", i4100)
MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4100)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -3864,7 +3872,8 @@ static MACHINE_CONFIG_START( 3kokushi, metro_state )
MCFG_GFXDECODE_ADD("gfxdecode", i4220)
MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -3905,7 +3914,8 @@ static MACHINE_CONFIG_START( lastfort, metro_state )
MCFG_GFXDECODE_ADD("gfxdecode", i4100)
MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4100)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -3945,7 +3955,8 @@ static MACHINE_CONFIG_START( lastforg, metro_state )
MCFG_GFXDECODE_ADD("gfxdecode", i4100)
MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4100)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -3979,7 +3990,8 @@ static MACHINE_CONFIG_START( dokyusei, metro_state )
MCFG_GFXDECODE_ADD("gfxdecode", i4300)
MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4300)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -4014,7 +4026,8 @@ static MACHINE_CONFIG_START( dokyusp, metro_state )
MCFG_GFXDECODE_ADD("gfxdecode", i4300)
MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4300)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -4050,7 +4063,8 @@ static MACHINE_CONFIG_START( gakusai, metro_state )
MCFG_GFXDECODE_ADD("gfxdecode", i4300)
MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4300)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -4086,7 +4100,8 @@ static MACHINE_CONFIG_START( gakusai2, metro_state )
MCFG_GFXDECODE_ADD("gfxdecode", i4300)
MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4300)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -4127,7 +4142,8 @@ static MACHINE_CONFIG_START( pangpoms, metro_state )
MCFG_GFXDECODE_ADD("gfxdecode", i4100)
MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4100)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -4168,7 +4184,8 @@ static MACHINE_CONFIG_START( poitto, metro_state )
MCFG_GFXDECODE_ADD("gfxdecode", i4100)
MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4100)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -4209,7 +4226,8 @@ static MACHINE_CONFIG_START( pururun, metro_state )
MCFG_GFXDECODE_ADD("gfxdecode", i4220)
MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -4251,7 +4269,8 @@ static MACHINE_CONFIG_START( skyalert, metro_state )
MCFG_GFXDECODE_ADD("gfxdecode", i4100)
MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4100)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -4292,7 +4311,8 @@ static MACHINE_CONFIG_START( toride2g, metro_state )
MCFG_GFXDECODE_ADD("gfxdecode", i4220)
MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -4327,7 +4347,8 @@ static MACHINE_CONFIG_START( mouja, metro_state )
MCFG_GFXDECODE_ADD("gfxdecode", i4300)
MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4300)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -4362,7 +4383,8 @@ static MACHINE_CONFIG_START( vmetal, metro_state )
MCFG_GFXDECODE_ADD("gfxdecode", i4220)
MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220_dx_sprite)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -4409,7 +4431,8 @@ static MACHINE_CONFIG_START( blzntrnd, metro_state )
MCFG_GFXDECODE_ADD("gfxdecode", blzntrnd)
MCFG_VIDEO_START_OVERRIDE(metro_state,blzntrnd)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
MCFG_K053936_ADD("k053936", blzntrnd_k053936_intf)
@@ -4456,7 +4479,8 @@ static MACHINE_CONFIG_START( gstrik2, metro_state )
MCFG_GFXDECODE_ADD("gfxdecode", gstrik2)
MCFG_VIDEO_START_OVERRIDE(metro_state,gstrik2)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
MCFG_K053936_ADD("k053936", gstrik2_k053936_intf)
@@ -4493,7 +4517,8 @@ static MACHINE_CONFIG_START( puzzlet, metro_state )
MCFG_GFXDECODE_ADD("gfxdecode", i4300)
MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4300)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/mexico86.c b/src/mame/drivers/mexico86.c
index 83741699a11..a32790009ed 100644
--- a/src/mame/drivers/mexico86.c
+++ b/src/mame/drivers/mexico86.c
@@ -489,9 +489,7 @@ static MACHINE_CONFIG_START( mexico86, mexico86_state )
MCFG_SCREEN_UPDATE_DRIVER(mexico86_state, screen_update_mexico86)
MCFG_GFXDECODE_ADD("gfxdecode", mexico86)
- MCFG_PALETTE_LENGTH(256)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/meyc8088.c b/src/mame/drivers/meyc8088.c
index 261a83248a0..3cb85102e99 100644
--- a/src/mame/drivers/meyc8088.c
+++ b/src/mame/drivers/meyc8088.c
@@ -66,7 +66,7 @@ public:
DECLARE_WRITE8_MEMBER(meyc8088_common_w);
DECLARE_WRITE_LINE_MEMBER(meyc8088_sound_out);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(meyc8088);
UINT32 screen_update_meyc8088(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof_meyc8088(screen_device &screen, bool state);
TIMER_DEVICE_CALLBACK_MEMBER(heartbeat_callback);
@@ -119,13 +119,13 @@ static const res_net_info meyc8088_net_info =
}
};
-void meyc8088_state::palette_init()
+PALETTE_INIT_MEMBER(meyc8088_state, meyc8088)
{
const UINT8 *color_prom = memregion("proms")->base();
rgb_t *rgb;
rgb = compute_res_net_all(machine(), color_prom, &meyc8088_decode_info, &meyc8088_net_info);
- palette_set_colors(machine(), 0, rgb, 32);
+ palette.set_pen_colors(0, rgb, 32);
auto_free(machine(), rgb);
}
@@ -392,7 +392,8 @@ static MACHINE_CONFIG_START( meyc8088, meyc8088_state )
MCFG_SCREEN_UPDATE_DRIVER(meyc8088_state, screen_update_meyc8088)
MCFG_SCREEN_VBLANK_DRIVER(meyc8088_state, screen_eof_meyc8088)
- MCFG_PALETTE_LENGTH(32)
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(meyc8088_state, meyc8088)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/mgolf.c b/src/mame/drivers/mgolf.c
index 6885c9060d3..10de6aad8ee 100644
--- a/src/mame/drivers/mgolf.c
+++ b/src/mame/drivers/mgolf.c
@@ -46,7 +46,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(mgolf);
UINT32 screen_update_mgolf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(interrupt_callback);
void update_plunger( );
@@ -88,14 +88,14 @@ UINT32 mgolf_state::screen_update_mgolf(screen_device &screen, bitmap_ind16 &bit
/* draw sprites */
for (i = 0; i < 2; i++)
{
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
m_video_ram[0x399 + 4 * i],
i,
0, 0,
m_video_ram[0x390 + 2 * i] - 7,
m_video_ram[0x398 + 4 * i] - 16, 0);
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
m_video_ram[0x39b + 4 * i],
i,
0, 0,
@@ -283,12 +283,12 @@ static INPUT_PORTS_START( mgolf )
INPUT_PORTS_END
-void mgolf_state::palette_init()
+PALETTE_INIT_MEMBER(mgolf_state, mgolf)
{
- palette_set_color(machine(), 0, rgb_t(0x80, 0x80, 0x80));
- palette_set_color(machine(), 1, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), 2, rgb_t(0x80, 0x80, 0x80));
- palette_set_color(machine(), 3, rgb_t(0xff, 0xff, 0xff));
+ palette.set_pen_color(0, rgb_t(0x80, 0x80, 0x80));
+ palette.set_pen_color(1, rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(2, rgb_t(0x80, 0x80, 0x80));
+ palette.set_pen_color(3, rgb_t(0xff, 0xff, 0xff));
}
static const gfx_layout tile_layout =
@@ -360,8 +360,8 @@ static MACHINE_CONFIG_START( mgolf, mgolf_state )
MCFG_SCREEN_UPDATE_DRIVER(mgolf_state, screen_update_mgolf)
MCFG_GFXDECODE_ADD("gfxdecode", mgolf)
- MCFG_PALETTE_LENGTH(4)
-
+ MCFG_PALETTE_ADD("palette", 4)
+ MCFG_PALETTE_INIT_OWNER(mgolf_state, mgolf)
/* sound hardware */
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/micro3d.c b/src/mame/drivers/micro3d.c
index 2dc48c9ab45..c8e85a7144f 100644
--- a/src/mame/drivers/micro3d.c
+++ b/src/mame/drivers/micro3d.c
@@ -354,7 +354,7 @@ static MACHINE_CONFIG_START( micro3d, micro3d_state )
MCFG_NVRAM_ADD_0FILL("nvram")
MCFG_QUANTUM_TIME(attotime::from_hz(3000))
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_40MHz/8*4, 192*4, 0, 144*4, 434, 0, 400)
diff --git a/src/mame/drivers/midas.c b/src/mame/drivers/midas.c
index d94b8ddc244..e9d43dd2940 100644
--- a/src/mame/drivers/midas.c
+++ b/src/mame/drivers/midas.c
@@ -182,7 +182,7 @@ void midas_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
UINT16 code = codes[y*2];
UINT16 attr = codes[y*2+1];
- m_gfxdecode->gfx(0)->zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->zoom_transpen(m_palette,bitmap,cliprect,
code,
attr >> 8,
attr & 1, attr & 2,
@@ -282,7 +282,7 @@ static ADDRESS_MAP_START( livequiz_map, AS_PROGRAM, 16, midas_state )
AM_RANGE(0x9c0000, 0x9c0005) AM_WRITE(midas_gfxregs_w ) AM_SHARE("gfxregs")
- AM_RANGE(0xa00000, 0xa3ffff) AM_RAM_WRITE(paletteram_xrgb_word_be_w ) AM_SHARE("paletteram")
+ AM_RANGE(0xa00000, 0xa3ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xa40000, 0xa7ffff) AM_RAM
AM_RANGE(0xb00000, 0xb00001) AM_READ(ret_ffff )
@@ -361,7 +361,7 @@ static ADDRESS_MAP_START( hammer_map, AS_PROGRAM, 16, midas_state )
AM_RANGE(0x9c0000, 0x9c0005) AM_WRITE(midas_gfxregs_w ) AM_SHARE("gfxregs")
- AM_RANGE(0xa00000, 0xa3ffff) AM_RAM_WRITE(paletteram_xrgb_word_be_w ) AM_SHARE("paletteram")
+ AM_RANGE(0xa00000, 0xa3ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xa40000, 0xa7ffff) AM_RAM
AM_RANGE(0xb00000, 0xb00001) AM_READ(ret_ffff )
@@ -714,8 +714,8 @@ static MACHINE_CONFIG_START( livequiz, midas_state )
MCFG_SCREEN_UPDATE_DRIVER(midas_state, screen_update_midas)
MCFG_GFXDECODE_ADD("gfxdecode", midas)
- MCFG_PALETTE_LENGTH(0x10000)
-
+ MCFG_PALETTE_ADD("palette", 0x10000)
+ MCFG_PALETTE_FORMAT(XRGB)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -747,7 +747,8 @@ static MACHINE_CONFIG_START( hammer, midas_state )
MCFG_SCREEN_UPDATE_DRIVER(midas_state, screen_update_midas)
MCFG_GFXDECODE_ADD("gfxdecode", midas)
- MCFG_PALETTE_LENGTH(0x10000)
+ MCFG_PALETTE_ADD("palette", 0x10000)
+ MCFG_PALETTE_FORMAT(XRGB)
/* sound hardware */
diff --git a/src/mame/drivers/midtunit.c b/src/mame/drivers/midtunit.c
index a4d0b9777e2..207eb9c83f2 100644
--- a/src/mame/drivers/midtunit.c
+++ b/src/mame/drivers/midtunit.c
@@ -611,7 +611,7 @@ static MACHINE_CONFIG_START( tunit_core, midtunit_state )
MCFG_NVRAM_ADD_0FILL("nvram")
/* video hardware */
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD("palette", 32768)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK * 2, 505, 0, 399, 289, 0, 253)
diff --git a/src/mame/drivers/midvunit.c b/src/mame/drivers/midvunit.c
index 471eafce18e..e7c36e9a547 100644
--- a/src/mame/drivers/midvunit.c
+++ b/src/mame/drivers/midvunit.c
@@ -1019,7 +1019,7 @@ static MACHINE_CONFIG_START( midvcommon, midvunit_state )
MCFG_TIMER_ADD_NONE("timer1")
/* video hardware */
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD("palette", 32768)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MIDVUNIT_VIDEO_CLOCK/2, 666, 0, 512, 432, 0, 400)
diff --git a/src/mame/drivers/midwunit.c b/src/mame/drivers/midwunit.c
index 868e0a00dc1..ce51fb6275f 100644
--- a/src/mame/drivers/midwunit.c
+++ b/src/mame/drivers/midwunit.c
@@ -646,7 +646,7 @@ static MACHINE_CONFIG_START( wunit, midwunit_state )
MCFG_NVRAM_ADD_0FILL("nvram")
/* video hardware */
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD("palette", 32768)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 505, 0, 399, 289, 0, 253)
diff --git a/src/mame/drivers/midxunit.c b/src/mame/drivers/midxunit.c
index 0b3af310d54..01aacd0fad7 100644
--- a/src/mame/drivers/midxunit.c
+++ b/src/mame/drivers/midxunit.c
@@ -271,7 +271,7 @@ static MACHINE_CONFIG_START( midxunit, midxunit_state )
MCFG_NVRAM_ADD_0FILL("nvram")
/* video hardware */
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD("palette", 32768)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 505, 0, 399, 289, 0, 253)
diff --git a/src/mame/drivers/midyunit.c b/src/mame/drivers/midyunit.c
index ef2c2686f47..376d509841a 100644
--- a/src/mame/drivers/midyunit.c
+++ b/src/mame/drivers/midyunit.c
@@ -1112,7 +1112,7 @@ static MACHINE_CONFIG_START( zunit, midyunit_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MEDRES_PIXEL_CLOCK*2, 673, 0, 511, 433, 0, 399)
@@ -1147,7 +1147,7 @@ static MACHINE_CONFIG_START( yunit_core, midyunit_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(STDRES_PIXEL_CLOCK*2, 505, 0, 399, 289, 0, 253)
@@ -1165,7 +1165,8 @@ static MACHINE_CONFIG_DERIVED( yunit_cvsd_4bit_slow, yunit_core )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
/* video hardware */
- MCFG_PALETTE_LENGTH(256)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_VIDEO_START_OVERRIDE(midyunit_state,midyunit_4bit)
MACHINE_CONFIG_END
@@ -1180,7 +1181,8 @@ static MACHINE_CONFIG_DERIVED( yunit_cvsd_4bit_fast, yunit_core )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
/* video hardware */
- MCFG_PALETTE_LENGTH(256)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_VIDEO_START_OVERRIDE(midyunit_state,midyunit_4bit)
MACHINE_CONFIG_END
@@ -1192,7 +1194,8 @@ static MACHINE_CONFIG_DERIVED( yunit_cvsd_6bit_slow, yunit_core )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
/* video hardware */
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 4096)
MCFG_VIDEO_START_OVERRIDE(midyunit_state,midyunit_6bit)
MACHINE_CONFIG_END
@@ -1207,7 +1210,8 @@ static MACHINE_CONFIG_DERIVED( yunit_adpcm_6bit_fast, yunit_core )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
/* video hardware */
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 4096)
MCFG_VIDEO_START_OVERRIDE(midyunit_state,midyunit_6bit)
MACHINE_CONFIG_END
@@ -1222,7 +1226,8 @@ static MACHINE_CONFIG_DERIVED( yunit_adpcm_6bit_faster, yunit_core )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
/* video hardware */
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 4096)
MCFG_VIDEO_START_OVERRIDE(midyunit_state,midyunit_6bit)
MACHINE_CONFIG_END
@@ -1235,7 +1240,8 @@ static MACHINE_CONFIG_DERIVED( mkyawdim, yunit_core )
MCFG_CPU_PROGRAM_MAP(yawdim_sound_map)
/* video hardware */
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 4096)
MCFG_VIDEO_START_OVERRIDE(midyunit_state,mkyawdim)
/* sound hardware */
diff --git a/src/mame/drivers/midzeus.c b/src/mame/drivers/midzeus.c
index fb871fa8dc8..c89ec45660f 100644
--- a/src/mame/drivers/midzeus.c
+++ b/src/mame/drivers/midzeus.c
@@ -1093,7 +1093,7 @@ static MACHINE_CONFIG_START( midzeus, midzeus_state )
MCFG_NVRAM_ADD_1FILL("nvram")
/* video hardware */
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD("palette", 32768)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MIDZEUS_VIDEO_CLOCK/8, 529, 0, 400, 278, 0, 256)
diff --git a/src/mame/drivers/mikie.c b/src/mame/drivers/mikie.c
index b1edc3b45d4..e2e175634a1 100644
--- a/src/mame/drivers/mikie.c
+++ b/src/mame/drivers/mikie.c
@@ -266,8 +266,8 @@ static MACHINE_CONFIG_START( mikie, mikie_state )
MCFG_SCREEN_UPDATE_DRIVER(mikie_state, screen_update_mikie)
MCFG_GFXDECODE_ADD("gfxdecode", mikie)
- MCFG_PALETTE_LENGTH(16*8*16+16*8*16)
-
+ MCFG_PALETTE_ADD("palette", 16*8*16+16*8*16)
+ MCFG_PALETTE_INIT_OWNER(mikie_state, mikie)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/mil4000.c b/src/mame/drivers/mil4000.c
index e5492d25884..f302a8bca84 100644
--- a/src/mame/drivers/mil4000.c
+++ b/src/mame/drivers/mil4000.c
@@ -312,7 +312,7 @@ static ADDRESS_MAP_START( mil4000_map, AS_PROGRAM, 16, mil4000_state )
AM_RANGE(0x708010, 0x708011) AM_NOP //touch screen
AM_RANGE(0x70801e, 0x70801f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x780000, 0x780fff) AM_RAM_WRITE(paletteram_RRRRRGGGGGBBBBBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x780000, 0x780fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("nvram") // 2x CY62256L-70 (U7 & U8).
ADDRESS_MAP_END
@@ -405,8 +405,8 @@ static MACHINE_CONFIG_START( mil4000, mil4000_state )
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
MCFG_SCREEN_UPDATE_DRIVER(mil4000_state, screen_update_mil4000)
- MCFG_PALETTE_LENGTH(0x800)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, all_black)
+ MCFG_PALETTE_ADD_INIT_BLACK("palette", 0x800)
+ MCFG_PALETTE_FORMAT(RRRRRGGGGGBBBBBx)
MCFG_GFXDECODE_ADD("gfxdecode", mil4000)
diff --git a/src/mame/drivers/miniboy7.c b/src/mame/drivers/miniboy7.c
index cfbad3e75e9..dbc4ee5f2e9 100644
--- a/src/mame/drivers/miniboy7.c
+++ b/src/mame/drivers/miniboy7.c
@@ -169,7 +169,7 @@ public:
DECLARE_WRITE8_MEMBER(miniboy7_colorram_w);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(miniboy7);
UINT32 screen_update_miniboy7(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -222,7 +222,7 @@ UINT32 miniboy7_state::screen_update_miniboy7(screen_device &screen, bitmap_ind1
return 0;
}
-void miniboy7_state::palette_init()
+PALETTE_INIT_MEMBER(miniboy7_state, miniboy7)
{
const UINT8 *color_prom = memregion("proms")->base();
/* FIXME... Can't get the correct palette.
@@ -241,7 +241,7 @@ void miniboy7_state::palette_init()
/* 0000IBGR */
if (color_prom == 0) return;
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int bit0, bit1, bit2, r, g, b, inten, intenmin, intenmax;
@@ -265,7 +265,7 @@ void miniboy7_state::palette_init()
b = (bit2 * intenmin) + (inten * (bit2 * (intenmax - intenmin)));
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -450,7 +450,8 @@ static MACHINE_CONFIG_START( miniboy7, miniboy7_state )
MCFG_GFXDECODE_ADD("gfxdecode", miniboy7)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(miniboy7_state, miniboy7)
MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK/12, mc6845_intf) /* guess */
diff --git a/src/mame/drivers/mirage.c b/src/mame/drivers/mirage.c
index 6a07b9089d8..7e4c50407bd 100644
--- a/src/mame/drivers/mirage.c
+++ b/src/mame/drivers/mirage.c
@@ -148,7 +148,7 @@ static ADDRESS_MAP_START( mirage_map, AS_PROGRAM, 16, miragemi_state )
AM_RANGE(0x110000, 0x110bff) AM_RAM AM_SHARE("pf1_rowscroll")
AM_RANGE(0x112000, 0x112bff) AM_RAM AM_SHARE("pf2_rowscroll")
AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x130000, 0x1307ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x130000, 0x1307ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x140000, 0x14000f) AM_DEVREADWRITE8("oki_sfx", okim6295_device, read, write, 0x00ff)
AM_RANGE(0x150000, 0x15000f) AM_DEVREADWRITE8("oki_bgm", okim6295_device, read, write, 0x00ff)
// AM_RANGE(0x140006, 0x140007) AM_READ(random_readers)
@@ -334,14 +334,17 @@ static MACHINE_CONFIG_START( mirage, miragemi_state )
MCFG_GFXDECODE_ADD("gfxdecode", mirage)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_DECO16IC_ADD("tilegen1", mirage_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 2);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/mirax.c b/src/mame/drivers/mirax.c
index 0af5de246eb..ace8a203d01 100644
--- a/src/mame/drivers/mirax.c
+++ b/src/mame/drivers/mirax.c
@@ -133,7 +133,7 @@ public:
DECLARE_WRITE8_MEMBER(ay1_sel);
DECLARE_WRITE8_MEMBER(ay2_sel);
DECLARE_DRIVER_INIT(mirax);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(mirax);
virtual void sound_start();
UINT32 screen_update_mirax(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(mirax_vblank_irq);
@@ -145,12 +145,12 @@ public:
};
-void mirax_state::palette_init()
+PALETTE_INIT_MEMBER(mirax_state, mirax)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int bit0,bit1,bit2,r,g,b;
@@ -169,7 +169,7 @@ void mirax_state::palette_init()
bit1 = (color_prom[i] >> 7) & 0x01;
b = 0x4f * bit0 + 0xa8 * bit1;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
}
@@ -195,9 +195,9 @@ void mirax_state::draw_tilemap(bitmap_ind16 &bitmap, const rectangle &cliprect,
if((x <= 1 || x >= 30) ^ draw_flag)
{
- gfx->opaque(bitmap,cliprect,tile,color & 7,(m_flipscreen_x),(m_flipscreen_y),res_x,res_y);
+ gfx->opaque(m_palette,bitmap,cliprect,tile,color & 7,(m_flipscreen_x),(m_flipscreen_y),res_x,res_y);
/* wrap-around */
- gfx->opaque(bitmap,cliprect,tile,color & 7,(m_flipscreen_x),(m_flipscreen_y),res_x,res_y+wrapy);
+ gfx->opaque(m_palette,bitmap,cliprect,tile,color & 7,(m_flipscreen_x),(m_flipscreen_y),res_x,res_y+wrapy);
}
}
}
@@ -226,7 +226,7 @@ void mirax_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
y = (m_flipscreen_y) ? spriteram[count] : 0x100 - spriteram[count] - 16;
x = (m_flipscreen_x) ? 240 - spriteram[count+3] : spriteram[count+3];
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,spr_offs,color,fx,fy,x,y,0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,spr_offs,color,fx,fy,x,y,0);
}
}
@@ -476,7 +476,8 @@ static MACHINE_CONFIG_START( mirax, mirax_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_DRIVER(mirax_state, screen_update_mirax)
- MCFG_PALETTE_LENGTH(0x40)
+ MCFG_PALETTE_ADD("palette", 0x40)
+ MCFG_PALETTE_INIT_OWNER(mirax_state, mirax)
MCFG_GFXDECODE_ADD("gfxdecode", mirax)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/missb2.c b/src/mame/drivers/missb2.c
index 83a704e0c24..7ff04648d00 100644
--- a/src/mame/drivers/missb2.c
+++ b/src/mame/drivers/missb2.c
@@ -68,7 +68,7 @@ UINT32 missb2_state::screen_update_missb2(screen_device &screen, bitmap_ind16 &b
//popmessage("%02x",(*m_bgvram) & 0x1f);
for (bg_offs = ((*m_bgvram) << 4); bg_offs < (((*m_bgvram) << 4) | 0xf); bg_offs++)
{
- m_gfxdecode->gfx(1)->opaque(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->opaque(m_palette,bitmap,cliprect,
bg_offs,
1,
0,0,
@@ -128,7 +128,7 @@ UINT32 missb2_state::screen_update_missb2(screen_device &screen, bitmap_ind16 &b
flipy = !flipy;
}
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
0,
flipx,flipy,
@@ -141,15 +141,15 @@ UINT32 missb2_state::screen_update_missb2(screen_device &screen, bitmap_ind16 &b
return 0;
}
-INLINE void bg_changecolor_RRRRGGGGBBBBxxxx( running_machine &machine, pen_t color, int data )
+INLINE void bg_changecolor_RRRRGGGGBBBBxxxx( palette_device &palette, pen_t color, int data )
{
- palette_set_color_rgb(machine, color + 256, pal4bit(data >> 12), pal4bit(data >> 8), pal4bit(data >> 4));
+ palette.set_pen_color(color + 256, pal4bit(data >> 12), pal4bit(data >> 8), pal4bit(data >> 4));
}
WRITE8_MEMBER(missb2_state::bg_paletteram_RRRRGGGGBBBBxxxx_be_w)
{
m_bg_paletteram[offset] = data;
- bg_changecolor_RRRRGGGGBBBBxxxx(machine(), offset / 2, m_bg_paletteram[offset | 1] | (m_bg_paletteram[offset & ~1] << 8));
+ bg_changecolor_RRRRGGGGBBBBxxxx(m_palette, offset / 2, m_bg_paletteram[offset | 1] | (m_bg_paletteram[offset & ~1] << 8));
}
WRITE8_MEMBER(missb2_state::missb2_bg_bank_w)
@@ -171,7 +171,7 @@ static ADDRESS_MAP_START( master_map, AS_PROGRAM, 8, missb2_state )
AM_RANGE(0xc000, 0xdcff) AM_RAM AM_SHARE("videoram")
AM_RANGE(0xdd00, 0xdfff) AM_RAM AM_SHARE("objectram")
AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xf800, 0xf9ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0xf800, 0xf9ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xfa00, 0xfa00) AM_WRITE(bublbobl_sound_command_w)
AM_RANGE(0xfa03, 0xfa03) AM_WRITENOP // sound cpu reset
AM_RANGE(0xfa80, 0xfa80) AM_WRITENOP
@@ -476,7 +476,8 @@ static MACHINE_CONFIG_START( missb2, missb2_state )
MCFG_SCREEN_UPDATE_DRIVER(missb2_state, screen_update_missb2)
MCFG_GFXDECODE_ADD("gfxdecode", missb2)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/missile.c b/src/mame/drivers/missile.c
index a6586e20c6f..0d637ac21bf 100644
--- a/src/mame/drivers/missile.c
+++ b/src/mame/drivers/missile.c
@@ -735,7 +735,7 @@ WRITE8_MEMBER(missile_state::missile_w)
/* color RAM */
else if (offset >= 0x4b00 && offset < 0x4c00)
- palette_set_color_rgb(machine(), offset & 7, pal1bit(~data >> 3), pal1bit(~data >> 2), pal1bit(~data >> 1));
+ m_palette->set_pen_color(offset & 7, pal1bit(~data >> 3), pal1bit(~data >> 2), pal1bit(~data >> 1));
/* watchdog */
else if (offset >= 0x4c00 && offset < 0x4d00)
@@ -1030,7 +1030,7 @@ static MACHINE_CONFIG_START( missile, missile_state )
MCFG_WATCHDOG_VBLANK_INIT(8)
/* video hardware */
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
diff --git a/src/mame/drivers/mitchell.c b/src/mame/drivers/mitchell.c
index 7c6a0c9ede7..b4cbc5cc3ba 100644
--- a/src/mame/drivers/mitchell.c
+++ b/src/mame/drivers/mitchell.c
@@ -264,7 +264,7 @@ WRITE8_MEMBER(mitchell_state::input_w)
static ADDRESS_MAP_START( mgakuen_map, AS_PROGRAM, 8, mitchell_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(mgakuen_paletteram_r, mgakuen_paletteram_w) /* palette RAM */
+ AM_RANGE(0xc000, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write) /* palette RAM */
AM_RANGE(0xc800, 0xcfff) AM_READWRITE(pang_colorram_r, pang_colorram_w) AM_SHARE("colorram") /* Attribute RAM */
AM_RANGE(0xd000, 0xdfff) AM_READWRITE(mgakuen_videoram_r, mgakuen_videoram_w) AM_SHARE("videoram") /* char RAM */
AM_RANGE(0xe000, 0xefff) AM_RAM /* Work RAM */
@@ -1091,7 +1091,9 @@ static MACHINE_CONFIG_START( mgakuen, mitchell_state )
MCFG_SCREEN_UPDATE_DRIVER(mitchell_state, screen_update_pang)
MCFG_GFXDECODE_ADD("gfxdecode", mgakuen)
- MCFG_PALETTE_LENGTH(1024) /* less colors than the others */
+
+ MCFG_PALETTE_ADD("palette", 1024) /* less colors than the others */
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang)
@@ -1128,7 +1130,9 @@ static MACHINE_CONFIG_START( pang, mitchell_state )
MCFG_SCREEN_UPDATE_DRIVER(mitchell_state, screen_update_pang)
MCFG_GFXDECODE_ADD("gfxdecode", mitchell)
- MCFG_PALETTE_LENGTH(2048)
+
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang)
@@ -1232,7 +1236,9 @@ static MACHINE_CONFIG_START( mstworld, mitchell_state )
MCFG_SCREEN_UPDATE_DRIVER(mitchell_state, screen_update_pang)
MCFG_GFXDECODE_ADD("gfxdecode", mstworld)
- MCFG_PALETTE_LENGTH(2048)
+
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang)
@@ -1263,7 +1269,9 @@ static MACHINE_CONFIG_START( marukin, mitchell_state )
MCFG_SCREEN_UPDATE_DRIVER(mitchell_state, screen_update_pang)
MCFG_GFXDECODE_ADD("gfxdecode", marukin)
- MCFG_PALETTE_LENGTH(2048)
+
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang)
@@ -1314,7 +1322,9 @@ static MACHINE_CONFIG_START( pkladiesbl, mitchell_state )
MCFG_SCREEN_UPDATE_DRIVER(mitchell_state, screen_update_pang)
MCFG_GFXDECODE_ADD("gfxdecode", pkladiesbl)
- MCFG_PALETTE_LENGTH(2048)
+
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang)
diff --git a/src/mame/drivers/mjkjidai.c b/src/mame/drivers/mjkjidai.c
index ca9b7103472..51da4f75e60 100644
--- a/src/mame/drivers/mjkjidai.c
+++ b/src/mame/drivers/mjkjidai.c
@@ -396,9 +396,7 @@ static MACHINE_CONFIG_START( mjkjidai, mjkjidai_state )
MCFG_SCREEN_UPDATE_DRIVER(mjkjidai_state, screen_update_mjkjidai)
MCFG_GFXDECODE_ADD("gfxdecode", mjkjidai)
- MCFG_PALETTE_LENGTH(0x100)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 0x100)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/mjsister.c b/src/mame/drivers/mjsister.c
index e3d4d17ee00..3532107ff36 100644
--- a/src/mame/drivers/mjsister.c
+++ b/src/mame/drivers/mjsister.c
@@ -166,7 +166,7 @@ UINT32 mjsister_state::screen_update_mjsister(screen_device &screen, bitmap_ind1
copybitmap_trans(bitmap, *m_tmpbitmap1, flip, flip, 2, 0, cliprect, 0);
}
else
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
@@ -527,8 +527,7 @@ static MACHINE_CONFIG_START( mjsister, mjsister_state )
MCFG_SCREEN_VISIBLE_AREA(0, 255+4, 8, 247)
MCFG_SCREEN_UPDATE_DRIVER(mjsister_state, screen_update_mjsister)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
/* sound hardware */
diff --git a/src/mame/drivers/mlanding.c b/src/mame/drivers/mlanding.c
index 45224566ee6..b9c5289ed81 100644
--- a/src/mame/drivers/mlanding.c
+++ b/src/mame/drivers/mlanding.c
@@ -214,7 +214,7 @@ void mlanding_state::machine_reset()
UINT32 mlanding_state::screen_update_mlanding(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- const pen_t *pens = machine().pens;
+ const pen_t *pens = m_palette->pens();
for (UINT32 y = cliprect.min_y; y <= cliprect.max_y; ++y)
{
@@ -726,7 +726,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, mlanding_state )
AM_RANGE(0x1c4000, 0x1cffff) AM_RAM AM_SHARE("sub_com_ram")
AM_RANGE(0x1d0000, 0x1d0001) AM_WRITE(dma_start_w)
AM_RANGE(0x1d0002, 0x1d0003) AM_WRITE(dma_stop_w)
- AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x200000, 0x20ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x240004, 0x240005) AM_READNOP // Watchdog
AM_RANGE(0x240006, 0x240007) AM_READ(input_r)
AM_RANGE(0x280000, 0x280fff) AM_READWRITE(power_ram_r, power_ram_w)
@@ -993,7 +993,8 @@ static MACHINE_CONFIG_START( mlanding, mlanding_state )
MCFG_SCREEN_RAW_PARAMS(16000000, 640, 0, 512, 462, 0, 400)
MCFG_SCREEN_UPDATE_DRIVER(mlanding_state, screen_update_mlanding)
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD("palette", 32768)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/model1.c b/src/mame/drivers/model1.c
index 63893957ac3..df03adaac9a 100644
--- a/src/mame/drivers/model1.c
+++ b/src/mame/drivers/model1.c
@@ -799,9 +799,9 @@ WRITE16_MEMBER(model1_state::md0_w)
WRITE16_MEMBER(model1_state::p_w)
{
- UINT16 old = m_generic_paletteram_16[offset];
- paletteram_xBBBBBGGGGGRRRRR_word_w(space, offset, data, mem_mask);
- if(0 && m_generic_paletteram_16[offset] != old)
+ UINT16 old = m_paletteram16[offset];
+ m_palette->write(space, offset, data, mem_mask);
+ if(0 && m_paletteram16[offset] != old)
logerror("XVIDEO: p_w %x, %04x @ %04x (%x)\n", offset, data, mem_mask, space.device().safe_pc());
}
@@ -896,7 +896,7 @@ static ADDRESS_MAP_START( model1_mem, AS_PROGRAM, 16, model1_state )
AM_RANGE(0x770000, 0x770001) AM_WRITENOP // Video synchronization switch
AM_RANGE(0x780000, 0x7fffff) AM_DEVREADWRITE("tile", segas24_tile, char_r, char_w)
- AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(p_w) AM_SHARE("paletteram")
+ AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(p_w) AM_SHARE("palette")
AM_RANGE(0x910000, 0x91bfff) AM_RAM AM_SHARE("color_xlat")
AM_RANGE(0xc00000, 0xc0003f) AM_READWRITE(io_r, io_w)
@@ -944,7 +944,7 @@ static ADDRESS_MAP_START( model1_vr_mem, AS_PROGRAM, 16, model1_state )
AM_RANGE(0x770000, 0x770001) AM_WRITENOP // Video synchronization switch
AM_RANGE(0x780000, 0x7fffff) AM_DEVREADWRITE("tile", segas24_tile, char_r, char_w)
- AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(p_w) AM_SHARE("paletteram")
+ AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(p_w) AM_SHARE("palette")
AM_RANGE(0x910000, 0x91bfff) AM_RAM AM_SHARE("color_xlat")
AM_RANGE(0xc00000, 0xc0003f) AM_READWRITE(io_r, io_w)
@@ -1524,6 +1524,7 @@ static MACHINE_CONFIG_START( model1, model1_state )
MCFG_S24TILE_DEVICE_ADD("tile", 0x3fff)
MCFG_S24TILE_DEVICE_GFXDECODE("gfxdecode")
+ MCFG_S24TILE_DEVICE_PALETTE("palette")
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK )
@@ -1532,7 +1533,8 @@ static MACHINE_CONFIG_START( model1, model1_state )
MCFG_SCREEN_UPDATE_DRIVER(model1_state, screen_update_model1)
MCFG_SCREEN_VBLANK_DRIVER(model1_state, screen_eof_model1)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(model1_state,model1)
@@ -1567,6 +1569,7 @@ static MACHINE_CONFIG_START( model1_vr, model1_state )
MCFG_S24TILE_DEVICE_ADD("tile", 0x3fff)
MCFG_S24TILE_DEVICE_GFXDECODE("gfxdecode")
+ MCFG_S24TILE_DEVICE_PALETTE("palette")
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK )
@@ -1575,7 +1578,8 @@ static MACHINE_CONFIG_START( model1_vr, model1_state )
MCFG_SCREEN_UPDATE_DRIVER(model1_state, screen_update_model1)
MCFG_SCREEN_VBLANK_DRIVER(model1_state, screen_eof_model1)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(model1_state,model1)
diff --git a/src/mame/drivers/model2.c b/src/mame/drivers/model2.c
index 76c50746047..c74ab91fd96 100644
--- a/src/mame/drivers/model2.c
+++ b/src/mame/drivers/model2.c
@@ -438,18 +438,18 @@ MACHINE_RESET_MEMBER(model2_state,model2c)
m_dsp_type = DSP_TYPE_TGPX4;
}
-static void chcolor(running_machine &machine, pen_t color, UINT16 data)
+static void chcolor(palette_device &palette, pen_t color, UINT16 data)
{
- palette_set_color_rgb(machine, color, pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
+ palette.set_pen_color(color, pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
}
WRITE32_MEMBER(model2_state::pal32_w)
{
COMBINE_DATA(m_paletteram32 + offset);
if(ACCESSING_BITS_0_15)
- chcolor(machine(), offset * 2, m_paletteram32[offset]);
+ chcolor(m_palette, offset * 2, m_paletteram32[offset]);
if(ACCESSING_BITS_16_31)
- chcolor(machine(), offset * 2 + 1, m_paletteram32[offset] >> 16);
+ chcolor(m_palette, offset * 2 + 1, m_paletteram32[offset] >> 16);
}
WRITE32_MEMBER(model2_state::ctrl0_w)
@@ -1973,6 +1973,7 @@ static MACHINE_CONFIG_START( model2o, model2_state )
MCFG_S24TILE_DEVICE_ADD("tile", 0x3fff)
MCFG_S24TILE_DEVICE_GFXDECODE("gfxdecode")
+ MCFG_S24TILE_DEVICE_PALETTE("palette")
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK )
@@ -1983,7 +1984,7 @@ static MACHINE_CONFIG_START( model2o, model2_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 62*8-1, 0*8, 48*8-1)
MCFG_SCREEN_UPDATE_DRIVER(model2_state, screen_update_model2)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
MCFG_VIDEO_START_OVERRIDE(model2_state,model2)
@@ -2025,6 +2026,7 @@ static MACHINE_CONFIG_START( model2a, model2_state )
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_S24TILE_DEVICE_ADD("tile", 0x3fff)
MCFG_S24TILE_DEVICE_GFXDECODE("gfxdecode")
+ MCFG_S24TILE_DEVICE_PALETTE("palette")
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK )
@@ -2035,7 +2037,7 @@ static MACHINE_CONFIG_START( model2a, model2_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 62*8-1, 0*8, 48*8-1)
MCFG_SCREEN_UPDATE_DRIVER(model2_state, screen_update_model2)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
MCFG_VIDEO_START_OVERRIDE(model2_state,model2)
@@ -2129,6 +2131,7 @@ static MACHINE_CONFIG_START( model2b, model2_state )
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_S24TILE_DEVICE_ADD("tile", 0x3fff)
MCFG_S24TILE_DEVICE_GFXDECODE("gfxdecode")
+ MCFG_S24TILE_DEVICE_PALETTE("palette")
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK )
@@ -2139,7 +2142,7 @@ static MACHINE_CONFIG_START( model2b, model2_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 62*8-1, 0*8, 48*8-1)
MCFG_SCREEN_UPDATE_DRIVER(model2_state, screen_update_model2)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
MCFG_VIDEO_START_OVERRIDE(model2_state,model2)
@@ -2178,6 +2181,7 @@ static MACHINE_CONFIG_START( model2c, model2_state )
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_S24TILE_DEVICE_ADD("tile", 0x3fff)
MCFG_S24TILE_DEVICE_GFXDECODE("gfxdecode")
+ MCFG_S24TILE_DEVICE_PALETTE("palette")
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK )
@@ -2188,7 +2192,7 @@ static MACHINE_CONFIG_START( model2c, model2_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 62*8-1, 0*8, 48*8-1)
MCFG_SCREEN_UPDATE_DRIVER(model2_state, screen_update_model2)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
MCFG_VIDEO_START_OVERRIDE(model2_state,model2)
diff --git a/src/mame/drivers/model3.c b/src/mame/drivers/model3.c
index 08b2930ef2a..577df0f2c63 100644
--- a/src/mame/drivers/model3.c
+++ b/src/mame/drivers/model3.c
@@ -5469,8 +5469,7 @@ static MACHINE_CONFIG_START( model3_10, model3_state )
MCFG_SCREEN_SIZE(512, 400)
MCFG_SCREEN_UPDATE_DRIVER(model3_state, screen_update_model3)
- MCFG_PALETTE_LENGTH(32768)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRRR_GGGGG_BBBBB)
+ MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB("palette")
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -5510,8 +5509,7 @@ static MACHINE_CONFIG_START( model3_15, model3_state )
MCFG_SCREEN_SIZE(496, 400)
MCFG_SCREEN_UPDATE_DRIVER(model3_state, screen_update_model3)
- MCFG_PALETTE_LENGTH(32768)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRRR_GGGGG_BBBBB)
+ MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB("palette")
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -5557,8 +5555,7 @@ static MACHINE_CONFIG_START( model3_20, model3_state )
MCFG_SCREEN_SIZE(496, 400)
MCFG_SCREEN_UPDATE_DRIVER(model3_state, screen_update_model3)
- MCFG_PALETTE_LENGTH(32768)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRRR_GGGGG_BBBBB)
+ MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB("palette")
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -5596,8 +5593,7 @@ static MACHINE_CONFIG_START( model3_21, model3_state )
MCFG_SCREEN_SIZE(496, 400)
MCFG_SCREEN_UPDATE_DRIVER(model3_state, screen_update_model3)
- MCFG_PALETTE_LENGTH(32768)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRRR_GGGGG_BBBBB)
+ MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB("palette")
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/mogura.c b/src/mame/drivers/mogura.c
index d1ca233085d..fa3f6f27392 100644
--- a/src/mame/drivers/mogura.c
+++ b/src/mame/drivers/mogura.c
@@ -32,12 +32,12 @@ public:
TILE_GET_INFO_MEMBER(get_mogura_tile_info);
virtual void machine_start();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(mogura);
UINT32 screen_update_mogura(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
-void mogura_state::palette_init()
+PALETTE_INIT_MEMBER(mogura_state, mogura)
{
const UINT8 *color_prom = memregion("proms")->base();
int i, j;
@@ -63,7 +63,7 @@ void mogura_state::palette_init()
bit2 = BIT(color_prom[i], 7);
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), j, rgb_t(r, g, b));
+ palette.set_pen_color(j, rgb_t(r, g, b));
j += 4;
if (j > 31) j -= 31;
}
@@ -213,7 +213,8 @@ static MACHINE_CONFIG_START( mogura, mogura_state )
MCFG_SCREEN_UPDATE_DRIVER(mogura_state, screen_update_mogura)
MCFG_GFXDECODE_ADD("gfxdecode", mogura)
- MCFG_PALETTE_LENGTH(32)
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(mogura_state, mogura)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/mole.c b/src/mame/drivers/mole.c
index ed2a4ed823b..2307c4ceef7 100644
--- a/src/mame/drivers/mole.c
+++ b/src/mame/drivers/mole.c
@@ -75,7 +75,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(mole);
UINT32 screen_update_mole(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -88,12 +88,12 @@ public:
*
*************************************/
-void mole_state::palette_init()
+PALETTE_INIT_MEMBER(mole_state, mole)
{
int i;
for (i = 0; i < 8; i++)
- palette_set_color_rgb(machine(), i, pal1bit(i >> 0), pal1bit(i >> 2), pal1bit(i >> 1));
+ palette.set_pen_color(i, pal1bit(i >> 0), pal1bit(i >> 2), pal1bit(i >> 1));
}
TILE_GET_INFO_MEMBER(mole_state::get_bg_tile_info)
@@ -331,8 +331,8 @@ static MACHINE_CONFIG_START( mole, mole_state )
MCFG_SCREEN_UPDATE_DRIVER(mole_state, screen_update_mole)
MCFG_GFXDECODE_ADD("gfxdecode", mole)
- MCFG_PALETTE_LENGTH(8)
-
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(mole_state, mole)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/momoko.c b/src/mame/drivers/momoko.c
index 2d15da3a2b7..c9dd7938789 100644
--- a/src/mame/drivers/momoko.c
+++ b/src/mame/drivers/momoko.c
@@ -65,7 +65,7 @@ static ADDRESS_MAP_START( momoko_map, AS_PROGRAM, 8, momoko_state )
AM_RANGE(0xd404, 0xd404) AM_WRITE(watchdog_reset_w)
AM_RANGE(0xd406, 0xd406) AM_READ_PORT("DSW0") AM_WRITE(soundlatch_byte_w)
AM_RANGE(0xd407, 0xd407) AM_READ_PORT("DSW1")
- AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0xd800, 0xdbff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xdc00, 0xdc00) AM_WRITE(momoko_fg_scrolly_w)
AM_RANGE(0xdc01, 0xdc01) AM_WRITE(momoko_fg_scrollx_w)
AM_RANGE(0xdc02, 0xdc02) AM_WRITE(momoko_fg_select_w)
@@ -275,7 +275,8 @@ static MACHINE_CONFIG_START( momoko, momoko_state )
MCFG_SCREEN_UPDATE_DRIVER(momoko_state, screen_update_momoko)
MCFG_GFXDECODE_ADD("gfxdecode", momoko)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/monzagp.c b/src/mame/drivers/monzagp.c
index 50f09162e23..849ea3f75be 100644
--- a/src/mame/drivers/monzagp.c
+++ b/src/mame/drivers/monzagp.c
@@ -52,7 +52,7 @@ public:
DECLARE_WRITE8_MEMBER(port2_w);
DECLARE_WRITE8_MEMBER(port3_w);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(monzagp);
UINT32 screen_update_monzagp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -60,7 +60,7 @@ public:
-void monzagp_state::palette_init()
+PALETTE_INIT_MEMBER(monzagp_state, monzagp)
{
}
@@ -104,7 +104,7 @@ UINT32 monzagp_state::screen_update_monzagp(screen_device &screen, bitmap_ind16
{
for(x=0;x<256;x++)
{
- m_gfxdecode->gfx(m_bank&1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_bank&1)->transpen(m_palette,bitmap,cliprect,
m_vram[y*m_screenw+x],
//(m_vram[y*m_screenw+x]&0x3f)+(m_bank>>1)*64,
0,
@@ -269,7 +269,8 @@ static MACHINE_CONFIG_START( monzagp, monzagp_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(monzagp_state, screen_update_monzagp)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
+ MCFG_PALETTE_INIT_OWNER(monzagp_state, monzagp)
MCFG_GFXDECODE_ADD("gfxdecode", monzagp)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/moo.c b/src/mame/drivers/moo.c
index 3ab7240c22a..e727c7273f6 100644
--- a/src/mame/drivers/moo.c
+++ b/src/mame/drivers/moo.c
@@ -342,7 +342,7 @@ static ADDRESS_MAP_START( moo_map, AS_PROGRAM, 16, moo_state )
AM_RANGE(0x1a0000, 0x1a1fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) /* Graphic planes */
AM_RANGE(0x1a2000, 0x1a3fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) /* Graphic planes mirror */
AM_RANGE(0x1b0000, 0x1b1fff) AM_DEVREAD("k056832", k056832_device, rom_word_r) /* Passthrough to tile roms */
- AM_RANGE(0x1c0000, 0x1c1fff) AM_RAM_WRITE(paletteram_xrgb_word_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0x1c0000, 0x1c1fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
#if MOO_DEBUG
AM_RANGE(0x0c0000, 0x0c003f) AM_DEVREAD("k056832", k056832_device, word_r)
AM_RANGE(0x0c2000, 0x0c2007) AM_DEVREAD("k053246", k053247_device, k053246_reg_word_r)
@@ -375,7 +375,7 @@ static ADDRESS_MAP_START( moobl_map, AS_PROGRAM, 16, moo_state )
AM_RANGE(0x1a0000, 0x1a1fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) /* Graphic planes */
AM_RANGE(0x1a2000, 0x1a3fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) /* Graphic planes mirror */
AM_RANGE(0x1b0000, 0x1b1fff) AM_DEVREAD("k056832", k056832_device, rom_word_r) /* Passthrough to tile roms */
- AM_RANGE(0x1c0000, 0x1c1fff) AM_RAM_WRITE(paletteram_xrgb_word_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0x1c0000, 0x1c1fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
ADDRESS_MAP_END
static ADDRESS_MAP_START( bucky_map, AS_PROGRAM, 16, moo_state )
@@ -406,7 +406,7 @@ static ADDRESS_MAP_START( bucky_map, AS_PROGRAM, 16, moo_state )
AM_RANGE(0x182000, 0x183fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) /* Graphic planes mirror */
AM_RANGE(0x184000, 0x187fff) AM_RAM /* extra tile RAM? */
AM_RANGE(0x190000, 0x191fff) AM_DEVREAD("k056832", k056832_device, rom_word_r) /* Passthrough to tile roms */
- AM_RANGE(0x1b0000, 0x1b3fff) AM_RAM_WRITE(paletteram_xrgb_word_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0x1b0000, 0x1b3fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x200000, 0x23ffff) AM_ROM /* data */
#if MOO_DEBUG
AM_RANGE(0x0c0000, 0x0c003f) AM_DEVREAD("k056832", k056832_device, word_r)
@@ -576,7 +576,7 @@ static MACHINE_CONFIG_START( moo, moo_state )
MCFG_K053252_ADD("k053252", XTAL_32MHz/4, moo_k053252_intf) // 8MHz
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -585,15 +585,20 @@ static MACHINE_CONFIG_START( moo, moo_state )
MCFG_SCREEN_VISIBLE_AREA(40, 40+384-1, 16, 16+224-1)
MCFG_SCREEN_UPDATE_DRIVER(moo_state, screen_update_moo)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(XRGB)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_ENABLE_HILIGHTS()
MCFG_VIDEO_START_OVERRIDE(moo_state,moo)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K053246_ADD("k053246", moo_k053247_intf)
MCFG_K053246_GFXDECODE("gfxdecode")
+ MCFG_K053246_PALETTE("palette")
MCFG_K056832_ADD("k056832", moo_k056832_intf)
MCFG_K056832_GFXDECODE("gfxdecode")
+ MCFG_K056832_PALETTE("palette")
MCFG_K053251_ADD("k053251")
MCFG_K054338_ADD("k054338", moo_k054338_intf)
@@ -622,7 +627,7 @@ static MACHINE_CONFIG_START( moobl, moo_state )
MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -631,15 +636,20 @@ static MACHINE_CONFIG_START( moobl, moo_state )
MCFG_SCREEN_VISIBLE_AREA(40, 40+384-1, 16, 16+224-1)
MCFG_SCREEN_UPDATE_DRIVER(moo_state, screen_update_moo)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(XRGB)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_ENABLE_HILIGHTS()
MCFG_VIDEO_START_OVERRIDE(moo_state,moo)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K053246_ADD("k053246", moo_k053247_intf)
MCFG_K053246_GFXDECODE("gfxdecode")
+ MCFG_K053246_PALETTE("palette")
MCFG_K056832_ADD("k056832", moo_k056832_intf)
MCFG_K056832_GFXDECODE("gfxdecode")
+ MCFG_K056832_PALETTE("palette")
MCFG_K053251_ADD("k053251")
MCFG_K054338_ADD("k054338", moo_k054338_intf)
@@ -661,8 +671,11 @@ static MACHINE_CONFIG_DERIVED( bucky, moo )
MCFG_DEVICE_REMOVE("k053246")
MCFG_K053246_ADD("k053246", bucky_k053247_intf) // diff x offset
MCFG_K053246_GFXDECODE("gfxdecode")
+ MCFG_K053246_PALETTE("palette")
/* video hardware */
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(XRGB)
MCFG_VIDEO_START_OVERRIDE(moo_state,bucky)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/mosaic.c b/src/mame/drivers/mosaic.c
index e45ff841e97..f3003658dce 100644
--- a/src/mame/drivers/mosaic.c
+++ b/src/mame/drivers/mosaic.c
@@ -90,7 +90,7 @@ static ADDRESS_MAP_START( mosaic_map, AS_PROGRAM, 8, mosaic_state )
AM_RANGE(0x20000, 0x21fff) AM_RAM
AM_RANGE(0x22000, 0x22fff) AM_RAM_WRITE(mosaic_bgvideoram_w) AM_SHARE("bgvideoram")
AM_RANGE(0x23000, 0x23fff) AM_RAM_WRITE(mosaic_fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0x24000, 0x241ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0x24000, 0x241ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
ADDRESS_MAP_END
static ADDRESS_MAP_START( gfire2_map, AS_PROGRAM, 8, mosaic_state )
@@ -98,7 +98,7 @@ static ADDRESS_MAP_START( gfire2_map, AS_PROGRAM, 8, mosaic_state )
AM_RANGE(0x10000, 0x17fff) AM_RAM
AM_RANGE(0x22000, 0x22fff) AM_RAM_WRITE(mosaic_bgvideoram_w) AM_SHARE("bgvideoram")
AM_RANGE(0x23000, 0x23fff) AM_RAM_WRITE(mosaic_fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0x24000, 0x241ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0x24000, 0x241ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
ADDRESS_MAP_END
static ADDRESS_MAP_START( mosaic_io_map, AS_IO, 8, mosaic_state )
@@ -272,7 +272,8 @@ static MACHINE_CONFIG_START( mosaic, mosaic_state )
MCFG_SCREEN_UPDATE_DRIVER(mosaic_state, screen_update_mosaic)
MCFG_GFXDECODE_ADD("gfxdecode", mosaic)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
diff --git a/src/mame/drivers/mouser.c b/src/mame/drivers/mouser.c
index 7afe6cf7a28..d4546c0f688 100644
--- a/src/mame/drivers/mouser.c
+++ b/src/mame/drivers/mouser.c
@@ -214,8 +214,8 @@ static MACHINE_CONFIG_START( mouser, mouser_state )
MCFG_SCREEN_UPDATE_DRIVER(mouser_state, screen_update_mouser)
MCFG_GFXDECODE_ADD("gfxdecode", mouser)
- MCFG_PALETTE_LENGTH(64)
-
+ MCFG_PALETTE_ADD("palette", 64)
+ MCFG_PALETTE_INIT_OWNER(mouser_state, mouser)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/mpoker.c b/src/mame/drivers/mpoker.c
index b82e4d00756..c00be75d8c3 100644
--- a/src/mame/drivers/mpoker.c
+++ b/src/mame/drivers/mpoker.c
@@ -200,7 +200,7 @@ public:
DECLARE_WRITE8_MEMBER(outport7_w);
DECLARE_WRITE8_MEMBER(sound_w);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(mpoker);
UINT32 screen_update_mpoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -224,7 +224,7 @@ UINT32 mpoker_state::screen_update_mpoker(screen_device &screen, bitmap_ind16 &b
{
UINT16 dat = m_video[count];
UINT16 col = m_video[count+0x400] & 0x7f;
- gfx->opaque(bitmap,cliprect,dat,col,0,0,x*16,y*16);
+ gfx->opaque(m_palette,bitmap,cliprect,dat,col,0,0,x*16,y*16);
count++;
}
@@ -232,7 +232,7 @@ UINT32 mpoker_state::screen_update_mpoker(screen_device &screen, bitmap_ind16 &b
return 0;
}
-void mpoker_state::palette_init()
+PALETTE_INIT_MEMBER(mpoker_state, mpoker)
{
int i;
@@ -245,7 +245,7 @@ void mpoker_state::palette_init()
else
color = rgb_t::black;
- palette_set_color(machine(), i, color);
+ palette.set_pen_color(i, color);
}
}
@@ -604,8 +604,8 @@ static MACHINE_CONFIG_START( mpoker, mpoker_state )
MCFG_SCREEN_UPDATE_DRIVER(mpoker_state, screen_update_mpoker)
MCFG_GFXDECODE_ADD("gfxdecode", mpoker)
- MCFG_PALETTE_LENGTH(0x200)
-
+ MCFG_PALETTE_ADD("palette", 0x200)
+ MCFG_PALETTE_INIT_OWNER(mpoker_state, mpoker)
/* sound hardware */
// MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/mpu12wbk.c b/src/mame/drivers/mpu12wbk.c
index 5155a23ea26..1a08a9311cb 100644
--- a/src/mame/drivers/mpu12wbk.c
+++ b/src/mame/drivers/mpu12wbk.c
@@ -231,7 +231,7 @@ public:
DECLARE_DRIVER_INIT(mpu12wbk);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(mpu12wbk);
UINT32 screen_update_mpu12wbk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -286,7 +286,7 @@ UINT32 mpu12wbk_state::screen_update_mpu12wbk(screen_device &screen, bitmap_ind1
}
-void mpu12wbk_state::palette_init()
+PALETTE_INIT_MEMBER(mpu12wbk_state, mpu12wbk)
{
}
@@ -533,7 +533,8 @@ static MACHINE_CONFIG_START( mpu12wbk, mpu12wbk_state )
MCFG_SCREEN_UPDATE_DRIVER(mpu12wbk_state, screen_update_mpu12wbk)
MCFG_GFXDECODE_ADD("gfxdecode", mpu12wbk)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_INIT_OWNER(mpu12wbk_state, mpu12wbk)
MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK/4, mc6845_intf) /* guess */
diff --git a/src/mame/drivers/mpu4dealem.c b/src/mame/drivers/mpu4dealem.c
index 9c04920ff12..23de1ab4b49 100644
--- a/src/mame/drivers/mpu4dealem.c
+++ b/src/mame/drivers/mpu4dealem.c
@@ -109,7 +109,7 @@ PALETTE_INIT_MEMBER(mpu4dealem_state,dealem)
bit1 = BIT(*color_prom,7);
b = combine_2_weights(weights_b, bit0, bit1);
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
color_prom++;
}
}
@@ -126,7 +126,7 @@ UINT32 mpu4dealem_state::screen_update_dealem(screen_device &screen, bitmap_ind1
{
int tile = m_dealem_videoram[count + 0x1000] | (m_dealem_videoram[count] << 8);
count++;
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect,tile,0,0,0,x * 8,y * 8);
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect,tile,0,0,0,x * 8,y * 8);
}
}
@@ -232,8 +232,8 @@ static MACHINE_CONFIG_START( dealem, mpu4dealem_state )
MCFG_GFXDECODE_ADD("gfxdecode", dealem)
- MCFG_PALETTE_LENGTH(32)
- MCFG_PALETTE_INIT_OVERRIDE(mpu4dealem_state,dealem)
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(mpu4dealem_state,dealem)
MCFG_MC6845_ADD("crtc", HD6845, "screen", MPU4_MASTER_CLOCK / 4 / 8, hd6845_intf) /* HD68B45 */
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/mpu4plasma.c b/src/mame/drivers/mpu4plasma.c
index 73cba8891e8..2fd0c2dd26f 100644
--- a/src/mame/drivers/mpu4plasma.c
+++ b/src/mame/drivers/mpu4plasma.c
@@ -94,7 +94,7 @@ MACHINE_CONFIG_DERIVED_CLASS( mpu4plasma , mod2, mpu4plasma_state )
MCFG_SCREEN_VISIBLE_AREA(0, 128-1, 0*8, 40-1)
MCFG_SCREEN_UPDATE_DRIVER(mpu4plasma_state, screen_update_mpu4plasma)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
MACHINE_CONFIG_END
// plasma v0.1
diff --git a/src/mame/drivers/mpu4vid.c b/src/mame/drivers/mpu4vid.c
index 99e6a337f08..45adf1ad16a 100644
--- a/src/mame/drivers/mpu4vid.c
+++ b/src/mame/drivers/mpu4vid.c
@@ -482,10 +482,10 @@ VIDEO_START_MEMBER(mpu4vid_state,mpu4_vid)
assert(m_gfx_index != MAX_GFX_ELEMENTS);
/* create the char set (gfx will then be updated dynamically from RAM) */
- m_gfxdecode->set_gfx(m_gfx_index+0, auto_alloc(machine(), gfx_element(machine(), mpu4_vid_char_8x8_layout, reinterpret_cast<UINT8 *>(m_vid_vidram.target()), machine().total_colors() / 16, 0)));
- m_gfxdecode->set_gfx(m_gfx_index+1, auto_alloc(machine(), gfx_element(machine(), mpu4_vid_char_8x16_layout, reinterpret_cast<UINT8 *>(m_vid_vidram.target()), machine().total_colors() / 16, 0)));
- m_gfxdecode->set_gfx(m_gfx_index+2, auto_alloc(machine(), gfx_element(machine(), mpu4_vid_char_16x8_layout, reinterpret_cast<UINT8 *>(m_vid_vidram.target()), machine().total_colors() / 16, 0)));
- m_gfxdecode->set_gfx(m_gfx_index+3, auto_alloc(machine(), gfx_element(machine(), mpu4_vid_char_16x16_layout, reinterpret_cast<UINT8 *>(m_vid_vidram.target()), machine().total_colors() / 16, 0)));
+ m_gfxdecode->set_gfx(m_gfx_index+0, auto_alloc(machine(), gfx_element(machine(), mpu4_vid_char_8x8_layout, reinterpret_cast<UINT8 *>(m_vid_vidram.target()), m_palette->entries() / 16, 0)));
+ m_gfxdecode->set_gfx(m_gfx_index+1, auto_alloc(machine(), gfx_element(machine(), mpu4_vid_char_8x16_layout, reinterpret_cast<UINT8 *>(m_vid_vidram.target()), m_palette->entries() / 16, 0)));
+ m_gfxdecode->set_gfx(m_gfx_index+2, auto_alloc(machine(), gfx_element(machine(), mpu4_vid_char_16x8_layout, reinterpret_cast<UINT8 *>(m_vid_vidram.target()), m_palette->entries() / 16, 0)));
+ m_gfxdecode->set_gfx(m_gfx_index+3, auto_alloc(machine(), gfx_element(machine(), mpu4_vid_char_16x16_layout, reinterpret_cast<UINT8 *>(m_vid_vidram.target()), m_palette->entries() / 16, 0)));
m_scn2674->init_stuff();
@@ -533,7 +533,7 @@ WRITE16_MEMBER(mpu4vid_state::ef9369_w )
col = pal.clut[entry] & 0xfff;
/* Update the MAME palette */
- palette_set_color_rgb(space.machine(), entry, pal4bit(col >> 8), pal4bit(col >> 4), pal4bit(col >> 0));
+ m_palette->set_pen_color(entry, pal4bit(col >> 8), pal4bit(col >> 4), pal4bit(col >> 0));
}
/* Address register auto-increment */
@@ -604,7 +604,7 @@ WRITE16_MEMBER(mpu4vid_state::bt471_w )
if (++*addr_cnt == 3)
{
- palette_set_color(space.machine(), bt471.address, rgb_t(color[0], color[1], color[2]));
+ m_palette->set_pen_color(bt471.address, rgb_t(color[0], color[1], color[2]));
*addr_cnt = 0;
/* Address register increments */
@@ -1426,6 +1426,7 @@ static MACHINE_CONFIG_START( mpu4_vid, mpu4vid_state )
MCFG_SCN2674_VIDEO_ADD("scn2674_vid", 0, WRITELINE(mpu4vid_state, update_mpu68_interrupts));
MCFG_SCN2674_GFXDECODE("gfxdecode")
+ MCFG_SCN2674_PALETTE("palette")
MCFG_CPU_ADD("video", M68000, VIDEO_MASTER_CLOCK )
MCFG_CPU_PROGRAM_MAP(mpu4_68k_map)
@@ -1436,7 +1437,7 @@ static MACHINE_CONFIG_START( mpu4_vid, mpu4vid_state )
MCFG_MACHINE_RESET_OVERRIDE(mpu4vid_state,mpu4_vid)
MCFG_VIDEO_START_OVERRIDE (mpu4vid_state,mpu4_vid)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
MCFG_PTM6840_ADD("6840ptm_68k", ptm_vid_intf)
/* Present on all video cards */
diff --git a/src/mame/drivers/mquake.c b/src/mame/drivers/mquake.c
index aa97630d53e..647e2e81cd9 100644
--- a/src/mame/drivers/mquake.c
+++ b/src/mame/drivers/mquake.c
@@ -397,8 +397,8 @@ static MACHINE_CONFIG_START( mquake, mquake_state )
MCFG_SCREEN_VISIBLE_AREA((129-8)*2, (449+8-1)*2, 44-8, 244+8-1)
MCFG_SCREEN_UPDATE_DRIVER(mquake_state, screen_update_amiga)
- MCFG_PALETTE_LENGTH(4096)
- MCFG_PALETTE_INIT_OVERRIDE(mquake_state,amiga)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_INIT_OWNER(mquake_state,amiga)
MCFG_VIDEO_START_OVERRIDE(mquake_state,amiga)
diff --git a/src/mame/drivers/mrdo.c b/src/mame/drivers/mrdo.c
index c126cc7095b..3eb0d1f70a8 100644
--- a/src/mame/drivers/mrdo.c
+++ b/src/mame/drivers/mrdo.c
@@ -177,8 +177,8 @@ static MACHINE_CONFIG_START( mrdo, mrdo_state )
MCFG_SCREEN_UPDATE_DRIVER(mrdo_state, screen_update_mrdo)
MCFG_GFXDECODE_ADD("gfxdecode", mrdo)
- MCFG_PALETTE_LENGTH(64*4+16*4)
-
+ MCFG_PALETTE_ADD("palette", 64*4+16*4)
+ MCFG_PALETTE_INIT_OWNER(mrdo_state, mrdo)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/mrflea.c b/src/mame/drivers/mrflea.c
index 74aaf85a3fc..b12740b48b8 100644
--- a/src/mame/drivers/mrflea.c
+++ b/src/mame/drivers/mrflea.c
@@ -159,7 +159,7 @@ static ADDRESS_MAP_START( mrflea_master_map, AS_PROGRAM, 8, mrflea_state )
AM_RANGE(0x0000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xcfff) AM_RAM
AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(mrflea_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe800, 0xe83f) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0xe800, 0xe83f) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xec00, 0xecff) AM_RAM_WRITE(mrflea_spriteram_w) AM_SHARE("spriteram")
ADDRESS_MAP_END
@@ -368,7 +368,8 @@ static MACHINE_CONFIG_START( mrflea, mrflea_state )
MCFG_SCREEN_UPDATE_DRIVER(mrflea_state, screen_update_mrflea)
MCFG_GFXDECODE_ADD("gfxdecode", mrflea)
- MCFG_PALETTE_LENGTH(32)
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
/* sound hardware */
diff --git a/src/mame/drivers/mrjong.c b/src/mame/drivers/mrjong.c
index 07657055b5e..5bd888bf8e4 100644
--- a/src/mame/drivers/mrjong.c
+++ b/src/mame/drivers/mrjong.c
@@ -195,8 +195,8 @@ static MACHINE_CONFIG_START( mrjong, mrjong_state )
MCFG_SCREEN_UPDATE_DRIVER(mrjong_state, screen_update_mrjong)
MCFG_GFXDECODE_ADD("gfxdecode", mrjong)
- MCFG_PALETTE_LENGTH(4*32)
-
+ MCFG_PALETTE_ADD("palette", 4*32)
+ MCFG_PALETTE_INIT_OWNER(mrjong_state, mrjong)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/ms32.c b/src/mame/drivers/ms32.c
index b04bd5f932e..5ef7d90fb51 100644
--- a/src/mame/drivers/ms32.c
+++ b/src/mame/drivers/ms32.c
@@ -1406,7 +1406,7 @@ static MACHINE_CONFIG_START( ms32, ms32_state )
MCFG_SCREEN_UPDATE_DRIVER(ms32_state, screen_update_ms32)
MCFG_GFXDECODE_ADD("gfxdecode", ms32)
- MCFG_PALETTE_LENGTH(0x10000)
+ MCFG_PALETTE_ADD("palette", 0x10000)
/* sound hardware */
diff --git a/src/mame/drivers/msisaac.c b/src/mame/drivers/msisaac.c
index ba5ab63c9ba..13217b56796 100644
--- a/src/mame/drivers/msisaac.c
+++ b/src/mame/drivers/msisaac.c
@@ -171,7 +171,7 @@ WRITE8_MEMBER(msisaac_state::msisaac_mcu_w)
static ADDRESS_MAP_START( msisaac_map, AS_PROGRAM, 8, msisaac_state )
AM_RANGE(0x0000, 0xdfff) AM_ROM
AM_RANGE(0xe000, 0xe7ff) AM_RAM
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xf000, 0xf000) AM_WRITE(msisaac_bg2_textbank_w)
AM_RANGE(0xf001, 0xf001) AM_WRITENOP //???
AM_RANGE(0xf002, 0xf002) AM_WRITENOP //???
@@ -490,7 +490,8 @@ static MACHINE_CONFIG_START( msisaac, msisaac_state )
MCFG_SCREEN_UPDATE_DRIVER(msisaac_state, screen_update_msisaac)
MCFG_GFXDECODE_ADD("gfxdecode", msisaac)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
/* sound hardware */
diff --git a/src/mame/drivers/mugsmash.c b/src/mame/drivers/mugsmash.c
index 261ec9bf8f8..1077b2ac190 100644
--- a/src/mame/drivers/mugsmash.c
+++ b/src/mame/drivers/mugsmash.c
@@ -175,7 +175,7 @@ static ADDRESS_MAP_START( mugsmash_map, AS_PROGRAM, 16, mugsmash_state )
AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(mugsmash_videoram1_w) AM_SHARE("videoram1")
AM_RANGE(0x082000, 0x082fff) AM_RAM_WRITE(mugsmash_videoram2_w) AM_SHARE("videoram2")
AM_RANGE(0x0c0000, 0x0c0007) AM_WRITE(mugsmash_reg_w) AM_SHARE("regs1") /* video registers*/
- AM_RANGE(0x100000, 0x1005ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x100000, 0x1005ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x140000, 0x140007) AM_WRITE(mugsmash_reg2_w) AM_SHARE("regs2") /* sound + ? */
AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM /* main ram? */
AM_RANGE(0x1c4000, 0x1cffff) AM_RAM
@@ -409,7 +409,8 @@ static MACHINE_CONFIG_START( mugsmash, mugsmash_state )
MCFG_SCREEN_UPDATE_DRIVER(mugsmash_state, screen_update_mugsmash)
MCFG_GFXDECODE_ADD("gfxdecode", mugsmash)
- MCFG_PALETTE_LENGTH(0x300)
+ MCFG_PALETTE_ADD("palette", 0x300)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/multfish.c b/src/mame/drivers/multfish.c
index 9d6746e7e95..164f67628ab 100644
--- a/src/mame/drivers/multfish.c
+++ b/src/mame/drivers/multfish.c
@@ -223,7 +223,7 @@ UINT32 igrosoft_gamble_state::screen_update_igrosoft_gamble(screen_device &scree
{
int i;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
if (!m_disp_enable) return 0;
@@ -290,7 +290,7 @@ WRITE8_MEMBER(igrosoft_gamble_state::igrosoft_gamble_vid_w)
b = ( (coldat &0x00e0)>> (5));
b|= ( (coldat &0xe000)>> (8+5-3));
- palette_set_color_rgb(machine(), (offset-0x4000)/2, r<<3, g<<3, b<<2);
+ m_palette->set_pen_color((offset-0x4000)/2, r<<3, g<<3, b<<2);
}
else
{
@@ -1065,7 +1065,7 @@ MACHINE_CONFIG_START( igrosoft_gamble, igrosoft_gamble_state )
MCFG_SCREEN_VISIBLE_AREA(17*16, 1024-16*7-1, 1*16, 32*16-1*16-1)
MCFG_SCREEN_UPDATE_DRIVER(igrosoft_gamble_state, screen_update_igrosoft_gamble)
MCFG_GFXDECODE_ADD("gfxdecode", igrosoft_gamble)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/multigam.c b/src/mame/drivers/multigam.c
index 3c9e56407b9..0e6e124d663 100644
--- a/src/mame/drivers/multigam.c
+++ b/src/mame/drivers/multigam.c
@@ -186,7 +186,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(multigam);
DECLARE_MACHINE_START(multigm3);
DECLARE_MACHINE_RESET(multigm3);
DECLARE_MACHINE_START(supergm3);
@@ -1145,9 +1145,9 @@ static const nesapu_interface multigam_interface_1 =
"maincpu"
};
-void multigam_state::palette_init()
+PALETTE_INIT_MEMBER(multigam_state, multigam)
{
- m_ppu->init_palette(machine(), 0);
+ m_ppu->init_palette(palette, 0);
}
void multigam_state::ppu_irq(int *ppu_regs)
@@ -1259,8 +1259,8 @@ static MACHINE_CONFIG_START( multigam, multigam_state )
MCFG_SCREEN_UPDATE_DRIVER(multigam_state, screen_update_multigam)
MCFG_GFXDECODE_ADD("gfxdecode", multigam)
- MCFG_PALETTE_LENGTH(8*4*16)
-
+ MCFG_PALETTE_ADD("palette", 8*4*16)
+ MCFG_PALETTE_INIT_OWNER(multigam_state, multigam)
MCFG_PPU2C04_ADD("ppu", ppu_interface)
MCFG_PPU2C0X_SET_NMI(multigam_state, ppu_irq)
diff --git a/src/mame/drivers/munchmo.c b/src/mame/drivers/munchmo.c
index 46adbef3afa..3495394c1cf 100644
--- a/src/mame/drivers/munchmo.c
+++ b/src/mame/drivers/munchmo.c
@@ -336,8 +336,8 @@ static MACHINE_CONFIG_START( mnchmobl, munchmo_state )
MCFG_SCREEN_UPDATE_DRIVER(munchmo_state, screen_update_mnchmobl)
MCFG_GFXDECODE_ADD("gfxdecode", mnchmobl)
- MCFG_PALETTE_LENGTH(256)
-
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(munchmo_state, munchmo)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/murogem.c b/src/mame/drivers/murogem.c
index a14c56b1bdf..2e5cd99565c 100644
--- a/src/mame/drivers/murogem.c
+++ b/src/mame/drivers/murogem.c
@@ -122,7 +122,7 @@ public:
required_shared_ptr<UINT8> m_videoram;
DECLARE_WRITE8_MEMBER(outport_w);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(murogem);
UINT32 screen_update_murogem(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<dac_device> m_dac;
@@ -206,7 +206,7 @@ static GFXDECODE_START( murogem )
GFXDECODE_END
-void murogem_state::palette_init()
+PALETTE_INIT_MEMBER(murogem_state, murogem)
{}
UINT32 murogem_state::screen_update_murogem(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -223,7 +223,7 @@ UINT32 murogem_state::screen_update_murogem(screen_device &screen, bitmap_ind16
int tileno = m_videoram[count]&0x3f;
int attr = m_videoram[count+0x400]&0x0f;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,tileno,attr,0,0,xx*8,yy*8,0);
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,tileno,attr,0,0,xx*8,yy*8,0);
count++;
@@ -265,7 +265,8 @@ static MACHINE_CONFIG_START( murogem, murogem_state )
MCFG_SCREEN_UPDATE_DRIVER(murogem_state, screen_update_murogem)
MCFG_GFXDECODE_ADD("gfxdecode", murogem)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_INIT_OWNER(murogem_state, murogem)
MCFG_MC6845_ADD("crtc", MC6845, "screen", 750000, mc6845_intf) /* ? MHz */
diff --git a/src/mame/drivers/murogmbl.c b/src/mame/drivers/murogmbl.c
index 023d820b8fa..d4dfddde530 100644
--- a/src/mame/drivers/murogmbl.c
+++ b/src/mame/drivers/murogmbl.c
@@ -51,14 +51,14 @@ public:
required_shared_ptr<UINT8> m_video;
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(murogmbl);
UINT32 screen_update_murogmbl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
};
-void murogmbl_state::palette_init()
+PALETTE_INIT_MEMBER(murogmbl_state, murogmbl)
{
const UINT8 *color_prom = memregion("proms")->base();
int bit0, bit1, bit2 , r, g, b;
@@ -79,7 +79,7 @@ void murogmbl_state::palette_init()
bit2 = (color_prom[0] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
color_prom++;
}
}
@@ -112,7 +112,7 @@ UINT32 murogmbl_state::screen_update_murogmbl(screen_device &screen, bitmap_ind1
for (x = 0; x < 32; x++)
{
int tile = m_video[count];
- gfx->opaque(bitmap,cliprect, tile, 0, 0, 0, x * 8, y * 8);
+ gfx->opaque(m_palette,bitmap,cliprect, tile, 0, 0, 0, x * 8, y * 8);
count++;
}
@@ -201,8 +201,8 @@ static MACHINE_CONFIG_START( murogmbl, murogmbl_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(murogmbl_state, screen_update_murogmbl)
- MCFG_PALETTE_LENGTH(0x100)
-
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_INIT_OWNER(murogmbl_state, murogmbl)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_DAC_ADD("dac1")
diff --git a/src/mame/drivers/mustache.c b/src/mame/drivers/mustache.c
index 9388028fd4b..919b728e70a 100644
--- a/src/mame/drivers/mustache.c
+++ b/src/mame/drivers/mustache.c
@@ -187,8 +187,8 @@ static MACHINE_CONFIG_START( mustache, mustache_state )
MCFG_SCREEN_UPDATE_DRIVER(mustache_state, screen_update_mustache)
MCFG_GFXDECODE_ADD("gfxdecode", mustache)
- MCFG_PALETTE_LENGTH(8*16+16*8)
-
+ MCFG_PALETTE_ADD("palette", 8*16+16*8)
+ MCFG_PALETTE_INIT_OWNER(mustache_state, mustache)
/* sound hardware */
MCFG_SEIBU_SOUND_ADD("seibu_sound") // for seibu_sound_decrypt on the MAIN cpu (not sound)
diff --git a/src/mame/drivers/mwarr.c b/src/mame/drivers/mwarr.c
index 7df1b9874fc..075d78df452 100644
--- a/src/mame/drivers/mwarr.c
+++ b/src/mame/drivers/mwarr.c
@@ -191,7 +191,7 @@ WRITE16_MEMBER(mwarr_state::mwarr_brightness_w)
brightness = (double)(data & 0xff);
for (i = 0; i < 0x800; i++)
{
- palette_set_pen_contrast(machine(), i, brightness/255);
+ m_palette->set_pen_contrast(i, brightness/255);
}
}
@@ -212,7 +212,7 @@ static ADDRESS_MAP_START( mwarr_map, AS_PROGRAM, 16, mwarr_state )
AM_RANGE(0x103400, 0x1037ff) AM_RAM AM_SHARE("mlow_scrollram")
AM_RANGE(0x103800, 0x103bff) AM_RAM AM_SHARE("mhigh_scrollram")
AM_RANGE(0x103c00, 0x103fff) AM_RAM AM_SHARE("vidattrram")
- AM_RANGE(0x104000, 0x104fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x104000, 0x104fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x108000, 0x108fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x110000, 0x110001) AM_READ_PORT("P1_P2")
AM_RANGE(0x110002, 0x110003) AM_READ_PORT("SYSTEM")
@@ -435,7 +435,7 @@ void mwarr_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, con
for (i = 0; i <= dy; i++)
{
- gfx->prio_transpen(bitmap,
+ gfx->prio_transpen(m_palette,bitmap,
cliprect,
source[2]+i,
color,
@@ -444,7 +444,7 @@ void mwarr_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, con
screen.priority(),pri_mask,0 );
/* wrap around x */
- gfx->prio_transpen(bitmap,
+ gfx->prio_transpen(m_palette,bitmap,
cliprect,
source[2]+i,
color,
@@ -453,7 +453,7 @@ void mwarr_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, con
screen.priority(),pri_mask,0 );
/* wrap around y */
- gfx->prio_transpen(bitmap,
+ gfx->prio_transpen(m_palette,bitmap,
cliprect,
source[2]+i,
color,
@@ -462,7 +462,7 @@ void mwarr_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, con
screen.priority(),pri_mask,0 );
/* wrap around x & y */
- gfx->prio_transpen(bitmap,
+ gfx->prio_transpen(m_palette,bitmap,
cliprect,
source[2]+i,
color,
@@ -563,8 +563,8 @@ static MACHINE_CONFIG_START( mwarr, mwarr_state )
MCFG_SCREEN_UPDATE_DRIVER(mwarr_state, screen_update_mwarr)
MCFG_GFXDECODE_ADD("gfxdecode", mwarr)
- MCFG_PALETTE_LENGTH(0x800)
-
+ MCFG_PALETTE_ADD("palette", 0x800)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/mystwarr.c b/src/mame/drivers/mystwarr.c
index 73c69493e27..be3ff34c545 100644
--- a/src/mame/drivers/mystwarr.c
+++ b/src/mame/drivers/mystwarr.c
@@ -318,7 +318,7 @@ static ADDRESS_MAP_START( mystwarr_map, AS_PROGRAM, 16, mystwarr_state )
AM_RANGE(0x600000, 0x601fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w)
AM_RANGE(0x602000, 0x603fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM mirror read(essential)
AM_RANGE(0x680000, 0x683fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r)
- AM_RANGE(0x700000, 0x701fff) AM_RAM_WRITE(paletteram_xrgb_word_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
#if MW_DEBUG
AM_RANGE(0x480000, 0x4800ff) AM_DEVREAD("k055555", k055555_device, k055555_word_r)
AM_RANGE(0x482010, 0x48201f) AM_DEVREAD("k055673", k055673_device, k053247_reg_word_r)
@@ -359,7 +359,7 @@ static ADDRESS_MAP_START( metamrph_map, AS_PROGRAM, 16, mystwarr_state )
AM_RANGE(0x302000, 0x303fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM mirror read/write (essential)
AM_RANGE(0x310000, 0x311fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r)
AM_RANGE(0x320000, 0x321fff) AM_DEVREAD("k053250_1", k053250_device, rom_r)
- AM_RANGE(0x330000, 0x331fff) AM_RAM_WRITE(paletteram_xrgb_word_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0x330000, 0x331fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
#if MW_DEBUG
AM_RANGE(0x240000, 0x240007) AM_DEVREAD("k055673", k055673_device, k053246_reg_word_r)
AM_RANGE(0x244010, 0x24401f) AM_DEVREAD("k055673", k055673_device, k053247_reg_word_r)
@@ -402,7 +402,7 @@ static ADDRESS_MAP_START( viostorm_map, AS_PROGRAM, 16, mystwarr_state )
AM_RANGE(0x302000, 0x303fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM mirror read(essential)
AM_RANGE(0x304000, 0x3041ff) AM_RAM
AM_RANGE(0x310000, 0x311fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r)
- AM_RANGE(0x330000, 0x331fff) AM_RAM_WRITE(paletteram_xrgb_word_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0x330000, 0x331fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
#if MW_DEBUG
AM_RANGE(0x240000, 0x240007) AM_DEVREAD("k055673", k055673_device, k053246_reg_word_r)
AM_RANGE(0x244010, 0x24401f) AM_DEVREAD("k055673", k055673_device, k053247_reg_word_r)
@@ -489,7 +489,7 @@ static ADDRESS_MAP_START( martchmp_map, AS_PROGRAM, 16, mystwarr_state )
AM_RANGE(0x41c000, 0x41c01f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) // CCU
AM_RANGE(0x41e000, 0x41e007) AM_DEVWRITE("k056832", k056832_device,b_word_w) // VSCCS
AM_RANGE(0x480000, 0x483fff) AM_READWRITE(k053247_martchmp_word_r,k053247_martchmp_word_w) AM_SHARE("spriteram") // sprite RAM
- AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(paletteram_xrgb_word_be_w) AM_SHARE("paletteram") // palette RAM
+ AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // palette RAM
AM_RANGE(0x680000, 0x681fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM
AM_RANGE(0x682000, 0x683fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM mirror read/write (essential)
AM_RANGE(0x700000, 0x703fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r) // tile ROM readback
@@ -509,7 +509,7 @@ static ADDRESS_MAP_START( dadandrn_map, AS_PROGRAM, 16, mystwarr_state )
AM_RANGE(0x400000, 0x40ffff) AM_READWRITE(k053247_scattered_word_r,k053247_scattered_word_w) AM_SHARE("spriteram")
AM_RANGE(0x410000, 0x411fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM
AM_RANGE(0x412000, 0x413fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM mirror read/write (essential)
- AM_RANGE(0x420000, 0x421fff) AM_RAM_WRITE(paletteram_xrgb_word_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0x420000, 0x421fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x430000, 0x430007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w)
AM_RANGE(0x440000, 0x443fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r)
AM_RANGE(0x450000, 0x45000f) AM_DEVWRITE("k055673", k055673_device, k053246_word_w)
@@ -556,7 +556,7 @@ static ADDRESS_MAP_START( gaiapols_map, AS_PROGRAM, 16, mystwarr_state )
AM_RANGE(0x400000, 0x40ffff) AM_READWRITE(k053247_scattered_word_r,k053247_scattered_word_w) AM_SHARE("spriteram")
AM_RANGE(0x410000, 0x411fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM
AM_RANGE(0x412000, 0x413fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM mirror read / write (essential)
- AM_RANGE(0x420000, 0x421fff) AM_RAM_WRITE(paletteram_xrgb_word_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0x420000, 0x421fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x430000, 0x430007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w)
AM_RANGE(0x440000, 0x441fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r)
AM_RANGE(0x450000, 0x45000f) AM_DEVWRITE("k055673", k055673_device, k053246_word_w)
@@ -1046,7 +1046,7 @@ static MACHINE_CONFIG_START( mystwarr, mystwarr_state )
MCFG_MACHINE_RESET_OVERRIDE(mystwarr_state,mystwarr)
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
// MCFG_SCREEN_REFRESH_RATE(60)
@@ -1056,14 +1056,20 @@ static MACHINE_CONFIG_START( mystwarr, mystwarr_state )
MCFG_SCREEN_VISIBLE_AREA(24, 24+288-1, 16, 16+224-1)
MCFG_SCREEN_UPDATE_DRIVER(mystwarr_state, screen_update_mystwarr)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(XRGB)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_ENABLE_HILIGHTS()
+
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K056832_ADD_NOINTF("k056832"/*, mystwarr_k056832_intf*/)
MCFG_K056832_GFXDECODE("gfxdecode")
+ MCFG_K056832_PALETTE("palette")
MCFG_K055555_ADD("k055555")
MCFG_K055673_ADD_NOINTF("k055673")
MCFG_K055673_GFXDECODE("gfxdecode")
+ MCFG_K055673_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(mystwarr_state,mystwarr)
@@ -1195,7 +1201,12 @@ static MACHINE_CONFIG_DERIVED( martchmp, mystwarr )
MCFG_DEVICE_REMOVE("k053252")
MCFG_K053252_ADD("k053252", 16000000/2, martchmp_k053252_intf)
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_BEFORE_VBLANK)
+ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
+
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_FORMAT(XRGB)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_ENABLE_HILIGHTS()
MCFG_VIDEO_START_OVERRIDE(mystwarr_state,martchmp)
diff --git a/src/mame/drivers/n8080.c b/src/mame/drivers/n8080.c
index bf8cf260efd..5ae0d1a0174 100644
--- a/src/mame/drivers/n8080.c
+++ b/src/mame/drivers/n8080.c
@@ -516,8 +516,8 @@ static MACHINE_CONFIG_START( spacefev, n8080_state )
MCFG_SCREEN_VISIBLE_AREA(0, 255, 16, 239)
MCFG_SCREEN_UPDATE_DRIVER(n8080_state, screen_update_spacefev)
- MCFG_PALETTE_LENGTH(8)
- MCFG_PALETTE_INIT_OVERRIDE(n8080_state,n8080)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(n8080_state,n8080)
MCFG_VIDEO_START_OVERRIDE(n8080_state,spacefev)
MCFG_TIMER_DRIVER_ADD_SCANLINE("rst1", n8080_state, rst1_tick, "screen", 128, 256)
@@ -546,8 +546,8 @@ static MACHINE_CONFIG_START( sheriff, n8080_state )
MCFG_SCREEN_VISIBLE_AREA(0, 255, 16, 239)
MCFG_SCREEN_UPDATE_DRIVER(n8080_state, screen_update_sheriff)
- MCFG_PALETTE_LENGTH(8)
- MCFG_PALETTE_INIT_OVERRIDE(n8080_state,n8080)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(n8080_state,n8080)
MCFG_VIDEO_START_OVERRIDE(n8080_state,sheriff)
MCFG_TIMER_DRIVER_ADD_SCANLINE("rst1", n8080_state, rst1_tick, "screen", 128, 256)
@@ -589,8 +589,8 @@ static MACHINE_CONFIG_START( helifire, n8080_state )
MCFG_SCREEN_UPDATE_DRIVER(n8080_state, screen_update_helifire)
MCFG_SCREEN_VBLANK_DRIVER(n8080_state, screen_eof_helifire)
- MCFG_PALETTE_LENGTH(8 + 0x400)
- MCFG_PALETTE_INIT_OVERRIDE(n8080_state,helifire)
+ MCFG_PALETTE_ADD("palette", 8 + 0x400)
+ MCFG_PALETTE_INIT_OWNER(n8080_state,helifire)
MCFG_VIDEO_START_OVERRIDE(n8080_state,helifire)
MCFG_TIMER_DRIVER_ADD_SCANLINE("rst1", n8080_state, rst1_tick, "screen", 128, 256)
diff --git a/src/mame/drivers/namcofl.c b/src/mame/drivers/namcofl.c
index b2b4a3776bd..f537a99424a 100644
--- a/src/mame/drivers/namcofl.c
+++ b/src/mame/drivers/namcofl.c
@@ -599,7 +599,7 @@ static MACHINE_CONFIG_START( namcofl, namcofl_state )
MCFG_SCREEN_VISIBLE_AREA(0, NAMCOFL_HBSTART-1, 0, NAMCOFL_VBSTART-1)
MCFG_SCREEN_UPDATE_DRIVER(namcofl_state, screen_update_namcofl)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
MCFG_GFXDECODE_ADD("gfxdecode", 2)
diff --git a/src/mame/drivers/namcoic.c b/src/mame/drivers/namcoic.c
index 479e1d88c7e..f9209dee483 100644
--- a/src/mame/drivers/namcoic.c
+++ b/src/mame/drivers/namcoic.c
@@ -275,8 +275,8 @@ void namcos2_shared_state::zdrawgfxzoom(
{
if( gfx )
{
- int shadow_offset = (gfx->machine().config().m_video_attributes&VIDEO_HAS_SHADOWS)?gfx->machine().total_colors():0;
- const pen_t *pal = &gfx->machine().pens[gfx->colorbase() + gfx->granularity() * (color % gfx->colors())];
+ int shadow_offset = (m_palette->shadows_enabled())?m_palette->entries():0;
+ const pen_t *pal = &m_palette->pen(gfx->colorbase() + gfx->granularity() * (color % gfx->colors()));
const UINT8 *source_base = gfx->get_data(code % gfx->elements());
int sprite_screen_height = (scaley*gfx->height()+0x8000)>>16;
int sprite_screen_width = (scalex*gfx->width()+0x8000)>>16;
@@ -1311,7 +1311,8 @@ namco_c45_road_device::namco_c45_road_device(const machine_config &mconfig, cons
: device_t(mconfig, NAMCO_C45_ROAD, "Namco C45 Road", tag, owner, clock, "namco_c45_road", __FILE__),
m_transparent_color(~0),
m_tilemap(NULL),
- m_gfxdecode(*this, "gfxdecode")
+ m_gfxdecode(*this, "gfxdecode"),
+ m_palette(*this)
{
}
@@ -1410,7 +1411,7 @@ void namco_c45_road_device::draw(bitmap_ind16 &bitmap, const rectangle &cliprect
while (numpixels-- > 0)
{
int pen = source_gfx[sourcex >> 16];
- if (colortable_entry_get_value(machine().colortable, pen) != m_transparent_color)
+ if (m_palette->pen_indirect(pen) != m_transparent_color)
{
if (clut != NULL)
pen = (pen & ~0xff) | clut[pen & 0xff];
@@ -1485,3 +1486,13 @@ TILE_GET_INFO_MEMBER( namco_c45_road_device::get_road_info )
int color = data >> 10;
SET_TILE_INFO_MEMBER(m_gfxdecode, 0, tile, color, 0);
}
+
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void namco_c45_road_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<namco_c45_road_device &>(device).m_palette.set_tag(tag);
+}
diff --git a/src/mame/drivers/namcona1.c b/src/mame/drivers/namcona1.c
index 02b562bb1d6..764ceaa11ae 100644
--- a/src/mame/drivers/namcona1.c
+++ b/src/mame/drivers/namcona1.c
@@ -944,8 +944,6 @@ static MACHINE_CONFIG_START( namcona1, namcona1_state )
MCFG_QUANTUM_TIME(attotime::from_hz(2400))
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
@@ -953,7 +951,8 @@ static MACHINE_CONFIG_START( namcona1, namcona1_state )
MCFG_SCREEN_VISIBLE_AREA(8, 38*8-1-8, 4*8, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(namcona1_state, screen_update_namcona1)
- MCFG_PALETTE_LENGTH(0x2000)
+ MCFG_PALETTE_ADD("palette", 0x2000)
+ MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_GFXDECODE_ADD("gfxdecode", empty)
/* sound hardware */
diff --git a/src/mame/drivers/namconb1.c b/src/mame/drivers/namconb1.c
index df8ad565cd9..9bd2d1041c2 100644
--- a/src/mame/drivers/namconb1.c
+++ b/src/mame/drivers/namconb1.c
@@ -1154,7 +1154,6 @@ static MACHINE_CONFIG_START( namconb1, namconb1_state )
MCFG_EEPROM_2816_ADD("eeprom")
MCFG_MACHINE_START_OVERRIDE(namconb1_state,namconb)
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.7)
@@ -1163,7 +1162,10 @@ static MACHINE_CONFIG_START( namconb1, namconb1_state )
MCFG_SCREEN_UPDATE_DRIVER(namconb1_state, screen_update_namconb1)
MCFG_GFXDECODE_ADD("gfxdecode", namconb1)
- MCFG_PALETTE_LENGTH(0x2000)
+
+ MCFG_PALETTE_ADD("palette", 0x2000)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+
MCFG_VIDEO_START_OVERRIDE(namconb1_state,namconb1)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -1186,7 +1188,6 @@ static MACHINE_CONFIG_START( namconb2, namconb1_state )
MCFG_EEPROM_2816_ADD("eeprom")
MCFG_MACHINE_START_OVERRIDE(namconb1_state,namconb)
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.7)
@@ -1195,7 +1196,9 @@ static MACHINE_CONFIG_START( namconb2, namconb1_state )
MCFG_SCREEN_UPDATE_DRIVER(namconb1_state, screen_update_namconb2)
MCFG_GFXDECODE_ADD("gfxdecode", 2)
- MCFG_PALETTE_LENGTH(0x2000)
+ MCFG_PALETTE_ADD("palette", 0x2000)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+
MCFG_VIDEO_START_OVERRIDE(namconb1_state,namconb2)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/namcond1.c b/src/mame/drivers/namcond1.c
index e5d8777d45a..25720540d78 100644
--- a/src/mame/drivers/namcond1.c
+++ b/src/mame/drivers/namcond1.c
@@ -311,7 +311,7 @@ static MACHINE_CONFIG_START( namcond1, namcond1_state )
MCFG_SCREEN_UPDATE_DEVICE("ygv608", ygv608_device, update_screen)
MCFG_GFXDECODE_ADD("gfxdecode", namcond1)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -326,6 +326,7 @@ static MACHINE_CONFIG_START( namcond1, namcond1_state )
MCFG_YGV608_ADD("ygv608")
MCFG_YGV608_GFXDECODE("gfxdecode")
+ MCFG_YGV608_PALETTE("palette")
MACHINE_CONFIG_END
ROM_START( ncv1 )
diff --git a/src/mame/drivers/namcops2.c b/src/mame/drivers/namcops2.c
index 232ede808bd..a9056d87e75 100644
--- a/src/mame/drivers/namcops2.c
+++ b/src/mame/drivers/namcops2.c
@@ -146,7 +146,7 @@ static MACHINE_CONFIG_START( system246, namcops2_state )
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
- MCFG_PALETTE_LENGTH(65536)
+ MCFG_PALETTE_ADD("palette", 65536)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( system256, system246 )
diff --git a/src/mame/drivers/namcos1.c b/src/mame/drivers/namcos1.c
index f5f4c4ffb85..468b247c5e7 100644
--- a/src/mame/drivers/namcos1.c
+++ b/src/mame/drivers/namcos1.c
@@ -1096,15 +1096,15 @@ static MACHINE_CONFIG_START( ns1, namcos1_state )
MCFG_NVRAM_ADD_0FILL("nvram")
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_49_152MHz/8, 384, 9+8*8, 9+44*8, 264, 2*8, 30*8)
MCFG_SCREEN_UPDATE_DRIVER(namcos1_state, screen_update_namcos1)
MCFG_SCREEN_VBLANK_DRIVER(namcos1_state, screen_eof_namcos1)
MCFG_GFXDECODE_ADD("gfxdecode", namcos1)
- MCFG_PALETTE_LENGTH(0x2000)
+
+ MCFG_PALETTE_ADD("palette", 0x2000)
+ MCFG_PALETTE_ENABLE_SHADOWS()
/* sound hardware */
diff --git a/src/mame/drivers/namcos2.c b/src/mame/drivers/namcos2.c
index 3fd8a22cefe..3453fa6f272 100644
--- a/src/mame/drivers/namcos2.c
+++ b/src/mame/drivers/namcos2.c
@@ -1724,8 +1724,6 @@ static MACHINE_CONFIG_START( default, namcos2_state )
MCFG_MACHINE_RESET_OVERRIDE(namcos2_state,namcos2)
MCFG_NVRAM_ADD_1FILL("nvram")
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE( (49152000.0 / 8) / (384 * 264) )
MCFG_SCREEN_SIZE(384, 264)
@@ -1733,7 +1731,9 @@ static MACHINE_CONFIG_START( default, namcos2_state )
MCFG_SCREEN_UPDATE_DRIVER(namcos2_state, screen_update)
MCFG_GFXDECODE_ADD("gfxdecode", namcos2)
- MCFG_PALETTE_LENGTH(0x2000)
+
+ MCFG_PALETTE_ADD("palette", 0x2000)
+ MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -1798,8 +1798,6 @@ static MACHINE_CONFIG_START( gollygho, namcos2_state )
MCFG_MACHINE_RESET_OVERRIDE(namcos2_state,namcos2)
MCFG_NVRAM_ADD_1FILL("nvram")
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE( (49152000.0 / 8) / (384 * 264) )
MCFG_SCREEN_SIZE(384, 264)
@@ -1807,7 +1805,9 @@ static MACHINE_CONFIG_START( gollygho, namcos2_state )
MCFG_SCREEN_UPDATE_DRIVER(namcos2_state, screen_update)
MCFG_GFXDECODE_ADD("gfxdecode", namcos2)
- MCFG_PALETTE_LENGTH(0x2000)
+
+ MCFG_PALETTE_ADD("palette", 0x2000)
+ MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -1845,8 +1845,6 @@ static MACHINE_CONFIG_START( finallap, namcos2_state )
MCFG_MACHINE_RESET_OVERRIDE(namcos2_state,namcos2)
MCFG_NVRAM_ADD_1FILL("nvram")
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE( (49152000.0 / 8) / (384 * 264) )
MCFG_SCREEN_SIZE(384, 264)
@@ -1854,11 +1852,14 @@ static MACHINE_CONFIG_START( finallap, namcos2_state )
MCFG_SCREEN_UPDATE_DRIVER(namcos2_state, screen_update_finallap)
MCFG_GFXDECODE_ADD("gfxdecode", finallap)
- MCFG_PALETTE_LENGTH(0x2000)
+
+ MCFG_PALETTE_ADD("palette", 0x2000)
+ MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_VIDEO_START_OVERRIDE(namcos2_state, finallap)
MCFG_NAMCO_C45_ROAD_ADD("c45_road")
+ MCFG_NAMCO_C45_ROAD_PALETTE("palette")
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -1896,8 +1897,6 @@ static MACHINE_CONFIG_START( sgunner, namcos2_state )
MCFG_MACHINE_RESET_OVERRIDE(namcos2_state,namcos2)
MCFG_NVRAM_ADD_1FILL("nvram")
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE( (49152000.0 / 8) / (384 * 264) )
MCFG_SCREEN_SIZE(384, 264)
@@ -1905,7 +1904,9 @@ static MACHINE_CONFIG_START( sgunner, namcos2_state )
MCFG_SCREEN_UPDATE_DRIVER(namcos2_state, screen_update_sgunner)
MCFG_GFXDECODE_ADD("gfxdecode", sgunner)
- MCFG_PALETTE_LENGTH(0x2000)
+
+ MCFG_PALETTE_ADD("palette", 0x2000)
+ MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_VIDEO_START_OVERRIDE(namcos2_state, sgunner)
@@ -1950,8 +1951,6 @@ static MACHINE_CONFIG_START( sgunner2, namcos2_state )
MCFG_MACHINE_RESET_OVERRIDE(namcos2_state,namcos2)
MCFG_NVRAM_ADD_1FILL("nvram")
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE( (49152000.0 / 8) / (384 * 264) )
MCFG_SCREEN_SIZE(384, 264)
@@ -1959,7 +1958,9 @@ static MACHINE_CONFIG_START( sgunner2, namcos2_state )
MCFG_SCREEN_UPDATE_DRIVER(namcos2_state, screen_update_sgunner)
MCFG_GFXDECODE_ADD("gfxdecode", sgunner)
- MCFG_PALETTE_LENGTH(0x2000)
+
+ MCFG_PALETTE_ADD("palette", 0x2000)
+ MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_VIDEO_START_OVERRIDE(namcos2_state, sgunner)
@@ -1999,8 +2000,6 @@ static MACHINE_CONFIG_START( luckywld, namcos2_state )
MCFG_MACHINE_RESET_OVERRIDE(namcos2_state,namcos2)
MCFG_NVRAM_ADD_1FILL("nvram")
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE( (49152000.0 / 8) / (384 * 264) )
MCFG_SCREEN_SIZE(384, 264)
@@ -2008,11 +2007,14 @@ static MACHINE_CONFIG_START( luckywld, namcos2_state )
MCFG_SCREEN_UPDATE_DRIVER(namcos2_state, screen_update_luckywld)
MCFG_GFXDECODE_ADD("gfxdecode", luckywld)
- MCFG_PALETTE_LENGTH(0x2000)
+
+ MCFG_PALETTE_ADD("palette", 0x2000)
+ MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_VIDEO_START_OVERRIDE(namcos2_state, luckywld)
MCFG_NAMCO_C45_ROAD_ADD("c45_road")
+ MCFG_NAMCO_C45_ROAD_PALETTE("palette")
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -2050,8 +2052,6 @@ static MACHINE_CONFIG_START( metlhawk, namcos2_state )
MCFG_MACHINE_RESET_OVERRIDE(namcos2_state,namcos2)
MCFG_NVRAM_ADD_1FILL("nvram")
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE( (49152000.0 / 8) / (384 * 264) )
MCFG_SCREEN_SIZE(384, 264)
@@ -2059,7 +2059,9 @@ static MACHINE_CONFIG_START( metlhawk, namcos2_state )
MCFG_SCREEN_UPDATE_DRIVER(namcos2_state, screen_update_metlhawk)
MCFG_GFXDECODE_ADD("gfxdecode", metlhawk)
- MCFG_PALETTE_LENGTH(0x2000)
+
+ MCFG_PALETTE_ADD("palette", 0x2000)
+ MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_VIDEO_START_OVERRIDE(namcos2_state, metlhawk)
diff --git a/src/mame/drivers/namcos21.c b/src/mame/drivers/namcos21.c
index 1a7e0f7cb4a..25d97bf91fb 100644
--- a/src/mame/drivers/namcos21.c
+++ b/src/mame/drivers/namcos21.c
@@ -1527,7 +1527,7 @@ static MACHINE_CONFIG_START( namcos21, namcos21_state )
MCFG_SCREEN_UPDATE_DRIVER(namcos21_state, screen_update_namcos21)
MCFG_GFXDECODE_ADD("gfxdecode", namcos21)
- MCFG_PALETTE_LENGTH(NAMCOS21_NUM_COLORS)
+ MCFG_PALETTE_ADD("palette", NAMCOS21_NUM_COLORS)
MCFG_VIDEO_START_OVERRIDE(namcos21_state,namcos21)
@@ -1582,7 +1582,7 @@ static MACHINE_CONFIG_START( driveyes, namcos21_state )
MCFG_SCREEN_UPDATE_DRIVER(namcos21_state, screen_update_namcos21)
MCFG_GFXDECODE_ADD("gfxdecode", namcos21)
- MCFG_PALETTE_LENGTH(NAMCOS21_NUM_COLORS)
+ MCFG_PALETTE_ADD("palette", NAMCOS21_NUM_COLORS)
MCFG_VIDEO_START_OVERRIDE(namcos21_state,namcos21)
@@ -1640,7 +1640,7 @@ static MACHINE_CONFIG_START( winrun, namcos21_state )
MCFG_SCREEN_VISIBLE_AREA(0,495,0,479)
MCFG_SCREEN_UPDATE_DRIVER(namcos21_state, screen_update_namcos21)
- MCFG_PALETTE_LENGTH(NAMCOS21_NUM_COLORS)
+ MCFG_PALETTE_ADD("palette", NAMCOS21_NUM_COLORS)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_VIDEO_START_OVERRIDE(namcos21_state,namcos21)
diff --git a/src/mame/drivers/namcos22.c b/src/mame/drivers/namcos22.c
index 07445b1d04a..83cff89ef8f 100644
--- a/src/mame/drivers/namcos22.c
+++ b/src/mame/drivers/namcos22.c
@@ -3779,7 +3779,7 @@ static MACHINE_CONFIG_START( namcos22, namcos22_state )
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(namcos22_state, screen_update_namcos22)
- MCFG_PALETTE_LENGTH(0x8000)
+ MCFG_PALETTE_ADD("palette", 0x8000)
MCFG_GFXDECODE_ADD("gfxdecode", namcos22)
MCFG_VIDEO_START_OVERRIDE(namcos22_state,namcos22)
@@ -3830,7 +3830,7 @@ static MACHINE_CONFIG_START( namcos22s, namcos22_state )
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(namcos22_state, screen_update_namcos22s)
- MCFG_PALETTE_LENGTH(0x8000)
+ MCFG_PALETTE_ADD("palette", 0x8000)
MCFG_GFXDECODE_ADD("gfxdecode", super)
MCFG_VIDEO_START_OVERRIDE(namcos22_state,namcos22s)
diff --git a/src/mame/drivers/namcos23.c b/src/mame/drivers/namcos23.c
index e9f5821608c..c00a2eee87b 100644
--- a/src/mame/drivers/namcos23.c
+++ b/src/mame/drivers/namcos23.c
@@ -2013,7 +2013,7 @@ void namcos23_state::render_one_model(const namcos23_render_entry *re)
p->front = !(h & 0x00000001);
p->rd.machine = &machine();
p->rd.texture_lookup = render_texture_lookup_nocache_point;
- p->rd.pens = machine().pens + (color << 8);
+ p->rd.pens = m_palette->pens() + (color << 8);
render.poly_count++;
}
@@ -2109,7 +2109,7 @@ WRITE32_MEMBER(namcos23_state::s23_paletteram_w)
int r = nthbyte(m_generic_paletteram_32, which|0x00001);
int g = nthbyte(m_generic_paletteram_32, which|0x10001);
int b = nthbyte(m_generic_paletteram_32, which|0x20001);
- palette_set_color(machine(), which/2, rgb_t(r,g,b));
+ m_palette->set_pen_color(which/2, rgb_t(r,g,b));
}
}
@@ -3455,7 +3455,7 @@ static MACHINE_CONFIG_START( gorgon, namcos23_state )
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
MCFG_SCREEN_UPDATE_DRIVER(namcos23_state, screen_update_s23)
- MCFG_PALETTE_LENGTH(0x8000)
+ MCFG_PALETTE_ADD("palette", 0x8000)
MCFG_NVRAM_ADD_0FILL("nvram")
@@ -3502,7 +3502,7 @@ static MACHINE_CONFIG_START( s23, namcos23_state )
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
MCFG_SCREEN_UPDATE_DRIVER(namcos23_state, screen_update_s23)
- MCFG_PALETTE_LENGTH(0x8000)
+ MCFG_PALETTE_ADD("palette", 0x8000)
MCFG_GFXDECODE_ADD("gfxdecode", namcos23)
@@ -3563,7 +3563,7 @@ static MACHINE_CONFIG_START( ss23, namcos23_state )
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
MCFG_SCREEN_UPDATE_DRIVER(namcos23_state, screen_update_s23)
- MCFG_PALETTE_LENGTH(0x8000)
+ MCFG_PALETTE_ADD("palette", 0x8000)
MCFG_GFXDECODE_ADD("gfxdecode", namcos23)
diff --git a/src/mame/drivers/namcos86.c b/src/mame/drivers/namcos86.c
index 03ed34d01e7..70a00f4adc6 100644
--- a/src/mame/drivers/namcos86.c
+++ b/src/mame/drivers/namcos86.c
@@ -1012,8 +1012,8 @@ static MACHINE_CONFIG_START( hopmappy, namcos86_state )
MCFG_SCREEN_VBLANK_DRIVER(namcos86_state, screen_eof_namcos86)
MCFG_GFXDECODE_ADD("gfxdecode", namcos86)
- MCFG_PALETTE_LENGTH(4096)
-
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_INIT_OWNER(namcos86_state, namcos86)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/naomi.c b/src/mame/drivers/naomi.c
index 16482257d69..4484a46558a 100644
--- a/src/mame/drivers/naomi.c
+++ b/src/mame/drivers/naomi.c
@@ -2516,7 +2516,7 @@ static MACHINE_CONFIG_START( naomi_aw_base, naomi_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(13458568*2, 820, 0, 640, 532, 0, 480) /* TODO: where pclk actually comes? */
MCFG_SCREEN_UPDATE_DEVICE("powervr2", powervr2_device, screen_update)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
MCFG_POWERVR2_ADD("powervr2", WRITE8(dc_state, pvr_irq))
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/naughtyb.c b/src/mame/drivers/naughtyb.c
index 860eb209635..4829b132bf6 100644
--- a/src/mame/drivers/naughtyb.c
+++ b/src/mame/drivers/naughtyb.c
@@ -433,8 +433,8 @@ static MACHINE_CONFIG_START( naughtyb, naughtyb_state )
MCFG_SCREEN_UPDATE_DRIVER(naughtyb_state, screen_update_naughtyb)
MCFG_GFXDECODE_ADD("gfxdecode", naughtyb)
- MCFG_PALETTE_LENGTH(256)
-
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(naughtyb_state, naughtyb)
/* sound hardware */
/* uses the TMS3615NS for sound */
@@ -465,7 +465,8 @@ static MACHINE_CONFIG_START( popflame, naughtyb_state )
MCFG_SCREEN_UPDATE_DRIVER(naughtyb_state, screen_update_naughtyb)
MCFG_GFXDECODE_ADD("gfxdecode", naughtyb)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(naughtyb_state, naughtyb)
/* sound hardware */
diff --git a/src/mame/drivers/nbmj8688.c b/src/mame/drivers/nbmj8688.c
index 6cbb9fe69d3..5d547a7d875 100644
--- a/src/mame/drivers/nbmj8688.c
+++ b/src/mame/drivers/nbmj8688.c
@@ -2781,9 +2781,9 @@ static MACHINE_CONFIG_START( NBMJDRV_4096, nbmj8688_state )
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 240-1)
MCFG_SCREEN_UPDATE_DRIVER(nbmj8688_state, screen_update_mbmj8688)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
- MCFG_PALETTE_INIT_OVERRIDE(nbmj8688_state,mbmj8688_12bit)
+ MCFG_PALETTE_INIT_OWNER(nbmj8688_state,mbmj8688_12bit)
MCFG_VIDEO_START_OVERRIDE(nbmj8688_state,mbmj8688_pure_12bit)
/* sound hardware */
@@ -2802,9 +2802,10 @@ static MACHINE_CONFIG_DERIVED( NBMJDRV_256, NBMJDRV_4096 )
/* basic machine hardware */
/* video hardware */
- MCFG_PALETTE_LENGTH(256)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 256)
- MCFG_PALETTE_INIT_OVERRIDE(nbmj8688_state,mbmj8688_8bit)
+ MCFG_PALETTE_INIT_OWNER(nbmj8688_state,mbmj8688_8bit)
MCFG_VIDEO_START_OVERRIDE(nbmj8688_state,mbmj8688_8bit)
MACHINE_CONFIG_END
@@ -2814,9 +2815,10 @@ static MACHINE_CONFIG_DERIVED( NBMJDRV_65536, NBMJDRV_4096 )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_PALETTE_LENGTH(65536)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 65536)
- MCFG_PALETTE_INIT_OVERRIDE(nbmj8688_state,mbmj8688_16bit)
+ MCFG_PALETTE_INIT_OWNER(nbmj8688_state,mbmj8688_16bit)
MCFG_VIDEO_START_OVERRIDE(nbmj8688_state,mbmj8688_hybrid_16bit)
MACHINE_CONFIG_END
@@ -2925,8 +2927,8 @@ static MACHINE_CONFIG_START( mbmj_p16bit_LCD, nbmj8688_state )
MCFG_NVRAM_ADD_0FILL("nvram")
/* video hardware */
- MCFG_PALETTE_LENGTH(65536)
- MCFG_PALETTE_INIT_OVERRIDE(nbmj8688_state,mbmj8688_16bit)
+ MCFG_PALETTE_ADD("palette", 65536)
+ MCFG_PALETTE_INIT_OWNER(nbmj8688_state,mbmj8688_16bit)
MCFG_DEFAULT_LAYOUT(layout_nbmj8688)
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/nbmj8891.c b/src/mame/drivers/nbmj8891.c
index 99091637018..616dd04214c 100644
--- a/src/mame/drivers/nbmj8891.c
+++ b/src/mame/drivers/nbmj8891.c
@@ -2537,7 +2537,7 @@ static MACHINE_CONFIG_START( gionbana, nbmj8891_state )
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 8, 248-1)
MCFG_SCREEN_UPDATE_DRIVER(nbmj8891_state, screen_update_nbmj8891)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
diff --git a/src/mame/drivers/nbmj8900.c b/src/mame/drivers/nbmj8900.c
index 02335f02c36..344720fa916 100644
--- a/src/mame/drivers/nbmj8900.c
+++ b/src/mame/drivers/nbmj8900.c
@@ -315,7 +315,7 @@ static MACHINE_CONFIG_START( ohpaipee, nbmj8900_state )
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 8, 248-1)
MCFG_SCREEN_UPDATE_DRIVER(nbmj8900_state, screen_update_nbmj8900)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
diff --git a/src/mame/drivers/nbmj8991.c b/src/mame/drivers/nbmj8991.c
index fbb26ebe042..8f02150c545 100644
--- a/src/mame/drivers/nbmj8991.c
+++ b/src/mame/drivers/nbmj8991.c
@@ -1412,7 +1412,7 @@ static MACHINE_CONFIG_START( nbmjdrv1, nbmj8991_state ) // galkoku
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1)
MCFG_SCREEN_UPDATE_DRIVER(nbmj8991_state, screen_update_nbmj8991_type1)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1447,7 +1447,7 @@ static MACHINE_CONFIG_START( nbmjdrv2, nbmj8991_state ) // pstadium
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1)
MCFG_SCREEN_UPDATE_DRIVER(nbmj8991_state, screen_update_nbmj8991_type2)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/nbmj9195.c b/src/mame/drivers/nbmj9195.c
index 84c7b92e640..bd145898f3b 100644
--- a/src/mame/drivers/nbmj9195.c
+++ b/src/mame/drivers/nbmj9195.c
@@ -3179,7 +3179,7 @@ static MACHINE_CONFIG_START( NBMJDRV1, nbmj9195_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1)
MCFG_SCREEN_UPDATE_DRIVER(nbmj9195_state, screen_update_nbmj9195)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
@@ -3210,7 +3210,8 @@ static MACHINE_CONFIG_DERIVED( NBMJDRV3, NBMJDRV1 )
/* basic machine hardware */
/* video hardware */
- MCFG_PALETTE_LENGTH(512)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_VIDEO_START_OVERRIDE(nbmj9195_state,nbmj9195_nb22090)
MCFG_SCREEN_MODIFY("screen")
diff --git a/src/mame/drivers/nemesis.c b/src/mame/drivers/nemesis.c
index 17433c16974..f324e075a23 100644
--- a/src/mame/drivers/nemesis.c
+++ b/src/mame/drivers/nemesis.c
@@ -1561,7 +1561,7 @@ static MACHINE_CONFIG_START( nemesis, nemesis_state )
MCFG_SCREEN_UPDATE_DRIVER(nemesis_state, screen_update_nemesis)
MCFG_GFXDECODE_ADD("gfxdecode", nemesis)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
/* sound hardware */
@@ -1612,7 +1612,7 @@ static MACHINE_CONFIG_START( gx400, nemesis_state )
MCFG_SCREEN_UPDATE_DRIVER(nemesis_state, screen_update_nemesis)
MCFG_GFXDECODE_ADD("gfxdecode", nemesis)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
/* sound hardware */
@@ -1665,7 +1665,7 @@ static MACHINE_CONFIG_START( konamigt, nemesis_state )
MCFG_SCREEN_UPDATE_DRIVER(nemesis_state, screen_update_nemesis)
MCFG_GFXDECODE_ADD("gfxdecode", nemesis)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
/* sound hardware */
@@ -1716,7 +1716,7 @@ static MACHINE_CONFIG_START( rf2_gx400, nemesis_state )
MCFG_SCREEN_UPDATE_DRIVER(nemesis_state, screen_update_nemesis)
MCFG_GFXDECODE_ADD("gfxdecode", nemesis)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
/* sound hardware */
@@ -1771,7 +1771,7 @@ static MACHINE_CONFIG_START( salamand, nemesis_state )
MCFG_SCREEN_UPDATE_DRIVER(nemesis_state, screen_update_nemesis)
MCFG_GFXDECODE_ADD("gfxdecode", nemesis)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
/* sound hardware */
@@ -1817,7 +1817,7 @@ static MACHINE_CONFIG_START( blkpnthr, nemesis_state )
MCFG_SCREEN_UPDATE_DRIVER(nemesis_state, screen_update_nemesis)
MCFG_GFXDECODE_ADD("gfxdecode", nemesis)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
/* sound hardware */
@@ -1859,7 +1859,7 @@ static MACHINE_CONFIG_START( citybomb, nemesis_state )
MCFG_SCREEN_UPDATE_DRIVER(nemesis_state, screen_update_nemesis)
MCFG_GFXDECODE_ADD("gfxdecode", nemesis)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
/* sound hardware */
@@ -1905,7 +1905,7 @@ static MACHINE_CONFIG_START( nyanpani, nemesis_state )
MCFG_SCREEN_UPDATE_DRIVER(nemesis_state, screen_update_nemesis)
MCFG_GFXDECODE_ADD("gfxdecode", nemesis)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
/* sound hardware */
@@ -1949,7 +1949,7 @@ static MACHINE_CONFIG_START( hcrash, nemesis_state )
MCFG_SCREEN_UPDATE_DRIVER(nemesis_state, screen_update_nemesis)
MCFG_GFXDECODE_ADD("gfxdecode", nemesis)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
/* sound hardware */
@@ -2701,7 +2701,7 @@ static MACHINE_CONFIG_START( bubsys, nemesis_state )
MCFG_SCREEN_UPDATE_DRIVER(nemesis_state, screen_update_nemesis)
MCFG_GFXDECODE_ADD("gfxdecode", nemesis)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
/* sound hardware */
diff --git a/src/mame/drivers/neoprint.c b/src/mame/drivers/neoprint.c
index 1f328649259..66df6fb7e44 100644
--- a/src/mame/drivers/neoprint.c
+++ b/src/mame/drivers/neoprint.c
@@ -113,10 +113,10 @@ void neoprint_state::draw_layer(bitmap_ind16 &bitmap,const rectangle &cliprect,i
UINT8 fx = (m_npvidram[i*2+1] & 0x0040);
UINT8 fy = (m_npvidram[i*2+1] & 0x0080);
- gfx->transpen(bitmap,cliprect,dat,color,fx,fy,x*16+scrollx,y*16-scrolly,0);
- gfx->transpen(bitmap,cliprect,dat,color,fx,fy,x*16+scrollx-512,y*16-scrolly,0);
- gfx->transpen(bitmap,cliprect,dat,color,fx,fy,x*16+scrollx,y*16-scrolly-512,0);
- gfx->transpen(bitmap,cliprect,dat,color,fx,fy,x*16+scrollx-512,y*16-scrolly-512,0);
+ gfx->transpen(m_palette,bitmap,cliprect,dat,color,fx,fy,x*16+scrollx,y*16-scrolly,0);
+ gfx->transpen(m_palette,bitmap,cliprect,dat,color,fx,fy,x*16+scrollx-512,y*16-scrolly,0);
+ gfx->transpen(m_palette,bitmap,cliprect,dat,color,fx,fy,x*16+scrollx,y*16-scrolly-512,0);
+ gfx->transpen(m_palette,bitmap,cliprect,dat,color,fx,fy,x*16+scrollx-512,y*16-scrolly-512,0);
i++;
//i&=0x3ff;
@@ -233,7 +233,7 @@ static ADDRESS_MAP_START( neoprint_map, AS_PROGRAM, 16, neoprint_state )
AM_RANGE(0x200000, 0x20ffff) AM_RAM
AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x400000, 0x43ffff) AM_RAM AM_SHARE("npvidram")
- AM_RANGE(0x500000, 0x51ffff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x500000, 0x51ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x600000, 0x600001) AM_READWRITE(neoprint_audio_result_r,audio_command_w)
AM_RANGE(0x600002, 0x600003) AM_READWRITE(neoprint_calendar_r,neoprint_calendar_w)
AM_RANGE(0x600004, 0x600005) AM_READ_PORT("SYSTEM") AM_WRITENOP
@@ -271,7 +271,7 @@ WRITE16_MEMBER(neoprint_state::nprsp_palette_w)
pal_entry = ((offset & 0xfffe) >> 1) + ((offset & 0x20000) ? 0x8000 : 0);
- palette_set_color(machine(), pal_entry, rgb_t(r,g,b));
+ m_palette->set_pen_color(pal_entry, rgb_t(r,g,b));
}
}
@@ -488,8 +488,8 @@ static MACHINE_CONFIG_START( neoprint, neoprint_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(neoprint_state, screen_update_neoprint)
- MCFG_PALETTE_LENGTH(0x10000)
-
+ MCFG_PALETTE_ADD("palette", 0x10000)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -530,8 +530,8 @@ static MACHINE_CONFIG_START( nprsp, neoprint_state )
MCFG_MACHINE_RESET_OVERRIDE(neoprint_state,nprsp)
- MCFG_PALETTE_LENGTH(0x10000)
-
+ MCFG_PALETTE_ADD("palette", 0x10000)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/neptunp2.c b/src/mame/drivers/neptunp2.c
index 5bbb57917a9..9c8917fd344 100644
--- a/src/mame/drivers/neptunp2.c
+++ b/src/mame/drivers/neptunp2.c
@@ -104,7 +104,7 @@ static MACHINE_CONFIG_START( neptunp2, neptunp2_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_GFXDECODE_ADD("gfxdecode", neptunp2)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/news.c b/src/mame/drivers/news.c
index ec5290c4e37..71e81e385fc 100644
--- a/src/mame/drivers/news.c
+++ b/src/mame/drivers/news.c
@@ -23,7 +23,7 @@ static ADDRESS_MAP_START( news_map, AS_PROGRAM, 8, news_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM /* 4000-7fff is written to during startup, probably leftover code */
AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(news_fgram_w) AM_SHARE("fgram")
AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(news_bgram_w) AM_SHARE("bgram")
- AM_RANGE(0x9000, 0x91ff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0x9000, 0x91ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xc000, 0xc000) AM_READ_PORT("DSW")
AM_RANGE(0xc001, 0xc001) AM_READ_PORT("INPUTS")
AM_RANGE(0xc002, 0xc002) AM_DEVREADWRITE("oki", okim6295_device, read, write)
@@ -140,8 +140,8 @@ static MACHINE_CONFIG_START( news, news_state )
MCFG_SCREEN_UPDATE_DRIVER(news_state, screen_update_news)
MCFG_GFXDECODE_ADD("gfxdecode", news)
- MCFG_PALETTE_LENGTH(0x100)
-
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/nexus3d.c b/src/mame/drivers/nexus3d.c
index 2e3568aff30..314dd094857 100644
--- a/src/mame/drivers/nexus3d.c
+++ b/src/mame/drivers/nexus3d.c
@@ -126,7 +126,7 @@ static MACHINE_CONFIG_START( nexus3d, nexus3d_state )
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(nexus3d_state, screen_update_nexus3d)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_SERFLASH_ADD("flash")
diff --git a/src/mame/drivers/nightgal.c b/src/mame/drivers/nightgal.c
index dc06762ccd7..9fbbd068120 100644
--- a/src/mame/drivers/nightgal.c
+++ b/src/mame/drivers/nightgal.c
@@ -103,7 +103,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(nightgal);
UINT32 screen_update_nightgal(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
protected:
@@ -156,8 +156,8 @@ UINT32 nightgal_state::screen_update_nightgal(screen_device &screen, bitmap_ind1
for (x = cliprect.min_x; x <= cliprect.max_x; x += 2)
{
UINT32 srcpix = *src++;
- *dst++ = machine().pens[srcpix & 0xf];
- *dst++ = machine().pens[(srcpix >> 4) & 0xf];
+ *dst++ = m_palette->pen(srcpix & 0xf);
+ *dst++ = m_palette->pen((srcpix >> 4) & 0xf);
}
}
@@ -302,7 +302,7 @@ WRITE8_MEMBER(nightgal_state::sexygal_nsc_true_blitter_w)
}
/* guess: use the same resistor values as Crazy Climber (needs checking on the real HW) */
-void nightgal_state::palette_init()
+PALETTE_INIT_MEMBER(nightgal_state, nightgal)
{
const UINT8 *color_prom = memregion("proms")->base();
static const int resistances_rg[3] = { 1000, 470, 220 };
@@ -316,7 +316,7 @@ void nightgal_state::palette_init()
2, resistances_b, weights_b, 0, 0,
0, 0, 0, 0, 0);
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2;
int r, g, b;
@@ -338,7 +338,7 @@ void nightgal_state::palette_init()
bit1 = BIT(color_prom[i], 7);
b = combine_2_weights(weights_b, bit0, bit1);
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -923,8 +923,8 @@ static MACHINE_CONFIG_START( royalqn, nightgal_state )
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(nightgal_state, screen_update_nightgal)
- MCFG_PALETTE_LENGTH(0x10)
-
+ MCFG_PALETTE_ADD("palette", 0x10)
+ MCFG_PALETTE_INIT_OWNER(nightgal_state, nightgal)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/ninjakd2.c b/src/mame/drivers/ninjakd2.c
index 1fdb7c55ecd..f53e697af47 100644
--- a/src/mame/drivers/ninjakd2.c
+++ b/src/mame/drivers/ninjakd2.c
@@ -369,7 +369,7 @@ static ADDRESS_MAP_START( ninjakd2_main_cpu, AS_PROGRAM, 8, ninjakd2_state )
AM_RANGE(0xc202, 0xc202) AM_WRITE(ninjakd2_bankselect_w)
AM_RANGE(0xc203, 0xc203) AM_WRITE(ninjakd2_sprite_overdraw_w)
AM_RANGE(0xc208, 0xc20c) AM_WRITE(ninjakd2_bg_ctrl_w)
- AM_RANGE(0xc800, 0xcdff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0xc800, 0xcdff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(ninjakd2_fgvideoram_w) AM_SHARE("fg_videoram")
AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(ninjakd2_bgvideoram_w) AM_SHARE("bg_videoram")
AM_RANGE(0xe000, 0xf9ff) AM_RAM
@@ -384,7 +384,7 @@ static ADDRESS_MAP_START( mnight_main_cpu, AS_PROGRAM, 8, ninjakd2_state )
AM_RANGE(0xda00, 0xdfff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(ninjakd2_bgvideoram_w) AM_SHARE("bg_videoram")
AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(ninjakd2_fgvideoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xf000, 0xf5ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0xf000, 0xf5ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xf800, 0xf800) AM_READ_PORT("KEYCOIN")
AM_RANGE(0xf801, 0xf801) AM_READ_PORT("PAD1")
AM_RANGE(0xf802, 0xf802) AM_READ_PORT("PAD2")
@@ -401,7 +401,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( robokid_main_cpu, AS_PROGRAM, 8, ninjakd2_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0xc000, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(ninjakd2_fgvideoram_w) AM_SHARE("fg_videoram")
AM_RANGE(0xd000, 0xd3ff) AM_READWRITE(robokid_bg2_videoram_r, robokid_bg2_videoram_w) // banked
AM_RANGE(0xd400, 0xd7ff) AM_READWRITE(robokid_bg1_videoram_r, robokid_bg1_videoram_w) // banked
@@ -442,7 +442,7 @@ static ADDRESS_MAP_START( omegaf_main_cpu, AS_PROGRAM, 8, ninjakd2_state )
AM_RANGE(0xc800, 0xcbff) AM_READWRITE(robokid_bg1_videoram_r, robokid_bg1_videoram_w) // banked
AM_RANGE(0xcc00, 0xcfff) AM_READWRITE(robokid_bg2_videoram_r, robokid_bg2_videoram_w) // banked
AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(ninjakd2_fgvideoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0xd800, 0xdfff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xe000, 0xf9ff) AM_RAM
AM_RANGE(0xfa00, 0xffff) AM_RAM AM_SHARE("spriteram")
ADDRESS_MAP_END
@@ -948,7 +948,8 @@ static MACHINE_CONFIG_START( ninjakd2, ninjakd2_state )
MCFG_SCREEN_VBLANK_DRIVER(ninjakd2_state, screen_eof_ninjakd2)
MCFG_GFXDECODE_ADD("gfxdecode", ninjakd2)
- MCFG_PALETTE_LENGTH(0x300)
+ MCFG_PALETTE_ADD("palette", 0x300)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1005,7 +1006,9 @@ static MACHINE_CONFIG_DERIVED( robokid, mnight )
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", robokid)
- MCFG_PALETTE_LENGTH(0x400) // RAM is this large, but still only 0x300 colors used
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 0x400) // RAM is this large, but still only 0x300 colors used
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
MCFG_VIDEO_START_OVERRIDE(ninjakd2_state,robokid)
MCFG_SCREEN_MODIFY("screen")
diff --git a/src/mame/drivers/ninjaw.c b/src/mame/drivers/ninjaw.c
index b566aecb155..d08d3bac98b 100644
--- a/src/mame/drivers/ninjaw.c
+++ b/src/mame/drivers/ninjaw.c
@@ -814,7 +814,7 @@ static MACHINE_CONFIG_START( ninjaw, ninjaw_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", ninjaw)
- MCFG_PALETTE_LENGTH(4096*3)
+ MCFG_PALETTE_ADD("palette", 4096*3)
MCFG_DEFAULT_LAYOUT(layout_darius)
MCFG_SCREEN_ADD("lscreen", RASTER)
@@ -846,9 +846,12 @@ static MACHINE_CONFIG_START( ninjaw, ninjaw_state )
MCFG_TC0100SCN_ADD("tc0100scn_3", darius2_tc0100scn_intf_r)
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
MCFG_TC0110PCR_ADD("tc0110pcr_1", darius2_tc0110pcr_intf_l)
+ MCFG_TC0110PCR_PALETTE("palette")
MCFG_TC0110PCR_ADD("tc0110pcr_2", darius2_tc0110pcr_intf_m)
+ MCFG_TC0110PCR_PALETTE("palette")
MCFG_TC0110PCR_ADD("tc0110pcr_3", darius2_tc0110pcr_intf_r)
-
+ MCFG_TC0110PCR_PALETTE("palette")
+
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -897,7 +900,7 @@ static MACHINE_CONFIG_START( darius2, ninjaw_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", ninjaw)
- MCFG_PALETTE_LENGTH(4096*3)
+ MCFG_PALETTE_ADD("palette", 4096*3)
MCFG_DEFAULT_LAYOUT(layout_darius)
MCFG_SCREEN_ADD("lscreen", RASTER)
@@ -929,8 +932,11 @@ static MACHINE_CONFIG_START( darius2, ninjaw_state )
MCFG_TC0100SCN_ADD("tc0100scn_3", darius2_tc0100scn_intf_r)
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
MCFG_TC0110PCR_ADD("tc0110pcr_1", darius2_tc0110pcr_intf_l)
+ MCFG_TC0110PCR_PALETTE("palette")
MCFG_TC0110PCR_ADD("tc0110pcr_2", darius2_tc0110pcr_intf_m)
+ MCFG_TC0110PCR_PALETTE("palette")
MCFG_TC0110PCR_ADD("tc0110pcr_3", darius2_tc0110pcr_intf_r)
+ MCFG_TC0110PCR_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/nitedrvr.c b/src/mame/drivers/nitedrvr.c
index 86f8204b23b..9e4495f7a83 100644
--- a/src/mame/drivers/nitedrvr.c
+++ b/src/mame/drivers/nitedrvr.c
@@ -154,9 +154,8 @@ static MACHINE_CONFIG_START( nitedrvr, nitedrvr_state )
MCFG_SCREEN_UPDATE_DRIVER(nitedrvr_state, screen_update_nitedrvr)
MCFG_GFXDECODE_ADD("gfxdecode", nitedrvr)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/niyanpai.c b/src/mame/drivers/niyanpai.c
index eb2d546d59b..73d604a3fed 100644
--- a/src/mame/drivers/niyanpai.c
+++ b/src/mame/drivers/niyanpai.c
@@ -966,7 +966,7 @@ static MACHINE_CONFIG_START( niyanpai, niyanpai_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1)
MCFG_SCREEN_UPDATE_DRIVER(niyanpai_state, screen_update_niyanpai)
- MCFG_PALETTE_LENGTH(256*3)
+ MCFG_PALETTE_ADD("palette", 256*3)
/* sound hardware */
diff --git a/src/mame/drivers/nmg5.c b/src/mame/drivers/nmg5.c
index 4f3dba0eb19..4c238036d49 100644
--- a/src/mame/drivers/nmg5.c
+++ b/src/mame/drivers/nmg5.c
@@ -354,7 +354,7 @@ WRITE8_MEMBER(nmg5_state::oki_banking_w)
static ADDRESS_MAP_START( nmg5_map, AS_PROGRAM, 16, nmg5_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x120000, 0x12ffff) AM_RAM
- AM_RANGE(0x140000, 0x1407ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x140000, 0x1407ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x180000, 0x180001) AM_WRITE(nmg5_soundlatch_w)
AM_RANGE(0x180002, 0x180003) AM_WRITENOP
@@ -374,7 +374,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( pclubys_map, AS_PROGRAM, 16, nmg5_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x200000, 0x20ffff) AM_RAM
- AM_RANGE(0x440000, 0x4407ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x440000, 0x4407ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x460000, 0x4607ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x480000, 0x480001) AM_WRITE(nmg5_soundlatch_w)
AM_RANGE(0x480002, 0x480003) AM_WRITENOP
@@ -1020,8 +1020,8 @@ static MACHINE_CONFIG_START( nmg5, nmg5_state )
MCFG_SCREEN_UPDATE_DRIVER(nmg5_state, screen_update_nmg5)
MCFG_GFXDECODE_ADD("gfxdecode", nmg5)
- MCFG_PALETTE_LENGTH(0x400)
-
+ MCFG_PALETTE_ADD("palette", 0x400)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 1);
@@ -1029,6 +1029,7 @@ static MACHINE_CONFIG_START( nmg5, nmg5_state )
decospr_device::set_flipallx(*device, 1);
decospr_device::set_offsets(*device, 0,8);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
/* sound hardware */
diff --git a/src/mame/drivers/nmk16.c b/src/mame/drivers/nmk16.c
index 82683a14326..ae9ae793095 100644
--- a/src/mame/drivers/nmk16.c
+++ b/src/mame/drivers/nmk16.c
@@ -310,7 +310,7 @@ static ADDRESS_MAP_START( vandyke_map, AS_PROGRAM, 16, nmk16_state )
AM_RANGE(0x080016, 0x080017) AM_WRITENOP /* IRQ enable? */
AM_RANGE(0x080018, 0x080019) AM_WRITE(nmk_tilebank_w)
AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE("nmk004", nmk004_device, write)
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x08c000, 0x08c007) AM_WRITE(vandyke_scroll_w)
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x094000, 0x097fff) AM_RAM /* what is this? */
@@ -329,7 +329,7 @@ static ADDRESS_MAP_START( vandykeb_map, AS_PROGRAM, 16, nmk16_state )
AM_RANGE(0x080018, 0x080019) AM_WRITE(nmk_tilebank_w)
AM_RANGE(0x080010, 0x08001d) AM_WRITE(vandykeb_scroll_w) /* 10, 12, 1a, 1c */
AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE("nmk004", nmk004_device, write)
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x08c000, 0x08c007) AM_WRITENOP /* just in case... */
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x094000, 0x097fff) AM_RAM /* what is this? */
@@ -347,7 +347,7 @@ static ADDRESS_MAP_START( manybloc_map, AS_PROGRAM, 16, nmk16_state )
AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w)
AM_RANGE(0x08001c, 0x08001d) AM_WRITENOP /* See notes at the top of the driver */
AM_RANGE(0x08001e, 0x08001f) AM_READWRITE(soundlatch2_word_r,soundlatch_word_w)
- AM_RANGE(0x088000, 0x0883ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x088000, 0x0883ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x09c000, 0x09cfff) AM_RAM_WRITE(manybloc_scroll_w) AM_SHARE("scrollram")
AM_RANGE(0x09d000, 0x09d7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
@@ -366,7 +366,7 @@ static ADDRESS_MAP_START( tharrier_map, AS_PROGRAM, 16, nmk16_state )
// AM_RANGE(0x080018, 0x080019) AM_WRITE(nmk_tilebank_w)
AM_RANGE(0x08001e, 0x08001f) AM_WRITE(soundlatch_word_w)
AM_RANGE(0x080202, 0x080203) AM_READ_PORT("IN2")
- AM_RANGE(0x088000, 0x0883ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x088000, 0x0883ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
// AM_RANGE(0x08c000, 0x08c007) AM_WRITE(nmk_scroll_w)
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x09c000, 0x09c7ff) AM_RAM /* Unused txvideoram area? */
@@ -401,7 +401,7 @@ static ADDRESS_MAP_START( mustang_map, AS_PROGRAM, 16, nmk16_state )
AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w)
AM_RANGE(0x080016, 0x080017) AM_WRITENOP // frame number?
AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE("nmk004", nmk004_device, write)
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x08c000, 0x08c001) AM_WRITE(mustang_scroll_w)
AM_RANGE(0x08c002, 0x08c087) AM_WRITENOP // ??
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
@@ -418,7 +418,7 @@ static ADDRESS_MAP_START( mustangb_map, AS_PROGRAM, 16, nmk16_state )
AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w)
AM_RANGE(0x080016, 0x080017) AM_WRITENOP // frame number?
AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_mustb_w)
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x08c000, 0x08c001) AM_WRITE(mustang_scroll_w)
AM_RANGE(0x08c002, 0x08c087) AM_WRITENOP // ??
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
@@ -436,7 +436,7 @@ static ADDRESS_MAP_START( twinactn_map, AS_PROGRAM, 16, nmk16_state )
AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w)
AM_RANGE(0x080016, 0x080017) AM_WRITENOP // frame number?
AM_RANGE(0x08001e, 0x08001f) AM_WRITE(afega_soundlatch_w)
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x08c000, 0x08c001) AM_WRITE(mustang_scroll_w)
AM_RANGE(0x08c002, 0x08c087) AM_WRITENOP // ??
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
@@ -457,7 +457,7 @@ static ADDRESS_MAP_START( acrobatm_map, AS_PROGRAM, 16, nmk16_state )
AM_RANGE(0xc0016, 0xc0017) AM_WRITENOP
AM_RANGE(0xc0018, 0xc0019) AM_WRITE(nmk_tilebank_w)
AM_RANGE(0xc001e, 0xc001f) AM_DEVWRITE("nmk004", nmk004_device, write)
- AM_RANGE(0xc4000, 0xc45ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xc4000, 0xc45ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xc8000, 0xc8007) AM_RAM_WRITE(nmk_scroll_w)
AM_RANGE(0xcc000, 0xcffff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0xd4000, 0xd47ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
@@ -473,7 +473,7 @@ static ADDRESS_MAP_START( bioship_map, AS_PROGRAM, 16, nmk16_state )
// AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w)
AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE("nmk004", nmk004_device, write)
AM_RANGE(0x084000, 0x084001) AM_WRITE(bioship_bank_w)
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x08c000, 0x08c007) AM_RAM_WRITE(bioshipbg_scroll_w)
AM_RANGE(0x08c010, 0x08c017) AM_RAM_WRITE(bioship_scroll_w)
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
@@ -652,7 +652,7 @@ static ADDRESS_MAP_START( hachamf_map, AS_PROGRAM, 16, nmk16_state )
AM_RANGE(0x080018, 0x080019) AM_WRITE(nmk_tilebank_w)
AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE("nmk004", nmk004_device, write)
/* Video Region */
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x08c000, 0x08c007) AM_WRITE(nmk_scroll_w)
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
@@ -884,7 +884,7 @@ static ADDRESS_MAP_START( tdragon_map, AS_PROGRAM, 16, nmk16_state )
AM_RANGE(0x0c0018, 0x0c0019) AM_WRITE(nmk_tilebank_w) /* Tile Bank ? */
AM_RANGE(0x0c001e, 0x0c001f) AM_DEVWRITE("nmk004", nmk004_device, write)
AM_RANGE(0x0c4000, 0x0c4007) AM_RAM_WRITE(nmk_scroll_w)
- AM_RANGE(0x0c8000, 0x0c87ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0c8000, 0x0c87ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0cc000, 0x0cffff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x0d0000, 0x0d07ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
ADDRESS_MAP_END
@@ -907,7 +907,7 @@ static ADDRESS_MAP_START( tdragonb_map, AS_PROGRAM, 16, nmk16_state )
AM_RANGE(0x0c0018, 0x0c0019) AM_WRITE(nmk_tilebank_w) /* Tile Bank ? */
AM_RANGE(0x0c001e, 0x0c001f) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_mustb_w)
AM_RANGE(0x0c4000, 0x0c4007) AM_RAM_WRITE(nmk_scroll_w)
- AM_RANGE(0x0c8000, 0x0c87ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0c8000, 0x0c87ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0cc000, 0x0cffff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x0d0000, 0x0d07ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
ADDRESS_MAP_END
@@ -923,7 +923,7 @@ static ADDRESS_MAP_START( ssmissin_map, AS_PROGRAM, 16, nmk16_state )
AM_RANGE(0x0c0018, 0x0c0019) AM_WRITE(nmk_tilebank_w) /* Tile Bank ? */
AM_RANGE(0x0c001e, 0x0c001f) AM_WRITE(ssmissin_sound_w)
AM_RANGE(0x0c4000, 0x0c4007) AM_RAM_WRITE(nmk_scroll_w)
- AM_RANGE(0x0c8000, 0x0c87ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0c8000, 0x0c87ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0cc000, 0x0cffff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x0d0000, 0x0d07ff) AM_MIRROR(0x1800) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") //mirror for airattck
ADDRESS_MAP_END
@@ -948,7 +948,7 @@ static ADDRESS_MAP_START( strahl_map, AS_PROGRAM, 16, nmk16_state )
AM_RANGE(0x8001e, 0x8001f) AM_DEVWRITE("nmk004", nmk004_device, write)
AM_RANGE(0x84000, 0x84007) AM_RAM_WRITE(nmk_scroll_w)
AM_RANGE(0x88000, 0x88007) AM_RAM_WRITE(nmk_scroll_2_w)
- AM_RANGE(0x8c000, 0x8c7ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x8c000, 0x8c7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x90000, 0x93fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x94000, 0x97fff) AM_RAM_WRITE(nmk_fgvideoram_w) AM_SHARE("nmk_fgvideoram")
AM_RANGE(0x9c000, 0x9c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
@@ -966,7 +966,7 @@ static ADDRESS_MAP_START( macross_map, AS_PROGRAM, 16, nmk16_state )
AM_RANGE(0x080016, 0x080017) AM_WRITENOP /* IRQ enable? */
AM_RANGE(0x080018, 0x080019) AM_WRITE(nmk_tilebank_w)
AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE("nmk004", nmk004_device, write)
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x08c000, 0x08c007) AM_RAM_WRITE(nmk_scroll_w)
AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram")
@@ -984,7 +984,7 @@ static ADDRESS_MAP_START( gunnail_map, AS_PROGRAM, 16, nmk16_state )
AM_RANGE(0x080016, 0x080017) AM_WRITENOP /* IRQ enable? */
AM_RANGE(0x080018, 0x080019) AM_WRITE(nmk_tilebank_w)
AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE("nmk004", nmk004_device, write)
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x08c000, 0x08c1ff) AM_WRITEONLY AM_SHARE("scrollram")
AM_RANGE(0x08c200, 0x08c3ff) AM_WRITEONLY AM_SHARE("scrollramy")
AM_RANGE(0x08c400, 0x08c7ff) AM_WRITEONLY // unknown
@@ -1004,7 +1004,7 @@ static ADDRESS_MAP_START( macross2_map, AS_PROGRAM, 16, nmk16_state )
AM_RANGE(0x100016, 0x100017) AM_WRITE(macross2_sound_reset_w) /* Z80 reset */
AM_RANGE(0x100018, 0x100019) AM_WRITE(nmk_tilebank_w)
AM_RANGE(0x10001e, 0x10001f) AM_WRITE(macross2_sound_command_w) /* to Z80 */
- AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x120000, 0x1207ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x130000, 0x1301ff) AM_RAM AM_SHARE("scrollram")
AM_RANGE(0x130200, 0x1303ff) AM_RAM AM_SHARE("scrollramy")
@@ -1030,7 +1030,7 @@ static ADDRESS_MAP_START( raphero_map, AS_PROGRAM, 16, nmk16_state )
AM_RANGE(0x100016, 0x100017) AM_WRITENOP /* IRQ enable or z80 sound reset like in Macross 2? */
AM_RANGE(0x100018, 0x100019) AM_WRITE(nmk_tilebank_w)
AM_RANGE(0x10001e, 0x10001f) AM_WRITE(macross2_sound_command_w) /* to Z80 */
- AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x120000, 0x1207ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x130000, 0x1301ff) AM_RAM AM_SHARE("scrollram")
AM_RANGE(0x130200, 0x1303ff) AM_RAM AM_SHARE("scrollramy")
@@ -1092,7 +1092,7 @@ static ADDRESS_MAP_START( bjtwin_map, AS_PROGRAM, 16, nmk16_state )
AM_RANGE(0x084000, 0x084001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
AM_RANGE(0x084010, 0x084011) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff)
AM_RANGE(0x084020, 0x08402f) AM_DEVWRITE("nmk112", nmk112_device, okibank_lsb_w)
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x094000, 0x094001) AM_WRITE(nmk_tilebank_w)
AM_RANGE(0x094002, 0x094003) AM_WRITENOP /* IRQ enable? */
AM_RANGE(0x09c000, 0x09cfff) AM_MIRROR(0x1000) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
@@ -1118,7 +1118,7 @@ static ADDRESS_MAP_START( atombjt_map, AS_PROGRAM, 16, nmk16_state )
// AM_RANGE(0x084000, 0x084001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
// AM_RANGE(0x084010, 0x084011) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff)
// AM_RANGE(0x084020, 0x08402f) AM_DEVWRITE("nmk112", nmk112_device, okibank_lsb_w)
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x094000, 0x094001) AM_WRITE(nmk_tilebank_w)
AM_RANGE(0x094002, 0x094003) AM_WRITENOP /* IRQ enable? */
AM_RANGE(0x09c000, 0x09cfff) AM_MIRROR(0x1000) AM_RAM_WRITE(nmk_bgvideoram0_w) AM_SHARE("nmk_bgvideoram0")
@@ -3654,8 +3654,8 @@ static MACHINE_CONFIG_START( tharrier, nmk16_state )
MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE_ADD("gfxdecode", tharrier)
- MCFG_PALETTE_LENGTH(512)
-
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross)
/* sound hardware */
@@ -3698,7 +3698,8 @@ static MACHINE_CONFIG_START( manybloc, nmk16_state )
MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE_ADD("gfxdecode", tharrier)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross)
@@ -3738,7 +3739,8 @@ static MACHINE_CONFIG_START( mustang, nmk16_state )
MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE_ADD("gfxdecode", macross)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross)
@@ -3782,7 +3784,8 @@ static MACHINE_CONFIG_START( mustangb, nmk16_state )
MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE_ADD("gfxdecode", macross)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross)
@@ -3812,7 +3815,8 @@ static MACHINE_CONFIG_START( bioship, nmk16_state )
MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE_ADD("gfxdecode", bioship)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(nmk16_state,bioship)
@@ -3854,7 +3858,8 @@ static MACHINE_CONFIG_START( vandyke, nmk16_state )
MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE_ADD("gfxdecode", macross)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross)
@@ -3899,7 +3904,8 @@ static MACHINE_CONFIG_START( vandykeb, nmk16_state )
MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE_ADD("gfxdecode", macross)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross)
@@ -3930,7 +3936,8 @@ static MACHINE_CONFIG_START( acrobatm, nmk16_state )
MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE_ADD("gfxdecode", macross)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross)
@@ -3976,7 +3983,8 @@ static MACHINE_CONFIG_START( tdragonb, nmk16_state ) /* bootleg using Raiden
MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE_ADD("gfxdecode", macross)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross)
@@ -4003,7 +4011,8 @@ static MACHINE_CONFIG_START( tdragon, nmk16_state )
MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE_ADD("gfxdecode", macross)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross)
MCFG_TIMER_DRIVER_ADD_PERIODIC("coinsim", nmk16_state, tdragon_mcu_sim, attotime::from_hz(10000))
@@ -4049,7 +4058,8 @@ static MACHINE_CONFIG_START( ssmissin, nmk16_state )
MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE_ADD("gfxdecode", macross)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross)
@@ -4079,7 +4089,8 @@ static MACHINE_CONFIG_START( strahl, nmk16_state )
MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_strahl)
MCFG_GFXDECODE_ADD("gfxdecode", strahl)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
MCFG_VIDEO_START_OVERRIDE(nmk16_state,strahl)
@@ -4121,7 +4132,8 @@ static MACHINE_CONFIG_START( hachamf, nmk16_state )
MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE_ADD("gfxdecode", macross)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross)
MCFG_TIMER_DRIVER_ADD_PERIODIC("coinsim", nmk16_state, hachamf_mcu_sim, attotime::from_hz(10000))
@@ -4164,7 +4176,8 @@ static MACHINE_CONFIG_START( macross, nmk16_state )
MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE_ADD("gfxdecode", macross)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross)
@@ -4206,7 +4219,8 @@ static MACHINE_CONFIG_START( blkheart, nmk16_state )
MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE_ADD("gfxdecode", macross)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross)
@@ -4248,7 +4262,8 @@ static MACHINE_CONFIG_START( gunnail, nmk16_state )
MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE_ADD("gfxdecode", macross)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(nmk16_state,gunnail)
@@ -4294,7 +4309,8 @@ static MACHINE_CONFIG_START( macross2, nmk16_state )
MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE_ADD("gfxdecode", macross2)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross2)
@@ -4337,7 +4353,8 @@ static MACHINE_CONFIG_START( tdragon2, nmk16_state )
MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE_ADD("gfxdecode", macross2)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross2)
@@ -4379,7 +4396,8 @@ static MACHINE_CONFIG_START( raphero, nmk16_state )
MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE_ADD("gfxdecode", macross2)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(nmk16_state,raphero)
@@ -4421,7 +4439,8 @@ static MACHINE_CONFIG_START( bjtwin, nmk16_state )
MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE_ADD("gfxdecode", bjtwin)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(nmk16_state,bjtwin)
@@ -4456,7 +4475,8 @@ static MACHINE_CONFIG_START( atombjt, nmk16_state )
MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE_ADD("gfxdecode", atombjt)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(nmk16_state,bjtwin)
@@ -4748,7 +4768,7 @@ static ADDRESS_MAP_START( afega, AS_PROGRAM, 16, nmk16_state )
/**/AM_RANGE(0x084000, 0x084003) AM_RAM_WRITE(afega_scroll0_w) // Scroll on redhawkb (mirror or changed?..)
/**/AM_RANGE(0x084004, 0x084007) AM_RAM_WRITE(afega_scroll1_w) // Scroll on redhawkb (mirror or changed?..)
AM_RANGE(0x080020, 0x087fff) AM_WRITEONLY //
-/**/AM_RANGE(0x088000, 0x0885ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram") // Palette
+/**/AM_RANGE(0x088000, 0x0885ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x088600, 0x08bfff) AM_WRITEONLY //
/**/AM_RANGE(0x08c000, 0x08c003) AM_RAM_WRITE(afega_scroll0_w) AM_SHARE("afega_scroll_0") // Scroll
/**/AM_RANGE(0x08c004, 0x08c007) AM_RAM_WRITE(afega_scroll1_w) AM_SHARE("afega_scroll_1") //
@@ -4917,7 +4937,8 @@ static MACHINE_CONFIG_START( stagger1, nmk16_state )
MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE_ADD("gfxdecode", stagger1)
- MCFG_PALETTE_LENGTH(768)
+ MCFG_PALETTE_ADD("palette", 768)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(nmk16_state,afega)
@@ -5002,7 +5023,8 @@ static MACHINE_CONFIG_START( firehawk, nmk16_state )
MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE_ADD("gfxdecode", grdnstrm)
- MCFG_PALETTE_LENGTH(768)
+ MCFG_PALETTE_ADD("palette", 768)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(nmk16_state,firehawk)
@@ -5037,7 +5059,8 @@ static MACHINE_CONFIG_START( twinactn, nmk16_state )
MCFG_SCREEN_VBLANK_DRIVER(nmk16_state, screen_eof_nmk)
MCFG_GFXDECODE_ADD("gfxdecode", macross)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross)
diff --git a/src/mame/drivers/norautp.c b/src/mame/drivers/norautp.c
index dc54d0047de..42519cf9214 100644
--- a/src/mame/drivers/norautp.c
+++ b/src/mame/drivers/norautp.c
@@ -577,7 +577,7 @@ UINT32 norautp_state::screen_update_norautp(screen_device &screen, bitmap_ind16
count = 0;
- bitmap.fill(machine().pens[0], cliprect); //black pen
+ bitmap.fill(m_palette->pen(0), cliprect); //black pen
for(y = 0; y < 8; y++)
{
@@ -589,7 +589,7 @@ UINT32 norautp_state::screen_update_norautp(screen_device &screen, bitmap_ind16
int tile = m_np_vram[count] & 0x3f;
int colour = (m_np_vram[count] & 0xc0) >> 6;
- m_gfxdecode->gfx(1)->opaque(bitmap,cliprect, tile, colour, 0, 0, (x * 32) + 8, y * 32);
+ m_gfxdecode->gfx(1)->opaque(m_palette,bitmap,cliprect, tile, colour, 0, 0, (x * 32) + 8, y * 32);
count+=2;
}
@@ -601,7 +601,7 @@ UINT32 norautp_state::screen_update_norautp(screen_device &screen, bitmap_ind16
int tile = m_np_vram[count] & 0x3f;
int colour = (m_np_vram[count] & 0xc0) >> 6;
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, tile, colour, 0, 0, x * 16, y * 32);
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, tile, colour, 0, 0, x * 16, y * 32);
count++;
}
@@ -612,17 +612,17 @@ UINT32 norautp_state::screen_update_norautp(screen_device &screen, bitmap_ind16
}
-void norautp_state::palette_init()
+PALETTE_INIT_MEMBER(norautp_state, norautp)
{
/* 1st gfx bank */
- palette_set_color(machine(), 0, rgb_t(0x00, 0x00, 0xff)); /* blue */
- palette_set_color(machine(), 1, rgb_t(0xff, 0xff, 0x00)); /* yellow */
- palette_set_color(machine(), 2, rgb_t(0x00, 0x00, 0xff)); /* blue */
- palette_set_color(machine(), 3, rgb_t(0xff, 0xff, 0xff)); /* white */
- palette_set_color(machine(), 4, rgb_t(0xff, 0xff, 0xff)); /* white */
- palette_set_color(machine(), 5, rgb_t(0xff, 0x00, 0x00)); /* red */
- palette_set_color(machine(), 6, rgb_t(0xff, 0xff, 0xff)); /* white */
- palette_set_color(machine(), 7, rgb_t(0x00, 0x00, 0x00)); /* black */
+ palette.set_pen_color(0, rgb_t(0x00, 0x00, 0xff)); /* blue */
+ palette.set_pen_color(1, rgb_t(0xff, 0xff, 0x00)); /* yellow */
+ palette.set_pen_color(2, rgb_t(0x00, 0x00, 0xff)); /* blue */
+ palette.set_pen_color(3, rgb_t(0xff, 0xff, 0xff)); /* white */
+ palette.set_pen_color(4, rgb_t(0xff, 0xff, 0xff)); /* white */
+ palette.set_pen_color(5, rgb_t(0xff, 0x00, 0x00)); /* red */
+ palette.set_pen_color(6, rgb_t(0xff, 0xff, 0xff)); /* white */
+ palette.set_pen_color(7, rgb_t(0x00, 0x00, 0x00)); /* black */
}
@@ -1273,7 +1273,8 @@ static MACHINE_CONFIG_START( noraut_base, norautp_state )
MCFG_GFXDECODE_ADD("gfxdecode", norautp)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(norautp_state, norautp)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/nova2001.c b/src/mame/drivers/nova2001.c
index deac152df9e..22a7977392d 100644
--- a/src/mame/drivers/nova2001.c
+++ b/src/mame/drivers/nova2001.c
@@ -693,9 +693,10 @@ static MACHINE_CONFIG_START( nova2001, nova2001_state )
MCFG_SCREEN_UPDATE_DRIVER(nova2001_state, screen_update_nova2001)
MCFG_GFXDECODE_ADD("gfxdecode", nova2001)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
+ MCFG_PALETTE_FORMAT(BBGGRRII)
- MCFG_PALETTE_INIT_OVERRIDE(nova2001_state,nova2001)
+ MCFG_PALETTE_INIT_OWNER(nova2001_state,nova2001)
MCFG_VIDEO_START_OVERRIDE(nova2001_state,nova2001)
/* sound hardware */
@@ -734,7 +735,8 @@ static MACHINE_CONFIG_START( ninjakun, nova2001_state )
MCFG_SCREEN_UPDATE_DRIVER(nova2001_state, screen_update_ninjakun)
MCFG_GFXDECODE_ADD("gfxdecode", ninjakun)
- MCFG_PALETTE_LENGTH(0x300)
+ MCFG_PALETTE_ADD("palette", 0x300)
+ MCFG_PALETTE_FORMAT(BBGGRRII)
MCFG_VIDEO_START_OVERRIDE(nova2001_state,ninjakun)
@@ -766,9 +768,10 @@ static MACHINE_CONFIG_START( pkunwar, nova2001_state )
MCFG_SCREEN_UPDATE_DRIVER(nova2001_state, screen_update_pkunwar)
MCFG_GFXDECODE_ADD("gfxdecode", pkunwar)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
+ MCFG_PALETTE_FORMAT(BBGGRRII)
- MCFG_PALETTE_INIT_OVERRIDE(nova2001_state,nova2001)
+ MCFG_PALETTE_INIT_OWNER(nova2001_state,nova2001)
MCFG_VIDEO_START_OVERRIDE(nova2001_state,pkunwar)
/* sound hardware */
@@ -805,7 +808,8 @@ static MACHINE_CONFIG_START( raiders5, nova2001_state )
MCFG_SCREEN_UPDATE_DRIVER(nova2001_state, screen_update_raiders5)
MCFG_GFXDECODE_ADD("gfxdecode", raiders5)
- MCFG_PALETTE_LENGTH(0x300)
+ MCFG_PALETTE_ADD("palette", 0x300)
+ MCFG_PALETTE_FORMAT(BBGGRRII)
MCFG_VIDEO_START_OVERRIDE(nova2001_state,raiders5)
diff --git a/src/mame/drivers/nsmpoker.c b/src/mame/drivers/nsmpoker.c
index d0f9e086c92..696ef232361 100644
--- a/src/mame/drivers/nsmpoker.c
+++ b/src/mame/drivers/nsmpoker.c
@@ -83,7 +83,7 @@ public:
DECLARE_READ8_MEMBER(debug_r);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(nsmpoker);
virtual void machine_reset();
UINT32 screen_update_nsmpoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(nsmpoker_interrupt);
@@ -141,7 +141,7 @@ UINT32 nsmpoker_state::screen_update_nsmpoker(screen_device &screen, bitmap_ind1
}
-void nsmpoker_state::palette_init()
+PALETTE_INIT_MEMBER(nsmpoker_state, nsmpoker)
{
}
@@ -432,8 +432,8 @@ static MACHINE_CONFIG_START( nsmpoker, nsmpoker_state )
MCFG_GFXDECODE_ADD("gfxdecode", nsmpoker)
- MCFG_PALETTE_LENGTH(8)
-
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(nsmpoker_state, nsmpoker)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/nwk-tr.c b/src/mame/drivers/nwk-tr.c
index 8a80f31ec63..5deba72661a 100644
--- a/src/mame/drivers/nwk-tr.c
+++ b/src/mame/drivers/nwk-tr.c
@@ -286,7 +286,7 @@ WRITE32_MEMBER(nwktr_state::paletteram32_w)
{
COMBINE_DATA(&m_generic_paletteram_32[offset]);
data = m_generic_paletteram_32[offset];
- palette_set_color_rgb(machine(), offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
+ m_palette->set_pen_color(offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
}
WRITE_LINE_MEMBER(nwktr_state::voodoo_vblank_0)
@@ -299,7 +299,7 @@ UINT32 nwktr_state::screen_update_nwktr(screen_device &screen, bitmap_rgb32 &bit
{
device_t *voodoo = machine().device("voodoo");
- bitmap.fill(machine().pens[0], cliprect);
+ bitmap.fill(m_palette->pen(0), cliprect);
voodoo_update(voodoo, bitmap, cliprect);
@@ -770,12 +770,13 @@ static MACHINE_CONFIG_START( nwktr, nwktr_state )
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 383)
MCFG_SCREEN_UPDATE_DRIVER(nwktr_state, screen_update_nwktr)
- MCFG_PALETTE_LENGTH(65536)
+ MCFG_PALETTE_ADD("palette", 65536)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K001604_ADD("k001604", racingj_k001604_intf)
MCFG_K001604_GFXDECODE("gfxdecode")
+ MCFG_K001604_PALETTE("palette")
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -792,6 +793,7 @@ static MACHINE_CONFIG_DERIVED( thrilld, nwktr )
MCFG_DEVICE_REMOVE("k001604")
MCFG_K001604_ADD("k001604", thrilld_k001604_intf)
MCFG_K001604_GFXDECODE("gfxdecode")
+ MCFG_K001604_PALETTE("palette")
MACHINE_CONFIG_END
/*****************************************************************************/
diff --git a/src/mame/drivers/nycaptor.c b/src/mame/drivers/nycaptor.c
index 93dc373c68e..3ca54f24dc3 100644
--- a/src/mame/drivers/nycaptor.c
+++ b/src/mame/drivers/nycaptor.c
@@ -846,7 +846,8 @@ static MACHINE_CONFIG_START( nycaptor, nycaptor_state )
MCFG_SCREEN_UPDATE_DRIVER(nycaptor_state, screen_update_nycaptor)
MCFG_GFXDECODE_ADD("gfxdecode", nycaptor)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
/* sound hardware */
@@ -904,7 +905,8 @@ static MACHINE_CONFIG_START( cyclshtg, nycaptor_state )
MCFG_SCREEN_UPDATE_DRIVER(nycaptor_state, screen_update_nycaptor)
MCFG_GFXDECODE_ADD("gfxdecode", nycaptor)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -958,7 +960,8 @@ static MACHINE_CONFIG_START( bronx, nycaptor_state )
MCFG_SCREEN_UPDATE_DRIVER(nycaptor_state, screen_update_nycaptor)
MCFG_GFXDECODE_ADD("gfxdecode", nycaptor)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/offtwall.c b/src/mame/drivers/offtwall.c
index c2af6264c2b..56b384a9987 100644
--- a/src/mame/drivers/offtwall.c
+++ b/src/mame/drivers/offtwall.c
@@ -370,7 +370,7 @@ static MACHINE_CONFIG_START( offtwall, offtwall_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", offtwall)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_ATARI_VAD_ADD("vad", "screen", WRITELINE(atarigen_state, scanline_int_write_line))
MCFG_ATARI_VAD_PLAYFIELD(offtwall_state, get_playfield_tile_info)
diff --git a/src/mame/drivers/ohmygod.c b/src/mame/drivers/ohmygod.c
index cd26b2c7a14..36d30eb18db 100644
--- a/src/mame/drivers/ohmygod.c
+++ b/src/mame/drivers/ohmygod.c
@@ -44,7 +44,7 @@ static ADDRESS_MAP_START( ohmygod_map, AS_PROGRAM, 16, ohmygod_state )
AM_RANGE(0x308000, 0x30ffff) AM_RAM
AM_RANGE(0x400000, 0x400001) AM_WRITE(ohmygod_scrollx_w)
AM_RANGE(0x400002, 0x400003) AM_WRITE(ohmygod_scrolly_w)
- AM_RANGE(0x600000, 0x6007ff) AM_RAM_WRITE(paletteram_xGGGGGRRRRRBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x600000, 0x6007ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x700000, 0x703fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x704000, 0x707fff) AM_RAM
AM_RANGE(0x708000, 0x70ffff) AM_RAM /* Work RAM */
@@ -331,8 +331,9 @@ static MACHINE_CONFIG_START( ohmygod, ohmygod_state )
MCFG_SCREEN_UPDATE_DRIVER(ohmygod_state, screen_update_ohmygod)
MCFG_GFXDECODE_ADD("gfxdecode", ohmygod)
- MCFG_PALETTE_LENGTH(1024)
-
+
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/ojankohs.c b/src/mame/drivers/ojankohs.c
index b1e4222498f..db7c06d9bc8 100644
--- a/src/mame/drivers/ojankohs.c
+++ b/src/mame/drivers/ojankohs.c
@@ -859,7 +859,7 @@ static MACHINE_CONFIG_START( ojankohs, ojankohs_state )
MCFG_SCREEN_UPDATE_DRIVER(ojankohs_state, screen_update_ojankohs)
MCFG_GFXDECODE_ADD("gfxdecode", ojankohs)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
MCFG_VIDEO_START_OVERRIDE(ojankohs_state,ojankohs)
@@ -895,8 +895,8 @@ static MACHINE_CONFIG_START( ojankoy, ojankohs_state )
MCFG_SCREEN_UPDATE_DRIVER(ojankohs_state, screen_update_ojankohs)
MCFG_GFXDECODE_ADD("gfxdecode", ojankohs)
- MCFG_PALETTE_LENGTH(1024)
- MCFG_PALETTE_INIT_OVERRIDE(ojankohs_state,ojankoy)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_INIT_OWNER(ojankohs_state,ojankoy)
MCFG_VIDEO_START_OVERRIDE(ojankohs_state,ojankoy)
@@ -932,7 +932,7 @@ static MACHINE_CONFIG_START( ccasino, ojankohs_state )
MCFG_SCREEN_UPDATE_DRIVER(ojankohs_state, screen_update_ojankohs)
MCFG_GFXDECODE_ADD("gfxdecode", ojankohs)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
MCFG_VIDEO_START_OVERRIDE(ojankohs_state,ojankoy)
@@ -967,7 +967,7 @@ static MACHINE_CONFIG_START( ojankoc, ojankohs_state )
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 8, 248-1)
MCFG_SCREEN_UPDATE_DRIVER(ojankohs_state, screen_update_ojankoc)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
MCFG_VIDEO_START_OVERRIDE(ojankohs_state,ojankoc)
diff --git a/src/mame/drivers/olibochu.c b/src/mame/drivers/olibochu.c
index 290f24489b0..5cf557947b4 100644
--- a/src/mame/drivers/olibochu.c
+++ b/src/mame/drivers/olibochu.c
@@ -87,7 +87,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(olibochu);
UINT32 screen_update_olibochu(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(olibochu_scanline);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
@@ -97,12 +97,12 @@ public:
-void olibochu_state::palette_init()
+PALETTE_INIT_MEMBER(olibochu_state, olibochu)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
UINT8 pen;
int bit0, bit1, bit2, r, g, b;
@@ -131,7 +131,7 @@ void olibochu_state::palette_init()
bit1 = BIT(color_prom[pen], 7);
b = 0x4f * bit0 + 0xa8 * bit1;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -199,7 +199,7 @@ void olibochu_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code, color,
flipx, flipy,
sx, sy, 0);
@@ -225,7 +225,7 @@ void olibochu_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
}
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code, color,
flipx, flipy,
sx, sy, 0);
@@ -469,8 +469,8 @@ static MACHINE_CONFIG_START( olibochu, olibochu_state )
MCFG_SCREEN_UPDATE_DRIVER(olibochu_state, screen_update_olibochu)
MCFG_GFXDECODE_ADD("gfxdecode", olibochu)
- MCFG_PALETTE_LENGTH(512)
-
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_INIT_OWNER(olibochu_state, olibochu)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/oneshot.c b/src/mame/drivers/oneshot.c
index ad07c60c2ae..def23ab4580 100644
--- a/src/mame/drivers/oneshot.c
+++ b/src/mame/drivers/oneshot.c
@@ -101,7 +101,7 @@ WRITE16_MEMBER(oneshot_state::soundbank_w)
static ADDRESS_MAP_START( oneshot_map, AS_PROGRAM, 16, oneshot_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x080000, 0x087fff) AM_RAM
- AM_RANGE(0x0c0000, 0x0c07ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0c0000, 0x0c07ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x120000, 0x120fff) AM_RAM AM_SHARE("sprites")
AM_RANGE(0x180000, 0x180fff) AM_RAM_WRITE(oneshot_mid_videoram_w) AM_SHARE("mid_videoram") // some people , girl etc.
AM_RANGE(0x181000, 0x181fff) AM_RAM_WRITE(oneshot_fg_videoram_w) AM_SHARE("fg_videoram") // credits etc.
@@ -373,8 +373,8 @@ static MACHINE_CONFIG_START( oneshot, oneshot_state )
MCFG_SCREEN_UPDATE_DRIVER(oneshot_state, screen_update_oneshot)
MCFG_GFXDECODE_ADD("gfxdecode", oneshot)
- MCFG_PALETTE_LENGTH(0x400)
-
+ MCFG_PALETTE_ADD("palette", 0x400)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/onetwo.c b/src/mame/drivers/onetwo.c
index 9ca528c9eac..0c14f63a8cb 100644
--- a/src/mame/drivers/onetwo.c
+++ b/src/mame/drivers/onetwo.c
@@ -151,7 +151,7 @@ void onetwo_state::set_color(int offset)
r = m_paletteram[offset] & 0x1f;
g = m_paletteram2[offset] & 0x1f;
b = ((m_paletteram[offset] & 0x60) >> 2) | ((m_paletteram2[offset] & 0xe0) >> 5);
- palette_set_color_rgb(machine(), offset, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(offset, pal5bit(r), pal5bit(g), pal5bit(b));
}
WRITE8_MEMBER(onetwo_state::palette1_w)
@@ -376,7 +376,7 @@ static MACHINE_CONFIG_START( onetwo, onetwo_state )
MCFG_SCREEN_UPDATE_DRIVER(onetwo_state, screen_update_onetwo)
MCFG_GFXDECODE_ADD("gfxdecode", onetwo)
- MCFG_PALETTE_LENGTH(0x80)
+ MCFG_PALETTE_ADD("palette", 0x80)
/* sound hardware */
diff --git a/src/mame/drivers/opwolf.c b/src/mame/drivers/opwolf.c
index 140f6300daf..009e3658884 100644
--- a/src/mame/drivers/opwolf.c
+++ b/src/mame/drivers/opwolf.c
@@ -361,7 +361,7 @@ static ADDRESS_MAP_START( opwolf_map, AS_PROGRAM, 16, opwolf_state )
AM_RANGE(0x0ff802, 0x0ff803) AM_WRITE(opwolf_cchip_status_w)
AM_RANGE(0x0ffc00, 0x0ffc01) AM_WRITE(opwolf_cchip_bank_w)
AM_RANGE(0x100000, 0x107fff) AM_RAM
- AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x380000, 0x380003) AM_READ(opwolf_dsw_r) /* dip switches */
AM_RANGE(0x380000, 0x380003) AM_WRITE(opwolf_spritectrl_w) // usually 0x4, changes when you fire
AM_RANGE(0x3a0000, 0x3a0003) AM_READ(opwolf_lightgun_r) /* lightgun, read at $11e0/6 */
@@ -382,7 +382,7 @@ static ADDRESS_MAP_START( opwolfb_map, AS_PROGRAM, 16, opwolf_state )
AM_RANGE(0x0f0008, 0x0f000b) AM_READ(opwolf_in_r) /* coins and buttons */
AM_RANGE(0x0ff000, 0x0fffff) AM_READWRITE(cchip_r,cchip_w)
AM_RANGE(0x100000, 0x107fff) AM_RAM
- AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x380000, 0x380003) AM_READ(opwolf_dsw_r) /* dip switches */
AM_RANGE(0x380000, 0x380003) AM_WRITE(opwolf_spritectrl_w) // usually 0x4, changes when you fire
AM_RANGE(0x3a0000, 0x3a0003) AM_READ(opwolf_lightgun_r) /* lightgun, read at $11e0/6 */
@@ -736,12 +736,15 @@ static MACHINE_CONFIG_START( opwolf, opwolf_state )
MCFG_SCREEN_UPDATE_DRIVER(opwolf_state, screen_update_opwolf)
MCFG_GFXDECODE_ADD("gfxdecode", opwolf)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
MCFG_PC080SN_ADD("pc080sn", opwolf_pc080sn_intf)
MCFG_PC080SN_GFXDECODE("gfxdecode")
+ MCFG_PC080SN_PALETTE("palette")
MCFG_PC090OJ_ADD("pc090oj", opwolf_pc090oj_intf)
MCFG_PC090OJ_GFXDECODE("gfxdecode")
+ MCFG_PC090OJ_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -792,12 +795,15 @@ static MACHINE_CONFIG_START( opwolfb, opwolf_state ) /* OSC clocks unknown for t
MCFG_SCREEN_UPDATE_DRIVER(opwolf_state, screen_update_opwolf)
MCFG_GFXDECODE_ADD("gfxdecode", opwolfb)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
MCFG_PC080SN_ADD("pc080sn", opwolf_pc080sn_intf)
MCFG_PC080SN_GFXDECODE("gfxdecode")
+ MCFG_PC080SN_PALETTE("palette")
MCFG_PC090OJ_ADD("pc090oj", opwolf_pc090oj_intf)
MCFG_PC090OJ_GFXDECODE("gfxdecode")
+ MCFG_PC090OJ_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/orbit.c b/src/mame/drivers/orbit.c
index 9f439a24f25..1d1596e89ac 100644
--- a/src/mame/drivers/orbit.c
+++ b/src/mame/drivers/orbit.c
@@ -302,8 +302,8 @@ static MACHINE_CONFIG_START( orbit, orbit_state )
MCFG_SCREEN_UPDATE_DRIVER(orbit_state, screen_update_orbit)
MCFG_GFXDECODE_ADD("gfxdecode", orbit)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/othello.c b/src/mame/drivers/othello.c
index f3351491237..a96a3c2cd94 100644
--- a/src/mame/drivers/othello.c
+++ b/src/mame/drivers/othello.c
@@ -98,7 +98,7 @@ public:
DECLARE_WRITE8_MEMBER(n7751_rom_control_w);
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(othello);
};
@@ -125,22 +125,22 @@ static MC6845_UPDATE_ROW( update_row )
}
}
-void othello_state::palette_init()
+PALETTE_INIT_MEMBER(othello_state, othello)
{
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
- palette_set_color(machine(), i, rgb_t(0xff, 0x00, 0xff));
+ palette.set_pen_color(i, rgb_t(0xff, 0x00, 0xff));
}
/* only colors 2,3,7,9,c,d,f are used */
- palette_set_color(machine(), 0x02, rgb_t(0x00, 0xff, 0x00));
- palette_set_color(machine(), 0x03, rgb_t(0xff, 0x7f, 0x00));
- palette_set_color(machine(), 0x07, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), 0x09, rgb_t(0xff, 0x00, 0x00));
- palette_set_color(machine(), 0x0c, rgb_t(0x00, 0x00, 0xff));
- palette_set_color(machine(), 0x0d, rgb_t(0x7f, 0x7f, 0x00));
- palette_set_color(machine(), 0x0f, rgb_t(0xff, 0xff, 0xff));
+ palette.set_pen_color(0x02, rgb_t(0x00, 0xff, 0x00));
+ palette.set_pen_color(0x03, rgb_t(0xff, 0x7f, 0x00));
+ palette.set_pen_color(0x07, rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(0x09, rgb_t(0xff, 0x00, 0x00));
+ palette.set_pen_color(0x0c, rgb_t(0x00, 0x00, 0xff));
+ palette.set_pen_color(0x0d, rgb_t(0x7f, 0x7f, 0x00));
+ palette.set_pen_color(0x0f, rgb_t(0xff, 0xff, 0xff));
}
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, othello_state )
@@ -434,7 +434,8 @@ static MACHINE_CONFIG_START( othello, othello_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*6-1, 0*8, 64*8-1)
MCFG_SCREEN_UPDATE_DEVICE("crtc", h46505_device, screen_update)
- MCFG_PALETTE_LENGTH(0x10)
+ MCFG_PALETTE_ADD("palette", 0x10)
+ MCFG_PALETTE_INIT_OWNER(othello_state, othello)
MCFG_MC6845_ADD("crtc", H46505, "screen", 1000000 /* ? MHz */, h46505_intf) /* H46505 @ CPU clock */
diff --git a/src/mame/drivers/othunder.c b/src/mame/drivers/othunder.c
index 62649aaeac2..cae3db70864 100644
--- a/src/mame/drivers/othunder.c
+++ b/src/mame/drivers/othunder.c
@@ -691,12 +691,13 @@ static MACHINE_CONFIG_START( othunder, othunder_state )
MCFG_SCREEN_UPDATE_DRIVER(othunder_state, screen_update_othunder)
MCFG_GFXDECODE_ADD("gfxdecode", othunder)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
MCFG_TC0100SCN_ADD("tc0100scn", othunder_tc0100scn_intf)
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
MCFG_TC0110PCR_ADD("tc0110pcr", othunder_tc0110pcr_intf)
+ MCFG_TC0110PCR_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/overdriv.c b/src/mame/drivers/overdriv.c
index b3be0a48f69..08c9cae0eca 100644
--- a/src/mame/drivers/overdriv.c
+++ b/src/mame/drivers/overdriv.c
@@ -152,7 +152,7 @@ WRITE16_MEMBER(overdriv_state::overdriv_cpuB_irq_y_w)
static ADDRESS_MAP_START( overdriv_master_map, AS_PROGRAM, 16, overdriv_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x040000, 0x043fff) AM_RAM /* work RAM */
- AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x080000, 0x080fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("INPUTS")
AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("SYSTEM")
AM_RANGE(0x0e0000, 0x0e0001) AM_WRITENOP /* unknown (always 0x30) */
@@ -345,8 +345,6 @@ static MACHINE_CONFIG_START( overdriv, overdriv_state )
MCFG_EEPROM_SERIAL_DATA(overdriv_default_eeprom, 128)
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
@@ -355,16 +353,21 @@ static MACHINE_CONFIG_START( overdriv, overdriv_state )
MCFG_SCREEN_UPDATE_DRIVER(overdriv_state, screen_update_overdriv)
// MCFG_GFXDECODE_ADD("gfxdecode", overdriv)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
+ MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K053246_ADD("k053246", overdriv_k053246_intf)
MCFG_K053246_GFXDECODE("gfxdecode")
+ MCFG_K053246_PALETTE("palette")
MCFG_K051316_ADD("k051316_1", overdriv_k051316_intf_1)
MCFG_K051316_GFXDECODE("gfxdecode")
+ MCFG_K051316_PALETTE("palette")
MCFG_K051316_ADD("k051316_2", overdriv_k051316_intf_2)
MCFG_K051316_GFXDECODE("gfxdecode")
+ MCFG_K051316_PALETTE("palette")
MCFG_K053251_ADD("k053251")
MCFG_K053250_ADD("k053250_1", "screen", 0, 0)
MCFG_K053250_ADD("k053250_2", "screen", 0, 0)
diff --git a/src/mame/drivers/pacland.c b/src/mame/drivers/pacland.c
index a9d54776810..9553f19d140 100644
--- a/src/mame/drivers/pacland.c
+++ b/src/mame/drivers/pacland.c
@@ -441,7 +441,8 @@ static MACHINE_CONFIG_START( pacland, pacland_state )
MCFG_SCREEN_UPDATE_DRIVER(pacland_state, screen_update_pacland)
MCFG_GFXDECODE_ADD("gfxdecode", pacland)
- MCFG_PALETTE_LENGTH(256*4+256*4+64*16)
+ MCFG_PALETTE_ADD("palette", 256*4+256*4+64*16)
+ MCFG_PALETTE_INIT_OWNER(pacland_state, pacland)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/pacman.c b/src/mame/drivers/pacman.c
index a1ecf5c8c0a..5ad4764a0ff 100644
--- a/src/mame/drivers/pacman.c
+++ b/src/mame/drivers/pacman.c
@@ -3329,13 +3329,13 @@ static MACHINE_CONFIG_START( pacman, pacman_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", pacman)
- MCFG_PALETTE_LENGTH(128*4)
+ MCFG_PALETTE_ADD("palette", 128*4)
+ MCFG_PALETTE_INIT_OWNER(pacman_state,pacman)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(pacman_state, screen_update_pacman)
- MCFG_PALETTE_INIT_OVERRIDE(pacman_state,pacman)
MCFG_VIDEO_START_OVERRIDE(pacman_state,pacman)
/* sound hardware */
diff --git a/src/mame/drivers/pandoras.c b/src/mame/drivers/pandoras.c
index 6a7a0eefc5c..275379285ad 100644
--- a/src/mame/drivers/pandoras.c
+++ b/src/mame/drivers/pandoras.c
@@ -355,8 +355,8 @@ static MACHINE_CONFIG_START( pandoras, pandoras_state )
MCFG_SCREEN_UPDATE_DRIVER(pandoras_state, screen_update_pandoras)
MCFG_GFXDECODE_ADD("gfxdecode", pandoras)
- MCFG_PALETTE_LENGTH(16*16+16*16)
-
+ MCFG_PALETTE_ADD("palette", 16*16+16*16)
+ MCFG_PALETTE_INIT_OWNER(pandoras_state, pandoras)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/panicr.c b/src/mame/drivers/panicr.c
index 5c8fbb9031e..f607defcb7e 100644
--- a/src/mame/drivers/panicr.c
+++ b/src/mame/drivers/panicr.c
@@ -108,7 +108,7 @@ public:
TILE_GET_INFO_MEMBER(get_txttile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(panicr);
UINT32 screen_update_panicr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(panicr_scanline);
void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect );
@@ -131,14 +131,11 @@ public:
***************************************************************************/
-void panicr_state::palette_init()
+PALETTE_INIT_MEMBER(panicr_state, panicr)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
@@ -146,7 +143,7 @@ void panicr_state::palette_init()
int g = pal4bit(color_prom[i + 0x100]);
int b = pal4bit(color_prom[i + 0x200]);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -162,7 +159,7 @@ void panicr_state::palette_init()
else
ctabentry = (color_prom[i] & 0x3f) | 0x80;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
// tile lookup table
@@ -170,9 +167,8 @@ void panicr_state::palette_init()
{
UINT8 ctabentry = (color_prom[i+0x100] & 0x3f) | 0x00;
- colortable_entry_set_value(machine().colortable, ((i&0x0f) + ((i&0xf0)<<1)) +0x200, ctabentry);
- colortable_entry_set_value(machine().colortable, ((i&0x0f) + ((i&0xf0)<<1)) +0x210, ctabentry);
-
+ palette.set_pen_indirect(((i&0x0f) + ((i&0xf0)<<1)) +0x200, ctabentry);
+ palette.set_pen_indirect(((i&0x0f) + ((i&0xf0)<<1)) +0x210, ctabentry);
}
// sprite lookup table
@@ -185,8 +181,7 @@ void panicr_state::palette_init()
else
ctabentry = (color_prom[i+0x200] & 0x3f) | 0x40;
- colortable_entry_set_value(machine().colortable, i+0x100, ctabentry);
-
+ palette.set_pen_indirect(i+0x100, ctabentry);
}
}
@@ -246,7 +241,7 @@ void panicr_state::video_start()
m_infotilemap_2 = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(panicr_state::get_infotile_info_2),this),TILEMAP_SCAN_ROWS,16,16,1024,16 );
m_txttilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(panicr_state::get_txttile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32 );
- colortable_configure_tilemap_groups(machine().colortable, m_txttilemap, m_gfxdecode->gfx(0), 0);
+ m_palette->configure_tilemap_groups(*m_txttilemap, *m_gfxdecode->gfx(0), 0);
}
void panicr_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect )
@@ -279,10 +274,10 @@ void panicr_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect )
color = spriteram[offs+1] & 0x0f;
sprite = spriteram[offs+0] | (*m_spritebank << 8);
- m_gfxdecode->gfx(2)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transmask(m_palette,bitmap,cliprect,
sprite,
color,flipx,flipy,x,y,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(2), color, 0));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(2), color, 0));
}
}
@@ -295,7 +290,7 @@ UINT32 panicr_state::screen_update_panicr(screen_device &screen, bitmap_ind16 &b
// m_infotilemap_2->draw(screen, *m_temprender, m_tempbitmap_clip, 0,0);
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
m_txttilemap->mark_all_dirty();
@@ -627,8 +622,8 @@ static MACHINE_CONFIG_START( panicr, panicr_state )
MCFG_SCREEN_UPDATE_DRIVER(panicr_state, screen_update_panicr)
MCFG_GFXDECODE_ADD("gfxdecode", panicr)
- MCFG_PALETTE_LENGTH(256*4)
-
+ MCFG_PALETTE_ADD("palette", 256*4)
+ MCFG_PALETTE_INIT_OWNER(panicr_state, panicr)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/paradise.c b/src/mame/drivers/paradise.c
index 4c4e91b776b..912fbd8f53e 100644
--- a/src/mame/drivers/paradise.c
+++ b/src/mame/drivers/paradise.c
@@ -715,7 +715,7 @@ static MACHINE_CONFIG_START( paradise, paradise_state )
MCFG_SCREEN_UPDATE_DRIVER(paradise_state, screen_update_paradise)
MCFG_GFXDECODE_ADD("gfxdecode", paradise)
- MCFG_PALETTE_LENGTH(0x800 + 16)
+ MCFG_PALETTE_ADD("palette", 0x800 + 16)
/* sound hardware */
diff --git a/src/mame/drivers/paranoia.c b/src/mame/drivers/paranoia.c
index c5c3f10cc06..dcca9b8be81 100644
--- a/src/mame/drivers/paranoia.c
+++ b/src/mame/drivers/paranoia.c
@@ -201,9 +201,9 @@ static MACHINE_CONFIG_START( paranoia, paranoia_state )
MCFG_SCREEN_RAW_PARAMS(PCE_MAIN_CLOCK/2, VDC_WPF, 70, 70 + 512 + 32, VDC_LPF, 14, 14+242)
MCFG_SCREEN_UPDATE_STATIC( pce )
- /* MCFG_GFXDECODE_ADD("gfxdecode", pce_gfxdecodeinfo ) */
- MCFG_PALETTE_LENGTH(1024)
- MCFG_PALETTE_INIT( vce )
+ /* MCFG_GFXDECODE_ADD("gfxdecode", pce_gfxdecodeinfo ) */
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_INIT_LEGACY( vce )
MCFG_VIDEO_START( pce )
diff --git a/src/mame/drivers/parodius.c b/src/mame/drivers/parodius.c
index 6c3bba3b0ee..3215fc0c527 100644
--- a/src/mame/drivers/parodius.c
+++ b/src/mame/drivers/parodius.c
@@ -43,9 +43,9 @@ WRITE8_MEMBER(parodius_state::bankedram_w)
if (m_videobank & 0x01)
{
if (m_videobank & 0x04)
- paletteram_xBBBBBGGGGGRRRRR_byte_be_w(space, offset + 0x0800, data);
+ m_palette->write(space, offset + 0x0800, data);
else
- paletteram_xBBBBBGGGGGRRRRR_byte_be_w(space, offset, data);
+ m_palette->write(space, offset, data);
}
else
m_ram[offset] = data;
@@ -286,8 +286,6 @@ static MACHINE_CONFIG_START( parodius, parodius_state )
/* NMIs are triggered by the 053260 */
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
@@ -295,13 +293,17 @@ static MACHINE_CONFIG_START( parodius, parodius_state )
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(parodius_state, screen_update_parodius)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", parodius_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K053245_ADD("k053245", parodius_k05324x_intf)
MCFG_K053245_GFXDECODE("gfxdecode")
+ MCFG_K053245_PALETTE("palette")
MCFG_K053251_ADD("k053251")
/* sound hardware */
diff --git a/src/mame/drivers/pasha2.c b/src/mame/drivers/pasha2.c
index c2f67e63d2a..8a4f456ebeb 100644
--- a/src/mame/drivers/pasha2.c
+++ b/src/mame/drivers/pasha2.c
@@ -155,10 +155,10 @@ WRITE16_MEMBER(pasha2_state::pasha2_palette_w)
offset &= 0xff;
color = (m_paletteram[offset] >> 8) | (m_paletteram[offset + 0x100] & 0xff00);
- palette_set_color_rgb(machine(), offset * 2 + 0, pal5bit(color), pal5bit(color >> 5), pal5bit(color >> 10));
+ m_palette->set_pen_color(offset * 2 + 0, pal5bit(color), pal5bit(color >> 5), pal5bit(color >> 10));
color = (m_paletteram[offset] & 0xff) | ((m_paletteram[offset + 0x100] & 0xff) << 8);
- palette_set_color_rgb(machine(), offset * 2 + 1, pal5bit(color), pal5bit(color >> 5), pal5bit(color >> 10));
+ m_palette->set_pen_color(offset * 2 + 1, pal5bit(color), pal5bit(color >> 5), pal5bit(color >> 10));
}
WRITE16_MEMBER(pasha2_state::vbuffer_set_w)
@@ -429,7 +429,7 @@ static MACHINE_CONFIG_START( pasha2, pasha2_state )
MCFG_SCREEN_VISIBLE_AREA(0, 383, 0, 239)
MCFG_SCREEN_UPDATE_DRIVER(pasha2_state, screen_update_pasha2)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
/* sound hardware */
diff --git a/src/mame/drivers/pass.c b/src/mame/drivers/pass.c
index 663fab985c0..fce8192b8f5 100644
--- a/src/mame/drivers/pass.c
+++ b/src/mame/drivers/pass.c
@@ -113,7 +113,7 @@ static ADDRESS_MAP_START( pass_map, AS_PROGRAM, 16, pass_state )
AM_RANGE(0x080000, 0x083fff) AM_RAM
AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(pass_bg_videoram_w) AM_SHARE("bg_videoram") // Background
AM_RANGE(0x210000, 0x213fff) AM_RAM_WRITE(pass_fg_videoram_w) AM_SHARE("fg_videoram") // Foreground
- AM_RANGE(0x220000, 0x2203ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x220000, 0x2203ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x230000, 0x230001) AM_WRITE(soundlatch_word_w)
AM_RANGE(0x230100, 0x230101) AM_READ_PORT("DSW")
AM_RANGE(0x230200, 0x230201) AM_READ_PORT("INPUTS")
@@ -251,7 +251,8 @@ static MACHINE_CONFIG_START( pass, pass_state )
MCFG_SCREEN_VISIBLE_AREA(8*8, 48*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(pass_state, screen_update_pass)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_GFXDECODE_ADD("gfxdecode", pass)
diff --git a/src/mame/drivers/pastelg.c b/src/mame/drivers/pastelg.c
index ba1b1dfbf9b..4b7c67265d8 100644
--- a/src/mame/drivers/pastelg.c
+++ b/src/mame/drivers/pastelg.c
@@ -424,8 +424,8 @@ static MACHINE_CONFIG_START( pastelg, pastelg_state )
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
MCFG_SCREEN_UPDATE_DRIVER(pastelg_state, screen_update_pastelg)
- MCFG_PALETTE_LENGTH(32)
-
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(pastelg_state, pastelg)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -480,7 +480,7 @@ static MACHINE_CONFIG_START( threeds, pastelg_state )
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
MCFG_SCREEN_UPDATE_DRIVER(pastelg_state, screen_update_pastelg)
- MCFG_PALETTE_LENGTH(32)
+ MCFG_PALETTE_ADD("palette", 32)
/* sound hardware */
diff --git a/src/mame/drivers/pbaction.c b/src/mame/drivers/pbaction.c
index 00353f67116..3c3df6b5372 100644
--- a/src/mame/drivers/pbaction.c
+++ b/src/mame/drivers/pbaction.c
@@ -90,7 +90,7 @@ static ADDRESS_MAP_START( pbaction_map, AS_PROGRAM, 8, pbaction_state )
AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(pbaction_videoram_w) AM_SHARE("videoram")
AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(pbaction_colorram_w) AM_SHARE("colorram")
AM_RANGE(0xe000, 0xe07f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe400, 0xe5ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0xe400, 0xe5ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xe600, 0xe600) AM_READ_PORT("P1") AM_WRITE(nmi_mask_w)
AM_RANGE(0xe601, 0xe601) AM_READ_PORT("P2")
AM_RANGE(0xe602, 0xe602) AM_READ_PORT("SYSTEM")
@@ -293,8 +293,8 @@ static MACHINE_CONFIG_START( pbaction, pbaction_state )
MCFG_SCREEN_UPDATE_DRIVER(pbaction_state, screen_update_pbaction)
MCFG_GFXDECODE_ADD("gfxdecode", pbaction)
- MCFG_PALETTE_LENGTH(256)
-
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/pcktgal.c b/src/mame/drivers/pcktgal.c
index 2349bc4de3e..d527ad551f4 100644
--- a/src/mame/drivers/pcktgal.c
+++ b/src/mame/drivers/pcktgal.c
@@ -241,7 +241,8 @@ static MACHINE_CONFIG_START( pcktgal, pcktgal_state )
MCFG_SCREEN_UPDATE_DRIVER(pcktgal_state, screen_update_pcktgal)
MCFG_GFXDECODE_ADD("gfxdecode", pcktgal)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_INIT_OWNER(pcktgal_state, pcktgal)
MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
diff --git a/src/mame/drivers/pcxt.c b/src/mame/drivers/pcxt.c
index e0068502022..6b66ea5983f 100644
--- a/src/mame/drivers/pcxt.c
+++ b/src/mame/drivers/pcxt.c
@@ -160,7 +160,7 @@ UINT32 pcxt_state::screen_update_tetriskr(screen_device &screen, bitmap_rgb32 &b
color |= ((bg_rom[y*320/8+x+(pen_i*0x20000)+yi*0x400+m_bg_bank*0x2000+1] >> (7-xi)) & 1) << pen_i;
if(cliprect.contains(x*8+xi, y*8+yi))
- bitmap.pix32(y*8+yi, x*8+xi) = machine().pens[color];
+ bitmap.pix32(y*8+yi, x*8+xi) = m_palette->pen(color);
}
}
}
diff --git a/src/mame/drivers/pengo.c b/src/mame/drivers/pengo.c
index 5cd746c5956..6aa2ae3e19a 100644
--- a/src/mame/drivers/pengo.c
+++ b/src/mame/drivers/pengo.c
@@ -383,13 +383,13 @@ static MACHINE_CONFIG_START( pengo, pengo_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", pengo)
- MCFG_PALETTE_LENGTH(128*4)
+ MCFG_PALETTE_ADD("palette", 128*4)
+ MCFG_PALETTE_INIT_OWNER(pengo_state,pacman)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(pengo_state, screen_update_pacman)
- MCFG_PALETTE_INIT_OVERRIDE(pengo_state,pacman)
MCFG_VIDEO_START_OVERRIDE(pengo_state,pengo)
/* sound hardware */
diff --git a/src/mame/drivers/peplus.c b/src/mame/drivers/peplus.c
index 115e01c20b6..54a5d9ef466 100644
--- a/src/mame/drivers/peplus.c
+++ b/src/mame/drivers/peplus.c
@@ -280,10 +280,9 @@ public:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
UINT32 screen_update_peplus(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void peplus_load_superdata(const char *bank_name);
- void peplus_init();
+ DECLARE_PALETTE_INIT(peplus);
required_device<cpu_device> m_maincpu;
required_device<i2cmem_device> m_i2cmem;
required_device<gfxdecode_device> m_gfxdecode;
@@ -347,7 +346,7 @@ WRITE8_MEMBER(peplus_state::peplus_bgcolor_w)
{
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < m_palette->entries(); i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -369,7 +368,7 @@ WRITE8_MEMBER(peplus_state::peplus_bgcolor_w)
bit2 = 0;
b = 0x21 * bit2 + 0x47 * bit1 + 0x97 * bit0;
- palette_set_color(machine(), (15 + (i*16)), rgb_t(r, g, b));
+ m_palette->set_pen_color((15 + (i*16)), rgb_t(r, g, b));
}
}
@@ -591,7 +590,7 @@ READ8_MEMBER(peplus_state::peplus_sf000_r)
/* Last Color in Every Palette is bgcolor */
READ8_MEMBER(peplus_state::peplus_bgcolor_r)
{
- return palette_get_color(machine(), 15); // Return bgcolor from First Palette
+ return m_palette->pen_color(15); // Return bgcolor from First Palette
}
READ8_MEMBER(peplus_state::peplus_dropdoor_r)
@@ -998,7 +997,7 @@ UINT32 peplus_state::screen_update_peplus(screen_device &screen, bitmap_ind16 &b
return 0;
}
-void peplus_state::palette_init()
+PALETTE_INIT_MEMBER(peplus_state, peplus)
{
const UINT8 *color_prom = memregion("proms")->base();
UINT32 proms_size = memregion("proms")->bytes();
@@ -1010,7 +1009,7 @@ void peplus_state::palette_init()
*/
int i;
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -1032,7 +1031,7 @@ void peplus_state::palette_init()
bit2 = 0;
b = 0x21 * bit2 + 0x47 * bit1 + 0x97 * bit0;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -1345,7 +1344,8 @@ static MACHINE_CONFIG_START( peplus, peplus_state )
MCFG_SCREEN_UPDATE_DRIVER(peplus_state, screen_update_peplus)
MCFG_GFXDECODE_ADD("gfxdecode", peplus)
- MCFG_PALETTE_LENGTH(16*16*2)
+ MCFG_PALETTE_ADD("palette", 16*16*2)
+ MCFG_PALETTE_INIT_OWNER(peplus_state, peplus)
MCFG_MC6845_ADD("crtc", R6545_1, "screen", MC6845_CLOCK, mc6845_intf)
MCFG_X2404P_ADD("i2cmem")
diff --git a/src/mame/drivers/pgm.c b/src/mame/drivers/pgm.c
index 9895986e2d9..789ec1948ca 100644
--- a/src/mame/drivers/pgm.c
+++ b/src/mame/drivers/pgm.c
@@ -316,7 +316,7 @@ ADDRESS_MAP_START( pgm_base_mem, AS_PROGRAM, 16, pgm_state )
AM_RANGE(0x800000, 0x81ffff) AM_RAM AM_MIRROR(0x0e0000) AM_SHARE("sram") /* Main Ram */
AM_RANGE(0x900000, 0x907fff) AM_MIRROR(0x0f8000) AM_READWRITE(pgm_videoram_r, pgm_videoram_w) AM_SHARE("videoram") /* IGS023 VIDEO CHIP */
- AM_RANGE(0xa00000, 0xa011ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xa00000, 0xa011ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xb00000, 0xb0ffff) AM_RAM AM_SHARE("videoregs") /* Video Regs inc. Zoom Table */
AM_RANGE(0xc00002, 0xc00003) AM_READ(soundlatch_word_r) AM_WRITE(m68k_l1_w)
@@ -529,7 +529,8 @@ MACHINE_CONFIG_FRAGMENT( pgmbase )
MCFG_SCREEN_VBLANK_DRIVER(pgm_state, screen_eof_pgm)
MCFG_GFXDECODE_ADD("gfxdecode", pgm)
- MCFG_PALETTE_LENGTH(0x1200/2)
+ MCFG_PALETTE_ADD("palette", 0x1200/2)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(pgm_state,pgm)
diff --git a/src/mame/drivers/pgm2.c b/src/mame/drivers/pgm2.c
index fc59cb2b891..87ef4cff407 100644
--- a/src/mame/drivers/pgm2.c
+++ b/src/mame/drivers/pgm2.c
@@ -216,7 +216,7 @@ static MACHINE_CONFIG_START( pgm2, pgm2_state )
MCFG_SCREEN_VBLANK_DRIVER(pgm2_state, screen_eof_pgm2)
MCFG_GFXDECODE_ADD("gfxdecode", pgm2)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/phoenix.c b/src/mame/drivers/phoenix.c
index ab6aca43fb2..bc142a21a5c 100644
--- a/src/mame/drivers/phoenix.c
+++ b/src/mame/drivers/phoenix.c
@@ -462,9 +462,9 @@ static MACHINE_CONFIG_START( phoenix, phoenix_state )
MCFG_SCREEN_UPDATE_DRIVER(phoenix_state, screen_update_phoenix)
MCFG_GFXDECODE_ADD("gfxdecode", phoenix)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
- MCFG_PALETTE_INIT_OVERRIDE(phoenix_state,phoenix)
+ MCFG_PALETTE_INIT_OWNER(phoenix_state,phoenix)
MCFG_VIDEO_START_OVERRIDE(phoenix_state,phoenix)
/* sound hardware */
@@ -492,7 +492,8 @@ static MACHINE_CONFIG_DERIVED( pleiads, phoenix )
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", pleiads)
- MCFG_PALETTE_INIT_OVERRIDE(phoenix_state,pleiads)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(phoenix_state,pleiads)
/* sound hardware */
MCFG_TMS36XX_REPLACE("tms", 247)
@@ -528,9 +529,9 @@ static MACHINE_CONFIG_START( survival, phoenix_state )
MCFG_SCREEN_UPDATE_DRIVER(phoenix_state, screen_update_phoenix)
MCFG_GFXDECODE_ADD("gfxdecode", phoenix)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
- MCFG_PALETTE_INIT_OVERRIDE(phoenix_state,survival)
+ MCFG_PALETTE_INIT_OWNER(phoenix_state,survival)
MCFG_VIDEO_START_OVERRIDE(phoenix_state,phoenix)
/* sound hardware */
diff --git a/src/mame/drivers/photon.c b/src/mame/drivers/photon.c
index a812a498c49..4b1ed32987a 100644
--- a/src/mame/drivers/photon.c
+++ b/src/mame/drivers/photon.c
@@ -215,8 +215,8 @@ static MACHINE_CONFIG_START( photon, photon_state )
MCFG_SCREEN_SIZE(256+32, 192+32)
MCFG_SCREEN_VISIBLE_AREA(0, 256+32-1, 0, 192+32-1)
MCFG_SCREEN_UPDATE_DRIVER(photon_state, screen_update_photon)
- MCFG_PALETTE_LENGTH(16)
-
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(pk8000_base_state, pk8000)
MCFG_I8255_ADD( "ppi8255_1", pk8000_ppi8255_interface_1 )
MCFG_I8255_ADD( "ppi8255_2", pk8000_ppi8255_interface_2 )
diff --git a/src/mame/drivers/photon2.c b/src/mame/drivers/photon2.c
index df3b2cb8643..32fc35bcbd6 100644
--- a/src/mame/drivers/photon2.c
+++ b/src/mame/drivers/photon2.c
@@ -35,7 +35,7 @@ public:
DECLARE_WRITE8_MEMBER(photon2_misc_w);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(photon2);
UINT32 screen_update_spectrum(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof_spectrum(screen_device &screen, bool state);
TIMER_DEVICE_CALLBACK_MEMBER(spec_interrupt_hack);
@@ -89,9 +89,9 @@ static const rgb_t spectrum_palette[16] = {
};
/* Initialise the palette */
-void photon2_state::palette_init()
+PALETTE_INIT_MEMBER(photon2_state, photon2)
{
- palette_set_colors(machine(), 0, spectrum_palette, ARRAY_LENGTH(spectrum_palette));
+ palette.set_pen_colors(0, spectrum_palette, ARRAY_LENGTH(spectrum_palette));
}
void photon2_state::video_start()
@@ -336,8 +336,8 @@ static MACHINE_CONFIG_START( photon2, photon2_state )
MCFG_SCREEN_UPDATE_DRIVER(photon2_state, screen_update_spectrum)
MCFG_SCREEN_VBLANK_DRIVER(photon2_state, screen_eof_spectrum)
- MCFG_PALETTE_LENGTH(16)
-
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(photon2_state, photon2)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/photoply.c b/src/mame/drivers/photoply.c
index a6cef441bb3..50510dc7adc 100644
--- a/src/mame/drivers/photoply.c
+++ b/src/mame/drivers/photoply.c
@@ -123,7 +123,7 @@ static MACHINE_CONFIG_START( photoply, photoply_state )
MCFG_FRAGMENT_ADD( pcat_common )
- MCFG_GFXDECODE_ADD("gfxdecode", photoply )
+ MCFG_GFXDECODE_ADD("gfxdecode", photoply )
MCFG_IDE_CONTROLLER_ADD("ide", ata_devices, "hdd", NULL, true)
MCFG_ATA_INTERFACE_IRQ_HANDLER(DEVWRITELINE("pic8259_2", pic8259_device, ir6_w))
diff --git a/src/mame/drivers/pinball2k.c b/src/mame/drivers/pinball2k.c
index f466347bc7c..809ad1698e5 100644
--- a/src/mame/drivers/pinball2k.c
+++ b/src/mame/drivers/pinball2k.c
@@ -136,7 +136,7 @@ void pinball2k_state::video_start()
int i;
for (i=0; i < 16; i++)
{
- palette_set_color(machine(), i, cga_palette[i]);
+ m_palette->set_pen_color(i, cga_palette[i]);
}
}
@@ -145,7 +145,7 @@ void pinball2k_state::draw_char(bitmap_rgb32 &bitmap, const rectangle &cliprect,
int i,j;
const UINT8 *dp;
int index = 0;
- const pen_t *pens = gfx->machine().pens;
+ const pen_t *pens = m_palette->pens();
dp = gfx->get_data(ch);
@@ -584,7 +584,7 @@ static MACHINE_CONFIG_START( mediagx, pinball2k_state )
MCFG_IDE_CONTROLLER_ADD("ide", ata_devices, "hdd", NULL, true)
MCFG_ATA_INTERFACE_IRQ_HANDLER(DEVWRITELINE("pic8259_2", pic8259_device, ir6_w))
- MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map)
+ MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -594,7 +594,7 @@ static MACHINE_CONFIG_START( mediagx, pinball2k_state )
MCFG_SCREEN_UPDATE_DRIVER(pinball2k_state, screen_update_mediagx)
MCFG_GFXDECODE_ADD("gfxdecode", CGA)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/pingpong.c b/src/mame/drivers/pingpong.c
index 24acd7026e3..408cb85100b 100644
--- a/src/mame/drivers/pingpong.c
+++ b/src/mame/drivers/pingpong.c
@@ -456,8 +456,8 @@ static MACHINE_CONFIG_START( pingpong, pingpong_state )
MCFG_SCREEN_UPDATE_DRIVER(pingpong_state, screen_update_pingpong)
MCFG_GFXDECODE_ADD("gfxdecode", pingpong)
- MCFG_PALETTE_LENGTH(64*4+64*4)
-
+ MCFG_PALETTE_ADD("palette", 64*4+64*4)
+ MCFG_PALETTE_INIT_OWNER(pingpong_state, pingpong)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/pinkiri8.c b/src/mame/drivers/pinkiri8.c
index 7b23922f6fc..0184867c2f3 100644
--- a/src/mame/drivers/pinkiri8.c
+++ b/src/mame/drivers/pinkiri8.c
@@ -167,7 +167,7 @@ void pinkiri8_state::draw_background(bitmap_ind16 &bitmap, const rectangle &clip
attr = m_janshi_back_vram[count + 2] ^ 0xf0;
col = (attr >> 4) | 0x10;
- gfx->transpen(bitmap,cliprect, tile, col, 0, 0, x * 16, y * 8, 0);
+ gfx->transpen(m_palette,bitmap,cliprect, tile, col, 0, 0, x * 16, y * 8, 0);
count += 4;
}
@@ -313,7 +313,7 @@ void pinkiri8_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
{
for (int xx=0;xx<width;xx++)
{
- gfx->transpen(bitmap,cliprect,spr_offs+count,col,0,0,(x+xx*16) -7 ,(y+yy*8)-33,0);
+ gfx->transpen(m_palette,bitmap,cliprect,spr_offs+count,col,0,0,(x+xx*16) -7 ,(y+yy*8)-33,0);
count++;
}
}
@@ -330,7 +330,7 @@ UINT32 pinkiri8_state::screen_update_pinkiri8(screen_device &screen, bitmap_ind1
int r = (val & 0x001f) >> 0;
int g = (val & 0x03e0) >> 5;
int b = (val & 0x7c00) >> 10;
- palette_set_color_rgb(machine(), pen, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(pen, pal5bit(r), pal5bit(g), pal5bit(b));
}
@@ -358,7 +358,7 @@ UINT32 pinkiri8_state::screen_update_pinkiri8(screen_device &screen, bitmap_ind1
#endif
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
draw_background(bitmap, cliprect);
@@ -1095,7 +1095,7 @@ static MACHINE_CONFIG_START( pinkiri8, pinkiri8_state )
MCFG_SCREEN_UPDATE_DRIVER(pinkiri8_state, screen_update_pinkiri8)
MCFG_GFXDECODE_ADD("gfxdecode", pinkiri8)
- MCFG_PALETTE_LENGTH(0x2000)
+ MCFG_PALETTE_ADD("palette", 0x2000)
MCFG_DEVICE_ADD("janshivdp", JANSHIVDP, 0)
diff --git a/src/mame/drivers/pipedrm.c b/src/mame/drivers/pipedrm.c
index 71986a0a038..c86b748d11a 100644
--- a/src/mame/drivers/pipedrm.c
+++ b/src/mame/drivers/pipedrm.c
@@ -286,7 +286,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, pipedrm_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x9fff) AM_RAM
AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0xc000, 0xcfff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xd000, 0xffff) AM_READWRITE(fromance_videoram_r, fromance_videoram_w) AM_SHARE("videoram")
ADDRESS_MAP_END
@@ -661,13 +661,15 @@ static MACHINE_CONFIG_START( pipedrm, pipedrm_state )
MCFG_SCREEN_UPDATE_DRIVER(pipedrm_state, screen_update_pipedrm)
MCFG_GFXDECODE_ADD("gfxdecode", pipedrm)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_GFXREGION(2)
MCFG_VSYSTEM_SPR2_SET_OFFSETS(-13, -6)
MCFG_VSYSTEM_SPR2_SET_PRITYPE(3)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
+ MCFG_VSYSTEM_SPR2_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(pipedrm_state,pipedrm)
@@ -706,7 +708,8 @@ static MACHINE_CONFIG_START( hatris, pipedrm_state )
MCFG_SCREEN_UPDATE_DRIVER(pipedrm_state, screen_update_fromance)
MCFG_GFXDECODE_ADD("gfxdecode", hatris)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(pipedrm_state,hatris)
diff --git a/src/mame/drivers/pipeline.c b/src/mame/drivers/pipeline.c
index f966deabf29..9619d5b7c8d 100644
--- a/src/mame/drivers/pipeline.c
+++ b/src/mame/drivers/pipeline.c
@@ -102,7 +102,7 @@ public:
TILE_GET_INFO_MEMBER(get_tile_info);
TILE_GET_INFO_MEMBER(get_tile_info2);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(pipeline);
UINT32 screen_update_pipeline(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(protection_deferred_w);
required_device<cpu_device> m_maincpu;
@@ -168,7 +168,7 @@ WRITE8_MEMBER(pipeline_state::vram2_w)
if(offset<0x300)
{
offset&=0xff;
- palette_set_color_rgb(machine(), offset, pal6bit(m_palram[offset]), pal6bit(m_palram[offset+0x100]), pal6bit(m_palram[offset+0x200]));
+ m_palette->set_pen_color(offset, pal6bit(m_palram[offset]), pal6bit(m_palram[offset+0x100]), pal6bit(m_palram[offset+0x200]));
}
}
}
@@ -369,7 +369,7 @@ static const ay8910_interface ay8910_config =
DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL
};
-void pipeline_state::palette_init()
+PALETTE_INIT_MEMBER(pipeline_state, pipeline)
{
int r,g,b,i,c;
UINT8 *prom1 = &memregion("proms")->base()[0x000];
@@ -384,7 +384,7 @@ void pipeline_state::palette_init()
r*=36;
g*=36;
b*=85;
- palette_set_color(machine(), 0x100+i, rgb_t(r, g, b));
+ palette.set_pen_color(0x100+i, rgb_t(r, g, b));
}
}
@@ -419,8 +419,8 @@ static MACHINE_CONFIG_START( pipeline, pipeline_state )
MCFG_GFXDECODE_ADD("gfxdecode", pipeline)
- MCFG_PALETTE_LENGTH(0x100+0x100)
-
+ MCFG_PALETTE_ADD("palette", 0x100+0x100)
+ MCFG_PALETTE_INIT_OWNER(pipeline_state, pipeline)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/pirates.c b/src/mame/drivers/pirates.c
index d895de932d2..0c597b7c527 100644
--- a/src/mame/drivers/pirates.c
+++ b/src/mame/drivers/pirates.c
@@ -158,7 +158,7 @@ static ADDRESS_MAP_START( pirates_map, AS_PROGRAM, 16, pirates_state )
// AM_RANGE(0x500800, 0x50080f) AM_WRITENOP
AM_RANGE(0x600000, 0x600001) AM_WRITE(pirates_out_w)
AM_RANGE(0x700000, 0x700001) AM_WRITEONLY AM_SHARE("scroll") // scroll reg
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x800000, 0x803fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x900000, 0x90017f) AM_RAM // more of tilemaps ?
AM_RANGE(0x900180, 0x90137f) AM_RAM_WRITE(pirates_tx_tileram_w) AM_SHARE("tx_tileram")
AM_RANGE(0x901380, 0x902a7f) AM_RAM_WRITE(pirates_fg_tileram_w) AM_SHARE("fg_tileram")
@@ -263,7 +263,8 @@ static MACHINE_CONFIG_START( pirates, pirates_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(pirates_state, screen_update_pirates)
- MCFG_PALETTE_LENGTH(0x2000)
+ MCFG_PALETTE_ADD("palette", 0x2000)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/pitnrun.c b/src/mame/drivers/pitnrun.c
index 1513b9513d6..74edb2bca7b 100644
--- a/src/mame/drivers/pitnrun.c
+++ b/src/mame/drivers/pitnrun.c
@@ -252,7 +252,8 @@ static MACHINE_CONFIG_START( pitnrun, pitnrun_state )
MCFG_SCREEN_UPDATE_DRIVER(pitnrun_state, screen_update_pitnrun)
MCFG_GFXDECODE_ADD("gfxdecode", pitnrun)
- MCFG_PALETTE_LENGTH(32*3)
+ MCFG_PALETTE_ADD("palette", 32*3)
+ MCFG_PALETTE_INIT_OWNER(pitnrun_state, pitnrun)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/pkscram.c b/src/mame/drivers/pkscram.c
index b93e3c8c2e9..ce488e8aca3 100644
--- a/src/mame/drivers/pkscram.c
+++ b/src/mame/drivers/pkscram.c
@@ -119,7 +119,7 @@ static ADDRESS_MAP_START( pkscramble_map, AS_PROGRAM, 16, pkscram_state )
AM_RANGE(0x045000, 0x045fff) AM_RAM_WRITE(pkscramble_mdtilemap_w) AM_SHARE("mdtilemap_ram") // md tilemap (just a copy of fg?)
AM_RANGE(0x046000, 0x046fff) AM_RAM_WRITE(pkscramble_bgtilemap_w) AM_SHARE("bgtilemap_ram") // bg tilemap
AM_RANGE(0x047000, 0x047fff) AM_RAM // unused
- AM_RANGE(0x048000, 0x048fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x048000, 0x048fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x049000, 0x049001) AM_READ_PORT("DSW")
AM_RANGE(0x049004, 0x049005) AM_READ_PORT("INPUTS")
AM_RANGE(0x049008, 0x049009) AM_WRITE(pkscramble_output_w)
@@ -319,7 +319,8 @@ static MACHINE_CONFIG_START( pkscramble, pkscram_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 24*8-1)
MCFG_SCREEN_UPDATE_DRIVER(pkscram_state, screen_update_pkscramble)
- MCFG_PALETTE_LENGTH(0x800)
+ MCFG_PALETTE_ADD("palette", 0x800)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_GFXDECODE_ADD("gfxdecode", pkscram)
diff --git a/src/mame/drivers/pktgaldx.c b/src/mame/drivers/pktgaldx.c
index 4078074f1bd..a30f5a71492 100644
--- a/src/mame/drivers/pktgaldx.c
+++ b/src/mame/drivers/pktgaldx.c
@@ -165,7 +165,7 @@ static ADDRESS_MAP_START( pktgaldb_map, AS_PROGRAM, 16, pktgaldx_state )
AM_RANGE(0x300000, 0x30000f) AM_RAM // ??
- AM_RANGE(0x330000, 0x330bff) AM_RAM_WRITE(paletteram_xbgr_word_be_w) AM_SHARE("paletteram") // extra colours?
+ AM_RANGE(0x330000, 0x330bff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // extra colours?
ADDRESS_MAP_END
@@ -341,17 +341,21 @@ static MACHINE_CONFIG_START( pktgaldx, pktgaldx_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_DRIVER(pktgaldx_state, screen_update_pktgaldx)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(XBGR)
+
MCFG_GFXDECODE_ADD("gfxdecode", pktgaldx)
MCFG_DECOCOMN_ADD("deco_common")
MCFG_DECO16IC_ADD("tilegen1", pktgaldx_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 2);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DECO104_ADD("ioprot104")
MCFG_DECO146_SET_INTERFACE_SCRAMBLE(8,9, 4,5,6,7 ,1,0,3,2) // hopefully this is correct, nothing else uses this arrangement!
@@ -385,7 +389,9 @@ static MACHINE_CONFIG_START( pktgaldb, pktgaldx_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_DRIVER(pktgaldx_state, screen_update_pktgaldb)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(XBGR)
+
MCFG_GFXDECODE_ADD("gfxdecode", bootleg)
/* sound hardware */
diff --git a/src/mame/drivers/playch10.c b/src/mame/drivers/playch10.c
index 7f3752a816e..205533b8df1 100644
--- a/src/mame/drivers/playch10.c
+++ b/src/mame/drivers/playch10.c
@@ -679,7 +679,8 @@ static MACHINE_CONFIG_START( playch10, playch10_state )
// video hardware
MCFG_GFXDECODE_ADD("gfxdecode", playch10)
- MCFG_PALETTE_LENGTH(256+8*4*16)
+ MCFG_PALETTE_ADD("palette", 256+8*4*16)
+ MCFG_PALETTE_INIT_OWNER(playch10_state, playch10)
MCFG_DEFAULT_LAYOUT(layout_dualhuov)
MCFG_SCREEN_ADD("top", RASTER)
diff --git a/src/mame/drivers/playmark.c b/src/mame/drivers/playmark.c
index eb34e3bb05c..657af486f09 100644
--- a/src/mame/drivers/playmark.c
+++ b/src/mame/drivers/playmark.c
@@ -250,7 +250,7 @@ static ADDRESS_MAP_START( wbeachvl_main_map, AS_PROGRAM, 16, playmark_state )
AM_RANGE(0x71001a, 0x71001b) AM_READ_PORT("P4")
// AM_RANGE(0x71001c, 0x71001d) AM_READ(playmark_snd_status???)
// AM_RANGE(0x71001e, 0x71001f) AM_WRITENOP//playmark_snd_command_w },
- AM_RANGE(0x780000, 0x780fff) AM_WRITE(paletteram_RRRRRGGGGGBBBBBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x780000, 0x780fff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xff0000, 0xffffff) AM_RAM
ADDRESS_MAP_END
@@ -1059,7 +1059,8 @@ static MACHINE_CONFIG_START( bigtwin, playmark_state )
MCFG_SCREEN_UPDATE_DRIVER(playmark_state, screen_update_bigtwin)
MCFG_GFXDECODE_ADD("gfxdecode", playmark)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRRGGGGGBBBBBx)
MCFG_VIDEO_START_OVERRIDE(playmark_state,bigtwin)
@@ -1093,7 +1094,8 @@ static MACHINE_CONFIG_START( bigtwinb, playmark_state )
MCFG_SCREEN_UPDATE_DRIVER(playmark_state, screen_update_bigtwinb)
MCFG_GFXDECODE_ADD("gfxdecode", bigtwinb)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRRGGGGGBBBBBx)
MCFG_VIDEO_START_OVERRIDE(playmark_state,bigtwinb)
@@ -1130,7 +1132,8 @@ static MACHINE_CONFIG_START( wbeachvl, playmark_state )
MCFG_SCREEN_UPDATE_DRIVER(playmark_state, screen_update_wbeachvl)
MCFG_GFXDECODE_ADD("gfxdecode", wbeachvl)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(RRRRRGGGGGBBBBBx)
MCFG_VIDEO_START_OVERRIDE(playmark_state,wbeachvl)
@@ -1164,7 +1167,8 @@ static MACHINE_CONFIG_START( excelsr, playmark_state )
MCFG_SCREEN_UPDATE_DRIVER(playmark_state, screen_update_excelsr)
MCFG_GFXDECODE_ADD("gfxdecode", excelsr)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRRGGGGGBBBBBx)
MCFG_VIDEO_START_OVERRIDE(playmark_state,excelsr)
@@ -1201,7 +1205,8 @@ static MACHINE_CONFIG_START( hotmind, playmark_state )
MCFG_SCREEN_UPDATE_DRIVER(playmark_state, screen_update_hrdtimes)
MCFG_GFXDECODE_ADD("gfxdecode", hrdtimes)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRRGGGGGBBBBBx)
MCFG_VIDEO_START_OVERRIDE(playmark_state,hotmind)
@@ -1239,7 +1244,8 @@ static MACHINE_CONFIG_START( hrdtimes, playmark_state )
MCFG_SCREEN_UPDATE_DRIVER(playmark_state, screen_update_hrdtimes)
MCFG_GFXDECODE_ADD("gfxdecode", hrdtimes)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRRGGGGGBBBBBx)
MCFG_VIDEO_START_OVERRIDE(playmark_state,hrdtimes)
diff --git a/src/mame/drivers/plygonet.c b/src/mame/drivers/plygonet.c
index e42d824d4b9..c8e5b688fdc 100644
--- a/src/mame/drivers/plygonet.c
+++ b/src/mame/drivers/plygonet.c
@@ -298,7 +298,7 @@ WRITE32_MEMBER(polygonet_state::plygonet_palette_w)
g = (m_generic_paletteram_32[offset] >> 8) & 0xff;
b = (m_generic_paletteram_32[offset] >> 0) & 0xff;
- palette_set_color(machine(),offset,rgb_t(r,g,b));
+ m_palette->set_pen_color(offset,rgb_t(r,g,b));
}
@@ -676,7 +676,7 @@ static MACHINE_CONFIG_START( plygonet, polygonet_state )
MCFG_SCREEN_VISIBLE_AREA(64, 64+368-1, 0, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(polygonet_state, screen_update_polygonet)
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD("palette", 32768)
MCFG_K053936_ADD("k053936", polygonet_k053936_intf)
diff --git a/src/mame/drivers/pokechmp.c b/src/mame/drivers/pokechmp.c
index bad860f112e..51fec6fe009 100644
--- a/src/mame/drivers/pokechmp.c
+++ b/src/mame/drivers/pokechmp.c
@@ -92,8 +92,8 @@ static ADDRESS_MAP_START( pokechmp_map, AS_PROGRAM, 8, pokechmp_state )
AM_RANGE(0x1c00, 0x1c00) AM_READ_PORT("DSW") AM_WRITE(pokechmp_bank_w)
/* Extra on Poke Champ (not on Pocket Gal) */
- AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_split_hi_w) AM_SHARE("paletteram2")
- AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_split_lo_w) AM_SHARE("paletteram")
+ AM_RANGE(0x2000, 0x23ff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
+ AM_RANGE(0x2400, 0x27ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
AM_RANGE(0x8000, 0xffff) AM_ROMBANK("fixed")
@@ -221,8 +221,8 @@ static MACHINE_CONFIG_START( pokechmp, pokechmp_state )
MCFG_SCREEN_UPDATE_DRIVER(pokechmp_state, screen_update_pokechmp)
MCFG_GFXDECODE_ADD("gfxdecode", pokechmp)
- MCFG_PALETTE_LENGTH(0x400)
-
+ MCFG_PALETTE_ADD("palette", 0x400)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/poker72.c b/src/mame/drivers/poker72.c
index f4acdba9487..172775dab93 100644
--- a/src/mame/drivers/poker72.c
+++ b/src/mame/drivers/poker72.c
@@ -34,7 +34,7 @@ public:
DECLARE_DRIVER_INIT(poker72);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(poker72);
UINT32 screen_update_poker72(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -62,7 +62,7 @@ UINT32 poker72_state::screen_update_poker72(screen_device &screen, bitmap_ind16
tile|= m_tile_bank << 12;
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect,tile,color,fx,fy,x*8,y*8);
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect,tile,color,fx,fy,x*8,y*8);
count+=2;
}
@@ -80,7 +80,7 @@ WRITE8_MEMBER(poker72_state::poker72_paletteram_w)
g = m_pal[(offset & 0x3ff)+0x400] & 0x3f;
b = m_pal[(offset & 0x3ff)+0x800] & 0x3f;
- palette_set_color_rgb( machine(), offset & 0x3ff, pal6bit(r), pal6bit(g), pal6bit(b));
+ m_palette->set_pen_color( offset & 0x3ff, pal6bit(r), pal6bit(g), pal6bit(b));
}
WRITE8_MEMBER(poker72_state::output_w)
@@ -322,7 +322,7 @@ static GFXDECODE_START( poker72 )
GFXDECODE_END
/* default 444 palette for debug purpose */
-void poker72_state::palette_init()
+PALETTE_INIT_MEMBER(poker72_state, poker72)
{
int x,r,g,b;
@@ -331,7 +331,7 @@ void poker72_state::palette_init()
r = (x & 0xf)*0x10;
g = ((x & 0x3c)>>2)*0x10;
b = ((x & 0xf0)>>4)*0x10;
- palette_set_color(machine(),x,rgb_t(r,g,b));
+ palette.set_pen_color(x,rgb_t(r,g,b));
}
}
@@ -370,8 +370,8 @@ static MACHINE_CONFIG_START( poker72, poker72_state )
MCFG_SCREEN_UPDATE_DRIVER(poker72_state, screen_update_poker72)
MCFG_GFXDECODE_ADD("gfxdecode", poker72)
- MCFG_PALETTE_LENGTH(0xe00)
-
+ MCFG_PALETTE_ADD("palette", 0xe00)
+ MCFG_PALETTE_INIT_OWNER(poker72_state, poker72)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/polepos.c b/src/mame/drivers/polepos.c
index 8f9c2e4cd83..fa768b53cfb 100644
--- a/src/mame/drivers/polepos.c
+++ b/src/mame/drivers/polepos.c
@@ -919,10 +919,10 @@ static MACHINE_CONFIG_START( polepos, polepos_state )
MCFG_SCREEN_UPDATE_DRIVER(polepos_state, screen_update_polepos)
MCFG_GFXDECODE_ADD("gfxdecode", polepos)
- MCFG_PALETTE_LENGTH(0x0f00)
+ MCFG_PALETTE_ADD("palette", 0x0f00)
MCFG_DEFAULT_LAYOUT(layout_polepos)
- MCFG_PALETTE_INIT_OVERRIDE(polepos_state,polepos)
+ MCFG_PALETTE_INIT_OWNER(polepos_state,polepos)
MCFG_VIDEO_START_OVERRIDE(polepos_state,polepos)
/* sound hardware */
@@ -998,10 +998,10 @@ static MACHINE_CONFIG_START( topracern, polepos_state )
MCFG_SCREEN_UPDATE_DRIVER(polepos_state, screen_update_polepos)
MCFG_GFXDECODE_ADD("gfxdecode", polepos)
- MCFG_PALETTE_LENGTH(0x0f00)
+ MCFG_PALETTE_ADD("palette", 0x0f00)
MCFG_DEFAULT_LAYOUT(layout_topracer)
- MCFG_PALETTE_INIT_OVERRIDE(polepos_state,polepos)
+ MCFG_PALETTE_INIT_OWNER(polepos_state,polepos)
MCFG_VIDEO_START_OVERRIDE(polepos_state,polepos)
/* sound hardware */
diff --git a/src/mame/drivers/policetr.c b/src/mame/drivers/policetr.c
index c8ba9c262e2..d3e870e4b3c 100644
--- a/src/mame/drivers/policetr.c
+++ b/src/mame/drivers/policetr.c
@@ -410,7 +410,7 @@ static MACHINE_CONFIG_START( policetr, policetr_state )
MCFG_SCREEN_VISIBLE_AREA(0, 393, 0, 239)
MCFG_SCREEN_UPDATE_DRIVER(policetr_state, screen_update_policetr)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
diff --git a/src/mame/drivers/polyplay.c b/src/mame/drivers/polyplay.c
index e952c1209b8..2b55a37ef23 100644
--- a/src/mame/drivers/polyplay.c
+++ b/src/mame/drivers/polyplay.c
@@ -286,8 +286,8 @@ static MACHINE_CONFIG_START( polyplay, polyplay_state )
MCFG_SCREEN_UPDATE_DRIVER(polyplay_state, screen_update_polyplay)
MCFG_GFXDECODE_ADD("gfxdecode", polyplay)
- MCFG_PALETTE_LENGTH(10)
-
+ MCFG_PALETTE_ADD("palette", 10)
+ MCFG_PALETTE_INIT_OWNER(polyplay_state, polyplay)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/poolshrk.c b/src/mame/drivers/poolshrk.c
index f4bb0e1dc2b..71d06d18b58 100644
--- a/src/mame/drivers/poolshrk.c
+++ b/src/mame/drivers/poolshrk.c
@@ -202,12 +202,12 @@ static GFXDECODE_START( poolshrk )
GFXDECODE_END
-void poolshrk_state::palette_init()
+PALETTE_INIT_MEMBER(poolshrk_state, poolshrk)
{
- palette_set_color(machine(),0,rgb_t(0x7F, 0x7F, 0x7F));
- palette_set_color(machine(),1,rgb_t(0xFF, 0xFF, 0xFF));
- palette_set_color(machine(),2,rgb_t(0x7F, 0x7F, 0x7F));
- palette_set_color(machine(),3,rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(0,rgb_t(0x7F, 0x7F, 0x7F));
+ palette.set_pen_color(1,rgb_t(0xFF, 0xFF, 0xFF));
+ palette.set_pen_color(2,rgb_t(0x7F, 0x7F, 0x7F));
+ palette.set_pen_color(3,rgb_t(0x00, 0x00, 0x00));
}
@@ -226,7 +226,8 @@ static MACHINE_CONFIG_START( poolshrk, poolshrk_state )
MCFG_SCREEN_UPDATE_DRIVER(poolshrk_state, screen_update_poolshrk)
MCFG_GFXDECODE_ADD("gfxdecode", poolshrk)
- MCFG_PALETTE_LENGTH(4)
+ MCFG_PALETTE_ADD("palette", 4)
+ MCFG_PALETTE_INIT_OWNER(poolshrk_state, poolshrk)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/pooyan.c b/src/mame/drivers/pooyan.c
index 6ff011bb0a9..2af7132d0ff 100644
--- a/src/mame/drivers/pooyan.c
+++ b/src/mame/drivers/pooyan.c
@@ -198,8 +198,8 @@ static MACHINE_CONFIG_START( pooyan, pooyan_state )
MCFG_SCREEN_UPDATE_DRIVER(pooyan_state, screen_update_pooyan)
MCFG_GFXDECODE_ADD("gfxdecode", pooyan)
- MCFG_PALETTE_LENGTH(16*16+16*16)
-
+ MCFG_PALETTE_ADD("palette", 16*16+16*16)
+ MCFG_PALETTE_INIT_OWNER(pooyan_state, pooyan)
/* sound hardware */
MCFG_FRAGMENT_ADD(timeplt_sound)
diff --git a/src/mame/drivers/popeye.c b/src/mame/drivers/popeye.c
index 4e58f4ebb15..bb8c7430efa 100644
--- a/src/mame/drivers/popeye.c
+++ b/src/mame/drivers/popeye.c
@@ -391,8 +391,8 @@ static MACHINE_CONFIG_START( skyskipr, popeye_state )
MCFG_SCREEN_UPDATE_DRIVER(popeye_state, screen_update_popeye)
MCFG_GFXDECODE_ADD("gfxdecode", popeye)
- MCFG_PALETTE_LENGTH(16+16*2+64*4)
-
+ MCFG_PALETTE_ADD("palette", 16+16*2+64*4)
+ MCFG_PALETTE_INIT_OWNER(popeye_state, popeye)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -425,7 +425,8 @@ static MACHINE_CONFIG_DERIVED( popeyebl, popeye )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(popeyebl_map)
- MCFG_PALETTE_INIT_OVERRIDE(popeye_state,popeyebl)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(popeye_state,popeyebl)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/popobear.c b/src/mame/drivers/popobear.c
index 8c57efe2de8..660a4368e78 100644
--- a/src/mame/drivers/popobear.c
+++ b/src/mame/drivers/popobear.c
@@ -222,7 +222,7 @@ void popobear_state::video_start()
/* create the char set (gfx will then be updated dynamically from RAM) */
- m_gfxdecode->set_gfx(m_gfx_index, auto_alloc(machine(), gfx_element(machine(), popobear_char_layout, (UINT8 *)m_vram_rearranged, machine().total_colors() / 16, 0)));
+ m_gfxdecode->set_gfx(m_gfx_index, auto_alloc(machine(), gfx_element(machine(), popobear_char_layout, (UINT8 *)m_vram_rearranged, m_palette->entries() / 16, 0)));
m_bg_tilemap[0] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(popobear_state::get_popobear_bg0_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 64);
m_bg_tilemap[1] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(popobear_state::get_popobear_bg1_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 64);
@@ -338,7 +338,7 @@ void popobear_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect
// colours on game over screen are still wrong without the weird param kludge above
if (pix&0x3f)
{
- bitmap.pix16(y_draw, x_draw) = machine().pens[((pix+(add_it))&0xff)+0x100];
+ bitmap.pix16(y_draw, x_draw) = m_palette->pen(((pix+(add_it))&0xff)+0x100);
}
}
@@ -491,7 +491,7 @@ static ADDRESS_MAP_START( popobear_mem, AS_PROGRAM, 16, popobear_state )
AM_RANGE(0x480034, 0x480035) AM_RAM // coin counter or coin lockout
AM_RANGE(0x48003a, 0x48003b) AM_RAM //AM_READ(popo_48003a_r) AM_WRITE(popo_48003a_w)
- AM_RANGE(0x480400, 0x4807ff) AM_RAM AM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x480400, 0x4807ff) AM_RAM AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x500000, 0x500001) AM_READ_PORT("IN0")
AM_RANGE(0x520000, 0x520001) AM_READ_PORT("IN1")
@@ -651,7 +651,9 @@ static MACHINE_CONFIG_START( popobear, popobear_state )
MCFG_SCREEN_SIZE(128*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 479, 0, 239)
- MCFG_PALETTE_LENGTH(256*2)
+
+ MCFG_PALETTE_ADD("palette", 256*2)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/popper.c b/src/mame/drivers/popper.c
index 4a9750753d9..5ee043b93af 100644
--- a/src/mame/drivers/popper.c
+++ b/src/mame/drivers/popper.c
@@ -353,8 +353,8 @@ static MACHINE_CONFIG_START( popper, popper_state )
MCFG_SCREEN_UPDATE_DRIVER(popper_state, screen_update_popper)
MCFG_GFXDECODE_ADD("gfxdecode", popper)
- MCFG_PALETTE_LENGTH(64)
-
+ MCFG_PALETTE_ADD("palette", 64)
+ MCFG_PALETTE_INIT_OWNER(popper_state, popper)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/portrait.c b/src/mame/drivers/portrait.c
index bb25b8c34d6..a1815542916 100644
--- a/src/mame/drivers/portrait.c
+++ b/src/mame/drivers/portrait.c
@@ -260,8 +260,8 @@ static MACHINE_CONFIG_START( portrait, portrait_state )
MCFG_SCREEN_UPDATE_DRIVER(portrait_state, screen_update_portrait)
MCFG_GFXDECODE_ADD("gfxdecode", portrait)
- MCFG_PALETTE_LENGTH(0x800)
-
+ MCFG_PALETTE_ADD("palette", 0x800)
+ MCFG_PALETTE_INIT_OWNER(portrait_state, portrait)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/powerbal.c b/src/mame/drivers/powerbal.c
index f33161890c7..75854ffb80f 100644
--- a/src/mame/drivers/powerbal.c
+++ b/src/mame/drivers/powerbal.c
@@ -417,7 +417,7 @@ void powerbal_state::draw_sprites_powerbal(bitmap_ind16 &bitmap, const rectangle
code = spriteram[offs + 2];
color = (spriteram[offs + 1] & 0xf000) >> 12;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,0,
@@ -503,7 +503,7 @@ static MACHINE_CONFIG_START( powerbal, powerbal_state )
MCFG_SCREEN_UPDATE_DRIVER(powerbal_state, screen_update_powerbal)
MCFG_GFXDECODE_ADD("gfxdecode", powerbal)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_VIDEO_START_OVERRIDE(powerbal_state,powerbal)
@@ -536,7 +536,7 @@ static MACHINE_CONFIG_START( magicstk, powerbal_state )
MCFG_SCREEN_UPDATE_DRIVER(powerbal_state, screen_update_powerbal)
MCFG_GFXDECODE_ADD("gfxdecode", powerbal)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_VIDEO_START_OVERRIDE(powerbal_state,powerbal)
diff --git a/src/mame/drivers/powerins.c b/src/mame/drivers/powerins.c
index 49af36b87f4..f8d65e9d4a9 100644
--- a/src/mame/drivers/powerins.c
+++ b/src/mame/drivers/powerins.c
@@ -355,7 +355,7 @@ static MACHINE_CONFIG_START( powerins, powerins_state )
MCFG_SCREEN_UPDATE_DRIVER(powerins_state, screen_update_powerins)
MCFG_GFXDECODE_ADD("gfxdecode", powerins)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
/* sound hardware */
diff --git a/src/mame/drivers/ppmast93.c b/src/mame/drivers/ppmast93.c
index 50d379f787e..785523b365a 100644
--- a/src/mame/drivers/ppmast93.c
+++ b/src/mame/drivers/ppmast93.c
@@ -389,8 +389,7 @@ static MACHINE_CONFIG_START( ppmast93, ppmast93_state )
MCFG_GFXDECODE_ADD("gfxdecode", ppmast93)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 0x100)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/prehisle.c b/src/mame/drivers/prehisle.c
index dad0c5a434b..14220bb18e8 100644
--- a/src/mame/drivers/prehisle.c
+++ b/src/mame/drivers/prehisle.c
@@ -30,7 +30,7 @@ static ADDRESS_MAP_START( prehisle_map, AS_PROGRAM, 16, prehisle_state )
AM_RANGE(0x090000, 0x0907ff) AM_RAM_WRITE(prehisle_fg_videoram16_w) AM_SHARE("videoram")
AM_RANGE(0x0a0000, 0x0a07ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x0b0000, 0x0b3fff) AM_RAM_WRITE(prehisle_bg_videoram16_w) AM_SHARE("bg_videoram16")
- AM_RANGE(0x0d0000, 0x0d07ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0d0000, 0x0d07ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0e0000, 0x0e00ff) AM_READ(prehisle_control16_r)
AM_RANGE(0x0f0070, 0x0ff071) AM_WRITE(prehisle_sound16_w)
AM_RANGE(0x0f0000, 0x0ff0ff) AM_WRITE(prehisle_control16_w)
@@ -217,7 +217,8 @@ static MACHINE_CONFIG_START( prehisle, prehisle_state )
MCFG_SCREEN_UPDATE_DRIVER(prehisle_state, screen_update_prehisle)
MCFG_GFXDECODE_ADD("gfxdecode", prehisle)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
/* sound hardware */
diff --git a/src/mame/drivers/progolf.c b/src/mame/drivers/progolf.c
index f07e21766e1..c1cd8cd099d 100644
--- a/src/mame/drivers/progolf.c
+++ b/src/mame/drivers/progolf.c
@@ -89,7 +89,7 @@ public:
DECLARE_WRITE8_MEMBER(progolf_videoram_w);
DECLARE_INPUT_CHANGED_MEMBER(coin_inserted);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(progolf);
UINT32 screen_update_progolf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
@@ -125,9 +125,9 @@ UINT32 progolf_state::screen_update_progolf(screen_device &screen, bitmap_ind16
{
int tile = videoram[count];
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect,tile,1,0,0,(256-x*8)+scroll,y*8);
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect,tile,1,0,0,(256-x*8)+scroll,y*8);
/* wrap-around */
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect,tile,1,0,0,(256-x*8)+scroll-1024,y*8);
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect,tile,1,0,0,(256-x*8)+scroll-1024,y*8);
count++;
}
@@ -149,7 +149,7 @@ UINT32 progolf_state::screen_update_progolf(screen_device &screen, bitmap_ind16
color = m_fg_fb[(xi+yi*8)+count*0x40];
if(color != 0 && cliprect.contains(x+yi, 256-y+xi))
- bitmap.pix16(x+yi, 256-y+xi) = machine().pens[(color & 0x7)];
+ bitmap.pix16(x+yi, 256-y+xi) = m_palette->pen((color & 0x7));
}
}
@@ -392,12 +392,12 @@ static MC6845_INTERFACE( mc6845_intf )
};
-void progolf_state::palette_init()
+PALETTE_INIT_MEMBER(progolf_state, progolf)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < m_palette->entries();i++)
{
int bit0,bit1,bit2,r,g,b;
@@ -417,7 +417,7 @@ void progolf_state::palette_init()
bit2 = (color_prom[i] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ m_palette->set_pen_color(i,rgb_t(r,g,b));
}
}
@@ -440,7 +440,8 @@ static MACHINE_CONFIG_START( progolf, progolf_state )
MCFG_SCREEN_UPDATE_DRIVER(progolf_state, screen_update_progolf)
MCFG_GFXDECODE_ADD("gfxdecode", progolf)
- MCFG_PALETTE_LENGTH(32*3)
+ MCFG_PALETTE_ADD("palette", 32*3)
+ MCFG_PALETTE_INIT_OWNER(progolf_state, progolf)
MCFG_MC6845_ADD("crtc", MC6845, "screen", 3000000/4, mc6845_intf) /* hand tuned to get ~57 fps */
diff --git a/src/mame/drivers/psattack.c b/src/mame/drivers/psattack.c
index 9516e36abf6..97b40768a16 100644
--- a/src/mame/drivers/psattack.c
+++ b/src/mame/drivers/psattack.c
@@ -190,8 +190,7 @@ static MACHINE_CONFIG_START( psattack, psattack_state )
MCFG_SCREEN_VBLANK_DRIVER(psattack_state, screen_eof_psattack)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRRR_GGGGGG_BBBBB)
- MCFG_PALETTE_LENGTH(65536)
+ MCFG_PALETTE_ADD_RRRRRGGGGGGBBBBB("palette")
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/psikyo.c b/src/mame/drivers/psikyo.c
index 4d1f110e435..3ad78f16d27 100644
--- a/src/mame/drivers/psikyo.c
+++ b/src/mame/drivers/psikyo.c
@@ -308,7 +308,7 @@ READ32_MEMBER(psikyo_state::s1945_input_r)
static ADDRESS_MAP_START( psikyo_map, AS_PROGRAM, 32, psikyo_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM (not all used)
AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram") // Sprites, buffered by two frames (list buffered + fb buffered)
- AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_dword_be_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x800000, 0x801fff) AM_RAM_WRITE(psikyo_vram_0_w) AM_SHARE("vram_0") // Layer 0
AM_RANGE(0x802000, 0x803fff) AM_RAM_WRITE(psikyo_vram_1_w) AM_SHARE("vram_1") // Layer 1
AM_RANGE(0x804000, 0x807fff) AM_RAM AM_SHARE("vregs") // RAM + Vregs
@@ -356,7 +356,7 @@ static ADDRESS_MAP_START( psikyo_bootleg_map, AS_PROGRAM, 32, psikyo_state )
AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("boot_spritebuf") // RAM (it copies the spritelist here, the HW probably doesn't have automatic buffering like the originals?
AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram") // Sprites, buffered by two frames (list buffered + fb buffered)
- AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_dword_be_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x800000, 0x801fff) AM_RAM_WRITE(psikyo_vram_0_w) AM_SHARE("vram_0") // Layer 0
AM_RANGE(0x802000, 0x803fff) AM_RAM_WRITE(psikyo_vram_1_w) AM_SHARE("vram_1") // Layer 1
AM_RANGE(0x804000, 0x807fff) AM_RAM AM_SHARE("vregs") // RAM + Vregs
@@ -1051,7 +1051,8 @@ static MACHINE_CONFIG_START( sngkace, psikyo_state )
MCFG_SCREEN_VBLANK_DRIVER(psikyo_state, screen_eof_psikyo)
MCFG_GFXDECODE_ADD("gfxdecode", psikyo)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(psikyo_state,sngkace)
@@ -1095,7 +1096,8 @@ static MACHINE_CONFIG_START( gunbird, psikyo_state )
MCFG_SCREEN_VBLANK_DRIVER(psikyo_state, screen_eof_psikyo)
MCFG_GFXDECODE_ADD("gfxdecode", psikyo)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(psikyo_state,psikyo)
@@ -1128,7 +1130,8 @@ static MACHINE_CONFIG_START( s1945bl, psikyo_state ) /* Bootleg hardware based o
MCFG_SCREEN_VBLANK_DRIVER(psikyo_state, screen_eof_psikyo)
MCFG_GFXDECODE_ADD("gfxdecode", psikyo)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(psikyo_state,psikyo)
@@ -1176,7 +1179,8 @@ static MACHINE_CONFIG_START( s1945, psikyo_state )
MCFG_SCREEN_VBLANK_DRIVER(psikyo_state, screen_eof_psikyo)
MCFG_GFXDECODE_ADD("gfxdecode", psikyo)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(psikyo_state,psikyo)
diff --git a/src/mame/drivers/psikyo4.c b/src/mame/drivers/psikyo4.c
index 47d74bb18d1..9c65d148383 100644
--- a/src/mame/drivers/psikyo4.c
+++ b/src/mame/drivers/psikyo4.c
@@ -209,8 +209,8 @@ WRITE32_MEMBER(psikyo4_state::ps4_paletteram32_RRRRRRRRGGGGGGGGBBBBBBBBxxxxxxxx_
g = ((m_paletteram[offset] & 0x00ff0000) >> 16);
r = ((m_paletteram[offset] & 0xff000000) >> 24);
- palette_set_color(machine(), offset, rgb_t(r, g, b));
- palette_set_color(machine(), offset + 0x800, rgb_t(r, g, b)); // For screen 2
+ m_palette->set_pen_color(offset, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset + 0x800, rgb_t(r, g, b)); // For screen 2
}
WRITE32_MEMBER(psikyo4_state::ps4_bgpen_1_dword_w)
@@ -222,7 +222,7 @@ WRITE32_MEMBER(psikyo4_state::ps4_bgpen_1_dword_w)
g = ((m_bgpen_1[0] & 0x00ff0000) >>16);
r = ((m_bgpen_1[0] & 0xff000000) >>24);
- palette_set_color(machine(), 0x1000, rgb_t(r, g, b)); // Clear colour for screen 1
+ m_palette->set_pen_color(0x1000, rgb_t(r, g, b)); // Clear colour for screen 1
}
WRITE32_MEMBER(psikyo4_state::ps4_bgpen_2_dword_w)
@@ -234,7 +234,7 @@ WRITE32_MEMBER(psikyo4_state::ps4_bgpen_2_dword_w)
g = ((m_bgpen_2[0] & 0x00ff0000) >>16);
r = ((m_bgpen_2[0] & 0xff000000) >>24);
- palette_set_color(machine(), 0x1001, rgb_t(r, g, b)); // Clear colour for screen 2
+ m_palette->set_pen_color(0x1001, rgb_t(r, g, b)); // Clear colour for screen 2
}
WRITE32_MEMBER(psikyo4_state::ps4_screen1_brt_w)
@@ -253,7 +253,7 @@ WRITE32_MEMBER(psikyo4_state::ps4_screen1_brt_w)
int i;
for (i = 0; i < 0x800; i++)
- palette_set_pen_contrast(machine(), i, brt1);
+ m_palette->set_pen_contrast(i, brt1);
m_oldbrt1 = brt1;
}
@@ -283,7 +283,7 @@ WRITE32_MEMBER(psikyo4_state::ps4_screen2_brt_w)
int i;
for (i = 0x800; i < 0x1000; i++)
- palette_set_pen_contrast(machine(), i, brt2);
+ m_palette->set_pen_contrast(i, brt2);
m_oldbrt2 = brt2;
}
@@ -661,7 +661,7 @@ static MACHINE_CONFIG_START( ps4big, psikyo4_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", ps4)
- MCFG_PALETTE_LENGTH((0x2000/4)*2 + 2) /* 0x2000/4 for each screen. 1 for each screen clear colour */
+ MCFG_PALETTE_ADD("palette", (0x2000/4)*2 + 2) /* 0x2000/4 for each screen. 1 for each screen clear colour */
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
diff --git a/src/mame/drivers/psikyosh.c b/src/mame/drivers/psikyosh.c
index 4dd47e5a97d..c37af22f690 100644
--- a/src/mame/drivers/psikyosh.c
+++ b/src/mame/drivers/psikyosh.c
@@ -356,7 +356,7 @@ WRITE32_MEMBER(psikyosh_state::paletteram32_RRRRRRRRGGGGGGGGBBBBBBBBxxxxxxxx_dwo
g = ((m_paletteram[offset] & 0x00ff0000) >>16);
r = ((m_paletteram[offset] & 0xff000000) >>24);
- palette_set_color(machine(), offset, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset, rgb_t(r, g, b));
}
WRITE32_MEMBER(psikyosh_state::psikyosh_vidregs_w)
@@ -802,7 +802,7 @@ static MACHINE_CONFIG_START( psikyo3v1, psikyosh_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram32_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", psikyosh)
- MCFG_PALETTE_LENGTH(0x5000/4)
+ MCFG_PALETTE_ADD("palette", 0x5000/4)
/* sound hardware */
diff --git a/src/mame/drivers/psychic5.c b/src/mame/drivers/psychic5.c
index b8fad19930b..aa57764e27b 100644
--- a/src/mame/drivers/psychic5.c
+++ b/src/mame/drivers/psychic5.c
@@ -678,7 +678,7 @@ static MACHINE_CONFIG_START( psychic5, psychic5_state )
MCFG_SCREEN_UPDATE_DRIVER(psychic5_state, screen_update_psychic5)
MCFG_GFXDECODE_ADD("gfxdecode", psychic5)
- MCFG_PALETTE_LENGTH(768)
+ MCFG_PALETTE_ADD("palette", 768)
MCFG_VIDEO_START_OVERRIDE(psychic5_state,psychic5)
MCFG_VIDEO_RESET_OVERRIDE(psychic5_state,psychic5)
@@ -723,7 +723,7 @@ static MACHINE_CONFIG_START( bombsa, psychic5_state )
MCFG_SCREEN_UPDATE_DRIVER(psychic5_state, screen_update_bombsa)
MCFG_GFXDECODE_ADD("gfxdecode", bombsa)
- MCFG_PALETTE_LENGTH(768)
+ MCFG_PALETTE_ADD("palette", 768)
MCFG_VIDEO_START_OVERRIDE(psychic5_state,bombsa)
MCFG_VIDEO_RESET_OVERRIDE(psychic5_state,bombsa)
diff --git a/src/mame/drivers/pturn.c b/src/mame/drivers/pturn.c
index b7d5f8a479c..ea1be3e9634 100644
--- a/src/mame/drivers/pturn.c
+++ b/src/mame/drivers/pturn.c
@@ -202,7 +202,7 @@ UINT32 pturn_state::screen_update_pturn(screen_device &screen, bitmap_ind16 &bit
if(sx|sy)
{
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
spriteram[offs+1] & 0x3f ,
(spriteram[offs+2] & 0x1f),
flipx, flipy,
@@ -504,8 +504,7 @@ static MACHINE_CONFIG_START( pturn, pturn_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(pturn_state, screen_update_pturn)
- MCFG_PALETTE_LENGTH(0x100)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 0x100)
MCFG_GFXDECODE_ADD("gfxdecode", pturn)
diff --git a/src/mame/drivers/punchout.c b/src/mame/drivers/punchout.c
index bc4d4a64256..93939bd7252 100644
--- a/src/mame/drivers/punchout.c
+++ b/src/mame/drivers/punchout.c
@@ -947,7 +947,7 @@ static MACHINE_CONFIG_START( punchout, punchout_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", punchout)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
MCFG_DEFAULT_LAYOUT(layout_dualhovu)
MCFG_SCREEN_ADD("top", RASTER)
diff --git a/src/mame/drivers/pushman.c b/src/mame/drivers/pushman.c
index 0f1721b428e..e9ee88c6ff9 100644
--- a/src/mame/drivers/pushman.c
+++ b/src/mame/drivers/pushman.c
@@ -148,7 +148,7 @@ static ADDRESS_MAP_START( pushman_map, AS_PROGRAM, 16, pushman_state )
AM_RANGE(0xfe8000, 0xfe8003) AM_WRITE(pushman_scroll_w)
AM_RANGE(0xfe800e, 0xfe800f) AM_WRITENOP /* ? */
AM_RANGE(0xfec000, 0xfec7ff) AM_RAM_WRITE(pushman_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xff8000, 0xff87ff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xff8000, 0xff87ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xffc000, 0xffffff) AM_RAM
ADDRESS_MAP_END
@@ -181,7 +181,7 @@ static ADDRESS_MAP_START( bballs_map, AS_PROGRAM, 16, pushman_state )
AM_RANGE(0xe8000, 0xe8003) AM_WRITE(pushman_scroll_w)
AM_RANGE(0xe800e, 0xe800f) AM_WRITENOP /* ? */
AM_RANGE(0xec000, 0xec7ff) AM_RAM_WRITE(pushman_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xf8000, 0xf87ff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xf8000, 0xf87ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xfc000, 0xfffff) AM_RAM
ADDRESS_MAP_END
@@ -437,8 +437,9 @@ static MACHINE_CONFIG_START( pushman, pushman_state )
MCFG_SCREEN_UPDATE_DRIVER(pushman_state, screen_update_pushman)
MCFG_GFXDECODE_ADD("gfxdecode", pushman)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -483,8 +484,9 @@ static MACHINE_CONFIG_START( bballs, pushman_state )
MCFG_SCREEN_UPDATE_DRIVER(pushman_state, screen_update_pushman)
MCFG_GFXDECODE_ADD("gfxdecode", pushman)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/pyson.c b/src/mame/drivers/pyson.c
index d9c8bc6bcd9..f43c78b0408 100644
--- a/src/mame/drivers/pyson.c
+++ b/src/mame/drivers/pyson.c
@@ -208,7 +208,7 @@ static MACHINE_CONFIG_START( pyson, pyson_state )
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
- MCFG_PALETTE_LENGTH(65536)
+ MCFG_PALETTE_ADD("palette", 65536)
MACHINE_CONFIG_END
#define PYSON_BIOS \
diff --git a/src/mame/drivers/pzletime.c b/src/mame/drivers/pzletime.c
index f7abf79717d..81f61736e22 100644
--- a/src/mame/drivers/pzletime.c
+++ b/src/mame/drivers/pzletime.c
@@ -64,7 +64,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(pzletime);
UINT32 screen_update_pzletime(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<okim6295_device> m_oki;
@@ -106,7 +106,7 @@ UINT32 pzletime_state::screen_update_pzletime(screen_device &screen, bitmap_ind1
int count;
int y, x;
- bitmap.fill(machine().pens[0], cliprect); //bg pen
+ bitmap.fill(m_palette->pen(0), cliprect); //bg pen
m_txt_tilemap->set_scrolly(0, m_tilemap_regs[0] - 3);
m_txt_tilemap->set_scrollx(0, m_tilemap_regs[1]);
@@ -148,7 +148,7 @@ UINT32 pzletime_state::screen_update_pzletime(screen_device &screen, bitmap_ind1
// is spriteram[offs + 0] & 0x200 flipy? it's always set
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, spr_offs, colour, 0, 1, sx, sy, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, spr_offs, colour, 0, 1, sx, sy, 0);
}
}
@@ -199,7 +199,7 @@ WRITE16_MEMBER(pzletime_state::video_regs_w)
{
for (i = 0; i < 0x300; i++)
{
- palette_set_pen_contrast(machine(), i, (double)0x8000/(double)m_video_regs[0]);
+ m_palette->set_pen_contrast(i, (double)0x8000/(double)m_video_regs[0]);
}
}
}
@@ -209,7 +209,7 @@ WRITE16_MEMBER(pzletime_state::video_regs_w)
{
for (i = 0x300; i < 32768 + 0x300; i++)
{
- palette_set_pen_contrast(machine(), i, (double)0x8000/(double)m_video_regs[1]);
+ m_palette->set_pen_contrast(i, (double)0x8000/(double)m_video_regs[1]);
}
}
}
@@ -229,7 +229,7 @@ static ADDRESS_MAP_START( pzletime_map, AS_PROGRAM, 16, pzletime_state )
AM_RANGE(0x000000, 0x3fffff) AM_ROM
AM_RANGE(0x700000, 0x700005) AM_RAM_WRITE(video_regs_w) AM_SHARE("video_regs")
AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x900000, 0x9005ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x900000, 0x9005ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xa00000, 0xa00007) AM_RAM AM_SHARE("tilemap_regs")
AM_RANGE(0xb00000, 0xb3ffff) AM_RAM AM_SHARE("bg_videoram")
AM_RANGE(0xc00000, 0xc00fff) AM_RAM_WRITE(mid_videoram_w) AM_SHARE("mid_videoram")
@@ -301,7 +301,7 @@ static GFXDECODE_START( pzletime )
GFXDECODE_ENTRY( "gfx3", 0, layout16x16, 0x000, 0x10 )
GFXDECODE_END
-void pzletime_state::palette_init()
+PALETTE_INIT_MEMBER(pzletime_state, pzletime)
{
int i;
@@ -309,7 +309,7 @@ void pzletime_state::palette_init()
/* initialize 555 RGB lookup */
for (i = 0; i < 32768; i++)
- palette_set_color_rgb(machine(), i + 0x300, pal5bit(i >> 10), pal5bit(i >> 5), pal5bit(i >> 0));
+ palette.set_pen_color(i + 0x300, pal5bit(i >> 10), pal5bit(i >> 5), pal5bit(i >> 0));
}
void pzletime_state::machine_start()
@@ -338,7 +338,10 @@ static MACHINE_CONFIG_START( pzletime, pzletime_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 28*8-1)
MCFG_SCREEN_UPDATE_DRIVER(pzletime_state, screen_update_pzletime)
MCFG_GFXDECODE_ADD("gfxdecode", pzletime)
- MCFG_PALETTE_LENGTH(0x300 + 32768)
+ MCFG_PALETTE_ADD("palette", 0x300 + 32768)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
+ MCFG_PALETTE_INIT_OWNER(pzletime_state, pzletime)
+
MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
diff --git a/src/mame/drivers/qdrmfgp.c b/src/mame/drivers/qdrmfgp.c
index 520da90653a..06bb8cbe39d 100644
--- a/src/mame/drivers/qdrmfgp.c
+++ b/src/mame/drivers/qdrmfgp.c
@@ -301,7 +301,7 @@ static ADDRESS_MAP_START( qdrmfgp_map, AS_PROGRAM, 16, qdrmfgp_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("workram") /* work ram */
AM_RANGE(0x180000, 0x183fff) AM_RAM AM_SHARE("nvram") /* backup ram */
- AM_RANGE(0x280000, 0x280fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x280000, 0x280fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x300000, 0x30003f) AM_DEVWRITE("k056832", k056832_device, word_w) /* video reg */
AM_RANGE(0x320000, 0x32001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) /* ccu */
AM_RANGE(0x330000, 0x330001) AM_READ_PORT("SENSOR") /* battery power & service sw */
@@ -324,7 +324,7 @@ static ADDRESS_MAP_START( qdrmfgp2_map, AS_PROGRAM, 16, qdrmfgp_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x100000, 0x110fff) AM_RAM AM_SHARE("workram") /* work ram */
AM_RANGE(0x180000, 0x183fff) AM_RAM AM_SHARE("nvram") /* backup ram */
- AM_RANGE(0x280000, 0x280fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x280000, 0x280fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x300000, 0x30003f) AM_DEVWRITE("k056832", k056832_device, word_w) /* video reg */
AM_RANGE(0x320000, 0x32001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0xff00) /* ccu */
AM_RANGE(0x330000, 0x330001) AM_READ_PORT("SENSOR") /* battery power & service */
@@ -633,13 +633,15 @@ static MACHINE_CONFIG_START( qdrmfgp, qdrmfgp_state )
MCFG_SCREEN_VISIBLE_AREA(40, 40+384-1, 16, 16+224-1)
MCFG_SCREEN_UPDATE_DRIVER(qdrmfgp_state, screen_update_qdrmfgp)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(qdrmfgp_state,qdrmfgp)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K056832_ADD("k056832", qdrmfgp_k056832_intf)
MCFG_K056832_GFXDECODE("gfxdecode")
+ MCFG_K056832_PALETTE("palette")
MCFG_K053252_ADD("k053252", XTAL_32MHz/4, qdrmfgp_k053252_intf)
/* sound hardware */
@@ -672,13 +674,15 @@ static MACHINE_CONFIG_START( qdrmfgp2, qdrmfgp_state )
MCFG_SCREEN_VISIBLE_AREA(40, 40+384-1, 16, 16+224-1)
MCFG_SCREEN_UPDATE_DRIVER(qdrmfgp_state, screen_update_qdrmfgp)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(qdrmfgp_state,qdrmfgp2)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K056832_ADD("k056832", qdrmfgp2_k056832_intf)
MCFG_K056832_GFXDECODE("gfxdecode")
+ MCFG_K056832_PALETTE("palette")
MCFG_K053252_ADD("k053252", XTAL_32MHz/4, qdrmfgp2_k053252_intf)
/* sound hardware */
diff --git a/src/mame/drivers/quakeat.c b/src/mame/drivers/quakeat.c
index 9eae04d0d60..8091b0ca110 100644
--- a/src/mame/drivers/quakeat.c
+++ b/src/mame/drivers/quakeat.c
@@ -131,7 +131,7 @@ static MACHINE_CONFIG_START( quake, quakeat_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(quakeat_state, screen_update_quake)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/quasar.c b/src/mame/drivers/quasar.c
index f4ce158998b..c722372e000 100644
--- a/src/mame/drivers/quasar.c
+++ b/src/mame/drivers/quasar.c
@@ -337,13 +337,13 @@ static MACHINE_CONFIG_START( quasar, quasar_state )
MCFG_SCREEN_UPDATE_DRIVER(quasar_state, screen_update_quasar)
MCFG_GFXDECODE_ADD("gfxdecode", quasar)
- MCFG_PALETTE_LENGTH((64+1)*8+(4*256))
+ MCFG_PALETTE_ADD("palette", (64+1)*8+(4*256))
+ MCFG_PALETTE_INIT_OWNER(quasar_state,quasar)
MCFG_S2636_ADD("s2636_0", s2636_0_config)
MCFG_S2636_ADD("s2636_1", s2636_1_config)
MCFG_S2636_ADD("s2636_2", s2636_2_config)
- MCFG_PALETTE_INIT_OVERRIDE(quasar_state,quasar)
MCFG_VIDEO_START_OVERRIDE(quasar_state,quasar)
/* sound hardware */
diff --git a/src/mame/drivers/quizdna.c b/src/mame/drivers/quizdna.c
index 0c4c596f935..37df47f0193 100644
--- a/src/mame/drivers/quizdna.c
+++ b/src/mame/drivers/quizdna.c
@@ -455,7 +455,7 @@ static MACHINE_CONFIG_START( quizdna, quizdna_state )
MCFG_SCREEN_UPDATE_DRIVER(quizdna_state, screen_update_quizdna)
MCFG_GFXDECODE_ADD("gfxdecode", quizdna)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
/* sound hardware */
diff --git a/src/mame/drivers/quizo.c b/src/mame/drivers/quizo.c
index ea992f36994..5ae2a186e3d 100644
--- a/src/mame/drivers/quizo.c
+++ b/src/mame/drivers/quizo.c
@@ -42,7 +42,7 @@ public:
DECLARE_WRITE8_MEMBER(port70_w);
DECLARE_WRITE8_MEMBER(port60_w);
DECLARE_DRIVER_INIT(quizo);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(quizo);
UINT32 screen_update_quizo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
};
@@ -54,7 +54,7 @@ public:
static const UINT8 rombankLookup[]={ 2, 3, 4, 4, 4, 4, 4, 5, 0, 1};
-void quizo_state::palette_init()
+PALETTE_INIT_MEMBER(quizo_state, quizo)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -77,7 +77,7 @@ void quizo_state::palette_init()
bit2 = (*color_prom >> 7) & 0x01;
r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
color_prom++;
}
}
@@ -220,7 +220,8 @@ static MACHINE_CONFIG_START( quizo, quizo_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 320-1, 0*8, 200-1)
MCFG_SCREEN_UPDATE_DRIVER(quizo_state, screen_update_quizo)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(quizo_state, quizo)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/quizpani.c b/src/mame/drivers/quizpani.c
index 8c66000589a..55d20f2bfe7 100644
--- a/src/mame/drivers/quizpani.c
+++ b/src/mame/drivers/quizpani.c
@@ -61,7 +61,7 @@ static ADDRESS_MAP_START( quizpani_map, AS_PROGRAM, 16, quizpani_state )
AM_RANGE(0x100018, 0x100019) AM_WRITE(quizpani_tilesbank_w)
AM_RANGE(0x104000, 0x104001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
AM_RANGE(0x104020, 0x104027) AM_DEVWRITE("nmk112", nmk112_device, okibank_lsb_w)
- AM_RANGE(0x108000, 0x1083ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x108000, 0x1083ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x108400, 0x1085ff) AM_WRITENOP
AM_RANGE(0x10c000, 0x10c007) AM_RAM AM_SHARE("scrollreg")
AM_RANGE(0x10c008, 0x10c403) AM_WRITENOP
@@ -200,7 +200,8 @@ static MACHINE_CONFIG_START( quizpani, quizpani_state )
MCFG_CPU_PERIODIC_INT_DRIVER(quizpani_state, irq1_line_hold, 164) // music tempo
MCFG_GFXDECODE_ADD("gfxdecode", quizpani)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
diff --git a/src/mame/drivers/quizpun2.c b/src/mame/drivers/quizpun2.c
index 1d2d6232999..ea2330435f1 100644
--- a/src/mame/drivers/quizpun2.c
+++ b/src/mame/drivers/quizpun2.c
@@ -177,9 +177,9 @@ UINT32 quizpun2_state::screen_update_quizpun2(screen_device &screen, bitmap_ind1
#endif
if (layers_ctrl & 1) m_bg_tmap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
- else bitmap.fill(get_black_pen(machine()), cliprect);
+ else bitmap.fill(m_palette->black_pen(), cliprect);
-bitmap.fill(get_black_pen(machine()), cliprect);
+bitmap.fill(m_palette->black_pen(), cliprect);
if (layers_ctrl & 2) m_fg_tmap->draw(screen, bitmap, cliprect, 0, 0);
return 0;
@@ -372,7 +372,7 @@ static ADDRESS_MAP_START( quizpun2_map, AS_PROGRAM, 8, quizpun2_state )
AM_RANGE( 0xc000, 0xc7ff ) AM_RAM_WRITE(bg_ram_w ) AM_SHARE("bg_ram") // 4 * 400
AM_RANGE( 0xc800, 0xcfff ) AM_RAM //
- AM_RANGE( 0xd000, 0xd3ff ) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_byte_le_w ) AM_SHARE("paletteram")
+ AM_RANGE( 0xd000, 0xd3ff ) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE( 0xe000, 0xffff ) AM_RAM
ADDRESS_MAP_END
@@ -512,7 +512,8 @@ static MACHINE_CONFIG_START( quizpun2, quizpun2_state )
MCFG_SCREEN_UPDATE_DRIVER(quizpun2_state, screen_update_quizpun2)
MCFG_GFXDECODE_ADD("gfxdecode", quizpun2)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
diff --git a/src/mame/drivers/quizshow.c b/src/mame/drivers/quizshow.c
index 6bb1bc70602..73b014b575b 100644
--- a/src/mame/drivers/quizshow.c
+++ b/src/mame/drivers/quizshow.c
@@ -71,7 +71,7 @@ public:
TILE_GET_INFO_MEMBER(get_tile_info);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(quizshow);
UINT32 screen_update_quizshow(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(quizshow_clock_timer_cb);
};
@@ -83,12 +83,10 @@ public:
***************************************************************************/
-void quizshow_state::palette_init()
+PALETTE_INIT_MEMBER(quizshow_state, quizshow)
{
- machine().colortable = colortable_alloc(machine(), 2);
-
- colortable_palette_set_color(machine().colortable, 0, rgb_t::black);
- colortable_palette_set_color(machine().colortable, 1, rgb_t::white);
+ palette.set_indirect_color(0, rgb_t::black);
+ palette.set_indirect_color(1, rgb_t::white);
// normal, blink/off, invert, blink+invert
const int lut_pal[16] = {
@@ -99,7 +97,7 @@ void quizshow_state::palette_init()
};
for (int i = 0; i < 16 ; i++)
- colortable_entry_set_value(machine().colortable, i, lut_pal[i]);
+ palette.set_pen_indirect(i, lut_pal[i]);
}
TILE_GET_INFO_MEMBER(quizshow_state::get_tile_info)
@@ -392,7 +390,8 @@ static MACHINE_CONFIG_START( quizshow, quizshow_state )
MCFG_SCREEN_UPDATE_DRIVER(quizshow_state, screen_update_quizshow)
MCFG_GFXDECODE_ADD("gfxdecode", quizshow)
- MCFG_PALETTE_LENGTH(8*2)
+ MCFG_PALETTE_ADD("palette", 8*2)
+ MCFG_PALETTE_INIT_OWNER(quizshow_state, quizshow)
/* sound hardware (discrete) */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/r2dx_v33.c b/src/mame/drivers/r2dx_v33.c
index 7be751b2747..20f2b5c33d1 100644
--- a/src/mame/drivers/r2dx_v33.c
+++ b/src/mame/drivers/r2dx_v33.c
@@ -165,7 +165,7 @@ void r2dx_v33_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect
for (ax=0; ax<dx; ax++)
for (ay=0; ay<dy; ay++)
{
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
sprite++,
color,fx,fy,x+ax*16,y+ay*16,15);
}
@@ -175,7 +175,7 @@ void r2dx_v33_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect
for (ax=0; ax<dx; ax++)
for (ay=0; ay<dy; ay++)
{
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
sprite++,
color,fx,fy,x+ax*16,y+(dy-ay-1)*16,15);
}
@@ -188,7 +188,7 @@ void r2dx_v33_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect
for (ax=0; ax<dx; ax++)
for (ay=0; ay<dy; ay++)
{
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
sprite++,
color,fx,fy,x+(dx-ax-1)*16,y+ay*16,15);
}
@@ -198,7 +198,7 @@ void r2dx_v33_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect
for (ax=0; ax<dx; ax++)
for (ay=0; ay<dy; ay++)
{
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
sprite++,
color,fx,fy,x+(dx-ax-1)*16,y+(dy-ay-1)*16,15);
}
@@ -222,7 +222,7 @@ void r2dx_v33_state::video_start()
UINT32 r2dx_v33_state::screen_update_rdx_v33(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
m_md_tilemap->draw(screen, bitmap, cliprect, 0, 0);
@@ -434,7 +434,7 @@ static ADDRESS_MAP_START( rdx_v33_map, AS_PROGRAM, 16, r2dx_v33_state )
AM_RANGE(0x0e800, 0x0f7ff) AM_RAM_WRITE(rdx_tx_vram_w) AM_SHARE("tx_vram")
AM_RANGE(0x0f800, 0x0ffff) AM_RAM /* Stack area */
AM_RANGE(0x10000, 0x1efff) AM_RAM
- AM_RANGE(0x1f000, 0x1ffff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x1f000, 0x1ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("bank1")
AM_RANGE(0x40000, 0xfffff) AM_ROM AM_REGION("mainprg", 0x40000 )
@@ -507,7 +507,7 @@ static ADDRESS_MAP_START( nzerotea_map, AS_PROGRAM, 16, r2dx_v33_state )
AM_RANGE(0x0e800, 0x0f7ff) AM_RAM_WRITE(rdx_tx_vram_w) AM_SHARE("tx_vram")
AM_RANGE(0x0f800, 0x0ffff) AM_RAM /* Stack area */
AM_RANGE(0x10000, 0x1efff) AM_RAM
- AM_RANGE(0x1f000, 0x1ffff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x1f000, 0x1ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("bank1")
AM_RANGE(0x40000, 0xfffff) AM_ROM AM_REGION("mainprg", 0x40000 )
@@ -711,8 +711,8 @@ static MACHINE_CONFIG_START( rdx_v33, r2dx_v33_state )
MCFG_SCREEN_UPDATE_DRIVER(r2dx_v33_state, screen_update_rdx_v33)
MCFG_GFXDECODE_ADD("gfxdecode", rdx_v33)
- MCFG_PALETTE_LENGTH(2048)
-
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -741,8 +741,8 @@ static MACHINE_CONFIG_START( nzerotea, r2dx_v33_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(r2dx_v33_state, screen_update_rdx_v33)
MCFG_GFXDECODE_ADD("gfxdecode", rdx_v33)
- MCFG_PALETTE_LENGTH(2048)
-
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
// SEIBU_SOUND_SYSTEM_YM2151_RAIDEN2_INTERFACE(28636360/8,28636360/28,1,2)
diff --git a/src/mame/drivers/rabbit.c b/src/mame/drivers/rabbit.c
index 3beb483f50b..6acf0b15a57 100644
--- a/src/mame/drivers/rabbit.c
+++ b/src/mame/drivers/rabbit.c
@@ -312,8 +312,8 @@ void rabbit_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
if(xpos&0x800)xpos-=0x1000;
- gfx->transpen(*m_sprite_bitmap,m_sprite_clip,tileno,colr,!xflip/*wrongdecode?*/,yflip,xpos+0x20-8/*-(m_spriteregs[0]&0x00000fff)*/,ypos-24/*-((m_spriteregs[1]&0x0fff0000)>>16)*/,15);
-// gfx->transpen(bitmap,cliprect,tileno,colr,!xflip/*wrongdecode?*/,yflip,xpos+0xa0-8/*-(m_spriteregs[0]&0x00000fff)*/,ypos-24+0x80/*-((m_spriteregs[1]&0x0fff0000)>>16)*/,0);
+ gfx->transpen(m_palette,*m_sprite_bitmap,m_sprite_clip,tileno,colr,!xflip/*wrongdecode?*/,yflip,xpos+0x20-8/*-(m_spriteregs[0]&0x00000fff)*/,ypos-24/*-((m_spriteregs[1]&0x0fff0000)>>16)*/,15);
+// gfx->transpen(m_palette,bitmap,cliprect,tileno,colr,!xflip/*wrongdecode?*/,yflip,xpos+0xa0-8/*-(m_spriteregs[0]&0x00000fff)*/,ypos-24+0x80/*-((m_spriteregs[1]&0x0fff0000)>>16)*/,0);
source-=2;
@@ -479,7 +479,7 @@ UINT32 rabbit_state::screen_update_rabbit(screen_device &screen, bitmap_ind16 &b
{
int prilevel;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
// popmessage("%08x %08x", m_viewregs0[0], m_viewregs0[1]);
// popmessage("%08x %08x %08x %08x %08x %08x", m_tilemap_regs[0][0],m_tilemap_regs[0][1],m_tilemap_regs[0][2],m_tilemap_regs[0][3],m_tilemap_regs[0][4],m_tilemap_regs[0][5]);
@@ -522,7 +522,7 @@ WRITE32_MEMBER(rabbit_state::rabbit_paletteram_dword_w)
r = ((m_generic_paletteram_32[offset] & 0x0000ff00) >>8);
g = ((m_generic_paletteram_32[offset] & 0x00ff0000) >>16);
- palette_set_color(machine(),offset,rgb_t(r,g,b));
+ m_palette->set_pen_color(offset,rgb_t(r,g,b));
}
READ32_MEMBER(rabbit_state::rabbit_tilemap0_r)
@@ -908,9 +908,7 @@ static MACHINE_CONFIG_START( rabbit, rabbit_state )
// MCFG_SCREEN_VISIBLE_AREA(0*8, 20*16-1, 32*16, 48*16-1)
MCFG_SCREEN_UPDATE_DRIVER(rabbit_state, screen_update_rabbit)
- MCFG_PALETTE_LENGTH(0x4000)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, all_black)
-
+ MCFG_PALETTE_ADD_INIT_BLACK("palette", 0x4000)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/raiden.c b/src/mame/drivers/raiden.c
index f8b281e6b3d..73ccf1b0555 100644
--- a/src/mame/drivers/raiden.c
+++ b/src/mame/drivers/raiden.c
@@ -76,7 +76,7 @@ static ADDRESS_MAP_START( sub_map, AS_PROGRAM, 16, raiden_state )
AM_RANGE(0x00000, 0x01fff) AM_RAM
AM_RANGE(0x02000, 0x027ff) AM_RAM_WRITE(raiden_background_w) AM_SHARE("back_data")
AM_RANGE(0x02800, 0x02fff) AM_RAM_WRITE(raiden_foreground_w) AM_SHARE("fore_data")
- AM_RANGE(0x03000, 0x03fff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x03000, 0x03fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x04000, 0x04fff) AM_RAM AM_SHARE("shared_ram")
AM_RANGE(0x07ffe, 0x07fff) AM_WRITENOP // ?
AM_RANGE(0x08000, 0x08001) AM_WRITENOP // watchdog?
@@ -105,7 +105,7 @@ static ADDRESS_MAP_START( raidenu_sub_map, AS_PROGRAM, 16, raiden_state )
AM_RANGE(0x00000, 0x05fff) AM_RAM
AM_RANGE(0x06000, 0x067ff) AM_RAM_WRITE(raiden_background_w) AM_SHARE("back_data")
AM_RANGE(0x06800, 0x06fff) AM_RAM_WRITE(raiden_foreground_w) AM_SHARE("fore_data")
- AM_RANGE(0x07000, 0x07fff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x07000, 0x07fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x08000, 0x08fff) AM_RAM AM_SHARE("shared_ram")
AM_RANGE(0x0a000, 0x0a001) AM_WRITENOP // ?
AM_RANGE(0x0c000, 0x0c001) AM_WRITENOP // watchdog?
@@ -291,7 +291,8 @@ static MACHINE_CONFIG_START( raiden, raiden_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", raiden)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
/* sound hardware */
SEIBU_SOUND_SYSTEM_YM3812_RAIDEN_INTERFACE(XTAL_14_31818MHz/4,XTAL_12MHz/12) // frequency and pin 7 verified (pin set in audio\seibu.h)
diff --git a/src/mame/drivers/raiden2.c b/src/mame/drivers/raiden2.c
index 3d0f3ba0791..8ff0c399d59 100644
--- a/src/mame/drivers/raiden2.c
+++ b/src/mame/drivers/raiden2.c
@@ -798,7 +798,7 @@ void raiden2_state::draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,
- gfx->transpen(
+ gfx->transpen(m_palette,
bitmap,
cliprect,
tile_number,
@@ -807,7 +807,7 @@ void raiden2_state::draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,
(sx+xstep*xtiles)&ZEROTEAM_MASK_X,(sy+ystep*ytiles)&ZEROTEAM_MASK_Y,15);
- gfx->transpen(
+ gfx->transpen(m_palette,
bitmap,
cliprect,
tile_number,
@@ -816,7 +816,7 @@ void raiden2_state::draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,
((sx+xstep*xtiles)&ZEROTEAM_MASK_X)-0x200,(sy+ystep*ytiles)&ZEROTEAM_MASK_Y,15);
- gfx->transpen(
+ gfx->transpen(m_palette,
bitmap,
cliprect,
tile_number,
@@ -825,7 +825,7 @@ void raiden2_state::draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,
(sx+xstep*xtiles)&ZEROTEAM_MASK_X,((sy+ystep*ytiles)&ZEROTEAM_MASK_Y)-0x200,15);
- gfx->transpen(
+ gfx->transpen(m_palette,
bitmap,
cliprect,
tile_number,
@@ -1007,7 +1007,7 @@ VIDEO_START_MEMBER(raiden2_state,raiden2)
UINT32 raiden2_state::screen_update_raiden2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
//if (!machine().input().code_pressed(KEYCODE_Q))
{
@@ -1482,7 +1482,7 @@ static ADDRESS_MAP_START( raiden2_mem, AS_PROGRAM, 16, raiden2_state )
AM_RANGE(0x0f800, 0x0ffff) AM_RAM /* Stack area */
AM_RANGE(0x10000, 0x1efff) AM_RAM
- AM_RANGE(0x1f000, 0x1ffff) AM_RAM AM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x1f000, 0x1ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("mainbank")
AM_RANGE(0x40000, 0xfffff) AM_ROM AM_REGION("mainprg", 0x40000)
@@ -1518,7 +1518,7 @@ static ADDRESS_MAP_START( zeroteam_mem, AS_PROGRAM, 16, raiden2_state )
AM_RANGE(0x0c000, 0x0c7ff) AM_RAM_WRITE(raiden2_foreground_w) AM_SHARE("fore_data")
AM_RANGE(0x0c800, 0x0cfff) AM_RAM_WRITE(raiden2_midground_w) AM_SHARE("mid_data")
AM_RANGE(0x0d000, 0x0dfff) AM_RAM_WRITE(raiden2_text_w) AM_SHARE("text_data")
- AM_RANGE(0x0e000, 0x0efff) AM_RAM AM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0e000, 0x0efff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0f000, 0x0ffff) AM_RAM AM_SHARE("sprites")
AM_RANGE(0x10000, 0x1ffff) AM_RAM
@@ -1548,7 +1548,7 @@ static ADDRESS_MAP_START( xsedae_mem, AS_PROGRAM, 16, raiden2_state )
AM_RANGE(0x0c000, 0x0c7ff) AM_RAM_WRITE(raiden2_foreground_w) AM_SHARE("fore_data")
AM_RANGE(0x0c800, 0x0cfff) AM_RAM_WRITE(raiden2_midground_w) AM_SHARE("mid_data")
AM_RANGE(0x0d000, 0x0dfff) AM_RAM_WRITE(raiden2_text_w) AM_SHARE("text_data")
- AM_RANGE(0x0e000, 0x0efff) AM_RAM AM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0e000, 0x0efff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0f000, 0x0ffff) AM_RAM AM_SHARE("sprites")
AM_RANGE(0x10000, 0x1ffff) AM_RAM
@@ -1888,7 +1888,8 @@ static MACHINE_CONFIG_START( raiden2, raiden2_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(raiden2_state, screen_update_raiden2)
MCFG_GFXDECODE_ADD("gfxdecode", raiden2)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_SEIBU_CRTC_ADD("crtc",crtc_intf,0)
@@ -1944,7 +1945,8 @@ static MACHINE_CONFIG_START( zeroteam, raiden2_state )
MCFG_SCREEN_RAW_PARAMS(XTAL_32MHz/4,546,0,40*8,264,0,32*8) /* hand-tuned to match ~55.47 */
MCFG_SCREEN_UPDATE_DRIVER(raiden2_state, screen_update_raiden2)
MCFG_GFXDECODE_ADD("gfxdecode", raiden2)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_SEIBU_CRTC_ADD("crtc",crtc_intf,0)
diff --git a/src/mame/drivers/rainbow.c b/src/mame/drivers/rainbow.c
index ee457232665..dabb8c780e7 100644
--- a/src/mame/drivers/rainbow.c
+++ b/src/mame/drivers/rainbow.c
@@ -345,7 +345,7 @@ WRITE16_MEMBER(rbisland_state::jumping_sound_w)
static ADDRESS_MAP_START( rbisland_map, AS_PROGRAM, 16, rbisland_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x10c000, 0x10ffff) AM_RAM /* main RAM */
- AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x201000, 0x203fff) AM_RAM /* r/w in initial checks */
AM_RANGE(0x390000, 0x390003) AM_READ_PORT("DSWA")
AM_RANGE(0x3a0000, 0x3a0001) AM_WRITE(rbisland_spritectrl_w)
@@ -366,7 +366,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( jumping_map, AS_PROGRAM, 16, rbisland_state )
AM_RANGE(0x000000, 0x09ffff) AM_ROM
AM_RANGE(0x10c000, 0x10ffff) AM_RAM /* main RAM */
- AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x201000, 0x203fff) AM_RAM /* r/w in initial checks */
AM_RANGE(0x400000, 0x400001) AM_READ_PORT("DSWA")
AM_RANGE(0x400002, 0x400003) AM_READ_PORT("DSWB")
@@ -667,12 +667,15 @@ static MACHINE_CONFIG_START( rbisland, rbisland_state )
MCFG_SCREEN_UPDATE_DRIVER(rbisland_state, screen_update_rainbow)
MCFG_GFXDECODE_ADD("gfxdecode", rbisland)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_PC080SN_ADD("pc080sn", rbisland_pc080sn_intf)
MCFG_PC080SN_GFXDECODE("gfxdecode")
+ MCFG_PC080SN_PALETTE("palette")
MCFG_PC090OJ_ADD("pc090oj", rbisland_pc090oj_intf)
MCFG_PC090OJ_GFXDECODE("gfxdecode")
+ MCFG_PC090OJ_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -710,12 +713,14 @@ static MACHINE_CONFIG_START( jumping, rbisland_state )
MCFG_SCREEN_UPDATE_DRIVER(rbisland_state, screen_update_jumping)
MCFG_GFXDECODE_ADD("gfxdecode", jumping)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_VIDEO_START_OVERRIDE(rbisland_state,jumping)
MCFG_PC080SN_ADD("pc080sn", jumping_pc080sn_intf)
MCFG_PC080SN_GFXDECODE("gfxdecode")
+ MCFG_PC080SN_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/rallyx.c b/src/mame/drivers/rallyx.c
index 407eb68a67d..a74e6f36eb6 100644
--- a/src/mame/drivers/rallyx.c
+++ b/src/mame/drivers/rallyx.c
@@ -860,8 +860,6 @@ static MACHINE_CONFIG_START( rallyx, rallyx_state )
MCFG_MACHINE_RESET_OVERRIDE(rallyx_state,rallyx)
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.606060)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
@@ -870,9 +868,11 @@ static MACHINE_CONFIG_START( rallyx, rallyx_state )
MCFG_SCREEN_UPDATE_DRIVER(rallyx_state, screen_update_rallyx)
MCFG_GFXDECODE_ADD("gfxdecode", rallyx)
- MCFG_PALETTE_LENGTH(64*4+4)
- MCFG_PALETTE_INIT_OVERRIDE(rallyx_state,rallyx)
+ MCFG_PALETTE_ADD("palette", 64*4+4)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+
+ MCFG_PALETTE_INIT_OWNER(rallyx_state,rallyx)
MCFG_VIDEO_START_OVERRIDE(rallyx_state,rallyx)
/* sound hardware */
@@ -898,8 +898,6 @@ static MACHINE_CONFIG_START( jungler, rallyx_state )
MCFG_MACHINE_RESET_OVERRIDE(rallyx_state,rallyx)
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */)
@@ -908,9 +906,11 @@ static MACHINE_CONFIG_START( jungler, rallyx_state )
MCFG_SCREEN_UPDATE_DRIVER(rallyx_state, screen_update_jungler)
MCFG_GFXDECODE_ADD("gfxdecode", jungler)
- MCFG_PALETTE_LENGTH(64*4+4+64)
- MCFG_PALETTE_INIT_OVERRIDE(rallyx_state,jungler)
+ MCFG_PALETTE_ADD("palette", 64*4+4+64)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+
+ MCFG_PALETTE_INIT_OWNER(rallyx_state,jungler)
MCFG_VIDEO_START_OVERRIDE(rallyx_state,jungler)
/* sound hardware */
diff --git a/src/mame/drivers/rampart.c b/src/mame/drivers/rampart.c
index 68b61c483b1..6fff1a51a5e 100644
--- a/src/mame/drivers/rampart.c
+++ b/src/mame/drivers/rampart.c
@@ -348,7 +348,7 @@ static MACHINE_CONFIG_START( rampart, rampart_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", rampart)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_ATARI_MOTION_OBJECTS_ADD("mob", "screen", rampart_state::s_mob_config)
MCFG_ATARI_MOTION_OBJECTS_GFXDECODE("gfxdecode")
diff --git a/src/mame/drivers/rastan.c b/src/mame/drivers/rastan.c
index 72d6f2b1dcf..f3a38a695a6 100644
--- a/src/mame/drivers/rastan.c
+++ b/src/mame/drivers/rastan.c
@@ -202,7 +202,7 @@ WRITE8_MEMBER(rastan_state::rastan_msm5205_stop_w)
static ADDRESS_MAP_START( rastan_map, AS_PROGRAM, 16, rastan_state )
AM_RANGE(0x000000, 0x05ffff) AM_ROM
AM_RANGE(0x10c000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x350008, 0x350009) AM_WRITENOP /* 0 only (often) ? */
AM_RANGE(0x380000, 0x380001) AM_WRITE(rastan_spritectrl_w) /* sprite palette bank, coin counters & lockout */
AM_RANGE(0x390000, 0x390001) AM_READ_PORT("P1")
@@ -401,12 +401,15 @@ static MACHINE_CONFIG_START( rastan, rastan_state )
MCFG_SCREEN_UPDATE_DRIVER(rastan_state, screen_update_rastan)
MCFG_GFXDECODE_ADD("gfxdecode", rastan)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_PC080SN_ADD("pc080sn", rastan_pc080sn_intf)
MCFG_PC080SN_GFXDECODE("gfxdecode")
+ MCFG_PC080SN_PALETTE("palette")
MCFG_PC090OJ_ADD("pc090oj", rastan_pc090oj_intf)
MCFG_PC090OJ_GFXDECODE("gfxdecode")
+ MCFG_PC090OJ_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/rastersp.c b/src/mame/drivers/rastersp.c
index 07cf737bf49..754f7f5c47f 100644
--- a/src/mame/drivers/rastersp.c
+++ b/src/mame/drivers/rastersp.c
@@ -126,7 +126,7 @@ public:
UINT8 m_io_reg;
UINT8 m_irq_status;
UINT32 m_dpyaddr;
- UINT16 *m_palette;
+ UINT16 *m_paletteram;
UINT32 m_speedup_count;
UINT32 m_tms_io_regs[0x80];
bitmap_ind16 m_update_bitmap;
@@ -156,7 +156,7 @@ void rastersp_state::machine_start()
m_nvram8 = auto_alloc_array(machine(), UINT8, NVRAM_SIZE);
- m_palette = auto_alloc_array(machine(), UINT16, 0x8000);
+ m_paletteram = auto_alloc_array(machine(), UINT16, 0x8000);
membank("bank1")->set_base(m_dram);
membank("bank2")->set_base(&m_dram[0x10000/4]);
@@ -207,7 +207,7 @@ WRITE32_MEMBER( rastersp_state::dpylist_w )
// TODO: This should probably be done in sync with the video scan
if (m_dpyaddr == 0)
{
- m_update_bitmap.fill(get_black_pen(machine()));
+ m_update_bitmap.fill(m_palette->black_pen());
return;
}
@@ -244,7 +244,7 @@ WRITE32_MEMBER( rastersp_state::dpylist_w )
UINT32 pixels = (word2 >> 16) & 0x1ff;
UINT32 palbase = (word2 >> 4) & 0xf00;
- UINT16* palptr = &m_palette[palbase];
+ UINT16* palptr = &m_paletteram[palbase];
UINT8* srcptr = reinterpret_cast<UINT8*>(&m_dram[0]);
UINT32 acc = srcaddr << 8;
@@ -300,7 +300,7 @@ void rastersp_state::upload_palette(UINT32 word1, UINT32 word2)
while (entries--)
{
UINT32 data = m_dram[addr / 4];
- m_palette[index++] = data & 0xffff;
+ m_paletteram[index++] = data & 0xffff;
addr += 4;
}
}
@@ -906,8 +906,7 @@ static MACHINE_CONFIG_START( rastersp, rastersp_state )
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRRR_GGGGGG_BBBBB)
- MCFG_PALETTE_LENGTH(65536)
+ MCFG_PALETTE_ADD_RRRRRGGGGGGBBBBB("palette")
/* Sound */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/rbmk.c b/src/mame/drivers/rbmk.c
index 3f551422f07..ed98ffdc38d 100644
--- a/src/mame/drivers/rbmk.c
+++ b/src/mame/drivers/rbmk.c
@@ -129,7 +129,7 @@ static ADDRESS_MAP_START( rbmk_mem, AS_PROGRAM, 16, rbmk_state )
AM_RANGE(0x500000, 0x50ffff) AM_RAM
AM_RANGE(0x940000, 0x940fff) AM_RAM AM_SHARE("gms_vidram2")
AM_RANGE(0x980300, 0x983fff) AM_RAM // 0x2048 words ???, byte access
- AM_RANGE(0x900000, 0x900fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x900000, 0x900fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x9c0000, 0x9c0fff) AM_RAM AM_SHARE("gms_vidram")
AM_RANGE(0xb00000, 0xb00001) AM_WRITE(eeprom_w)
AM_RANGE(0xC00000, 0xC00001) AM_READ_PORT("IN0") AM_WRITE(gms_write1)
@@ -515,7 +515,7 @@ UINT32 rbmk_state::screen_update_rbmk(screen_device &screen, bitmap_ind16 &bitma
for (x=0;x<64;x++)
{
int tile = m_gms_vidram2[count+0x600];
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect,(tile&0xfff)+((m_tilebank&0x10)>>4)*0x1000,tile>>12,0,0,x*8,y*32);
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect,(tile&0xfff)+((m_tilebank&0x10)>>4)*0x1000,tile>>12,0,0,x*8,y*32);
count++;
}
}
@@ -527,7 +527,7 @@ UINT32 rbmk_state::screen_update_rbmk(screen_device &screen, bitmap_ind16 &bitma
for (x=0;x<64;x++)
{
int tile = m_gms_vidram[count];
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,(tile&0xfff)+((m_tilebank>>1)&3)*0x1000,tile>>12,0,0,x*8,y*8,0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,(tile&0xfff)+((m_tilebank>>1)&3)*0x1000,tile>>12,0,0,x*8,y*8,0);
count++;
}
}
@@ -559,8 +559,8 @@ static MACHINE_CONFIG_START( rbmk, rbmk_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(rbmk_state, screen_update_rbmk)
- MCFG_PALETTE_LENGTH(0x800)
-
+ MCFG_PALETTE_ADD("palette", 0x800)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
diff --git a/src/mame/drivers/rcorsair.c b/src/mame/drivers/rcorsair.c
index 1318cd20aed..cee28384b20 100644
--- a/src/mame/drivers/rcorsair.c
+++ b/src/mame/drivers/rcorsair.c
@@ -144,7 +144,7 @@ static MACHINE_CONFIG_START( rcorsair, rcorsair_state )
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
MCFG_GFXDECODE_ADD("gfxdecode", rcorsair)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MACHINE_CONFIG_END
ROM_START( rcorsair )
diff --git a/src/mame/drivers/realbrk.c b/src/mame/drivers/realbrk.c
index df208f6bb9f..9685b18b0ea 100644
--- a/src/mame/drivers/realbrk.c
+++ b/src/mame/drivers/realbrk.c
@@ -154,7 +154,7 @@ WRITE16_MEMBER(realbrk_state::backup_ram_w)
static ADDRESS_MAP_START( base_mem, AS_PROGRAM, 16, realbrk_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram" ) // Palette
+ AM_RANGE(0x400000, 0x40ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(realbrk_vram_0_w) AM_SHARE("vram_0") // Background (0)
AM_RANGE(0x602000, 0x603fff) AM_RAM_WRITE(realbrk_vram_1_w) AM_SHARE("vram_1") // Background (1)
AM_RANGE(0x604000, 0x604fff) AM_RAM_WRITE(realbrk_vram_2_w) AM_SHARE("vram_2") // Text (2)
@@ -780,8 +780,8 @@ static MACHINE_CONFIG_START( realbrk, realbrk_state )
MCFG_SCREEN_UPDATE_DRIVER(realbrk_state, screen_update_realbrk)
MCFG_GFXDECODE_ADD("gfxdecode", realbrk)
- MCFG_PALETTE_LENGTH(0x8000)
-
+ MCFG_PALETTE_ADD("palette", 0x8000)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/redclash.c b/src/mame/drivers/redclash.c
index d171ee0ac49..51e16cd804e 100644
--- a/src/mame/drivers/redclash.c
+++ b/src/mame/drivers/redclash.c
@@ -364,9 +364,9 @@ static MACHINE_CONFIG_START( zerohour, ladybug_state )
MCFG_SCREEN_VBLANK_DRIVER(ladybug_state, screen_eof_redclash)
MCFG_GFXDECODE_ADD("gfxdecode", redclash)
- MCFG_PALETTE_LENGTH(4*8+4*16+32)
+ MCFG_PALETTE_ADD("palette", 4*8+4*16+32)
- MCFG_PALETTE_INIT_OVERRIDE(ladybug_state,redclash)
+ MCFG_PALETTE_INIT_OWNER(ladybug_state,redclash)
MCFG_VIDEO_START_OVERRIDE(ladybug_state,redclash)
/* sound hardware */
@@ -392,9 +392,9 @@ static MACHINE_CONFIG_START( redclash, ladybug_state )
MCFG_SCREEN_VBLANK_DRIVER(ladybug_state, screen_eof_redclash)
MCFG_GFXDECODE_ADD("gfxdecode", redclash)
- MCFG_PALETTE_LENGTH(4*8+4*16+32)
+ MCFG_PALETTE_ADD("palette", 4*8+4*16+32)
- MCFG_PALETTE_INIT_OVERRIDE(ladybug_state,redclash)
+ MCFG_PALETTE_INIT_OWNER(ladybug_state,redclash)
MCFG_VIDEO_START_OVERRIDE(ladybug_state,redclash)
/* sound hardware */
diff --git a/src/mame/drivers/relief.c b/src/mame/drivers/relief.c
index cdf7ef34fa2..b4f3af9d650 100644
--- a/src/mame/drivers/relief.c
+++ b/src/mame/drivers/relief.c
@@ -273,7 +273,7 @@ static MACHINE_CONFIG_START( relief, relief_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", relief)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_ATARI_VAD_ADD("vad", "screen", WRITELINE(atarigen_state, scanline_int_write_line))
MCFG_ATARI_VAD_PLAYFIELD(relief_state, get_playfield_tile_info)
diff --git a/src/mame/drivers/renegade.c b/src/mame/drivers/renegade.c
index 6d27db3387d..666f8c5abbc 100644
--- a/src/mame/drivers/renegade.c
+++ b/src/mame/drivers/renegade.c
@@ -635,8 +635,8 @@ static ADDRESS_MAP_START( renegade_map, AS_PROGRAM, 8, renegade_state )
AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(renegade_videoram2_w) AM_SHARE("videoram2")
AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(renegade_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x3000, 0x30ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_lo_w) AM_SHARE("paletteram")
- AM_RANGE(0x3100, 0x31ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_hi_w) AM_SHARE("paletteram2")
+ AM_RANGE(0x3000, 0x30ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0x3100, 0x31ff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0") AM_WRITE(renegade_scroll0_w) /* Player#1 controls, P1,P2 start */
AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN1") AM_WRITE(renegade_scroll1_w) /* Player#2 controls, coin triggers */
AM_RANGE(0x3802, 0x3802) AM_READ_PORT("DSW2") AM_WRITE(sound_w) /* DIP2 various IO ports */
@@ -894,8 +894,8 @@ static MACHINE_CONFIG_START( renegade, renegade_state )
MCFG_SCREEN_UPDATE_DRIVER(renegade_state, screen_update_renegade)
MCFG_GFXDECODE_ADD("gfxdecode", renegade)
- MCFG_PALETTE_LENGTH(256)
-
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/retofinv.c b/src/mame/drivers/retofinv.c
index cee79d41698..e1d9e0b422c 100644
--- a/src/mame/drivers/retofinv.c
+++ b/src/mame/drivers/retofinv.c
@@ -370,8 +370,8 @@ static MACHINE_CONFIG_START( retofinv, retofinv_state )
MCFG_SCREEN_UPDATE_DRIVER(retofinv_state, screen_update_retofinv)
MCFG_GFXDECODE_ADD("gfxdecode", retofinv)
- MCFG_PALETTE_LENGTH(256*2+64*16+64*16)
-
+ MCFG_PALETTE_ADD("palette", 256*2+64*16+64*16)
+ MCFG_PALETTE_INIT_OWNER(retofinv_state, retofinv)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/rgum.c b/src/mame/drivers/rgum.c
index 9e0928b44a6..7348ba47d05 100644
--- a/src/mame/drivers/rgum.c
+++ b/src/mame/drivers/rgum.c
@@ -57,7 +57,7 @@ UINT32 rgum_state::screen_update_royalgum(screen_device &screen, bitmap_ind16 &b
{
int tile = m_vram[count] | ((m_cram[count] & 0xf) <<8);
- gfx->opaque(bitmap,cliprect,tile,0,0,0,x*8,y*8);
+ gfx->opaque(m_palette,bitmap,cliprect,tile,0,0,0,x*8,y*8);
count++;
}
@@ -287,7 +287,7 @@ static MACHINE_CONFIG_START( rgum, rgum_state )
MCFG_I8255A_ADD( "ppi8255", ppi8255_intf )
MCFG_GFXDECODE_ADD("gfxdecode", rgum)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/rltennis.c b/src/mame/drivers/rltennis.c
index a8a3f572414..319abb2285f 100644
--- a/src/mame/drivers/rltennis.c
+++ b/src/mame/drivers/rltennis.c
@@ -185,11 +185,11 @@ static MACHINE_CONFIG_START( rltennis, rltennis_state )
MCFG_SCREEN_VISIBLE_AREA(0,319, 0, 239)
MCFG_SCREEN_UPDATE_DRIVER(rltennis_state, screen_update_rltennis)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_NVRAM_ADD_0FILL("nvram")
- MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map)
+ MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/rmhaihai.c b/src/mame/drivers/rmhaihai.c
index 2554d6e3dbf..dd8bf03eabc 100644
--- a/src/mame/drivers/rmhaihai.c
+++ b/src/mame/drivers/rmhaihai.c
@@ -485,9 +485,8 @@ static MACHINE_CONFIG_START( rmhaihai, rmhaihai_state )
MCFG_SCREEN_UPDATE_DRIVER(rmhaihai_state, screen_update_rmhaihai)
MCFG_GFXDECODE_ADD("gfxdecode", rmhaihai)
- MCFG_PALETTE_LENGTH(0x100)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 0x100)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -507,7 +506,8 @@ static MACHINE_CONFIG_DERIVED( rmhaisei, rmhaihai )
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", themj)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 0x200)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( themj, rmhaihai )
@@ -522,7 +522,8 @@ static MACHINE_CONFIG_DERIVED( themj, rmhaihai )
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", themj)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 0x200)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/rockrage.c b/src/mame/drivers/rockrage.c
index 7213fcae894..cf0d06fac8b 100644
--- a/src/mame/drivers/rockrage.c
+++ b/src/mame/drivers/rockrage.c
@@ -271,10 +271,11 @@ static MACHINE_CONFIG_START( rockrage, rockrage_state )
MCFG_K007342_GFXDECODE("gfxdecode")
MCFG_K007420_ADD("k007420", rockrage_k007420_intf)
+ MCFG_K007420_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", rockrage)
- MCFG_PALETTE_LENGTH(64 + 2*16*16)
-
+ MCFG_PALETTE_ADD("palette", 64 + 2*16*16)
+ MCFG_PALETTE_INIT_OWNER(rockrage_state, rockrage)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/rocnrope.c b/src/mame/drivers/rocnrope.c
index 6cf438183f4..9a76da73491 100644
--- a/src/mame/drivers/rocnrope.c
+++ b/src/mame/drivers/rocnrope.c
@@ -208,8 +208,8 @@ static MACHINE_CONFIG_START( rocnrope, rocnrope_state )
MCFG_SCREEN_UPDATE_DRIVER(rocnrope_state, screen_update_rocnrope)
MCFG_GFXDECODE_ADD("gfxdecode", rocnrope)
- MCFG_PALETTE_LENGTH(16*16+16*16)
-
+ MCFG_PALETTE_ADD("palette", 16*16+16*16)
+ MCFG_PALETTE_INIT_OWNER(rocnrope_state, rocnrope)
/* sound hardware */
MCFG_FRAGMENT_ADD(timeplt_sound)
diff --git a/src/mame/drivers/rohga.c b/src/mame/drivers/rohga.c
index 6e9a8ee8052..da1e660d447 100644
--- a/src/mame/drivers/rohga.c
+++ b/src/mame/drivers/rohga.c
@@ -829,7 +829,7 @@ static MACHINE_CONFIG_START( rohga, rohga_state )
MCFG_SCREEN_UPDATE_DRIVER(rohga_state, screen_update_rohga)
MCFG_GFXDECODE_ADD("gfxdecode", rohga)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_VIDEO_START_OVERRIDE(rohga_state,rohga)
@@ -837,13 +837,16 @@ static MACHINE_CONFIG_START( rohga, rohga_state )
MCFG_DECO16IC_ADD("tilegen1", rohga_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DECO16IC_ADD("tilegen2", rohga_deco16ic_tilegen2_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen1", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 3);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DECO104_ADD("ioprot104")
@@ -887,23 +890,27 @@ static MACHINE_CONFIG_START( wizdfire, rohga_state )
MCFG_SCREEN_UPDATE_DRIVER(rohga_state, screen_update_wizdfire)
MCFG_GFXDECODE_ADD("gfxdecode", wizdfire)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_DECOCOMN_ADD("deco_common")
MCFG_DECO16IC_ADD("tilegen1", rohga_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DECO16IC_ADD("tilegen2", rohga_deco16ic_tilegen2_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen1", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 3);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen2", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 4);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DECO104_ADD("ioprot104")
MCFG_DECO146_SET_INTERFACE_SCRAMBLE_REVERSE
@@ -950,23 +957,27 @@ static MACHINE_CONFIG_START( nitrobal, rohga_state )
MCFG_SCREEN_UPDATE_DRIVER(rohga_state, screen_update_nitrobal)
MCFG_GFXDECODE_ADD("gfxdecode", wizdfire)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_DECOCOMN_ADD("deco_common")
MCFG_DECO16IC_ADD("tilegen1", nitrobal_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DECO16IC_ADD("tilegen2", nitrobal_deco16ic_tilegen2_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen1", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 3);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen2", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 4);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(rohga_state,wizdfire)
@@ -1014,7 +1025,7 @@ static MACHINE_CONFIG_START( schmeisr, rohga_state )
MCFG_SCREEN_UPDATE_DRIVER(rohga_state, screen_update_rohga)
MCFG_GFXDECODE_ADD("gfxdecode", schmeisr)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_VIDEO_START_OVERRIDE(rohga_state,schmeisr)
@@ -1022,13 +1033,16 @@ static MACHINE_CONFIG_START( schmeisr, rohga_state )
MCFG_DECO16IC_ADD("tilegen1", rohga_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DECO16IC_ADD("tilegen2", rohga_deco16ic_tilegen2_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen1", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 3);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DECO104_ADD("ioprot104")
diff --git a/src/mame/drivers/rollerg.c b/src/mame/drivers/rollerg.c
index 918664308c5..e4ffa738905 100644
--- a/src/mame/drivers/rollerg.c
+++ b/src/mame/drivers/rollerg.c
@@ -96,7 +96,7 @@ static ADDRESS_MAP_START( rollerg_map, AS_PROGRAM, 8, rollerg_state )
AM_RANGE(0x0300, 0x030f) AM_DEVREADWRITE("k053244", k05324x_device, k053244_r, k053244_w)
AM_RANGE(0x0800, 0x0fff) AM_READ(rollerg_k051316_r) AM_DEVWRITE("k051316", k051316_device, write)
AM_RANGE(0x1000, 0x17ff) AM_DEVREADWRITE("k053244", k05324x_device, k053245_r, k053245_w)
- AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0x1800, 0x1fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x2000, 0x3aff) AM_RAM
AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
AM_RANGE(0x8000, 0xffff) AM_ROM
@@ -278,8 +278,6 @@ static MACHINE_CONFIG_START( rollerg, rollerg_state )
/* NMIs are generated by the 053260 */
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
@@ -287,15 +285,19 @@ static MACHINE_CONFIG_START( rollerg, rollerg_state )
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(rollerg_state, screen_update_rollerg)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K053244_ADD("k053244", rollerg_k05324x_intf)
MCFG_K053244_GFXDECODE("gfxdecode")
+ MCFG_K053244_PALETTE("palette")
MCFG_K051316_ADD("k051316", rollerg_k051316_intf)
MCFG_K051316_GFXDECODE("gfxdecode")
+ MCFG_K051316_PALETTE("palette")
MCFG_K053252_ADD("k053252", 3000000*2, rollerg_k053252_intf)
diff --git a/src/mame/drivers/rollrace.c b/src/mame/drivers/rollrace.c
index 2b40b1b3df2..5f50e5a98a3 100644
--- a/src/mame/drivers/rollrace.c
+++ b/src/mame/drivers/rollrace.c
@@ -238,8 +238,8 @@ static MACHINE_CONFIG_START( rollrace, rollrace_state )
MCFG_SCREEN_UPDATE_DRIVER(rollrace_state, screen_update_rollrace)
MCFG_GFXDECODE_ADD("gfxdecode", rollrace)
- MCFG_PALETTE_LENGTH(256)
-
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(rollrace_state, rollrace)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/roul.c b/src/mame/drivers/roul.c
index 20d7ce98c56..d6e44459b4e 100644
--- a/src/mame/drivers/roul.c
+++ b/src/mame/drivers/roul.c
@@ -85,7 +85,7 @@ public:
DECLARE_WRITE8_MEMBER(sound_latch_w);
DECLARE_WRITE8_MEMBER(ball_w);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(roul);
UINT32 screen_update_roul(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_soundcpu;
@@ -95,7 +95,7 @@ public:
#define VIDEOBUF_SIZE 256*256
-void roul_state::palette_init()
+PALETTE_INIT_MEMBER(roul_state, roul)
{
const UINT8 *color_prom = memregion("proms")->base();
int bit6, bit7, bit0, bit1, r, g, b;
@@ -116,7 +116,7 @@ void roul_state::palette_init()
bit1 = (color_prom[0] >> 5) & 0x01;
r = 0x0e * bit6 + 0x1f * bit7 + 0x43 * bit0 + 0x8f * bit1;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
color_prom++;
}
}
@@ -302,8 +302,8 @@ static MACHINE_CONFIG_START( roul, roul_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(roul_state, screen_update_roul)
- MCFG_PALETTE_LENGTH(0x100)
-
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_INIT_OWNER(roul_state, roul)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("aysnd", AY8910, 1000000)
diff --git a/src/mame/drivers/royalmah.c b/src/mame/drivers/royalmah.c
index 9c7526c868c..967c0d1de91 100644
--- a/src/mame/drivers/royalmah.c
+++ b/src/mame/drivers/royalmah.c
@@ -197,7 +197,7 @@ public:
DECLARE_WRITE_LINE_MEMBER(mjtensin_rtc_irq);
DECLARE_DRIVER_INIT(janptr96);
DECLARE_DRIVER_INIT(ippatsu);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(royalmah);
DECLARE_PALETTE_INIT(mjderngr);
UINT32 screen_update_royalmah(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(suzume_irq);
@@ -210,7 +210,7 @@ public:
-void royalmah_state::palette_init()
+PALETTE_INIT_MEMBER(royalmah_state, royalmah)
{
offs_t i;
const UINT8 *prom = memregion("proms")->base();
@@ -240,7 +240,7 @@ void royalmah_state::palette_init()
bit2 = (data >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color_rgb(machine(),i, r,g,b);
+ palette.set_pen_color(i, r,g,b);
}
}
@@ -259,7 +259,7 @@ PALETTE_INIT_MEMBER(royalmah_state,mjderngr)
UINT8 g = BITSWAP8((data >> 5) & 0x1f,7,6,5,0,1,2,3,4 );
UINT8 b = BITSWAP8((data >> 10) & 0x1f,7,6,5,0,1,2,3,4 );
- palette_set_color_rgb(machine(),i, pal5bit(r), pal5bit(g), pal5bit(b));
+ palette.set_pen_color(i, pal5bit(r), pal5bit(g), pal5bit(b));
}
}
@@ -3234,7 +3234,8 @@ static MACHINE_CONFIG_START( royalmah, royalmah_state )
MCFG_NVRAM_ADD_0FILL("nvram")
/* video hardware */
- MCFG_PALETTE_LENGTH(16*2)
+ MCFG_PALETTE_ADD("palette", 16*2)
+ MCFG_PALETTE_INIT_OWNER(royalmah_state,royalmah)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_SIZE(256, 256)
@@ -3345,8 +3346,9 @@ static MACHINE_CONFIG_DERIVED( mjderngr, dondenmj )
MCFG_CPU_IO_MAP(mjderngr_iomap)
/* video hardware */
- MCFG_PALETTE_LENGTH(16*32)
- MCFG_PALETTE_INIT_OVERRIDE(royalmah_state,mjderngr)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 16*32)
+ MCFG_PALETTE_INIT_OWNER(royalmah_state,mjderngr)
MACHINE_CONFIG_END
/* It runs in IM 2, thus needs a vector on the data bus */
diff --git a/src/mame/drivers/rpunch.c b/src/mame/drivers/rpunch.c
index c8c7bb07c50..0e94d0dd3cd 100644
--- a/src/mame/drivers/rpunch.c
+++ b/src/mame/drivers/rpunch.c
@@ -225,7 +225,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, rpunch_state )
AM_RANGE(0x040000, 0x04ffff) AM_RAM AM_SHARE("bitmapram")
AM_RANGE(0x060000, 0x060fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x080000, 0x083fff) AM_RAM_WRITE(rpunch_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x0a0000, 0x0a07ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0a0000, 0x0a07ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0c0000, 0x0c0007) AM_WRITE(rpunch_scrollreg_w)
AM_RANGE(0x0c0008, 0x0c0009) AM_WRITE(rpunch_crtc_data_w)
AM_RANGE(0x0c000c, 0x0c000d) AM_WRITE(rpunch_videoreg_w)
@@ -491,7 +491,8 @@ static MACHINE_CONFIG_START( rpunch, rpunch_state )
MCFG_SCREEN_UPDATE_DRIVER(rpunch_state, screen_update_rpunch)
MCFG_GFXDECODE_ADD("gfxdecode", rpunch)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
@@ -526,7 +527,8 @@ static MACHINE_CONFIG_START( svolleybl, rpunch_state )
MCFG_SCREEN_UPDATE_DRIVER(rpunch_state, screen_update_rpunch)
MCFG_GFXDECODE_ADD("gfxdecode", svolleybl)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
diff --git a/src/mame/drivers/runaway.c b/src/mame/drivers/runaway.c
index 6835aa35883..46f10e5ba93 100644
--- a/src/mame/drivers/runaway.c
+++ b/src/mame/drivers/runaway.c
@@ -361,7 +361,7 @@ static MACHINE_CONFIG_START( runaway, runaway_state )
MCFG_SCREEN_UPDATE_DRIVER(runaway_state, screen_update_runaway)
MCFG_GFXDECODE_ADD("gfxdecode", runaway)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
/* sound hardware */
diff --git a/src/mame/drivers/rungun.c b/src/mame/drivers/rungun.c
index d978f9a04bd..f95682f80cd 100644
--- a/src/mame/drivers/rungun.c
+++ b/src/mame/drivers/rungun.c
@@ -164,7 +164,7 @@ INTERRUPT_GEN_MEMBER(rungun_state::rng_interrupt)
static ADDRESS_MAP_START( rungun_map, AS_PROGRAM, 16, rungun_state )
AM_RANGE(0x000000, 0x2fffff) AM_ROM // main program + data
- AM_RANGE(0x300000, 0x3007ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x300000, 0x3007ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x380000, 0x39ffff) AM_RAM // work RAM
AM_RANGE(0x400000, 0x43ffff) AM_READNOP // AM_READ(K053936_0_rom_r ) // '936 ROM readback window
AM_RANGE(0x480000, 0x48001f) AM_READWRITE(rng_sysregs_r, rng_sysregs_w) AM_SHARE("sysreg")
@@ -393,7 +393,7 @@ static MACHINE_CONFIG_START( rng, rungun_state )
MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_BEFORE_VBLANK)
+ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -402,11 +402,15 @@ static MACHINE_CONFIG_START( rng, rungun_state )
MCFG_SCREEN_VISIBLE_AREA(88, 88+384-1, 24, 24+224-1)
MCFG_SCREEN_UPDATE_DRIVER(rungun_state, screen_update_rng)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_ENABLE_HILIGHTS()
MCFG_K053936_ADD("k053936", rng_k053936_intf)
MCFG_K055673_ADD("k055673", rng_k055673_intf)
MCFG_K055673_GFXDECODE("gfxdecode")
+ MCFG_K055673_PALETTE("palette")
MCFG_K053252_ADD("k053252", 16000000/2, rng_k053252_intf)
/* sound hardware */
diff --git a/src/mame/drivers/safarir.c b/src/mame/drivers/safarir.c
index 89f17b4cb1e..5c9c70c8bac 100644
--- a/src/mame/drivers/safarir.c
+++ b/src/mame/drivers/safarir.c
@@ -85,7 +85,7 @@ public:
TILE_GET_INFO_MEMBER(get_fg_tile_info);
virtual void machine_start();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(safarir);
UINT32 screen_update_safarir(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -146,14 +146,14 @@ static GFXDECODE_START( safarir )
GFXDECODE_END
-void safarir_state::palette_init()
+PALETTE_INIT_MEMBER(safarir_state, safarir)
{
int i;
- for (i = 0; i < machine().total_colors() / 2; i++)
+ for (i = 0; i < palette.entries() / 2; i++)
{
- palette_set_color(machine(), (i * 2) + 0, rgb_t::black);
- palette_set_color(machine(), (i * 2) + 1, rgb_t(pal1bit(i >> 2), pal1bit(i >> 1), pal1bit(i >> 0)));
+ palette.set_pen_color((i * 2) + 0, rgb_t::black);
+ palette.set_pen_color((i * 2) + 1, rgb_t(pal1bit(i >> 2), pal1bit(i >> 1), pal1bit(i >> 0)));
}
}
@@ -408,7 +408,9 @@ static MACHINE_CONFIG_START( safarir, safarir_state )
MCFG_CPU_PROGRAM_MAP(main_map)
/* video hardware */
- MCFG_PALETTE_LENGTH(2*8)
+ MCFG_PALETTE_ADD("palette", 2*8)
+ MCFG_PALETTE_INIT_OWNER(safarir_state, safarir)
+
MCFG_GFXDECODE_ADD("gfxdecode", safarir)
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/sandscrp.c b/src/mame/drivers/sandscrp.c
index c8c8f6a9cd5..00812a0ee71 100644
--- a/src/mame/drivers/sandscrp.c
+++ b/src/mame/drivers/sandscrp.c
@@ -266,7 +266,7 @@ static ADDRESS_MAP_START( sandscrp, AS_PROGRAM, 16, sandscrp_state )
AM_RANGE(0x300000, 0x30001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w)
AM_RANGE(0x400000, 0x403fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
AM_RANGE(0x500000, 0x501fff) AM_DEVREADWRITE("pandora", kaneko_pandora_device, spriteram_LSB_r, spriteram_LSB_w ) // sprites
- AM_RANGE(0x600000, 0x600fff) AM_RAM_WRITE(paletteram_xGGGGGRRRRRBBBBB_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x600000, 0x600fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0xa00000, 0xa00001) AM_WRITE(sandscrp_coin_counter_w) // Coin Counters (Lockout unused)
AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1")
AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2")
@@ -510,7 +510,8 @@ static MACHINE_CONFIG_START( sandscrp, sandscrp_state )
MCFG_SCREEN_VBLANK_DRIVER(sandscrp_state, screen_eof_sandscrp)
MCFG_GFXDECODE_ADD("gfxdecode", sandscrp)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
MCFG_DEVICE_ADD("view2_0", KANEKO_TMAP, 0)
kaneko_view2_tilemap_device::set_gfx_region(*device, 1);
@@ -522,6 +523,7 @@ static MACHINE_CONFIG_START( sandscrp, sandscrp_state )
MCFG_KANEKO_PANDORA_ADD("pandora", sandscrp_pandora_config)
MCFG_KANEKO_PANDORA_GFXDECODE("gfxdecode")
+ MCFG_KANEKO_PANDORA_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/sangho.c b/src/mame/drivers/sangho.c
index 201813e9c48..ad294330634 100644
--- a/src/mame/drivers/sangho.c
+++ b/src/mame/drivers/sangho.c
@@ -469,8 +469,6 @@ static MACHINE_CONFIG_START( pzlestar, sangho_state )
MCFG_MACHINE_RESET_OVERRIDE(sangho_state,pzlestar)
- MCFG_PALETTE_LENGTH(19780)
-
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ymsnd", YM2413, 3580000)
@@ -499,7 +497,7 @@ static MACHINE_CONFIG_START( sexyboom, sangho_state )
MCFG_MACHINE_RESET_OVERRIDE(sangho_state,sexyboom)
- MCFG_PALETTE_LENGTH(19780)
+ MCFG_PALETTE_ADD("palette", 19780)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ymsnd", YM2413, 3580000)
diff --git a/src/mame/drivers/sanremo.c b/src/mame/drivers/sanremo.c
index 856fcc45582..1f565cae981 100644
--- a/src/mame/drivers/sanremo.c
+++ b/src/mame/drivers/sanremo.c
@@ -122,7 +122,7 @@ public:
DECLARE_WRITE8_MEMBER(lamps_w);
int banksel;
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(sanremo);
UINT32 screen_update_sanremo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -161,15 +161,15 @@ UINT32 sanremo_state::screen_update_sanremo(screen_device &screen, bitmap_ind16
return 0;
}
-void sanremo_state::palette_init()
+PALETTE_INIT_MEMBER(sanremo_state, sanremo)
{
int index;
for (index = 0; index < 0x8; index++)
- palette_set_color_rgb(machine(), index, pal1bit((index >> 0)&1), pal1bit((index >> 1)&1), pal1bit((index >> 2)&1));
+ palette.set_pen_color(index, rgb_t(pal1bit((index >> 0)&1), pal1bit((index >> 1)&1), pal1bit((index >> 2)&1)));
for (index = 0x8; index < 0x10; index++)
- palette_set_color_rgb(machine(), index, pal2bit((index >> 0)&1), pal2bit((index >> 1)&1), pal2bit((index >> 2)&1));
+ palette.set_pen_color(index, rgb_t(pal2bit((index >> 0)&1), pal2bit((index >> 1)&1), pal2bit((index >> 2)&1)));
}
@@ -401,7 +401,8 @@ static MACHINE_CONFIG_START( sanremo, sanremo_state )
MCFG_MC6845_ADD("crtc", MC6845, "screen", CRTC_CLOCK, mc6845_intf)
MCFG_GFXDECODE_ADD("gfxdecode", sanremo)
- MCFG_PALETTE_LENGTH(0x10)
+ MCFG_PALETTE_ADD("palette", 0x10)
+ MCFG_PALETTE_INIT_OWNER(sanremo_state, sanremo)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/sauro.c b/src/mame/drivers/sauro.c
index 2a8fc794b64..a6850da3067 100644
--- a/src/mame/drivers/sauro.c
+++ b/src/mame/drivers/sauro.c
@@ -386,8 +386,7 @@ static MACHINE_CONFIG_START( tecfri, sauro_state )
MCFG_SCREEN_SIZE(32 * 8, 32 * 8)
MCFG_SCREEN_VISIBLE_AREA(1 * 8, 31 * 8 - 1, 2 * 8, 30 * 8 - 1)
- MCFG_PALETTE_LENGTH(1024)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 1024)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/sbasketb.c b/src/mame/drivers/sbasketb.c
index 67881e394f6..ce65e059d3a 100644
--- a/src/mame/drivers/sbasketb.c
+++ b/src/mame/drivers/sbasketb.c
@@ -198,8 +198,8 @@ static MACHINE_CONFIG_START( sbasketb, sbasketb_state )
MCFG_SCREEN_UPDATE_DRIVER(sbasketb_state, screen_update_sbasketb)
MCFG_GFXDECODE_ADD("gfxdecode", sbasketb)
- MCFG_PALETTE_LENGTH(16*16+16*16*16)
-
+ MCFG_PALETTE_ADD("palette", 16*16+16*16*16)
+ MCFG_PALETTE_INIT_OWNER(sbasketb_state, sbasketb)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/sbowling.c b/src/mame/drivers/sbowling.c
index e6bc9c28892..249f2b2fe81 100644
--- a/src/mame/drivers/sbowling.c
+++ b/src/mame/drivers/sbowling.c
@@ -74,7 +74,7 @@ public:
DECLARE_READ8_MEMBER(controls_r);
TILE_GET_INFO_MEMBER(get_sb_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(sbowling);
UINT32 screen_update_sbowling(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(sbw_interrupt);
};
@@ -338,7 +338,7 @@ static GFXDECODE_START( sbowling )
GFXDECODE_END
-void sbowling_state::palette_init()
+PALETTE_INIT_MEMBER(sbowling_state, sbowling)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -353,7 +353,7 @@ void sbowling_state::palette_init()
3, resistances_rg, outputs_g, 0, 100,
2, resistances_b, outputs_b, 0, 100);
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int bit0,bit1,bit2,r,g,b;
@@ -374,7 +374,7 @@ void sbowling_state::palette_init()
bit2 = (color_prom[i+0x400] >> 3) & 0x01;
r = (int)(outputs_r[ (bit0<<0) | (bit1<<1) | (bit2<<2) ] + 0.5);
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
}
@@ -393,7 +393,8 @@ static MACHINE_CONFIG_START( sbowling, sbowling_state )
MCFG_GFXDECODE_ADD("gfxdecode", sbowling)
- MCFG_PALETTE_LENGTH(0x400)
+ MCFG_PALETTE_ADD("palette", 0x400)
+ MCFG_PALETTE_INIT_OWNER(sbowling_state, sbowling)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/sbrkout.c b/src/mame/drivers/sbrkout.c
index a64f769f5df..a3f0c30f948 100644
--- a/src/mame/drivers/sbrkout.c
+++ b/src/mame/drivers/sbrkout.c
@@ -347,7 +347,7 @@ UINT32 sbrkout_state::screen_update_sbrkout(screen_device &screen, bitmap_ind16
int sx = 31 * 8 - videoram[0x380 + 0x10 + ball * 2];
int sy = 30 * 8 - videoram[0x380 + 0x18 + ball * 2];
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code, 0, 0, 0, sx, sy, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code, 0, 0, 0, sx, sy, 0);
}
return 0;
}
@@ -516,13 +516,12 @@ static MACHINE_CONFIG_START( sbrkout, sbrkout_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", sbrkout)
- MCFG_PALETTE_LENGTH(2)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MAIN_CLOCK/2, 384, 0, 256, 262, 0, 224)
MCFG_SCREEN_UPDATE_DRIVER(sbrkout_state, screen_update_sbrkout)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/sbugger.c b/src/mame/drivers/sbugger.c
index 048e8ab0a52..68fcc622000 100644
--- a/src/mame/drivers/sbugger.c
+++ b/src/mame/drivers/sbugger.c
@@ -239,8 +239,8 @@ static MACHINE_CONFIG_START( sbugger, sbugger_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(sbugger_state, screen_update_sbugger)
- MCFG_PALETTE_LENGTH(512)
-
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_INIT_OWNER(sbugger_state, sbugger)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/scobra.c b/src/mame/drivers/scobra.c
index 8acbf9452f6..ea91c98c0f3 100644
--- a/src/mame/drivers/scobra.c
+++ b/src/mame/drivers/scobra.c
@@ -759,9 +759,9 @@ static MACHINE_CONFIG_START( type1, scobra_state )
MCFG_SCREEN_UPDATE_DRIVER(scobra_state, screen_update_galaxold)
MCFG_GFXDECODE_ADD("gfxdecode", scobra)
- MCFG_PALETTE_LENGTH(32+64+2+1) /* 32 for characters, 64 for stars, 2 for bullets, 1 for background */
+ MCFG_PALETTE_ADD("palette", 32+64+2+1) /* 32 for characters, 64 for stars, 2 for bullets, 1 for background */
- MCFG_PALETTE_INIT_OVERRIDE(scobra_state,scrambold)
+ MCFG_PALETTE_INIT_OWNER(scobra_state,scrambold)
MCFG_VIDEO_START_OVERRIDE(scobra_state,scrambold)
/* sound hardware */
@@ -784,9 +784,10 @@ static MACHINE_CONFIG_DERIVED( rescue, type1 )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_PALETTE_LENGTH(32+64+2+128) /* 32 for characters, 64 for stars, 2 for bullets, 128 for background */
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 32+64+2+128) /* 32 for characters, 64 for stars, 2 for bullets, 128 for background */
- MCFG_PALETTE_INIT_OVERRIDE(scobra_state,rescue)
+ MCFG_PALETTE_INIT_OWNER(scobra_state,rescue)
MCFG_VIDEO_START_OVERRIDE(scobra_state,rescue)
MACHINE_CONFIG_END
@@ -797,9 +798,10 @@ static MACHINE_CONFIG_DERIVED( minefld, type1 )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_PALETTE_LENGTH(32+64+2+256) /* 32 for characters, 64 for stars, 2 for bullets, 256 for background */
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 32+64+2+256) /* 32 for characters, 64 for stars, 2 for bullets, 256 for background */
- MCFG_PALETTE_INIT_OVERRIDE(scobra_state,minefld)
+ MCFG_PALETTE_INIT_OWNER(scobra_state,minefld)
MCFG_VIDEO_START_OVERRIDE(scobra_state,minefld)
MACHINE_CONFIG_END
@@ -831,9 +833,10 @@ static MACHINE_CONFIG_DERIVED( stratgyx, type2 )
MCFG_I8255A_ADD( "ppi8255_1", stratgyx_ppi_1_intf )
/* video hardware */
- MCFG_PALETTE_LENGTH(32+64+2+8) /* 32 for characters, 64 for stars, 2 for bullets, 8 for background */
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 32+64+2+8) /* 32 for characters, 64 for stars, 2 for bullets, 8 for background */
- MCFG_PALETTE_INIT_OVERRIDE(scobra_state,stratgyx)
+ MCFG_PALETTE_INIT_OWNER(scobra_state,stratgyx)
MCFG_VIDEO_START_OVERRIDE(scobra_state,stratgyx)
MACHINE_CONFIG_END
@@ -843,9 +846,10 @@ static MACHINE_CONFIG_DERIVED( darkplnt, type2 )
/* basic machine hardware */
/* video hardware */
- MCFG_PALETTE_LENGTH(32+64+2) /* 32 for characters, 64 (buffer) for stars, 2 for bullets */
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 32+64+2) /* 32 for characters, 64 (buffer) for stars, 2 for bullets */
- MCFG_PALETTE_INIT_OVERRIDE(scobra_state,darkplnt)
+ MCFG_PALETTE_INIT_OWNER(scobra_state,darkplnt)
MCFG_VIDEO_START_OVERRIDE(scobra_state,darkplnt)
MACHINE_CONFIG_END
@@ -886,9 +890,9 @@ static MACHINE_CONFIG_START( hustler, scobra_state )
MCFG_SCREEN_UPDATE_DRIVER(scobra_state, screen_update_galaxold)
MCFG_GFXDECODE_ADD("gfxdecode", scobra)
- MCFG_PALETTE_LENGTH(32+64+2) /* 32 for characters, 64 for stars, 2 for bullets */
+ MCFG_PALETTE_ADD("palette", 32+64+2) /* 32 for characters, 64 for stars, 2 for bullets */
- MCFG_PALETTE_INIT_OVERRIDE(scobra_state,galaxold)
+ MCFG_PALETTE_INIT_OWNER(scobra_state,galaxold)
MCFG_VIDEO_START_OVERRIDE(scobra_state,scrambold)
/* sound hardware */
diff --git a/src/mame/drivers/scotrsht.c b/src/mame/drivers/scotrsht.c
index 61beffe7d1a..e0c940fa7cb 100644
--- a/src/mame/drivers/scotrsht.c
+++ b/src/mame/drivers/scotrsht.c
@@ -197,8 +197,8 @@ static MACHINE_CONFIG_START( scotrsht, scotrsht_state )
MCFG_SCREEN_UPDATE_DRIVER(scotrsht_state, screen_update_scotrsht)
MCFG_GFXDECODE_ADD("gfxdecode", scotrsht)
- MCFG_PALETTE_LENGTH(16*8*16+16*8*16)
-
+ MCFG_PALETTE_ADD("palette", 16*8*16+16*8*16)
+ MCFG_PALETTE_INIT_OWNER(scotrsht_state, scotrsht)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/scramble.c b/src/mame/drivers/scramble.c
index 2e731ce30dd..be6b1fd3950 100644
--- a/src/mame/drivers/scramble.c
+++ b/src/mame/drivers/scramble.c
@@ -1477,9 +1477,9 @@ static MACHINE_CONFIG_START( scramble, scramble_state )
MCFG_SCREEN_UPDATE_DRIVER(scramble_state, screen_update_galaxold)
MCFG_GFXDECODE_ADD("gfxdecode", scramble)
- MCFG_PALETTE_LENGTH(32+64+2+1) /* 32 for characters, 64 for stars, 2 for bullets, 0/1 for background */
+ MCFG_PALETTE_ADD("palette", 32+64+2+1) /* 32 for characters, 64 for stars, 2 for bullets, 0/1 for background */
- MCFG_PALETTE_INIT_OVERRIDE(scramble_state,scrambold)
+ MCFG_PALETTE_INIT_OWNER(scramble_state,scrambold)
MCFG_VIDEO_START_OVERRIDE(scramble_state,scrambold)
/* sound hardware */
@@ -1503,8 +1503,9 @@ static MACHINE_CONFIG_DERIVED( mars, scramble )
MCFG_I8255A_ADD( "ppi8255_1", stratgyx_ppi_1_intf )
/* video hardware */
- MCFG_PALETTE_LENGTH(32+64+2+0) /* 32 for characters, 64 for stars, 2 for bullets, 0/1 for background */
- MCFG_PALETTE_INIT_OVERRIDE(scramble_state,galaxold)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 32+64+2+0) /* 32 for characters, 64 for stars, 2 for bullets, 0/1 for background */
+ MCFG_PALETTE_INIT_OWNER(scramble_state,galaxold)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( devilfsh, scramble )
@@ -1515,8 +1516,9 @@ static MACHINE_CONFIG_DERIVED( devilfsh, scramble )
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", devilfsh)
- MCFG_PALETTE_LENGTH(32+64+2+0) /* 32 for characters, 64 for stars, 2 for bullets, 0/1 for background */
- MCFG_PALETTE_INIT_OVERRIDE(scramble_state,galaxold)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 32+64+2+0) /* 32 for characters, 64 for stars, 2 for bullets, 0/1 for background */
+ MCFG_PALETTE_INIT_OWNER(scramble_state,galaxold)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( newsin7, scramble )
@@ -1527,8 +1529,9 @@ static MACHINE_CONFIG_DERIVED( newsin7, scramble )
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", newsin7)
- MCFG_PALETTE_LENGTH(32+64+2+0) /* 32 for characters, 64 for stars, 2 for bullets, 0/1 for background */
- MCFG_PALETTE_INIT_OVERRIDE(scramble_state,galaxold)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 32+64+2+0) /* 32 for characters, 64 for stars, 2 for bullets, 0/1 for background */
+ MCFG_PALETTE_INIT_OWNER(scramble_state,galaxold)
MCFG_VIDEO_START_OVERRIDE(scramble_state,scrambold)
MACHINE_CONFIG_END
@@ -1543,8 +1546,9 @@ static MACHINE_CONFIG_DERIVED( mrkougar, scramble )
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", mrkougar)
- MCFG_PALETTE_LENGTH(32+64+2+0) /* 32 for characters, 64 for stars, 2 for bullets, 0/1 for background */
- MCFG_PALETTE_INIT_OVERRIDE(scramble_state,galaxold)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 32+64+2+0) /* 32 for characters, 64 for stars, 2 for bullets, 0/1 for background */
+ MCFG_PALETTE_INIT_OWNER(scramble_state,galaxold)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( mrkougb, scramble )
@@ -1557,8 +1561,9 @@ static MACHINE_CONFIG_DERIVED( mrkougb, scramble )
MCFG_I8255A_ADD( "ppi8255_1", mrkougar_ppi_1_intf )
/* video hardware */
- MCFG_PALETTE_LENGTH(32+64+2+0) /* 32 for characters, 64 for stars, 2 for bullets, 0/1 for background */
- MCFG_PALETTE_INIT_OVERRIDE(scramble_state,galaxold)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 32+64+2+0) /* 32 for characters, 64 for stars, 2 for bullets, 0/1 for background */
+ MCFG_PALETTE_INIT_OWNER(scramble_state,galaxold)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( ckongs, scramble )
@@ -1568,8 +1573,9 @@ static MACHINE_CONFIG_DERIVED( ckongs, scramble )
MCFG_CPU_PROGRAM_MAP(ckongs_map)
/* video hardware */
- MCFG_PALETTE_LENGTH(32+64+2+0) /* 32 for characters, 64 for stars, 2 for bullets, 0/1 for background */
- MCFG_PALETTE_INIT_OVERRIDE(scramble_state,galaxold)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 32+64+2+0) /* 32 for characters, 64 for stars, 2 for bullets, 0/1 for background */
+ MCFG_PALETTE_INIT_OWNER(scramble_state,galaxold)
MCFG_VIDEO_START_OVERRIDE(scramble_state,ckongs)
MACHINE_CONFIG_END
@@ -1588,8 +1594,9 @@ static MACHINE_CONFIG_DERIVED( hotshock, scramble )
MCFG_MACHINE_RESET_OVERRIDE(scramble_state,galaxold)
/* video hardware */
- MCFG_PALETTE_LENGTH(32+64+2+0) /* 32 for characters, 64 for stars, 2 for bullets, 0/1 for background */
- MCFG_PALETTE_INIT_OVERRIDE(scramble_state,galaxold)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 32+64+2+0) /* 32 for characters, 64 for stars, 2 for bullets, 0/1 for background */
+ MCFG_PALETTE_INIT_OWNER(scramble_state,galaxold)
MCFG_VIDEO_START_OVERRIDE(scramble_state,pisces)
MCFG_SOUND_MODIFY("8910.1")
@@ -1607,8 +1614,9 @@ static MACHINE_CONFIG_DERIVED( cavelon, scramble )
/* basic machine hardware */
/* video hardware */
- MCFG_PALETTE_LENGTH(32+64+2+0) /* 32 for characters, 64 for stars, 2 for bullets, 0/1 for background */
- MCFG_PALETTE_INIT_OVERRIDE(scramble_state,galaxold)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 32+64+2+0) /* 32 for characters, 64 for stars, 2 for bullets, 0/1 for background */
+ MCFG_PALETTE_INIT_OWNER(scramble_state,galaxold)
MCFG_VIDEO_START_OVERRIDE(scramble_state,ckongs)
MACHINE_CONFIG_END
@@ -1635,9 +1643,9 @@ static MACHINE_CONFIG_DERIVED( triplep, scramble )
MCFG_DEVICE_REMOVE("konami_7474")
/* video hardware */
- MCFG_PALETTE_LENGTH(32+64+2+0) /* 32 for characters, 64 for stars, 2 for bullets */
-
- MCFG_PALETTE_INIT_OVERRIDE(scramble_state,galaxold)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 32+64+2+0) /* 32 for characters, 64 for stars, 2 for bullets */
+ MCFG_PALETTE_INIT_OWNER(scramble_state,galaxold)
/* sound hardware */
MCFG_SOUND_MODIFY("8910.1")
@@ -1654,9 +1662,10 @@ static MACHINE_CONFIG_DERIVED( mariner, triplep )
/* basic machine hardware */
/* video hardware */
- MCFG_PALETTE_LENGTH(32+64+2+16) /* 32 for characters, 64 for stars, 2 for bullets, 16 for background */
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 32+64+2+16) /* 32 for characters, 64 for stars, 2 for bullets, 16 for background */
- MCFG_PALETTE_INIT_OVERRIDE(scramble_state,mariner)
+ MCFG_PALETTE_INIT_OWNER(scramble_state,mariner)
MCFG_VIDEO_START_OVERRIDE(scramble_state,mariner)
MACHINE_CONFIG_END
@@ -1673,9 +1682,10 @@ static MACHINE_CONFIG_DERIVED( hunchbks, scramble )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
/* video hardware */
- MCFG_PALETTE_LENGTH(32+64+2+0) /* 32 for characters, 64 for stars, 2 for bullets */
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 32+64+2+0) /* 32 for characters, 64 for stars, 2 for bullets */
- MCFG_PALETTE_INIT_OVERRIDE(scramble_state,galaxold)
+ MCFG_PALETTE_INIT_OWNER(scramble_state,galaxold)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( hncholms, hunchbks )
@@ -1714,9 +1724,9 @@ static MACHINE_CONFIG_START( ad2083, scramble_state )
MCFG_SCREEN_UPDATE_DRIVER(scramble_state, screen_update_galaxold)
MCFG_GFXDECODE_ADD("gfxdecode", ad2083)
- MCFG_PALETTE_LENGTH(32+64+2+8) /* 32 for characters, 64 for stars, 2 for bullets, 8 for background */
+ MCFG_PALETTE_ADD("palette", 32+64+2+8) /* 32 for characters, 64 for stars, 2 for bullets, 8 for background */
- MCFG_PALETTE_INIT_OVERRIDE(scramble_state,turtles)
+ MCFG_PALETTE_INIT_OWNER(scramble_state,turtles)
MCFG_VIDEO_START_OVERRIDE(scramble_state,ad2083)
/* sound hardware */
diff --git a/src/mame/drivers/scregg.c b/src/mame/drivers/scregg.c
index dedcbead124..fd7178269f8 100644
--- a/src/mame/drivers/scregg.c
+++ b/src/mame/drivers/scregg.c
@@ -268,9 +268,9 @@ static MACHINE_CONFIG_START( dommy, scregg_state )
MCFG_SCREEN_UPDATE_DRIVER(scregg_state, screen_update_eggs)
MCFG_GFXDECODE_ADD("gfxdecode", scregg)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
- MCFG_PALETTE_INIT_OVERRIDE(scregg_state,btime)
+ MCFG_PALETTE_INIT_OWNER(scregg_state,btime)
MCFG_VIDEO_START_OVERRIDE(scregg_state,btime)
/* sound hardware */
@@ -300,9 +300,9 @@ static MACHINE_CONFIG_START( scregg, scregg_state )
MCFG_SCREEN_UPDATE_DRIVER(scregg_state, screen_update_eggs)
MCFG_GFXDECODE_ADD("gfxdecode", scregg)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
- MCFG_PALETTE_INIT_OVERRIDE(scregg_state,btime)
+ MCFG_PALETTE_INIT_OWNER(scregg_state,btime)
MCFG_VIDEO_START_OVERRIDE(scregg_state,btime)
/* sound hardware */
diff --git a/src/mame/drivers/sderby.c b/src/mame/drivers/sderby.c
index 14d25fd272f..3a790e8de9e 100644
--- a/src/mame/drivers/sderby.c
+++ b/src/mame/drivers/sderby.c
@@ -302,7 +302,7 @@ static ADDRESS_MAP_START( sderby_map, AS_PROGRAM, 16, sderby_state )
AM_RANGE(0x308000, 0x30800d) AM_READ(sderby_input_r)
AM_RANGE(0x308008, 0x308009) AM_WRITE(sderby_out_w) /* output port */
AM_RANGE(0x30800e, 0x30800f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x380000, 0x380fff) AM_WRITE(paletteram_RRRRRGGGGGBBBBBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x380000, 0x380fff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x500000, 0x500001) AM_WRITENOP /* unknown... write 0x01 in game, and 0x00 on reset */
AM_RANGE(0xd00000, 0xd007ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xffc000, 0xffffff) AM_RAM
@@ -320,7 +320,7 @@ static ADDRESS_MAP_START( sderbya_map, AS_PROGRAM, 16, sderby_state )
AM_RANGE(0x308000, 0x30800d) AM_READ(sderbya_input_r)
AM_RANGE(0x308008, 0x308009) AM_WRITE(sderby_out_w) /* output port */
AM_RANGE(0x30800e, 0x30800f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x380000, 0x380fff) AM_WRITE(paletteram_RRRRRGGGGGBBBBBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x380000, 0x380fff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x300000, 0x300001) AM_WRITENOP /* unknown... write 0x01 in game, and 0x00 on reset */ //MOD
AM_RANGE(0xcf0000, 0xcf07ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xcfc000, 0xcfffff) AM_RAM //MOD
@@ -339,7 +339,7 @@ static ADDRESS_MAP_START( luckboom_map, AS_PROGRAM, 16, sderby_state )
AM_RANGE(0x308000, 0x30800d) AM_READ(sderby_input_r)
AM_RANGE(0x308008, 0x308009) AM_WRITE(sderby_out_w) /* output port */
AM_RANGE(0x30800e, 0x30800f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x380000, 0x380fff) AM_WRITE(paletteram_RRRRRGGGGGBBBBBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x380000, 0x380fff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x500000, 0x500001) AM_WRITENOP /* unknown... write 0x01 in game, and 0x00 on reset */
AM_RANGE(0xe00000, 0xe007ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xff0000, 0xffffff) AM_RAM
@@ -358,7 +358,7 @@ static ADDRESS_MAP_START( spacewin_map, AS_PROGRAM, 16, sderby_state )
AM_RANGE(0x308000, 0x30800d) AM_READ(sderby_input_r)
AM_RANGE(0x308008, 0x308009) AM_WRITE(scmatto_out_w) /* output port */
AM_RANGE(0x30800e, 0x30800f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x380000, 0x380fff) AM_WRITE(paletteram_RRRRRGGGGGBBBBBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x380000, 0x380fff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xd00000, 0xd001ff) AM_RAM
AM_RANGE(0x800000, 0x800fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x801000, 0x80100d) AM_WRITENOP /* unknown */
@@ -380,7 +380,7 @@ static ADDRESS_MAP_START( roulette_map, AS_PROGRAM, 16, sderby_state )
AM_RANGE(0x70800a, 0x70800b) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
AM_RANGE(0x70800c, 0x70800d) AM_WRITENOP /* watchdog?? (0x0003) */
AM_RANGE(0x70800e, 0x70800f) AM_READWRITE(rprot_r, rprot_w) /* MCU communication */
- AM_RANGE(0x780000, 0x780fff) AM_WRITE(paletteram_RRRRRGGGGGBBBBBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x780000, 0x780fff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xff0000, 0xff07ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xffc000, 0xffffff) AM_RAM
@@ -563,7 +563,8 @@ static MACHINE_CONFIG_START( sderby, sderby_state )
MCFG_SCREEN_UPDATE_DRIVER(sderby_state, screen_update_sderby)
MCFG_GFXDECODE_ADD("gfxdecode", sderby)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(RRRRRGGGGGBBBBBx)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) /* clock frequency & pin 7 not verified */
@@ -586,7 +587,8 @@ static MACHINE_CONFIG_START( sderbya, sderby_state )
MCFG_SCREEN_UPDATE_DRIVER(sderby_state, screen_update_sderby)
MCFG_GFXDECODE_ADD("gfxdecode", sderby)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(RRRRRGGGGGBBBBBx)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) /* clock frequency & pin 7 not verified */
@@ -611,7 +613,8 @@ static MACHINE_CONFIG_START( luckboom, sderby_state )
MCFG_SCREEN_UPDATE_DRIVER(sderby_state, screen_update_sderby)
MCFG_GFXDECODE_ADD("gfxdecode", sderby)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(RRRRRGGGGGBBBBBx)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) /* clock frequency & pin 7 not verified */
@@ -634,7 +637,8 @@ static MACHINE_CONFIG_START( spacewin, sderby_state )
MCFG_SCREEN_UPDATE_DRIVER(sderby_state, screen_update_pmroulet)
MCFG_GFXDECODE_ADD("gfxdecode", sderby)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(RRRRRGGGGGBBBBBx)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) /* clock frequency & pin 7 not verified */
@@ -657,7 +661,8 @@ static MACHINE_CONFIG_START( pmroulet, sderby_state )
MCFG_SCREEN_UPDATE_DRIVER(sderby_state, screen_update_pmroulet)
MCFG_GFXDECODE_ADD("gfxdecode", sderby)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(RRRRRGGGGGBBBBBx)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) /* clock frequency & pin 7 not verified */
diff --git a/src/mame/drivers/seabattl.c b/src/mame/drivers/seabattl.c
index e1b86270fcb..56842979bcb 100644
--- a/src/mame/drivers/seabattl.c
+++ b/src/mame/drivers/seabattl.c
@@ -91,7 +91,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(seabattl);
UINT32 screen_update_seabattl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
bool m_waveenable;
UINT8 m_collision;
@@ -105,24 +105,24 @@ public:
***************************************************************************/
-void seabattl_state::palette_init()
+PALETTE_INIT_MEMBER(seabattl_state, seabattl)
{
// sprites (m.obj) + s2636
for (int i = 0; i < 8; i++)
{
- palette_set_color(machine(), i, rgb_t((i & 1) ? 0xff : 0x00, (i & 2) ? 0xff : 0x00, (i & 4) ? 0xff : 0x00));
+ palette.set_pen_color(i, rgb_t((i & 1) ? 0xff : 0x00, (i & 2) ? 0xff : 0x00, (i & 4) ? 0xff : 0x00));
}
// scr
for (int i = 0; i < 8; i++)
{
- palette_set_color(machine(), 8 + 2 * i + 0, rgb_t::black);
- palette_set_color(machine(), 8 + 2 * i + 1, rgb_t((i & 1) ? 0xff : 0x00, (i & 2) ? 0xff : 0x00, (i & 4) ? 0xff : 0x00));
+ palette.set_pen_color(8 + 2 * i + 0, rgb_t::black);
+ palette.set_pen_color(8 + 2 * i + 1, rgb_t((i & 1) ? 0xff : 0x00, (i & 2) ? 0xff : 0x00, (i & 4) ? 0xff : 0x00));
}
// wave
- palette_set_color(machine(), 24, rgb_t::black);
- palette_set_color(machine(), 25, rgb_t(0x00, 0xff, 0xff)); // cyan
+ palette.set_pen_color(24, rgb_t::black);
+ palette.set_pen_color(25, rgb_t(0x00, 0xff, 0xff)); // cyan
}
TILE_GET_INFO_MEMBER(seabattl_state::get_bg_tile_info)
@@ -156,7 +156,7 @@ UINT32 seabattl_state::screen_update_seabattl(screen_device &screen, bitmap_ind1
{
for ( x = 0; x < 32; x++ )
{
- m_gfxdecode->gfx(2)->opaque(bitmap,cliprect, (y & 0x0f) + (((x & 0x0f) + ((screen.frame_number() & 0xe0) >> 4)) << 4), 0, 0, 0, x*8, y*8 );
+ m_gfxdecode->gfx(2)->opaque(m_palette,bitmap,cliprect, (y & 0x0f) + (((x & 0x0f) + ((screen.frame_number() & 0xe0) >> 4)) << 4), 0, 0, 0, x*8, y*8 );
}
}
}
@@ -180,7 +180,7 @@ UINT32 seabattl_state::screen_update_seabattl(screen_device &screen, bitmap_ind1
int x = ((offset & 0x0f) << 4) - ((m_objram[offset] & 0xf0) >> 4);
int y = (offset & 0xf0);
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, code, 0, 0, 0, x, y, 0);
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect, code, 0, 0, 0, x, y, 0);
}
}
@@ -545,7 +545,8 @@ static MACHINE_CONFIG_START( seabattl, seabattl_state )
MCFG_SCREEN_UPDATE_DRIVER(seabattl_state, screen_update_seabattl)
MCFG_GFXDECODE_ADD("gfxdecode", seabattl)
- MCFG_PALETTE_LENGTH(26)
+ MCFG_PALETTE_ADD("palette", 26)
+ MCFG_PALETTE_INIT_OWNER(seabattl_state, seabattl)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/segac2.c b/src/mame/drivers/segac2.c
index a9f71e4dba6..0f054fdf3e9 100644
--- a/src/mame/drivers/segac2.c
+++ b/src/mame/drivers/segac2.c
@@ -219,7 +219,7 @@ WRITE16_MEMBER(segac2_state::palette_w )
b = ((newword >> 7) & 0x1e) | ((newword >> 14) & 0x01);
/* set the color */
- palette_set_color_rgb(space.machine(), offset, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(offset, pal5bit(r), pal5bit(g), pal5bit(b));
// megadrive_vdp_palette_lookup[offset] = (b) | (g << 5) | (r << 10);
// megadrive_vdp_palette_lookup_sprite[offset] = (b) | (g << 5) | (r << 10);
@@ -227,13 +227,13 @@ WRITE16_MEMBER(segac2_state::palette_w )
tmpr = r >> 1;
tmpg = g >> 1;
tmpb = b >> 1;
- palette_set_color_rgb(space.machine(), offset + 0x800, pal5bit(tmpr), pal5bit(tmpg), pal5bit(tmpb));
+ m_palette->set_pen_color(offset + 0x800, pal5bit(tmpr), pal5bit(tmpg), pal5bit(tmpb));
// how is it calculated on c2?
tmpr = tmpr | 0x10;
tmpg = tmpg | 0x10;
tmpb = tmpb | 0x10;
- palette_set_color_rgb(space.machine(), offset + 0x1000, pal5bit(tmpr), pal5bit(tmpg), pal5bit(tmpb));
+ m_palette->set_pen_color(offset + 0x1000, pal5bit(tmpr), pal5bit(tmpg), pal5bit(tmpb));
}
@@ -1257,10 +1257,10 @@ VIDEO_START_MEMBER(segac2_state,segac2_new)
// and applies it's own external colour circuity
UINT32 segac2_state::screen_update_segac2_new(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- const pen_t *paldata = machine().pens;
+ const pen_t *paldata = m_palette->pens();
if (!m_segac2_enable_display)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
@@ -1376,7 +1376,7 @@ static MACHINE_CONFIG_START( segac, segac2_state )
MCFG_SCREEN_UPDATE_DRIVER(segac2_state, screen_update_segac2_new)
MCFG_SCREEN_VBLANK_DRIVER(segac2_state, screen_eof_megadriv )
- MCFG_PALETTE_LENGTH(2048*3)
+ MCFG_PALETTE_ADD("palette", 2048*3)
MCFG_VIDEO_START_OVERRIDE(segac2_state,segac2_new)
diff --git a/src/mame/drivers/segae.c b/src/mame/drivers/segae.c
index 6c119039057..8a5c134091d 100644
--- a/src/mame/drivers/segae.c
+++ b/src/mame/drivers/segae.c
@@ -992,8 +992,6 @@ static MACHINE_CONFIG_START( systeme, systeme_state )
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_DRIVER(systeme_state, screen_update_systeme)
- MCFG_PALETTE_LENGTH(SEGA315_5124_PALETTE_SIZE)
-
MCFG_SEGA315_5124_ADD("vdp1", _315_5124_1_intf)
MCFG_DEVICE_ADDRESS_MAP(AS_0, vdp1_map)
diff --git a/src/mame/drivers/segag80r.c b/src/mame/drivers/segag80r.c
index db5e2d0a8c8..4afe5703cbb 100644
--- a/src/mame/drivers/segag80r.c
+++ b/src/mame/drivers/segag80r.c
@@ -829,7 +829,7 @@ static MACHINE_CONFIG_START( g80r_base, segag80r_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", segag80r)
- MCFG_PALETTE_LENGTH(64)
+ MCFG_PALETTE_ADD("palette", 64)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
@@ -871,7 +871,8 @@ static MACHINE_CONFIG_DERIVED( spaceod, g80r_base )
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_SCREEN_MODIFY("screen")
MCFG_GFXDECODE_MODIFY("gfxdecode", spaceod)
- MCFG_PALETTE_LENGTH(64+64)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 64+64)
/* sound boards */
MCFG_FRAGMENT_ADD(spaceod_sound_board)
@@ -887,7 +888,8 @@ static MACHINE_CONFIG_DERIVED( monsterb, g80r_base )
/* background board changes */
MCFG_GFXDECODE_MODIFY("gfxdecode", monsterb)
- MCFG_PALETTE_LENGTH(64+64)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 64+64)
/* sound boards */
MCFG_FRAGMENT_ADD(monsterb_sound_board)
@@ -900,7 +902,8 @@ static MACHINE_CONFIG_DERIVED( pignewt, g80r_base )
/* background board changes */
MCFG_GFXDECODE_MODIFY("gfxdecode", monsterb)
- MCFG_PALETTE_LENGTH(64+64)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 64+64)
/* sound boards */
MCFG_SEGAUSB_ADD("usbsnd")
@@ -918,7 +921,8 @@ static MACHINE_CONFIG_DERIVED( sindbadm, g80r_base )
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", monsterb)
- MCFG_PALETTE_LENGTH(64+64)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 64+64)
/* sound boards */
diff --git a/src/mame/drivers/segahang.c b/src/mame/drivers/segahang.c
index 8c7940bd0c9..09d2fb7ef90 100644
--- a/src/mame/drivers/segahang.c
+++ b/src/mame/drivers/segahang.c
@@ -822,7 +822,7 @@ static MACHINE_CONFIG_START( shared_base, segahang_state )
// video hardware
MCFG_GFXDECODE_ADD("gfxdecode", segahang)
- MCFG_PALETTE_LENGTH(2048*3)
+ MCFG_PALETTE_ADD("palette", 2048*3)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK_25MHz/4, 400, 0, 320, 262, 0, 224)
diff --git a/src/mame/drivers/segajw.c b/src/mame/drivers/segajw.c
index b4056fecb17..3c83f432cb4 100644
--- a/src/mame/drivers/segajw.c
+++ b/src/mame/drivers/segajw.c
@@ -43,7 +43,6 @@ protected:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
};
@@ -81,10 +80,6 @@ void segajw_state::machine_reset()
{
}
-void segajw_state::palette_init()
-{
-}
-
static MACHINE_CONFIG_START( segajw, segajw_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",M68000,8000000) // unknown clock
@@ -99,7 +94,7 @@ static MACHINE_CONFIG_START( segajw, segajw_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/segald.c b/src/mame/drivers/segald.c
index 579c899e580..aef17cebbf5 100644
--- a/src/mame/drivers/segald.c
+++ b/src/mame/drivers/segald.c
@@ -77,7 +77,7 @@ void segald_state::astron_draw_characters(bitmap_rgb32 &bitmap,const rectangle &
for (characterY = 0; characterY < 32; characterY++)
{
int current_screen_character = (characterY*32) + characterX;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, m_fix_ram[current_screen_character],
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect, m_fix_ram[current_screen_character],
1, 0, 0, characterX*8, characterY*8, 0);
}
}
@@ -226,7 +226,7 @@ WRITE8_MEMBER(segald_state::astron_COLOR_write)
b = (highBits & 0x0f);
a = (highBits & 0x80) ? 0 : 255;
- palette_set_color(machine(), palIndex, rgb_t(a, r, g, b));
+ m_palette->set_pen_color(palIndex, rgb_t(a, r, g, b));
logerror("COLOR write : 0x%04x @ 0x%04x [0x%x]\n", data, offset, space.device().safe_pc());
}
@@ -379,7 +379,7 @@ static MACHINE_CONFIG_START( astron, segald_state )
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
MCFG_GFXDECODE_ADD("gfxdecode", segald)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardare */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/segaorun.c b/src/mame/drivers/segaorun.c
index ea4897c5368..03e225c5eaa 100644
--- a/src/mame/drivers/segaorun.c
+++ b/src/mame/drivers/segaorun.c
@@ -1204,7 +1204,7 @@ static MACHINE_CONFIG_START( outrun_base, segaorun_state )
// video hardware
MCFG_GFXDECODE_ADD("gfxdecode", segaorun)
- MCFG_PALETTE_LENGTH(4096*3)
+ MCFG_PALETTE_ADD("palette", 4096*3)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK_25MHz/4, 400, 0, 320, 262, 0, 224)
diff --git a/src/mame/drivers/segas16a.c b/src/mame/drivers/segas16a.c
index 4e0f6cab611..266b4aaca12 100644
--- a/src/mame/drivers/segas16a.c
+++ b/src/mame/drivers/segas16a.c
@@ -1925,7 +1925,7 @@ static MACHINE_CONFIG_START( system16a, segas16a_state )
MCFG_SEGAIC16VID_GFXDECODE("gfxdecode")
MCFG_GFXDECODE_ADD("gfxdecode", segas16a)
- MCFG_PALETTE_LENGTH(2048*3)
+ MCFG_PALETTE_ADD("palette", 2048*3)
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/segas16b.c b/src/mame/drivers/segas16b.c
index d216b6c9bf6..be69e347a03 100644
--- a/src/mame/drivers/segas16b.c
+++ b/src/mame/drivers/segas16b.c
@@ -3273,7 +3273,7 @@ static MACHINE_CONFIG_START( system16b, segas16b_state )
// video hardware
MCFG_GFXDECODE_ADD("gfxdecode", segas16b)
- MCFG_PALETTE_LENGTH(2048*3)
+ MCFG_PALETTE_ADD("palette", 2048*3)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK_25MHz/4, 400, 0, 320, 262, 0, 224)
diff --git a/src/mame/drivers/segas18.c b/src/mame/drivers/segas18.c
index 357ce0dcf07..426a833431b 100644
--- a/src/mame/drivers/segas18.c
+++ b/src/mame/drivers/segas18.c
@@ -1251,7 +1251,7 @@ static MACHINE_CONFIG_START( system18, segas18_state )
MCFG_SCREEN_UPDATE_DRIVER(segas18_state, screen_update)
MCFG_GFXDECODE_ADD("gfxdecode", segas18)
- MCFG_PALETTE_LENGTH(2048*3+2048 + 64*3)
+ MCFG_PALETTE_ADD("palette", 2048*3+2048 + 64*3)
MCFG_SEGA_SYS16B_SPRITES_ADD("sprites")
MCFG_SEGAIC16VID_ADD("segaic16vid")
diff --git a/src/mame/drivers/segas24.c b/src/mame/drivers/segas24.c
index 0f18a74de7b..13eecd9ba00 100644
--- a/src/mame/drivers/segas24.c
+++ b/src/mame/drivers/segas24.c
@@ -1106,7 +1106,7 @@ WRITE16_MEMBER( segas24_state::sys16_paletteram_w )
g |= g >> 5;
b |= b >> 5;
- palette_set_color(machine(), offset, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset, rgb_t(r, g, b));
if(data & 0x8000) {
r = 255-0.6*(255-r);
@@ -1117,7 +1117,7 @@ WRITE16_MEMBER( segas24_state::sys16_paletteram_w )
g = 0.6*g;
b = 0.6*b;
}
- palette_set_color(machine(), offset+machine().total_colors()/2, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset+m_palette->entries()/2, rgb_t(r, g, b));
}
@@ -1946,6 +1946,7 @@ static MACHINE_CONFIG_START( system24, segas24_state )
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_S24TILE_DEVICE_ADD("tile", 0xfff)
MCFG_S24TILE_DEVICE_GFXDECODE("gfxdecode")
+ MCFG_S24TILE_DEVICE_PALETTE("palette")
MCFG_S24SPRITE_DEVICE_ADD("sprite")
MCFG_S24MIXER_DEVICE_ADD("mixer")
@@ -1953,7 +1954,7 @@ static MACHINE_CONFIG_START( system24, segas24_state )
MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK/2, 656, 0/*+69*/, 496/*+69*/, 424, 0/*+25*/, 384/*+25*/)
MCFG_SCREEN_UPDATE_DRIVER(segas24_state, screen_update_system24)
- MCFG_PALETTE_LENGTH(8192*2)
+ MCFG_PALETTE_ADD("palette", 8192*2)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/segas32.c b/src/mame/drivers/segas32.c
index df97bc232aa..f9142692e67 100644
--- a/src/mame/drivers/segas32.c
+++ b/src/mame/drivers/segas32.c
@@ -2344,7 +2344,7 @@ static MACHINE_CONFIG_START( system32, segas32_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", segas32)
- MCFG_PALETTE_LENGTH(0x4000)
+ MCFG_PALETTE_ADD("palette", 0x4000)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -2401,7 +2401,7 @@ static MACHINE_CONFIG_START( multi32, segas32_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", segas32)
- MCFG_PALETTE_LENGTH(0x8000)
+ MCFG_PALETTE_ADD("palette", 0x8000)
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/segaxbd.c b/src/mame/drivers/segaxbd.c
index 54634cf1f0a..b4e0ffdea59 100644
--- a/src/mame/drivers/segaxbd.c
+++ b/src/mame/drivers/segaxbd.c
@@ -1557,7 +1557,7 @@ static MACHINE_CONFIG_START( xboard, segaxbd_state )
// video hardware
MCFG_GFXDECODE_ADD("gfxdecode", segaxbd)
- MCFG_PALETTE_LENGTH(8192*3)
+ MCFG_PALETTE_ADD("palette", 8192*3)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/8, 400, 0, 320, 262, 0, 224)
diff --git a/src/mame/drivers/segaybd.c b/src/mame/drivers/segaybd.c
index 2ee1c4da660..31b3d083970 100644
--- a/src/mame/drivers/segaybd.c
+++ b/src/mame/drivers/segaybd.c
@@ -1194,7 +1194,7 @@ static MACHINE_CONFIG_START( yboard, segaybd_state )
MCFG_SEGAIC16VID_ADD("segaic16vid")
MCFG_SEGAIC16VID_GFXDECODE("gfxdecode")
- MCFG_PALETTE_LENGTH(8192*3)
+ MCFG_PALETTE_ADD("palette", 8192*3)
// sound hardware
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/seibuspi.c b/src/mame/drivers/seibuspi.c
index 3b18e98c65b..aee062cc357 100644
--- a/src/mame/drivers/seibuspi.c
+++ b/src/mame/drivers/seibuspi.c
@@ -1846,8 +1846,8 @@ static MACHINE_CONFIG_START( spi, seibuspi_state )
MCFG_SCREEN_UPDATE_DRIVER(seibuspi_state, screen_update_spi)
MCFG_GFXDECODE_ADD("gfxdecode", spi)
- MCFG_PALETTE_LENGTH(6144)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, all_black)
+
+ MCFG_PALETTE_ADD_INIT_BLACK("palette", 6144)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -1944,8 +1944,8 @@ static MACHINE_CONFIG_START( sys386i, seibuspi_state )
MCFG_SCREEN_UPDATE_DRIVER(seibuspi_state, screen_update_spi)
MCFG_GFXDECODE_ADD("gfxdecode", spi)
- MCFG_PALETTE_LENGTH(6144)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, all_black)
+
+ MCFG_PALETTE_ADD_INIT_BLACK("palette", 6144)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1997,8 +1997,8 @@ static MACHINE_CONFIG_START( sys386f, seibuspi_state )
MCFG_SCREEN_UPDATE_DRIVER(seibuspi_state, screen_update_sys386f)
MCFG_GFXDECODE_ADD("gfxdecode", sys386f)
- MCFG_PALETTE_LENGTH(8192)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, all_black)
+
+ MCFG_PALETTE_ADD_INIT_BLACK("palette", 8192)
MCFG_VIDEO_START_OVERRIDE(seibuspi_state, sys386f)
diff --git a/src/mame/drivers/seicross.c b/src/mame/drivers/seicross.c
index 53a1fd5d934..1b6a68118e7 100644
--- a/src/mame/drivers/seicross.c
+++ b/src/mame/drivers/seicross.c
@@ -419,8 +419,8 @@ static MACHINE_CONFIG_START( nvram, seicross_state )
MCFG_SCREEN_UPDATE_DRIVER(seicross_state, screen_update_seicross)
MCFG_GFXDECODE_ADD("gfxdecode", seicross)
- MCFG_PALETTE_LENGTH(64)
-
+ MCFG_PALETTE_ADD("palette", 64)
+ MCFG_PALETTE_INIT_OWNER(seicross_state, seicross)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/sengokmj.c b/src/mame/drivers/sengokmj.c
index 7a172fba155..5d99042cfa3 100644
--- a/src/mame/drivers/sengokmj.c
+++ b/src/mame/drivers/sengokmj.c
@@ -271,11 +271,11 @@ void sengokmj_state::draw_sprites(running_machine &machine, bitmap_ind16 &bitmap
for (ax=0; ax<dx; ax++)
for (ay=0; ay<dy; ay++) {
if (!fx)
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
sprite++,
color,fx,fy,x+ax*16,y+ay*16,15);
else
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
sprite++,
color,fx,fy,x+(dx-1-ax)*16,y+ay*16,15);
}
@@ -296,7 +296,7 @@ void sengokmj_state::video_start()
UINT32 sengokmj_state::screen_update_sengokmj(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(screen.machine().pens[0x7ff], cliprect); //black pen
+ bitmap.fill(m_palette->pen(0x7ff), cliprect); //black pen
/* TODO: offsetted? */
m_sc0_tilemap->set_scrollx(0, (SEIBU_CRTC_SC0_SX + 128) & 0x1ff );
@@ -372,7 +372,7 @@ static ADDRESS_MAP_START( sengokmj_map, AS_PROGRAM, 16, sengokmj_state )
AM_RANGE(0x0c800, 0x0cfff) AM_RAM_WRITE(seibucrtc_sc1vram_w) AM_SHARE("sc1_vram")
AM_RANGE(0x0d000, 0x0d7ff) AM_RAM_WRITE(seibucrtc_sc2vram_w) AM_SHARE("sc2_vram")
AM_RANGE(0x0d800, 0x0e7ff) AM_RAM_WRITE(seibucrtc_sc3vram_w) AM_SHARE("sc3_vram")
- AM_RANGE(0x0e800, 0x0f7ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0e800, 0x0f7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0f800, 0x0ffff) AM_RAM AM_SHARE("sprite_ram")
AM_RANGE(0xc0000, 0xfffff) AM_ROM
ADDRESS_MAP_END
@@ -581,7 +581,8 @@ static MACHINE_CONFIG_START( sengokmj, sengokmj_state )
MCFG_SEIBU_CRTC_ADD("crtc",crtc_intf,0)
MCFG_GFXDECODE_ADD("gfxdecode", sengokmj)
- MCFG_PALETTE_LENGTH(0x800)
+ MCFG_PALETTE_ADD("palette", 0x800)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
SEIBU_SOUND_SYSTEM_YM3812_INTERFACE(14318180/4,1320000)
diff --git a/src/mame/drivers/senjyo.c b/src/mame/drivers/senjyo.c
index 28190a34cad..1d3e0c7323b 100644
--- a/src/mame/drivers/senjyo.c
+++ b/src/mame/drivers/senjyo.c
@@ -124,7 +124,7 @@ WRITE8_MEMBER(senjyo_state::senjyo_paletteram_w)
int bb = b|((b!=0)?i:0);
m_generic_paletteram_8[offset] = data;
- palette_set_color_rgb(machine(), offset, pal4bit(rr), pal4bit(gg), pal4bit(bb) );
+ m_palette->set_pen_color(offset, pal4bit(rr), pal4bit(gg), pal4bit(bb) );
}
static ADDRESS_MAP_START( senjyo_map, AS_PROGRAM, 8, senjyo_state )
@@ -574,8 +574,8 @@ static MACHINE_CONFIG_START( senjyo, senjyo_state )
MCFG_SCREEN_UPDATE_DRIVER(senjyo_state, screen_update_senjyo)
MCFG_GFXDECODE_ADD("gfxdecode", senjyo)
- MCFG_PALETTE_LENGTH(512+2) /* 512 real palette + 2 for the radar */
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, all_black)
+
+ MCFG_PALETTE_ADD_INIT_BLACK("palette", 512+2) /* 512 real palette + 2 for the radar */
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/seta.c b/src/mame/drivers/seta.c
index c3742b67355..e57d24ef651 100644
--- a/src/mame/drivers/seta.c
+++ b/src/mame/drivers/seta.c
@@ -7491,6 +7491,7 @@ static MACHINE_CONFIG_START( tndrcade, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -7501,7 +7502,7 @@ static MACHINE_CONFIG_START( tndrcade, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta_no_layers)
MCFG_GFXDECODE_ADD("gfxdecode", tndrcade)
- MCFG_PALETTE_LENGTH(512) /* sprites only */
+ MCFG_PALETTE_ADD("palette", 512) /* sprites only */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_no_layers)
@@ -7542,6 +7543,7 @@ static MACHINE_CONFIG_START( twineagl, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -7552,7 +7554,7 @@ static MACHINE_CONFIG_START( twineagl, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE_ADD("gfxdecode", downtown)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_VIDEO_START_OVERRIDE(seta_state,twineagl_1_layer)
@@ -7585,6 +7587,7 @@ static MACHINE_CONFIG_START( downtown, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -7595,7 +7598,7 @@ static MACHINE_CONFIG_START( downtown, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE_ADD("gfxdecode", downtown)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_1_layer)
@@ -7644,6 +7647,7 @@ static MACHINE_CONFIG_START( usclssic, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -7654,9 +7658,9 @@ static MACHINE_CONFIG_START( usclssic, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_usclssic)
MCFG_GFXDECODE_ADD("gfxdecode", usclssic)
- MCFG_PALETTE_LENGTH(16*32 + 64*32*2) /* sprites, layer */
+ MCFG_PALETTE_ADD("palette", 16*32 + 64*32*2) /* sprites, layer */
- MCFG_PALETTE_INIT_OVERRIDE(seta_state,usclssic) /* layer is 6 planes deep */
+ MCFG_PALETTE_INIT_OWNER(seta_state,usclssic) /* layer is 6 planes deep */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_1_layer)
/* sound hardware */
@@ -7694,6 +7698,7 @@ static MACHINE_CONFIG_START( calibr50, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -7704,7 +7709,7 @@ static MACHINE_CONFIG_START( calibr50, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE_ADD("gfxdecode", downtown)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_1_layer)
@@ -7735,6 +7740,7 @@ static MACHINE_CONFIG_START( metafox, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -7745,7 +7751,7 @@ static MACHINE_CONFIG_START( metafox, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE_ADD("gfxdecode", downtown)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_1_layer)
@@ -7772,6 +7778,7 @@ static MACHINE_CONFIG_START( atehate, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -7782,7 +7789,7 @@ static MACHINE_CONFIG_START( atehate, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta_no_layers)
MCFG_GFXDECODE_ADD("gfxdecode", tndrcade)
- MCFG_PALETTE_LENGTH(512) /* sprites only */
+ MCFG_PALETTE_ADD("palette", 512) /* sprites only */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_no_layers)
@@ -7815,6 +7822,7 @@ static MACHINE_CONFIG_START( blandia, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -7826,9 +7834,9 @@ static MACHINE_CONFIG_START( blandia, seta_state )
MCFG_SCREEN_VBLANK_DRIVER(seta_state, screen_eof_seta_buffer_sprites)
MCFG_GFXDECODE_ADD("gfxdecode", blandia)
- MCFG_PALETTE_LENGTH((16*32+64*32*4)*2) /* sprites, layer1, layer2, palette effect */
+ MCFG_PALETTE_ADD("palette", (16*32+64*32*4)*2) /* sprites, layer1, layer2, palette effect */
- MCFG_PALETTE_INIT_OVERRIDE(seta_state,blandia) /* layers 1&2 are 6 planes deep */
+ MCFG_PALETTE_INIT_OWNER(seta_state,blandia) /* layers 1&2 are 6 planes deep */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
/* sound hardware */
@@ -7849,6 +7857,7 @@ static MACHINE_CONFIG_START( blandiap, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -7860,9 +7869,9 @@ static MACHINE_CONFIG_START( blandiap, seta_state )
MCFG_SCREEN_VBLANK_DRIVER(seta_state, screen_eof_seta_buffer_sprites)
MCFG_GFXDECODE_ADD("gfxdecode", blandia)
- MCFG_PALETTE_LENGTH((16*32+64*32*4)*2) /* sprites, layer1, layer2, palette effect */
+ MCFG_PALETTE_ADD("palette", (16*32+64*32*4)*2) /* sprites, layer1, layer2, palette effect */
- MCFG_PALETTE_INIT_OVERRIDE(seta_state,blandia) /* layers 1&2 are 6 planes deep */
+ MCFG_PALETTE_INIT_OWNER(seta_state,blandia) /* layers 1&2 are 6 planes deep */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
/* sound hardware */
@@ -7888,6 +7897,7 @@ static MACHINE_CONFIG_START( blockcar, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -7898,7 +7908,7 @@ static MACHINE_CONFIG_START( blockcar, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta_no_layers)
MCFG_GFXDECODE_ADD("gfxdecode", tndrcade)
- MCFG_PALETTE_LENGTH(512) /* sprites only */
+ MCFG_PALETTE_ADD("palette", 512) /* sprites only */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_no_layers)
@@ -7961,6 +7971,7 @@ static MACHINE_CONFIG_START( daioh, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -7971,7 +7982,7 @@ static MACHINE_CONFIG_START( daioh, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE_ADD("gfxdecode", msgundam)
- MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer1, layer2 */
+ MCFG_PALETTE_ADD("palette", 512 * 3) /* sprites, layer1, layer2 */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
@@ -8003,6 +8014,7 @@ static MACHINE_CONFIG_START( drgnunit, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -8014,7 +8026,7 @@ static MACHINE_CONFIG_START( drgnunit, seta_state )
MCFG_SCREEN_VBLANK_DRIVER(seta_state, screen_eof_seta_buffer_sprites)
MCFG_GFXDECODE_ADD("gfxdecode", downtown)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_1_layer)
@@ -8039,6 +8051,7 @@ static MACHINE_CONFIG_START( qzkklgy2, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -8050,7 +8063,7 @@ static MACHINE_CONFIG_START( qzkklgy2, seta_state )
MCFG_SCREEN_VBLANK_DRIVER(seta_state, screen_eof_seta_buffer_sprites)
MCFG_GFXDECODE_ADD("gfxdecode", qzkklgy2)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_1_layer)
@@ -8088,6 +8101,7 @@ static MACHINE_CONFIG_START( setaroul, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
MCFG_NVRAM_ADD_RANDOM_FILL("nvram")
@@ -8101,8 +8115,8 @@ static MACHINE_CONFIG_START( setaroul, seta_state )
MCFG_SCREEN_VBLANK_DRIVER(seta_state, screen_eof_setaroul)
MCFG_GFXDECODE_ADD("gfxdecode", setaroul)
- MCFG_PALETTE_LENGTH(512)
- MCFG_PALETTE_INIT_OVERRIDE(seta_state,setaroul)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_INIT_OWNER(seta_state,setaroul)
MCFG_VIDEO_START_OVERRIDE(seta_state,setaroul_1_layer)
@@ -8129,6 +8143,7 @@ static MACHINE_CONFIG_START( eightfrc, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -8139,7 +8154,7 @@ static MACHINE_CONFIG_START( eightfrc, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE_ADD("gfxdecode", msgundam)
- MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer1, layer2 */
+ MCFG_PALETTE_ADD("palette", 512 * 3) /* sprites, layer1, layer2 */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
@@ -8171,6 +8186,7 @@ static MACHINE_CONFIG_START( extdwnhl, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -8181,9 +8197,9 @@ static MACHINE_CONFIG_START( extdwnhl, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE_ADD("gfxdecode", zingzip)
- MCFG_PALETTE_LENGTH(16*32+16*32+64*32*2) /* sprites, layer2, layer1 */
+ MCFG_PALETTE_ADD("palette", 16*32+16*32+64*32*2) /* sprites, layer2, layer1 */
- MCFG_PALETTE_INIT_OVERRIDE(seta_state,zingzip) /* layer 1 gfx is 6 planes deep */
+ MCFG_PALETTE_INIT_OWNER(seta_state,zingzip) /* layer 1 gfx is 6 planes deep */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
/* sound hardware */
@@ -8233,6 +8249,7 @@ static MACHINE_CONFIG_START( gundhara, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -8243,9 +8260,9 @@ static MACHINE_CONFIG_START( gundhara, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE_ADD("gfxdecode", jjsquawk)
- MCFG_PALETTE_LENGTH(16*32+64*32*4) /* sprites, layer2, layer1 */
+ MCFG_PALETTE_ADD("palette", 16*32+64*32*4) /* sprites, layer2, layer1 */
- MCFG_PALETTE_INIT_OVERRIDE(seta_state,gundhara) /* layers are 6 planes deep (seta_state,but have only 4 palettes) */
+ MCFG_PALETTE_INIT_OWNER(seta_state,gundhara) /* layers are 6 planes deep (seta_state,but have only 4 palettes) */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
/* sound hardware */
@@ -8275,6 +8292,7 @@ static MACHINE_CONFIG_START( jjsquawk, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -8285,9 +8303,9 @@ static MACHINE_CONFIG_START( jjsquawk, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE_ADD("gfxdecode", jjsquawk)
- MCFG_PALETTE_LENGTH(16*32+64*32*4) /* sprites, layer2, layer1 */
+ MCFG_PALETTE_ADD("palette", 16*32+64*32*4) /* sprites, layer2, layer1 */
- MCFG_PALETTE_INIT_OVERRIDE(seta_state,jjsquawk) /* layers are 6 planes deep */
+ MCFG_PALETTE_INIT_OWNER(seta_state,jjsquawk) /* layers are 6 planes deep */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
/* sound hardware */
@@ -8308,6 +8326,7 @@ static MACHINE_CONFIG_START( jjsquawb, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -8318,9 +8337,9 @@ static MACHINE_CONFIG_START( jjsquawb, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE_ADD("gfxdecode", jjsquawk)
- MCFG_PALETTE_LENGTH(16*32+64*32*4) /* sprites, layer2, layer1 */
+ MCFG_PALETTE_ADD("palette", 16*32+64*32*4) /* sprites, layer2, layer1 */
- MCFG_PALETTE_INIT_OVERRIDE(seta_state,jjsquawk) /* layers are 6 planes deep */
+ MCFG_PALETTE_INIT_OWNER(seta_state,jjsquawk) /* layers are 6 planes deep */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
/* sound hardware */
@@ -8350,6 +8369,7 @@ static MACHINE_CONFIG_START( kamenrid, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -8360,7 +8380,7 @@ static MACHINE_CONFIG_START( kamenrid, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE_ADD("gfxdecode", msgundam)
- MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer2, layer1 */
+ MCFG_PALETTE_ADD("palette", 512 * 3) /* sprites, layer2, layer1 */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
@@ -8388,6 +8408,7 @@ static MACHINE_CONFIG_START( orbs, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -8398,7 +8419,7 @@ static MACHINE_CONFIG_START( orbs, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta_no_layers)
MCFG_GFXDECODE_ADD("gfxdecode", orbs)
- MCFG_PALETTE_LENGTH(512) /* sprites only */
+ MCFG_PALETTE_ADD("palette", 512) /* sprites only */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_no_layers)
@@ -8427,6 +8448,7 @@ static MACHINE_CONFIG_START( keroppi, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -8437,7 +8459,7 @@ static MACHINE_CONFIG_START( keroppi, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta_no_layers)
MCFG_GFXDECODE_ADD("gfxdecode", orbs)
- MCFG_PALETTE_LENGTH(512) /* sprites only */
+ MCFG_PALETTE_ADD("palette", 512) /* sprites only */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_no_layers)
@@ -8464,6 +8486,7 @@ static MACHINE_CONFIG_START( krzybowl, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -8474,7 +8497,7 @@ static MACHINE_CONFIG_START( krzybowl, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta_no_layers)
MCFG_GFXDECODE_ADD("gfxdecode", tndrcade)
- MCFG_PALETTE_LENGTH(512) /* sprites only */
+ MCFG_PALETTE_ADD("palette", 512) /* sprites only */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_no_layers)
@@ -8506,6 +8529,7 @@ static MACHINE_CONFIG_START( madshark, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -8516,9 +8540,9 @@ static MACHINE_CONFIG_START( madshark, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE_ADD("gfxdecode", jjsquawk)
- MCFG_PALETTE_LENGTH(16*32+64*32*4) /* sprites, layer2, layer1 */
+ MCFG_PALETTE_ADD("palette", 16*32+64*32*4) /* sprites, layer2, layer1 */
- MCFG_PALETTE_INIT_OVERRIDE(seta_state,jjsquawk) /* layers are 6 planes deep */
+ MCFG_PALETTE_INIT_OWNER(seta_state,jjsquawk) /* layers are 6 planes deep */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
@@ -8549,6 +8573,7 @@ static MACHINE_CONFIG_START( magspeed, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -8559,7 +8584,7 @@ static MACHINE_CONFIG_START( magspeed, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE_ADD("gfxdecode", msgundam)
- MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer2, layer1 */
+ MCFG_PALETTE_ADD("palette", 512 * 3) /* sprites, layer2, layer1 */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
@@ -8596,6 +8621,7 @@ static MACHINE_CONFIG_START( msgundam, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -8607,7 +8633,7 @@ static MACHINE_CONFIG_START( msgundam, seta_state )
MCFG_SCREEN_VBLANK_DRIVER(seta_state, screen_eof_seta_buffer_sprites)
MCFG_GFXDECODE_ADD("gfxdecode", msgundam)
- MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer2, layer1 */
+ MCFG_PALETTE_ADD("palette", 512 * 3) /* sprites, layer2, layer1 */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
@@ -8635,6 +8661,7 @@ static MACHINE_CONFIG_START( oisipuzl, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -8645,7 +8672,7 @@ static MACHINE_CONFIG_START( oisipuzl, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE_ADD("gfxdecode", msgundam)
- MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer2, layer1 */
+ MCFG_PALETTE_ADD("palette", 512 * 3) /* sprites, layer2, layer1 */
MCFG_VIDEO_START_OVERRIDE(seta_state,oisipuzl_2_layers) // flip is inverted for the tilemaps
@@ -8673,6 +8700,7 @@ static MACHINE_CONFIG_START( triplfun, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -8683,7 +8711,7 @@ static MACHINE_CONFIG_START( triplfun, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE_ADD("gfxdecode", msgundam)
- MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer2, layer1 */
+ MCFG_PALETTE_ADD("palette", 512 * 3) /* sprites, layer2, layer1 */
MCFG_VIDEO_START_OVERRIDE(seta_state,oisipuzl_2_layers) // flip is inverted for the tilemaps
@@ -8709,6 +8737,7 @@ static MACHINE_CONFIG_START( kiwame, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -8719,7 +8748,7 @@ static MACHINE_CONFIG_START( kiwame, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta_no_layers)
MCFG_GFXDECODE_ADD("gfxdecode", tndrcade)
- MCFG_PALETTE_LENGTH(512) /* sprites only */
+ MCFG_PALETTE_ADD("palette", 512) /* sprites only */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_no_layers)
@@ -8749,6 +8778,7 @@ static MACHINE_CONFIG_START( rezon, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -8759,7 +8789,7 @@ static MACHINE_CONFIG_START( rezon, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE_ADD("gfxdecode", msgundam)
- MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer1, layer2 */
+ MCFG_PALETTE_ADD("palette", 512 * 3) /* sprites, layer1, layer2 */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
@@ -8789,6 +8819,7 @@ static MACHINE_CONFIG_START( thunderl, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -8799,7 +8830,7 @@ static MACHINE_CONFIG_START( thunderl, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta_no_layers)
MCFG_GFXDECODE_ADD("gfxdecode", tndrcade)
- MCFG_PALETTE_LENGTH(512) /* sprites only */
+ MCFG_PALETTE_ADD("palette", 512) /* sprites only */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_no_layers)
@@ -8861,6 +8892,7 @@ static MACHINE_CONFIG_START( wiggie, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -8871,7 +8903,7 @@ static MACHINE_CONFIG_START( wiggie, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta_no_layers)
MCFG_GFXDECODE_ADD("gfxdecode", wiggie)
- MCFG_PALETTE_LENGTH(512) /* sprites only */
+ MCFG_PALETTE_ADD("palette", 512) /* sprites only */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_no_layers)
@@ -8896,6 +8928,7 @@ static MACHINE_CONFIG_START( wits, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -8906,7 +8939,7 @@ static MACHINE_CONFIG_START( wits, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta_no_layers)
MCFG_GFXDECODE_ADD("gfxdecode", tndrcade)
- MCFG_PALETTE_LENGTH(512) /* sprites only */
+ MCFG_PALETTE_ADD("palette", 512) /* sprites only */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_no_layers)
@@ -8933,6 +8966,7 @@ static MACHINE_CONFIG_START( umanclub, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -8943,7 +8977,7 @@ static MACHINE_CONFIG_START( umanclub, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta_no_layers)
MCFG_GFXDECODE_ADD("gfxdecode", tndrcade)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_no_layers)
@@ -8974,6 +9008,7 @@ static MACHINE_CONFIG_START( utoukond, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -8984,7 +9019,7 @@ static MACHINE_CONFIG_START( utoukond, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE_ADD("gfxdecode", msgundam)
- MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer2, layer1 */
+ MCFG_PALETTE_ADD("palette", 512 * 3) /* sprites, layer2, layer1 */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
@@ -9024,6 +9059,7 @@ static MACHINE_CONFIG_START( wrofaero, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -9034,7 +9070,7 @@ static MACHINE_CONFIG_START( wrofaero, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE_ADD("gfxdecode", msgundam)
- MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer1, layer2 */
+ MCFG_PALETTE_ADD("palette", 512 * 3) /* sprites, layer1, layer2 */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
@@ -9068,6 +9104,7 @@ static MACHINE_CONFIG_START( zingzip, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -9078,9 +9115,9 @@ static MACHINE_CONFIG_START( zingzip, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE_ADD("gfxdecode", zingzip)
- MCFG_PALETTE_LENGTH(16*32+16*32+64*32*2) /* sprites, layer2, layer1 */
+ MCFG_PALETTE_ADD("palette", 16*32+16*32+64*32*2) /* sprites, layer2, layer1 */
- MCFG_PALETTE_INIT_OVERRIDE(seta_state,zingzip) /* layer 1 gfx is 6 planes deep */
+ MCFG_PALETTE_INIT_OWNER(seta_state,zingzip) /* layer 1 gfx is 6 planes deep */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
/* sound hardware */
@@ -9122,6 +9159,7 @@ static MACHINE_CONFIG_START( pairlove, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -9132,7 +9170,7 @@ static MACHINE_CONFIG_START( pairlove, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta_no_layers)
MCFG_GFXDECODE_ADD("gfxdecode", tndrcade)
- MCFG_PALETTE_LENGTH(2048) /* sprites only */
+ MCFG_PALETTE_ADD("palette", 2048) /* sprites only */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_no_layers)
@@ -9170,6 +9208,7 @@ static MACHINE_CONFIG_START( crazyfgt, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -9180,9 +9219,9 @@ static MACHINE_CONFIG_START( crazyfgt, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta)
MCFG_GFXDECODE_ADD("gfxdecode", crazyfgt)
- MCFG_PALETTE_LENGTH(16*32+64*32*4) /* sprites, layer1, layer2 */
+ MCFG_PALETTE_ADD("palette", 16*32+64*32*4) /* sprites, layer1, layer2 */
- MCFG_PALETTE_INIT_OVERRIDE(seta_state,gundhara) /* layers are 6 planes deep (seta_state,but have only 4 palettes) */
+ MCFG_PALETTE_INIT_OWNER(seta_state,gundhara) /* layers are 6 planes deep (seta_state,but have only 4 palettes) */
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_2_layers)
/* sound hardware */
@@ -9235,6 +9274,7 @@ static MACHINE_CONFIG_START( inttoote, seta_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -9245,9 +9285,9 @@ static MACHINE_CONFIG_START( inttoote, seta_state )
MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_inttoote)
MCFG_GFXDECODE_ADD("gfxdecode", inttoote)
- MCFG_PALETTE_LENGTH(512 * 1)
+ MCFG_PALETTE_ADD("palette", 512 * 1)
- MCFG_PALETTE_INIT_OVERRIDE(seta_state,inttoote)
+ MCFG_PALETTE_INIT_OWNER(seta_state,inttoote)
MCFG_VIDEO_START_OVERRIDE(seta_state,seta_1_layer)
/* sound hardware */
diff --git a/src/mame/drivers/seta2.c b/src/mame/drivers/seta2.c
index 6b851644b68..8ee543529e9 100644
--- a/src/mame/drivers/seta2.c
+++ b/src/mame/drivers/seta2.c
@@ -168,7 +168,7 @@ static ADDRESS_MAP_START( grdians_map, AS_PROGRAM, 16, seta2_state )
AM_RANGE(0x800000, 0x800001) AM_WRITE(grdians_lockout_w)
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0xc50000, 0xc5ffff) AM_RAM // cleared
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs") // Video Registers
AM_RANGE(0xe00010, 0xe0001f) AM_WRITE(seta2_sound_bank_w) // Samples Banks
@@ -206,7 +206,7 @@ static ADDRESS_MAP_START( gundamex_map, AS_PROGRAM, 16, seta2_state )
AM_RANGE(0x800000, 0x800001) AM_WRITE(grdians_lockout_w)
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0xc50000, 0xc5ffff) AM_RAM // cleared
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs") // Video Registers
AM_RANGE(0xe00010, 0xe0001f) AM_WRITE(seta2_sound_bank_w) // Samples Banks
@@ -264,7 +264,7 @@ static ADDRESS_MAP_START( mj4simai_map, AS_PROGRAM, 16, seta2_state )
AM_RANGE(0x600300, 0x60030f) AM_WRITE(seta2_sound_bank_w) // Samples Banks
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs") // Video Registers
AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
ADDRESS_MAP_END
@@ -287,7 +287,7 @@ static ADDRESS_MAP_START( myangel_map, AS_PROGRAM, 16, seta2_state )
AM_RANGE(0x700310, 0x70031f) AM_WRITE(seta2_sound_bank_w) // Samples Banks
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs") // Video Registers
AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
ADDRESS_MAP_END
@@ -310,7 +310,7 @@ static ADDRESS_MAP_START( myangel2_map, AS_PROGRAM, 16, seta2_state )
AM_RANGE(0x600300, 0x60030f) AM_WRITE(seta2_sound_bank_w) // Samples Banks
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
AM_RANGE(0xd00000, 0xd3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0xd40000, 0xd4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0xd40000, 0xd4ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0xd60000, 0xd6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs") // Video Registers
AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
ADDRESS_MAP_END
@@ -354,7 +354,7 @@ static ADDRESS_MAP_START( pzlbowl_map, AS_PROGRAM, 16, seta2_state )
AM_RANGE(0x500006, 0x500007) AM_READ(watchdog_reset16_r) // Watchdog
AM_RANGE(0x700000, 0x700001) AM_READ(pzlbowl_protection_r) // Protection
AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0x840000, 0x84ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x840000, 0x84ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x860000, 0x86003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs") // Video Registers
AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
@@ -380,7 +380,7 @@ static ADDRESS_MAP_START( penbros_map, AS_PROGRAM, 16, seta2_state )
AM_RANGE(0x600006, 0x600007) AM_READ(watchdog_reset16_r) // Watchdog
//AM_RANGE(0x700000, 0x700001) AM_READ(pzlbowl_protection_r) // Protection
AM_RANGE(0xb00000, 0xb3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0xb40000, 0xb4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0xb40000, 0xb4ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0xb60000, 0xb6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs")
AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
@@ -439,7 +439,7 @@ static ADDRESS_MAP_START( reelquak_map, AS_PROGRAM, 16, seta2_state )
AM_RANGE(0x400300, 0x40030f) AM_WRITE(seta2_sound_bank_w) // Samples Banks
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs") // Video Registers
AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
ADDRESS_MAP_END
@@ -495,7 +495,7 @@ static ADDRESS_MAP_START( samshoot_map, AS_PROGRAM, 16, seta2_state )
AM_RANGE( 0x700006, 0x700007 ) AM_READ(watchdog_reset16_r ) // Watchdog?
AM_RANGE( 0x800000, 0x83ffff ) AM_RAM AM_SHARE("spriteram") // Sprites
- AM_RANGE( 0x840000, 0x84ffff ) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE( 0x840000, 0x84ffff ) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE( 0x860000, 0x86003f ) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs") // Video Registers
AM_RANGE( 0x900000, 0x903fff ) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
@@ -581,7 +581,7 @@ static ADDRESS_MAP_START( funcube_map, AS_PROGRAM, 32, seta2_state )
AM_RANGE( 0x00500000, 0x00500003 ) AM_READWRITE(oki_read, oki_write)
AM_RANGE( 0x00800000, 0x0083ffff ) AM_READWRITE16(spriteram16_word_r, spriteram16_word_w, 0xffffffff ) AM_SHARE("spriteram")
- AM_RANGE( 0x00840000, 0x0084ffff ) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_dword_be_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE( 0x00840000, 0x0084ffff ) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE( 0x00860000, 0x0086003f ) AM_WRITE16(seta2_vregs_w, 0xffffffff ) AM_SHARE("vregs")
AM_RANGE( 0x00c00000, 0x00c002ff ) AM_READWRITE(funcube_nvram_dword_r, funcube_nvram_dword_w )
@@ -600,7 +600,7 @@ static ADDRESS_MAP_START( funcube2_map, AS_PROGRAM, 32, seta2_state )
AM_RANGE( 0x00600000, 0x00600003 ) AM_READWRITE(oki_read, oki_write)
AM_RANGE( 0x00800000, 0x0083ffff ) AM_READWRITE16(spriteram16_word_r, spriteram16_word_w, 0xffffffff ) AM_SHARE("spriteram")
- AM_RANGE( 0x00840000, 0x0084ffff ) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_dword_be_w) AM_SHARE("paletteram")
+ AM_RANGE( 0x00840000, 0x0084ffff ) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE( 0x00860000, 0x0086003f ) AM_WRITE16(seta2_vregs_w, 0xffffffff ) AM_SHARE("vregs")
AM_RANGE( 0x00c00000, 0x00c002ff ) AM_READWRITE(funcube_nvram_dword_r, funcube_nvram_dword_w )
@@ -2029,7 +2029,8 @@ static MACHINE_CONFIG_START( seta2, seta2_state )
MCFG_SCREEN_VBLANK_DRIVER(seta2_state, screen_eof_seta2)
MCFG_GFXDECODE_ADD("gfxdecode", seta2)
- MCFG_PALETTE_LENGTH(0x8000+0xf0) // extra 0xf0 because we might draw 256-color object with 16-color granularity
+ MCFG_PALETTE_ADD("palette", 0x8000+0xf0) // extra 0xf0 because we might draw 256-color object with 16-color granularity
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(seta2_state,seta2)
@@ -2229,7 +2230,8 @@ static MACHINE_CONFIG_START( funcube, seta2_state )
MCFG_SCREEN_VBLANK_DRIVER(seta2_state, screen_eof_seta2)
MCFG_GFXDECODE_ADD("gfxdecode", funcube)
- MCFG_PALETTE_LENGTH(0x8000+0xf0) // extra 0xf0 because we might draw 256-color object with 16-color granularity
+ MCFG_PALETTE_ADD("palette", 0x8000+0xf0) // extra 0xf0 because we might draw 256-color object with 16-color granularity
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(seta2_state,seta2)
@@ -2280,7 +2282,8 @@ static MACHINE_CONFIG_START( namcostr, seta2_state )
MCFG_SCREEN_VBLANK_DRIVER(seta2_state, screen_eof_seta2)
MCFG_GFXDECODE_ADD("gfxdecode", funcube)
- MCFG_PALETTE_LENGTH(0x8000+0xf0) // extra 0xf0 because we might draw 256-color object with 16-color granularity
+ MCFG_PALETTE_ADD("palette", 0x8000+0xf0) // extra 0xf0 because we might draw 256-color object with 16-color granularity
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(seta2_state,seta2)
diff --git a/src/mame/drivers/sf.c b/src/mame/drivers/sf.c
index f2ca8507cdd..c9d2294f0cc 100644
--- a/src/mame/drivers/sf.c
+++ b/src/mame/drivers/sf.c
@@ -198,7 +198,7 @@ WRITE8_MEMBER(sf_state::msm2_5205_w)
static ADDRESS_MAP_START( sf_map, AS_PROGRAM, 16, sf_state )
AM_RANGE(0x000000, 0x04ffff) AM_ROM
AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE(sf_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xb00000, 0xb007ff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xb00000, 0xb007ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("COINS")
AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN0")
AM_RANGE(0xc00004, 0xc00005) AM_READ(button1_r)
@@ -220,7 +220,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sfus_map, AS_PROGRAM, 16, sf_state )
AM_RANGE(0x000000, 0x04ffff) AM_ROM
AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE(sf_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xb00000, 0xb007ff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xb00000, 0xb007ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0")
AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1")
AM_RANGE(0xc00004, 0xc00005) AM_READ(dummy_r)
@@ -242,7 +242,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sfjp_map, AS_PROGRAM, 16, sf_state )
AM_RANGE(0x000000, 0x04ffff) AM_ROM
AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE(sf_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xb00000, 0xb007ff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xb00000, 0xb007ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("COINS")
AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("P1")
AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("P2")
@@ -841,8 +841,9 @@ static MACHINE_CONFIG_START( sf, sf_state )
MCFG_SCREEN_UPDATE_DRIVER(sf_state, screen_update_sf)
MCFG_GFXDECODE_ADD("gfxdecode", sf)
- MCFG_PALETTE_LENGTH(1024)
-
+
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/sfbonus.c b/src/mame/drivers/sfbonus.c
index b0c6a1b388c..cd782cecf93 100644
--- a/src/mame/drivers/sfbonus.c
+++ b/src/mame/drivers/sfbonus.c
@@ -1076,8 +1076,8 @@ UINT32 sfbonus_state::screen_update_sfbonus(screen_device &screen, bitmap_ind16
globalyscroll += 8;
globalxscroll += 8;
- bitmap.fill(machine().pens[0], cliprect);
- m_temp_reel_bitmap->fill(machine().pens[0], cliprect);
+ bitmap.fill(m_palette->pen(0), cliprect);
+ m_temp_reel_bitmap->fill(m_palette->pen(0), cliprect);
/* render reels to bitmap */
sfbonus_draw_reel_layer(screen,*m_temp_reel_bitmap,cliprect,0);
@@ -1377,9 +1377,9 @@ static MACHINE_CONFIG_START( sfbonus, sfbonus_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 512-1, 0*8, 288-1)
MCFG_SCREEN_UPDATE_DRIVER(sfbonus_state, screen_update_sfbonus)
- MCFG_PALETTE_LENGTH(0x100*2) // *2 for priority workaraound / custom drawing
+ MCFG_PALETTE_ADD("palette", 0x100*2) // *2 for priority workaraound / custom drawing
- MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map)
+ MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
/* Parrot 3 seems fine at 1 Mhz, but Double Challenge isn't? */
diff --git a/src/mame/drivers/sfkick.c b/src/mame/drivers/sfkick.c
index d0df5d98486..9e7d6f8f5a8 100644
--- a/src/mame/drivers/sfkick.c
+++ b/src/mame/drivers/sfkick.c
@@ -496,7 +496,7 @@ static MACHINE_CONFIG_START( sfkick, sfkick_state )
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_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_I8255A_ADD( "ppi8255", ppi8255_intf )
diff --git a/src/mame/drivers/shadfrce.c b/src/mame/drivers/shadfrce.c
index b4e65e1278f..143b1ca244c 100644
--- a/src/mame/drivers/shadfrce.c
+++ b/src/mame/drivers/shadfrce.c
@@ -271,7 +271,7 @@ WRITE16_MEMBER(shadfrce_state::shadfrce_sound_brt_w)
double brt = (data & 0xff) / 255.0;
for (i = 0; i < 0x4000; i++)
- palette_set_pen_contrast(machine(), i, brt);
+ m_palette->set_pen_contrast(i, brt);
}
}
@@ -366,7 +366,7 @@ static ADDRESS_MAP_START( shadfrce_map, AS_PROGRAM, 16, shadfrce_state )
AM_RANGE(0x102800, 0x103fff) AM_RAM
AM_RANGE(0x140000, 0x141fff) AM_RAM_WRITE(shadfrce_fgvideoram_w) AM_SHARE("fgvideoram")
AM_RANGE(0x142000, 0x143fff) AM_RAM AM_SHARE("spvideoram") /* sprites */
- AM_RANGE(0x180000, 0x187fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x180000, 0x187fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x1c0000, 0x1c0001) AM_WRITE(shadfrce_bg0scrollx_w) /* SCROLL X */
AM_RANGE(0x1c0002, 0x1c0003) AM_WRITE(shadfrce_bg0scrolly_w) /* SCROLL Y */
AM_RANGE(0x1c0004, 0x1c0005) AM_WRITE(shadfrce_bg1scrollx_w) /* SCROLL X */
@@ -555,8 +555,8 @@ static MACHINE_CONFIG_START( shadfrce, shadfrce_state )
MCFG_SCREEN_VBLANK_DRIVER(shadfrce_state, screen_eof_shadfrce)
MCFG_GFXDECODE_ADD("gfxdecode", shadfrce)
- MCFG_PALETTE_LENGTH(0x4000)
-
+ MCFG_PALETTE_ADD("palette", 0x4000)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/shangha3.c b/src/mame/drivers/shangha3.c
index bf5240718a0..442490626e0 100644
--- a/src/mame/drivers/shangha3.c
+++ b/src/mame/drivers/shangha3.c
@@ -127,7 +127,7 @@ WRITE16_MEMBER(shangha3_state::shangha3_irq_ack_w)
static ADDRESS_MAP_START( shangha3_map, AS_PROGRAM, 16, shangha3_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(paletteram_RRRRRGGGGGBBBBBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x100000, 0x100fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x200000, 0x200001) AM_READ_PORT("INPUTS")
AM_RANGE(0x200002, 0x200003) AM_READ_PORT("SYSTEM")
AM_RANGE(0x200008, 0x200009) AM_WRITE(shangha3_blitter_go_w)
@@ -145,7 +145,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( heberpop_map, AS_PROGRAM, 16, shangha3_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(paletteram_RRRRRGGGGGBBBBBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x100000, 0x100fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x200000, 0x200001) AM_READ_PORT("INPUTS")
AM_RANGE(0x200002, 0x200003) AM_READ_PORT("SYSTEM")
AM_RANGE(0x200004, 0x200005) AM_READ_PORT("DSW")
@@ -168,7 +168,7 @@ static ADDRESS_MAP_START( blocken_map, AS_PROGRAM, 16, shangha3_state )
AM_RANGE(0x10000a, 0x10000b) AM_READNOP AM_WRITE(shangha3_irq_ack_w) // r -> unknown purpose (value doesn't matter, left-over?)
AM_RANGE(0x10000c, 0x10000d) AM_WRITE(blocken_coinctrl_w)
AM_RANGE(0x10000e, 0x10000f) AM_WRITE(heberpop_sound_command_w)
- AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(paletteram_RRRRRGGGGGBBBBBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("ram") /* gfx & work ram */
AM_RANGE(0x340000, 0x340001) AM_WRITE(shangha3_flipscreen_w)
AM_RANGE(0x360000, 0x360001) AM_WRITE(shangha3_gfxlist_addr_w)
@@ -478,8 +478,6 @@ static MACHINE_CONFIG_START( shangha3, shangha3_state )
MCFG_CPU_VBLANK_INT_DRIVER("screen", shangha3_state, irq4_line_assert)
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
// MCFG_SCREEN_REFRESH_RATE(60)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
@@ -490,8 +488,10 @@ static MACHINE_CONFIG_START( shangha3, shangha3_state )
MCFG_SCREEN_UPDATE_DRIVER(shangha3_state, screen_update_shangha3)
MCFG_GFXDECODE_ADD("gfxdecode", shangha3)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(RRRRRGGGGGBBBBBx)
+ MCFG_PALETTE_ENABLE_SHADOWS()
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -517,8 +517,6 @@ static MACHINE_CONFIG_START( heberpop, shangha3_state )
MCFG_CPU_IO_MAP(heberpop_sound_io_map) /* NMI triggered by YM3438 */
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
// MCFG_SCREEN_REFRESH_RATE(60)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
@@ -529,8 +527,10 @@ static MACHINE_CONFIG_START( heberpop, shangha3_state )
MCFG_SCREEN_UPDATE_DRIVER(shangha3_state, screen_update_shangha3)
MCFG_GFXDECODE_ADD("gfxdecode", shangha3)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(RRRRRGGGGGBBBBBx)
+ MCFG_PALETTE_ENABLE_SHADOWS()
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -557,8 +557,6 @@ static MACHINE_CONFIG_START( blocken, shangha3_state )
MCFG_CPU_IO_MAP(heberpop_sound_io_map) /* NMI triggered by YM3438 */
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
// MCFG_SCREEN_REFRESH_RATE(60)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
@@ -569,8 +567,10 @@ static MACHINE_CONFIG_START( blocken, shangha3_state )
MCFG_SCREEN_UPDATE_DRIVER(shangha3_state, screen_update_shangha3)
MCFG_GFXDECODE_ADD("gfxdecode", shangha3)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(RRRRRGGGGGBBBBBx)
+ MCFG_PALETTE_ENABLE_SHADOWS()
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/shanghai.c b/src/mame/drivers/shanghai.c
index 97bc97fc1a5..0916a2922bb 100644
--- a/src/mame/drivers/shanghai.c
+++ b/src/mame/drivers/shanghai.c
@@ -52,7 +52,7 @@ PALETTE_INIT_MEMBER(shanghai_state,shanghai)
int i;
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int bit0,bit1,bit2,r,g,b;
@@ -73,7 +73,7 @@ PALETTE_INIT_MEMBER(shanghai_state,shanghai)
bit2 = (i >> 1) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
}
@@ -150,7 +150,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( shangha2_map, AS_PROGRAM, 16, shanghai_state )
AM_RANGE(0x00000, 0x03fff) AM_RAM
- AM_RANGE(0x04000, 0x041ff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x04000, 0x041ff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x80000, 0xfffff) AM_ROM
ADDRESS_MAP_END
@@ -189,7 +189,7 @@ static ADDRESS_MAP_START( kothello_map, AS_PROGRAM, 16, shanghai_state )
AM_RANGE(0x09012, 0x09013) AM_READ_PORT("P2")
AM_RANGE(0x09014, 0x09015) AM_READ_PORT("SYSTEM")
AM_RANGE(0x09016, 0x0901f) AM_WRITENOP // 0x9016 is set to 0 at the boot
- AM_RANGE(0x0a000, 0x0a1ff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0a000, 0x0a1ff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0b010, 0x0b01f) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, main_word_r, main_word_w)
AM_RANGE(0x80000, 0xfffff) AM_ROM
ADDRESS_MAP_END
@@ -453,9 +453,9 @@ static MACHINE_CONFIG_START( shanghai, shanghai_state )
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 280-1) // Base Screen is 384 pixel
MCFG_SCREEN_UPDATE_DRIVER(shanghai_state, screen_update_shanghai)
- MCFG_PALETTE_LENGTH(256)
-
- MCFG_PALETTE_INIT_OVERRIDE(shanghai_state,shanghai)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
+ MCFG_PALETTE_INIT_OWNER(shanghai_state,shanghai)
MCFG_HD63484_ADD("hd63484", shanghai_hd63484_intf)
@@ -486,8 +486,8 @@ static MACHINE_CONFIG_START( shangha2, shanghai_state )
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 280-1) // Base Screen is 384 pixel
MCFG_SCREEN_UPDATE_DRIVER(shanghai_state, screen_update_shanghai)
- MCFG_PALETTE_LENGTH(256)
-
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_HD63484_ADD("hd63484", shanghai_hd63484_intf)
@@ -521,8 +521,8 @@ static MACHINE_CONFIG_START( kothello, shanghai_state )
MCFG_SCREEN_VISIBLE_AREA(8, 384-1, 0, 250-1) // Base Screen is 376 pixel
MCFG_SCREEN_UPDATE_DRIVER(shanghai_state, screen_update_shanghai)
- MCFG_PALETTE_LENGTH(256)
-
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_HD63484_ADD("hd63484", shanghai_hd63484_intf)
diff --git a/src/mame/drivers/shangkid.c b/src/mame/drivers/shangkid.c
index 82cea41bb34..2d519eea86a 100644
--- a/src/mame/drivers/shangkid.c
+++ b/src/mame/drivers/shangkid.c
@@ -387,9 +387,7 @@ static MACHINE_CONFIG_START( chinhero, shangkid_state )
MCFG_SCREEN_UPDATE_DRIVER(shangkid_state, screen_update_shangkid)
MCFG_GFXDECODE_ADD("gfxdecode", chinhero)
- MCFG_PALETTE_LENGTH(256)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
MCFG_VIDEO_START_OVERRIDE(shangkid_state,shangkid)
/* sound hardware */
@@ -466,9 +464,9 @@ static MACHINE_CONFIG_START( dynamski, shangkid_state )
MCFG_SCREEN_UPDATE_DRIVER(shangkid_state, screen_update_dynamski)
MCFG_GFXDECODE_ADD("gfxdecode", dynamski)
- MCFG_PALETTE_LENGTH(16*4+16*4)
+ MCFG_PALETTE_ADD("palette", 16*4+16*4)
- MCFG_PALETTE_INIT_OVERRIDE(shangkid_state,dynamski)
+ MCFG_PALETTE_INIT_OWNER(shangkid_state,dynamski)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/shaolins.c b/src/mame/drivers/shaolins.c
index ccfc234fc65..7efc4dc4aff 100644
--- a/src/mame/drivers/shaolins.c
+++ b/src/mame/drivers/shaolins.c
@@ -201,8 +201,8 @@ static MACHINE_CONFIG_START( shaolins, shaolins_state )
MCFG_SCREEN_UPDATE_DRIVER(shaolins_state, screen_update_shaolins)
MCFG_GFXDECODE_ADD("gfxdecode", shaolins)
- MCFG_PALETTE_LENGTH(16*8*16+16*8*16)
-
+ MCFG_PALETTE_ADD("palette", 16*8*16+16*8*16)
+ MCFG_PALETTE_INIT_OWNER(shaolins_state, shaolins)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/shisen.c b/src/mame/drivers/shisen.c
index aebbb47823b..1c135de0331 100644
--- a/src/mame/drivers/shisen.c
+++ b/src/mame/drivers/shisen.c
@@ -223,7 +223,7 @@ static MACHINE_CONFIG_START( shisen, shisen_state )
MCFG_SCREEN_UPDATE_DRIVER(shisen_state, screen_update_sichuan2)
MCFG_GFXDECODE_ADD("gfxdecode", shisen)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
diff --git a/src/mame/drivers/shootout.c b/src/mame/drivers/shootout.c
index 85bc4d77f00..f1e073ec494 100644
--- a/src/mame/drivers/shootout.c
+++ b/src/mame/drivers/shootout.c
@@ -274,8 +274,8 @@ static MACHINE_CONFIG_START( shootout, shootout_state )
MCFG_SCREEN_UPDATE_DRIVER(shootout_state, screen_update_shootout)
MCFG_GFXDECODE_ADD("gfxdecode", shootout)
- MCFG_PALETTE_LENGTH(256)
-
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(shootout_state, shootout)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -302,8 +302,8 @@ static MACHINE_CONFIG_START( shootouj, shootout_state )
MCFG_SCREEN_UPDATE_DRIVER(shootout_state, screen_update_shootouj)
MCFG_GFXDECODE_ADD("gfxdecode", shootout)
- MCFG_PALETTE_LENGTH(256)
-
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(shootout_state, shootout)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/shougi.c b/src/mame/drivers/shougi.c
index e3df87616e6..ee1f67d7d43 100644
--- a/src/mame/drivers/shougi.c
+++ b/src/mame/drivers/shougi.c
@@ -113,7 +113,7 @@ public:
DECLARE_WRITE8_MEMBER(nmi_disable_and_clear_line_w);
DECLARE_WRITE8_MEMBER(nmi_enable_w);
DECLARE_READ8_MEMBER(dummy_r);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(shougi);
UINT32 screen_update_shougi(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(shougi_vblank_nmi);
required_device<cpu_device> m_maincpu;
@@ -140,7 +140,7 @@ public:
***************************************************************************/
-void shougi_state::palette_init()
+PALETTE_INIT_MEMBER(shougi_state, shougi)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -154,7 +154,7 @@ void shougi_state::palette_init()
3, resistances_rg, weights_g, 1000, 0,
2, resistances_b, weights_b, 1000, 0);
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int bit0,bit1,bit2,r,g,b;
@@ -175,7 +175,7 @@ void shougi_state::palette_init()
bit1 = (color_prom[i] >> 7) & 0x01;
b = combine_2_weights(weights_b, bit0, bit1);
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
}
@@ -430,8 +430,8 @@ static MACHINE_CONFIG_START( shougi, shougi_state )
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 255)
MCFG_SCREEN_UPDATE_DRIVER(shougi_state, screen_update_shougi)
- MCFG_PALETTE_LENGTH(32)
-
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(shougi_state, shougi)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/shtzone.c b/src/mame/drivers/shtzone.c
index 9ebe02db017..f658cf4ca40 100644
--- a/src/mame/drivers/shtzone.c
+++ b/src/mame/drivers/shtzone.c
@@ -107,7 +107,7 @@ static MACHINE_CONFIG_START( shtzone, shtzone_state )
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(shtzone_state, screen_update_shtzone)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/shuuz.c b/src/mame/drivers/shuuz.c
index 661b8a6e889..021774ff0be 100644
--- a/src/mame/drivers/shuuz.c
+++ b/src/mame/drivers/shuuz.c
@@ -234,7 +234,7 @@ static MACHINE_CONFIG_START( shuuz, shuuz_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", shuuz)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
MCFG_ATARI_VAD_ADD("vad", "screen", WRITELINE(atarigen_state, scanline_int_write_line))
MCFG_ATARI_VAD_PLAYFIELD(shuuz_state, get_playfield_tile_info)
diff --git a/src/mame/drivers/sidearms.c b/src/mame/drivers/sidearms.c
index 1a8f7c579aa..0a650788389 100644
--- a/src/mame/drivers/sidearms.c
+++ b/src/mame/drivers/sidearms.c
@@ -71,8 +71,8 @@ READ8_MEMBER(sidearms_state::turtship_ports_r)
static ADDRESS_MAP_START( sidearms_map, AS_PROGRAM, 8, sidearms_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_byte_split_lo_w) AM_SHARE("paletteram")
- AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_byte_split_hi_w) AM_SHARE("paletteram2")
+ AM_RANGE(0xc000, 0xc3ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0xc400, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0xc800, 0xc800) AM_READ_PORT("SYSTEM") AM_WRITE(soundlatch_byte_w)
AM_RANGE(0xc801, 0xc801) AM_READ_PORT("P1") AM_WRITE(sidearms_bankswitch_w)
AM_RANGE(0xc802, 0xc802) AM_READ_PORT("P2") AM_WRITE(watchdog_reset_w)
@@ -94,8 +94,8 @@ static ADDRESS_MAP_START( turtship_map, AS_PROGRAM, 8, sidearms_state )
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
AM_RANGE(0xc000, 0xcfff) AM_RAM
AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_byte_split_lo_w) AM_SHARE("paletteram")
- AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_byte_split_hi_w) AM_SHARE("paletteram2")
+ AM_RANGE(0xc000, 0xc3ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0xc400, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0xe800, 0xe807) AM_READ(turtship_ports_r)
AM_RANGE(0xe800, 0xe800) AM_WRITE(soundlatch_byte_w)
AM_RANGE(0xe801, 0xe801) AM_WRITE(sidearms_bankswitch_w)
@@ -141,8 +141,8 @@ WRITE8_MEMBER(sidearms_state::whizz_bankswitch_w)
static ADDRESS_MAP_START( whizz_map, AS_PROGRAM, 8, sidearms_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_byte_split_lo_w) AM_SHARE("paletteram")
- AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_byte_split_hi_w) AM_SHARE("paletteram2")
+ AM_RANGE(0xc000, 0xc3ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0xc400, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0xc800, 0xc800) AM_READ_PORT("DSW0") AM_WRITE(soundlatch_byte_w)
AM_RANGE(0xc801, 0xc801) AM_READ_PORT("DSW1") AM_WRITE(whizz_bankswitch_w)
AM_RANGE(0xc802, 0xc802) AM_READ_PORT("DSW2") AM_WRITE(watchdog_reset_w)
@@ -623,8 +623,9 @@ static MACHINE_CONFIG_START( sidearms, sidearms_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", sidearms)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBRRRRGGGG)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -667,7 +668,9 @@ static MACHINE_CONFIG_START( turtship, sidearms_state )
MCFG_SCREEN_UPDATE_DRIVER(sidearms_state, screen_update_sidearms)
MCFG_GFXDECODE_ADD("gfxdecode", turtship)
- MCFG_PALETTE_LENGTH(1024)
+
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBRRRRGGGG)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -713,7 +716,9 @@ static MACHINE_CONFIG_START( whizz, sidearms_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", turtship)
- MCFG_PALETTE_LENGTH(1024)
+
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBRRRRGGGG)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/sidepckt.c b/src/mame/drivers/sidepckt.c
index 369745a3b8f..98b574977a6 100644
--- a/src/mame/drivers/sidepckt.c
+++ b/src/mame/drivers/sidepckt.c
@@ -380,7 +380,8 @@ static MACHINE_CONFIG_START( sidepckt, sidepckt_state )
MCFG_SCREEN_UPDATE_DRIVER(sidepckt_state, screen_update_sidepckt)
MCFG_GFXDECODE_ADD("gfxdecode", sidepckt)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(sidepckt_state, sidepckt)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/sigmab52.c b/src/mame/drivers/sigmab52.c
index de796ec9114..0192a1dcece 100644
--- a/src/mame/drivers/sigmab52.c
+++ b/src/mame/drivers/sigmab52.c
@@ -150,7 +150,7 @@ public:
DECLARE_DRIVER_INIT(jwildb52);
virtual void machine_start();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(sigmab52);
UINT32 screen_update_jwildb52(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(timer_irq);
required_device<cpu_device> m_maincpu;
@@ -236,7 +236,7 @@ if (!machine().input().code_pressed(KEYCODE_O))
}
-void sigmab52_state::palette_init()
+PALETTE_INIT_MEMBER(sigmab52_state, sigmab52)
{
}
@@ -606,8 +606,8 @@ static MACHINE_CONFIG_START( jwildb52, sigmab52_state )
MCFG_HD63484_ADD("hd63484", jwildb52_hd63484_intf)
- MCFG_PALETTE_LENGTH(256)
-
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(sigmab52_state, sigmab52)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/sigmab98.c b/src/mame/drivers/sigmab98.c
index 812561f6ef7..9429f56fcea 100644
--- a/src/mame/drivers/sigmab98.c
+++ b/src/mame/drivers/sigmab98.c
@@ -300,7 +300,7 @@ void sigmab98_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
{
for (x = x0; x != x1; x += dx)
{
- m_gfxdecode->gfx(gfx)->zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(gfx)->zoom_transpen(m_palette,bitmap,cliprect,
code++, color,
flipx, flipy,
(sx + x * dim) / 0x10000, (sy + y * dim) / 0x10000,
@@ -326,7 +326,7 @@ UINT32 sigmab98_state::screen_update_sigmab98(screen_device &screen, bitmap_ind1
}
#endif
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
// Draw from priority 3 (bottom, converted to a bitmask) to priority 0 (top)
draw_sprites(bitmap, cliprect, layers_ctrl & 8);
@@ -508,7 +508,7 @@ static ADDRESS_MAP_START( gegege_mem_map, AS_PROGRAM, 8, sigmab98_state )
AM_RANGE( 0xa000, 0xafff ) AM_RAM AM_SHARE("spriteram")
- AM_RANGE( 0xc000, 0xc1ff ) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE( 0xc000, 0xc1ff ) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE( 0xc800, 0xc87f ) AM_RAM
@@ -751,7 +751,7 @@ static ADDRESS_MAP_START( animalc_map, AS_PROGRAM, 8, sigmab98_state )
AM_RANGE( 0xa000, 0xafff ) AM_RAM
AM_RANGE( 0xb000, 0xbfff ) AM_RAMBANK("sprbank")
- AM_RANGE( 0xd000, 0xd1ff ) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_byte_be_w ) AM_SHARE("paletteram")
+ AM_RANGE( 0xd000, 0xd1ff ) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE( 0xd800, 0xd87f ) AM_RAM // table?
AM_RANGE( 0xe011, 0xe011 ) AM_WRITENOP // IRQ Enable? Screen disable?
@@ -944,7 +944,7 @@ WRITE8_MEMBER(sigmab98_state::haekaka_b000_w)
case 0x67: // PALETTERAM + TABLE? + REGS
if (offset < 0x200)
{
- paletteram_xRRRRRGGGGGBBBBB_byte_be_w(space, offset, data);
+ m_palette->write(space, offset, data);
// m_generic_paletteram_8[offset] = data;
return;
}
@@ -1185,7 +1185,7 @@ WRITE8_MEMBER(sigmab98_state::itazuram_nvram_palette_w)
{
if (m_rambank == 0x64)
{
- paletteram_xRRRRRGGGGGBBBBB_byte_be_w(space, offset, data);
+ m_palette->write(space, offset, data);
// m_generic_paletteram_8[offset] = data;
}
else if (m_rambank == 0x52)
@@ -1203,7 +1203,7 @@ WRITE8_MEMBER(sigmab98_state::itazuram_palette_w)
if (m_rombank == 0x6c)
{
if (offset < 0x200)
- paletteram_xRRRRRGGGGGBBBBB_byte_be_w(space, offset, data);
+ m_palette->write(space, offset, data);
// m_generic_paletteram_8[offset] = data;
}
else
@@ -1424,7 +1424,7 @@ WRITE8_MEMBER(sigmab98_state::tdoboon_c000_w)
case 0x66: // PALETTERAM + TABLE?
if (offset < 0x200)
{
- paletteram_xRRRRRGGGGGBBBBB_byte_be_w(space, offset, data);
+ m_palette->write(space, offset, data);
// m_generic_paletteram_8[offset] = data;
return;
}
@@ -1701,7 +1701,8 @@ static MACHINE_CONFIG_START( gegege, sigmab98_state )
MCFG_SCREEN_UPDATE_DRIVER(sigmab98_state, screen_update_sigmab98)
MCFG_GFXDECODE_ADD("gfxdecode", sigmab98)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
// sound hardware
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -1741,7 +1742,9 @@ static MACHINE_CONFIG_START( sammymdl, sigmab98_state )
MCFG_SCREEN_VBLANK_DRIVER(sigmab98_state, screen_eof_sammymdl)
MCFG_GFXDECODE_ADD("gfxdecode", sigmab98)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
+
// sound hardware
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/silkroad.c b/src/mame/drivers/silkroad.c
index 4c1c1c6aaa6..da963185595 100644
--- a/src/mame/drivers/silkroad.c
+++ b/src/mame/drivers/silkroad.c
@@ -130,7 +130,7 @@ ROM15.BIN MX29F1610, SOP44 Surface Mounted Mask ROM /
WRITE32_MEMBER(silkroad_state::paletteram32_xRRRRRGGGGGBBBBB_dword_w)
{
COMBINE_DATA(&m_generic_paletteram_32[offset]);
- palette_set_color_rgb(machine(),offset,pal5bit(m_generic_paletteram_32[offset] >> (10+16)),pal5bit(m_generic_paletteram_32[offset] >> (5+16)),pal5bit(m_generic_paletteram_32[offset] >> (0+16)));
+ m_palette->set_pen_color(offset,pal5bit(m_generic_paletteram_32[offset] >> (10+16)),pal5bit(m_generic_paletteram_32[offset] >> (5+16)),pal5bit(m_generic_paletteram_32[offset] >> (0+16)));
}
WRITE32_MEMBER(silkroad_state::silk_6295_bank_w)
@@ -284,7 +284,7 @@ static MACHINE_CONFIG_START( silkroad, silkroad_state )
MCFG_SCREEN_UPDATE_DRIVER(silkroad_state, screen_update_silkroad)
MCFG_GFXDECODE_ADD("gfxdecode", silkroad)
- MCFG_PALETTE_LENGTH(0x2000)
+ MCFG_PALETTE_ADD("palette", 0x2000)
/* sound hardware */
diff --git a/src/mame/drivers/silvmil.c b/src/mame/drivers/silvmil.c
index 615937be952..2627fe0e8ad 100644
--- a/src/mame/drivers/silvmil.c
+++ b/src/mame/drivers/silvmil.c
@@ -176,7 +176,7 @@ static ADDRESS_MAP_START( silvmil_map, AS_PROGRAM, 16, silvmil_state )
AM_RANGE(0x120000, 0x120fff) AM_RAM_WRITE(silvmil_fg_videoram_w) AM_SHARE("fg_videoram")
AM_RANGE(0x122000, 0x122fff) AM_RAM_WRITE(silvmil_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0x200000, 0x2005ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x200000, 0x2005ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x210000, 0x2107ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x270000, 0x270001) AM_WRITE(silvmil_soundcmd_w)
AM_RANGE(0x280000, 0x280001) AM_READ_PORT("P1_P2")
@@ -322,7 +322,8 @@ static MACHINE_CONFIG_START( silvmil, silvmil_state )
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 0, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(silvmil_state, screen_update_silvmil)
- MCFG_PALETTE_LENGTH(0x300)
+ MCFG_PALETTE_ADD("palette", 0x300)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_GFXDECODE_ADD("gfxdecode", silvmil)
@@ -331,6 +332,7 @@ static MACHINE_CONFIG_START( silvmil, silvmil_state )
decospr_device::set_is_bootleg(*device, true);
decospr_device::set_offsets(*device, 5,7);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/simpl156.c b/src/mame/drivers/simpl156.c
index b12e4c07729..54fa02f0f3d 100644
--- a/src/mame/drivers/simpl156.c
+++ b/src/mame/drivers/simpl156.c
@@ -151,7 +151,7 @@ WRITE32_MEMBER(simpl156_state::simpl156_palette_w)
color = offset;
dat = m_generic_paletteram_16[offset] & 0xffff;
- palette_set_color_rgb(machine(),color,pal5bit(dat >> 0),pal5bit(dat >> 5),pal5bit(dat >> 10));
+ m_palette->set_pen_color(color,pal5bit(dat >> 0),pal5bit(dat >> 5),pal5bit(dat >> 10));
}
@@ -434,16 +434,18 @@ static MACHINE_CONFIG_START( chainrec, simpl156_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_DRIVER(simpl156_state, screen_update_simpl156)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
MCFG_GFXDECODE_ADD("gfxdecode", simpl156)
MCFG_DECO16IC_ADD("tilegen1", simpl156_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 2);
decospr_device::set_pri_callback(*device, simpl156_pri_callback);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/simpsons.c b/src/mame/drivers/simpsons.c
index 85567173019..e1f11914330 100644
--- a/src/mame/drivers/simpsons.c
+++ b/src/mame/drivers/simpsons.c
@@ -333,7 +333,7 @@ static MACHINE_CONFIG_START( simpsons, simpsons_state )
MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.1856)
@@ -342,13 +342,18 @@ static MACHINE_CONFIG_START( simpsons, simpsons_state )
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(simpsons_state, screen_update_simpsons)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_ENABLE_HILIGHTS()
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", simpsons_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K053246_ADD("k053246", simpsons_k053246_intf)
MCFG_K053246_GFXDECODE("gfxdecode")
+ MCFG_K053246_PALETTE("palette")
MCFG_K053251_ADD("k053251")
/* sound hardware */
diff --git a/src/mame/drivers/skimaxx.c b/src/mame/drivers/skimaxx.c
index 8bdf37747e4..795ef350b84 100644
--- a/src/mame/drivers/skimaxx.c
+++ b/src/mame/drivers/skimaxx.c
@@ -536,10 +536,9 @@ static MACHINE_CONFIG_START( skimaxx, skimaxx_state )
MCFG_SCREEN_UPDATE_DEVICE("tms", tms34010_device, tms340x0_ind16)
-// MCFG_GFXDECODE_ADD("gfxdecode", skimaxx )
+// MCFG_GFXDECODE_ADD("gfxdecode", skimaxx )
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRRR_GGGGG_BBBBB)
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/skullxbo.c b/src/mame/drivers/skullxbo.c
index 52110c0ff26..7ce51fa9c06 100644
--- a/src/mame/drivers/skullxbo.c
+++ b/src/mame/drivers/skullxbo.c
@@ -236,7 +236,7 @@ static MACHINE_CONFIG_START( skullxbo, skullxbo_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", skullxbo)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_TILEMAP_ADD_STANDARD("playfield", 2, skullxbo_state, get_playfield_tile_info, 16,8, SCAN_COLS, 64,64)
MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha", 2, skullxbo_state, get_alpha_tile_info, 16,8, SCAN_ROWS, 64,32, 0)
diff --git a/src/mame/drivers/skyarmy.c b/src/mame/drivers/skyarmy.c
index 23e73e556d8..066eed95380 100644
--- a/src/mame/drivers/skyarmy.c
+++ b/src/mame/drivers/skyarmy.c
@@ -54,7 +54,7 @@ public:
DECLARE_WRITE8_MEMBER(nmi_enable_w);
TILE_GET_INFO_MEMBER(get_skyarmy_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(skyarmy);
UINT32 screen_update_skyarmy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(skyarmy_nmi_source);
required_device<cpu_device> m_maincpu;
@@ -91,7 +91,7 @@ WRITE8_MEMBER(skyarmy_state::skyarmy_colorram_w)
m_tilemap->mark_tile_dirty(offset);
}
-void skyarmy_state::palette_init()
+PALETTE_INIT_MEMBER(skyarmy_state, skyarmy)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -115,7 +115,7 @@ void skyarmy_state::palette_init()
bit2 = (*color_prom >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
color_prom++;
}
}
@@ -147,7 +147,7 @@ UINT32 skyarmy_state::screen_update_skyarmy(screen_device &screen, bitmap_ind16
flipy = (spriteram[offs+1]&0x80)>>7;
flipx = (spriteram[offs+1]&0x40)>>6;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
spriteram[offs+1]&0x3f,
pal,
flipx,flipy,
@@ -295,8 +295,8 @@ static MACHINE_CONFIG_START( skyarmy, skyarmy_state )
MCFG_SCREEN_UPDATE_DRIVER(skyarmy_state, screen_update_skyarmy)
MCFG_GFXDECODE_ADD("gfxdecode", skyarmy)
- MCFG_PALETTE_LENGTH(32)
-
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(skyarmy_state, skyarmy)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/skydiver.c b/src/mame/drivers/skydiver.c
index 3d8fcc965b2..3c5b337a32c 100644
--- a/src/mame/drivers/skydiver.c
+++ b/src/mame/drivers/skydiver.c
@@ -112,7 +112,7 @@ static const int colortable_source[] =
0x01, 0x02
};
-void skydiver_state::palette_init()
+PALETTE_INIT_MEMBER(skydiver_state, skydiver)
{
int i;
@@ -127,7 +127,7 @@ void skydiver_state::palette_init()
default: color = rgb_t(0xa0, 0xa0, 0xa0); break; /* grey */
}
- palette_set_color(machine(), i, color);
+ palette.set_pen_color(i, color);
}
}
@@ -388,7 +388,7 @@ static MACHINE_CONFIG_START( skydiver, skydiver_state )
MCFG_SCREEN_UPDATE_DRIVER(skydiver_state, screen_update_skydiver)
MCFG_GFXDECODE_ADD("gfxdecode", skydiver)
- MCFG_PALETTE_LENGTH(sizeof(colortable_source) / sizeof(colortable_source[0]))
+ MCFG_PALETTE_ADD("palette", sizeof(colortable_source) / sizeof(colortable_source[0]))
/* sound hardware */
diff --git a/src/mame/drivers/skyfox.c b/src/mame/drivers/skyfox.c
index b8fab5ab118..0f3d921cb7b 100644
--- a/src/mame/drivers/skyfox.c
+++ b/src/mame/drivers/skyfox.c
@@ -249,8 +249,8 @@ static MACHINE_CONFIG_START( skyfox, skyfox_state )
MCFG_SCREEN_UPDATE_DRIVER(skyfox_state, screen_update_skyfox)
MCFG_GFXDECODE_ADD("gfxdecode", skyfox)
- MCFG_PALETTE_LENGTH(256+256) /* 256 static colors (+256 for the background??) */
-
+ MCFG_PALETTE_ADD("palette", 256+256) /* 256 static colors (+256 for the background??) */
+ MCFG_PALETTE_INIT_OWNER(skyfox_state, skyfox)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/skykid.c b/src/mame/drivers/skykid.c
index 12fda79a507..210434e4a6d 100644
--- a/src/mame/drivers/skykid.c
+++ b/src/mame/drivers/skykid.c
@@ -460,8 +460,8 @@ static MACHINE_CONFIG_START( skykid, skykid_state )
MCFG_SCREEN_UPDATE_DRIVER(skykid_state, screen_update_skykid)
MCFG_GFXDECODE_ADD("gfxdecode", skykid)
- MCFG_PALETTE_LENGTH(64*4+128*4+64*8)
-
+ MCFG_PALETTE_ADD("palette", 64*4+128*4+64*8)
+ MCFG_PALETTE_INIT_OWNER(skykid_state, skykid)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/skylncr.c b/src/mame/drivers/skylncr.c
index 9181df9df5d..8e5a2d1cb4d 100644
--- a/src/mame/drivers/skylncr.c
+++ b/src/mame/drivers/skylncr.c
@@ -282,7 +282,7 @@ WRITE8_MEMBER(skylncr_state::skylncr_paletteram_w)
g = (g << 2) | (g >> 4);
b = (b << 2) | (b >> 4);
- palette_set_color(machine(), m_color / 3, rgb_t(r, g, b));
+ m_palette->set_pen_color(m_color / 3, rgb_t(r, g, b));
m_color = (m_color + 1) % (0x100 * 3);
}
}
@@ -305,7 +305,7 @@ WRITE8_MEMBER(skylncr_state::skylncr_paletteram2_w)
g = (g << 2) | (g >> 4);
b = (b << 2) | (b >> 4);
- palette_set_color(machine(), 0x100 + m_color2 / 3, rgb_t(r, g, b));
+ m_palette->set_pen_color(0x100 + m_color2 / 3, rgb_t(r, g, b));
m_color2 = (m_color2 + 1) % (0x100 * 3);
}
}
@@ -730,7 +730,7 @@ static MACHINE_CONFIG_START( skylncr, skylncr_state )
MCFG_SCREEN_UPDATE_DRIVER(skylncr_state, screen_update_skylncr)
MCFG_GFXDECODE_ADD("gfxdecode", skylncr)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
/* sound hardware */
diff --git a/src/mame/drivers/skyraid.c b/src/mame/drivers/skyraid.c
index 02019a787da..af8b0f8b497 100644
--- a/src/mame/drivers/skyraid.c
+++ b/src/mame/drivers/skyraid.c
@@ -10,28 +10,28 @@ Atari Sky Raider driver
-void skyraid_state::palette_init()
+PALETTE_INIT_MEMBER(skyraid_state, skyraid)
{
- palette_set_color(machine(), 0, rgb_t(0x00, 0x00, 0x00)); /* terrain */
- palette_set_color(machine(), 1, rgb_t(0x18, 0x18, 0x18));
- palette_set_color(machine(), 2, rgb_t(0x30, 0x30, 0x30));
- palette_set_color(machine(), 3, rgb_t(0x48, 0x48, 0x48));
- palette_set_color(machine(), 4, rgb_t(0x60, 0x60, 0x60));
- palette_set_color(machine(), 5, rgb_t(0x78, 0x78, 0x78));
- palette_set_color(machine(), 6, rgb_t(0x90, 0x90, 0x90));
- palette_set_color(machine(), 7, rgb_t(0xA8, 0xA8, 0xA8));
- palette_set_color(machine(), 8, rgb_t(0x10, 0x10, 0x10)); /* sprites */
- palette_set_color(machine(), 9, rgb_t(0xE0, 0xE0, 0xE0));
- palette_set_color(machine(), 10, rgb_t(0xA0, 0xA0, 0xA0));
- palette_set_color(machine(), 11, rgb_t(0x48, 0x48, 0x48));
- palette_set_color(machine(), 12, rgb_t(0x10, 0x10, 0x10));
- palette_set_color(machine(), 13, rgb_t(0x48, 0x48, 0x48));
- palette_set_color(machine(), 14, rgb_t(0xA0, 0xA0, 0xA0));
- palette_set_color(machine(), 15, rgb_t(0xE0, 0xE0, 0xE0));
- palette_set_color(machine(), 16, rgb_t(0x00, 0x00, 0x00)); /* missiles */
- palette_set_color(machine(), 17, rgb_t(0xFF, 0xFF, 0xFF));
- palette_set_color(machine(), 18, rgb_t(0x00, 0x00, 0x00)); /* text */
- palette_set_color(machine(), 19, rgb_t(0xE0, 0xE0, 0xE0));
+ palette.set_pen_color(0, rgb_t(0x00, 0x00, 0x00)); /* terrain */
+ palette.set_pen_color(1, rgb_t(0x18, 0x18, 0x18));
+ palette.set_pen_color(2, rgb_t(0x30, 0x30, 0x30));
+ palette.set_pen_color(3, rgb_t(0x48, 0x48, 0x48));
+ palette.set_pen_color(4, rgb_t(0x60, 0x60, 0x60));
+ palette.set_pen_color(5, rgb_t(0x78, 0x78, 0x78));
+ palette.set_pen_color(6, rgb_t(0x90, 0x90, 0x90));
+ palette.set_pen_color(7, rgb_t(0xA8, 0xA8, 0xA8));
+ palette.set_pen_color(8, rgb_t(0x10, 0x10, 0x10)); /* sprites */
+ palette.set_pen_color(9, rgb_t(0xE0, 0xE0, 0xE0));
+ palette.set_pen_color(10, rgb_t(0xA0, 0xA0, 0xA0));
+ palette.set_pen_color(11, rgb_t(0x48, 0x48, 0x48));
+ palette.set_pen_color(12, rgb_t(0x10, 0x10, 0x10));
+ palette.set_pen_color(13, rgb_t(0x48, 0x48, 0x48));
+ palette.set_pen_color(14, rgb_t(0xA0, 0xA0, 0xA0));
+ palette.set_pen_color(15, rgb_t(0xE0, 0xE0, 0xE0));
+ palette.set_pen_color(16, rgb_t(0x00, 0x00, 0x00)); /* missiles */
+ palette.set_pen_color(17, rgb_t(0xFF, 0xFF, 0xFF));
+ palette.set_pen_color(18, rgb_t(0x00, 0x00, 0x00)); /* text */
+ palette.set_pen_color(19, rgb_t(0xE0, 0xE0, 0xE0));
}
READ8_MEMBER(skyraid_state::skyraid_port_0_r)
@@ -230,8 +230,8 @@ static MACHINE_CONFIG_START( skyraid, skyraid_state )
MCFG_GFXDECODE_ADD("gfxdecode", skyraid)
- MCFG_PALETTE_LENGTH(20)
-
+ MCFG_PALETTE_ADD("palette", 20)
+ MCFG_PALETTE_INIT_OWNER(skyraid_state, skyraid)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/slapfght.c b/src/mame/drivers/slapfght.c
index 34f1862bde7..967e14c7fe4 100644
--- a/src/mame/drivers/slapfght.c
+++ b/src/mame/drivers/slapfght.c
@@ -754,9 +754,7 @@ static MACHINE_CONFIG_START( perfrman, slapfght_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", perfrman)
- MCFG_PALETTE_LENGTH(256)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
MCFG_VIDEO_START_OVERRIDE(slapfght_state,perfrman)
/* sound hardware */
@@ -800,9 +798,7 @@ static MACHINE_CONFIG_START( tigerhb, slapfght_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", slapfght)
- MCFG_PALETTE_LENGTH(256)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
MCFG_VIDEO_START_OVERRIDE(slapfght_state,slapfight)
/* sound hardware */
@@ -848,9 +844,7 @@ static MACHINE_CONFIG_START( tigerh, slapfght_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", slapfght)
- MCFG_PALETTE_LENGTH(256)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
MCFG_VIDEO_START_OVERRIDE(slapfght_state,slapfight)
/* sound hardware */
@@ -897,9 +891,7 @@ static MACHINE_CONFIG_START( slapfigh, slapfght_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", slapfght)
- MCFG_PALETTE_LENGTH(256)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
MCFG_VIDEO_START_OVERRIDE(slapfght_state,slapfight)
/* sound hardware */
diff --git a/src/mame/drivers/slapshot.c b/src/mame/drivers/slapshot.c
index 0fcd4b2c190..b0b64a6b2ed 100644
--- a/src/mame/drivers/slapshot.c
+++ b/src/mame/drivers/slapshot.c
@@ -160,7 +160,7 @@ WRITE16_MEMBER(slapshot_state::color_ram_word_w)
g = (m_color_ram[offset] & 0xff00) >> 8;
b = (m_color_ram[offset] & 0xff);
- palette_set_color(machine(), offset / 2, rgb_t(r,g,b));
+ m_palette->set_pen_color(offset / 2, rgb_t(r,g,b));
}
}
@@ -547,7 +547,7 @@ static MACHINE_CONFIG_START( slapshot, slapshot_state )
MCFG_SCREEN_VBLANK_DRIVER(slapshot_state, screen_eof_taito_no_buffer)
MCFG_GFXDECODE_ADD("gfxdecode", slapshot)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
MCFG_TC0480SCP_ADD("tc0480scp", slapshot_tc0480scp_intf)
@@ -594,7 +594,7 @@ static MACHINE_CONFIG_START( opwolf3, slapshot_state )
MCFG_SCREEN_VBLANK_DRIVER(slapshot_state, screen_eof_taito_no_buffer)
MCFG_GFXDECODE_ADD("gfxdecode", slapshot)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
MCFG_TC0480SCP_ADD("tc0480scp", slapshot_tc0480scp_intf)
diff --git a/src/mame/drivers/sliver.c b/src/mame/drivers/sliver.c
index 6b374553656..2fe87b0a3c2 100644
--- a/src/mame/drivers/sliver.c
+++ b/src/mame/drivers/sliver.c
@@ -482,7 +482,8 @@ static MACHINE_CONFIG_START( sliver, sliver_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 384-1-16, 0*8, 240-1)
MCFG_SCREEN_UPDATE_DRIVER(sliver_state, screen_update_sliver)
- MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map)
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/slotcarn.c b/src/mame/drivers/slotcarn.c
index 55c7022e5e0..ef06c584c57 100644
--- a/src/mame/drivers/slotcarn.c
+++ b/src/mame/drivers/slotcarn.c
@@ -626,7 +626,7 @@ static MACHINE_CONFIG_START( slotcarn, slotcarn_state )
MCFG_MC6845_ADD("crtc", MC6845, "screen", CRTC_CLOCK, mc6845_intf)
MCFG_GFXDECODE_ADD("gfxdecode", slotcarn)
- MCFG_PALETTE_LENGTH(0x400)
+ MCFG_PALETTE_ADD("palette", 0x400)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/smsmcorp.c b/src/mame/drivers/smsmcorp.c
index ea12230d622..7e5b79fc146 100644
--- a/src/mame/drivers/smsmcorp.c
+++ b/src/mame/drivers/smsmcorp.c
@@ -244,7 +244,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(smsmfg);
DECLARE_MACHINE_START(sureshot);
UINT32 screen_update_sms(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
@@ -489,13 +489,13 @@ UINT32 smsmfg_state::screen_update_sms(screen_device &screen, bitmap_ind16 &bitm
return 0;
}
-void smsmfg_state::palette_init()
+PALETTE_INIT_MEMBER(smsmfg_state, smsmfg)
{
int i;
for (i = 0; i < 8; i++ )
{
- palette_set_color(machine(), i, rgb_t(pal1bit(i >> 2), pal1bit(i >> 1), pal1bit(i)));
+ palette.set_pen_color(i, rgb_t(pal1bit(i >> 2), pal1bit(i >> 1), pal1bit(i)));
}
}
@@ -582,8 +582,8 @@ static MACHINE_CONFIG_START( sms, smsmfg_state )
MCFG_SCREEN_VISIBLE_AREA(0, 0x1af, 0, 0xff)
MCFG_SCREEN_UPDATE_DRIVER(smsmfg_state, screen_update_sms)
- MCFG_PALETTE_LENGTH(8)
-
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(smsmfg_state, smsmfg)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/snk.c b/src/mame/drivers/snk.c
index 65defa1be5b..027f7582648 100644
--- a/src/mame/drivers/snk.c
+++ b/src/mame/drivers/snk.c
@@ -3622,8 +3622,6 @@ static MACHINE_CONFIG_START( marvins, snk_state )
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(36*8, 28*8)
@@ -3631,9 +3629,11 @@ static MACHINE_CONFIG_START( marvins, snk_state )
MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_marvins)
MCFG_GFXDECODE_ADD("gfxdecode", marvins)
- MCFG_PALETTE_LENGTH(0x400)
- MCFG_PALETTE_INIT_OVERRIDE(snk_state,tnk3)
+ MCFG_PALETTE_ADD("palette", 0x400)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+
+ MCFG_PALETTE_INIT_OWNER(snk_state,tnk3)
MCFG_VIDEO_START_OVERRIDE(snk_state,marvins)
/* sound hardware */
@@ -3691,8 +3691,6 @@ static MACHINE_CONFIG_START( jcross, snk_state )
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(36*8, 28*8)
@@ -3700,9 +3698,11 @@ static MACHINE_CONFIG_START( jcross, snk_state )
MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_tnk3)
MCFG_GFXDECODE_ADD("gfxdecode", tnk3)
- MCFG_PALETTE_LENGTH(0x400)
- MCFG_PALETTE_INIT_OVERRIDE(snk_state,tnk3)
+ MCFG_PALETTE_ADD("palette", 0x400)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+
+ MCFG_PALETTE_INIT_OWNER(snk_state,tnk3)
MCFG_VIDEO_START_OVERRIDE(snk_state,jcross)
/* sound hardware */
@@ -3769,8 +3769,6 @@ static MACHINE_CONFIG_START( tnk3, snk_state )
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(36*8, 28*8)
@@ -3778,9 +3776,11 @@ static MACHINE_CONFIG_START( tnk3, snk_state )
MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_tnk3)
MCFG_GFXDECODE_ADD("gfxdecode", tnk3)
- MCFG_PALETTE_LENGTH(0x400)
- MCFG_PALETTE_INIT_OVERRIDE(snk_state,tnk3)
+ MCFG_PALETTE_ADD("palette", 0x400)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+
+ MCFG_PALETTE_INIT_OWNER(snk_state,tnk3)
MCFG_VIDEO_START_OVERRIDE(snk_state,tnk3)
/* sound hardware */
@@ -3853,8 +3853,6 @@ static MACHINE_CONFIG_START( ikari, snk_state )
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(36*8, 28*8)
@@ -3862,9 +3860,10 @@ static MACHINE_CONFIG_START( ikari, snk_state )
MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_ikari)
MCFG_GFXDECODE_ADD("gfxdecode", ikari)
- MCFG_PALETTE_LENGTH(0x400)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 0x400)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+
MCFG_VIDEO_START_OVERRIDE(snk_state,ikari)
/* sound hardware */
@@ -3918,9 +3917,7 @@ static MACHINE_CONFIG_START( bermudat, snk_state )
MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_gwar)
MCFG_GFXDECODE_ADD("gfxdecode", gwar)
- MCFG_PALETTE_LENGTH(0x400)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 0x400)
MCFG_VIDEO_START_OVERRIDE(snk_state,gwar)
/* sound hardware */
@@ -4013,8 +4010,6 @@ static MACHINE_CONFIG_START( tdfever, snk_state )
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(50*8, 28*8)
@@ -4022,9 +4017,10 @@ static MACHINE_CONFIG_START( tdfever, snk_state )
MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_tdfever)
MCFG_GFXDECODE_ADD("gfxdecode", tdfever)
- MCFG_PALETTE_LENGTH(0x400)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 0x400)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+
MCFG_VIDEO_START_OVERRIDE(snk_state,tdfever)
/* sound hardware */
diff --git a/src/mame/drivers/snk6502.c b/src/mame/drivers/snk6502.c
index d9d9a73fcc4..25167cf5a3e 100644
--- a/src/mame/drivers/snk6502.c
+++ b/src/mame/drivers/snk6502.c
@@ -831,9 +831,9 @@ static MACHINE_CONFIG_START( sasuke, snk6502_state )
MCFG_SCREEN_UPDATE_DRIVER(snk6502_state, screen_update_snk6502)
MCFG_GFXDECODE_ADD("gfxdecode", sasuke)
- MCFG_PALETTE_LENGTH(32)
+ MCFG_PALETTE_ADD("palette", 32)
- MCFG_PALETTE_INIT_OVERRIDE(snk6502_state,satansat)
+ MCFG_PALETTE_INIT_OWNER(snk6502_state,satansat)
MCFG_VIDEO_START_OVERRIDE(snk6502_state,satansat)
MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK / 16, mc6845_intf)
@@ -904,9 +904,9 @@ static MACHINE_CONFIG_START( vanguard, snk6502_state )
MCFG_SCREEN_UPDATE_DRIVER(snk6502_state, screen_update_snk6502)
MCFG_GFXDECODE_ADD("gfxdecode", vanguard)
- MCFG_PALETTE_LENGTH(64)
+ MCFG_PALETTE_ADD("palette", 64)
- MCFG_PALETTE_INIT_OVERRIDE(snk6502_state,snk6502)
+ MCFG_PALETTE_INIT_OWNER(snk6502_state,snk6502)
MCFG_VIDEO_START_OVERRIDE(snk6502_state,snk6502)
MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK / 16, mc6845_intf)
diff --git a/src/mame/drivers/snk68.c b/src/mame/drivers/snk68.c
index afbea47d4cb..77cbf96c14d 100644
--- a/src/mame/drivers/snk68.c
+++ b/src/mame/drivers/snk68.c
@@ -596,7 +596,7 @@ static MACHINE_CONFIG_START( pow, snk68_state )
MCFG_SCREEN_UPDATE_DRIVER(snk68_state, screen_update_pow)
MCFG_GFXDECODE_ADD("gfxdecode", pow)
- MCFG_PALETTE_LENGTH(0x800)
+ MCFG_PALETTE_ADD("palette", 0x800)
/* sound hardware */
diff --git a/src/mame/drivers/snookr10.c b/src/mame/drivers/snookr10.c
index 3e892cf94ab..d86dd579ff2 100644
--- a/src/mame/drivers/snookr10.c
+++ b/src/mame/drivers/snookr10.c
@@ -1042,7 +1042,8 @@ static MACHINE_CONFIG_START( snookr10, snookr10_state )
MCFG_SCREEN_UPDATE_DRIVER(snookr10_state, screen_update_snookr10)
MCFG_GFXDECODE_ADD("gfxdecode", snookr10)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(snookr10_state, snookr10)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1057,7 +1058,8 @@ static MACHINE_CONFIG_DERIVED( apple10, snookr10 )
MCFG_CPU_MODIFY("maincpu")
/* video hardware */
- MCFG_PALETTE_INIT_OVERRIDE(snookr10_state, apple10)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(snookr10_state, apple10)
MCFG_VIDEO_START_OVERRIDE(snookr10_state, apple10)
MACHINE_CONFIG_END
@@ -1076,7 +1078,8 @@ static MACHINE_CONFIG_DERIVED( crystalc, snookr10 )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(crystalc_map)
- MCFG_PALETTE_INIT_OVERRIDE(snookr10_state, crystalc)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(snookr10_state, crystalc)
MCFG_VIDEO_START_OVERRIDE(snookr10_state, crystalc)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/snowbros.c b/src/mame/drivers/snowbros.c
index 7cc789c20a3..a467b30f634 100644
--- a/src/mame/drivers/snowbros.c
+++ b/src/mame/drivers/snowbros.c
@@ -196,7 +196,7 @@ static ADDRESS_MAP_START( snowbros_map, AS_PROGRAM, 16, snowbros_state )
AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW1")
AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW2")
AM_RANGE(0x500004, 0x500005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x600000, 0x6001ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x600000, 0x6001ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x700000, 0x701fff) AM_DEVREADWRITE("pandora", kaneko_pandora_device, spriteram_LSB_r, spriteram_LSB_w)
AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w) /* IRQ 4 acknowledge */
AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w) /* IRQ 3 acknowledge */
@@ -278,7 +278,7 @@ static ADDRESS_MAP_START( wintbob_map, AS_PROGRAM, 16, snowbros_state )
AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW1")
AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW2")
AM_RANGE(0x500004, 0x500005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x600000, 0x6001ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x600000, 0x6001ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x700000, 0x701fff) AM_RAM AM_SHARE("spriteram16b")
AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w) /* IRQ 4 acknowledge */
AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w) /* IRQ 3 acknowledge */
@@ -299,7 +299,7 @@ static ADDRESS_MAP_START( honeydol_map, AS_PROGRAM, 16, snowbros_state )
AM_RANGE(0x900000, 0x900001) AM_READ_PORT("DSW1")
AM_RANGE(0x900002, 0x900003) AM_READ_PORT("DSW2")
AM_RANGE(0x900004, 0x900005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xa00000, 0xa007ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xa00000, 0xa007ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xb00000, 0xb01fff) AM_RAM AM_SHARE("spriteram16b")
ADDRESS_MAP_END
@@ -336,7 +336,7 @@ static ADDRESS_MAP_START( twinadv_map, AS_PROGRAM, 16, snowbros_state )
AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW1")
AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW2")
AM_RANGE(0x500004, 0x500005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x600000, 0x6001ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x600000, 0x6001ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x700000, 0x701fff) AM_RAM AM_SHARE("spriteram16b")
AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w) /* IRQ 4 acknowledge */
AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w) /* IRQ 3 acknowledge */
@@ -376,7 +376,7 @@ static ADDRESS_MAP_START( hyperpac_map, AS_PROGRAM, 16, snowbros_state )
AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW2")
AM_RANGE(0x500004, 0x500005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x600000, 0x6001ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x600000, 0x6001ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x700000, 0x701fff) AM_DEVREADWRITE("pandora", kaneko_pandora_device, spriteram_LSB_r, spriteram_LSB_w)
AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w) /* IRQ 4 acknowledge */
AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w) /* IRQ 3 acknowledge */
@@ -512,7 +512,7 @@ static ADDRESS_MAP_START( snowbros3_map, AS_PROGRAM, 16, snowbros_state )
AM_RANGE( 0x500000, 0x500001) AM_READ_PORT("DSW1")
AM_RANGE( 0x500002, 0x500003) AM_READ_PORT("DSW2")
AM_RANGE( 0x500004, 0x500005) AM_READ_PORT("SYSTEM")
- AM_RANGE( 0x600000, 0x6003ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE( 0x600000, 0x6003ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE( 0x700000, 0x7021ff) AM_RAM AM_SHARE("spriteram16b")
AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w) /* IRQ 4 acknowledge */
AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w) /* IRQ 3 acknowledge */
@@ -531,7 +531,7 @@ static ADDRESS_MAP_START( finalttr_map, AS_PROGRAM, 16, snowbros_state )
AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW2")
AM_RANGE(0x500004, 0x500005) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x600000, 0x6001ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x600000, 0x6001ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x700000, 0x701fff) AM_DEVREADWRITE("pandora", kaneko_pandora_device, spriteram_LSB_r, spriteram_LSB_w)
AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w) /* IRQ 4 acknowledge */
AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w) /* IRQ 3 acknowledge */
@@ -1536,10 +1536,12 @@ static MACHINE_CONFIG_START( snowbros, snowbros_state )
MCFG_SCREEN_VBLANK_DRIVER(snowbros_state, screen_eof_snowbros)
MCFG_GFXDECODE_ADD("gfxdecode", snowbros)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_KANEKO_PANDORA_ADD("pandora", snowbros_pandora_config)
MCFG_KANEKO_PANDORA_GFXDECODE("gfxdecode")
+ MCFG_KANEKO_PANDORA_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1647,7 +1649,8 @@ static MACHINE_CONFIG_START( honeydol, snowbros_state )
MCFG_SCREEN_UPDATE_DRIVER(snowbros_state, screen_update_honeydol)
MCFG_GFXDECODE_ADD("gfxdecode", honeydol)
- MCFG_PALETTE_LENGTH(0x800/2)
+ MCFG_PALETTE_ADD("palette", 0x800/2)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1684,7 +1687,8 @@ static MACHINE_CONFIG_START( twinadv, snowbros_state )
MCFG_SCREEN_UPDATE_DRIVER(snowbros_state, screen_update_twinadv)
MCFG_GFXDECODE_ADD("gfxdecode", twinadv)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1756,7 +1760,8 @@ static MACHINE_CONFIG_START( snowbro3, snowbros_state )
MCFG_SCREEN_UPDATE_DRIVER(snowbros_state, screen_update_snowbro3)
MCFG_GFXDECODE_ADD("gfxdecode", sb3)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/solomon.c b/src/mame/drivers/solomon.c
index 671dba8bc7e..3c6b6bbab27 100644
--- a/src/mame/drivers/solomon.c
+++ b/src/mame/drivers/solomon.c
@@ -51,7 +51,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, solomon_state )
AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(solomon_colorram2_w) AM_SHARE("colorram2")
AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(solomon_videoram2_w) AM_SHARE("videoram2")
AM_RANGE(0xe000, 0xe07f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe400, 0xe5ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0xe400, 0xe5ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xe600, 0xe600) AM_READ_PORT("P1")
AM_RANGE(0xe601, 0xe601) AM_READ_PORT("P2")
AM_RANGE(0xe602, 0xe602) AM_READ_PORT("SYSTEM")
@@ -222,8 +222,8 @@ static MACHINE_CONFIG_START( solomon, solomon_state )
MCFG_SCREEN_UPDATE_DRIVER(solomon_state, screen_update_solomon)
MCFG_GFXDECODE_ADD("gfxdecode", solomon)
- MCFG_PALETTE_LENGTH(256)
-
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/sonson.c b/src/mame/drivers/sonson.c
index b6f17c2e9c5..54da5f5dfd8 100644
--- a/src/mame/drivers/sonson.c
+++ b/src/mame/drivers/sonson.c
@@ -255,8 +255,9 @@ static MACHINE_CONFIG_START( sonson, sonson_state )
MCFG_SCREEN_UPDATE_DRIVER(sonson_state, screen_update_sonson)
MCFG_GFXDECODE_ADD("gfxdecode", sonson)
- MCFG_PALETTE_LENGTH(64*4+32*8)
+ MCFG_PALETTE_ADD("palette", 64*4+32*8)
+ MCFG_PALETTE_INIT_OWNER(sonson_state, sonson)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/sothello.c b/src/mame/drivers/sothello.c
index 028ccfe04c1..4d0308de526 100644
--- a/src/mame/drivers/sothello.c
+++ b/src/mame/drivers/sothello.c
@@ -389,7 +389,7 @@ static MACHINE_CONFIG_START( sothello, sothello_state )
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_ADD("palette", 512)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/spaceg.c b/src/mame/drivers/spaceg.c
index 55e2cad191e..89933931275 100644
--- a/src/mame/drivers/spaceg.c
+++ b/src/mame/drivers/spaceg.c
@@ -190,7 +190,7 @@ public:
required_shared_ptr<UINT8> m_io9401;
DECLARE_WRITE8_MEMBER(zvideoram_w);
DECLARE_READ8_MEMBER(spaceg_colorram_r);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(spaceg);
UINT32 screen_update_spaceg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
};
@@ -201,31 +201,31 @@ public:
*
*************************************/
-void spaceg_state::palette_init()
+PALETTE_INIT_MEMBER(spaceg_state, spaceg)
{
int i;
for (i = 0; i < 128; i++)
- palette_set_color (machine(), i, rgb_t(0x00,0x00,0x00));
+ palette.set_pen_color (i, rgb_t(0x00,0x00,0x00));
// proms are currently undumped...
- palette_set_color (machine(), 0, rgb_t(0x00,0x00,0x00)); //ok czarny
- palette_set_color (machine(), 1, rgb_t(0x7f,0x00,0x00));//???
- palette_set_color (machine(), 2, rgb_t(0xff,0xff,0xff)); //ok+ bialy
- palette_set_color (machine(), 3, rgb_t(0xff,0x00,0x00)); //ok j.czerw.
- palette_set_color (machine(), 4, rgb_t(0x3f,0x3f,0xff)); //ok j.niebieski
- palette_set_color (machine(), 5, rgb_t(0x3f,0xff,0x3f)); //ok j.zielony
- palette_set_color (machine(), 6, rgb_t(0xff,0xbf,0xbf)); //ok+ 'majtki'
- palette_set_color (machine(), 7, rgb_t(0xff,0xff,0x00)); //ok+ zolty
-
- palette_set_color (machine(), 8, rgb_t(0xff,0x7f,0x00)); //ok+ pomaranczowy
- palette_set_color (machine(), 9, rgb_t(0x3f,0xbf,0xff)); //ok j.niebieski (ciemniejszy od 13)
- palette_set_color (machine(), 10, rgb_t(0x3f,0xbf,0x3f)); //ok+ c.zielony
- palette_set_color (machine(), 11, rgb_t(0x00,0xff,0x00)); //ok j.zielony
- palette_set_color (machine(), 12, rgb_t(0x7f,0x00,0x00)); //ok brazowy (c.czerw)
- palette_set_color (machine(), 13, rgb_t(0x7f,0xbf,0xff)); //ok j.niebieski (jasniejszy od 9)
- palette_set_color (machine(), 14, rgb_t(0x00,0xff,0xff));//???
- palette_set_color (machine(), 15, rgb_t(0x7f,0x7f,0x7f));//???
+ palette.set_pen_color (0, rgb_t(0x00,0x00,0x00)); //ok czarny
+ palette.set_pen_color (1, rgb_t(0x7f,0x00,0x00));//???
+ palette.set_pen_color (2, rgb_t(0xff,0xff,0xff)); //ok+ bialy
+ palette.set_pen_color (3, rgb_t(0xff,0x00,0x00)); //ok j.czerw.
+ palette.set_pen_color (4, rgb_t(0x3f,0x3f,0xff)); //ok j.niebieski
+ palette.set_pen_color (5, rgb_t(0x3f,0xff,0x3f)); //ok j.zielony
+ palette.set_pen_color (6, rgb_t(0xff,0xbf,0xbf)); //ok+ 'majtki'
+ palette.set_pen_color (7, rgb_t(0xff,0xff,0x00)); //ok+ zolty
+
+ palette.set_pen_color (8, rgb_t(0xff,0x7f,0x00)); //ok+ pomaranczowy
+ palette.set_pen_color (9, rgb_t(0x3f,0xbf,0xff)); //ok j.niebieski (ciemniejszy od 13)
+ palette.set_pen_color (10, rgb_t(0x3f,0xbf,0x3f)); //ok+ c.zielony
+ palette.set_pen_color (11, rgb_t(0x00,0xff,0x00)); //ok j.zielony
+ palette.set_pen_color (12, rgb_t(0x7f,0x00,0x00)); //ok brazowy (c.czerw)
+ palette.set_pen_color (13, rgb_t(0x7f,0xbf,0xff)); //ok j.niebieski (jasniejszy od 9)
+ palette.set_pen_color (14, rgb_t(0x00,0xff,0xff));//???
+ palette.set_pen_color (15, rgb_t(0x7f,0x7f,0x7f));//???
}
WRITE8_MEMBER(spaceg_state::zvideoram_w)
@@ -281,13 +281,13 @@ READ8_MEMBER(spaceg_state::spaceg_colorram_r)
{
/* palette 1 */
int col_ind = offset & 0x1f;
- palette_set_color_rgb(machine(), 0x10 + 0x00 + col_ind, pal3bit(rgbcolor >> 0), pal3bit(rgbcolor >> 6), pal3bit(rgbcolor >> 3));
+ m_palette->set_pen_color(0x10 + 0x00 + col_ind, pal3bit(rgbcolor >> 0), pal3bit(rgbcolor >> 6), pal3bit(rgbcolor >> 3));
}
else if ((offset >= 0x300) && (offset < 0x320)) /* 0xa300- 0xa31f */
{
/* palette 2 */
int col_ind = offset & 0x1f;
- palette_set_color_rgb(machine(), 0x10 + 0x00 + col_ind, pal3bit(rgbcolor >> 0), pal3bit(rgbcolor >> 6), pal3bit(rgbcolor >> 3));
+ m_palette->set_pen_color(0x10 + 0x00 + col_ind, pal3bit(rgbcolor >> 0), pal3bit(rgbcolor >> 6), pal3bit(rgbcolor >> 3));
}
else
logerror("palette? read from colorram offset = %04x\n",offset);
@@ -423,7 +423,8 @@ static MACHINE_CONFIG_START( spaceg, spaceg_state )
MCFG_SCREEN_VISIBLE_AREA(0, 255, 32, 255)
MCFG_SCREEN_UPDATE_DRIVER(spaceg_state, screen_update_spaceg)
- MCFG_PALETTE_LENGTH(16+128-16)
+ MCFG_PALETTE_ADD("palette", 16+128-16)
+ MCFG_PALETTE_INIT_OWNER(spaceg_state, spaceg)
/* sound hardware */
// MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/spbactn.c b/src/mame/drivers/spbactn.c
index 77a7f4814de..c173c983532 100644
--- a/src/mame/drivers/spbactn.c
+++ b/src/mame/drivers/spbactn.c
@@ -153,7 +153,7 @@ static ADDRESS_MAP_START( spbactn_map, AS_PROGRAM, 16, spbactn_state )
AM_RANGE(0x50000, 0x50fff) AM_RAM AM_SHARE("spvideoram")
AM_RANGE(0x60000, 0x67fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fgvideoram")
AM_RANGE(0x70000, 0x77fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0x80000, 0x827ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x80000, 0x827ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x90000, 0x90001) AM_READ_PORT("IN0")
AM_RANGE(0x90010, 0x90011) AM_READ_PORT("IN1")
AM_RANGE(0x90020, 0x90021) AM_READ_PORT("SYSTEM")
@@ -201,7 +201,7 @@ static ADDRESS_MAP_START( spbactnp_map, AS_PROGRAM, 16, spbactn_state )
AM_RANGE(0x50000, 0x50fff) AM_RAM AM_SHARE("spvideoram")
AM_RANGE(0x60000, 0x67fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fgvideoram")
AM_RANGE(0x70000, 0x77fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0x80000, 0x827ff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_word_w) AM_SHARE("paletteram") // yes R and G are swapped vs. the released version
+ AM_RANGE(0x80000, 0x827ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // yes R and G are swapped vs. the released version
AM_RANGE(0x90002, 0x90003) AM_WRITE( spbatnp_90002_w )
AM_RANGE(0x90006, 0x90007) AM_WRITE( spbatnp_90006_w )
@@ -427,8 +427,8 @@ static MACHINE_CONFIG_START( spbactn, spbactn_state )
MCFG_SCREEN_UPDATE_DRIVER(spbactn_state, screen_update_spbactn)
MCFG_GFXDECODE_ADD("gfxdecode", spbactn)
- MCFG_PALETTE_LENGTH(0x2800/2)
-
+ MCFG_PALETTE_ADD("palette", 0x2800/2)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -469,8 +469,8 @@ static MACHINE_CONFIG_START( spbactnp, spbactn_state )
MCFG_SCREEN_UPDATE_DRIVER(spbactn_state, screen_update_spbactnp)
MCFG_GFXDECODE_ADD("gfxdecode", spbactnp)
- MCFG_PALETTE_LENGTH(0x2800/2)
-
+ MCFG_PALETTE_ADD("palette", 0x2800/2)
+ MCFG_PALETTE_FORMAT(xxxxBBBBRRRRGGGG)
/* sound hardware - different? */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/spcforce.c b/src/mame/drivers/spcforce.c
index 954d63ea46b..560badffb85 100644
--- a/src/mame/drivers/spcforce.c
+++ b/src/mame/drivers/spcforce.c
@@ -238,7 +238,7 @@ static const int colortable_source[] =
0, 2, 3, 4, 5, 6, 7, 0
};
-void spcforce_state::palette_init()
+PALETTE_INIT_MEMBER(spcforce_state, spcforce)
{
int i;
@@ -247,7 +247,7 @@ void spcforce_state::palette_init()
int data = colortable_source[i];
rgb_t color = rgb_t(pal1bit(data >> 0), pal1bit(data >> 1), pal1bit(data >> 2));
- palette_set_color(machine(), i, color);
+ palette.set_pen_color(i, color);
}
}
@@ -279,7 +279,8 @@ static MACHINE_CONFIG_START( spcforce, spcforce_state )
MCFG_SCREEN_UPDATE_DRIVER(spcforce_state, screen_update_spcforce)
MCFG_GFXDECODE_ADD("gfxdecode", spcforce)
- MCFG_PALETTE_LENGTH(sizeof(colortable_source) / sizeof(colortable_source[0]))
+ MCFG_PALETTE_ADD("palette", sizeof(colortable_source) / sizeof(colortable_source[0]))
+ MCFG_PALETTE_INIT_OWNER(spcforce_state, spcforce)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/spdodgeb.c b/src/mame/drivers/spdodgeb.c
index 061e6b1f448..4274f16e23f 100644
--- a/src/mame/drivers/spdodgeb.c
+++ b/src/mame/drivers/spdodgeb.c
@@ -429,8 +429,8 @@ static MACHINE_CONFIG_START( spdodgeb, spdodgeb_state )
MCFG_SCREEN_UPDATE_DRIVER(spdodgeb_state, screen_update_spdodgeb)
MCFG_GFXDECODE_ADD("gfxdecode", spdodgeb)
- MCFG_PALETTE_LENGTH(1024)
-
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_INIT_OWNER(spdodgeb_state, spdodgeb)
/* sound hardware */
diff --git a/src/mame/drivers/speedatk.c b/src/mame/drivers/speedatk.c
index 226c69842b6..916aeb5bce0 100644
--- a/src/mame/drivers/speedatk.c
+++ b/src/mame/drivers/speedatk.c
@@ -338,8 +338,8 @@ static MACHINE_CONFIG_START( speedatk, speedatk_state )
MCFG_MC6845_ADD("crtc", H46505, "screen", MASTER_CLOCK/16, mc6845_intf) /* hand tuned to get ~60 fps */
MCFG_GFXDECODE_ADD("gfxdecode", speedatk)
- MCFG_PALETTE_LENGTH(0x100)
-
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_INIT_OWNER(speedatk_state, speedatk)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/speedbal.c b/src/mame/drivers/speedbal.c
index 67547f0623c..601d69342a1 100644
--- a/src/mame/drivers/speedbal.c
+++ b/src/mame/drivers/speedbal.c
@@ -50,7 +50,7 @@ static ADDRESS_MAP_START( main_cpu_map, AS_PROGRAM, 8, speedbal_state )
AM_RANGE(0xdc00, 0xdfff) AM_RAM AM_SHARE("share1") // shared with SOUND
AM_RANGE(0xe000, 0xe1ff) AM_RAM_WRITE(speedbal_background_videoram_w) AM_SHARE("bg_videoram")
AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(speedbal_foreground_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xf000, 0xf5ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0xf000, 0xf5ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xf600, 0xfeff) AM_RAM
AM_RANGE(0xff00, 0xffff) AM_RAM AM_SHARE("spriteram")
ADDRESS_MAP_END
@@ -256,7 +256,8 @@ static MACHINE_CONFIG_START( speedbal, speedbal_state )
MCFG_SCREEN_UPDATE_DRIVER(speedbal_state, screen_update_speedbal)
MCFG_GFXDECODE_ADD("gfxdecode", speedbal)
- MCFG_PALETTE_LENGTH(768)
+ MCFG_PALETTE_ADD("palette", 768)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/speedspn.c b/src/mame/drivers/speedspn.c
index 4fe745b6967..36182c9912f 100644
--- a/src/mame/drivers/speedspn.c
+++ b/src/mame/drivers/speedspn.c
@@ -107,7 +107,7 @@ WRITE8_MEMBER(speedspn_state::oki_banking_w)
static ADDRESS_MAP_START( speedspn_map, AS_PROGRAM, 8, speedspn_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_byte_le_w) AM_SHARE("paletteram") /* RAM COLOUR */
+ AM_RANGE(0x8000, 0x87ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* RAM COLOUR */
AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(speedspn_attram_w) AM_SHARE("attram")
AM_RANGE(0x9000, 0x9fff) AM_READWRITE(speedspn_vidram_r,speedspn_vidram_w) /* RAM FIX / RAM OBJECTS (selected by bit 0 of port 17) */
AM_RANGE(0xa000, 0xa7ff) AM_RAM
@@ -286,8 +286,8 @@ static MACHINE_CONFIG_START( speedspn, speedspn_state )
MCFG_SCREEN_UPDATE_DRIVER(speedspn_state, screen_update_speedspn)
MCFG_GFXDECODE_ADD("gfxdecode", speedspn)
- MCFG_PALETTE_LENGTH(0x400)
-
+ MCFG_PALETTE_ADD("palette", 0x400)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/speglsht.c b/src/mame/drivers/speglsht.c
index ca45e0d0f9a..1706ba5c7cd 100644
--- a/src/mame/drivers/speglsht.c
+++ b/src/mame/drivers/speglsht.c
@@ -369,7 +369,7 @@ UINT32 speglsht_state::screen_update_speglsht(screen_device &screen, bitmap_rgb3
{
if(srcline[x])
{
- rgb_t color=palette_get_color(machine(), srcline[x]);
+ rgb_t color=m_palette->pen_color(srcline[x]);
PLOT_PIXEL_RGB(x,y,color.r(),color.g(),color.b());
}
}
@@ -403,7 +403,7 @@ static MACHINE_CONFIG_START( speglsht, speglsht_state )
MCFG_SCREEN_UPDATE_DRIVER(speglsht_state, screen_update_speglsht)
MCFG_GFXDECODE_ADD("gfxdecode", speglsht)
- MCFG_PALETTE_LENGTH(16*16*4+1)
+ MCFG_PALETTE_ADD("palette", 16*16*4+1)
MCFG_VIDEO_START_OVERRIDE(speglsht_state,speglsht)
diff --git a/src/mame/drivers/splash.c b/src/mame/drivers/splash.c
index e3f1b9ec325..c9d3b2a05f3 100644
--- a/src/mame/drivers/splash.c
+++ b/src/mame/drivers/splash.c
@@ -100,7 +100,7 @@ static ADDRESS_MAP_START( splash_map, AS_PROGRAM, 16, splash_state )
AM_RANGE(0x880000, 0x8817ff) AM_RAM_WRITE(splash_vram_w) AM_SHARE("videoram") /* Video RAM */
AM_RANGE(0x881800, 0x881803) AM_RAM AM_SHARE("vregs") /* Scroll registers */
AM_RANGE(0x881804, 0x881fff) AM_RAM /* Work RAM */
- AM_RANGE(0x8c0000, 0x8c0fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")/* Palette is xRRRRxGGGGxBBBBx */
+ AM_RANGE(0x8c0000, 0x8c0fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")/* Palette is xRRRRxGGGGxBBBBx */
AM_RANGE(0x900000, 0x900fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
AM_RANGE(0xffc000, 0xffffff) AM_RAM /* Work RAM */
ADDRESS_MAP_END
@@ -173,7 +173,7 @@ static ADDRESS_MAP_START( roldfrog_map, AS_PROGRAM, 16, splash_state )
AM_RANGE(0x880000, 0x8817ff) AM_RAM_WRITE(splash_vram_w) AM_SHARE("videoram") /* Video RAM */
AM_RANGE(0x881800, 0x881803) AM_RAM AM_SHARE("vregs") /* Scroll registers */
AM_RANGE(0x881804, 0x881fff) AM_RAM /* Work RAM */
- AM_RANGE(0x8c0000, 0x8c0fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")/* Palette is xRRRRxGGGGxBBBBx */
+ AM_RANGE(0x8c0000, 0x8c0fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")/* Palette is xRRRRxGGGGxBBBBx */
AM_RANGE(0xa00000, 0xa00001) AM_READ(roldfrog_bombs_r)
AM_RANGE(0xd00000, 0xd00fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
AM_RANGE(0xe00000, 0xe00001) AM_WRITEONLY AM_SHARE("bitmap_mode") /* Bitmap Mode? */
@@ -234,7 +234,7 @@ static ADDRESS_MAP_START( funystrp_map, AS_PROGRAM, 16, splash_state )
AM_RANGE(0x880000, 0x8817ff) AM_RAM_WRITE(splash_vram_w) AM_SHARE("videoram") /* Video RAM */
AM_RANGE(0x881800, 0x881803) AM_RAM AM_SHARE("vregs") /* Scroll registers */
AM_RANGE(0x881804, 0x881fff) AM_WRITENOP
- AM_RANGE(0x8c0000, 0x8c0fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")/* Palette is xRRRRxGGGGxBBBBx */
+ AM_RANGE(0x8c0000, 0x8c0fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")/* Palette is xRRRRxGGGGxBBBBx */
AM_RANGE(0xd00000, 0xd01fff) AM_READWRITE(spr_read, spr_write) AM_SHARE("spriteram") /* Sprite RAM */
AM_RANGE(0xfe0000, 0xffffff) AM_RAM AM_MASK(0xffff) /* there's fe0000 <-> ff0000 compare */ /* Work RAM */
ADDRESS_MAP_END
@@ -503,7 +503,8 @@ static MACHINE_CONFIG_START( splash, splash_state )
MCFG_SCREEN_UPDATE_DRIVER(splash_state, screen_update_splash)
MCFG_GFXDECODE_ADD("gfxdecode", splash)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_MACHINE_RESET_OVERRIDE(splash_state, splash )
@@ -556,7 +557,8 @@ static MACHINE_CONFIG_START( roldfrog, splash_state )
MCFG_SCREEN_UPDATE_DRIVER(splash_state, screen_update_splash)
MCFG_GFXDECODE_ADD("gfxdecode", splash)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_MACHINE_RESET_OVERRIDE(splash_state, splash )
@@ -634,7 +636,8 @@ static MACHINE_CONFIG_START( funystrp, splash_state )
MCFG_SCREEN_UPDATE_DRIVER(splash_state, screen_update_funystrp)
MCFG_GFXDECODE_ADD("gfxdecode", splash)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_MACHINE_RESET_OVERRIDE(splash_state, funystrp )
diff --git a/src/mame/drivers/splus.c b/src/mame/drivers/splus.c
index 2895e312893..7821ecbe032 100644
--- a/src/mame/drivers/splus.c
+++ b/src/mame/drivers/splus.c
@@ -678,7 +678,7 @@ static MACHINE_CONFIG_START( splus, splus_state ) // basic machine hardware
MCFG_NVRAM_ADD_0FILL("cmosh")
// video hardware (ALL FAKE, NO VIDEO)
- MCFG_PALETTE_LENGTH(16*16)
+ MCFG_PALETTE_ADD("palette", 16*16)
MCFG_SCREEN_ADD("scrn", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
diff --git a/src/mame/drivers/spoker.c b/src/mame/drivers/spoker.c
index f7269a38bba..fbf80927bbe 100644
--- a/src/mame/drivers/spoker.c
+++ b/src/mame/drivers/spoker.c
@@ -105,7 +105,7 @@ void spoker_state::video_start()
UINT32 spoker_state::screen_update_spoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
return 0;
@@ -225,8 +225,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( spoker_portmap, AS_IO, 8, spoker_state )
AM_RANGE( 0x0000, 0x003f ) AM_RAM // Z180 internal regs
- AM_RANGE( 0x2000, 0x23ff ) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_split_lo_w ) AM_SHARE("paletteram")
- AM_RANGE( 0x2400, 0x27ff ) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_split_hi_w ) AM_SHARE("paletteram2")
+ AM_RANGE( 0x2000, 0x23ff ) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE( 0x2400, 0x27ff ) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE( 0x3000, 0x33ff ) AM_RAM_WRITE(bg_tile_w ) AM_SHARE("bg_tile_ram")
@@ -256,8 +256,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( 3super8_portmap, AS_IO, 8, spoker_state )
// AM_RANGE( 0x1000, 0x1fff ) AM_WRITENOP
- AM_RANGE( 0x2000, 0x27ff ) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_split_lo_w ) AM_SHARE("paletteram")
- AM_RANGE( 0x2800, 0x2fff ) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_split_hi_w ) AM_SHARE("paletteram2")
+ AM_RANGE( 0x2000, 0x27ff ) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE( 0x2800, 0x2fff ) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE( 0x3000, 0x33ff ) AM_RAM_WRITE(bg_tile_w ) AM_SHARE("bg_tile_ram")
@@ -538,8 +538,8 @@ static MACHINE_CONFIG_START( spoker, spoker_state )
MCFG_SCREEN_UPDATE_DRIVER(spoker_state, screen_update_spoker)
MCFG_GFXDECODE_ADD("gfxdecode", spoker)
- MCFG_PALETTE_LENGTH(0x400)
-
+ MCFG_PALETTE_ADD("palette", 0x400)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/spool99.c b/src/mame/drivers/spool99.c
index 8b58f56e5db..7828aca839a 100644
--- a/src/mame/drivers/spool99.c
+++ b/src/mame/drivers/spool99.c
@@ -227,7 +227,7 @@ static ADDRESS_MAP_START( spool99_map, AS_PROGRAM, 8, spool99_state )
AM_RANGE(0xafef, 0xafef) AM_WRITE(eeprom_dataline_w )
AM_RANGE(0xaff8, 0xaff8) AM_DEVWRITE("oki", okim6295_device, write)
- AM_RANGE(0xb000, 0xb3ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0xb000, 0xb3ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xb800, 0xdfff) AM_RAM
AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(spool99_vram_w) AM_SHARE("vram")
@@ -273,7 +273,7 @@ static ADDRESS_MAP_START( vcarn_map, AS_PROGRAM, 8, spool99_state )
AM_RANGE(0xa747, 0xa747) AM_WRITE(eeprom_dataline_w )
AM_RANGE(0xa780, 0xa780) AM_DEVWRITE("oki", okim6295_device, write)
- AM_RANGE(0xa800, 0xabff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0xa800, 0xabff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xb000, 0xdfff) AM_RAM
// AM_RANGE(0xdf00, 0xdfff) AM_READWRITE(vcarn_io_r,vcarn_io_w) AM_SHARE("vcarn_io")
@@ -363,7 +363,8 @@ static MACHINE_CONFIG_START( spool99, spool99_state )
MCFG_SCREEN_VISIBLE_AREA(7*8, 55*8-1, 1*8, 31*8-1) //384x240,raw guess
MCFG_SCREEN_UPDATE_DRIVER(spool99_state, screen_update_spool99)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
diff --git a/src/mame/drivers/sprcros2.c b/src/mame/drivers/sprcros2.c
index 2a92c78a1f0..7bc10134751 100644
--- a/src/mame/drivers/sprcros2.c
+++ b/src/mame/drivers/sprcros2.c
@@ -279,8 +279,8 @@ static MACHINE_CONFIG_START( sprcros2, sprcros2_state )
MCFG_SCREEN_UPDATE_DRIVER(sprcros2_state, screen_update_sprcros2)
MCFG_GFXDECODE_ADD("gfxdecode", sprcros2)
- MCFG_PALETTE_LENGTH(768)
-
+ MCFG_PALETTE_ADD("palette", 768)
+ MCFG_PALETTE_INIT_OWNER(sprcros2_state, sprcros2)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/sprint2.c b/src/mame/drivers/sprint2.c
index 70a76e1c719..e73db2debac 100644
--- a/src/mame/drivers/sprint2.c
+++ b/src/mame/drivers/sprint2.c
@@ -498,8 +498,8 @@ static MACHINE_CONFIG_START( sprint2, sprint2_state )
MCFG_SCREEN_VBLANK_DRIVER(sprint2_state, screen_eof_sprint2)
MCFG_GFXDECODE_ADD("gfxdecode", sprint2)
- MCFG_PALETTE_LENGTH(12)
-
+ MCFG_PALETTE_ADD("palette", 12)
+ MCFG_PALETTE_INIT_OWNER(sprint2_state, sprint2)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/sprint4.c b/src/mame/drivers/sprint4.c
index bd2b0736ceb..b5cfcb84035 100644
--- a/src/mame/drivers/sprint4.c
+++ b/src/mame/drivers/sprint4.c
@@ -411,8 +411,8 @@ static MACHINE_CONFIG_START( sprint4, sprint4_state )
MCFG_SCREEN_VBLANK_DRIVER(sprint4_state, screen_eof_sprint4)
MCFG_GFXDECODE_ADD("gfxdecode", sprint4)
- MCFG_PALETTE_LENGTH(10)
-
+ MCFG_PALETTE_ADD("palette", 10)
+ MCFG_PALETTE_INIT_OWNER(sprint4_state, sprint4)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/sprint8.c b/src/mame/drivers/sprint8.c
index e79f474eff3..5369026e9ad 100644
--- a/src/mame/drivers/sprint8.c
+++ b/src/mame/drivers/sprint8.c
@@ -465,9 +465,8 @@ static MACHINE_CONFIG_START( sprint8, sprint8_state )
MCFG_SCREEN_VBLANK_DRIVER(sprint8_state, screen_eof_sprint8)
MCFG_GFXDECODE_ADD("gfxdecode", sprint8)
- MCFG_PALETTE_LENGTH(36)
-
-
+ MCFG_PALETTE_ADD("palette", 36)
+ MCFG_PALETTE_INIT_OWNER(sprint8_state, sprint8)
/* sound hardware */
/* the proper way is to hook up 4 speakers, but they are not really
diff --git a/src/mame/drivers/spy.c b/src/mame/drivers/spy.c
index 454765bbfce..4151decd943 100644
--- a/src/mame/drivers/spy.c
+++ b/src/mame/drivers/spy.c
@@ -58,7 +58,7 @@ WRITE8_MEMBER(spy_state::spy_bankedram1_w)
{
if (m_rambank & 1)
{
- paletteram_xBBBBBGGGGGRRRRR_byte_be_w(space,offset,data);
+ m_palette->write(space,offset,data);
}
else if (m_rambank & 2)
{
@@ -527,8 +527,6 @@ static MACHINE_CONFIG_START( spy, spy_state )
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
@@ -536,13 +534,17 @@ static MACHINE_CONFIG_START( spy, spy_state )
MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(spy_state, screen_update_spy)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", spy_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K051960_ADD("k051960", spy_k051960_intf)
MCFG_K051960_GFXDECODE("gfxdecode")
+ MCFG_K051960_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/srmp2.c b/src/mame/drivers/srmp2.c
index f6d89e87d55..01bc08c8062 100644
--- a/src/mame/drivers/srmp2.c
+++ b/src/mame/drivers/srmp2.c
@@ -421,7 +421,7 @@ static ADDRESS_MAP_START( mjyuugi_map, AS_PROGRAM, 16, srmp2_state )
AM_RANGE(0x300000, 0x300001) AM_READ8(mjyuugi_irq4_ack_r,0x00ff) /* irq ack lv 4? */
AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW3-1") /* DSW 3-1 */
AM_RANGE(0x500010, 0x500011) AM_READ_PORT("DSW3-2") /* DSW 3-2 */
- AM_RANGE(0x700000, 0x7003ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x700000, 0x7003ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x800000, 0x800001) AM_READNOP /* ??? */
AM_RANGE(0x900000, 0x900001) AM_READWRITE8(iox_mux_r, iox_command_w,0x00ff) /* key matrix | I/O */
AM_RANGE(0x900002, 0x900003) AM_READWRITE8(iox_status_r,iox_data_w,0x00ff)
@@ -1169,6 +1169,7 @@ static MACHINE_CONFIG_START( srmp2, srmp2_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -1179,9 +1180,10 @@ static MACHINE_CONFIG_START( srmp2, srmp2_state )
MCFG_SCREEN_UPDATE_DRIVER(srmp2_state, screen_update_srmp2)
MCFG_GFXDECODE_ADD("gfxdecode", srmp2)
- MCFG_PALETTE_LENGTH(1024) /* sprites only */
+ MCFG_PALETTE_ADD("palette", 1024) /* sprites only */
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
- MCFG_PALETTE_INIT_OVERRIDE(srmp2_state,srmp2)
+ MCFG_PALETTE_INIT_OWNER(srmp2_state,srmp2)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1211,6 +1213,7 @@ static MACHINE_CONFIG_START( srmp3, srmp2_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -1221,9 +1224,10 @@ static MACHINE_CONFIG_START( srmp3, srmp2_state )
MCFG_SCREEN_UPDATE_DRIVER(srmp2_state, screen_update_srmp3)
MCFG_GFXDECODE_ADD("gfxdecode", srmp3)
- MCFG_PALETTE_LENGTH(512) /* sprites only */
+ MCFG_PALETTE_ADD("palette", 512) /* sprites only */
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
- MCFG_PALETTE_INIT_OVERRIDE(srmp2_state,srmp3)
+ MCFG_PALETTE_INIT_OWNER(srmp2_state,srmp3)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1262,6 +1266,7 @@ static MACHINE_CONFIG_START( mjyuugi, srmp2_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -1272,7 +1277,8 @@ static MACHINE_CONFIG_START( mjyuugi, srmp2_state )
MCFG_SCREEN_UPDATE_DRIVER(srmp2_state, screen_update_mjyuugi)
MCFG_GFXDECODE_ADD("gfxdecode", srmp3)
- MCFG_PALETTE_LENGTH(512) /* sprites only */
+ MCFG_PALETTE_ADD("palette", 512) /* sprites only */
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/srmp5.c b/src/mame/drivers/srmp5.c
index c6bde4360fe..709de62a279 100644
--- a/src/mame/drivers/srmp5.c
+++ b/src/mame/drivers/srmp5.c
@@ -229,7 +229,7 @@ READ32_MEMBER(srmp5_state::srmp5_palette_r)
WRITE32_MEMBER(srmp5_state::srmp5_palette_w)
{
COMBINE_DATA(&m_palram[offset]);
- palette_set_color(machine(), offset, rgb_t(data << 3 & 0xFF, data >> 2 & 0xFF, data >> 7 & 0xFF));
+ m_palette->set_pen_color(offset, rgb_t(data << 3 & 0xFF, data >> 2 & 0xFF, data >> 7 & 0xFF));
}
WRITE32_MEMBER(srmp5_state::bank_w)
{
@@ -552,9 +552,9 @@ static MACHINE_CONFIG_START( srmp5, srmp5_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 42*8-1, 2*8, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(srmp5_state, screen_update_srmp5)
- MCFG_PALETTE_LENGTH(0x1800)
+ MCFG_PALETTE_ADD("palette", 0x1800)
#ifdef DEBUG_CHAR
- MCFG_GFXDECODE_ADD("gfxdecode", srmp5 )
+ MCFG_GFXDECODE_ADD("gfxdecode", srmp5 )
#endif
MCFG_VIDEO_START_OVERRIDE(st0016_state,st0016)
diff --git a/src/mame/drivers/srmp6.c b/src/mame/drivers/srmp6.c
index ef0fe73e57f..ade067146d8 100644
--- a/src/mame/drivers/srmp6.c
+++ b/src/mame/drivers/srmp6.c
@@ -156,7 +156,7 @@ void srmp6_state::update_palette()
b += ((0x1F - b) * brg) >> 5;
if(b > 0x1F) b = 0x1F;
}
- palette_set_color(machine(), i, rgb_t(r << 3, g << 3, b << 3));
+ m_palette->set_pen_color(i, rgb_t(r << 3, g << 3, b << 3));
}
}
@@ -167,7 +167,7 @@ void srmp6_state::video_start()
m_sprram_old = auto_alloc_array_clear(machine(), UINT16, 0x80000/2);
/* create the char set (gfx will then be updated dynamically from RAM) */
- m_gfxdecode->set_gfx(0, auto_alloc(machine(), gfx_element(machine(), tiles8x8_layout, (UINT8*)m_tileram, machine().total_colors() / 256, 0)));
+ m_gfxdecode->set_gfx(0, auto_alloc(machine(), gfx_element(machine(), tiles8x8_layout, (UINT8*)m_tileram, m_palette->entries() / 256, 0)));
m_gfxdecode->gfx(0)->set_granularity(256);
m_brightness = 0x60;
@@ -275,7 +275,7 @@ UINT32 srmp6_state::screen_update_srmp6(screen_device &screen, bitmap_rgb32 &bit
else
yb=y+(height-yw-1)*8+global_y;
- m_gfxdecode->gfx(0)->alpha(bitmap,cliprect,tileno,global_pal,flip_x,flip_y,xb,yb,0,alpha);
+ m_gfxdecode->gfx(0)->alpha(m_palette,bitmap,cliprect,tileno,global_pal,flip_x,flip_y,xb,yb,0,alpha);
tileno++;
}
}
@@ -504,7 +504,7 @@ WRITE16_MEMBER(srmp6_state::paletteram_w)
INT8 r, g, b;
int brg = m_brightness - 0x60;
- paletteram_xBBBBBGGGGGRRRRR_word_w(space, offset, data, mem_mask);
+ m_palette->write(space, offset, data, mem_mask);
if(brg)
{
@@ -529,7 +529,7 @@ WRITE16_MEMBER(srmp6_state::paletteram_w)
if(b > 0x1F) b = 0x1F;
}
- palette_set_color(machine(), offset, rgb_t(r << 3, g << 3, b << 3));
+ m_palette->set_pen_color(offset, rgb_t(r << 3, g << 3, b << 3));
}
}
@@ -677,7 +677,8 @@ static MACHINE_CONFIG_START( srmp6, srmp6_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 42*8-1, 0*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(srmp6_state, screen_update_srmp6)
- MCFG_PALETTE_LENGTH(0x800)
+ MCFG_PALETTE_ADD("palette", 0x800)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
diff --git a/src/mame/drivers/srumbler.c b/src/mame/drivers/srumbler.c
index 53e1120e415..5c054bd1d67 100644
--- a/src/mame/drivers/srumbler.c
+++ b/src/mame/drivers/srumbler.c
@@ -86,7 +86,7 @@ static ADDRESS_MAP_START( srumbler_map, AS_PROGRAM, 8, srumbler_state )
AM_RANGE(0x6000, 0x6fff) AM_ROMBANK("6000") /* Banked ROM */
AM_RANGE(0x6000, 0x6fff) AM_WRITENOP /* Video RAM 2 ??? (not used) */
AM_RANGE(0x7000, 0x7fff) AM_ROMBANK("7000") /* Banked ROM */
- AM_RANGE(0x7000, 0x73ff) AM_WRITE(paletteram_RRRRGGGGBBBBxxxx_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0x7000, 0x73ff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x8000, 0x8fff) AM_ROMBANK("8000") /* Banked ROM */
AM_RANGE(0x9000, 0x9fff) AM_ROMBANK("9000") /* Banked ROM */
AM_RANGE(0xa000, 0xafff) AM_ROMBANK("a000") /* Banked ROM */
@@ -257,8 +257,9 @@ static MACHINE_CONFIG_START( srumbler, srumbler_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", srumbler)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/ssfindo.c b/src/mame/drivers/ssfindo.c
index 02dc2b175f3..8fe992147c7 100644
--- a/src/mame/drivers/ssfindo.c
+++ b/src/mame/drivers/ssfindo.c
@@ -300,7 +300,7 @@ WRITE32_MEMBER(ssfindo_state::FIFO_w)
if(!(data>>28))
{
- palette_set_color_rgb(machine(), m_PS7500_FIFO[1]&0xff, data&0xff,(data>>8)&0xff,(data>>16)&0xff);
+ m_palette->set_pen_color(m_PS7500_FIFO[1]&0xff, data&0xff,(data>>8)&0xff,(data>>16)&0xff);
m_PS7500_FIFO[1]++; //autoinc
}
}
@@ -774,7 +774,7 @@ static MACHINE_CONFIG_START( ssfindo, ssfindo_state )
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_DRIVER(ssfindo_state, screen_update_ssfindo)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( ppcar, ssfindo )
diff --git a/src/mame/drivers/sshangha.c b/src/mame/drivers/sshangha.c
index 0ce3e3b1c3f..5e2e99a55e7 100644
--- a/src/mame/drivers/sshangha.c
+++ b/src/mame/drivers/sshangha.c
@@ -92,7 +92,7 @@ void sshangha_state::machine_reset()
inline void sshangha_state::sshangha_set_color_888(pen_t color, int rshift, int gshift, int bshift, UINT32 data)
{
- palette_set_color_rgb(machine(), color, (data >> rshift) & 0xff, (data >> gshift) & 0xff, (data >> bshift) & 0xff);
+ m_palette->set_pen_color(color, (data >> rshift) & 0xff, (data >> gshift) & 0xff, (data >> bshift) & 0xff);
}
@@ -418,18 +418,21 @@ static MACHINE_CONFIG_START( sshangha, sshangha_state )
MCFG_SCREEN_UPDATE_DRIVER(sshangha_state, screen_update_sshangha)
MCFG_GFXDECODE_ADD("gfxdecode", sshangha)
- MCFG_PALETTE_LENGTH(0x4000)
+ MCFG_PALETTE_ADD("palette", 0x4000)
MCFG_DECO16IC_ADD("tilegen1", sshangha_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen1", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 2);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen2", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 2);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_DECO146_ADD("ioprot")
diff --git a/src/mame/drivers/sshot.c b/src/mame/drivers/sshot.c
index 8122f40c58a..423204a2fb6 100644
--- a/src/mame/drivers/sshot.c
+++ b/src/mame/drivers/sshot.c
@@ -182,7 +182,6 @@ public:
DECLARE_WRITE8_MEMBER(supershot_output1_w);
TILE_GET_INFO_MEMBER(get_supershot_text_tile_info);
virtual void video_start();
- virtual void palette_init();
UINT32 screen_update_supershot(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -335,12 +334,6 @@ static GFXDECODE_START( supershot )
GFXDECODE_ENTRY( "gfx", 0, supershot_charlayout, 0, 1 )
GFXDECODE_END
-void supershot_state::palette_init()
-{
- palette_set_color(machine(),0,rgb_t::black); /* black */
- palette_set_color(machine(),1,rgb_t::white); /* white */
-}
-
static MACHINE_CONFIG_START( supershot, supershot_state )
/* basic machine hardware */
@@ -357,7 +350,7 @@ static MACHINE_CONFIG_START( supershot, supershot_state )
MCFG_SCREEN_UPDATE_DRIVER(supershot_state, screen_update_supershot)
MCFG_GFXDECODE_ADD("gfxdecode", supershot)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
//...
diff --git a/src/mame/drivers/ssingles.c b/src/mame/drivers/ssingles.c
index a5e80c93d9c..a0b07eb57c3 100644
--- a/src/mame/drivers/ssingles.c
+++ b/src/mame/drivers/ssingles.c
@@ -575,7 +575,7 @@ static MACHINE_CONFIG_START( ssingles, ssingles_state )
MCFG_SCREEN_RAW_PARAMS(4000000, 256, 0, 256, 256, 0, 256) /* temporary, CRTC will configure screen */
MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
- MCFG_PALETTE_LENGTH(4) //guess
+ MCFG_PALETTE_ADD("palette", 4) //guess
MCFG_GFXDECODE_ADD("gfxdecode", ssingles)
diff --git a/src/mame/drivers/sslam.c b/src/mame/drivers/sslam.c
index e2aa8b74ecc..aa18844b867 100644
--- a/src/mame/drivers/sslam.c
+++ b/src/mame/drivers/sslam.c
@@ -714,7 +714,7 @@ static MACHINE_CONFIG_START( sslam, sslam_state )
MCFG_SCREEN_UPDATE_DRIVER(sslam_state, screen_update_sslam)
MCFG_GFXDECODE_ADD("gfxdecode", sslam)
- MCFG_PALETTE_LENGTH(0x800)
+ MCFG_PALETTE_ADD("palette", 0x800)
MCFG_VIDEO_START_OVERRIDE(sslam_state,sslam)
@@ -744,7 +744,7 @@ static MACHINE_CONFIG_START( powerbls, sslam_state )
MCFG_SCREEN_UPDATE_DRIVER(sslam_state, screen_update_powerbls)
MCFG_GFXDECODE_ADD("gfxdecode", powerbls)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
MCFG_VIDEO_START_OVERRIDE(sslam_state,powerbls)
diff --git a/src/mame/drivers/ssozumo.c b/src/mame/drivers/ssozumo.c
index ab27afd23fd..94fd0c797c6 100644
--- a/src/mame/drivers/ssozumo.c
+++ b/src/mame/drivers/ssozumo.c
@@ -205,8 +205,8 @@ static MACHINE_CONFIG_START( ssozumo, ssozumo_state )
MCFG_SCREEN_UPDATE_DRIVER(ssozumo_state, screen_update_ssozumo)
MCFG_GFXDECODE_ADD("gfxdecode", ssozumo)
- MCFG_PALETTE_LENGTH(64 + 16)
-
+ MCFG_PALETTE_ADD("palette", 64 + 16)
+ MCFG_PALETTE_INIT_OWNER(ssozumo_state, ssozumo)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/sspeedr.c b/src/mame/drivers/sspeedr.c
index a62cdabbb6f..de31ed95382 100644
--- a/src/mame/drivers/sspeedr.c
+++ b/src/mame/drivers/sspeedr.c
@@ -11,7 +11,7 @@ Taito Super Speed Race driver
-void sspeedr_state::palette_init()
+PALETTE_INIT_MEMBER(sspeedr_state, sspeedr)
{
int i;
@@ -28,7 +28,7 @@ void sspeedr_state::palette_init()
b += 0x4f;
}
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -202,8 +202,8 @@ static MACHINE_CONFIG_START( sspeedr, sspeedr_state )
MCFG_SCREEN_VBLANK_DRIVER(sspeedr_state, screen_eof_sspeedr)
MCFG_GFXDECODE_ADD("gfxdecode", sspeedr)
- MCFG_PALETTE_LENGTH(16)
-
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(sspeedr_state, sspeedr)
/* sound hardware */
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ssrj.c b/src/mame/drivers/ssrj.c
index 242ed8d9f88..a58fa50dc06 100644
--- a/src/mame/drivers/ssrj.c
+++ b/src/mame/drivers/ssrj.c
@@ -156,8 +156,8 @@ static MACHINE_CONFIG_START( ssrj, ssrj_state )
MCFG_SCREEN_VBLANK_DRIVER(ssrj_state, screen_eof_ssrj)
MCFG_GFXDECODE_ADD("gfxdecode", ssrj)
- MCFG_PALETTE_LENGTH(128)
-
+ MCFG_PALETTE_ADD("palette", 128)
+ MCFG_PALETTE_INIT_OWNER(ssrj_state, ssrj)
/* sound hardware */
diff --git a/src/mame/drivers/ssv.c b/src/mame/drivers/ssv.c
index 249fe4caf04..53df8a50878 100644
--- a/src/mame/drivers/ssv.c
+++ b/src/mame/drivers/ssv.c
@@ -2593,7 +2593,7 @@ static MACHINE_CONFIG_START( ssv, ssv_state )
MCFG_SCREEN_UPDATE_DRIVER(ssv_state, screen_update_ssv)
MCFG_GFXDECODE_ADD("gfxdecode", ssv)
- MCFG_PALETTE_LENGTH(0x8000)
+ MCFG_PALETTE_ADD("palette", 0x8000)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -2642,6 +2642,7 @@ static MACHINE_CONFIG_DERIVED( gdfs, ssv )
MCFG_DEVICE_ADD("st0020_spr", ST0020_SPRITES, 0)
MCFG_ST0020_SPRITES_GFXDECODE("gfxdecode")
+ MCFG_ST0020_SPRITES_PALETTE("palette")
MCFG_GFXDECODE_MODIFY("gfxdecode", gdfs)
MCFG_VIDEO_START_OVERRIDE(ssv_state,gdfs)
diff --git a/src/mame/drivers/st0016.c b/src/mame/drivers/st0016.c
index 86964a66652..0e1732ba6df 100644
--- a/src/mame/drivers/st0016.c
+++ b/src/mame/drivers/st0016.c
@@ -423,7 +423,7 @@ static MACHINE_CONFIG_START( st0016, st0016_state )
MCFG_SCREEN_UPDATE_DRIVER(st0016_state, screen_update_st0016)
MCFG_GFXDECODE_ADD("gfxdecode", st0016)
- MCFG_PALETTE_LENGTH(16*16*4+1)
+ MCFG_PALETTE_ADD("palette", 16*16*4+1)
MCFG_VIDEO_START_OVERRIDE(st0016_state,st0016)
diff --git a/src/mame/drivers/stadhero.c b/src/mame/drivers/stadhero.c
index 0cf86a58d22..4f304f8d78e 100644
--- a/src/mame/drivers/stadhero.c
+++ b/src/mame/drivers/stadhero.c
@@ -74,7 +74,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, stadhero_state )
AM_RANGE(0x240010, 0x240017) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_1_w)
AM_RANGE(0x260000, 0x261fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_r, pf_data_w)
AM_RANGE(0x30c000, 0x30c00b) AM_READWRITE(stadhero_control_r, stadhero_control_w)
- AM_RANGE(0x310000, 0x3107ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x310000, 0x3107ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xff8000, 0xffbfff) AM_RAM /* Main ram */
AM_RANGE(0xffc000, 0xffc7ff) AM_MIRROR(0x000800) AM_RAM AM_SHARE("spriteram")
ADDRESS_MAP_END
@@ -236,7 +236,8 @@ static MACHINE_CONFIG_START( stadhero, stadhero_state )
MCFG_SCREEN_UPDATE_DRIVER(stadhero_state, screen_update_stadhero)
MCFG_GFXDECODE_ADD("gfxdecode", stadhero)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
deco_bac06_device::set_gfx_region_wide(*device,1,1,2);
@@ -245,6 +246,7 @@ static MACHINE_CONFIG_START( stadhero, stadhero_state )
MCFG_DEVICE_ADD("spritegen", DECO_MXC06, 0)
deco_mxc06_device::set_gfx_region(*device, 2);
MCFG_DECO_MXC06_GFXDECODE("gfxdecode")
+ MCFG_DECO_MXC06_PALETTE("palette")
/* sound hardware */
diff --git a/src/mame/drivers/starcrus.c b/src/mame/drivers/starcrus.c
index dd967b3a999..bf1ac48abfc 100644
--- a/src/mame/drivers/starcrus.c
+++ b/src/mame/drivers/starcrus.c
@@ -151,9 +151,8 @@ static MACHINE_CONFIG_START( starcrus, starcrus_state )
MCFG_SCREEN_UPDATE_DRIVER(starcrus_state, screen_update_starcrus)
MCFG_GFXDECODE_ADD("gfxdecode", starcrus)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/starshp1.c b/src/mame/drivers/starshp1.c
index 29307ed7994..4c52e007823 100644
--- a/src/mame/drivers/starshp1.c
+++ b/src/mame/drivers/starshp1.c
@@ -308,8 +308,8 @@ static MACHINE_CONFIG_START( starshp1, starshp1_state )
MCFG_SCREEN_VBLANK_DRIVER(starshp1_state, screen_eof_starshp1)
MCFG_GFXDECODE_ADD("gfxdecode", starshp1)
- MCFG_PALETTE_LENGTH(19)
-
+ MCFG_PALETTE_ADD("palette", 19)
+ MCFG_PALETTE_INIT_OWNER(starshp1_state, starshp1)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/statriv2.c b/src/mame/drivers/statriv2.c
index 9a9d3d04314..ee700719809 100644
--- a/src/mame/drivers/statriv2.c
+++ b/src/mame/drivers/statriv2.c
@@ -116,7 +116,7 @@ public:
TILE_GET_INFO_MEMBER(horizontal_tile_info);
TILE_GET_INFO_MEMBER(vertical_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(statriv2);
DECLARE_VIDEO_START(vertical);
UINT32 screen_update_statriv2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(statriv2_interrupt);
@@ -158,14 +158,14 @@ TILE_GET_INFO_MEMBER(statriv2_state::vertical_tile_info)
*
*************************************/
-void statriv2_state::palette_init()
+PALETTE_INIT_MEMBER(statriv2_state, statriv2)
{
int i;
for (i = 0; i < 64; i++)
{
- palette_set_color_rgb(machine(), 2*i+0, pal1bit(i >> 2), pal1bit(i >> 0), pal1bit(i >> 1));
- palette_set_color_rgb(machine(), 2*i+1, pal1bit(i >> 5), pal1bit(i >> 3), pal1bit(i >> 4));
+ palette.set_pen_color(2*i+0, pal1bit(i >> 2), pal1bit(i >> 0), pal1bit(i >> 1));
+ palette.set_pen_color(2*i+1, pal1bit(i >> 5), pal1bit(i >> 3), pal1bit(i >> 4));
}
}
@@ -205,7 +205,7 @@ WRITE8_MEMBER(statriv2_state::statriv2_videoram_w)
UINT32 statriv2_state::screen_update_statriv2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
if (m_tms->screen_reset())
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
else
m_tilemap->draw(screen, bitmap, cliprect, 0, 0);
return 0;
@@ -626,8 +626,8 @@ static MACHINE_CONFIG_START( statriv2, statriv2_state )
MCFG_TMS9927_ADD("tms", MASTER_CLOCK/2, tms9927_intf)
MCFG_GFXDECODE_ADD("gfxdecode", horizontal)
- MCFG_PALETTE_LENGTH(2*64)
-
+ MCFG_PALETTE_ADD("palette", 2*64)
+ MCFG_PALETTE_INIT_OWNER(statriv2_state, statriv2)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/stfight.c b/src/mame/drivers/stfight.c
index fabec1c1b5a..1f75184652b 100644
--- a/src/mame/drivers/stfight.c
+++ b/src/mame/drivers/stfight.c
@@ -562,7 +562,8 @@ static MACHINE_CONFIG_START( stfight, stfight_state )
MCFG_VIDEO_START_OVERRIDE(stfight_state,stfight)
MCFG_GFXDECODE_ADD("gfxdecode", stfight)
- MCFG_PALETTE_LENGTH(16*4+16*16+16*16+16*16)
+ MCFG_PALETTE_ADD("palette", 16*4+16*16+16*16+16*16)
+ MCFG_PALETTE_INIT_OWNER(stfight_state, stfight)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/stlforce.c b/src/mame/drivers/stlforce.c
index 370985c5d38..3ece7c027dc 100644
--- a/src/mame/drivers/stlforce.c
+++ b/src/mame/drivers/stlforce.c
@@ -100,7 +100,7 @@ static ADDRESS_MAP_START( stlforce_map, AS_PROGRAM, 16, stlforce_state )
AM_RANGE(0x103400, 0x1037ff) AM_RAM AM_SHARE("mlow_scrollram")
AM_RANGE(0x103800, 0x103bff) AM_RAM AM_SHARE("mhigh_scrollram")
AM_RANGE(0x103c00, 0x103fff) AM_RAM AM_SHARE("vidattrram")
- AM_RANGE(0x104000, 0x104fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x104000, 0x104fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x105000, 0x107fff) AM_RAM /* unknown / ram */
AM_RANGE(0x108000, 0x108fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x109000, 0x11ffff) AM_RAM
@@ -201,8 +201,8 @@ static MACHINE_CONFIG_START( stlforce, stlforce_state )
MCFG_SCREEN_UPDATE_DRIVER(stlforce_state, screen_update_stlforce)
MCFG_GFXDECODE_ADD("gfxdecode", stlforce)
- MCFG_PALETTE_LENGTH(0x800)
-
+ MCFG_PALETTE_ADD("palette", 0x800)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/strnskil.c b/src/mame/drivers/strnskil.c
index bacdbba0fb4..b85c8897006 100644
--- a/src/mame/drivers/strnskil.c
+++ b/src/mame/drivers/strnskil.c
@@ -352,8 +352,8 @@ static MACHINE_CONFIG_START( strnskil, strnskil_state )
MCFG_SCREEN_UPDATE_DRIVER(strnskil_state, screen_update_strnskil)
MCFG_GFXDECODE_ADD("gfxdecode", strnskil)
- MCFG_PALETTE_LENGTH(1024)
-
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_INIT_OWNER(strnskil_state, strnskil)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/stuntair.c b/src/mame/drivers/stuntair.c
index 6512a97fc8a..8b38eab1eb0 100644
--- a/src/mame/drivers/stuntair.c
+++ b/src/mame/drivers/stuntair.c
@@ -153,12 +153,12 @@ PALETTE_INIT_MEMBER(stuntair_state, stuntair)
int g = (data&0x38)>>3;
int r = (data&0x07)>>0;
- palette_set_color(machine(),i,rgb_t(r<<5,g<<5,b<<6));
+ palette.set_pen_color(i,rgb_t(r<<5,g<<5,b<<6));
}
// just set the FG layer to black and white
- palette_set_color(machine(),0x100,rgb_t(0x00,0x00,0x00));
- palette_set_color(machine(),0x101,rgb_t(0xff,0xff,0xff));
+ palette.set_pen_color(0x100,rgb_t(0x00,0x00,0x00));
+ palette.set_pen_color(0x101,rgb_t(0xff,0xff,0xff));
}
@@ -213,7 +213,7 @@ void stuntair_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
y = 240 - y;
- gfx->transpen(bitmap,cliprect,tile,colour,flipx,flipy,x,y,0);
+ gfx->transpen(m_palette,bitmap,cliprect,tile,colour,flipx,flipy,x,y,0);
}
}
@@ -541,9 +541,9 @@ static MACHINE_CONFIG_START( stuntair, stuntair_state )
MCFG_SCREEN_UPDATE_DRIVER(stuntair_state, screen_update_stuntair)
MCFG_GFXDECODE_ADD("gfxdecode", stuntair)
- MCFG_PALETTE_LENGTH(0x100+2)
+ MCFG_PALETTE_ADD("palette", 0x100+2)
- MCFG_PALETTE_INIT_OVERRIDE(stuntair_state, stuntair)
+ MCFG_PALETTE_INIT_OWNER(stuntair_state, stuntair)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") // stereo?
diff --git a/src/mame/drivers/stv.c b/src/mame/drivers/stv.c
index 3cf630217b7..bc6a632df13 100644
--- a/src/mame/drivers/stv.c
+++ b/src/mame/drivers/stv.c
@@ -1013,7 +1013,7 @@ static MACHINE_CONFIG_START( stv, stv_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK_320/8, 427, 0, 320, 263, 0, 224)
MCFG_SCREEN_UPDATE_DRIVER(stv_state, screen_update_stv_vdp2)
- MCFG_PALETTE_LENGTH(2048+(2048*2))//standard palette + extra memory for rgb brightness.
+ MCFG_PALETTE_ADD("palette", 2048+(2048*2))//standard palette + extra memory for rgb brightness.
MCFG_GFXDECODE_ADD("gfxdecode", stv)
diff --git a/src/mame/drivers/sub.c b/src/mame/drivers/sub.c
index 23c5680bb97..aba00241f17 100644
--- a/src/mame/drivers/sub.c
+++ b/src/mame/drivers/sub.c
@@ -137,7 +137,7 @@ public:
DECLARE_WRITE8_MEMBER(subm_to_sound_w);
DECLARE_WRITE8_MEMBER(nmi_mask_w);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(sub);
UINT32 screen_update_sub(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(subm_sound_irq);
required_device<cpu_device> m_maincpu;
@@ -167,8 +167,8 @@ UINT32 sub_state::screen_update_sub(screen_device &screen, bitmap_ind16 &bitmap,
tile += (m_attr[count]&0xe0)<<3;
col = (m_attr[count]&0x1f);
- gfx->opaque(bitmap,cliprect,tile,col+0x40,0,0,x*8,(y*8)-y_offs);
- gfx->opaque(bitmap,cliprect,tile,col+0x40,0,0,x*8,(y*8)-y_offs+256);
+ gfx->opaque(m_palette,bitmap,cliprect,tile,col+0x40,0,0,x*8,(y*8)-y_offs);
+ gfx->opaque(m_palette,bitmap,cliprect,tile,col+0x40,0,0,x*8,(y*8)-y_offs+256);
count++;
}
@@ -200,7 +200,7 @@ UINT32 sub_state::screen_update_sub(screen_device &screen, bitmap_ind16 &bitmap,
if(fx) { x = 0xe0 - x; }
fy = (spriteram_2[i+0] & 0x40) ? 0 : 1;
- gfx_1->transpen(bitmap,cliprect,spr_offs,col,0,fy,x,y,0);
+ gfx_1->transpen(m_palette,bitmap,cliprect,spr_offs,col,0,fy,x,y,0);
}
}
@@ -220,8 +220,8 @@ UINT32 sub_state::screen_update_sub(screen_device &screen, bitmap_ind16 &bitmap,
if(x >= 28)
{
- gfx->opaque(bitmap,cliprect,tile,col+0x40,0,0,x*8,(y*8)-y_offs);
- gfx->opaque(bitmap,cliprect,tile,col+0x40,0,0,x*8,(y*8)-y_offs+256);
+ gfx->opaque(m_palette,bitmap,cliprect,tile,col+0x40,0,0,x*8,(y*8)-y_offs);
+ gfx->opaque(m_palette,bitmap,cliprect,tile,col+0x40,0,0,x*8,(y*8)-y_offs+256);
}
count++;
@@ -394,15 +394,12 @@ static GFXDECODE_START( sub )
GFXDECODE_ENTRY( "gfx2", 0, tiles16x32_layout, 0, 0x80 )
GFXDECODE_END
-void sub_state::palette_init()
+PALETTE_INIT_MEMBER(sub_state, sub)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
UINT8* lookup = memregion("proms2")->base();
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
for (i = 0;i < 0x100;i++)
{
int r,g,b;
@@ -410,8 +407,8 @@ void sub_state::palette_init()
g = (color_prom[0x100] >> 0);
b = (color_prom[0x200] >> 0);
- //colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
- colortable_palette_set_color(machine().colortable, i, rgb_t(pal4bit(r), pal4bit(g), pal4bit(b)));
+ //palette.set_indirect_color(i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(pal4bit(r), pal4bit(g), pal4bit(b)));
color_prom++;
}
@@ -420,7 +417,7 @@ void sub_state::palette_init()
for (i = 0;i < 0x400;i++)
{
UINT8 ctabentry = lookup[i+0x400] | (lookup[i+0x000] << 4);
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -455,8 +452,8 @@ static MACHINE_CONFIG_START( sub, sub_state )
MCFG_SCREEN_UPDATE_DRIVER(sub_state, screen_update_sub)
MCFG_GFXDECODE_ADD("gfxdecode", sub)
- MCFG_PALETTE_LENGTH(0x400)
-
+ MCFG_PALETTE_ADD("palette", 0x400)
+ MCFG_PALETTE_INIT_OWNER(sub_state, sub)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/subs.c b/src/mame/drivers/subs.c
index 32dd6a7dc13..19840ed451f 100644
--- a/src/mame/drivers/subs.c
+++ b/src/mame/drivers/subs.c
@@ -29,12 +29,12 @@
*
*************************************/
-void subs_state::palette_init()
+PALETTE_INIT_MEMBER(subs_state, subs)
{
- palette_set_color(machine(),0,rgb_t(0x00,0x00,0x00)); /* BLACK - modified on video invert */
- palette_set_color(machine(),1,rgb_t(0xff,0xff,0xff)); /* WHITE - modified on video invert */
- palette_set_color(machine(),2,rgb_t(0x00,0x00,0x00)); /* BLACK - modified on video invert */
- palette_set_color(machine(),3,rgb_t(0xff,0xff,0xff)); /* WHITE - modified on video invert*/
+ palette.set_pen_color(0,rgb_t(0x00,0x00,0x00)); /* BLACK - modified on video invert */
+ palette.set_pen_color(1,rgb_t(0xff,0xff,0xff)); /* WHITE - modified on video invert */
+ palette.set_pen_color(2,rgb_t(0x00,0x00,0x00)); /* BLACK - modified on video invert */
+ palette.set_pen_color(3,rgb_t(0xff,0xff,0xff)); /* WHITE - modified on video invert*/
}
@@ -184,7 +184,10 @@ static MACHINE_CONFIG_START( subs, subs_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", subs)
- MCFG_PALETTE_LENGTH(4)
+
+ MCFG_PALETTE_ADD("palette", 4)
+ MCFG_PALETTE_INIT_OWNER(subs_state, subs)
+
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
diff --git a/src/mame/drivers/subsino.c b/src/mame/drivers/subsino.c
index 6fc63fa0ca5..479b1f600c0 100644
--- a/src/mame/drivers/subsino.c
+++ b/src/mame/drivers/subsino.c
@@ -602,7 +602,7 @@ PALETTE_INIT_MEMBER(subsino_state,subsino_2proms)
bit2 = (val >> 2) & 0x01;
r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -629,7 +629,7 @@ PALETTE_INIT_MEMBER(subsino_state,subsino_3proms)
bit2 = (val >> 0) & 0x01;
r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -1086,7 +1086,7 @@ WRITE8_MEMBER(subsino_state::colordac_w)
case 1:
m_stisub_colorram[m_colordac_offs] = data;
- palette_set_color_rgb(machine(), m_colordac_offs/3,
+ m_palette->set_pen_color(m_colordac_offs/3,
pal6bit(m_stisub_colorram[(m_colordac_offs/3)*3+0]),
pal6bit(m_stisub_colorram[(m_colordac_offs/3)*3+1]),
pal6bit(m_stisub_colorram[(m_colordac_offs/3)*3+2])
@@ -2817,8 +2817,8 @@ static MACHINE_CONFIG_START( victor21, subsino_state )
MCFG_GFXDECODE_ADD("gfxdecode", subsino_depth3)
- MCFG_PALETTE_LENGTH(0x100)
- MCFG_PALETTE_INIT_OVERRIDE(subsino_state,subsino_2proms)
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_INIT_OWNER(subsino_state,subsino_2proms)
MCFG_VIDEO_START_OVERRIDE(subsino_state,subsino)
@@ -2859,8 +2859,8 @@ static MACHINE_CONFIG_START( crsbingo, subsino_state )
MCFG_GFXDECODE_ADD("gfxdecode", subsino_depth4)
- MCFG_PALETTE_LENGTH(0x100)
- MCFG_PALETTE_INIT_OVERRIDE(subsino_state,subsino_2proms)
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_INIT_OWNER(subsino_state,subsino_2proms)
MCFG_VIDEO_START_OVERRIDE(subsino_state,subsino)
@@ -2890,8 +2890,8 @@ static MACHINE_CONFIG_START( srider, subsino_state )
MCFG_GFXDECODE_ADD("gfxdecode", subsino_depth4)
- MCFG_PALETTE_LENGTH(0x100)
- MCFG_PALETTE_INIT_OVERRIDE(subsino_state,subsino_3proms)
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_INIT_OWNER(subsino_state,subsino_3proms)
MCFG_VIDEO_START_OVERRIDE(subsino_state,subsino)
@@ -2931,8 +2931,8 @@ static MACHINE_CONFIG_START( tisub, subsino_state )
MCFG_GFXDECODE_ADD("gfxdecode", subsino_depth4_reels)
- MCFG_PALETTE_LENGTH(0x100)
- MCFG_PALETTE_INIT_OVERRIDE(subsino_state,subsino_3proms)
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_INIT_OWNER(subsino_state,subsino_3proms)
MCFG_VIDEO_START_OVERRIDE(subsino_state,subsino_reels)
@@ -2961,8 +2961,8 @@ static MACHINE_CONFIG_START( stisub, subsino_state )
MCFG_GFXDECODE_ADD("gfxdecode", subsino_stisub)
- MCFG_PALETTE_LENGTH(0x100)
- //MCFG_PALETTE_INIT_OVERRIDE(subsino_state,subsino_3proms)
+ MCFG_PALETTE_ADD("palette", 0x100)
+ //MCFG_PALETTE_INIT_OWNER(subsino_state,subsino_3proms)
MCFG_VIDEO_START_OVERRIDE(subsino_state,stisub)
diff --git a/src/mame/drivers/subsino2.c b/src/mame/drivers/subsino2.c
index 5c36c3a93c1..45238338031 100644
--- a/src/mame/drivers/subsino2.c
+++ b/src/mame/drivers/subsino2.c
@@ -692,7 +692,7 @@ UINT32 subsino2_state::screen_update_subsino2(screen_device &screen, bitmap_ind1
}
}
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
if (layers_ctrl & 1)
{
@@ -773,7 +773,7 @@ WRITE8_MEMBER(subsino2_state::hm86171_colorram_w)
case 1:
m_hm86171_colorram[m_hm86171_offs] = data;
- palette_set_color_rgb(machine(), m_hm86171_offs/3,
+ m_palette->set_pen_color(m_hm86171_offs/3,
pal6bit(m_hm86171_colorram[(m_hm86171_offs/3)*3+0]),
pal6bit(m_hm86171_colorram[(m_hm86171_offs/3)*3+1]),
pal6bit(m_hm86171_colorram[(m_hm86171_offs/3)*3+2])
@@ -2143,8 +2143,8 @@ static MACHINE_CONFIG_START( bishjan, subsino2_state )
MCFG_SCREEN_REFRESH_RATE( 60 )
MCFG_SCREEN_UPDATE_DRIVER(subsino2_state, screen_update_subsino2)
- MCFG_GFXDECODE_ADD("gfxdecode", ss9601 )
- MCFG_PALETTE_LENGTH( 256 )
+ MCFG_GFXDECODE_ADD("gfxdecode", ss9601 )
+ MCFG_PALETTE_ADD( "palette", 256 )
MCFG_VIDEO_START_OVERRIDE(subsino2_state, subsino2 )
@@ -2171,8 +2171,8 @@ static MACHINE_CONFIG_START( mtrain, subsino2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // game reads vblank state
MCFG_SCREEN_UPDATE_DRIVER(subsino2_state, screen_update_subsino2)
- MCFG_GFXDECODE_ADD("gfxdecode", ss9601 )
- MCFG_PALETTE_LENGTH( 256 )
+ MCFG_GFXDECODE_ADD("gfxdecode", ss9601 )
+ MCFG_PALETTE_ADD( "palette", 256 )
MCFG_VIDEO_START_OVERRIDE(subsino2_state, mtrain )
@@ -2202,8 +2202,8 @@ static MACHINE_CONFIG_START( saklove, subsino2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // game reads vblank state
MCFG_SCREEN_UPDATE_DRIVER(subsino2_state, screen_update_subsino2)
- MCFG_GFXDECODE_ADD("gfxdecode", ss9601 )
- MCFG_PALETTE_LENGTH( 256 )
+ MCFG_GFXDECODE_ADD("gfxdecode", ss9601 )
+ MCFG_PALETTE_ADD( "palette", 256 )
MCFG_VIDEO_START_OVERRIDE(subsino2_state, subsino2 )
@@ -2237,8 +2237,8 @@ static MACHINE_CONFIG_START( xplan, subsino2_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // game reads vblank state
MCFG_SCREEN_UPDATE_DRIVER(subsino2_state, screen_update_subsino2)
- MCFG_GFXDECODE_ADD("gfxdecode", ss9601 )
- MCFG_PALETTE_LENGTH( 256 )
+ MCFG_GFXDECODE_ADD("gfxdecode", ss9601 )
+ MCFG_PALETTE_ADD( "palette", 256 )
MCFG_VIDEO_START_OVERRIDE(subsino2_state, subsino2 )
diff --git a/src/mame/drivers/summit.c b/src/mame/drivers/summit.c
index 5b8ad4e4bc7..647ab01ebc6 100644
--- a/src/mame/drivers/summit.c
+++ b/src/mame/drivers/summit.c
@@ -33,7 +33,7 @@ public:
required_shared_ptr<UINT8> m_vram;
DECLARE_WRITE8_MEMBER(out_w);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(summit);
UINT32 screen_update_summit(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -57,7 +57,7 @@ UINT32 summit_state::screen_update_summit(screen_device &screen, bitmap_ind16 &b
for (x=0;x<32;x++)
{
int tile = (m_vram[count] | ((m_attr[count]&1)<<8) );
- gfx->opaque(bitmap,cliprect,tile,0,0,0,x*8,y*8);
+ gfx->opaque(m_palette,bitmap,cliprect,tile,0,0,0,x*8,y*8);
count++;
}
@@ -295,7 +295,7 @@ static GFXDECODE_START( summit )
GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0, 1 )
GFXDECODE_END
-void summit_state::palette_init()
+PALETTE_INIT_MEMBER(summit_state, summit)
{
}
@@ -315,8 +315,8 @@ static MACHINE_CONFIG_START( summit, summit_state )
MCFG_GFXDECODE_ADD("gfxdecode", summit)
- MCFG_PALETTE_LENGTH(256)
-
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(summit_state, summit)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/suna16.c b/src/mame/drivers/suna16.c
index 9c6d492cb04..b20a220ff2e 100644
--- a/src/mame/drivers/suna16.c
+++ b/src/mame/drivers/suna16.c
@@ -821,7 +821,7 @@ static MACHINE_CONFIG_START( bssoccer, suna16_state )
MCFG_SCREEN_UPDATE_DRIVER(suna16_state, screen_update_suna16)
MCFG_GFXDECODE_ADD("gfxdecode", suna16)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
/* sound hardware */
@@ -879,7 +879,7 @@ static MACHINE_CONFIG_START( uballoon, suna16_state )
MCFG_SCREEN_UPDATE_DRIVER(suna16_state, screen_update_suna16)
MCFG_GFXDECODE_ADD("gfxdecode", suna16)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
/* sound hardware */
@@ -927,7 +927,7 @@ static MACHINE_CONFIG_START( sunaq, suna16_state )
MCFG_SCREEN_UPDATE_DRIVER(suna16_state, screen_update_suna16)
MCFG_GFXDECODE_ADD("gfxdecode", suna16)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
/* sound hardware */
@@ -988,7 +988,7 @@ static MACHINE_CONFIG_START( bestbest, suna16_state )
MCFG_SCREEN_UPDATE_DRIVER(suna16_state, screen_update_bestbest)
MCFG_GFXDECODE_ADD("gfxdecode", bestbest)
- MCFG_PALETTE_LENGTH(256*8)
+ MCFG_PALETTE_ADD("palette", 256*8)
/* sound hardware */
diff --git a/src/mame/drivers/suna8.c b/src/mame/drivers/suna8.c
index 9dc4266bd86..4c26875aefc 100644
--- a/src/mame/drivers/suna8.c
+++ b/src/mame/drivers/suna8.c
@@ -578,7 +578,7 @@ static ADDRESS_MAP_START( hardhead_map, AS_PROGRAM, 8, suna8_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // Banked ROM
AM_RANGE(0xc000, 0xd7ff) AM_RAM // RAM
- AM_RANGE(0xd800, 0xd9ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_byte_be_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0xd800, 0xd9ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0xda00, 0xda00) AM_RAM_READ(hardhead_ip_r) AM_SHARE("hardhead_ip") // Input Port Select
AM_RANGE(0xda80, 0xda80) AM_READ(soundlatch2_byte_r) AM_WRITE(hardhead_bankswitch_w ) // ROM Banking
AM_RANGE(0xdb00, 0xdb00) AM_WRITE(soundlatch_byte_w ) // To Sound CPU
@@ -654,7 +654,7 @@ static ADDRESS_MAP_START( rranger_map, AS_PROGRAM, 8, suna8_state )
AM_RANGE(0xc280, 0xc280) AM_WRITENOP // ? NMI Ack
AM_RANGE(0xc280, 0xc280) AM_READ_PORT("DSW1") // DSW 1
AM_RANGE(0xc2c0, 0xc2c0) AM_READ_PORT("DSW2") // DSW 2
- AM_RANGE(0xc600, 0xc7ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_byte_be_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0xc600, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0xc800, 0xdfff) AM_RAM // Work RAM
AM_RANGE(0xe000, 0xffff) AM_RAM_WRITE(suna8_spriteram_w) AM_SHARE("spriteram") // Sprites
ADDRESS_MAP_END
@@ -949,7 +949,7 @@ static ADDRESS_MAP_START( hardhea2_map, AS_PROGRAM, 8, suna8_state )
AM_RANGE(0xc533, 0xc533) AM_WRITE(hardhea2_rambank_0_w )
// Protection ***
- AM_RANGE(0xc600, 0xc7ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_byte_be_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0xc600, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0xc800, 0xdfff) AM_RAMBANK("bank2") // Work RAM (Banked)
AM_RANGE(0xe000, 0xffff) AM_READWRITE(suna8_banked_spriteram_r, suna8_banked_spriteram_w) // Sprites (Banked)
ADDRESS_MAP_END
@@ -1053,7 +1053,7 @@ static ADDRESS_MAP_START( starfigh_map, AS_PROGRAM, 8, suna8_state )
AM_RANGE(0xc500, 0xc500) AM_WRITE(starfigh_sound_latch_w ) // To Sound CPU (can be disabled)
// (c522 + R & 0x1f) write?
- AM_RANGE(0xc600, 0xc7ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_byte_be_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0xc600, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0xc800, 0xdfff) AM_RAM // Work RAM
AM_RANGE(0xe000, 0xffff) AM_READWRITE(suna8_banked_spriteram_r, suna8_banked_spriteram_w) // Sprites (Banked)
ADDRESS_MAP_END
@@ -1181,7 +1181,7 @@ static ADDRESS_MAP_START( sparkman_map, AS_PROGRAM, 8, suna8_state )
AM_RANGE(0xc480, 0xc480) AM_WRITE(sparkman_coin_counter_w ) // Coin Counter
AM_RANGE(0xc500, 0xc57f) AM_WRITE(starfigh_sound_latch_w ) // To Sound CPU (can be disabled)
- AM_RANGE(0xc600, 0xc7ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_byte_be_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0xc600, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0xc800, 0xdfff) AM_RAM_WRITE(suna8_wram_w) AM_SHARE("wram") // RAM
AM_RANGE(0xe000, 0xffff) AM_READWRITE(suna8_banked_spriteram_r, suna8_banked_spriteram_w) // Sprites (Banked)
ADDRESS_MAP_END
@@ -1841,7 +1841,8 @@ static MACHINE_CONFIG_START( hardhead, suna8_state )
MCFG_SCREEN_UPDATE_DRIVER(suna8_state, screen_update_suna8)
MCFG_GFXDECODE_ADD("gfxdecode", suna8)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
MCFG_VIDEO_START_OVERRIDE(suna8_state,suna8_textdim12)
@@ -1902,7 +1903,8 @@ static MACHINE_CONFIG_START( rranger, suna8_state )
MCFG_SCREEN_UPDATE_DRIVER(suna8_state, screen_update_suna8)
MCFG_GFXDECODE_ADD("gfxdecode", suna8)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
MCFG_VIDEO_START_OVERRIDE(suna8_state,suna8_textdim8)
@@ -1962,7 +1964,8 @@ static MACHINE_CONFIG_START( brickzn, suna8_state )
MCFG_SCREEN_UPDATE_DRIVER(suna8_state, screen_update_suna8)
MCFG_GFXDECODE_ADD("gfxdecode", suna8)
- MCFG_PALETTE_LENGTH(256 * 2) // 2 x Palette RAM
+ MCFG_PALETTE_ADD("palette", 256 * 2) // 2 x Palette RAM
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
MCFG_VIDEO_START_OVERRIDE(suna8_state,suna8_brickzn)
@@ -2022,7 +2025,9 @@ static MACHINE_CONFIG_DERIVED( hardhea2, brickzn )
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", suna8_state, hardhea2_interrupt, "screen", 0, 1)
MCFG_MACHINE_RESET_OVERRIDE(suna8_state,hardhea2)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
MACHINE_CONFIG_END
@@ -2062,7 +2067,8 @@ static MACHINE_CONFIG_START( starfigh, suna8_state )
MCFG_SCREEN_UPDATE_DRIVER(suna8_state, screen_update_suna8)
MCFG_GFXDECODE_ADD("gfxdecode", suna8)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
MCFG_VIDEO_START_OVERRIDE(suna8_state,suna8_starfigh)
@@ -2109,7 +2115,8 @@ static MACHINE_CONFIG_START( sparkman, suna8_state )
MCFG_SCREEN_UPDATE_DRIVER(suna8_state, screen_update_suna8)
MCFG_GFXDECODE_ADD("gfxdecode", suna8_x2) // 2 sprite "chips"
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
MCFG_VIDEO_START_OVERRIDE(suna8_state,suna8_sparkman)
diff --git a/src/mame/drivers/supbtime.c b/src/mame/drivers/supbtime.c
index 6a6ca76b49a..5fa987d230a 100644
--- a/src/mame/drivers/supbtime.c
+++ b/src/mame/drivers/supbtime.c
@@ -62,7 +62,7 @@ static ADDRESS_MAP_START( supbtime_map, AS_PROGRAM, 16, supbtime_state )
AM_RANGE(0x104000, 0x11ffff) AM_WRITENOP /* Nothing there */
AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x120800, 0x13ffff) AM_WRITENOP /* Nothing there */
- AM_RANGE(0x140000, 0x1407ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x140000, 0x1407ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x180000, 0x18000f) AM_READ(supbtime_controls_r)
AM_RANGE(0x18000a, 0x18000d) AM_WRITENOP
AM_RANGE(0x1a0000, 0x1a0001) AM_WRITE(sound_w)
@@ -77,7 +77,7 @@ static ADDRESS_MAP_START( chinatwn_map, AS_PROGRAM, 16, supbtime_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x100000, 0x100001) AM_WRITE(sound_w)
AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x140000, 0x1407ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x140000, 0x1407ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x180000, 0x18000f) AM_READ(supbtime_controls_r)
AM_RANGE(0x18000a, 0x18000d) AM_WRITENOP
AM_RANGE(0x1a0000, 0x1a3fff) AM_RAM
@@ -342,14 +342,17 @@ static MACHINE_CONFIG_START( supbtime, supbtime_state )
MCFG_SCREEN_UPDATE_DRIVER(supbtime_state, screen_update_supbtime)
MCFG_GFXDECODE_ADD("gfxdecode", supbtime)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_DECO16IC_ADD("tilegen1", supbtime_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 2);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -386,14 +389,17 @@ static MACHINE_CONFIG_START( chinatwn, supbtime_state )
MCFG_SCREEN_UPDATE_DRIVER(supbtime_state, screen_update_supbtime)
MCFG_GFXDECODE_ADD("gfxdecode", supbtime)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_DECO16IC_ADD("tilegen1", supbtime_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 2);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/supdrapo.c b/src/mame/drivers/supdrapo.c
index d1b56752dca..5d15c45a1c2 100644
--- a/src/mame/drivers/supdrapo.c
+++ b/src/mame/drivers/supdrapo.c
@@ -93,7 +93,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(supdrapo);
UINT32 screen_update_supdrapo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -125,7 +125,7 @@ UINT32 supdrapo_state::screen_update_supdrapo(screen_device &screen, bitmap_ind1
/* Global Column Coloring, GUESS! */
color = m_col_line[(x*2) + 1] ? (m_col_line[(x*2) + 1] - 1) & 7 : 0;
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, tile,color, 0, 0, x*8, y*8);
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, tile,color, 0, 0, x*8, y*8);
count++;
}
@@ -136,7 +136,7 @@ UINT32 supdrapo_state::screen_update_supdrapo(screen_device &screen, bitmap_ind1
/*Maybe bit 2 & 3 of the second color prom are intensity bits? */
-void supdrapo_state::palette_init()
+PALETTE_INIT_MEMBER(supdrapo_state, supdrapo)
{
const UINT8 *color_prom = memregion("proms")->base();
int bit0, bit1, bit2 , r, g, b;
@@ -159,7 +159,7 @@ void supdrapo_state::palette_init()
bit2 = (color_prom[0x100] >> 1) & 0x01;
r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
color_prom++;
}
}
@@ -465,8 +465,8 @@ static MACHINE_CONFIG_START( supdrapo, supdrapo_state )
MCFG_SCREEN_UPDATE_DRIVER(supdrapo_state, screen_update_supdrapo)
MCFG_GFXDECODE_ADD("gfxdecode", supdrapo)
- MCFG_PALETTE_LENGTH(0x100)
-
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_INIT_OWNER(supdrapo_state, supdrapo)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/superchs.c b/src/mame/drivers/superchs.c
index 1477e7b3ad8..ba9be62b178 100644
--- a/src/mame/drivers/superchs.c
+++ b/src/mame/drivers/superchs.c
@@ -103,7 +103,7 @@ WRITE32_MEMBER(superchs_state::superchs_palette_w)
g = (a &0xff00) >> 8;
b = (a &0xff);
- palette_set_color(machine(),offset,rgb_t(r,g,b));
+ m_palette->set_pen_color(offset,rgb_t(r,g,b));
}
READ32_MEMBER(superchs_state::superchs_input_r)
@@ -346,7 +346,7 @@ static MACHINE_CONFIG_START( superchs, superchs_state )
MCFG_SCREEN_UPDATE_DRIVER(superchs_state, screen_update_superchs)
MCFG_GFXDECODE_ADD("gfxdecode", superchs)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
MCFG_TC0480SCP_ADD("tc0480scp", superchs_tc0480scp_intf)
diff --git a/src/mame/drivers/supercrd.c b/src/mame/drivers/supercrd.c
index 250455e98fc..cbb793dbf88 100644
--- a/src/mame/drivers/supercrd.c
+++ b/src/mame/drivers/supercrd.c
@@ -211,7 +211,7 @@ PALETTE_INIT_MEMBER(supercrd_state, supercrd)
2, resistances_g, weights_g, 100, 0);
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -230,7 +230,7 @@ PALETTE_INIT_MEMBER(supercrd_state, supercrd)
bit1 = (color_prom[i] >> 7) & 0x01;
g = combine_2_weights(weights_g, bit0, bit1);
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
}
@@ -475,8 +475,8 @@ static MACHINE_CONFIG_START( supercrd, supercrd_state )
MCFG_GFXDECODE_ADD("gfxdecode", supercrd)
- MCFG_PALETTE_LENGTH(0x200)
- MCFG_PALETTE_INIT_OVERRIDE(supercrd_state, supercrd)
+ MCFG_PALETTE_ADD("palette", 0x200)
+ MCFG_PALETTE_INIT_OWNER(supercrd_state, supercrd)
MCFG_VIDEO_START_OVERRIDE(supercrd_state, supercrd)
// MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK/8, mc6845_intf)
diff --git a/src/mame/drivers/superdq.c b/src/mame/drivers/superdq.c
index 75c19240ea5..d5e872fc844 100644
--- a/src/mame/drivers/superdq.c
+++ b/src/mame/drivers/superdq.c
@@ -52,7 +52,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(superdq);
UINT32 screen_update_superdq(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(superdq_vblank);
required_device<cpu_device> m_maincpu;
@@ -86,7 +86,7 @@ UINT32 superdq_state::screen_update_superdq(screen_device &screen, bitmap_rgb32
*
*************************************/
-void superdq_state::palette_init()
+PALETTE_INIT_MEMBER(superdq_state, superdq)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -100,7 +100,7 @@ void superdq_state::palette_init()
2, &resistances[1], bweights, 220, 0);
/* initialize the palette with these colors */
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2;
int r, g, b;
@@ -122,7 +122,7 @@ void superdq_state::palette_init()
bit1 = (color_prom[i] >> 0) & 0x01;
b = combine_2_weights(bweights, bit1, bit0);
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -170,9 +170,9 @@ WRITE8_MEMBER(superdq_state::superdq_io_w)
{
int index = black_color_entries[i];
if (data & 0x80)
- palette_set_color(machine(), index, palette_get_color(machine(), index) & rgb_t(0,255,255,255));
+ m_palette->set_pen_color(index, m_palette->pen_color(index) & rgb_t(0,255,255,255));
else
- palette_set_color(machine(), index, palette_get_color(machine(), index) | rgb_t(255,0,0,0));
+ m_palette->set_pen_color(index, m_palette->pen_color(index) | rgb_t(255,0,0,0));
}
/*
@@ -336,8 +336,8 @@ static MACHINE_CONFIG_START( superdq, superdq_state )
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
MCFG_GFXDECODE_ADD("gfxdecode", superdq)
- MCFG_PALETTE_LENGTH(32)
-
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(superdq_state, superdq)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/superqix.c b/src/mame/drivers/superqix.c
index 6aa79505e4f..dfffe55d1ce 100644
--- a/src/mame/drivers/superqix.c
+++ b/src/mame/drivers/superqix.c
@@ -561,7 +561,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, superqix_state )
ADDRESS_MAP_END
static ADDRESS_MAP_START( pbillian_port_map, AS_IO, 8, superqix_state )
- AM_RANGE(0x0000, 0x01ff) AM_RAM_WRITE(paletteram_BBGGRRII_byte_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0000, 0x01ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0401, 0x0401) AM_DEVREAD("aysnd", ay8910_device, data_r)
AM_RANGE(0x0402, 0x0403) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
AM_RANGE(0x0408, 0x0408) AM_READ(pbillian_from_mcu_r)
@@ -574,7 +574,7 @@ static ADDRESS_MAP_START( pbillian_port_map, AS_IO, 8, superqix_state )
ADDRESS_MAP_END
static ADDRESS_MAP_START( hotsmash_port_map, AS_IO, 8, superqix_state )
- AM_RANGE(0x0000, 0x01ff) AM_RAM_WRITE(paletteram_BBGGRRII_byte_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0000, 0x01ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0401, 0x0401) AM_DEVREAD("aysnd", ay8910_device, data_r)
AM_RANGE(0x0402, 0x0403) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
AM_RANGE(0x0408, 0x0408) AM_READ(hotsmash_from_mcu_r)
@@ -587,7 +587,7 @@ static ADDRESS_MAP_START( hotsmash_port_map, AS_IO, 8, superqix_state )
ADDRESS_MAP_END
static ADDRESS_MAP_START( sqix_port_map, AS_IO, 8, superqix_state )
- AM_RANGE(0x0000, 0x00ff) AM_RAM_WRITE(paletteram_BBGGRRII_byte_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0000, 0x00ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0401, 0x0401) AM_DEVREAD("ay1", ay8910_device, data_r)
AM_RANGE(0x0402, 0x0403) AM_DEVWRITE("ay1", ay8910_device, data_address_w)
AM_RANGE(0x0405, 0x0405) AM_DEVREAD("ay2", ay8910_device, data_r)
@@ -1006,7 +1006,8 @@ static MACHINE_CONFIG_START( pbillian, superqix_state )
MCFG_SCREEN_UPDATE_DRIVER(superqix_state, screen_update_pbillian)
MCFG_GFXDECODE_ADD("gfxdecode", pbillian)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(BBGGRRII)
MCFG_VIDEO_START_OVERRIDE(superqix_state,pbillian)
@@ -1040,7 +1041,8 @@ static MACHINE_CONFIG_START( hotsmash, superqix_state )
MCFG_SCREEN_UPDATE_DRIVER(superqix_state, screen_update_pbillian)
MCFG_GFXDECODE_ADD("gfxdecode", pbillian)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(BBGGRRII)
MCFG_VIDEO_START_OVERRIDE(superqix_state,pbillian)
@@ -1078,7 +1080,8 @@ static MACHINE_CONFIG_START( sqix, superqix_state )
MCFG_SCREEN_UPDATE_DRIVER(superqix_state, screen_update_superqix)
MCFG_GFXDECODE_ADD("gfxdecode", sqix)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(BBGGRRII)
MCFG_VIDEO_START_OVERRIDE(superqix_state,superqix)
@@ -1121,7 +1124,8 @@ static MACHINE_CONFIG_START( sqixbl, superqix_state )
MCFG_SCREEN_UPDATE_DRIVER(superqix_state, screen_update_superqix)
MCFG_GFXDECODE_ADD("gfxdecode", sqix)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(BBGGRRII)
MCFG_VIDEO_START_OVERRIDE(superqix_state,superqix)
diff --git a/src/mame/drivers/superwng.c b/src/mame/drivers/superwng.c
index e76d3797d3b..9a4b988aef6 100644
--- a/src/mame/drivers/superwng.c
+++ b/src/mame/drivers/superwng.c
@@ -74,7 +74,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(superwng);
UINT32 screen_update_superwng(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(superwng_nmi_interrupt);
INTERRUPT_GEN_MEMBER(superwng_sound_nmi_assert);
@@ -155,7 +155,7 @@ UINT32 superwng_state::screen_update_superwng(screen_device &screen, bitmap_ind1
int sy = m_colorram_bg[i];
int color = m_colorram_bg[i + 1] & 0xf;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
color,
flip, flip,
@@ -174,12 +174,12 @@ static const UINT8 superwng_colors[]= /* temporary */
0x00, 0xc0, 0x07, 0x3f, 0x00, 0x1f, 0x3f, 0xff, 0x00, 0x86, 0x05, 0xff, 0x00, 0xc0, 0xe8, 0xff
};
-void superwng_state::palette_init()
+PALETTE_INIT_MEMBER(superwng_state, superwng)
{
int i;
const UINT8 * ptr=superwng_colors;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -197,7 +197,7 @@ void superwng_state::palette_init()
bit1 = BIT(*ptr, 7);
b = 0x4f * bit0 + 0xa8 * bit1;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
++ptr;
}
}
@@ -481,7 +481,8 @@ static MACHINE_CONFIG_START( superwng, superwng_state )
MCFG_GFXDECODE_ADD("gfxdecode", superwng)
- MCFG_PALETTE_LENGTH(0x40)
+ MCFG_PALETTE_ADD("palette", 0x40)
+ MCFG_PALETTE_INIT_OWNER(superwng_state, superwng)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/suprgolf.c b/src/mame/drivers/suprgolf.c
index b91fb5e781b..af6ddcb8fdc 100644
--- a/src/mame/drivers/suprgolf.c
+++ b/src/mame/drivers/suprgolf.c
@@ -107,7 +107,7 @@ void suprgolf_state::video_start()
UINT32 suprgolf_state::screen_update_suprgolf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int x,y,count,color;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
{
count = 0;
@@ -119,7 +119,7 @@ UINT32 suprgolf_state::screen_update_suprgolf(screen_device &screen, bitmap_ind1
color = m_bg_fb[count];
if(x <= cliprect.max_x && y <= cliprect.max_y)
- bitmap.pix16(y, x) = machine().pens[(color & 0x7ff)];
+ bitmap.pix16(y, x) = m_palette->pen((color & 0x7ff));
count++;
}
@@ -136,7 +136,7 @@ UINT32 suprgolf_state::screen_update_suprgolf(screen_device &screen, bitmap_ind1
color = m_fg_fb[count];
if(((m_fg_fb[count] & 0x0f) != 0x0f) && (x <= cliprect.max_x && y <= cliprect.max_y))
- bitmap.pix16(y, x) = machine().pens[(color & 0x7ff)];
+ bitmap.pix16(y, x) = m_palette->pen((color & 0x7ff));
count++;
}
@@ -169,7 +169,7 @@ WRITE8_MEMBER(suprgolf_state::suprgolf_videoram_w)
g = (datax & 0x8000) ? 0 : ((datax)&0x03e0)>>5;
r = (datax & 0x8000) ? 0 : ((datax)&0x7c00)>>10;
- palette_set_color_rgb(machine(), offset, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(offset, pal5bit(r), pal5bit(g), pal5bit(b));
}
else
{
@@ -524,7 +524,7 @@ static MACHINE_CONFIG_START( suprgolf, suprgolf_state )
MCFG_SCREEN_UPDATE_DRIVER(suprgolf_state, screen_update_suprgolf)
MCFG_GFXDECODE_ADD("gfxdecode", suprgolf)
- MCFG_PALETTE_LENGTH(0x800)
+ MCFG_PALETTE_ADD("palette", 0x800)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/suprloco.c b/src/mame/drivers/suprloco.c
index a8af507fe03..509028b117a 100644
--- a/src/mame/drivers/suprloco.c
+++ b/src/mame/drivers/suprloco.c
@@ -178,8 +178,8 @@ static MACHINE_CONFIG_START( suprloco, suprloco_state )
MCFG_SCREEN_UPDATE_DRIVER(suprloco_state, screen_update_suprloco)
MCFG_GFXDECODE_ADD("gfxdecode", suprloco)
- MCFG_PALETTE_LENGTH(512+256)
-
+ MCFG_PALETTE_ADD("palette", 512+256)
+ MCFG_PALETTE_INIT_OWNER(suprloco_state, suprloco)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/suprnova.c b/src/mame/drivers/suprnova.c
index 49264f510e0..a2ca2c9c966 100644
--- a/src/mame/drivers/suprnova.c
+++ b/src/mame/drivers/suprnova.c
@@ -772,7 +772,7 @@ static MACHINE_CONFIG_START( skns, skns_state )
MCFG_SCREEN_UPDATE_DRIVER(skns_state, screen_update_skns)
MCFG_SCREEN_VBLANK_DRIVER(skns_state, screen_eof_skns)
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD("palette", 32768)
MCFG_GFXDECODE_ADD("gfxdecode", skns_bg)
MCFG_DEVICE_ADD("spritegen", SKNS_SPRITE, 0)
diff --git a/src/mame/drivers/suprridr.c b/src/mame/drivers/suprridr.c
index 5b1c966398a..bf61391f424 100644
--- a/src/mame/drivers/suprridr.c
+++ b/src/mame/drivers/suprridr.c
@@ -375,8 +375,8 @@ static MACHINE_CONFIG_START( suprridr, suprridr_state )
MCFG_SCREEN_UPDATE_DRIVER(suprridr_state, screen_update_suprridr)
MCFG_GFXDECODE_ADD("gfxdecode", suprridr)
- MCFG_PALETTE_LENGTH(96)
-
+ MCFG_PALETTE_ADD("palette", 96)
+ MCFG_PALETTE_INIT_OWNER(suprridr_state, suprridr)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/suprslam.c b/src/mame/drivers/suprslam.c
index 3ae7e3e21f4..bef41c0570e 100644
--- a/src/mame/drivers/suprslam.c
+++ b/src/mame/drivers/suprslam.c
@@ -135,7 +135,7 @@ static ADDRESS_MAP_START( suprslam_map, AS_PROGRAM, 16, suprslam_state )
// AM_RANGE(0xff3000, 0xff3001) AM_WRITENOP // sprite buffer trigger?
AM_RANGE(0xff8000, 0xff8fff) AM_DEVREADWRITE("k053936", k053936_device, linectrl_r, linectrl_w)
AM_RANGE(0xff9000, 0xff9001) AM_WRITE(sound_command_w)
- AM_RANGE(0xffa000, 0xffafff) AM_RAM_WRITE(paletteram_xGGGGGBBBBBRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xffa000, 0xffafff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xffd000, 0xffd01f) AM_DEVWRITE("k053936", k053936_device, ctrl_w)
AM_RANGE(0xffe000, 0xffe001) AM_WRITE(suprslam_bank_w)
AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("P1")
@@ -324,12 +324,14 @@ static MACHINE_CONFIG_START( suprslam, suprslam_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
MCFG_SCREEN_UPDATE_DRIVER(suprslam_state, screen_update_suprslam)
- MCFG_PALETTE_LENGTH(0x800)
+ MCFG_PALETTE_ADD("palette", 0x800)
+ MCFG_PALETTE_FORMAT(xGGGGGBBBBBRRRRR)
MCFG_DEVICE_ADD("vsystem_spr", VSYSTEM_SPR, 0)
MCFG_VSYSTEM_SPR_SET_TILE_INDIRECT( suprslam_state, suprslam_tile_callback )
MCFG_VSYSTEM_SPR_SET_GFXREGION(1)
MCFG_VSYSTEM_SPR_GFXDECODE("gfxdecode")
+ MCFG_VSYSTEM_SPR_PALETTE("palette")
MCFG_K053936_ADD("k053936", suprslam_k053936_intf)
diff --git a/src/mame/drivers/surpratk.c b/src/mame/drivers/surpratk.c
index 8dc1309395a..9306a302061 100644
--- a/src/mame/drivers/surpratk.c
+++ b/src/mame/drivers/surpratk.c
@@ -44,9 +44,9 @@ WRITE8_MEMBER(surpratk_state::bankedram_w)
if (m_videobank & 0x02)
{
if (m_videobank & 0x04)
- paletteram_xBBBBBGGGGGRRRRR_byte_be_w(space,offset + 0x0800,data);
+ m_palette->write(space,offset + 0x0800,data);
else
- paletteram_xBBBBBGGGGGRRRRR_byte_be_w(space,offset,data);
+ m_palette->write(space,offset,data);
}
else if (m_videobank & 0x01)
m_k053244->k053245_w(space, offset, data);
@@ -211,8 +211,6 @@ static MACHINE_CONFIG_START( surpratk, surpratk_state )
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
@@ -220,13 +218,17 @@ static MACHINE_CONFIG_START( surpratk, surpratk_state )
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(surpratk_state, screen_update_surpratk)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", surpratk_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K053244_ADD("k053244", surpratk_k05324x_intf)
MCFG_K053244_GFXDECODE("gfxdecode")
+ MCFG_K053244_PALETTE("palette")
MCFG_K053251_ADD("k053251")
/* sound hardware */
diff --git a/src/mame/drivers/system1.c b/src/mame/drivers/system1.c
index a3566085903..4cf2c62c009 100644
--- a/src/mame/drivers/system1.c
+++ b/src/mame/drivers/system1.c
@@ -2159,7 +2159,7 @@ static MACHINE_CONFIG_START( sys1ppi, system1_state )
MCFG_SCREEN_UPDATE_DRIVER(system1_state, screen_update_system1)
MCFG_GFXDECODE_ADD("gfxdecode", system1)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
/* sound hardware */
diff --git a/src/mame/drivers/system16.c b/src/mame/drivers/system16.c
index cd3880c66e7..b8fde0d5a57 100644
--- a/src/mame/drivers/system16.c
+++ b/src/mame/drivers/system16.c
@@ -2008,7 +2008,7 @@ static MACHINE_CONFIG_START( system16, segas1x_bootleg_state )
MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system16)
MCFG_GFXDECODE_ADD("gfxdecode", sys16)
- MCFG_PALETTE_LENGTH(2048*SHADOW_COLORS_MULTIPLIER)
+ MCFG_PALETTE_ADD("palette", 2048*SHADOW_COLORS_MULTIPLIER)
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system16)
@@ -2155,12 +2155,12 @@ static MACHINE_CONFIG_START( goldnaxeb1, segas1x_bootleg_state )
MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system16)
MCFG_GFXDECODE_ADD("gfxdecode", sys16)
- MCFG_PALETTE_LENGTH(2048*SHADOW_COLORS_MULTIPLIER)
+
+ MCFG_PALETTE_ADD_INIT_BLACK("palette", 2048*SHADOW_COLORS_MULTIPLIER)
MCFG_BOOTLEG_SYS16B_SPRITES_ADD("sprites")
MCFG_BOOTLEG_SYS16B_SPRITES_XORIGIN(189-121)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, all_black)
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system16)
MACHINE_CONFIG_END
@@ -2288,7 +2288,7 @@ static MACHINE_CONFIG_START( system18, segas1x_bootleg_state )
MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system18old)
MCFG_GFXDECODE_ADD("gfxdecode", sys16)
- MCFG_PALETTE_LENGTH((2048+2048)*SHADOW_COLORS_MULTIPLIER) // 64 extra colours for vdp (but we use 2048 so shadow mask works)
+ MCFG_PALETTE_ADD("palette", (2048+2048)*SHADOW_COLORS_MULTIPLIER) // 64 extra colours for vdp (but we use 2048 so shadow mask works)
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system18old)
diff --git a/src/mame/drivers/tagteam.c b/src/mame/drivers/tagteam.c
index cd2c5f19811..61b233fe4df 100644
--- a/src/mame/drivers/tagteam.c
+++ b/src/mame/drivers/tagteam.c
@@ -221,8 +221,8 @@ static MACHINE_CONFIG_START( tagteam, tagteam_state )
MCFG_SCREEN_UPDATE_DRIVER(tagteam_state, screen_update_tagteam)
MCFG_GFXDECODE_ADD("gfxdecode", tagteam)
- MCFG_PALETTE_LENGTH(32)
-
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(tagteam_state, tagteam)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/tail2nos.c b/src/mame/drivers/tail2nos.c
index 6013dbc4024..18d15ac1033 100644
--- a/src/mame/drivers/tail2nos.c
+++ b/src/mame/drivers/tail2nos.c
@@ -41,7 +41,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, tail2nos_state )
AM_RANGE(0xffc000, 0xffc2ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xffc300, 0xffcfff) AM_RAM
AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(tail2nos_bgvideoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("INPUTS") AM_WRITE(tail2nos_gfxbank_w)
AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW")
AM_RANGE(0xfff008, 0xfff009) AM_WRITE(sound_command_w)
@@ -243,11 +243,13 @@ static MACHINE_CONFIG_START( tail2nos, tail2nos_state )
MCFG_SCREEN_UPDATE_DRIVER(tail2nos_state, screen_update_tail2nos)
MCFG_GFXDECODE_ADD("gfxdecode", tail2nos)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_K051316_ADD("k051316", tail2nos_k051316_intf)
MCFG_K051316_GFXDECODE("gfxdecode")
+ MCFG_K051316_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/taito_b.c b/src/mame/drivers/taito_b.c
index fb6c733bffd..e2312027d79 100644
--- a/src/mame/drivers/taito_b.c
+++ b/src/mame/drivers/taito_b.c
@@ -471,7 +471,7 @@ WRITE16_MEMBER(taitob_state::realpunc_output_w)
static ADDRESS_MAP_START( rastsag2_map, AS_PROGRAM, 16, taitob_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x600000, 0x607fff) AM_RAM /* Main RAM */ /*ashura up to 603fff only*/
TC0180VCU_MEMRW( 0x400000 )
AM_RANGE(0x800000, 0x800001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0xff00)
@@ -486,7 +486,7 @@ static ADDRESS_MAP_START( crimec_map, AS_PROGRAM, 16, taitob_state )
TC0180VCU_MEMRW( 0x400000 )
AM_RANGE(0x600000, 0x600001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0xff00)
AM_RANGE(0x600002, 0x600003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
- AM_RANGE(0x800000, 0x801fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x800000, 0x801fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xa00000, 0xa0ffff) AM_RAM /* Main RAM */
ADDRESS_MAP_END
@@ -498,12 +498,12 @@ static ADDRESS_MAP_START( tetrist_map, AS_PROGRAM, 16, taitob_state )
TC0180VCU_MEMRW( 0x400000 )
AM_RANGE(0x600000, 0x60000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0xff00)
AM_RANGE(0x800000, 0x807fff) AM_RAM /* Main RAM */
- AM_RANGE(0xa00000, 0xa01fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xa00000, 0xa01fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
ADDRESS_MAP_END
static ADDRESS_MAP_START( tetrista_map, AS_PROGRAM, 16, taitob_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
TC0180VCU_MEMRW( 0x400000 )
AM_RANGE(0x600000, 0x600001) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, portreg_r, portreg_w, 0xff00)
AM_RANGE(0x600002, 0x600003) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, port_r, port_w, 0xff00)
@@ -521,7 +521,7 @@ static ADDRESS_MAP_START( hitice_map, AS_PROGRAM, 16, taitob_state )
AM_RANGE(0x700000, 0x700001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0xff00)
AM_RANGE(0x700002, 0x700003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
AM_RANGE(0x800000, 0x803fff) AM_RAM /* Main RAM */
- AM_RANGE(0xa00000, 0xa01fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xa00000, 0xa01fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xb00000, 0xb7ffff) AM_RAM_WRITE(hitice_pixelram_w) AM_SHARE("pixelram")
// { 0xbffff0, 0xbffff1, ???
AM_RANGE(0xbffff2, 0xbffff5) AM_WRITE(hitice_pixel_scroll_w)
@@ -544,7 +544,7 @@ static ADDRESS_MAP_START( rambo3_map, AS_PROGRAM, 16, taitob_state )
AM_RANGE(0x60001c, 0x60001d) AM_READ(trackx2_lo_r)
AM_RANGE(0x60001e, 0x60001f) AM_READ(trackx2_hi_r)
AM_RANGE(0x800000, 0x803fff) AM_RAM /* Main RAM */
- AM_RANGE(0xa00000, 0xa01fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xa00000, 0xa01fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
ADDRESS_MAP_END
@@ -559,7 +559,7 @@ static ADDRESS_MAP_START( pbobble_map, AS_PROGRAM, 16, taitob_state )
AM_RANGE(0x600000, 0x600003) AM_WRITE(gain_control_w)
AM_RANGE(0x700000, 0x700001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0xff00)
AM_RANGE(0x700002, 0x700003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
- AM_RANGE(0x800000, 0x801fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x800000, 0x801fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x900000, 0x90ffff) AM_RAM /* Main RAM */
ADDRESS_MAP_END
@@ -575,7 +575,7 @@ static ADDRESS_MAP_START( spacedx_map, AS_PROGRAM, 16, taitob_state )
AM_RANGE(0x600000, 0x600003) AM_WRITE(gain_control_w)
AM_RANGE(0x700000, 0x700001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0xff00)
AM_RANGE(0x700002, 0x700003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
- AM_RANGE(0x800000, 0x801fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x800000, 0x801fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x900000, 0x90ffff) AM_RAM /* Main RAM */
ADDRESS_MAP_END
@@ -587,7 +587,7 @@ static ADDRESS_MAP_START( spacedxo_map, AS_PROGRAM, 16, taitob_state )
AM_RANGE(0x210000, 0x210001) AM_READ_PORT("IN3")
AM_RANGE(0x220000, 0x220001) AM_READ_PORT("IN4")
AM_RANGE(0x230000, 0x230001) AM_READ_PORT("IN5")
- AM_RANGE(0x300000, 0x301fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x300000, 0x301fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x302000, 0x303fff) AM_READONLY
AM_RANGE(0x400000, 0x40ffff) AM_RAM /* Main RAM */
TC0180VCU_MEMRW( 0x500000 )
@@ -605,7 +605,7 @@ static ADDRESS_MAP_START( qzshowby_map, AS_PROGRAM, 16, taitob_state )
AM_RANGE(0x600000, 0x600001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0xff00)
AM_RANGE(0x600002, 0x600003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
AM_RANGE(0x700000, 0x700003) AM_WRITE(gain_control_w)
- AM_RANGE(0x800000, 0x801fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x800000, 0x801fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x900000, 0x90ffff) AM_RAM /* Main RAM */
ADDRESS_MAP_END
@@ -615,7 +615,7 @@ static ADDRESS_MAP_START( viofight_map, AS_PROGRAM, 16, taitob_state )
AM_RANGE(0x200000, 0x200001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0xff00)
AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
TC0180VCU_MEMRW( 0x400000 )
- AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x800000, 0x80000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0xff00)
AM_RANGE(0xa00000, 0xa03fff) AM_RAM /* Main RAM */
ADDRESS_MAP_END
@@ -625,7 +625,7 @@ static ADDRESS_MAP_START( masterw_map, AS_PROGRAM, 16, taitob_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x200000, 0x203fff) AM_RAM /* Main RAM */
TC0180VCU_MEMRW( 0x400000 )
- AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, portreg_r, portreg_w, 0xff00)
AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, port_r, port_w, 0xff00)
AM_RANGE(0xa00000, 0xa00001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0xff00)
@@ -645,7 +645,7 @@ static ADDRESS_MAP_START( silentd_map, AS_PROGRAM, 16, taitob_state )
AM_RANGE(0x230000, 0x230001) AM_READ_PORT("IN5")
AM_RANGE(0x240000, 0x240001) AM_WRITENOP // ???
// AM_RANGE(0x240000, 0x240001) AM_READNOP /* read 4 times at init */
- AM_RANGE(0x300000, 0x301fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x300000, 0x301fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x400000, 0x403fff) AM_RAM /* Main RAM */
TC0180VCU_MEMRW( 0x500000 )
ADDRESS_MAP_END
@@ -655,7 +655,7 @@ static ADDRESS_MAP_START( selfeena_map, AS_PROGRAM, 16, taitob_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x100000, 0x103fff) AM_RAM /* Main RAM */
TC0180VCU_MEMRW( 0x200000 )
- AM_RANGE(0x300000, 0x301fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x300000, 0x301fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x400000, 0x40000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0xff00)
AM_RANGE(0x410000, 0x41000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0xff00) /* mirror address - seems to be only used for coin control */
AM_RANGE(0x500000, 0x500001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0xff00)
@@ -666,7 +666,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sbm_map, AS_PROGRAM, 16, taitob_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x100000, 0x10ffff) AM_RAM /* Main RAM */
- AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_wordswap_r, halfword_wordswap_w)
AM_RANGE(0x320000, 0x320001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0xff00)
AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
@@ -684,7 +684,7 @@ static ADDRESS_MAP_START( realpunc_map, AS_PROGRAM, 16, taitob_state )
AM_RANGE(0x188002, 0x188003) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_w, 0xff00)
AM_RANGE(0x18c000, 0x18c001) AM_WRITE(realpunc_output_w)
TC0180VCU_MEMRW( 0x200000 )
- AM_RANGE(0x280000, 0x281fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x280000, 0x281fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x300000, 0x300001) AM_DEVREADWRITE("hd63484", hd63484_device, status_r, address_w)
AM_RANGE(0x300002, 0x300003) AM_DEVREADWRITE("hd63484", hd63484_device, data_r, data_w)
// AM_RANGE(0x320000, 0x320001) AM_NOP // ?
@@ -2008,8 +2008,9 @@ static MACHINE_CONFIG_START( rastsag2, taitob_state )
MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE_ADD("gfxdecode", taito_b)
- MCFG_PALETTE_LENGTH(4096)
-
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
+
MCFG_VIDEO_START_OVERRIDE(taitob_state,taitob_color_order0)
MCFG_TC0180VCU_ADD("tc0180vcu", color0_tc0180vcu_intf)
@@ -2053,7 +2054,8 @@ static MACHINE_CONFIG_START( masterw, taitob_state )
MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE_ADD("gfxdecode", taito_b)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
MCFG_VIDEO_START_OVERRIDE(taitob_state,taitob_color_order2)
@@ -2079,6 +2081,9 @@ static MACHINE_CONFIG_DERIVED( tetrist, rastsag2 ) /* Nastar conversion kit with
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(tetrist_map)
+
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MACHINE_CONFIG_END
@@ -2114,7 +2119,8 @@ static MACHINE_CONFIG_START( ashura, taitob_state )
MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE_ADD("gfxdecode", taito_b)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
MCFG_VIDEO_START_OVERRIDE(taitob_state,taitob_color_order0)
@@ -2159,7 +2165,8 @@ static MACHINE_CONFIG_START( crimec, taitob_state )
MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE_ADD("gfxdecode", taito_b)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
MCFG_VIDEO_START_OVERRIDE(taitob_state,taitob_color_order1)
@@ -2204,7 +2211,8 @@ static MACHINE_CONFIG_START( hitice, taitob_state )
MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE_ADD("gfxdecode", taito_b)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
MCFG_VIDEO_START_OVERRIDE(taitob_state,hitice)
MCFG_VIDEO_RESET_OVERRIDE(taitob_state,hitice)
@@ -2255,7 +2263,8 @@ static MACHINE_CONFIG_START( rambo3p, taitob_state )
MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE_ADD("gfxdecode", rambo3)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
MCFG_VIDEO_START_OVERRIDE(taitob_state,taitob_color_order0)
@@ -2300,7 +2309,8 @@ static MACHINE_CONFIG_START( rambo3, taitob_state )
MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE_ADD("gfxdecode", taito_b)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
MCFG_VIDEO_START_OVERRIDE(taitob_state,taitob_color_order2)
@@ -2349,7 +2359,8 @@ static MACHINE_CONFIG_START( pbobble, taitob_state )
MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE_ADD("gfxdecode", taito_b)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(taitob_state,taitob_color_order1)
@@ -2398,7 +2409,8 @@ static MACHINE_CONFIG_START( spacedx, taitob_state )
MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE_ADD("gfxdecode", taito_b)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(taitob_state,taitob_color_order1)
@@ -2443,7 +2455,8 @@ static MACHINE_CONFIG_START( spacedxo, taitob_state )
MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE_ADD("gfxdecode", taito_b)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(taitob_state,taitob_color_order2)
@@ -2492,7 +2505,8 @@ static MACHINE_CONFIG_START( qzshowby, taitob_state )
MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE_ADD("gfxdecode", taito_b)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(taitob_state,taitob_color_order1)
@@ -2537,7 +2551,8 @@ static MACHINE_CONFIG_START( viofight, taitob_state )
MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE_ADD("gfxdecode", taito_b)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
MCFG_VIDEO_START_OVERRIDE(taitob_state,taitob_color_order2)
@@ -2587,7 +2602,8 @@ static MACHINE_CONFIG_START( silentd, taitob_state )
MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE_ADD("gfxdecode", taito_b)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(taitob_state,taitob_color_order2)
@@ -2632,7 +2648,8 @@ static MACHINE_CONFIG_START( selfeena, taitob_state )
MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE_ADD("gfxdecode", taito_b)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(taitob_state,taitob_color_order2)
@@ -2686,7 +2703,8 @@ static MACHINE_CONFIG_START( ryujin, taitob_state )
MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE_ADD("gfxdecode", taito_b)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
MCFG_VIDEO_START_OVERRIDE(taitob_state,taitob_color_order2)
@@ -2738,7 +2756,8 @@ static MACHINE_CONFIG_START( sbm, taitob_state )
MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE_ADD("gfxdecode", taito_b)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
MCFG_VIDEO_START_OVERRIDE(taitob_state,taitob_color_order0)
@@ -2788,7 +2807,8 @@ static MACHINE_CONFIG_START( realpunc, taitob_state )
MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob)
MCFG_GFXDECODE_ADD("gfxdecode", taito_b)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
MCFG_VIDEO_START_OVERRIDE(taitob_state,realpunc)
diff --git a/src/mame/drivers/taito_f2.c b/src/mame/drivers/taito_f2.c
index 397a685fa3d..6aec0060563 100644
--- a/src/mame/drivers/taito_f2.c
+++ b/src/mame/drivers/taito_f2.c
@@ -701,7 +701,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( dondokod_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0xff00)
AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
@@ -720,7 +720,7 @@ static ADDRESS_MAP_START( megab_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x120000, 0x12000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
AM_RANGE(0x180000, 0x180fff) AM_READWRITE(cchip2_word_r, cchip2_word_w) AM_SHARE("cchip2_ram")
AM_RANGE(0x200000, 0x20ffff) AM_RAM
- AM_RANGE(0x300000, 0x301fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x300000, 0x301fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x400000, 0x40001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* ?? */
AM_RANGE(0x600000, 0x60ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
AM_RANGE(0x610000, 0x61ffff) AM_RAM /* unused? */
@@ -730,7 +730,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( thundfox_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x101fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x100000, 0x101fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
AM_RANGE(0x220000, 0x220001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0xff00)
AM_RANGE(0x220002, 0x220003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
@@ -746,7 +746,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( cameltry_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
AM_RANGE(0x300018, 0x30001f) AM_READ(cameltry_paddle_r)
AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0xff00)
@@ -775,7 +775,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( liquidk_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0x00ff)
AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff)
@@ -810,7 +810,7 @@ static ADDRESS_MAP_START( ssi_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x100000, 0x10000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w)
AM_RANGE(0x200000, 0x20ffff) AM_RAM
- AM_RANGE(0x300000, 0x301fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x300000, 0x301fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0xff00)
AM_RANGE(0x400002, 0x400003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
// AM_RANGE(0x500000, 0x500001) AM_WRITENOP /* ?? */
@@ -822,7 +822,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( gunfront_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x000000, 0x0bffff) AM_ROM
AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_wordswap_r, halfword_wordswap_w)
AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0xff00)
AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
@@ -836,7 +836,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( growl_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x300004, 0x300005) AM_WRITE(growl_coin_word_w)
AM_RANGE(0x300000, 0x300001) AM_READ_PORT("DSWA")
AM_RANGE(0x300002, 0x300003) AM_READ_PORT("DSWB")
@@ -882,7 +882,7 @@ static ADDRESS_MAP_START( footchmp_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemaps */
AM_RANGE(0x430000, 0x43002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0x500000, 0x50001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* 500002 written like a watchdog?! */
- AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x700006, 0x700007) AM_WRITE(taitof2_4p_coin_word_w)
AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSWA")
AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSWB")
@@ -899,7 +899,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( koshien_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w)
AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0xff00)
AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
@@ -918,7 +918,7 @@ static ADDRESS_MAP_START( yuyugogo_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xa00000, 0xa01fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xa00000, 0xa01fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xb00000, 0xb10fff) AM_RAM /* deliberate writes to $b10xxx, I think */
AM_RANGE(0xc00000, 0xc01fff) AM_WRITE(taitof2_sprite_extension_w) AM_SHARE("sprite_ext")
AM_RANGE(0xd00000, 0xdfffff) AM_ROM AM_REGION("extra", 0)
@@ -927,7 +927,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( ninjak_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x300000, 0x30000f) AM_READ(ninjak_input_r)
AM_RANGE(0x30000e, 0x30000f) AM_WRITE(ninjak_coin_word_w)
AM_RANGE(0x380000, 0x380001) AM_WRITE(watchdog_reset16_w) /* ??? */
@@ -943,7 +943,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( solfigtr_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x300004, 0x300005) AM_WRITE(growl_coin_word_w) /* NOT VERIFIED */
AM_RANGE(0x300000, 0x300001) AM_READ_PORT("DSWA")
AM_RANGE(0x300002, 0x300003) AM_READ_PORT("DSWB")
@@ -966,7 +966,7 @@ static ADDRESS_MAP_START( qzquest_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w)
AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0x00ff)
AM_RANGE(0x300002, 0x300003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff)
- AM_RANGE(0x400000, 0x401fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x400000, 0x401fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x500000, 0x50ffff) AM_RAM
AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x700000, 0x70ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
@@ -982,7 +982,7 @@ static ADDRESS_MAP_START( pulirula_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x402000, 0x40200f) AM_DEVWRITE("tc0430grw", tc0280grd_device, tc0430grw_ctrl_word_w)
// AM_RANGE(0x500000, 0x500001) AM_WRITENOP /* ??? */
AM_RANGE(0x600000, 0x603fff) AM_WRITE(taitof2_sprite_extension_w) AM_SHARE("sprite_ext")
- AM_RANGE(0x700000, 0x701fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
@@ -998,7 +998,7 @@ static ADDRESS_MAP_START( metalb_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x500000, 0x50ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemaps */
AM_RANGE(0x530000, 0x53002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0x600000, 0x60001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff)
- AM_RANGE(0x700000, 0x703fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x700000, 0x703fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x800000, 0x80000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_wordswap_r, halfword_wordswap_w)
AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0xff00)
AM_RANGE(0x900002, 0x900003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
@@ -1010,7 +1010,7 @@ static ADDRESS_MAP_START( qzchikyu_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w)
AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0x00ff)
AM_RANGE(0x300002, 0x300003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff)
- AM_RANGE(0x400000, 0x401fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x400000, 0x401fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x500000, 0x50ffff) AM_RAM
AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x700000, 0x70ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
@@ -1023,7 +1023,7 @@ static ADDRESS_MAP_START( yesnoj_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x500000, 0x50ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
AM_RANGE(0x520000, 0x52000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
- AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
// AM_RANGE(0x700000, 0x70000b) AM_READ(yesnoj_unknown_r) /* what's this? */
AM_RANGE(0x800000, 0x800001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0xff00)
AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
@@ -1045,7 +1045,7 @@ static ADDRESS_MAP_START( deadconx_map, AS_PROGRAM, 16, taitof2_state )
// AM_RANGE(0x42000c, 0x42000f) AM_WRITENOP /* zeroed */
AM_RANGE(0x430000, 0x43002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0x500000, 0x50001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* uses 500002 like a watchdog !? */
- AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSWA")
AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSWB")
AM_RANGE(0x700004, 0x700005) AM_READ_PORT("IN2")
@@ -1061,7 +1061,7 @@ static ADDRESS_MAP_START( dinorex_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x000000, 0x2fffff) AM_ROM
AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w)
AM_RANGE(0x400000, 0x400fff) AM_WRITE(taitof2_sprite_extension_w) AM_SHARE("sprite_ext")
- AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x500000, 0x501fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x600000, 0x60ffff) AM_RAM
AM_RANGE(0x700000, 0x70001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* ?? */
AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("spriteram")
@@ -1079,7 +1079,7 @@ static ADDRESS_MAP_START( qjinsei_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x300000, 0x30ffff) AM_RAM
AM_RANGE(0x500000, 0x500001) AM_WRITENOP /* watchdog ? */
AM_RANGE(0x600000, 0x603fff) AM_WRITE(taitof2_sprite_extension_w) AM_SHARE("sprite_ext")
- AM_RANGE(0x700000, 0x701fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
@@ -1095,7 +1095,7 @@ static ADDRESS_MAP_START( qcrayon_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x500000, 0x500001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0xff00)
AM_RANGE(0x500002, 0x500003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
AM_RANGE(0x600000, 0x603fff) AM_WRITE(taitof2_sprite_extension_w) AM_SHARE("sprite_ext")
- AM_RANGE(0x700000, 0x701fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
@@ -1106,7 +1106,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( qcrayon2_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x200000, 0x20ffff) AM_RAM
- AM_RANGE(0x300000, 0x301fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x300000, 0x301fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x500000, 0x50ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
AM_RANGE(0x520000, 0x52000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
@@ -1125,7 +1125,7 @@ static ADDRESS_MAP_START( driftout_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x300000, 0x30ffff) AM_RAM
AM_RANGE(0x400000, 0x401fff) AM_DEVREADWRITE("tc0430grw", tc0280grd_device, tc0430grw_word_r, tc0430grw_word_w) /* ROZ tilemap */
AM_RANGE(0x402000, 0x40200f) AM_DEVWRITE("tc0430grw", tc0280grd_device, tc0430grw_ctrl_word_w)
- AM_RANGE(0x700000, 0x701fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
@@ -1142,7 +1142,7 @@ static ADDRESS_MAP_START( driveout_map, AS_PROGRAM, 16, taitof2_state )
AM_RANGE(0x300000, 0x30ffff) AM_RAM
AM_RANGE(0x400000, 0x401fff) AM_DEVREADWRITE("tc0430grw", tc0280grd_device, tc0430grw_word_r, tc0430grw_word_w) /* ROZ tilemap */
AM_RANGE(0x402000, 0x40200f) AM_DEVWRITE("tc0430grw", tc0280grd_device, tc0430grw_ctrl_word_w)
- AM_RANGE(0x700000, 0x701fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
@@ -3029,7 +3029,8 @@ static MACHINE_CONFIG_START( taito_f2, taitof2_state )
MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_no_buffer)
MCFG_GFXDECODE_ADD("gfxdecode", taitof2)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_default)
@@ -3058,6 +3059,8 @@ static MACHINE_CONFIG_DERIVED( taito_f2_tc0510nio, taito_f2 )
/* basic machine hardware */
MCFG_TC0510NIO_ADD("tc0510nio", taitof2_io510_intf)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MACHINE_CONFIG_END
@@ -3076,6 +3079,7 @@ static MACHINE_CONFIG_DERIVED( finalb, taito_f2_tc0220ioc )
MCFG_TC0100SCN_ADD("tc0100scn", finalb_tc0100scn_intf)
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
MCFG_TC0110PCR_ADD("tc0110pcr", taitof2_tc0110pcr_intf)
+ MCFG_TC0110PCR_PALETTE("palette")
MACHINE_CONFIG_END
@@ -3172,6 +3176,7 @@ static MACHINE_CONFIG_DERIVED( qtorimon, taito_f2_tc0220ioc )
MCFG_TC0100SCN_ADD("tc0100scn", taitof2_tc0100scn_intf)
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
MCFG_TC0110PCR_ADD("tc0110pcr", taitof2_tc0110pcr_intf)
+ MCFG_TC0110PCR_PALETTE("palette")
MACHINE_CONFIG_END
@@ -3207,6 +3212,7 @@ static MACHINE_CONFIG_DERIVED( quizhq, taito_f2 )
MCFG_TC0100SCN_ADD("tc0100scn", taitof2_tc0100scn_intf)
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
MCFG_TC0110PCR_ADD("tc0110pcr", taitof2_tc0110pcr_intf)
+ MCFG_TC0110PCR_PALETTE("palette")
MACHINE_CONFIG_END
@@ -3274,6 +3280,7 @@ static MACHINE_CONFIG_DERIVED( mjnquest, taito_f2 )
MCFG_TC0100SCN_ADD("tc0100scn", taitof2_tc0100scn_intf)
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
MCFG_TC0110PCR_ADD("tc0110pcr", taitof2_tc0110pcr_intf)
+ MCFG_TC0110PCR_PALETTE("palette")
MACHINE_CONFIG_END
@@ -3432,7 +3439,9 @@ static MACHINE_CONFIG_DERIVED( metalb, taito_f2_tc0510nio )
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", deadconx)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 8192)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_metalb)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_metalb)
@@ -3624,7 +3633,8 @@ static MACHINE_CONFIG_START( cameltrya, taitof2_state )
MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_no_buffer)
MCFG_GFXDECODE_ADD("gfxdecode", pivot)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_dondokod)
@@ -3676,7 +3686,8 @@ static MACHINE_CONFIG_START( driveout, taitof2_state )
MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_no_buffer)
MCFG_GFXDECODE_ADD("gfxdecode", pivot)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_driftout)
diff --git a/src/mame/drivers/taito_f3.c b/src/mame/drivers/taito_f3.c
index 9c0e89915fe..7ddd327f7a7 100644
--- a/src/mame/drivers/taito_f3.c
+++ b/src/mame/drivers/taito_f3.c
@@ -452,7 +452,7 @@ static MACHINE_CONFIG_START( f3, taito_f3_state )
MCFG_SCREEN_VBLANK_DRIVER(taito_f3_state, screen_eof_f3)
MCFG_GFXDECODE_ADD("gfxdecode", taito_f3)
- MCFG_PALETTE_LENGTH(0x2000)
+ MCFG_PALETTE_ADD("palette", 0x2000)
MCFG_VIDEO_START_OVERRIDE(taito_f3_state,f3)
@@ -545,7 +545,7 @@ static MACHINE_CONFIG_START( bubsympb, taito_f3_state )
MCFG_SCREEN_VBLANK_DRIVER(taito_f3_state, screen_eof_f3)
MCFG_GFXDECODE_ADD("gfxdecode", bubsympb)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
MCFG_VIDEO_START_OVERRIDE(taito_f3_state,f3)
diff --git a/src/mame/drivers/taito_h.c b/src/mame/drivers/taito_h.c
index 6849a8e1faf..89626fd38c1 100644
--- a/src/mame/drivers/taito_h.c
+++ b/src/mame/drivers/taito_h.c
@@ -246,7 +246,7 @@ static ADDRESS_MAP_START( syvalion_map, AS_PROGRAM, 16, taitoh_state )
AM_RANGE(0x300000, 0x300001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0x00ff)
AM_RANGE(0x300002, 0x300003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff)
AM_RANGE(0x400000, 0x420fff) AM_DEVREADWRITE("tc0080vco", tc0080vco_device, word_r, word_w)
- AM_RANGE(0x500800, 0x500fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x500800, 0x500fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
ADDRESS_MAP_END
static ADDRESS_MAP_START( recordbr_map, AS_PROGRAM, 16, taitoh_state )
@@ -257,7 +257,7 @@ static ADDRESS_MAP_START( recordbr_map, AS_PROGRAM, 16, taitoh_state )
AM_RANGE(0x300000, 0x300001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0x00ff)
AM_RANGE(0x300002, 0x300003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff)
AM_RANGE(0x400000, 0x420fff) AM_DEVREADWRITE("tc0080vco", tc0080vco_device, word_r, word_w)
- AM_RANGE(0x500800, 0x500fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x500800, 0x500fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
ADDRESS_MAP_END
static ADDRESS_MAP_START( tetristh_map, AS_PROGRAM, 16, taitoh_state )
@@ -268,7 +268,7 @@ static ADDRESS_MAP_START( tetristh_map, AS_PROGRAM, 16, taitoh_state )
AM_RANGE(0x300000, 0x300001) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, portreg_r, portreg_w, 0x00ff)
AM_RANGE(0x300002, 0x300003) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, port_r, port_w, 0x00ff)
AM_RANGE(0x400000, 0x420fff) AM_DEVREADWRITE("tc0080vco", tc0080vco_device, word_r, word_w)
- AM_RANGE(0x500800, 0x500fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x500800, 0x500fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
ADDRESS_MAP_END
static ADDRESS_MAP_START( dleague_map, AS_PROGRAM, 16, taitoh_state )
@@ -278,7 +278,7 @@ static ADDRESS_MAP_START( dleague_map, AS_PROGRAM, 16, taitoh_state )
AM_RANGE(0x300000, 0x300001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0x00ff)
AM_RANGE(0x300002, 0x300003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff)
AM_RANGE(0x400000, 0x420fff) AM_DEVREADWRITE("tc0080vco", tc0080vco_device, word_r, word_w)
- AM_RANGE(0x500800, 0x500fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x500800, 0x500fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x600000, 0x600001) AM_WRITENOP /* ?? writes zero once per frame */
ADDRESS_MAP_END
@@ -695,7 +695,8 @@ static MACHINE_CONFIG_START( syvalion, taitoh_state )
MCFG_SCREEN_UPDATE_DRIVER(taitoh_state, screen_update_syvalion)
MCFG_GFXDECODE_ADD("gfxdecode", syvalion)
- MCFG_PALETTE_LENGTH(33*16)
+ MCFG_PALETTE_ADD("palette", 33*16)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_TC0080VCO_ADD("tc0080vco", syvalion_tc0080vco_intf)
MCFG_TC0080VCO_GFXDECODE("gfxdecode")
@@ -737,7 +738,8 @@ static MACHINE_CONFIG_START( recordbr, taitoh_state )
MCFG_SCREEN_UPDATE_DRIVER(taitoh_state, screen_update_recordbr)
MCFG_GFXDECODE_ADD("gfxdecode", recordbr)
- MCFG_PALETTE_LENGTH(32*16)
+ MCFG_PALETTE_ADD("palette", 32*16)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_TC0080VCO_ADD("tc0080vco", recordbr_tc0080vco_intf)
MCFG_TC0080VCO_GFXDECODE("gfxdecode")
@@ -787,7 +789,8 @@ static MACHINE_CONFIG_START( dleague, taitoh_state )
MCFG_SCREEN_UPDATE_DRIVER(taitoh_state, screen_update_dleague)
MCFG_GFXDECODE_ADD("gfxdecode", dleague)
- MCFG_PALETTE_LENGTH(33*16)
+ MCFG_PALETTE_ADD("palette", 33*16)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_TC0080VCO_ADD("tc0080vco", recordbr_tc0080vco_intf)
MCFG_TC0080VCO_GFXDECODE("gfxdecode")
diff --git a/src/mame/drivers/taito_l.c b/src/mame/drivers/taito_l.c
index 8c1b26ee384..d541ebdd6bd 100644
--- a/src/mame/drivers/taito_l.c
+++ b/src/mame/drivers/taito_l.c
@@ -101,7 +101,7 @@ void taitol_state::palette_notifier(int addr)
else
{
// r = g = b = ((addr & 0x1e) != 0)*255;
- palette_set_color_rgb(machine(), addr / 2, pal4bit(byte0), pal4bit(byte0 >> 4), pal4bit(byte1));
+ m_palette->set_pen_color(addr / 2, pal4bit(byte0), pal4bit(byte0 >> 4), pal4bit(byte1));
}
}
@@ -1824,7 +1824,7 @@ static MACHINE_CONFIG_START( fhawk, taitol_state )
MCFG_SCREEN_VBLANK_DRIVER(taitol_state, screen_eof_taitol)
MCFG_GFXDECODE_ADD("gfxdecode", 2)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_VIDEO_START_OVERRIDE(taitol_state,taitol)
@@ -1918,7 +1918,7 @@ static MACHINE_CONFIG_START( kurikint, taitol_state )
MCFG_SCREEN_VBLANK_DRIVER(taitol_state, screen_eof_taitol)
MCFG_GFXDECODE_ADD("gfxdecode", 2)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_VIDEO_START_OVERRIDE(taitol_state,taitol)
@@ -1964,7 +1964,7 @@ static MACHINE_CONFIG_START( plotting, taitol_state )
MCFG_SCREEN_VBLANK_DRIVER(taitol_state, screen_eof_taitol)
MCFG_GFXDECODE_ADD("gfxdecode", 1)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_VIDEO_START_OVERRIDE(taitol_state,taitol)
@@ -2057,7 +2057,7 @@ static MACHINE_CONFIG_START( evilston, taitol_state )
MCFG_SCREEN_VBLANK_DRIVER(taitol_state, screen_eof_taitol)
MCFG_GFXDECODE_ADD("gfxdecode", 2)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_VIDEO_START_OVERRIDE(taitol_state,taitol)
diff --git a/src/mame/drivers/taito_o.c b/src/mame/drivers/taito_o.c
index d06dad498b9..739ef164905 100644
--- a/src/mame/drivers/taito_o.c
+++ b/src/mame/drivers/taito_o.c
@@ -65,7 +65,7 @@ static ADDRESS_MAP_START( parentj_map, AS_PROGRAM, 16, taitoo_state )
AM_RANGE(0x200000, 0x20000f) AM_READWRITE(io_r, io_w) /* TC0220IOC ? */
AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymsnd", ym2203_device, read, write, 0x00ff)
AM_RANGE(0x400000, 0x420fff) AM_DEVREADWRITE("tc0080vco", tc0080vco_device, word_r, word_w)
- AM_RANGE(0x500800, 0x500fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x500800, 0x500fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
ADDRESS_MAP_END
static INPUT_PORTS_START( parentj )
@@ -256,7 +256,8 @@ static MACHINE_CONFIG_START( parentj, taitoo_state )
MCFG_SCREEN_UPDATE_DRIVER(taitoo_state, screen_update_parentj)
MCFG_GFXDECODE_ADD("gfxdecode", parentj)
- MCFG_PALETTE_LENGTH(33*16)
+ MCFG_PALETTE_ADD("palette", 33*16)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_TC0080VCO_ADD("tc0080vco", parentj_intf)
MCFG_TC0080VCO_GFXDECODE("gfxdecode")
diff --git a/src/mame/drivers/taito_x.c b/src/mame/drivers/taito_x.c
index e4d9a41ed26..8d029daa186 100644
--- a/src/mame/drivers/taito_x.c
+++ b/src/mame/drivers/taito_x.c
@@ -419,7 +419,7 @@ static ADDRESS_MAP_START( superman_map, AS_PROGRAM, 16, taitox_state )
AM_RANGE(0x900000, 0x9007ff) AM_READWRITE(cchip1_ram_r, cchip1_ram_w)
AM_RANGE(0x900802, 0x900803) AM_READWRITE(cchip1_ctrl_r, cchip1_ctrl_w)
AM_RANGE(0x900c00, 0x900c01) AM_WRITE(cchip1_bank_w)
- AM_RANGE(0xb00000, 0xb00fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xb00000, 0xb00fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
@@ -434,7 +434,7 @@ static ADDRESS_MAP_START( daisenpu_map, AS_PROGRAM, 16, taitox_state )
AM_RANGE(0x800000, 0x800001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0x00ff)
AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff)
AM_RANGE(0x900000, 0x90000f) AM_READWRITE(daisenpu_input_r, daisenpu_input_w)
- AM_RANGE(0xb00000, 0xb00fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xb00000, 0xb00fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
@@ -449,7 +449,7 @@ static ADDRESS_MAP_START( gigandes_map, AS_PROGRAM, 16, taitox_state )
AM_RANGE(0x800000, 0x800001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0x00ff)
AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff)
AM_RANGE(0x900000, 0x90000f) AM_READWRITE(daisenpu_input_r, daisenpu_input_w)
- AM_RANGE(0xb00000, 0xb00fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xb00000, 0xb00fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
@@ -464,7 +464,7 @@ static ADDRESS_MAP_START( ballbros_map, AS_PROGRAM, 16, taitox_state )
AM_RANGE(0x800000, 0x800001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0x00ff)
AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff)
AM_RANGE(0x900000, 0x90000f) AM_READWRITE(daisenpu_input_r, daisenpu_input_w)
- AM_RANGE(0xb00000, 0xb00fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xb00000, 0xb00fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
@@ -820,6 +820,7 @@ static MACHINE_CONFIG_START( superman, taitox_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -830,7 +831,8 @@ static MACHINE_CONFIG_START( superman, taitox_state )
MCFG_SCREEN_UPDATE_DRIVER(taitox_state, screen_update_seta_no_layers)
MCFG_GFXDECODE_ADD("gfxdecode", superman)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(taitox_state,seta_no_layers)
@@ -863,6 +865,7 @@ static MACHINE_CONFIG_START( daisenpu, taitox_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -873,7 +876,8 @@ static MACHINE_CONFIG_START( daisenpu, taitox_state )
MCFG_SCREEN_UPDATE_DRIVER(taitox_state, screen_update_seta_no_layers)
MCFG_GFXDECODE_ADD("gfxdecode", superman)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(taitox_state,seta_no_layers)
@@ -904,6 +908,7 @@ static MACHINE_CONFIG_START( gigandes, taitox_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -914,7 +919,8 @@ static MACHINE_CONFIG_START( gigandes, taitox_state )
MCFG_SCREEN_UPDATE_DRIVER(taitox_state, screen_update_seta_no_layers)
MCFG_GFXDECODE_ADD("gfxdecode", superman)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(taitox_state,seta_no_layers)
@@ -947,6 +953,7 @@ static MACHINE_CONFIG_START( ballbros, taitox_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -957,7 +964,8 @@ static MACHINE_CONFIG_START( ballbros, taitox_state )
MCFG_SCREEN_UPDATE_DRIVER(taitox_state, screen_update_seta_no_layers)
MCFG_GFXDECODE_ADD("gfxdecode", ballbros)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(taitox_state,seta_no_layers)
diff --git a/src/mame/drivers/taito_z.c b/src/mame/drivers/taito_z.c
index 19be222abf1..5d77f6799ac 100644
--- a/src/mame/drivers/taito_z.c
+++ b/src/mame/drivers/taito_z.c
@@ -1550,7 +1550,7 @@ static ADDRESS_MAP_START( bshark_map, AS_PROGRAM, 16, taitoz_state )
AM_RANGE(0x400000, 0x40000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
AM_RANGE(0x600000, 0x600001) AM_WRITE(cpua_ctrl_w)
AM_RANGE(0x800000, 0x800007) AM_READWRITE(bshark_stick_r, bshark_stick_w)
- AM_RANGE(0xa00000, 0xa01fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xa00000, 0xa01fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xc00000, 0xc00fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xd00000, 0xd0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
AM_RANGE(0xd20000, 0xd2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
@@ -1563,7 +1563,7 @@ static ADDRESS_MAP_START( bsharkjjs_map, AS_PROGRAM, 16, taitoz_state )
AM_RANGE(0x400000, 0x40000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff)
AM_RANGE(0x600000, 0x600001) AM_WRITE(cpua_ctrl_w)
// AM_RANGE(0x800000, 0x800007) AM_READWRITE(bshark_stick_r, bshark_stick_w) /* No analog stick, this is the Joystick version */
- AM_RANGE(0xa00000, 0xa01fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xa00000, 0xa01fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xc00000, 0xc00fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xd00000, 0xd0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
AM_RANGE(0xd20000, 0xd2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
@@ -1591,7 +1591,7 @@ static ADDRESS_MAP_START( sci_map, AS_PROGRAM, 16, taitoz_state )
AM_RANGE(0x200010, 0x20001f) AM_READ(sci_steer_input_r)
// AM_RANGE(0x400000, 0x400001) AM_WRITE(cpua_ctrl_w) // ?? doesn't seem to fit what's written
AM_RANGE(0x420000, 0x420003) AM_READWRITE(taitoz_sound_r, taitoz_sound_w)
- AM_RANGE(0x800000, 0x801fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x800000, 0x801fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xa00000, 0xa0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */
AM_RANGE(0xa20000, 0xa2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_SHARE("spriteram")
@@ -1685,7 +1685,7 @@ static ADDRESS_MAP_START( dblaxle_map, AS_PROGRAM, 16, taitoz_state )
AM_RANGE(0x400010, 0x40001f) AM_READ(dblaxle_steer_input_r)
AM_RANGE(0x600000, 0x600001) AM_WRITE(dblaxle_cpua_ctrl_w) /* could this be causing int6 ? */
AM_RANGE(0x620000, 0x620003) AM_READWRITE(taitoz_sound_r, taitoz_sound_w)
- AM_RANGE(0x800000, 0x801fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x800000, 0x801fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemap mirror */
AM_RANGE(0xa00000, 0xa0ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemaps */
AM_RANGE(0xa30000, 0xa3002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_word_r, ctrl_word_w)
@@ -1710,7 +1710,7 @@ static ADDRESS_MAP_START( racingb_map, AS_PROGRAM, 16, taitoz_state )
AM_RANGE(0x300010, 0x30001f) AM_READ(dblaxle_steer_input_r)
AM_RANGE(0x500002, 0x500003) AM_WRITE(cpua_ctrl_w)
AM_RANGE(0x520000, 0x520003) AM_READWRITE(taitoz_sound_r, taitoz_sound_w)
- AM_RANGE(0x700000, 0x701fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemaps */
AM_RANGE(0x930000, 0x93002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_word_r, ctrl_word_w)
AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_SHARE("spriteram") /* mostly unused ? */
@@ -3085,7 +3085,8 @@ static MACHINE_CONFIG_START( contcirc, taitoz_state )
MCFG_SCREEN_UPDATE_DRIVER(taitoz_state, screen_update_contcirc)
MCFG_GFXDECODE_ADD("gfxdecode", taitoz)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz)
@@ -3093,6 +3094,7 @@ static MACHINE_CONFIG_START( contcirc, taitoz_state )
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
MCFG_TC0150ROD_ADD("tc0150rod", taitoz_tc0150rod_intf)
MCFG_TC0110PCR_ADD("tc0110pcr", taitoz_tc0110pcr_intf)
+ MCFG_TC0110PCR_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_ADD("front", 0.0, 0.0, 0.7)
@@ -3148,7 +3150,8 @@ static MACHINE_CONFIG_START( chasehq, taitoz_state )
MCFG_SCREEN_UPDATE_DRIVER(taitoz_state, screen_update_chasehq)
MCFG_GFXDECODE_ADD("gfxdecode", chasehq)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz)
@@ -3156,6 +3159,7 @@ static MACHINE_CONFIG_START( chasehq, taitoz_state )
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
MCFG_TC0150ROD_ADD("tc0150rod", taitoz_tc0150rod_intf)
MCFG_TC0110PCR_ADD("tc0110pcr", taitoz_tc0110pcr_intf)
+ MCFG_TC0110PCR_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_ADD("front", 0.0, 0.0, 0.7)
@@ -3213,7 +3217,8 @@ static MACHINE_CONFIG_START( enforce, taitoz_state )
MCFG_SCREEN_UPDATE_DRIVER(taitoz_state, screen_update_contcirc)
MCFG_GFXDECODE_ADD("gfxdecode", taitoz)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz)
@@ -3221,6 +3226,7 @@ static MACHINE_CONFIG_START( enforce, taitoz_state )
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
MCFG_TC0150ROD_ADD("tc0150rod", taitoz_tc0150rod_intf)
MCFG_TC0110PCR_ADD("tc0110pcr", taitoz_tc0110pcr_intf)
+ MCFG_TC0110PCR_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -3274,7 +3280,8 @@ static MACHINE_CONFIG_START( bshark, taitoz_state )
MCFG_SCREEN_UPDATE_DRIVER(taitoz_state, screen_update_bshark)
MCFG_GFXDECODE_ADD("gfxdecode", taitoz)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz)
@@ -3346,7 +3353,8 @@ static MACHINE_CONFIG_START( sci, taitoz_state )
MCFG_SCREEN_UPDATE_DRIVER(taitoz_state, screen_update_sci)
MCFG_GFXDECODE_ADD("gfxdecode", taitoz)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz)
@@ -3409,7 +3417,8 @@ static MACHINE_CONFIG_START( nightstr, taitoz_state )
MCFG_SCREEN_UPDATE_DRIVER(taitoz_state, screen_update_chasehq)
MCFG_GFXDECODE_ADD("gfxdecode", chasehq)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz)
@@ -3417,6 +3426,7 @@ static MACHINE_CONFIG_START( nightstr, taitoz_state )
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
MCFG_TC0150ROD_ADD("tc0150rod", taitoz_tc0150rod_intf)
MCFG_TC0110PCR_ADD("tc0110pcr", taitoz_tc0110pcr_intf)
+ MCFG_TC0110PCR_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_ADD("front", 0.0, 0.0, 0.7)
@@ -3474,7 +3484,8 @@ static MACHINE_CONFIG_START( aquajack, taitoz_state )
MCFG_SCREEN_UPDATE_DRIVER(taitoz_state, screen_update_aquajack)
MCFG_GFXDECODE_ADD("gfxdecode", taitoz)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz)
@@ -3482,6 +3493,7 @@ static MACHINE_CONFIG_START( aquajack, taitoz_state )
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
MCFG_TC0150ROD_ADD("tc0150rod", taitoz_tc0150rod_intf)
MCFG_TC0110PCR_ADD("tc0110pcr", taitoz_tc0110pcr_intf)
+ MCFG_TC0110PCR_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -3536,12 +3548,13 @@ static MACHINE_CONFIG_START( spacegun, taitoz_state )
MCFG_SCREEN_UPDATE_DRIVER(taitoz_state, screen_update_spacegun)
MCFG_GFXDECODE_ADD("gfxdecode", taitoz)
- MCFG_PALETTE_LENGTH(4096)
-
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_TC0100SCN_ADD("tc0100scn", spacegun_tc0100scn_intf)
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
MCFG_TC0110PCR_ADD("tc0110pcr", taitoz_tc0110pcr_intf)
+ MCFG_TC0110PCR_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -3598,7 +3611,8 @@ static MACHINE_CONFIG_START( dblaxle, taitoz_state )
MCFG_SCREEN_UPDATE_DRIVER(taitoz_state, screen_update_dblaxle)
MCFG_GFXDECODE_ADD("gfxdecode", dblaxle)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz)
@@ -3661,8 +3675,8 @@ static MACHINE_CONFIG_START( racingb, taitoz_state )
MCFG_SCREEN_UPDATE_DRIVER(taitoz_state, screen_update_racingb)
MCFG_GFXDECODE_ADD("gfxdecode", dblaxle)
- MCFG_PALETTE_LENGTH(4096)
-
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz)
MCFG_TC0480SCP_ADD("tc0480scp", taitoz_tc0480scp_intf)
diff --git a/src/mame/drivers/taitoair.c b/src/mame/drivers/taitoair.c
index c4252b9740a..37be7b46e5e 100644
--- a/src/mame/drivers/taitoair.c
+++ b/src/mame/drivers/taitoair.c
@@ -291,7 +291,7 @@ WRITE16_MEMBER(taitoair_state::airsys_paletteram16_w)/* xxBBBBxRRRRxGGGG */
COMBINE_DATA(&m_paletteram[offset]);
a = m_paletteram[offset];
- palette_set_color_rgb(machine(), offset, pal4bit(a >> 0), pal4bit(a >> 5), pal4bit(a >> 10));
+ m_palette->set_pen_color(offset, pal4bit(a >> 0), pal4bit(a >> 5), pal4bit(a >> 10));
}
WRITE16_MEMBER(taitoair_state::airsys_gradram_w)
@@ -322,7 +322,7 @@ WRITE16_MEMBER(taitoair_state::airsys_gradram_w)
//if(g == 0) { g = (pal_g); }
//if(b == 0) { b = (pal_b); }
- palette_set_color_rgb(machine(), offset+0x2000, r, g, b);
+ m_palette->set_pen_color(offset+0x2000, r, g, b);
}
@@ -718,8 +718,8 @@ static MACHINE_CONFIG_START( airsys, taitoair_state )
MCFG_SCREEN_UPDATE_DRIVER(taitoair_state, screen_update_taitoair)
MCFG_GFXDECODE_ADD("gfxdecode", airsys)
- MCFG_PALETTE_LENGTH(512*16+512*16)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, all_black)
+
+ MCFG_PALETTE_ADD_INIT_BLACK("palette", 512*16+512*16)
MCFG_TC0080VCO_ADD("tc0080vco", airsys_tc0080vco_intf)
MCFG_TC0080VCO_GFXDECODE("gfxdecode")
diff --git a/src/mame/drivers/taitojc.c b/src/mame/drivers/taitojc.c
index 15f74eefd27..8797047dc42 100644
--- a/src/mame/drivers/taitojc.c
+++ b/src/mame/drivers/taitojc.c
@@ -1278,7 +1278,7 @@ static MACHINE_CONFIG_START( taitojc, taitojc_state )
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(taitojc_state, screen_update_taitojc)
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD("palette", 32768)
/* sound hardware */
MCFG_FRAGMENT_ADD(taito_en_sound)
diff --git a/src/mame/drivers/taitosj.c b/src/mame/drivers/taitosj.c
index fb455bdd7cc..e514889d483 100644
--- a/src/mame/drivers/taitosj.c
+++ b/src/mame/drivers/taitosj.c
@@ -1809,7 +1809,7 @@ static MACHINE_CONFIG_START( nomcu, taitosj_state )
MCFG_SCREEN_UPDATE_DRIVER(taitosj_state, screen_update_taitosj)
MCFG_GFXDECODE_ADD("gfxdecode", taitosj)
- MCFG_PALETTE_LENGTH(64)
+ MCFG_PALETTE_ADD("palette", 64)
/* sound hardware */
diff --git a/src/mame/drivers/taitotx.c b/src/mame/drivers/taitotx.c
index 340a447aae2..98c8b1b935c 100644
--- a/src/mame/drivers/taitotx.c
+++ b/src/mame/drivers/taitotx.c
@@ -154,7 +154,7 @@ static MACHINE_CONFIG_START( taito_type_x, taito_type_x_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(taito_type_x_state, screen_update_taito_type_x)
- MCFG_PALETTE_LENGTH(0x10000)
+ MCFG_PALETTE_ADD("palette", 0x10000)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/taitowlf.c b/src/mame/drivers/taitowlf.c
index 1460b29723d..d5df6cd1325 100644
--- a/src/mame/drivers/taitowlf.c
+++ b/src/mame/drivers/taitowlf.c
@@ -57,7 +57,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
#if !ENABLE_VGA
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(taitowlf);
#endif
UINT32 screen_update_taitowlf(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void intel82439tx_init();
@@ -69,7 +69,7 @@ UINT32 taitowlf_state::screen_update_taitowlf(screen_device &screen, bitmap_rgb3
int x,y,count;
const UINT8 *blit_ram = m_region_user5->base();
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
count = (0);
@@ -82,7 +82,7 @@ UINT32 taitowlf_state::screen_update_taitowlf(screen_device &screen, bitmap_rgb3
color = (blit_ram[count] & 0xff);
if(cliprect.contains(x+0, y))
- bitmap.pix32(y, x+0) = machine().pens[color];
+ bitmap.pix32(y, x+0) = m_palette->pen(color);
count++;
}
@@ -352,13 +352,13 @@ void taitowlf_state::machine_reset()
#if !ENABLE_VGA
/* debug purpose*/
-void taitowlf_state::palette_init()
+PALETTE_INIT_MEMBER(taitowlf_state, taitowlf)
{
- palette_set_color(machine(),0x70,rgb_t(0xff,0xff,0xff));
- palette_set_color(machine(),0x71,rgb_t(0xff,0xff,0xff));
- palette_set_color(machine(),0x01,rgb_t(0x55,0x00,0x00));
- palette_set_color(machine(),0x10,rgb_t(0xaa,0x00,0x00));
- palette_set_color(machine(),0x00,rgb_t(0x00,0x00,0x00));
+ palette.set_pen_color(0x70,rgb_t(0xff,0xff,0xff));
+ palette.set_pen_color(0x71,rgb_t(0xff,0xff,0xff));
+ palette.set_pen_color(0x01,rgb_t(0x55,0x00,0x00));
+ palette.set_pen_color(0x10,rgb_t(0xaa,0x00,0x00));
+ palette.set_pen_color(0x00,rgb_t(0x00,0x00,0x00));
}
#endif
@@ -386,8 +386,9 @@ static MACHINE_CONFIG_START( taitowlf, taitowlf_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_PALETTE_LENGTH(256)
MCFG_SCREEN_UPDATE_DRIVER(taitowlf_state, screen_update_taitowlf)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(taitowlf_state, taitowlf)
#endif
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/tank8.c b/src/mame/drivers/tank8.c
index 322be93b71b..322e738a51c 100644
--- a/src/mame/drivers/tank8.c
+++ b/src/mame/drivers/tank8.c
@@ -342,8 +342,8 @@ static MACHINE_CONFIG_START( tank8, tank8_state )
MCFG_SCREEN_VBLANK_DRIVER(tank8_state, screen_eof_tank8)
MCFG_GFXDECODE_ADD("gfxdecode", tank8)
- MCFG_PALETTE_LENGTH(20)
-
+ MCFG_PALETTE_ADD("palette", 20)
+ MCFG_PALETTE_INIT_OWNER(tank8_state, tank8)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/tankbatt.c b/src/mame/drivers/tankbatt.c
index 54ede4c7f3e..3aaf8ba77e9 100644
--- a/src/mame/drivers/tankbatt.c
+++ b/src/mame/drivers/tankbatt.c
@@ -294,8 +294,8 @@ static MACHINE_CONFIG_START( tankbatt, tankbatt_state )
MCFG_SCREEN_UPDATE_DRIVER(tankbatt_state, screen_update_tankbatt)
MCFG_GFXDECODE_ADD("gfxdecode", tankbatt)
- MCFG_PALETTE_LENGTH(256*2)
-
+ MCFG_PALETTE_ADD("palette", 256*2)
+ MCFG_PALETTE_INIT_OWNER(tankbatt_state, tankbatt)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/tankbust.c b/src/mame/drivers/tankbust.c
index ab9b5f5f30d..207f6fde075 100644
--- a/src/mame/drivers/tankbust.c
+++ b/src/mame/drivers/tankbust.c
@@ -110,7 +110,7 @@ READ8_MEMBER(tankbust_state::debug_output_area_r)
-void tankbust_state::palette_init()
+PALETTE_INIT_MEMBER(tankbust_state, tankbust)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -155,7 +155,7 @@ void tankbust_state::palette_init()
bit1 = (color_prom[i] >> 7) & 0x01;
r = 0x55 * bit0 + 0xaa * bit1;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
}
@@ -346,10 +346,10 @@ static MACHINE_CONFIG_START( tankbust, tankbust_state )
// MCFG_SCREEN_VISIBLE_AREA ( 0*8, 64*8-1, 1*8, 31*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(tankbust_state, screen_update_tankbust)
- MCFG_GFXDECODE_ADD("gfxdecode", tankbust )
-
- MCFG_PALETTE_LENGTH( 128 )
+ MCFG_GFXDECODE_ADD("gfxdecode", tankbust )
+ MCFG_PALETTE_ADD( "palette", 128 )
+ MCFG_PALETTE_INIT_OWNER(tankbust_state, tankbust)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/taotaido.c b/src/mame/drivers/taotaido.c
index e232c2a481f..07be888a7c9 100644
--- a/src/mame/drivers/taotaido.c
+++ b/src/mame/drivers/taotaido.c
@@ -94,7 +94,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, taotaido_state )
AM_RANGE(0xa00000, 0xa01fff) AM_RAM AM_SHARE("spriteram") // sprite ram
AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_SHARE("spriteram2") // sprite tile lookup ram
AM_RANGE(0xfe0000, 0xfeffff) AM_RAM // main ram
- AM_RANGE(0xffc000, 0xffcfff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // palette ram
+ AM_RANGE(0xffc000, 0xffcfff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // palette ram
AM_RANGE(0xffe000, 0xffe3ff) AM_RAM AM_SHARE("scrollram") // rowscroll / rowselect / scroll ram
AM_RANGE(0xffff80, 0xffff81) AM_READ_PORT("P1")
AM_RANGE(0xffff82, 0xffff83) AM_READ_PORT("P2")
@@ -347,13 +347,15 @@ static MACHINE_CONFIG_START( taotaido, taotaido_state )
MCFG_SCREEN_UPDATE_DRIVER(taotaido_state, screen_update_taotaido)
MCFG_SCREEN_VBLANK_DRIVER(taotaido_state, screen_eof_taotaido)
- MCFG_PALETTE_LENGTH(0x800)
+ MCFG_PALETTE_ADD("palette", 0x800)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_DEVICE_ADD("vsystem_spr", VSYSTEM_SPR, 0)
MCFG_VSYSTEM_SPR_SET_TILE_INDIRECT( taotaido_state, taotaido_tile_callback )
MCFG_VSYSTEM_SPR_SET_GFXREGION(0)
MCFG_VSYSTEM_SPR_GFXDECODE("gfxdecode")
-
+ MCFG_VSYSTEM_SPR_PALETTE("palette")
+
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/targeth.c b/src/mame/drivers/targeth.c
index f2bc7a9e0d9..23fca23ba73 100644
--- a/src/mame/drivers/targeth.c
+++ b/src/mame/drivers/targeth.c
@@ -72,7 +72,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, targeth_state )
AM_RANGE(0x108006, 0x108007) AM_READ_PORT("GUNY2")
AM_RANGE(0x108000, 0x108007) AM_WRITEONLY AM_SHARE("vregs") /* Video Registers */
AM_RANGE(0x10800c, 0x10800d) AM_WRITENOP /* CLR Video INT */
- AM_RANGE(0x200000, 0x2007ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram") /* Palette */
+ AM_RANGE(0x200000, 0x2007ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* Palette */
AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW2")
AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW1")
@@ -186,8 +186,8 @@ static MACHINE_CONFIG_START( targeth, targeth_state )
MCFG_SCREEN_UPDATE_DRIVER(targeth_state, screen_update_targeth)
MCFG_GFXDECODE_ADD("gfxdecode", 0x080000)
- MCFG_PALETTE_LENGTH(1024)
-
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/tasman.c b/src/mame/drivers/tasman.c
index 952fbb16771..4c7cfa1760b 100644
--- a/src/mame/drivers/tasman.c
+++ b/src/mame/drivers/tasman.c
@@ -71,7 +71,7 @@ UINT32 kongambl_state::screen_update_kongambl(screen_device &screen, bitmap_ind1
UINT32 tile = m_vram[count] & 0xffff;
if(m_screen->visible_area().contains(x*8, y*8))
- gfx->opaque(bitmap,cliprect,tile,0,0,0,x*8,y*8);
+ gfx->opaque(m_palette,bitmap,cliprect,tile,0,0,0,x*8,y*8);
count++;
}
@@ -86,7 +86,7 @@ UINT32 kongambl_state::screen_update_kongambl(screen_device &screen, bitmap_ind1
UINT32 tile = m_vram[count] & 0xffff;
if(m_screen->visible_area().contains(x*8, y*8))
- gfx->transpen(bitmap,cliprect,tile,0,0,0,x*8,y*8,0);
+ gfx->transpen(m_palette,bitmap,cliprect,tile,0,0,0,x*8,y*8,0);
count++;
}
@@ -608,20 +608,23 @@ static MACHINE_CONFIG_START( kongambl, kongambl_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 80*8-1, 0*8, 64*8-1)
MCFG_SCREEN_UPDATE_DRIVER(kongambl_state, screen_update_kongambl)
- MCFG_PALETTE_LENGTH(0x8000)
+ MCFG_PALETTE_ADD("palette", 0x8000)
MCFG_VIDEO_START_OVERRIDE(kongambl_state,kongambl)
MCFG_K053246_ADD("k053246", k053247_intf)
MCFG_K053246_GFXDECODE("gfxdecode")
+ MCFG_K053246_PALETTE("palette")
MCFG_K055555_ADD("k055555")
MCFG_K055673_ADD_NOINTF("k055673")
MCFG_K055673_GFXDECODE("gfxdecode")
+ MCFG_K055673_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", tasman)
MCFG_K056832_ADD("k056832", k056832_intf)
MCFG_K056832_GFXDECODE("gfxdecode")
+ MCFG_K056832_PALETTE("palette")
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/tatsumi.c b/src/mame/drivers/tatsumi.c
index 3fd67bc5ac6..39534dc3c10 100644
--- a/src/mame/drivers/tatsumi.c
+++ b/src/mame/drivers/tatsumi.c
@@ -317,7 +317,7 @@ static ADDRESS_MAP_START( cyclwarr_68000a_map, AS_PROGRAM, 16, tatsumi_state )
AM_RANGE(0x0ba008, 0x0ba009) AM_READWRITE(cyclwarr_control_r, cyclwarr_control_w)
AM_RANGE(0x0c0000, 0x0c3fff) AM_READWRITE(cyclwarr_sprite_r, cyclwarr_sprite_w) AM_SHARE("spriteram")
AM_RANGE(0x0ca000, 0x0ca1ff) AM_WRITE(tatsumi_sprite_control_w) AM_SHARE("sprite_ctlram")
- AM_RANGE(0x0d0000, 0x0d3fff) AM_READWRITE(cyclwarr_palette_r, paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0d0000, 0x0d3fff) AM_READ(cyclwarr_palette_r) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x140000, 0x1bffff) AM_ROMBANK("bank2") /* CPU B ROM */
AM_RANGE(0x2c0000, 0x33ffff) AM_ROMBANK("bank1") /* CPU A ROM */
ADDRESS_MAP_END
@@ -338,7 +338,7 @@ static ADDRESS_MAP_START( cyclwarr_68000b_map, AS_PROGRAM, 16, tatsumi_state )
AM_RANGE(0x0c0000, 0x0c3fff) AM_READWRITE(cyclwarr_sprite_r, cyclwarr_sprite_w)
AM_RANGE(0x0ca000, 0x0ca1ff) AM_WRITE(tatsumi_sprite_control_w)
- AM_RANGE(0x0d0000, 0x0d3fff) AM_READWRITE(cyclwarr_palette_r, paletteram_xRRRRRGGGGGBBBBB_word_w)
+ AM_RANGE(0x0d0000, 0x0d3fff) AM_READ(cyclwarr_palette_r) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x140000, 0x1bffff) AM_ROMBANK("bank2") /* CPU B ROM */
AM_RANGE(0x2c0000, 0x33ffff) AM_ROMBANK("bank1") /* CPU A ROM */
ADDRESS_MAP_END
@@ -373,7 +373,7 @@ static ADDRESS_MAP_START( bigfight_68000a_map, AS_PROGRAM, 16, tatsumi_state )
AM_RANGE(0x0ba008, 0x0ba009) AM_READWRITE(cyclwarr_control_r, cyclwarr_control_w)
AM_RANGE(0x0c0000, 0x0c3fff) AM_READWRITE(cyclwarr_sprite_r, cyclwarr_sprite_w) AM_SHARE("spriteram")
AM_RANGE(0x0ca000, 0x0ca1ff) AM_WRITE(tatsumi_sprite_control_w) AM_SHARE("sprite_ctlram")
- AM_RANGE(0x0d0000, 0x0d3fff) AM_READWRITE(cyclwarr_palette_r, paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0d0000, 0x0d3fff) AM_READ(cyclwarr_palette_r) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x100000, 0x17ffff) AM_ROMBANK("bank2") /* CPU A ROM */
AM_RANGE(0x200000, 0x27ffff) AM_ROMBANK("bank1") /* CPU B ROM */
ADDRESS_MAP_END
@@ -392,7 +392,7 @@ static ADDRESS_MAP_START( bigfight_68000b_map, AS_PROGRAM, 16, tatsumi_state )
AM_RANGE(0x0c0000, 0x0c3fff) AM_READWRITE(cyclwarr_sprite_r, cyclwarr_sprite_w)
AM_RANGE(0x0ca000, 0x0ca1ff) AM_WRITE(tatsumi_sprite_control_w)
- AM_RANGE(0x0d0000, 0x0d3fff) AM_READWRITE(cyclwarr_palette_r, paletteram_xRRRRRGGGGGBBBBB_word_w)
+ AM_RANGE(0x0d0000, 0x0d3fff) AM_READ(cyclwarr_palette_r) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x100000, 0x17ffff) AM_ROMBANK("bank2") /* CPU A ROM */
AM_RANGE(0x200000, 0x27ffff) AM_ROMBANK("bank1") /* CPU B ROM */
ADDRESS_MAP_END
@@ -897,7 +897,8 @@ static MACHINE_CONFIG_START( apache3, tatsumi_state )
MCFG_SCREEN_UPDATE_DRIVER(tatsumi_state, screen_update_apache3)
MCFG_GFXDECODE_ADD("gfxdecode", apache3)
- MCFG_PALETTE_LENGTH(1024 + 4096) /* 1024 real colours, and 4096 arranged as series of cluts */
+ MCFG_PALETTE_ADD("palette", 1024 + 4096) /* 1024 real colours, and 4096 arranged as series of cluts */
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(tatsumi_state,apache3)
@@ -938,7 +939,8 @@ static MACHINE_CONFIG_START( roundup5, tatsumi_state )
MCFG_SCREEN_UPDATE_DRIVER(tatsumi_state, screen_update_roundup5)
MCFG_GFXDECODE_ADD("gfxdecode", roundup5)
- MCFG_PALETTE_LENGTH(1024 + 4096) /* 1024 real colours, and 4096 arranged as series of cluts */
+ MCFG_PALETTE_ADD("palette", 1024 + 4096) /* 1024 real colours, and 4096 arranged as series of cluts */
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(tatsumi_state,roundup5)
@@ -980,7 +982,8 @@ static MACHINE_CONFIG_START( cyclwarr, tatsumi_state )
MCFG_SCREEN_UPDATE_DRIVER(tatsumi_state, screen_update_cyclwarr)
MCFG_GFXDECODE_ADD("gfxdecode", cyclwarr)
- MCFG_PALETTE_LENGTH(8192 + 8192)
+ MCFG_PALETTE_ADD("palette", 8192 + 8192)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(tatsumi_state,cyclwarr)
@@ -1022,7 +1025,8 @@ static MACHINE_CONFIG_START( bigfight, tatsumi_state )
MCFG_SCREEN_UPDATE_DRIVER(tatsumi_state, screen_update_bigfight)
MCFG_GFXDECODE_ADD("gfxdecode", cyclwarr)
- MCFG_PALETTE_LENGTH(8192 + 8192)
+ MCFG_PALETTE_ADD("palette", 8192 + 8192)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_VIDEO_START_OVERRIDE(tatsumi_state,bigfight)
diff --git a/src/mame/drivers/tattack.c b/src/mame/drivers/tattack.c
index 647a34458fb..15a0ee0b097 100644
--- a/src/mame/drivers/tattack.c
+++ b/src/mame/drivers/tattack.c
@@ -38,7 +38,7 @@ public:
DECLARE_DRIVER_INIT(tattack);
TILE_GET_INFO_MEMBER(get_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(tattack);
UINT32 screen_update_tattack(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -180,7 +180,7 @@ static GFXDECODE_START( tattack )
GFXDECODE_ENTRY( "gfx1", 0 , charlayout, 0, 1 )
GFXDECODE_END
-void tattack_state::palette_init()
+PALETTE_INIT_MEMBER(tattack_state, tattack)
{
int i,r,g,b;
for(i=0;i<8;i++)
@@ -194,8 +194,8 @@ void tattack_state::palette_init()
else
r=g=b=128;
- palette_set_color(machine(),2*i,rgb_t(0x00,0x00,0x00));
- palette_set_color(machine(),2*i+1,rgb_t(r,g,b));
+ palette.set_pen_color(2*i,rgb_t(0x00,0x00,0x00));
+ palette.set_pen_color(2*i+1,rgb_t(r,g,b));
}
}
@@ -216,8 +216,8 @@ static MACHINE_CONFIG_START( tattack, tattack_state )
MCFG_SCREEN_UPDATE_DRIVER(tattack_state, screen_update_tattack)
MCFG_GFXDECODE_ADD("gfxdecode", tattack)
- MCFG_PALETTE_LENGTH(16)
-
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(tattack_state, tattack)
/* sound hardware */
/* Discrete ???? */
diff --git a/src/mame/drivers/taxidriv.c b/src/mame/drivers/taxidriv.c
index 78d22e51680..65f5c004d0d 100644
--- a/src/mame/drivers/taxidriv.c
+++ b/src/mame/drivers/taxidriv.c
@@ -362,7 +362,7 @@ static const ay8910_interface ay8910_interface_2 =
DEVCB_NULL
};
-void taxidriv_state::palette_init()
+PALETTE_INIT_MEMBER(taxidriv_state, taxidriv)
{
const UINT8 *color_prom = memregion("proms")->base();
int bit0, bit1, r, g, b;
@@ -382,7 +382,7 @@ void taxidriv_state::palette_init()
bit1 = (color_prom[0] >> 5) & 0x01;
b = 0x55 * bit0 + 0xaa * bit1;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
color_prom++;
}
}
@@ -421,7 +421,8 @@ static MACHINE_CONFIG_START( taxidriv, taxidriv_state )
MCFG_SCREEN_UPDATE_DRIVER(taxidriv_state, screen_update_taxidriv)
MCFG_GFXDECODE_ADD("gfxdecode", taxidriv)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(taxidriv_state, taxidriv)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/tbowl.c b/src/mame/drivers/tbowl.c
index 80b1b115f6f..48843159c58 100644
--- a/src/mame/drivers/tbowl.c
+++ b/src/mame/drivers/tbowl.c
@@ -131,7 +131,7 @@ static ADDRESS_MAP_START( 6206C_map, AS_PROGRAM, 8, tbowl_state )
AM_RANGE(0xc000, 0xdfff) AM_READONLY
AM_RANGE(0xc000, 0xd7ff) AM_WRITEONLY
AM_RANGE(0xd800, 0xdfff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_byte_be_w) AM_SHARE("paletteram") // 2x palettes, one for each monitor?
+ AM_RANGE(0xe000, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // 2x palettes, one for each monitor?
AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("bank2")
AM_RANGE(0xf800, 0xfbff) AM_READWRITE(shared_r, shared_w)
AM_RANGE(0xfc00, 0xfc00) AM_WRITE(tbowlc_bankswitch_w)
@@ -483,7 +483,8 @@ static MACHINE_CONFIG_START( tbowl, tbowl_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", tbowl)
- MCFG_PALETTE_LENGTH(1024*2)
+ MCFG_PALETTE_ADD("palette", 1024*2)
+ MCFG_PALETTE_FORMAT(xxxxBBBBRRRRGGGG)
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
diff --git a/src/mame/drivers/tceptor.c b/src/mame/drivers/tceptor.c
index a2a28779e5f..b4bfeea6fa0 100644
--- a/src/mame/drivers/tceptor.c
+++ b/src/mame/drivers/tceptor.c
@@ -383,10 +383,13 @@ static MACHINE_CONFIG_START( tceptor, tceptor_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", tceptor)
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_INIT_OWNER(tceptor_state, tceptor)
+
MCFG_DEFAULT_LAYOUT(layout_horizont)
MCFG_NAMCO_C45_ROAD_ADD("c45_road")
+ MCFG_NAMCO_C45_ROAD_PALETTE("palette")
MCFG_SCREEN_ADD("2dscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.606060)
diff --git a/src/mame/drivers/tcl.c b/src/mame/drivers/tcl.c
index 3b2ce96c925..7289cbb65ba 100644
--- a/src/mame/drivers/tcl.c
+++ b/src/mame/drivers/tcl.c
@@ -141,7 +141,7 @@ static MACHINE_CONFIG_START( tcl, tcl_state )
MCFG_SCREEN_UPDATE_DRIVER(tcl_state, screen_update_tcl)
MCFG_GFXDECODE_ADD("gfxdecode", tcl)
- MCFG_PALETTE_LENGTH(16*16)
+ MCFG_PALETTE_ADD("palette", 16*16)
MCFG_I8255A_ADD( "ppi8255_0", ppi8255_0_intf )
diff --git a/src/mame/drivers/tecmo.c b/src/mame/drivers/tecmo.c
index 8f62cbc20bc..2861ebc02c1 100644
--- a/src/mame/drivers/tecmo.c
+++ b/src/mame/drivers/tecmo.c
@@ -148,7 +148,7 @@ static ADDRESS_MAP_START( rygar_map, AS_PROGRAM, 8, tecmo_state )
AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(tecmo_fgvideoram_w) AM_SHARE("fgvideoram")
AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(tecmo_bgvideoram_w) AM_SHARE("bgvideoram")
AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("bank1")
AM_RANGE(0xf800, 0xf800) AM_READ_PORT("JOY1")
AM_RANGE(0xf801, 0xf801) AM_READ_PORT("BUTTONS1")
@@ -175,7 +175,7 @@ static ADDRESS_MAP_START( gemini_map, AS_PROGRAM, 8, tecmo_state )
AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(tecmo_txvideoram_w) AM_SHARE("txvideoram")
AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(tecmo_fgvideoram_w) AM_SHARE("fgvideoram")
AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(tecmo_bgvideoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0xe000, 0xe7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("bank1")
AM_RANGE(0xf800, 0xf800) AM_READ_PORT("JOY1")
@@ -204,7 +204,7 @@ static ADDRESS_MAP_START( silkworm_map, AS_PROGRAM, 8, tecmo_state )
AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(tecmo_txvideoram_w) AM_SHARE("txvideoram")
AM_RANGE(0xd000, 0xdfff) AM_RAM
AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("bank1")
AM_RANGE(0xf800, 0xf800) AM_READ_PORT("JOY1")
AM_RANGE(0xf801, 0xf801) AM_READ_PORT("BUTTONS1")
@@ -639,7 +639,8 @@ static MACHINE_CONFIG_START( rygar, tecmo_state )
MCFG_SCREEN_UPDATE_DRIVER(tecmo_state, screen_update_tecmo)
MCFG_GFXDECODE_ADD("gfxdecode", tecmo)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBRRRRGGGG)
MCFG_VIDEO_START_OVERRIDE(tecmo_state,tecmo)
@@ -698,7 +699,8 @@ static MACHINE_CONFIG_START( backfirt, tecmo_state )
MCFG_SCREEN_UPDATE_DRIVER(tecmo_state, screen_update_tecmo)
MCFG_GFXDECODE_ADD("gfxdecode", tecmo)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBRRRRGGGG)
MCFG_VIDEO_START_OVERRIDE(tecmo_state,tecmo)
diff --git a/src/mame/drivers/tecmo16.c b/src/mame/drivers/tecmo16.c
index 4dc9f4b8a13..df9a70be4ae 100644
--- a/src/mame/drivers/tecmo16.c
+++ b/src/mame/drivers/tecmo16.c
@@ -53,7 +53,7 @@ static ADDRESS_MAP_START( fstarfrc_map, AS_PROGRAM, 16, tecmo16_state )
AM_RANGE(0x121800, 0x121fff) AM_RAM_WRITE(tecmo16_colorram2_w) AM_SHARE("colorram2")
AM_RANGE(0x122000, 0x127fff) AM_RAM /* work area */
AM_RANGE(0x130000, 0x130fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x140000, 0x141fff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x140000, 0x141fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x150000, 0x150001) AM_WRITE(tecmo16_flipscreen_w)
AM_RANGE(0x150010, 0x150011) AM_WRITE(tecmo16_sound_command_w)
AM_RANGE(0x150030, 0x150031) AM_READ_PORT("DSW2") AM_WRITENOP /* ??? */
@@ -76,7 +76,7 @@ static ADDRESS_MAP_START( ginkun_map, AS_PROGRAM, 16, tecmo16_state )
AM_RANGE(0x123000, 0x123fff) AM_RAM_WRITE(tecmo16_colorram2_w) AM_SHARE("colorram2")
AM_RANGE(0x124000, 0x124fff) AM_RAM /* extra RAM for Riot */
AM_RANGE(0x130000, 0x130fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x140000, 0x141fff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x140000, 0x141fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x150000, 0x150001) AM_WRITE(tecmo16_flipscreen_w)
AM_RANGE(0x150010, 0x150011) AM_WRITE(tecmo16_sound_command_w)
AM_RANGE(0x150020, 0x150021) AM_READ_PORT("EXTRA") AM_WRITENOP /* ??? */
@@ -382,8 +382,8 @@ static MACHINE_CONFIG_START( fstarfrc, tecmo16_state )
MCFG_SCREEN_UPDATE_DRIVER(tecmo16_state, screen_update_tecmo16)
MCFG_GFXDECODE_ADD("gfxdecode", tecmo16)
- MCFG_PALETTE_LENGTH(4096)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, all_black)
+ MCFG_PALETTE_ADD_INIT_BLACK("palette", 4096)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
/* sound hardware */
diff --git a/src/mame/drivers/tecmosys.c b/src/mame/drivers/tecmosys.c
index 9207c437cc9..5489d81ab45 100644
--- a/src/mame/drivers/tecmosys.c
+++ b/src/mame/drivers/tecmosys.c
@@ -298,7 +298,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, tecmosys_state )
AM_RANGE(0x700000, 0x703fff) AM_RAM_WRITE(fg_tilemap_w) AM_SHARE("fgtilemap_ram") // fix ram
AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("spriteram") // obj ram
AM_RANGE(0x880000, 0x88000b) AM_READ(unk880000_r)
- AM_RANGE(0x900000, 0x907fff) AM_RAM_WRITE(paletteram_xGGGGGRRRRRBBBBB_word_w) AM_SHARE("paletteram") // AM_WRITEONLY // obj pal
+ AM_RANGE(0x900000, 0x907fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // AM_WRITEONLY // obj pal
//AM_RANGE(0x980000, 0x9807ff) AM_WRITEONLY // bg pal
//AM_RANGE(0x980800, 0x980fff) AM_WRITE(paletteram_xGGGGGRRRRRBBBBB_word_w) AM_SHARE("paletteram") // fix pal
@@ -468,7 +468,8 @@ static MACHINE_CONFIG_START( deroon, tecmosys_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(tecmosys_state, screen_update_tecmosys)
- MCFG_PALETTE_LENGTH(0x4000+0x800)
+ MCFG_PALETTE_ADD("palette", 0x4000+0x800)
+ MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
/* sound hardware */
diff --git a/src/mame/drivers/tehkanwc.c b/src/mame/drivers/tehkanwc.c
index 09b9534da9e..5e6ddab9071 100644
--- a/src/mame/drivers/tehkanwc.c
+++ b/src/mame/drivers/tehkanwc.c
@@ -220,7 +220,7 @@ static ADDRESS_MAP_START( main_mem, AS_PROGRAM, 8, tehkanwc_state )
AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1")
AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(tehkanwc_videoram_w) AM_SHARE("videoram")
AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(tehkanwc_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xd800, 0xddff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0xd800, 0xddff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xde00, 0xdfff) AM_RAM AM_SHARE("share5") /* unused part of the palette RAM, I think? Gridiron uses it */
AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(tehkanwc_videoram2_w) AM_SHARE("videoram2")
AM_RANGE(0xe800, 0xebff) AM_RAM AM_SHARE("spriteram") /* sprites */
@@ -246,7 +246,7 @@ static ADDRESS_MAP_START( sub_mem, AS_PROGRAM, 8, tehkanwc_state )
AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1")
AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(tehkanwc_videoram_w) AM_SHARE("videoram")
AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(tehkanwc_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xd800, 0xddff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0xd800, 0xddff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xde00, 0xdfff) AM_RAM AM_SHARE("share5") /* unused part of the palette RAM, I think? Gridiron uses it */
AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(tehkanwc_videoram2_w) AM_SHARE("videoram2")
AM_RANGE(0xe800, 0xebff) AM_RAM AM_SHARE("spriteram") /* sprites */
@@ -668,8 +668,8 @@ static MACHINE_CONFIG_START( tehkanwc, tehkanwc_state )
MCFG_SCREEN_UPDATE_DRIVER(tehkanwc_state, screen_update_tehkanwc)
MCFG_GFXDECODE_ADD("gfxdecode", tehkanwc)
- MCFG_PALETTE_LENGTH(768)
-
+ MCFG_PALETTE_ADD("palette", 768)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/terracre.c b/src/mame/drivers/terracre.c
index 9f0fdd09adb..ec5f0ddc929 100644
--- a/src/mame/drivers/terracre.c
+++ b/src/mame/drivers/terracre.c
@@ -530,8 +530,8 @@ static MACHINE_CONFIG_START( amazon, terracre_state )
MCFG_SCREEN_UPDATE_DRIVER(terracre_state, screen_update_amazon)
MCFG_GFXDECODE_ADD("gfxdecode", terracre)
- MCFG_PALETTE_LENGTH(1*16+16*16+16*256)
-
+ MCFG_PALETTE_ADD("palette", 1*16+16*16+16*256)
+ MCFG_PALETTE_INIT_OWNER(terracre_state, terracre)
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -563,8 +563,8 @@ static MACHINE_CONFIG_START( ym3526, terracre_state )
MCFG_SCREEN_UPDATE_DRIVER(terracre_state, screen_update_amazon)
MCFG_GFXDECODE_ADD("gfxdecode", terracre)
- MCFG_PALETTE_LENGTH(1*16+16*16+16*256)
-
+ MCFG_PALETTE_ADD("palette", 1*16+16*16+16*256)
+ MCFG_PALETTE_INIT_OWNER(terracre_state, terracre)
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -596,8 +596,8 @@ static MACHINE_CONFIG_START( ym2203, terracre_state )
MCFG_SCREEN_UPDATE_DRIVER(terracre_state, screen_update_amazon)
MCFG_GFXDECODE_ADD("gfxdecode", terracre)
- MCFG_PALETTE_LENGTH(1*16+16*16+16*256)
-
+ MCFG_PALETTE_ADD("palette", 1*16+16*16+16*256)
+ MCFG_PALETTE_INIT_OWNER(terracre_state, terracre)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/tetrisp2.c b/src/mame/drivers/tetrisp2.c
index 744061f491f..cb2b6911b55 100644
--- a/src/mame/drivers/tetrisp2.c
+++ b/src/mame/drivers/tetrisp2.c
@@ -1340,7 +1340,7 @@ static MACHINE_CONFIG_START( tetrisp2, tetrisp2_state )
MCFG_SCREEN_UPDATE_DRIVER(tetrisp2_state, screen_update_tetrisp2)
MCFG_GFXDECODE_ADD("gfxdecode", tetrisp2)
- MCFG_PALETTE_LENGTH(0x8000)
+ MCFG_PALETTE_ADD("palette", 0x8000)
MCFG_VIDEO_START_OVERRIDE(tetrisp2_state,tetrisp2)
@@ -1371,7 +1371,7 @@ static MACHINE_CONFIG_START( nndmseal, tetrisp2_state )
MCFG_SCREEN_UPDATE_DRIVER(tetrisp2_state, screen_update_tetrisp2)
MCFG_GFXDECODE_ADD("gfxdecode", tetrisp2)
- MCFG_PALETTE_LENGTH(0x8000)
+ MCFG_PALETTE_ADD("palette", 0x8000)
MCFG_VIDEO_START_OVERRIDE(tetrisp2_state,nndmseal) // bg layer offset
@@ -1401,7 +1401,7 @@ static MACHINE_CONFIG_START( rockn, tetrisp2_state )
MCFG_SCREEN_UPDATE_DRIVER(tetrisp2_state, screen_update_rockntread)
MCFG_GFXDECODE_ADD("gfxdecode", tetrisp2)
- MCFG_PALETTE_LENGTH(0x8000)
+ MCFG_PALETTE_ADD("palette", 0x8000)
MCFG_VIDEO_START_OVERRIDE(tetrisp2_state,rockntread)
@@ -1432,7 +1432,7 @@ static MACHINE_CONFIG_START( rockn2, tetrisp2_state )
MCFG_SCREEN_UPDATE_DRIVER(tetrisp2_state, screen_update_rockntread)
MCFG_GFXDECODE_ADD("gfxdecode", tetrisp2)
- MCFG_PALETTE_LENGTH(0x8000)
+ MCFG_PALETTE_ADD("palette", 0x8000)
MCFG_VIDEO_START_OVERRIDE(tetrisp2_state,rockntread)
@@ -1461,7 +1461,7 @@ static MACHINE_CONFIG_START( rocknms, tetrisp2_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", rocknms)
- MCFG_PALETTE_LENGTH(0x10000)
+ MCFG_PALETTE_ADD("palette", 0x10000)
MCFG_DEFAULT_LAYOUT(layout_rocknms)
MCFG_SCREEN_ADD("lscreen", RASTER)
@@ -1522,7 +1522,7 @@ static MACHINE_CONFIG_START( stepstag, stepstag_state )
MCFG_SCREEN_VISIBLE_AREA(0, 0x160-1, 0, 0xf0-1)
MCFG_SCREEN_UPDATE_DRIVER(stepstag_state, screen_update_stepstag_right)
- MCFG_PALETTE_LENGTH(0x8000) // 0x8000 * 3 needed I guess, but it hits an assert
+ MCFG_PALETTE_ADD("palette", 0x8000) // 0x8000 * 3 needed I guess, but it hits an assert
MCFG_VIDEO_START_OVERRIDE(stepstag_state, stepstag )
MCFG_GFXDECODE_ADD("gfxdecode", stepstag)
diff --git a/src/mame/drivers/thayers.c b/src/mame/drivers/thayers.c
index 43523e7f9aa..7e8846e6a84 100644
--- a/src/mame/drivers/thayers.c
+++ b/src/mame/drivers/thayers.c
@@ -802,7 +802,7 @@ static MACHINE_CONFIG_START( thayers, thayers_state )
/* video hardware */
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/thedeep.c b/src/mame/drivers/thedeep.c
index d7b2af69d0e..6ad238816cd 100644
--- a/src/mame/drivers/thedeep.c
+++ b/src/mame/drivers/thedeep.c
@@ -461,7 +461,8 @@ static MACHINE_CONFIG_START( thedeep, thedeep_state )
MCFG_SCREEN_UPDATE_DRIVER(thedeep_state, screen_update_thedeep)
MCFG_GFXDECODE_ADD("gfxdecode", thedeep)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_INIT_OWNER(thedeep_state, thedeep)
/* sound hardware */
diff --git a/src/mame/drivers/thepit.c b/src/mame/drivers/thepit.c
index 8eca8cc710c..83f3836b73f 100644
--- a/src/mame/drivers/thepit.c
+++ b/src/mame/drivers/thepit.c
@@ -722,7 +722,8 @@ static MACHINE_CONFIG_START( thepit, thepit_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", thepit)
- MCFG_PALETTE_LENGTH(32+8)
+ MCFG_PALETTE_ADD("palette", 32+8)
+ MCFG_PALETTE_INIT_OWNER(thepit_state, thepit)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
@@ -768,7 +769,8 @@ static MACHINE_CONFIG_DERIVED( suprmous, intrepid )
/* basic machine hardware */
/* video hardware */
- MCFG_PALETTE_INIT_OVERRIDE(thepit_state,suprmous)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(thepit_state,suprmous)
MCFG_GFXDECODE_MODIFY("gfxdecode", suprmous)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/thief.c b/src/mame/drivers/thief.c
index b4e8220f810..471e9bc2949 100644
--- a/src/mame/drivers/thief.c
+++ b/src/mame/drivers/thief.c
@@ -449,7 +449,7 @@ static MACHINE_CONFIG_START( sharkatt, thief_state )
MCFG_TMS9927_ADD("tms", MASTER_CLOCK/4, tms9927_intf)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
/* sound hardware */
@@ -484,7 +484,7 @@ static MACHINE_CONFIG_START( thief, thief_state )
MCFG_TMS9927_ADD("tms", MASTER_CLOCK/4, tms9927_intf)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
/* sound hardware */
@@ -519,7 +519,7 @@ static MACHINE_CONFIG_START( natodef, thief_state )
MCFG_TMS9927_ADD("tms", MASTER_CLOCK/4, tms9927_intf)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
/* sound hardware */
diff --git a/src/mame/drivers/thoop2.c b/src/mame/drivers/thoop2.c
index d89318fe498..c57a40284cf 100644
--- a/src/mame/drivers/thoop2.c
+++ b/src/mame/drivers/thoop2.c
@@ -89,7 +89,7 @@ static ADDRESS_MAP_START( thoop2_map, AS_PROGRAM, 16, thoop2_state )
AM_RANGE(0x100000, 0x101fff) AM_RAM_WRITE(thoop2_vram_w) AM_SHARE("videoram") /* Video RAM */
AM_RANGE(0x108000, 0x108007) AM_WRITEONLY AM_SHARE("vregs") /* Video Registers */
AM_RANGE(0x10800c, 0x10800d) AM_WRITE(watchdog_reset16_w) /* INT 6 ACK/Watchdog timer */
- AM_RANGE(0x200000, 0x2007ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")/* Palette */
+ AM_RANGE(0x200000, 0x2007ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")/* Palette */
AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW2")
AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW1")
@@ -202,8 +202,8 @@ static MACHINE_CONFIG_START( thoop2, thoop2_state )
MCFG_SCREEN_UPDATE_DRIVER(thoop2_state, screen_update_thoop2)
MCFG_GFXDECODE_ADD("gfxdecode", thoop2)
- MCFG_PALETTE_LENGTH(1024)
-
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/thunderj.c b/src/mame/drivers/thunderj.c
index b7a3fba63ef..78cfc4748e0 100644
--- a/src/mame/drivers/thunderj.c
+++ b/src/mame/drivers/thunderj.c
@@ -265,7 +265,7 @@ static MACHINE_CONFIG_START( thunderj, thunderj_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", thunderj)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_ATARI_VAD_ADD("vad", "screen", WRITELINE(atarigen_state, scanline_int_write_line))
MCFG_ATARI_VAD_PLAYFIELD(thunderj_state, get_playfield_tile_info)
diff --git a/src/mame/drivers/thunderx.c b/src/mame/drivers/thunderx.c
index e57abdecbd9..b4f2a980754 100644
--- a/src/mame/drivers/thunderx.c
+++ b/src/mame/drivers/thunderx.c
@@ -53,7 +53,7 @@ READ8_MEMBER(thunderx_state::scontra_bankedram_r)
WRITE8_MEMBER(thunderx_state::scontra_bankedram_w)
{
if (m_palette_selected)
- paletteram_xBBBBBGGGGGRRRRR_byte_be_w(space, offset, data);
+ m_palette->write(space, offset, data);
else
m_ram[offset] = data;
}
@@ -94,7 +94,7 @@ WRITE8_MEMBER(thunderx_state::thunderx_bankedram_w)
logerror("%04x pmc internal ram %04x = %02x\n",space.device().safe_pc(),offset,data);
}
else
- paletteram_xBBBBBGGGGGRRRRR_byte_be_w(space, offset, data);
+ m_palette->write(space, offset, data);
}
/*
@@ -656,8 +656,6 @@ static MACHINE_CONFIG_START( scontra, thunderx_state )
MCFG_MACHINE_RESET_OVERRIDE(thunderx_state,scontra)
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.17) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
@@ -665,13 +663,17 @@ static MACHINE_CONFIG_START( scontra, thunderx_state )
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(thunderx_state, screen_update_scontra)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", thunderx_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K051960_ADD("k051960", thunderx_k051960_intf)
MCFG_K051960_GFXDECODE("gfxdecode")
+ MCFG_K051960_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -701,8 +703,6 @@ static MACHINE_CONFIG_START( thunderx, thunderx_state )
MCFG_MACHINE_RESET_OVERRIDE(thunderx_state,thunderx)
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
@@ -710,13 +710,17 @@ static MACHINE_CONFIG_START( thunderx, thunderx_state )
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(thunderx_state, screen_update_scontra)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", thunderx_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K051960_ADD("k051960", thunderx_k051960_intf)
MCFG_K051960_GFXDECODE("gfxdecode")
+ MCFG_K051960_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/tiamc1.c b/src/mame/drivers/tiamc1.c
index eb52a9db8d5..53fcf3e9795 100644
--- a/src/mame/drivers/tiamc1.c
+++ b/src/mame/drivers/tiamc1.c
@@ -236,8 +236,8 @@ static MACHINE_CONFIG_START( tiamc1, tiamc1_state )
MCFG_SCREEN_UPDATE_DRIVER(tiamc1_state, screen_update_tiamc1)
MCFG_GFXDECODE_ADD("gfxdecode", tiamc1)
- MCFG_PALETTE_LENGTH(16)
-
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(tiamc1_state, tiamc1)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/tigeroad.c b/src/mame/drivers/tigeroad.c
index de021020f96..47df6294772 100644
--- a/src/mame/drivers/tigeroad.c
+++ b/src/mame/drivers/tigeroad.c
@@ -176,7 +176,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, tigeroad_state )
AM_RANGE(0xfec000, 0xfec7ff) AM_RAM_WRITE(tigeroad_videoram_w) AM_SHARE("videoram")
AM_RANGE(0xfe8000, 0xfe8003) AM_WRITE(tigeroad_scroll_w)
AM_RANGE(0xfe800e, 0xfe800f) AM_WRITEONLY /* fe800e = watchdog or IRQ acknowledge */
- AM_RANGE(0xff8200, 0xff867f) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xff8200, 0xff867f) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("ram16")
ADDRESS_MAP_END
@@ -535,8 +535,9 @@ static MACHINE_CONFIG_START( tigeroad, tigeroad_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", tigeroad)
- MCFG_PALETTE_LENGTH(576)
+ MCFG_PALETTE_ADD("palette", 576)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/timelimt.c b/src/mame/drivers/timelimt.c
index 96b535bdd13..bd7fb810116 100644
--- a/src/mame/drivers/timelimt.c
+++ b/src/mame/drivers/timelimt.c
@@ -247,8 +247,8 @@ static MACHINE_CONFIG_START( timelimt, timelimt_state )
MCFG_SCREEN_UPDATE_DRIVER(timelimt_state, screen_update_timelimt)
MCFG_GFXDECODE_ADD("gfxdecode", timelimt)
- MCFG_PALETTE_LENGTH(64+32)
-
+ MCFG_PALETTE_ADD("palette", 64+32)
+ MCFG_PALETTE_INIT_OWNER(timelimt_state, timelimt)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/timeplt.c b/src/mame/drivers/timeplt.c
index 7df4e4967d9..861f3049016 100644
--- a/src/mame/drivers/timeplt.c
+++ b/src/mame/drivers/timeplt.c
@@ -477,7 +477,8 @@ static MACHINE_CONFIG_START( timeplt, timeplt_state )
MCFG_SCREEN_UPDATE_DRIVER(timeplt_state, screen_update_timeplt)
MCFG_GFXDECODE_ADD("gfxdecode", timeplt)
- MCFG_PALETTE_LENGTH(32*4+64*4)
+ MCFG_PALETTE_ADD("palette", 32*4+64*4)
+ MCFG_PALETTE_INIT_OWNER(timeplt_state, timeplt)
/* sound hardware */
MCFG_FRAGMENT_ADD(timeplt_sound)
diff --git a/src/mame/drivers/timetrv.c b/src/mame/drivers/timetrv.c
index 63ecef49133..e44f87f6f58 100644
--- a/src/mame/drivers/timetrv.c
+++ b/src/mame/drivers/timetrv.c
@@ -166,7 +166,7 @@ static MACHINE_CONFIG_START( timetrv, timetrv_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 512-1, 0*8, 512-1)
MCFG_SCREEN_UPDATE_DRIVER(timetrv_state, screen_update_timetrv)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
/* sound hardware */
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/tmaster.c b/src/mame/drivers/tmaster.c
index c228e0ae9ae..9989422b001 100644
--- a/src/mame/drivers/tmaster.c
+++ b/src/mame/drivers/tmaster.c
@@ -375,7 +375,7 @@ UINT32 tmaster_state::screen_update_tmaster(screen_device &screen, bitmap_ind16
#endif
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
if (layers_ctrl & 1) copybitmap_trans(bitmap, m_bitmap[0][(m_regs[0x02/2]>>8)&1], 0,0,0,0, cliprect, 0xff);
if (layers_ctrl & 2) copybitmap_trans(bitmap, m_bitmap[1][(m_regs[0x02/2]>>9)&1], 0,0,0,0, cliprect, 0xff);
@@ -556,7 +556,7 @@ static ADDRESS_MAP_START( tmaster_map, AS_PROGRAM, 16, tmaster_state )
AM_RANGE( 0x580000, 0x580001 ) AM_WRITENOP // often
- AM_RANGE( 0x600000, 0x601fff ) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w ) AM_SHARE("paletteram")
+ AM_RANGE( 0x600000, 0x601fff ) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE( 0x800000, 0x800001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
@@ -636,7 +636,7 @@ WRITE16_MEMBER(tmaster_state::galgames_palette_data_w)
{
int palette_base;
for (palette_base = 0; palette_base < 0x1000; palette_base += 0x100)
- palette_set_color(machine(), m_palette_offset + palette_base, rgb_t(m_palette_data[0], m_palette_data[1], m_palette_data[2]));
+ m_palette->set_pen_color(m_palette_offset + palette_base, rgb_t(m_palette_data[0], m_palette_data[1], m_palette_data[2]));
m_palette_index = 0;
m_palette_offset++;
}
@@ -930,7 +930,8 @@ static MACHINE_CONFIG_START( tm, tmaster_state )
MCFG_SCREEN_VISIBLE_AREA(0, 400-1, 0, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(tmaster_state, screen_update_tmaster)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(tmaster_state,tmaster)
@@ -989,7 +990,8 @@ static MACHINE_CONFIG_START( galgames, tmaster_state )
MCFG_SCREEN_VISIBLE_AREA(0, 400-1, 0, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(tmaster_state, screen_update_tmaster)
- MCFG_PALETTE_LENGTH(0x1000) // only 0x100 used
+ MCFG_PALETTE_ADD("palette", 0x1000) // only 0x100 used
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(tmaster_state,galgames)
diff --git a/src/mame/drivers/tmmjprd.c b/src/mame/drivers/tmmjprd.c
index 1440071813c..d911f61c6a4 100644
--- a/src/mame/drivers/tmmjprd.c
+++ b/src/mame/drivers/tmmjprd.c
@@ -178,7 +178,7 @@ void tmmjprd_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
tileno >>=1;
// 255 for 8bpp
- gfx->transpen(bitmap,cliprect,tileno,colr,!xflip,yflip,(xpos-xoffs)-8,(ypos)-8,255);
+ gfx->transpen(m_palette,bitmap,cliprect,tileno,colr,!xflip,yflip,(xpos-xoffs)-8,(ypos)-8,255);
}
}
@@ -306,7 +306,7 @@ UINT32 tmmjprd_state::screen_update_tmmjprd_left(screen_device &screen, bitmap_i
{
UINT8* gfxroms = memregion("gfx2")->base();
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
ttmjprd_draw_tilemap(bitmap, cliprect, m_tilemap_ram[3], m_tilemap_regs[3], gfxroms );
draw_sprites(bitmap,cliprect, 1);
@@ -340,7 +340,7 @@ UINT32 tmmjprd_state::screen_update_tmmjprd_right(screen_device &screen, bitmap_
{
UINT8* gfxroms = memregion("gfx2")->base();
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
ttmjprd_draw_tilemap(bitmap, cliprect, m_tilemap_ram[1], m_tilemap_regs[1], gfxroms );
draw_sprites(bitmap,cliprect, 0);
@@ -633,7 +633,7 @@ WRITE32_MEMBER(tmmjprd_state::tmmjprd_paletteram_dword_w)
r = ((m_generic_paletteram_32[offset] & 0x0000ff00) >>8);
g = ((m_generic_paletteram_32[offset] & 0x00ff0000) >>16);
- palette_set_color(machine(),offset,rgb_t(r,g,b));
+ m_palette->set_pen_color(offset,rgb_t(r,g,b));
}
@@ -653,7 +653,7 @@ WRITE32_MEMBER(tmmjprd_state::tmmjprd_brt_1_w)
{
m_old_brt1 = brt;
for (i = bank; i < 0x800+bank; i++)
- palette_set_pen_contrast(machine(), i, brt);
+ m_palette->set_pen_contrast(i, brt);
}
}
@@ -671,7 +671,7 @@ WRITE32_MEMBER(tmmjprd_state::tmmjprd_brt_2_w)
{
m_old_brt2 = brt;
for (i = bank; i < 0x800+bank; i++)
- palette_set_pen_contrast(machine(), i, brt);
+ m_palette->set_pen_contrast(i, brt);
}
}
@@ -766,7 +766,7 @@ static MACHINE_CONFIG_START( tmmjprd, tmmjprd_state )
// 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)
+ MCFG_PALETTE_ADD("palette", 0x1000)
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
diff --git a/src/mame/drivers/tmnt.c b/src/mame/drivers/tmnt.c
index 7f5db71a0bd..720e550f203 100644
--- a/src/mame/drivers/tmnt.c
+++ b/src/mame/drivers/tmnt.c
@@ -540,7 +540,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( punkshot_main_map, AS_PROGRAM, 16, tmnt_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x080000, 0x083fff) AM_RAM /* main RAM */
- AM_RANGE(0x090000, 0x090fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x090000, 0x090fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x0a0000, 0x0a0001) AM_READ_PORT("DSW1/DSW2")
AM_RANGE(0x0a0002, 0x0a0003) AM_READ_PORT("COINS/DSW3")
AM_RANGE(0x0a0004, 0x0a0005) AM_READ_PORT("P3/P4")
@@ -559,7 +559,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( lgtnfght_main_map, AS_PROGRAM, 16, tmnt_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x080000, 0x080fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x090000, 0x093fff) AM_RAM /*main RAM */
AM_RANGE(0x0a0000, 0x0a0001) AM_READ_PORT("COINS")
AM_RANGE(0x0a0002, 0x0a0003) AM_READ_PORT("P1")
@@ -589,7 +589,7 @@ static ADDRESS_MAP_START( blswhstl_main_map, AS_PROGRAM, 16, tmnt_state )
AM_RANGE(0x180000, 0x183fff) AM_DEVREADWRITE("k052109", k052109_device, word_r, word_w)
AM_RANGE(0x204000, 0x207fff) AM_RAM /* main RAM */
AM_RANGE(0x300000, 0x303fff) AM_READWRITE(k053245_scattered_word_r, k053245_scattered_word_w) AM_SHARE("spriteram")
- AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x500000, 0x50003f) AM_DEVREADWRITE("k054000", k054000_device, lsb_r, lsb_w)
AM_RANGE(0x680000, 0x68001f) AM_READWRITE(k053244_word_noA1_r, k053244_word_noA1_w)
AM_RANGE(0x700000, 0x700001) AM_READ_PORT("P1")
@@ -631,7 +631,7 @@ static ADDRESS_MAP_START( glfgreat_main_map, AS_PROGRAM, 16, tmnt_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x100000, 0x103fff) AM_RAM /* main RAM */
AM_RANGE(0x104000, 0x107fff) AM_READWRITE(k053245_scattered_word_r, k053245_scattered_word_w) AM_SHARE("spriteram")
- AM_RANGE(0x108000, 0x108fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x108000, 0x108fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x10c000, 0x10cfff) AM_DEVREADWRITE("k053936", k053936_device, linectrl_r, linectrl_w) /* 053936? */
AM_RANGE(0x110000, 0x11001f) AM_WRITE(k053244_word_noA1_w) /* duplicate! */
AM_RANGE(0x114000, 0x11401f) AM_DEVREADWRITE("k053245", k05324x_device, k053244_lsb_r, k053244_lsb_w) /* duplicate! */
@@ -655,7 +655,7 @@ static ADDRESS_MAP_START( prmrsocr_main_map, AS_PROGRAM, 16, tmnt_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x100000, 0x103fff) AM_RAM /* main RAM */
AM_RANGE(0x104000, 0x107fff) AM_READWRITE(k053245_scattered_word_r, k053245_scattered_word_w) AM_SHARE("spriteram")
- AM_RANGE(0x108000, 0x108fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x108000, 0x108fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x10c000, 0x10cfff) AM_DEVREADWRITE("k053936", k053936_device, linectrl_r, linectrl_w)
AM_RANGE(0x110000, 0x11001f) AM_WRITE(k053244_word_noA1_w) /* duplicate! */
AM_RANGE(0x114000, 0x11401f) AM_DEVREADWRITE("k053245", k05324x_device, k053244_lsb_r, k053244_lsb_w) /* duplicate! */
@@ -914,7 +914,7 @@ logerror("copy command %04x sprite %08x data %08x: %04x%04x %04x%04x modifiers
static ADDRESS_MAP_START( tmnt2_main_map, AS_PROGRAM, 16, tmnt_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_SHARE("tmnt2_rom")
AM_RANGE(0x104000, 0x107fff) AM_RAM AM_SHARE("sunset_104000") /* main RAM */
- AM_RANGE(0x140000, 0x140fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x140000, 0x140fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x180000, 0x183fff) AM_RAM_WRITE(k053245_scattered_word_w) AM_SHARE("spriteram") // k053245_scattered_word_r
AM_RANGE(0x1c0000, 0x1c0001) AM_READ_PORT("P1")
AM_RANGE(0x1c0002, 0x1c0003) AM_READ_PORT("P2")
@@ -940,7 +940,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( ssriders_main_map, AS_PROGRAM, 16, tmnt_state )
AM_RANGE(0x000000, 0x0bffff) AM_ROM
AM_RANGE(0x104000, 0x107fff) AM_RAM /* main RAM */
- AM_RANGE(0x140000, 0x140fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x140000, 0x140fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x180000, 0x183fff) AM_READWRITE(k053245_scattered_word_r, k053245_scattered_word_w) AM_SHARE("spriteram")
AM_RANGE(0x1c0000, 0x1c0001) AM_READ_PORT("P1")
AM_RANGE(0x1c0002, 0x1c0003) AM_READ_PORT("P2")
@@ -966,7 +966,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sunsetbl_main_map, AS_PROGRAM, 16, tmnt_state )
AM_RANGE(0x000000, 0x0bffff) AM_ROM
AM_RANGE(0x104000, 0x107fff) AM_RAM /* main RAM */
- AM_RANGE(0x14c000, 0x14cfff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x14c000, 0x14cfff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x14e700, 0x14e71f) AM_DEVWRITE("k053251", k053251_device, lsb_w)
AM_RANGE(0x180000, 0x183fff) AM_READWRITE(k053245_scattered_word_r, k053245_scattered_word_w) AM_SHARE("spriteram")
AM_RANGE(0x184000, 0x18ffff) AM_RAM
@@ -992,7 +992,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( thndrx2_main_map, AS_PROGRAM, 16, tmnt_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x100000, 0x103fff) AM_RAM /* main RAM */
- AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x300000, 0x30001f) AM_DEVWRITE("k053251", k053251_device, lsb_w)
AM_RANGE(0x400000, 0x400003) AM_READ8(punkshot_sound_r, 0x00ff) /* K053260 */
AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("k053260", k053260_device, k053260_w, 0x00ff)
@@ -2133,7 +2133,7 @@ static MACHINE_CONFIG_START( cuebrick, tmnt_state )
MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common)
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -2142,7 +2142,11 @@ static MACHINE_CONFIG_START( cuebrick, tmnt_state )
MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_mia)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_ENABLE_HILIGHTS()
+
MCFG_NVRAM_ADD_0FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(tmnt_state,cuebrick)
@@ -2150,8 +2154,10 @@ static MACHINE_CONFIG_START( cuebrick, tmnt_state )
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", cuebrick_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K051960_ADD("k051960", cuebrick_k051960_intf)
MCFG_K051960_GFXDECODE("gfxdecode")
+ MCFG_K051960_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -2177,8 +2183,6 @@ static MACHINE_CONFIG_START( mia, tmnt_state )
MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common)
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
@@ -2186,15 +2190,20 @@ static MACHINE_CONFIG_START( mia, tmnt_state )
MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_mia)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_ENABLE_HILIGHTS()
MCFG_VIDEO_START_OVERRIDE(tmnt_state,mia)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", mia_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K051960_ADD("k051960", mia_k051960_intf)
MCFG_K051960_GFXDECODE("gfxdecode")
+ MCFG_K051960_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -2231,8 +2240,6 @@ static MACHINE_CONFIG_START( tmnt, tmnt_state )
MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,tmnt)
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
@@ -2242,15 +2249,20 @@ static MACHINE_CONFIG_START( tmnt, tmnt_state )
MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_tmnt)
// We see something strange in the left 8 pixels and the right 8 pixels, but it is same as real PCB.
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_ENABLE_HILIGHTS()
MCFG_VIDEO_START_OVERRIDE(tmnt_state,tmnt)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", tmnt_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K051960_ADD("k051960", tmnt_k051960_intf)
MCFG_K051960_GFXDECODE("gfxdecode")
+ MCFG_K051960_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -2287,7 +2299,7 @@ static MACHINE_CONFIG_START( punkshot, tmnt_state )
MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common)
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -2296,13 +2308,18 @@ static MACHINE_CONFIG_START( punkshot, tmnt_state )
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_punkshot)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_ENABLE_HILIGHTS()
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", tmnt_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K051960_ADD("k051960", punkshot_k051960_intf)
MCFG_K051960_GFXDECODE("gfxdecode")
+ MCFG_K051960_PALETTE("palette")
MCFG_K053251_ADD("k053251")
/* sound hardware */
@@ -2331,7 +2348,7 @@ static MACHINE_CONFIG_START( lgtnfght, tmnt_state )
MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common)
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -2340,15 +2357,20 @@ static MACHINE_CONFIG_START( lgtnfght, tmnt_state )
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_lgtnfght)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_ENABLE_HILIGHTS()
MCFG_VIDEO_START_OVERRIDE(tmnt_state,lgtnfght)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", tmnt_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K053245_ADD("k053245", lgtnfght_k05324x_intf)
MCFG_K053245_GFXDECODE("gfxdecode")
+ MCFG_K053245_PALETTE("palette")
MCFG_K053251_ADD("k053251")
/* sound hardware */
@@ -2381,7 +2403,7 @@ static MACHINE_CONFIG_START( blswhstl, tmnt_state )
MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -2391,15 +2413,20 @@ static MACHINE_CONFIG_START( blswhstl, tmnt_state )
MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_lgtnfght)
MCFG_SCREEN_VBLANK_DRIVER(tmnt_state, screen_eof_blswhstl)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_ENABLE_HILIGHTS()
MCFG_VIDEO_START_OVERRIDE(tmnt_state, blswhstl )
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", blswhstl_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K053245_ADD("k053245", blswhstl_k05324x_intf)
MCFG_K053245_GFXDECODE("gfxdecode")
+ MCFG_K053245_PALETTE("palette")
MCFG_K053251_ADD("k053251")
MCFG_K054000_ADD("k054000")
@@ -2448,7 +2475,7 @@ static MACHINE_CONFIG_START( glfgreat, tmnt_state )
MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common)
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -2458,14 +2485,20 @@ static MACHINE_CONFIG_START( glfgreat, tmnt_state )
MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_glfgreat)
MCFG_GFXDECODE_ADD("gfxdecode", glfgreat)
- MCFG_PALETTE_LENGTH(2048)
+
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_ENABLE_HILIGHTS()
MCFG_VIDEO_START_OVERRIDE(tmnt_state,glfgreat)
MCFG_K052109_ADD("k052109", glfgreat_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K053245_ADD("k053245", glfgreat_k05324x_intf)
MCFG_K053245_GFXDECODE("gfxdecode")
+ MCFG_K053245_PALETTE("palette")
MCFG_K053936_ADD("k053936", glfgreat_k053936_interface)
MCFG_K053251_ADD("k053251")
@@ -2508,7 +2541,7 @@ static MACHINE_CONFIG_START( prmrsocr, tmnt_state )
MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -2518,14 +2551,20 @@ static MACHINE_CONFIG_START( prmrsocr, tmnt_state )
MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_glfgreat)
MCFG_GFXDECODE_ADD("gfxdecode", glfgreat)
- MCFG_PALETTE_LENGTH(2048)
+
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_ENABLE_HILIGHTS()
MCFG_VIDEO_START_OVERRIDE(tmnt_state,prmrsocr)
MCFG_K052109_ADD("k052109", glfgreat_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K053245_ADD("k053245", prmrsocr_k05324x_intf)
MCFG_K053245_GFXDECODE("gfxdecode")
+ MCFG_K053245_PALETTE("palette")
MCFG_K053936_ADD("k053936", prmrsocr_k053936_interface)
MCFG_K053251_ADD("k053251")
@@ -2560,7 +2599,7 @@ static MACHINE_CONFIG_START( tmnt2, tmnt_state )
MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -2569,15 +2608,20 @@ static MACHINE_CONFIG_START( tmnt2, tmnt_state )
MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_tmnt2)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_ENABLE_HILIGHTS()
MCFG_VIDEO_START_OVERRIDE(tmnt_state,lgtnfght)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", tmnt_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K053245_ADD("k053245", lgtnfght_k05324x_intf)
MCFG_K053245_GFXDECODE("gfxdecode")
+ MCFG_K053245_PALETTE("palette")
MCFG_K053251_ADD("k053251")
/* sound hardware */
@@ -2610,7 +2654,7 @@ static MACHINE_CONFIG_START( ssriders, tmnt_state )
MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -2619,15 +2663,20 @@ static MACHINE_CONFIG_START( ssriders, tmnt_state )
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_tmnt2)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_ENABLE_HILIGHTS()
MCFG_VIDEO_START_OVERRIDE(tmnt_state,lgtnfght)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", tmnt_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K053245_ADD("k053245", lgtnfght_k05324x_intf)
MCFG_K053245_GFXDECODE("gfxdecode")
+ MCFG_K053245_PALETTE("palette")
MCFG_K053251_ADD("k053251")
/* sound hardware */
@@ -2656,7 +2705,7 @@ static MACHINE_CONFIG_START( sunsetbl, tmnt_state )
MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -2665,13 +2714,18 @@ static MACHINE_CONFIG_START( sunsetbl, tmnt_state )
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_tmnt2)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_ENABLE_HILIGHTS()
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", sunsetbl_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K053245_ADD("k053245", lgtnfght_k05324x_intf)
MCFG_K053245_GFXDECODE("gfxdecode")
+ MCFG_K053245_PALETTE("palette")
MCFG_K053251_ADD("k053251")
/* sound hardware */
@@ -2699,8 +2753,6 @@ static MACHINE_CONFIG_START( thndrx2, tmnt_state )
MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
@@ -2708,13 +2760,18 @@ static MACHINE_CONFIG_START( thndrx2, tmnt_state )
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_thndrx2)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_ENABLE_HILIGHTS()
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", tmnt_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K051960_ADD("k051960", thndrx2_k051960_intf)
MCFG_K051960_GFXDECODE("gfxdecode")
+ MCFG_K051960_PALETTE("palette")
MCFG_K053251_ADD("k053251")
MCFG_K054000_ADD("k054000")
diff --git a/src/mame/drivers/tmspoker.c b/src/mame/drivers/tmspoker.c
index 26e7c719d74..e57f50136ef 100644
--- a/src/mame/drivers/tmspoker.c
+++ b/src/mame/drivers/tmspoker.c
@@ -233,7 +233,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(tmspoker);
UINT32 screen_update_tmspoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(tmspoker_interrupt);
required_device<cpu_device> m_maincpu;
@@ -276,7 +276,7 @@ UINT32 tmspoker_state::screen_update_tmspoker(screen_device &screen, bitmap_ind1
return 0;
}
-void tmspoker_state::palette_init()
+PALETTE_INIT_MEMBER(tmspoker_state, tmspoker)
{
}
@@ -598,7 +598,8 @@ static MACHINE_CONFIG_START( tmspoker, tmspoker_state )
MCFG_GFXDECODE_ADD("gfxdecode", tmspoker)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(tmspoker_state, tmspoker)
MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK/4, mc6845_intf) /* guess */
diff --git a/src/mame/drivers/tnzs.c b/src/mame/drivers/tnzs.c
index 6558b5d044a..ab0c7324c4e 100644
--- a/src/mame/drivers/tnzs.c
+++ b/src/mame/drivers/tnzs.c
@@ -757,7 +757,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, tnzs_state )
/* arknoid2, extrmatn, plumppop and drtoppel have PROMs instead of RAM */
/* drtoppel writes here anyway! (maybe leftover from tests during development) */
/* so the handler is patched out in init_drtopple() */
- AM_RANGE(0xf800, 0xfbff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0xf800, 0xfbff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
ADDRESS_MAP_END
static ADDRESS_MAP_START( cpu0_type2, AS_PROGRAM, 8, tnzs_state )
@@ -820,7 +820,7 @@ static ADDRESS_MAP_START( tnzsb_cpu1_map, AS_PROGRAM, 8, tnzs_state )
AM_RANGE(0xd000, 0xdfff) AM_RAM
AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("share1")
AM_RANGE(0xf000, 0xf003) AM_READONLY
- AM_RANGE(0xf000, 0xf3ff) AM_WRITE(paletteram_xRRRRRGGGGGBBBBB_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0xf000, 0xf3ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
ADDRESS_MAP_END
static ADDRESS_MAP_START( kabukiz_cpu1_map, AS_PROGRAM, 8, tnzs_state )
@@ -835,7 +835,7 @@ static ADDRESS_MAP_START( kabukiz_cpu1_map, AS_PROGRAM, 8, tnzs_state )
AM_RANGE(0xc002, 0xc002) AM_READ_PORT("IN2")
AM_RANGE(0xd000, 0xdfff) AM_RAM
AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xf800, 0xfbff) AM_WRITE(paletteram_xRRRRRGGGGGBBBBB_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0xf800, 0xfbff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
ADDRESS_MAP_END
static ADDRESS_MAP_START( tnzsb_cpu2_map, AS_PROGRAM, 8, tnzs_state )
@@ -878,7 +878,7 @@ WRITE8_MEMBER(tnzs_state::jpopnics_palette_w)
b = (paldata >> 8) & 0x000f;
// the other bits seem to be used, and the colours are wrong..
- palette_set_color_rgb(machine(), offset, r << 4, g << 4, b << 4);
+ m_palette->set_pen_color(offset, r << 4, g << 4, b << 4);
}
@@ -1617,6 +1617,7 @@ static MACHINE_CONFIG_START( arknoid2, tnzs_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -1628,9 +1629,10 @@ static MACHINE_CONFIG_START( arknoid2, tnzs_state )
MCFG_SCREEN_VBLANK_DRIVER(tnzs_state, screen_eof_tnzs)
MCFG_GFXDECODE_ADD("gfxdecode", tnzs)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
- MCFG_PALETTE_INIT_OVERRIDE(tnzs_state,arknoid2)
+ MCFG_PALETTE_INIT_OWNER(tnzs_state,arknoid2)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1659,6 +1661,7 @@ static MACHINE_CONFIG_START( drtoppel, tnzs_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -1670,9 +1673,9 @@ static MACHINE_CONFIG_START( drtoppel, tnzs_state )
MCFG_SCREEN_VBLANK_DRIVER(tnzs_state, screen_eof_tnzs)
MCFG_GFXDECODE_ADD("gfxdecode", tnzs)
- MCFG_PALETTE_LENGTH(512)
-
- MCFG_PALETTE_INIT_OVERRIDE(tnzs_state,arknoid2)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
+ MCFG_PALETTE_INIT_OWNER(tnzs_state,arknoid2)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1704,6 +1707,7 @@ static MACHINE_CONFIG_START( tnzs, tnzs_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -1715,8 +1719,8 @@ static MACHINE_CONFIG_START( tnzs, tnzs_state )
MCFG_SCREEN_VBLANK_DRIVER(tnzs_state, screen_eof_tnzs)
MCFG_GFXDECODE_ADD("gfxdecode", tnzs)
- MCFG_PALETTE_LENGTH(512)
-
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1745,6 +1749,7 @@ static MACHINE_CONFIG_START( insectx, tnzs_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -1756,7 +1761,8 @@ static MACHINE_CONFIG_START( insectx, tnzs_state )
MCFG_SCREEN_VBLANK_DRIVER(tnzs_state, screen_eof_tnzs)
MCFG_GFXDECODE_ADD("gfxdecode", insectx)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1785,6 +1791,7 @@ static MACHINE_CONFIG_START( kageki, tnzs_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -1796,7 +1803,8 @@ static MACHINE_CONFIG_START( kageki, tnzs_state )
MCFG_SCREEN_VBLANK_DRIVER(tnzs_state, screen_eof_tnzs)
MCFG_GFXDECODE_ADD("gfxdecode", tnzs)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1835,6 +1843,7 @@ static MACHINE_CONFIG_START( tnzsb, tnzs_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -1846,7 +1855,8 @@ static MACHINE_CONFIG_START( tnzsb, tnzs_state )
MCFG_SCREEN_VBLANK_DRIVER(tnzs_state, screen_eof_tnzs)
MCFG_GFXDECODE_ADD("gfxdecode", tnzs)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1896,6 +1906,7 @@ static MACHINE_CONFIG_START( jpopnics, tnzs_state )
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_SETA001_SPRITE_PALETTE("palette")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -1907,7 +1918,8 @@ static MACHINE_CONFIG_START( jpopnics, tnzs_state )
MCFG_SCREEN_VBLANK_DRIVER(tnzs_state, screen_eof_tnzs)
MCFG_GFXDECODE_ADD("gfxdecode", tnzs)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/toaplan1.c b/src/mame/drivers/toaplan1.c
index 048564beeab..07d573ee924 100644
--- a/src/mame/drivers/toaplan1.c
+++ b/src/mame/drivers/toaplan1.c
@@ -1828,7 +1828,8 @@ static MACHINE_CONFIG_START( rallybik, toaplan1_rallybik_state )
MCFG_TOAPLAN_SCU_GFXDECODE("gfxdecode")
MCFG_GFXDECODE_ADD("gfxdecode", rallybik)
- MCFG_PALETTE_LENGTH((64*16)+(64*16))
+ MCFG_PALETTE_ADD("palette", (64*16)+(64*16))
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(toaplan1_rallybik_state,rallybik)
@@ -1865,7 +1866,8 @@ static MACHINE_CONFIG_START( truxton, toaplan1_state )
MCFG_SCREEN_VBLANK_DRIVER(toaplan1_state, screen_eof_toaplan1)
MCFG_GFXDECODE_ADD("gfxdecode", toaplan1)
- MCFG_PALETTE_LENGTH((64*16)+(64*16))
+ MCFG_PALETTE_ADD("palette", (64*16)+(64*16))
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(toaplan1_state,toaplan1)
@@ -1902,7 +1904,8 @@ static MACHINE_CONFIG_START( hellfire, toaplan1_state )
MCFG_SCREEN_VBLANK_DRIVER(toaplan1_state, screen_eof_toaplan1)
MCFG_GFXDECODE_ADD("gfxdecode", toaplan1)
- MCFG_PALETTE_LENGTH((64*16)+(64*16))
+ MCFG_PALETTE_ADD("palette", (64*16)+(64*16))
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(toaplan1_state,toaplan1)
@@ -1939,7 +1942,8 @@ static MACHINE_CONFIG_START( zerowing, toaplan1_state )
MCFG_SCREEN_VBLANK_DRIVER(toaplan1_state, screen_eof_toaplan1)
MCFG_GFXDECODE_ADD("gfxdecode", toaplan1)
- MCFG_PALETTE_LENGTH((64*16)+(64*16))
+ MCFG_PALETTE_ADD("palette", (64*16)+(64*16))
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(toaplan1_state,toaplan1)
@@ -1980,7 +1984,8 @@ static MACHINE_CONFIG_START( demonwld, toaplan1_state )
MCFG_SCREEN_VBLANK_DRIVER(toaplan1_state, screen_eof_toaplan1)
MCFG_GFXDECODE_ADD("gfxdecode", toaplan1)
- MCFG_PALETTE_LENGTH((64*16)+(64*16))
+ MCFG_PALETTE_ADD("palette", (64*16)+(64*16))
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(toaplan1_state,toaplan1)
@@ -2015,7 +2020,8 @@ static MACHINE_CONFIG_START( samesame, toaplan1_state )
MCFG_SCREEN_VBLANK_DRIVER(toaplan1_state, screen_eof_samesame)
MCFG_GFXDECODE_ADD("gfxdecode", toaplan1)
- MCFG_PALETTE_LENGTH((64*16)+(64*16))
+ MCFG_PALETTE_ADD("palette", (64*16)+(64*16))
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(toaplan1_state,toaplan1)
@@ -2052,7 +2058,8 @@ static MACHINE_CONFIG_START( outzone, toaplan1_state )
MCFG_SCREEN_VBLANK_DRIVER(toaplan1_state, screen_eof_toaplan1)
MCFG_GFXDECODE_ADD("gfxdecode", toaplan1)
- MCFG_PALETTE_LENGTH((64*16)+(64*16))
+ MCFG_PALETTE_ADD("palette", (64*16)+(64*16))
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(toaplan1_state,toaplan1)
@@ -2087,7 +2094,8 @@ static MACHINE_CONFIG_START( vimana, toaplan1_state )
MCFG_SCREEN_VBLANK_DRIVER(toaplan1_state, screen_eof_toaplan1)
MCFG_GFXDECODE_ADD("gfxdecode", toaplan1)
- MCFG_PALETTE_LENGTH((64*16)+(64*16))
+ MCFG_PALETTE_ADD("palette", (64*16)+(64*16))
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(toaplan1_state,toaplan1)
diff --git a/src/mame/drivers/toaplan2.c b/src/mame/drivers/toaplan2.c
index 007b4dcd1dd..28bc6e7e079 100644
--- a/src/mame/drivers/toaplan2.c
+++ b/src/mame/drivers/toaplan2.c
@@ -989,7 +989,7 @@ static ADDRESS_MAP_START( tekipaki_68k_mem, AS_PROGRAM, 16, toaplan2_state )
AM_RANGE(0x000000, 0x01ffff) AM_ROM
AM_RANGE(0x020000, 0x03ffff) AM_ROM // extra for Whoopee
AM_RANGE(0x080000, 0x082fff) AM_RAM
- AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x140000, 0x14000d) AM_DEVREADWRITE("gp9001vdp0", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
AM_RANGE(0x180000, 0x180001) AM_READ_PORT("DSWA")
AM_RANGE(0x180010, 0x180011) AM_READ_PORT("DSWB")
@@ -1006,7 +1006,7 @@ static ADDRESS_MAP_START( ghox_68k_mem, AS_PROGRAM, 16, toaplan2_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x040000, 0x040001) AM_READ(ghox_p2_h_analog_r)
AM_RANGE(0x080000, 0x083fff) AM_RAM
- AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x100000, 0x100001) AM_READ(ghox_p1_h_analog_r)
AM_RANGE(0x140000, 0x14000d) AM_DEVREADWRITE("gp9001vdp0", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
AM_RANGE(0x180000, 0x180001) AM_READWRITE(ghox_mcu_r, ghox_mcu_w) // really part of shared RAM
@@ -1030,7 +1030,7 @@ static ADDRESS_MAP_START( dogyuun_68k_mem, AS_PROGRAM, 16, toaplan2_state )
AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_v25_coin_word_w) // Coin count/lock + v25 reset line
AM_RANGE(0x210000, 0x21ffff) AM_READWRITE(shared_ram_r, shared_ram_w )
AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001vdp0", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x500000, 0x50000d) AM_DEVREADWRITE("gp9001vdp1", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
AM_RANGE(0x700000, 0x700001) AM_READ(video_count_r) // test bit 8
ADDRESS_MAP_END
@@ -1045,7 +1045,7 @@ static ADDRESS_MAP_START( kbash_68k_mem, AS_PROGRAM, 16, toaplan2_state )
AM_RANGE(0x208018, 0x208019) AM_READ_PORT("SYS")
AM_RANGE(0x20801c, 0x20801d) AM_WRITE(toaplan2_coin_word_w)
AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001vdp0", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x700000, 0x700001) AM_READ(video_count_r) // test bit 8
ADDRESS_MAP_END
@@ -1067,7 +1067,7 @@ static ADDRESS_MAP_START( kbash2_68k_mem, AS_PROGRAM, 16, toaplan2_state )
AM_RANGE(0x200028, 0x200029) AM_WRITE(oki1_bankswitch_w)
AM_RANGE(0x20002c, 0x20002d) AM_READ(video_count_r)
AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001vdp0", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
ADDRESS_MAP_END
@@ -1075,7 +1075,7 @@ static ADDRESS_MAP_START( truxton2_68k_mem, AS_PROGRAM, 16, toaplan2_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x100000, 0x10ffff) AM_RAM
AM_RANGE(0x200000, 0x20000d) AM_DEVREADWRITE("gp9001vdp0", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x300000, 0x300fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x300000, 0x300fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x400000, 0x401fff) AM_RAM_WRITE(toaplan2_txvideoram16_w) AM_SHARE("txvideoram16")
AM_RANGE(0x402000, 0x402fff) AM_RAM AM_SHARE("txvram_offs")
AM_RANGE(0x403000, 0x4031ff) AM_RAM_WRITE(toaplan2_txscrollram16_w) AM_SHARE("txscrollram16")
@@ -1097,7 +1097,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( pipibibs_68k_mem, AS_PROGRAM, 16, toaplan2_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x080000, 0x082fff) AM_RAM
- AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x140000, 0x14000d) AM_DEVREADWRITE("gp9001vdp0", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
AM_RANGE(0x190000, 0x190fff) AM_READWRITE(shared_ram_r, shared_ram_w)
AM_RANGE(0x19c01c, 0x19c01d) AM_WRITE(toaplan2_coin_word_w)
@@ -1115,7 +1115,7 @@ static ADDRESS_MAP_START( pipibibi_bootleg_68k_mem, AS_PROGRAM, 16, toaplan2_sta
AM_RANGE(0x080000, 0x082fff) AM_RAM
AM_RANGE(0x083000, 0x0837ff) AM_DEVREADWRITE("gp9001vdp0", gp9001vdp_device, pipibibi_bootleg_spriteram16_r, pipibibi_bootleg_spriteram16_w) // SpriteRAM
AM_RANGE(0x083800, 0x087fff) AM_RAM // SpriteRAM (unused)
- AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x120000, 0x120fff) AM_RAM // Copy of SpriteRAM ?
// AM_RANGE(0x13f000, 0x13f001) AM_WRITENOP // ???
AM_RANGE(0x180000, 0x182fff) AM_DEVREADWRITE("gp9001vdp0", gp9001vdp_device, pipibibi_bootleg_videoram16_r, pipibibi_bootleg_videoram16_w) // TileRAM
@@ -1142,7 +1142,7 @@ static ADDRESS_MAP_START( fixeight_68k_mem, AS_PROGRAM, 16, toaplan2_state )
AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_coin_word_w)
AM_RANGE(0x280000, 0x28ffff) AM_READWRITE(shared_ram_r, shared_ram_w )
AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001vdp0", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(toaplan2_txvideoram16_w) AM_SHARE("txvideoram16")
AM_RANGE(0x502000, 0x5021ff) AM_RAM AM_SHARE("txvram_offs")
AM_RANGE(0x503000, 0x5031ff) AM_RAM_WRITE(toaplan2_txscrollram16_w) AM_SHARE("txscrollram16")
@@ -1164,7 +1164,7 @@ static ADDRESS_MAP_START( fixeightbl_68k_mem, AS_PROGRAM, 16, toaplan2_state )
AM_RANGE(0x200018, 0x200019) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
AM_RANGE(0x20001c, 0x20001d) AM_READ_PORT("DSWA")
AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001vdp0", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(toaplan2_txvideoram16_w) AM_SHARE("txvideoram16")
AM_RANGE(0x700000, 0x700001) AM_READ(video_count_r)
AM_RANGE(0x800000, 0x87ffff) AM_ROM AM_REGION("maincpu", 0x80000)
@@ -1181,7 +1181,7 @@ static ADDRESS_MAP_START( vfive_68k_mem, AS_PROGRAM, 16, toaplan2_state )
AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_v25_coin_word_w) // Coin count/lock + v25 reset line
AM_RANGE(0x210000, 0x21ffff) AM_READWRITE(shared_ram_r, shared_ram_w )
AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001vdp0", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x700000, 0x700001) AM_READ(video_count_r)
ADDRESS_MAP_END
@@ -1195,7 +1195,7 @@ static ADDRESS_MAP_START( batsugun_68k_mem, AS_PROGRAM, 16, toaplan2_state )
AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_v25_coin_word_w) // Coin count/lock + v25 reset line
AM_RANGE(0x210000, 0x21ffff) AM_READWRITE(shared_ram_r, shared_ram_w )
AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001vdp0", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x500000, 0x50000d) AM_DEVREADWRITE("gp9001vdp1", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
AM_RANGE(0x700000, 0x700001) AM_READ(video_count_r)
ADDRESS_MAP_END
@@ -1206,7 +1206,7 @@ static ADDRESS_MAP_START( pwrkick_68k_mem, AS_PROGRAM, 16, toaplan2_state )
AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE8("rtc", upd4992_device, read, write, 0x00ff )
AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001vdp0", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x600000, 0x600001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
AM_RANGE(0x700000, 0x700001) AM_READ(video_count_r)
@@ -1227,7 +1227,7 @@ static ADDRESS_MAP_START( othldrby_68k_mem, AS_PROGRAM, 16, toaplan2_state )
AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE8("rtc", upd4992_device, read, write, 0x00ff )
AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001vdp0", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x600000, 0x600001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
AM_RANGE(0x700000, 0x700001) AM_READ(video_count_r)
@@ -1246,7 +1246,7 @@ static ADDRESS_MAP_START( snowbro2_68k_mem, AS_PROGRAM, 16, toaplan2_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x100000, 0x10ffff) AM_RAM
AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001vdp0", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x500000, 0x500003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
AM_RANGE(0x600000, 0x600001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
AM_RANGE(0x700000, 0x700001) AM_READ_PORT("JMPR")
@@ -1275,7 +1275,7 @@ static ADDRESS_MAP_START( mahoudai_68k_mem, AS_PROGRAM, 16, toaplan2_state )
AM_RANGE(0x21c034, 0x21c035) AM_READ_PORT("JMPR")
AM_RANGE(0x21c03c, 0x21c03d) AM_READ(video_count_r)
AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001vdp0", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x401000, 0x4017ff) AM_RAM // Unused palette RAM
AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(toaplan2_txvideoram16_w) AM_SHARE("txvideoram16")
AM_RANGE(0x502000, 0x502fff) AM_RAM AM_SHARE("txvram_offs")
@@ -1298,7 +1298,7 @@ static ADDRESS_MAP_START( shippumd_68k_mem, AS_PROGRAM, 16, toaplan2_state )
AM_RANGE(0x21c034, 0x21c035) AM_READ_PORT("JMPR")
AM_RANGE(0x21c03c, 0x21c03d) AM_READ(video_count_r)
AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001vdp0", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x401000, 0x4017ff) AM_RAM // Unused palette RAM
AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(toaplan2_txvideoram16_w) AM_SHARE("txvideoram16")
AM_RANGE(0x502000, 0x502fff) AM_RAM AM_SHARE("txvram_offs")
@@ -1320,7 +1320,7 @@ static ADDRESS_MAP_START( bgaregga_68k_mem, AS_PROGRAM, 16, toaplan2_state )
AM_RANGE(0x21c034, 0x21c035) AM_READ_PORT("JMPR")
AM_RANGE(0x21c03c, 0x21c03d) AM_READ(video_count_r)
AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001vdp0", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w)
- AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(toaplan2_txvideoram16_w) AM_SHARE("txvideoram16")
AM_RANGE(0x502000, 0x502fff) AM_RAM AM_SHARE("txvram_offs")
AM_RANGE(0x503000, 0x5031ff) AM_RAM_WRITE(toaplan2_txscrollram16_w) AM_SHARE("txscrollram16")
@@ -1333,7 +1333,7 @@ static ADDRESS_MAP_START( batrider_68k_mem, AS_PROGRAM, 16, toaplan2_state )
AM_RANGE(0x000000, 0x1fffff) AM_ROM
// actually 200000 - 20ffff is probably all main RAM, and the text and palette RAM are written via DMA
AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(toaplan2_txvideoram16_w) AM_SHARE("txvideoram16")
- AM_RANGE(0x202000, 0x202fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x202000, 0x202fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x203000, 0x2031ff) AM_RAM AM_SHARE("txvram_offs")
AM_RANGE(0x203200, 0x2033ff) AM_RAM_WRITE(toaplan2_txscrollram16_w) AM_SHARE("txscrollram16")
AM_RANGE(0x203400, 0x207fff) AM_RAM AM_SHARE("mainram16")
@@ -1363,7 +1363,7 @@ static ADDRESS_MAP_START( bbakraid_68k_mem, AS_PROGRAM, 16, toaplan2_state )
AM_RANGE(0x000000, 0x1fffff) AM_ROM
// actually 200000 - 20ffff is probably all main RAM, and the text and palette RAM are written via DMA
AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(toaplan2_txvideoram16_w) AM_SHARE("txvideoram16")
- AM_RANGE(0x202000, 0x202fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x202000, 0x202fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x203000, 0x2031ff) AM_RAM AM_SHARE("txvram_offs")
AM_RANGE(0x203200, 0x2033ff) AM_RAM_WRITE(toaplan2_txscrollram16_w) AM_SHARE("txscrollram16")
AM_RANGE(0x203400, 0x207fff) AM_RAM AM_SHARE("mainram16")
@@ -3135,10 +3135,12 @@ static MACHINE_CONFIG_START( tekipaki, toaplan2_state )
MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE_ADD("gfxdecode", toaplan2)
- MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
+ MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_DEVICE_ADD_VDP0
MCFG_GP9001_VDP_GFXDECODE("gfxdecode")
+ MCFG_GP9001_VDP_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
@@ -3178,10 +3180,12 @@ static MACHINE_CONFIG_START( ghox, toaplan2_state )
MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE_ADD("gfxdecode", toaplan2)
- MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
+ MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_DEVICE_ADD_VDP0
MCFG_GP9001_VDP_GFXDECODE("gfxdecode")
+ MCFG_GP9001_VDP_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
@@ -3265,13 +3269,16 @@ static MACHINE_CONFIG_START( dogyuun, toaplan2_state )
MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE_ADD("gfxdecode", t2dualvdp)
- MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
+ MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_DEVICE_ADD_VDP0
MCFG_GP9001_VDP_GFXDECODE("gfxdecode")
+ MCFG_GP9001_VDP_PALETTE("palette")
MCFG_DEVICE_ADD_VDP1
MCFG_GP9001_VDP_GFXDECODE("gfxdecode")
+ MCFG_GP9001_VDP_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
@@ -3313,10 +3320,12 @@ static MACHINE_CONFIG_START( kbash, toaplan2_state )
MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE_ADD("gfxdecode", toaplan2)
- MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
+ MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_DEVICE_ADD_VDP0
MCFG_GP9001_VDP_GFXDECODE("gfxdecode")
+ MCFG_GP9001_VDP_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
@@ -3352,10 +3361,12 @@ static MACHINE_CONFIG_START( kbash2, toaplan2_state )
MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE_ADD("gfxdecode", toaplan2)
- MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
+ MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_DEVICE_ADD_VDP0
MCFG_GP9001_VDP_GFXDECODE("gfxdecode")
+ MCFG_GP9001_VDP_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
@@ -3388,10 +3399,12 @@ static MACHINE_CONFIG_START( truxton2, toaplan2_state )
MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE_ADD("gfxdecode", truxton2)
- MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
+ MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_DEVICE_ADD_VDP0
MCFG_GP9001_VDP_GFXDECODE("gfxdecode")
+ MCFG_GP9001_VDP_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,truxton2)
@@ -3445,10 +3458,12 @@ static MACHINE_CONFIG_START( pipibibs, toaplan2_state )
MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE_ADD("gfxdecode", toaplan2)
- MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
+ MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_DEVICE_ADD_VDP0
MCFG_GP9001_VDP_GFXDECODE("gfxdecode")
+ MCFG_GP9001_VDP_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
@@ -3488,10 +3503,12 @@ static MACHINE_CONFIG_START( pipibibsbl, toaplan2_state )
MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE_ADD("gfxdecode", toaplan2)
- MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
+ MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_DEVICE_ADD_VDP0
MCFG_GP9001_VDP_GFXDECODE("gfxdecode")
+ MCFG_GP9001_VDP_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
@@ -3566,10 +3583,12 @@ static MACHINE_CONFIG_START( fixeight, toaplan2_state )
MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE_ADD("gfxdecode", truxton2)
- MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
+ MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_DEVICE_ADD_VDP0
MCFG_GP9001_VDP_GFXDECODE("gfxdecode")
+ MCFG_GP9001_VDP_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,truxton2)
@@ -3605,10 +3624,12 @@ static MACHINE_CONFIG_START( fixeightbl, toaplan2_state )
MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE_ADD("gfxdecode", fixeightbl)
- MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
+ MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_DEVICE_ADD_VDP0
MCFG_GP9001_VDP_GFXDECODE("gfxdecode")
+ MCFG_GP9001_VDP_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,fixeightbl)
@@ -3644,10 +3665,12 @@ static MACHINE_CONFIG_START( vfive, toaplan2_state )
MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE_ADD("gfxdecode", toaplan2)
- MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
+ MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_DEVICE_ADD_VDP0
MCFG_GP9001_VDP_GFXDECODE("gfxdecode")
+ MCFG_GP9001_VDP_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
@@ -3684,13 +3707,16 @@ static MACHINE_CONFIG_START( batsugun, toaplan2_state )
MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE_ADD("gfxdecode", t2dualvdp)
- MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
+ MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_DEVICE_ADD_VDP0
MCFG_GP9001_VDP_GFXDECODE("gfxdecode")
+ MCFG_GP9001_VDP_PALETTE("palette")
MCFG_DEVICE_ADD_VDP1
MCFG_GP9001_VDP_GFXDECODE("gfxdecode")
+ MCFG_GP9001_VDP_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
@@ -3723,10 +3749,12 @@ static MACHINE_CONFIG_START( pwrkick, toaplan2_state )
MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE_ADD("gfxdecode", toaplan2)
- MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
+ MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_DEVICE_ADD_VDP0
MCFG_GP9001_VDP_GFXDECODE("gfxdecode")
+ MCFG_GP9001_VDP_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
@@ -3755,10 +3783,12 @@ static MACHINE_CONFIG_START( othldrby, toaplan2_state )
MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE_ADD("gfxdecode", toaplan2)
- MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
+ MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_DEVICE_ADD_VDP0
MCFG_GP9001_VDP_GFXDECODE("gfxdecode")
+ MCFG_GP9001_VDP_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
@@ -3790,10 +3820,12 @@ static MACHINE_CONFIG_START( snowbro2, toaplan2_state )
MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE_ADD("gfxdecode", toaplan2)
- MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
+ MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_DEVICE_ADD_VDP0
MCFG_GP9001_VDP_GFXDECODE("gfxdecode")
+ MCFG_GP9001_VDP_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
@@ -3835,10 +3867,12 @@ static MACHINE_CONFIG_START( mahoudai, toaplan2_state )
MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE_ADD("gfxdecode", raizing)
- MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
+ MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_DEVICE_ADD_VDP0
MCFG_GP9001_VDP_GFXDECODE("gfxdecode")
+ MCFG_GP9001_VDP_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,bgaregga)
@@ -3880,10 +3914,12 @@ static MACHINE_CONFIG_START( shippumd, toaplan2_state )
MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE_ADD("gfxdecode", raizing)
- MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
+ MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_DEVICE_ADD_VDP0
MCFG_GP9001_VDP_GFXDECODE("gfxdecode")
+ MCFG_GP9001_VDP_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,bgaregga)
@@ -3936,10 +3972,12 @@ static MACHINE_CONFIG_START( bgaregga, toaplan2_state )
MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2)
MCFG_GFXDECODE_ADD("gfxdecode", raizing)
- MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
+ MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_DEVICE_ADD_VDP0
MCFG_GP9001_VDP_GFXDECODE("gfxdecode")
+ MCFG_GP9001_VDP_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,bgaregga)
@@ -3990,10 +4028,12 @@ static MACHINE_CONFIG_START( batrider, toaplan2_state )
MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_truxton2)
MCFG_GFXDECODE_ADD("gfxdecode", batrider)
- MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
+ MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_DEVICE_ADD_VDP0
MCFG_GP9001_VDP_GFXDECODE("gfxdecode")
+ MCFG_GP9001_VDP_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,batrider)
@@ -4043,10 +4083,11 @@ static MACHINE_CONFIG_START( bbakraid, toaplan2_state )
MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_truxton2)
MCFG_GFXDECODE_ADD("gfxdecode", batrider)
- MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
-
+ MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_DEVICE_ADD_VDP0
MCFG_GP9001_VDP_GFXDECODE("gfxdecode")
+ MCFG_GP9001_VDP_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(toaplan2_state,batrider)
diff --git a/src/mame/drivers/toki.c b/src/mame/drivers/toki.c
index 296851d5751..7ec94349bdc 100644
--- a/src/mame/drivers/toki.c
+++ b/src/mame/drivers/toki.c
@@ -90,7 +90,7 @@ static ADDRESS_MAP_START( toki_map, AS_PROGRAM, 16, toki_state )
AM_RANGE(0x000000, 0x05ffff) AM_ROM
AM_RANGE(0x060000, 0x06d7ff) AM_RAM
AM_RANGE(0x06d800, 0x06dfff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x06e000, 0x06e7ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x06e000, 0x06e7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x06e800, 0x06efff) AM_RAM_WRITE(toki_background1_videoram16_w) AM_SHARE("bg1_vram16")
AM_RANGE(0x06f000, 0x06f7ff) AM_RAM_WRITE(toki_background2_videoram16_w) AM_SHARE("bg2_vram16")
AM_RANGE(0x06f800, 0x06ffff) AM_RAM_WRITE(toki_foreground_videoram16_w) AM_SHARE("videoram")
@@ -105,7 +105,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( tokib_map, AS_PROGRAM, 16, toki_state )
AM_RANGE(0x000000, 0x05ffff) AM_ROM
AM_RANGE(0x060000, 0x06dfff) AM_RAM
- AM_RANGE(0x06e000, 0x06e7ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x06e000, 0x06e7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x06e800, 0x06efff) AM_RAM_WRITE(toki_background1_videoram16_w) AM_SHARE("bg1_vram16")
AM_RANGE(0x06f000, 0x06f7ff) AM_RAM_WRITE(toki_background2_videoram16_w) AM_SHARE("bg2_vram16")
AM_RANGE(0x06f800, 0x06ffff) AM_RAM_WRITE(toki_foreground_videoram16_w) AM_SHARE("videoram")
@@ -429,8 +429,8 @@ static MACHINE_CONFIG_START( toki, toki_state ) /* KOYO 20.000MHz near the cpu *
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", toki)
- MCFG_PALETTE_LENGTH(1024)
-
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
/* sound hardware */
SEIBU_SOUND_SYSTEM_YM3812_RAIDEN_INTERFACE(XTAL_14_31818MHz/4,XTAL_12MHz/12) /* verifed on pcb */
@@ -458,8 +458,8 @@ static MACHINE_CONFIG_START( tokib, toki_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", tokib)
- MCFG_PALETTE_LENGTH(1024)
-
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/tokyocop.c b/src/mame/drivers/tokyocop.c
index d9811834263..59e50fcd139 100644
--- a/src/mame/drivers/tokyocop.c
+++ b/src/mame/drivers/tokyocop.c
@@ -74,7 +74,7 @@ static MACHINE_CONFIG_START( tokyocop, tokyocop_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/tonton.c b/src/mame/drivers/tonton.c
index e27eb7c917c..e77741ce3a7 100644
--- a/src/mame/drivers/tonton.c
+++ b/src/mame/drivers/tonton.c
@@ -283,7 +283,7 @@ static MACHINE_CONFIG_START( tonton, tonton_state )
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_DEVICE("v9938", v9938_device, screen_update)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW )
diff --git a/src/mame/drivers/toobin.c b/src/mame/drivers/toobin.c
index 08295c596a3..fe75be190ce 100644
--- a/src/mame/drivers/toobin.c
+++ b/src/mame/drivers/toobin.c
@@ -218,7 +218,7 @@ static MACHINE_CONFIG_START( toobin, toobin_state )
MCFG_SCREEN_UPDATE_DRIVER(toobin_state, screen_update_toobin)
MCFG_GFXDECODE_ADD("gfxdecode", toobin)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
MCFG_VIDEO_START_OVERRIDE(toobin_state,toobin)
diff --git a/src/mame/drivers/topspeed.c b/src/mame/drivers/topspeed.c
index 4c061af9279..5fbcfa705e8 100644
--- a/src/mame/drivers/topspeed.c
+++ b/src/mame/drivers/topspeed.c
@@ -367,7 +367,7 @@ WRITE_LINE_MEMBER(topspeed_state::z80ctc_to0)
static ADDRESS_MAP_START( cpua_map, AS_PROGRAM, 16, topspeed_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0x500000, 0x503fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x500000, 0x503fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x600002, 0x600003) AM_WRITE(cpua_ctrl_w)
AM_RANGE(0x7e0000, 0x7e0001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0x00ff)
AM_RANGE(0x7e0002, 0x7e0003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff)
@@ -623,8 +623,10 @@ static MACHINE_CONFIG_START( topspeed, topspeed_state )
MCFG_Z80CTC_ADD("ctc", XTAL_16MHz / 4, ctc_intf)
MCFG_PC080SN_ADD("pc080sn_1", pc080sn_intf)
MCFG_PC080SN_GFXDECODE("gfxdecode")
+ MCFG_PC080SN_PALETTE("palette")
MCFG_PC080SN_ADD("pc080sn_2", pc080sn_intf)
MCFG_PC080SN_GFXDECODE("gfxdecode")
+ MCFG_PC080SN_PALETTE("palette")
MCFG_TC0140SYT_ADD("tc0140syt", tc0140syt_intf)
MCFG_TC0220IOC_ADD("tc0220ioc", io_intf)
@@ -637,7 +639,8 @@ static MACHINE_CONFIG_START( topspeed, topspeed_state )
MCFG_SCREEN_UPDATE_DRIVER(topspeed_state, screen_update_topspeed)
MCFG_GFXDECODE_ADD("gfxdecode", topspeed)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
// sound hardware
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/tourtabl.c b/src/mame/drivers/tourtabl.c
index bbac3299acd..c6d89bdd804 100644
--- a/src/mame/drivers/tourtabl.c
+++ b/src/mame/drivers/tourtabl.c
@@ -187,7 +187,7 @@ static MACHINE_CONFIG_START( tourtabl, tourtabl_state )
MCFG_SCREEN_RAW_PARAMS( MASTER_CLOCK, 228, 34, 34 + 160, 262, 46, 46 + 200 )
MCFG_SCREEN_UPDATE_DEVICE("tia_video", tia_video_device, screen_update)
- MCFG_PALETTE_LENGTH(TIA_PALETTE_LENGTH)
+ MCFG_PALETTE_ADD("palette", TIA_PALETTE_LENGTH)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/tourvis.c b/src/mame/drivers/tourvis.c
index aa1c75680a7..553bc4014a6 100644
--- a/src/mame/drivers/tourvis.c
+++ b/src/mame/drivers/tourvis.c
@@ -382,9 +382,9 @@ static MACHINE_CONFIG_START( tourvision, tourvision_state )
MCFG_SCREEN_RAW_PARAMS(PCE_MAIN_CLOCK/2, VDC_WPF, 70, 70 + 512 + 32, VDC_LPF, 14, 14+242)
MCFG_SCREEN_UPDATE_STATIC( pce )
- /* MCFG_GFXDECODE_ADD("gfxdecode", pce_gfxdecodeinfo ) */
- MCFG_PALETTE_LENGTH(1024)
- MCFG_PALETTE_INIT( vce )
+ /* MCFG_GFXDECODE_ADD("gfxdecode", pce_gfxdecodeinfo ) */
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_INIT_LEGACY( vce )
MCFG_VIDEO_START( pce )
diff --git a/src/mame/drivers/toypop.c b/src/mame/drivers/toypop.c
index 2b26de3aa40..e25cd1e3ba1 100644
--- a/src/mame/drivers/toypop.c
+++ b/src/mame/drivers/toypop.c
@@ -567,8 +567,8 @@ static MACHINE_CONFIG_START( liblrabl, toypop_state )
MCFG_SCREEN_UPDATE_DRIVER(toypop_state, screen_update_toypop)
MCFG_GFXDECODE_ADD("gfxdecode", toypop)
- MCFG_PALETTE_LENGTH(128*4+64*4+16*2)
-
+ MCFG_PALETTE_ADD("palette", 128*4+64*4+16*2)
+ MCFG_PALETTE_INIT_OWNER(toypop_state, toypop)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/tp84.c b/src/mame/drivers/tp84.c
index 127bfbf9d25..cb6d573470a 100644
--- a/src/mame/drivers/tp84.c
+++ b/src/mame/drivers/tp84.c
@@ -310,8 +310,8 @@ static MACHINE_CONFIG_START( tp84, tp84_state )
MCFG_SCREEN_UPDATE_DRIVER(tp84_state, screen_update_tp84)
MCFG_GFXDECODE_ADD("gfxdecode", tp84)
- MCFG_PALETTE_LENGTH(4096)
-
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_INIT_OWNER(tp84_state, tp84)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/trackfld.c b/src/mame/drivers/trackfld.c
index 4c31e9c6a84..1b113d2fcfa 100644
--- a/src/mame/drivers/trackfld.c
+++ b/src/mame/drivers/trackfld.c
@@ -910,9 +910,9 @@ static MACHINE_CONFIG_START( trackfld, trackfld_state )
MCFG_SCREEN_UPDATE_DRIVER(trackfld_state, screen_update_trackfld)
MCFG_GFXDECODE_ADD("gfxdecode", trackfld)
- MCFG_PALETTE_LENGTH(16*16+16*16)
+ MCFG_PALETTE_ADD("palette", 16*16+16*16)
- MCFG_PALETTE_INIT_OVERRIDE(trackfld_state,trackfld)
+ MCFG_PALETTE_INIT_OWNER(trackfld_state,trackfld)
MCFG_VIDEO_START_OVERRIDE(trackfld_state,trackfld)
/* sound hardware */
@@ -962,9 +962,9 @@ static MACHINE_CONFIG_START( yieartf, trackfld_state )
MCFG_SCREEN_UPDATE_DRIVER(trackfld_state, screen_update_trackfld)
MCFG_GFXDECODE_ADD("gfxdecode", trackfld)
- MCFG_PALETTE_LENGTH(16*16+16*16)
+ MCFG_PALETTE_ADD("palette", 16*16+16*16)
- MCFG_PALETTE_INIT_OVERRIDE(trackfld_state,trackfld)
+ MCFG_PALETTE_INIT_OWNER(trackfld_state,trackfld)
MCFG_VIDEO_START_OVERRIDE(trackfld_state,trackfld)
/* sound hardware */
diff --git a/src/mame/drivers/travrusa.c b/src/mame/drivers/travrusa.c
index 1c98be75ae1..758043de9c6 100644
--- a/src/mame/drivers/travrusa.c
+++ b/src/mame/drivers/travrusa.c
@@ -318,8 +318,8 @@ static MACHINE_CONFIG_START( travrusa, travrusa_state )
MCFG_GFXDECODE_ADD("gfxdecode", travrusa)
- MCFG_PALETTE_LENGTH(16*8+16*8)
-
+ MCFG_PALETTE_ADD("palette", 16*8+16*8)
+ MCFG_PALETTE_INIT_OWNER(travrusa_state, travrusa)
/* sound hardware */
MCFG_FRAGMENT_ADD(m52_sound_c_audio)
@@ -329,7 +329,8 @@ static MACHINE_CONFIG_DERIVED( shtrider, travrusa )
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", shtrider)
- MCFG_PALETTE_INIT_OVERRIDE(travrusa_state,shtrider)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(travrusa_state,shtrider)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/triforce.c b/src/mame/drivers/triforce.c
index f9f927966e3..c3dd21d8c01 100644
--- a/src/mame/drivers/triforce.c
+++ b/src/mame/drivers/triforce.c
@@ -535,7 +535,7 @@ static MACHINE_CONFIG_START( triforce_base, triforce_state )
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
MCFG_SCREEN_UPDATE_DRIVER(triforce_state, screen_update_triforce)
- MCFG_PALETTE_LENGTH(65536)
+ MCFG_PALETTE_ADD("palette", 65536)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/triplhnt.c b/src/mame/drivers/triplhnt.c
index 3b103d1dbd5..bf4fbd87367 100644
--- a/src/mame/drivers/triplhnt.c
+++ b/src/mame/drivers/triplhnt.c
@@ -289,16 +289,16 @@ static GFXDECODE_START( triplhnt )
GFXDECODE_END
-void triplhnt_state::palette_init()
+PALETTE_INIT_MEMBER(triplhnt_state, triplhnt)
{
- palette_set_color(machine(), 0, rgb_t(0xAF, 0xAF, 0xAF)); /* sprites */
- palette_set_color(machine(), 1, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), 2, rgb_t(0xFF, 0xFF, 0xFF));
- palette_set_color(machine(), 3, rgb_t(0x50, 0x50, 0x50));
- palette_set_color(machine(), 4, rgb_t(0x00, 0x00, 0x00)); /* tiles */
- palette_set_color(machine(), 5, rgb_t(0x3F, 0x3F, 0x3F));
- palette_set_color(machine(), 6, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), 7, rgb_t(0x3F, 0x3F, 0x3F));
+ palette.set_pen_color(0, rgb_t(0xAF, 0xAF, 0xAF)); /* sprites */
+ palette.set_pen_color(1, rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(2, rgb_t(0xFF, 0xFF, 0xFF));
+ palette.set_pen_color(3, rgb_t(0x50, 0x50, 0x50));
+ palette.set_pen_color(4, rgb_t(0x00, 0x00, 0x00)); /* tiles */
+ palette.set_pen_color(5, rgb_t(0x3F, 0x3F, 0x3F));
+ palette.set_pen_color(6, rgb_t(0x00, 0x00, 0x00));
+ palette.set_pen_color(7, rgb_t(0x3F, 0x3F, 0x3F));
}
@@ -319,7 +319,8 @@ static MACHINE_CONFIG_START( triplhnt, triplhnt_state )
MCFG_SCREEN_UPDATE_DRIVER(triplhnt_state, screen_update_triplhnt)
MCFG_GFXDECODE_ADD("gfxdecode", triplhnt)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(triplhnt_state, triplhnt)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/truco.c b/src/mame/drivers/truco.c
index c5cdb33ba77..cc6677a2e2a 100644
--- a/src/mame/drivers/truco.c
+++ b/src/mame/drivers/truco.c
@@ -454,7 +454,8 @@ static MACHINE_CONFIG_START( truco, truco_state )
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 192-1)
MCFG_SCREEN_UPDATE_DRIVER(truco_state, screen_update_truco)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(truco_state, truco)
MCFG_MC6845_ADD("crtc", MC6845, "screen", CRTC_CLOCK, mc6845_intf) /* Identified as UM6845 */
diff --git a/src/mame/drivers/trucocl.c b/src/mame/drivers/trucocl.c
index 9631a29ac40..d62255264fc 100644
--- a/src/mame/drivers/trucocl.c
+++ b/src/mame/drivers/trucocl.c
@@ -150,8 +150,8 @@ static MACHINE_CONFIG_START( trucocl, trucocl_state )
MCFG_SCREEN_UPDATE_DRIVER(trucocl_state, screen_update_trucocl)
MCFG_GFXDECODE_ADD("gfxdecode", trucocl)
- MCFG_PALETTE_LENGTH(32)
-
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(trucocl_state, trucocl)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/trvmadns.c b/src/mame/drivers/trvmadns.c
index 47002e1d6b0..a067a1f81b7 100644
--- a/src/mame/drivers/trvmadns.c
+++ b/src/mame/drivers/trvmadns.c
@@ -207,7 +207,7 @@ WRITE8_MEMBER(trvmadns_state::trvmadns_palette_w)
r = (((datax & 0x0038)>>3) | ((datax & 0x0400)>>7)) ^ 0xf;
g = (((datax & 0x01c0)>>6) | ((datax & 0x0800)>>8)) ^ 0xf;
- palette_set_color_rgb(machine(), offset, pal4bit(r), pal4bit(g), pal4bit(b));
+ m_palette->set_pen_color(offset, pal4bit(r), pal4bit(g), pal4bit(b));
}
@@ -340,7 +340,7 @@ UINT32 trvmadns_state::screen_update_trvmadns(screen_device &screen, bitmap_ind1
int flipy = attr & 2;
if(!(attr & 0x20))
- gfx->opaque(bitmap,cliprect,tile,color,flipx,flipy,(x*8),(y*8));
+ gfx->opaque(m_palette,bitmap,cliprect,tile,color,flipx,flipy,(x*8),(y*8));
count++;
}
}
@@ -358,7 +358,7 @@ UINT32 trvmadns_state::screen_update_trvmadns(screen_device &screen, bitmap_ind1
int flipy = attr & 2;
if(attr & 0x20)
- gfx->transpen(bitmap,cliprect,tile,color,flipx,flipy,(x*8),(y*8),1);
+ gfx->transpen(m_palette,bitmap,cliprect,tile,color,flipx,flipy,(x*8),(y*8),1);
count++;
}
}
@@ -387,7 +387,7 @@ static MACHINE_CONFIG_START( trvmadns, trvmadns_state )
MCFG_SCREEN_UPDATE_DRIVER(trvmadns_state, screen_update_trvmadns)
MCFG_GFXDECODE_ADD("gfxdecode", trvmadns)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
/* sound hardware */
diff --git a/src/mame/drivers/tryout.c b/src/mame/drivers/tryout.c
index 762a2f17166..4490ad41ea1 100644
--- a/src/mame/drivers/tryout.c
+++ b/src/mame/drivers/tryout.c
@@ -203,8 +203,8 @@ static MACHINE_CONFIG_START( tryout, tryout_state )
MCFG_SCREEN_UPDATE_DRIVER(tryout_state, screen_update_tryout)
MCFG_GFXDECODE_ADD("gfxdecode", tryout)
- MCFG_PALETTE_LENGTH(0x20)
-
+ MCFG_PALETTE_ADD("palette", 0x20)
+ MCFG_PALETTE_INIT_OWNER(tryout_state, tryout)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/tsamurai.c b/src/mame/drivers/tsamurai.c
index d813df7acf7..af389e57a22 100644
--- a/src/mame/drivers/tsamurai.c
+++ b/src/mame/drivers/tsamurai.c
@@ -697,9 +697,7 @@ static MACHINE_CONFIG_START( tsamurai, tsamurai_state )
MCFG_SCREEN_UPDATE_DRIVER(tsamurai_state, screen_update_tsamurai)
MCFG_GFXDECODE_ADD("gfxdecode", tsamurai)
- MCFG_PALETTE_LENGTH(256)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
MCFG_VIDEO_START_OVERRIDE(tsamurai_state,tsamurai)
/* sound hardware */
@@ -737,9 +735,7 @@ static MACHINE_CONFIG_START( vsgongf, tsamurai_state )
MCFG_SCREEN_UPDATE_DRIVER(tsamurai_state, screen_update_vsgongf)
MCFG_GFXDECODE_ADD("gfxdecode", tsamurai)
- MCFG_PALETTE_LENGTH(256)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
MCFG_VIDEO_START_OVERRIDE(tsamurai_state,vsgongf)
/* sound hardware */
@@ -781,9 +777,7 @@ static MACHINE_CONFIG_START( m660, tsamurai_state )
MCFG_SCREEN_UPDATE_DRIVER(tsamurai_state, screen_update_tsamurai)
MCFG_GFXDECODE_ADD("gfxdecode", tsamurai)
- MCFG_PALETTE_LENGTH(256)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
MCFG_VIDEO_START_OVERRIDE(tsamurai_state,tsamurai)
/* sound hardware */
diff --git a/src/mame/drivers/ttchamp.c b/src/mame/drivers/ttchamp.c
index 2d7fc58a83b..4603cc55a39 100644
--- a/src/mame/drivers/ttchamp.c
+++ b/src/mame/drivers/ttchamp.c
@@ -106,7 +106,7 @@ UINT32 ttchamp_state::screen_update_ttchamp(screen_device &screen, bitmap_ind16
// int i;
static const int xxx=320,yyy=204;
- bitmap.fill(get_black_pen(machine()));
+ bitmap.fill(m_palette->black_pen());
// for (i=0;i<256;i++)
// {
@@ -116,7 +116,7 @@ UINT32 ttchamp_state::screen_update_ttchamp(screen_device &screen, bitmap_ind16
// b = (dat>>10)&0x1f;
// g = (dat>>5)&0x1f;
// r = (dat>>0)&0x1f;
-// palette_set_color_rgb(machine(),i,pal5bit(r),pal5bit(g),pal5bit(b));
+// m_palette->set_pen_color(i,pal5bit(r),pal5bit(g),pal5bit(b));
// }
count=0;
@@ -154,7 +154,7 @@ WRITE16_MEMBER(ttchamp_state::pcup_prgbank_w)
WRITE16_MEMBER(ttchamp_state::paldat_w)
{
- palette_set_color_rgb(machine(),m_paloff & 0x7fff,pal5bit(data>>0),pal5bit(data>>5),pal5bit(data>>10));
+ m_palette->set_pen_color(m_paloff & 0x7fff,pal5bit(data>>0),pal5bit(data>>5),pal5bit(data>>10));
}
READ16_MEMBER(ttchamp_state::peno_rand)
@@ -291,7 +291,7 @@ static MACHINE_CONFIG_START( ttchamp, ttchamp_state )
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
MCFG_SCREEN_UPDATE_DRIVER(ttchamp_state, screen_update_ttchamp)
- MCFG_PALETTE_LENGTH(0x8000)
+ MCFG_PALETTE_ADD("palette", 0x8000)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/tubep.c b/src/mame/drivers/tubep.c
index aeaf9a3d874..52ccfd7f4d0 100644
--- a/src/mame/drivers/tubep.c
+++ b/src/mame/drivers/tubep.c
@@ -928,9 +928,9 @@ static MACHINE_CONFIG_START( tubep, tubep_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(tubep_state, screen_update_tubep)
- MCFG_PALETTE_LENGTH(32 + 256*64)
+ MCFG_PALETTE_ADD("palette", 32 + 256*64)
- MCFG_PALETTE_INIT_OVERRIDE(tubep_state,tubep)
+ MCFG_PALETTE_INIT_OWNER(tubep_state,tubep)
MCFG_VIDEO_START_OVERRIDE(tubep_state,tubep)
MCFG_VIDEO_RESET_OVERRIDE(tubep_state,tubep)
@@ -988,9 +988,9 @@ static MACHINE_CONFIG_START( rjammer, tubep_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(tubep_state, screen_update_rjammer)
- MCFG_PALETTE_LENGTH(64)
+ MCFG_PALETTE_ADD("palette", 64)
- MCFG_PALETTE_INIT_OVERRIDE(tubep_state,rjammer)
+ MCFG_PALETTE_INIT_OWNER(tubep_state,rjammer)
MCFG_VIDEO_START_OVERRIDE(tubep_state,tubep)
MCFG_VIDEO_RESET_OVERRIDE(tubep_state,tubep)
diff --git a/src/mame/drivers/tugboat.c b/src/mame/drivers/tugboat.c
index edd9b3ee6d9..d1030566d4d 100644
--- a/src/mame/drivers/tugboat.c
+++ b/src/mame/drivers/tugboat.c
@@ -59,7 +59,7 @@ public:
virtual void machine_start();
virtual void video_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(tugboat);
UINT32 screen_update_tugboat(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_tilemap(bitmap_ind16 &bitmap,const rectangle &cliprect,
int addr,int gfx0,int gfx1,int transparency);
@@ -86,12 +86,12 @@ void tugboat_state::video_start()
/* there isn't the usual resistor array anywhere near the color prom,
just four 1k resistors. */
-void tugboat_state::palette_init()
+PALETTE_INIT_MEMBER(tugboat_state, tugboat)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int r,g,b,brt;
@@ -101,7 +101,7 @@ void tugboat_state::palette_init()
g = brt * ((color_prom[i] >> 1) & 0x01);
b = brt * ((color_prom[i] >> 2) & 0x01);
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
}
@@ -152,7 +152,7 @@ void tugboat_state::draw_tilemap(bitmap_ind16 &bitmap,const rectangle &cliprect,
transpen = 1;
}
- m_gfxdecode->gfx(rgn)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(rgn)->transpen(m_palette,bitmap,cliprect,
code,
color,
0,0,
@@ -361,7 +361,8 @@ static MACHINE_CONFIG_START( tugboat, tugboat_state )
MCFG_SCREEN_UPDATE_DRIVER(tugboat_state, screen_update_tugboat)
MCFG_GFXDECODE_ADD("gfxdecode", tugboat)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(tugboat_state, tugboat)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/tumbleb.c b/src/mame/drivers/tumbleb.c
index 13f72776bb5..92b5e579fcf 100644
--- a/src/mame/drivers/tumbleb.c
+++ b/src/mame/drivers/tumbleb.c
@@ -632,7 +632,7 @@ static ADDRESS_MAP_START( tumblepopb_main_map, AS_PROGRAM, 16, tumbleb_state )
#endif
AM_RANGE(0x100000, 0x100001) AM_READWRITE(tumblepb_prot_r, tumblepb_oki_w)
AM_RANGE(0x120000, 0x123fff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x140000, 0x1407ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x140000, 0x1407ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_SHARE("spriteram") /* Bootleg sprite buffer */
AM_RANGE(0x160800, 0x160807) AM_WRITEONLY /* writes past the end of spriteram */
AM_RANGE(0x180000, 0x18000f) AM_READ(tumblepopb_controls_r)
@@ -654,7 +654,7 @@ static ADDRESS_MAP_START( fncywld_main_map, AS_PROGRAM, 16, tumbleb_state )
#endif
AM_RANGE(0x100000, 0x100003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
AM_RANGE(0x100004, 0x100005) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x140000, 0x140fff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x140000, 0x140fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_SHARE("spriteram") /* sprites */
AM_RANGE(0x160800, 0x16080f) AM_WRITEONLY /* goes slightly past the end of spriteram? */
AM_RANGE(0x180000, 0x18000f) AM_READ(tumblepopb_controls_r)
@@ -682,7 +682,7 @@ static ADDRESS_MAP_START( htchctch_main_map, AS_PROGRAM, 16, tumbleb_state )
AM_RANGE(0x100000, 0x100001) AM_WRITE(semicom_soundcmd_w)
AM_RANGE(0x100002, 0x100003) AM_WRITE(bcstory_tilebank_w)
AM_RANGE(0x120000, 0x123fff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x140000, 0x1407ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x140000, 0x1407ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x160000, 0x160fff) AM_RAM AM_SHARE("spriteram") /* Bootleg sprite buffer */
AM_RANGE(0x180000, 0x18000f) AM_READ(tumblepopb_controls_r)
AM_RANGE(0x18000c, 0x18000d) AM_WRITENOP
@@ -708,7 +708,7 @@ static ADDRESS_MAP_START( suprtrio_main_map, AS_PROGRAM, 16, tumbleb_state )
AM_RANGE(0xa00000, 0xa0000f) AM_RAM AM_SHARE("control")
AM_RANGE(0xa20000, 0xa20fff) AM_RAM_WRITE(tumblepb_pf1_data_w) AM_SHARE("pf1_data")
AM_RANGE(0xa22000, 0xa22fff) AM_RAM_WRITE(tumblepb_pf2_data_w) AM_SHARE("pf2_data")
- AM_RANGE(0xcf0000, 0xcf05ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xcf0000, 0xcf05ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("PLAYERS") AM_WRITE(suprtrio_tilebank_w)
AM_RANGE(0xe40000, 0xe40001) AM_READ_PORT("SYSTEM")
AM_RANGE(0xe80002, 0xe80003) AM_READ_PORT("DSW")
@@ -719,7 +719,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( pangpang_main_map, AS_PROGRAM, 16, tumbleb_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x120000, 0x123fff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x140000, 0x1407ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x140000, 0x1407ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_SHARE("spriteram") /* Bootleg sprite buffer */
AM_RANGE(0x160800, 0x160807) AM_WRITEONLY // writes past the end of spriteram
AM_RANGE(0x180000, 0x18000f) AM_READ(tumblepopb_controls_r)
@@ -775,7 +775,7 @@ static ADDRESS_MAP_START( jumpkids_main_map, AS_PROGRAM, 16, tumbleb_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x100000, 0x100001) AM_WRITE(jumpkids_sound_w)
AM_RANGE(0x120000, 0x123fff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0x140000, 0x1407ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x140000, 0x1407ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_SHARE("spriteram") /* Bootleg sprite buffer */
AM_RANGE(0x160800, 0x160807) AM_WRITEONLY /* writes past the end of spriteram */
AM_RANGE(0x180000, 0x18000f) AM_READ(tumblepopb_controls_r)
@@ -2062,9 +2062,11 @@ static MACHINE_CONFIG_START( tumblepb, tumbleb_state )
decospr_device::set_gfx_region(*device, 3);
decospr_device::set_is_bootleg(*device, true);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", tumbleb)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_VIDEO_START_OVERRIDE(tumbleb_state,tumblepb)
@@ -2098,9 +2100,11 @@ static MACHINE_CONFIG_START( tumbleb2, tumbleb_state )
decospr_device::set_gfx_region(*device, 3);
decospr_device::set_is_bootleg(*device, true);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", tumbleb)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_VIDEO_START_OVERRIDE(tumbleb_state,tumblepb)
@@ -2137,9 +2141,11 @@ static MACHINE_CONFIG_START( jumpkids, tumbleb_state )
decospr_device::set_gfx_region(*device, 3);
decospr_device::set_is_bootleg(*device, true);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", tumbleb)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_VIDEO_START_OVERRIDE(tumbleb_state,tumblepb)
@@ -2173,9 +2179,11 @@ static MACHINE_CONFIG_START( fncywld, tumbleb_state )
decospr_device::set_is_bootleg(*device, true);
decospr_device::set_transpen(*device, 15);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", fncywld)
- MCFG_PALETTE_LENGTH(0x800)
+ MCFG_PALETTE_ADD("palette", 0x800)
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
MCFG_VIDEO_START_OVERRIDE(tumbleb_state,fncywld)
@@ -2230,9 +2238,11 @@ static MACHINE_CONFIG_START( htchctch, tumbleb_state )
decospr_device::set_gfx_region(*device, 3);
decospr_device::set_is_bootleg(*device, true);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", tumbleb)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(tumbleb_state,tumblepb)
@@ -2333,9 +2343,11 @@ static MACHINE_CONFIG_START( suprtrio, tumbleb_state )
decospr_device::set_gfx_region(*device, 3);
decospr_device::set_is_bootleg(*device, true);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", suprtrio)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(tumbleb_state,suprtrio)
@@ -2369,9 +2381,11 @@ static MACHINE_CONFIG_START( pangpang, tumbleb_state )
decospr_device::set_gfx_region(*device, 3);
decospr_device::set_is_bootleg(*device, true);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", tumbleb)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_VIDEO_START_OVERRIDE(tumbleb_state,pangpang)
@@ -3553,7 +3567,7 @@ DRIVER_INIT_MEMBER(tumbleb_state,chokchok)
DRIVER_INIT_CALL(htchctch);
/* different palette format, closer to tumblep -- is this controlled by a register? the palette was right with the hatch catch trojan */
- m_maincpu->space(AS_PROGRAM).install_write_handler(0x140000, 0x140fff, write16_delegate(FUNC(tumbleb_state::paletteram_xxxxBBBBGGGGRRRR_word_w), this));
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0x140000, 0x140fff, write16_delegate(FUNC(palette_device::write), m_palette.target()));
/* slightly different banking */
m_maincpu->space(AS_PROGRAM).install_write_handler(0x100002, 0x100003, write16_delegate(FUNC(tumbleb_state::chokchok_tilebank_w),this));
diff --git a/src/mame/drivers/tumblep.c b/src/mame/drivers/tumblep.c
index 14a6ae9b6c5..5f89db3f409 100644
--- a/src/mame/drivers/tumblep.c
+++ b/src/mame/drivers/tumblep.c
@@ -112,7 +112,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, tumblep_state )
#endif
AM_RANGE(0x100000, 0x100001) AM_WRITE(tumblep_sound_w)
AM_RANGE(0x120000, 0x123fff) AM_RAM
- AM_RANGE(0x140000, 0x1407ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x140000, 0x1407ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x180000, 0x18000f) AM_READ(tumblepop_controls_r)
AM_RANGE(0x18000c, 0x18000d) AM_WRITENOP
AM_RANGE(0x1a0000, 0x1a07ff) AM_RAM AM_SHARE("spriteram")
@@ -305,14 +305,17 @@ static MACHINE_CONFIG_START( tumblep, tumblep_state )
MCFG_SCREEN_UPDATE_DRIVER(tumblep_state, screen_update_tumblep)
MCFG_GFXDECODE_ADD("gfxdecode", tumblep)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_DECO16IC_ADD("tilegen1", tumblep_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
decospr_device::set_gfx_region(*device, 2);
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
+ MCFG_DECO_SPRITE_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/tunhunt.c b/src/mame/drivers/tunhunt.c
index 13536241e9a..3873915250f 100644
--- a/src/mame/drivers/tunhunt.c
+++ b/src/mame/drivers/tunhunt.c
@@ -308,8 +308,8 @@ static MACHINE_CONFIG_START( tunhunt, tunhunt_state )
MCFG_SCREEN_UPDATE_DRIVER(tunhunt_state, screen_update_tunhunt)
MCFG_GFXDECODE_ADD("gfxdecode", tunhunt)
- MCFG_PALETTE_LENGTH(0x1a)
-
+ MCFG_PALETTE_ADD("palette", 0x1a)
+ MCFG_PALETTE_INIT_OWNER(tunhunt_state, tunhunt)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/turbo.c b/src/mame/drivers/turbo.c
index 93137b4dc2e..269268739d3 100644
--- a/src/mame/drivers/turbo.c
+++ b/src/mame/drivers/turbo.c
@@ -941,13 +941,13 @@ static MACHINE_CONFIG_START( turbo, turbo_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_GFXDECODE_ADD("gfxdecode", turbo)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(turbo_state,turbo)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(turbo_state, screen_update_turbo)
- MCFG_PALETTE_INIT_OVERRIDE(turbo_state,turbo)
MCFG_VIDEO_START_OVERRIDE(turbo_state,turbo)
/* sound hardware */
@@ -970,13 +970,13 @@ static MACHINE_CONFIG_START( subroc3d, turbo_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_GFXDECODE_ADD("gfxdecode", turbo)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(turbo_state,subroc3d)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(turbo_state, screen_update_subroc3d)
- MCFG_PALETTE_INIT_OVERRIDE(turbo_state,subroc3d)
MCFG_VIDEO_START_OVERRIDE(turbo_state,turbo)
/* sound hardware */
@@ -1006,13 +1006,13 @@ static MACHINE_CONFIG_START( buckrog, turbo_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_GFXDECODE_ADD("gfxdecode", turbo)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_INIT_OWNER(turbo_state,buckrog)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(turbo_state, screen_update_buckrog)
- MCFG_PALETTE_INIT_OVERRIDE(turbo_state,buckrog)
MCFG_VIDEO_START_OVERRIDE(turbo_state,buckrog)
/* sound hardware */
diff --git a/src/mame/drivers/turrett.c b/src/mame/drivers/turrett.c
index 8caf3646dd3..987c630fa47 100644
--- a/src/mame/drivers/turrett.c
+++ b/src/mame/drivers/turrett.c
@@ -365,8 +365,9 @@ static MACHINE_CONFIG_START( turrett, turrett_state )
// to ensure in-sync streaming sound
MCFG_SCREEN_RAW_PARAMS(4000000, 512, 0, 336, 259, 0, 244)
MCFG_SCREEN_UPDATE_DRIVER(turrett_state, screen_update)
- MCFG_PALETTE_LENGTH(32768)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRRR_GGGGG_BBBBB)
+ //MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB("palette")
+
+ MCFG_PALETTE_ADD("palette", 0x2000)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/twin16.c b/src/mame/drivers/twin16.c
index 628fc9ec8a0..07804274ec8 100644
--- a/src/mame/drivers/twin16.c
+++ b/src/mame/drivers/twin16.c
@@ -671,7 +671,6 @@ static MACHINE_CONFIG_START( twin16, twin16_state )
MCFG_MACHINE_RESET_OVERRIDE(twin16_state,twin16)
// video hardware
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
MCFG_SCREEN_ADD("screen", RASTER)
@@ -680,7 +679,9 @@ static MACHINE_CONFIG_START( twin16, twin16_state )
MCFG_SCREEN_VBLANK_DRIVER(twin16_state, screen_eof_twin16)
MCFG_GFXDECODE_ADD("gfxdecode", twin16)
- MCFG_PALETTE_LENGTH(0x400)
+
+ MCFG_PALETTE_ADD("palette", 0x400)
+ MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_VIDEO_START_OVERRIDE(twin16_state,twin16)
@@ -722,7 +723,6 @@ static MACHINE_CONFIG_START( fround, twin16_state )
MCFG_MACHINE_RESET_OVERRIDE(twin16_state,twin16)
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
MCFG_SCREEN_ADD("screen", RASTER)
@@ -731,7 +731,9 @@ static MACHINE_CONFIG_START( fround, twin16_state )
MCFG_SCREEN_VBLANK_DRIVER(twin16_state, screen_eof_twin16)
MCFG_GFXDECODE_ADD("gfxdecode", twin16)
- MCFG_PALETTE_LENGTH(0x400)
+
+ MCFG_PALETTE_ADD("palette", 0x400)
+ MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_VIDEO_START_OVERRIDE(twin16_state,twin16)
diff --git a/src/mame/drivers/twincobr.c b/src/mame/drivers/twincobr.c
index d6fa5a4b78a..34fc21a18cd 100644
--- a/src/mame/drivers/twincobr.c
+++ b/src/mame/drivers/twincobr.c
@@ -393,7 +393,7 @@ static ADDRESS_MAP_START( main_program_map, AS_PROGRAM, 16, twincobr_state )
AM_RANGE(0x000000, 0x02ffff) AM_ROM
AM_RANGE(0x030000, 0x033fff) AM_RAM /* 68K and DSP shared RAM */
AM_RANGE(0x040000, 0x040fff) AM_RAM AM_SHARE("spriteram16")
- AM_RANGE(0x050000, 0x050dff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x050000, 0x050dff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x060000, 0x060001) AM_DEVWRITE8("crtc", mc6845_device, address_w, 0x00ff)
AM_RANGE(0x060002, 0x060003) AM_DEVWRITE8("crtc", mc6845_device, register_w, 0x00ff)
AM_RANGE(0x070000, 0x070003) AM_WRITE(twincobr_txscroll_w) /* text layer scroll */
@@ -704,7 +704,8 @@ static MACHINE_CONFIG_START( twincobr, twincobr_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram16", buffered_spriteram16_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", twincobr)
- MCFG_PALETTE_LENGTH(1792)
+ MCFG_PALETTE_ADD("palette", 1792)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(twincobr_state,toaplan0)
diff --git a/src/mame/drivers/twins.c b/src/mame/drivers/twins.c
index 5545a2f6bec..96e356b8feb 100644
--- a/src/mame/drivers/twins.c
+++ b/src/mame/drivers/twins.c
@@ -128,7 +128,7 @@ UINT32 twins_state::screen_update_twins(screen_device &screen, bitmap_ind16 &bit
int i;
static const int xxx=320,yyy=204;
- bitmap.fill(get_black_pen(machine()));
+ bitmap.fill(m_palette->black_pen());
for (i=0;i<0x100;i++)
{
@@ -144,7 +144,7 @@ UINT32 twins_state::screen_update_twins(screen_device &screen, bitmap_ind16 &bit
b = (dat>>10) & 0x1f;
b = BITSWAP8(b,7,6,5,0,1,2,3,4);
- palette_set_color_rgb(machine(),i, pal5bit(r),pal5bit(g),pal5bit(b));
+ m_palette->set_pen_color(i, pal5bit(r),pal5bit(g),pal5bit(b));
}
count=0;
@@ -207,7 +207,7 @@ static MACHINE_CONFIG_START( twins, twins_state )
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
MCFG_SCREEN_UPDATE_DRIVER(twins_state, screen_update_twins)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_VIDEO_START_OVERRIDE(twins_state,twins)
@@ -234,7 +234,7 @@ UINT32 twins_state::screen_update_twinsa(screen_device &screen, bitmap_ind16 &bi
int i;
static const int xxx=320,yyy=204;
- bitmap.fill(get_black_pen(machine()));
+ bitmap.fill(m_palette->black_pen());
for (i=0;i<0x1000-3;i+=3)
{
@@ -243,7 +243,7 @@ UINT32 twins_state::screen_update_twinsa(screen_device &screen, bitmap_ind16 &bi
g = m_paletteram[i+1];
b = m_paletteram[i+2];
- palette_set_color_rgb(machine(),i/3, pal6bit(r), pal6bit(g), pal6bit(b));
+ m_palette->set_pen_color(i/3, pal6bit(r), pal6bit(g), pal6bit(b));
}
count=0;
@@ -296,7 +296,7 @@ static MACHINE_CONFIG_START( twinsa, twins_state )
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
MCFG_SCREEN_UPDATE_DRIVER(twins_state, screen_update_twinsa)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
MCFG_VIDEO_START_OVERRIDE(twins_state,twinsa)
diff --git a/src/mame/drivers/tx1.c b/src/mame/drivers/tx1.c
index 612eef81715..af4dadb0b76 100644
--- a/src/mame/drivers/tx1.c
+++ b/src/mame/drivers/tx1.c
@@ -708,8 +708,8 @@ static MACHINE_CONFIG_START( tx1, tx1_state )
MCFG_I8255A_ADD("ppi8255", tx1_ppi8255_intf)
- MCFG_PALETTE_LENGTH(256)
- MCFG_PALETTE_INIT_OVERRIDE(tx1_state,tx1)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(tx1_state,tx1)
MCFG_DEFAULT_LAYOUT(layout_triphsxs)
@@ -776,8 +776,8 @@ static MACHINE_CONFIG_START( buggyboy, tx1_state )
MCFG_SCREEN_UPDATE_DRIVER(tx1_state, screen_update_buggyboy_right)
MCFG_SCREEN_VBLANK_DRIVER(tx1_state, screen_eof_buggyboy)
- MCFG_PALETTE_LENGTH(256)
- MCFG_PALETTE_INIT_OVERRIDE(tx1_state,buggyboy)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(tx1_state,buggyboy)
MCFG_VIDEO_START_OVERRIDE(tx1_state,buggyboy)
MCFG_SPEAKER_STANDARD_STEREO("frontleft", "frontright")
@@ -818,8 +818,8 @@ static MACHINE_CONFIG_START( buggybjr, tx1_state )
MCFG_SCREEN_UPDATE_DRIVER(tx1_state, screen_update_buggybjr)
MCFG_SCREEN_VBLANK_DRIVER(tx1_state, screen_eof_buggyboy)
- MCFG_PALETTE_LENGTH(256)
- MCFG_PALETTE_INIT_OVERRIDE(tx1_state,buggyboy)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(tx1_state,buggyboy)
MCFG_VIDEO_START_OVERRIDE(tx1_state,buggybjr)
MCFG_SPEAKER_STANDARD_STEREO("frontleft", "frontright")
diff --git a/src/mame/drivers/uapce.c b/src/mame/drivers/uapce.c
index 6fa53a12798..9900d483bda 100644
--- a/src/mame/drivers/uapce.c
+++ b/src/mame/drivers/uapce.c
@@ -324,9 +324,9 @@ static MACHINE_CONFIG_START( uapce, uapce_state )
MCFG_SCREEN_RAW_PARAMS(PCE_MAIN_CLOCK/2, VDC_WPF, 70, 70 + 512 + 32, VDC_LPF, 14, 14+242)
MCFG_SCREEN_UPDATE_STATIC( pce )
- /* MCFG_GFXDECODE_ADD("gfxdecode", pce_gfxdecodeinfo ) */
- MCFG_PALETTE_LENGTH(1024)
- MCFG_PALETTE_INIT( vce )
+ /* MCFG_GFXDECODE_ADD("gfxdecode", pce_gfxdecodeinfo ) */
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_INIT_LEGACY( vce )
MCFG_VIDEO_START( pce )
diff --git a/src/mame/drivers/ultraman.c b/src/mame/drivers/ultraman.c
index 33ccac3a30b..07fa81ff4d1 100644
--- a/src/mame/drivers/ultraman.c
+++ b/src/mame/drivers/ultraman.c
@@ -32,7 +32,7 @@ WRITE16_MEMBER(ultraman_state::sound_irq_trigger_w)
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, ultraman_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x080000, 0x08ffff) AM_RAM
- AM_RANGE(0x180000, 0x183fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")/* Palette */
+ AM_RANGE(0x180000, 0x183fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")/* Palette */
AM_RANGE(0x1c0000, 0x1c0001) AM_READ_PORT("SYSTEM")
AM_RANGE(0x1c0002, 0x1c0003) AM_READ_PORT("P1")
AM_RANGE(0x1c0004, 0x1c0005) AM_READ_PORT("P2")
@@ -217,8 +217,6 @@ static MACHINE_CONFIG_START( ultraman, ultraman_state )
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
@@ -226,21 +224,27 @@ static MACHINE_CONFIG_START( ultraman, ultraman_state )
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(ultraman_state, screen_update_ultraman)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
+ MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K051960_ADD("k051960", ultraman_k051960_intf)
MCFG_K051960_GFXDECODE("gfxdecode")
+ MCFG_K051960_PALETTE("palette")
MCFG_K051316_ADD("k051316_1", ultraman_k051316_intf_0)
MCFG_K051316_GFXDECODE("gfxdecode")
+ MCFG_K051316_PALETTE("palette")
MCFG_K051316_ADD("k051316_2", ultraman_k051316_intf_1)
MCFG_K051316_GFXDECODE("gfxdecode")
+ MCFG_K051316_PALETTE("palette")
MCFG_K051316_ADD("k051316_3", ultraman_k051316_intf_2)
MCFG_K051316_GFXDECODE("gfxdecode")
+ MCFG_K051316_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/ultratnk.c b/src/mame/drivers/ultratnk.c
index 9c3589cf4d4..c88ac988791 100644
--- a/src/mame/drivers/ultratnk.c
+++ b/src/mame/drivers/ultratnk.c
@@ -314,8 +314,8 @@ static MACHINE_CONFIG_START( ultratnk, ultratnk_state )
MCFG_SCREEN_VBLANK_DRIVER(ultratnk_state, screen_eof_ultratnk)
MCFG_GFXDECODE_ADD("gfxdecode", ultratnk)
- MCFG_PALETTE_LENGTH(10)
-
+ MCFG_PALETTE_ADD("palette", 10)
+ MCFG_PALETTE_INIT_OWNER(ultratnk_state, ultratnk)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/ultrsprt.c b/src/mame/drivers/ultrsprt.c
index 77622508550..000fb46bcbd 100644
--- a/src/mame/drivers/ultrsprt.c
+++ b/src/mame/drivers/ultrsprt.c
@@ -81,8 +81,8 @@ WRITE32_MEMBER(ultrsprt_state::palette_w)
COMBINE_DATA(&m_generic_paletteram_32[offset]);
data = m_generic_paletteram_32[offset];
- palette_set_color(machine(), (offset*2)+0, rgb_t(pal5bit(data >> 26), pal5bit(data >> 21), pal5bit(data >> 16)));
- palette_set_color(machine(), (offset*2)+1, rgb_t(pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0)));
+ m_palette->set_pen_color((offset*2)+0, rgb_t(pal5bit(data >> 26), pal5bit(data >> 21), pal5bit(data >> 16)));
+ m_palette->set_pen_color((offset*2)+1, rgb_t(pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0)));
}
@@ -239,7 +239,7 @@ static MACHINE_CONFIG_START( ultrsprt, ultrsprt_state )
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 399)
MCFG_SCREEN_UPDATE_DRIVER(ultrsprt_state, screen_update_ultrsprt)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
/* sound hardware */
MCFG_K056800_ADD("k056800", XTAL_18_432MHz)
diff --git a/src/mame/drivers/umipoker.c b/src/mame/drivers/umipoker.c
index e45cb8bf2f5..1d8d1b81024 100644
--- a/src/mame/drivers/umipoker.c
+++ b/src/mame/drivers/umipoker.c
@@ -145,7 +145,7 @@ UINT32 umipoker_state::screen_update_umipoker(screen_device &screen, bitmap_ind1
m_tilemap_2->set_scrolly(0, m_umipoker_scrolly[2]);
m_tilemap_3->set_scrolly(0, m_umipoker_scrolly[3]);
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
m_tilemap_0->draw(screen, bitmap, cliprect, 0,0);
m_tilemap_1->draw(screen, bitmap, cliprect, 0,0);
@@ -312,7 +312,7 @@ static ADDRESS_MAP_START( umipoker_map, AS_PROGRAM, 16, umipoker_state )
ADDRESS_MAP_UNMAP_LOW
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x400000, 0x403fff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x600000, 0x6007ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x600000, 0x6007ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x800000, 0x801fff) AM_RAM_WRITE(umipoker_vram_0_w) AM_SHARE("vra0")
AM_RANGE(0x802000, 0x803fff) AM_RAM_WRITE(umipoker_vram_1_w) AM_SHARE("vra1")
AM_RANGE(0x804000, 0x805fff) AM_RAM_WRITE(umipoker_vram_2_w) AM_SHARE("vra2")
@@ -679,7 +679,8 @@ static MACHINE_CONFIG_START( umipoker, umipoker_state )
MCFG_GFXDECODE_ADD("gfxdecode", umipoker)
- MCFG_PALETTE_LENGTH(0x400)
+ MCFG_PALETTE_ADD("palette", 0x400)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
diff --git a/src/mame/drivers/undrfire.c b/src/mame/drivers/undrfire.c
index cd0a5fa91c2..b228c3e0d74 100644
--- a/src/mame/drivers/undrfire.c
+++ b/src/mame/drivers/undrfire.c
@@ -216,7 +216,7 @@ WRITE32_MEMBER(undrfire_state::color_ram_w)
g = (a & 0xff00) >> 8;
b = (a & 0xff);
- palette_set_color(machine(),offset,rgb_t(r,g,b));
+ m_palette->set_pen_color(offset,rgb_t(r,g,b));
}
}
@@ -733,7 +733,7 @@ static MACHINE_CONFIG_START( undrfire, undrfire_state )
MCFG_SCREEN_UPDATE_DRIVER(undrfire_state, screen_update_undrfire)
MCFG_GFXDECODE_ADD("gfxdecode", undrfire)
- MCFG_PALETTE_LENGTH(16384)
+ MCFG_PALETTE_ADD("palette", 16384)
MCFG_TC0100SCN_ADD("tc0100scn", undrfire_tc0100scn_intf)
@@ -770,7 +770,7 @@ static MACHINE_CONFIG_START( cbombers, undrfire_state )
MCFG_SCREEN_UPDATE_DRIVER(undrfire_state, screen_update_cbombers)
MCFG_GFXDECODE_ADD("gfxdecode", cbombers)
- MCFG_PALETTE_LENGTH(16384)
+ MCFG_PALETTE_ADD("palette", 16384)
MCFG_TC0100SCN_ADD("tc0100scn", undrfire_tc0100scn_intf)
diff --git a/src/mame/drivers/unico.c b/src/mame/drivers/unico.c
index c62ee5d6fd1..1b51c2051d4 100644
--- a/src/mame/drivers/unico.c
+++ b/src/mame/drivers/unico.c
@@ -583,7 +583,7 @@ static MACHINE_CONFIG_START( burglarx, unico_state )
MCFG_SCREEN_UPDATE_DRIVER(unico_state, screen_update_unico)
MCFG_GFXDECODE_ADD("gfxdecode", unico)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
MCFG_VIDEO_START_OVERRIDE(unico_state,unico)
@@ -628,7 +628,7 @@ static MACHINE_CONFIG_START( zeropnt, unico_state )
MCFG_SCREEN_UPDATE_DRIVER(unico_state, screen_update_unico)
MCFG_GFXDECODE_ADD("gfxdecode", unico)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
MCFG_VIDEO_START_OVERRIDE(unico_state,unico)
@@ -670,7 +670,7 @@ static MACHINE_CONFIG_START( zeropnt2, unico_state )
MCFG_SCREEN_UPDATE_DRIVER(unico_state, screen_update_unico)
MCFG_GFXDECODE_ADD("gfxdecode", unico)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
MCFG_VIDEO_START_OVERRIDE(unico_state,unico)
diff --git a/src/mame/drivers/unkhorse.c b/src/mame/drivers/unkhorse.c
index 37bb6dd5753..d901f86a4f3 100644
--- a/src/mame/drivers/unkhorse.c
+++ b/src/mame/drivers/unkhorse.c
@@ -41,7 +41,7 @@ public:
DECLARE_READ8_MEMBER(horse_input_r);
DECLARE_WRITE8_MEMBER(horse_output_w);
DECLARE_WRITE_LINE_MEMBER(horse_timer_out);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(horse);
UINT32 screen_update_horse(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(horse_interrupt);
required_device<cpu_device> m_maincpu;
@@ -55,11 +55,11 @@ public:
***************************************************************************/
-void horse_state::palette_init()
+PALETTE_INIT_MEMBER(horse_state, horse)
{
// palette is simply 3bpp
for (int i = 0; i < 8; i++)
- palette_set_color_rgb(machine(), i, pal1bit(i >> 2), pal1bit(i >> 1), pal1bit(i >> 0));
+ palette.set_pen_color(i, pal1bit(i >> 2), pal1bit(i >> 1), pal1bit(i >> 0));
}
UINT32 horse_state::screen_update_horse(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -220,7 +220,8 @@ static MACHINE_CONFIG_START( horse, horse_state )
MCFG_SCREEN_UPDATE_DRIVER(horse_state, screen_update_horse)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(horse_state, horse)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/upscope.c b/src/mame/drivers/upscope.c
index 075ee623542..5fdb9292e81 100644
--- a/src/mame/drivers/upscope.c
+++ b/src/mame/drivers/upscope.c
@@ -327,8 +327,8 @@ static MACHINE_CONFIG_START( upscope, upscope_state )
MCFG_SCREEN_VISIBLE_AREA((129-8)*2, (449+8-1)*2, 44-8, 244+8-1)
MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga)
- MCFG_PALETTE_LENGTH(4096)
- MCFG_PALETTE_INIT_OVERRIDE(upscope_state,amiga)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_INIT_OWNER(upscope_state,amiga)
MCFG_VIDEO_START_OVERRIDE(upscope_state,amiga)
diff --git a/src/mame/drivers/usgames.c b/src/mame/drivers/usgames.c
index f5872f7abf5..cde8a96ea83 100644
--- a/src/mame/drivers/usgames.c
+++ b/src/mame/drivers/usgames.c
@@ -246,8 +246,8 @@ static MACHINE_CONFIG_START( usg32, usgames_state )
MCFG_SCREEN_UPDATE_DRIVER(usgames_state, screen_update_usgames)
MCFG_GFXDECODE_ADD("gfxdecode", usgames)
- MCFG_PALETTE_LENGTH(2*256)
-
+ MCFG_PALETTE_ADD("palette", 2*256)
+ MCFG_PALETTE_INIT_OWNER(usgames_state, usgames)
MCFG_MC6845_ADD("crtc", MC6845, "screen", XTAL_18MHz / 16, mc6845_intf)
diff --git a/src/mame/drivers/vamphalf.c b/src/mame/drivers/vamphalf.c
index 970bcd978de..19f6bb93f65 100644
--- a/src/mame/drivers/vamphalf.c
+++ b/src/mame/drivers/vamphalf.c
@@ -252,10 +252,10 @@ WRITE32_MEMBER(vamphalf_state::paletteram32_w)
COMBINE_DATA(&m_generic_paletteram_32[offset]);
paldata = m_generic_paletteram_32[offset] & 0xffff;
- palette_set_color_rgb(machine(), offset*2 + 1, pal5bit(paldata >> 10), pal5bit(paldata >> 5), pal5bit(paldata >> 0));
+ m_palette->set_pen_color(offset*2 + 1, pal5bit(paldata >> 10), pal5bit(paldata >> 5), pal5bit(paldata >> 0));
paldata = (m_generic_paletteram_32[offset] >> 16) & 0xffff;
- palette_set_color_rgb(machine(), offset*2 + 0, pal5bit(paldata >> 10), pal5bit(paldata >> 5), pal5bit(paldata >> 0));
+ m_palette->set_pen_color(offset*2 + 0, pal5bit(paldata >> 10), pal5bit(paldata >> 5), pal5bit(paldata >> 0));
}
READ32_MEMBER(vamphalf_state::wyvernwg_prot_r)
@@ -412,7 +412,7 @@ WRITE8_MEMBER( vamphalf_state::qs1000_p3_w )
static ADDRESS_MAP_START( common_map, AS_PROGRAM, 16, vamphalf_state )
AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("wram")
AM_RANGE(0x40000000, 0x4003ffff) AM_RAM AM_SHARE("tiles")
- AM_RANGE(0x80000000, 0x8000ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x80000000, 0x8000ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("user1",0)
ADDRESS_MAP_END
@@ -666,7 +666,7 @@ static void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap)
y = 256 - y;
}
- gfx->transpen(bitmap,clip,code,color,fx,fy,x,y,0);
+ gfx->transpen(state->m_palette,bitmap,clip,code,color,fx,fy,x,y,0);
}
}
}
@@ -727,7 +727,7 @@ static void draw_sprites_aoh(screen_device &screen, bitmap_ind16 &bitmap)
y = 256 - y;
}
- gfx->transpen(bitmap,clip,code,color,fx,fy,x,y,0);
+ gfx->transpen(state->m_palette,bitmap,clip,code,color,fx,fy,x,y,0);
}
}
}
@@ -997,7 +997,8 @@ static MACHINE_CONFIG_START( common, vamphalf_state )
MCFG_SCREEN_VISIBLE_AREA(31, 350, 16, 251)
MCFG_SCREEN_UPDATE_DRIVER(vamphalf_state, screen_update_common)
- MCFG_PALETTE_LENGTH(0x8000)
+ MCFG_PALETTE_ADD("palette", 0x8000)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_GFXDECODE_ADD("gfxdecode", vamphalf)
MACHINE_CONFIG_END
@@ -1128,7 +1129,8 @@ static MACHINE_CONFIG_START( aoh, vamphalf_state )
MCFG_SCREEN_VISIBLE_AREA(64, 511-64, 16, 255-16)
MCFG_SCREEN_UPDATE_DRIVER(vamphalf_state, screen_update_aoh)
- MCFG_PALETTE_LENGTH(0x8000)
+ MCFG_PALETTE_ADD("palette", 0x8000)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_GFXDECODE_ADD("gfxdecode", vamphalf)
/* sound hardware */
diff --git a/src/mame/drivers/vaportra.c b/src/mame/drivers/vaportra.c
index 6f19b786aa9..238e49e983c 100644
--- a/src/mame/drivers/vaportra.c
+++ b/src/mame/drivers/vaportra.c
@@ -256,18 +256,21 @@ static MACHINE_CONFIG_START( vaportra, vaportra_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_DRIVER(vaportra_state, screen_update_vaportra)
MCFG_GFXDECODE_ADD("gfxdecode", vaportra)
- MCFG_PALETTE_LENGTH(1280)
+ MCFG_PALETTE_ADD("palette", 1280)
MCFG_DECO16IC_ADD("tilegen1", vaportra_deco16ic_tilegen1_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DECO16IC_ADD("tilegen2", vaportra_deco16ic_tilegen2_intf)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
+ MCFG_DECO16IC_PALETTE("palette")
MCFG_DEVICE_ADD("spritegen", DECO_MXC06, 0)
deco_mxc06_device::set_gfx_region(*device, 4);
MCFG_DECO_MXC06_GFXDECODE("gfxdecode")
+ MCFG_DECO_MXC06_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/vastar.c b/src/mame/drivers/vastar.c
index be3eff79e09..a6150e82c4d 100644
--- a/src/mame/drivers/vastar.c
+++ b/src/mame/drivers/vastar.c
@@ -444,9 +444,7 @@ static MACHINE_CONFIG_START( vastar, vastar_state )
MCFG_SCREEN_UPDATE_DRIVER(vastar_state, screen_update_vastar)
MCFG_GFXDECODE_ADD("gfxdecode", vastar)
- MCFG_PALETTE_LENGTH(256)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, RRRR_GGGG_BBBB)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/vball.c b/src/mame/drivers/vball.c
index 7b700a682ba..2ebaa3ea7ac 100644
--- a/src/mame/drivers/vball.c
+++ b/src/mame/drivers/vball.c
@@ -410,7 +410,7 @@ static MACHINE_CONFIG_START( vball, vball_state )
MCFG_SCREEN_UPDATE_DRIVER(vball_state, screen_update_vb)
MCFG_GFXDECODE_ADD("gfxdecode", vb)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
diff --git a/src/mame/drivers/vega.c b/src/mame/drivers/vega.c
index f16957ae4f4..817230ff65d 100644
--- a/src/mame/drivers/vega.c
+++ b/src/mame/drivers/vega.c
@@ -157,7 +157,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(vega);
UINT32 screen_update_vega(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -481,13 +481,13 @@ INPUT_PORTS_END
-void vega_state::palette_init()
+PALETTE_INIT_MEMBER(vega_state, vega)
{
int i;
for(i=0;i<8;++i)
{
- palette_set_color( machine(),2*i, rgb_t(0x00, 0x00, 0x00) );
- palette_set_color( machine(),2*i+1, rgb_t( (i&1)?0xff:0x00, (i&2)?0xff:0x00, (i&4)?0xff:0x00) );
+ palette.set_pen_color( 2*i, rgb_t(0x00, 0x00, 0x00) );
+ palette.set_pen_color( 2*i+1, rgb_t( (i&1)?0xff:0x00, (i&2)?0xff:0x00, (i&4)?0xff:0x00) );
}
}
@@ -531,7 +531,7 @@ static void draw_tilemap(vega_state *state, screen_device& screen, bitmap_ind16&
{
//for(int x=0;x<4;++x)
{
- state->m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, num, 0, 1,flip?1:0, x*4+x0-offset_x, (flip?(3-y):y)*8+y0-offset_y, 0);
+ state->m_gfxdecode->gfx(1)->transpen(state->m_palette,bitmap,cliprect, num, 0, 1,flip?1:0, x*4+x0-offset_x, (flip?(3-y):y)*8+y0-offset_y, 0);
++num;
}
}
@@ -580,7 +580,7 @@ UINT32 vega_state::screen_update_vega(screen_device &screen, bitmap_ind16 &bitma
// if(color==0) color=0xf;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, character, color, 0, 0, x*7, y*10,0);
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect, character, color, 0, 0, x*7, y*10,0);
++idx;
}
@@ -601,7 +601,7 @@ UINT32 vega_state::screen_update_vega(screen_device &screen, bitmap_ind16 &bitma
{
//for(int x=0;x<4;++x)
{
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect, num, 0, 1, flip?1:0, x*4+x0, (flip?(3-y):y)*8+y0, 0);
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect, num, 0, 1, flip?1:0, x*4+x0, (flip?(3-y):y)*8+y0, 0);
++num;
}
}
@@ -641,7 +641,7 @@ UINT32 vega_state::screen_update_vega(screen_device &screen, bitmap_ind16 &bitma
for(int y=0;y<4;++y)
{
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect, strip_num, 0, !xor_line, 0, x*4+x0, y*8+y0, 0);
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect, strip_num, 0, !xor_line, 0, x*4+x0, y*8+y0, 0);
++strip_num;
}
}
@@ -851,7 +851,8 @@ static MACHINE_CONFIG_START( vega, vega_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 280, 0*8, 239)
MCFG_SCREEN_UPDATE_DRIVER(vega_state, screen_update_vega)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
+ MCFG_PALETTE_INIT_OWNER(vega_state, vega)
MCFG_GFXDECODE_ADD("gfxdecode", test_decode)
diff --git a/src/mame/drivers/vegaeo.c b/src/mame/drivers/vegaeo.c
index dbd8f54824f..32dce9a789c 100644
--- a/src/mame/drivers/vegaeo.c
+++ b/src/mame/drivers/vegaeo.c
@@ -113,7 +113,7 @@ WRITE32_MEMBER(vegaeo_state::vega_palette_w)
COMBINE_DATA(&m_generic_paletteram_32[offset]);
paldata = m_generic_paletteram_32[offset] & 0x7fff;
- palette_set_color_rgb(machine(), offset, pal5bit(paldata >> 10), pal5bit(paldata >> 5), pal5bit(paldata >> 0));
+ m_palette->set_pen_color(offset, pal5bit(paldata >> 10), pal5bit(paldata >> 5), pal5bit(paldata >> 0));
}
WRITE32_MEMBER(vegaeo_state::vega_misc_w)
@@ -261,7 +261,7 @@ static MACHINE_CONFIG_START( vega, vegaeo_state )
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_DRIVER(vegaeo_state, screen_update_vega)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_VIDEO_START_OVERRIDE(vegaeo_state,vega)
diff --git a/src/mame/drivers/vendetta.c b/src/mame/drivers/vendetta.c
index 510b181491a..bd68fc18da0 100644
--- a/src/mame/drivers/vendetta.c
+++ b/src/mame/drivers/vendetta.c
@@ -154,7 +154,7 @@ void vendetta_state::vendetta_video_banking( int select )
if (select & 1)
{
space.install_read_bank(m_video_banking_base + 0x2000, m_video_banking_base + 0x2fff, "bank4" );
- space.install_write_handler(m_video_banking_base + 0x2000, m_video_banking_base + 0x2fff, write8_delegate(FUNC(vendetta_state::paletteram_xBBBBBGGGGGRRRRR_byte_be_w), this) );
+ space.install_write_handler(m_video_banking_base + 0x2000, m_video_banking_base + 0x2fff, write8_delegate(FUNC(palette_device::write), m_palette.target()) );
space.install_readwrite_handler(m_video_banking_base + 0x0000, m_video_banking_base + 0x0fff, read8_delegate(FUNC(k053247_device::k053247_r), (k053247_device*)m_k053246), write8_delegate(FUNC(k053247_device::k053247_w), (k053247_device*)m_k053246) );
membank("bank4")->set_base(m_generic_paletteram_8);
}
@@ -490,8 +490,6 @@ static MACHINE_CONFIG_START( vendetta, vendetta_state )
MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.17) /* measured on PCB */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
@@ -499,13 +497,17 @@ static MACHINE_CONFIG_START( vendetta, vendetta_state )
MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(vendetta_state, screen_update_vendetta)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", vendetta_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K053246_ADD("k053246", vendetta_k053246_intf)
MCFG_K053246_GFXDECODE("gfxdecode")
+ MCFG_K053246_PALETTE("palette")
MCFG_K053251_ADD("k053251")
MCFG_K054000_ADD("k054000")
@@ -536,9 +538,11 @@ static MACHINE_CONFIG_DERIVED( esckids, vendetta )
MCFG_DEVICE_REMOVE("k052109")
MCFG_K052109_ADD("k052109", esckids_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_DEVICE_REMOVE("k053246")
MCFG_K053246_ADD("k053246", esckids_k053246_intf)
MCFG_K053246_GFXDECODE("gfxdecode")
+ MCFG_K053246_PALETTE("palette")
MCFG_K053252_ADD("k053252", 6000000, esckids_k053252_intf)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/victory.c b/src/mame/drivers/victory.c
index ab847f9292b..953d8d5114c 100644
--- a/src/mame/drivers/victory.c
+++ b/src/mame/drivers/victory.c
@@ -228,7 +228,7 @@ static MACHINE_CONFIG_START( victory, victory_state )
MCFG_SCREEN_RAW_PARAMS(VICTORY_PIXEL_CLOCK, VICTORY_HTOTAL, VICTORY_HBEND, VICTORY_HBSTART, VICTORY_VTOTAL, VICTORY_VBEND, VICTORY_VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(victory_state, screen_update_victory)
- MCFG_PALETTE_LENGTH(64)
+ MCFG_PALETTE_ADD("palette", 64)
/* audio hardware */
diff --git a/src/mame/drivers/videopin.c b/src/mame/drivers/videopin.c
index 448a2ce34db..5c71f97b788 100644
--- a/src/mame/drivers/videopin.c
+++ b/src/mame/drivers/videopin.c
@@ -343,9 +343,8 @@ static MACHINE_CONFIG_START( videopin, videopin_state )
MCFG_SCREEN_UPDATE_DRIVER(videopin_state, screen_update_videopin)
MCFG_GFXDECODE_ADD("gfxdecode", videopin)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/videopkr.c b/src/mame/drivers/videopkr.c
index 40ed3403b65..18ab48e062f 100644
--- a/src/mame/drivers/videopkr.c
+++ b/src/mame/drivers/videopkr.c
@@ -363,7 +363,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void machine_start();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(videopkr);
DECLARE_VIDEO_START(vidadcba);
DECLARE_PALETTE_INIT(babypkr);
DECLARE_PALETTE_INIT(fortune1);
@@ -418,12 +418,12 @@ static void count_7dig(unsigned long data, UINT8 index)
}
}
-void videopkr_state::palette_init()
+PALETTE_INIT_MEMBER(videopkr_state, videopkr)
{
const UINT8 *color_prom = memregion("proms")->base();
int j;
- for (j = 0; j < machine().total_colors(); j++)
+ for (j = 0; j < palette.entries(); j++)
{
int r, g, b, tr, tg, tb, i;
@@ -441,7 +441,7 @@ void videopkr_state::palette_init()
tb = 0xf0 - (0xf0 * ((color_prom[j] >> 2) & 0x01));
b = tb - (i * (tb / 5));
- palette_set_color(machine(), j, rgb_t(r, g, b));
+ palette.set_pen_color(j, rgb_t(r, g, b));
}
}
@@ -450,7 +450,7 @@ PALETTE_INIT_MEMBER(videopkr_state,babypkr)
const UINT8 *color_prom = memregion("proms")->base();
int j;
- for (j = 0; j < machine().total_colors(); j++)
+ for (j = 0; j < palette.entries(); j++)
{
int r, g, b, tr, tg, tb, i, top;
@@ -472,7 +472,7 @@ PALETTE_INIT_MEMBER(videopkr_state,babypkr)
tb = 0xdf * ((color_prom[j] >> 2) & 0x01);
b = top - ((tb * top) / 0x100);
- palette_set_color(machine(), j, rgb_t(r, g, b));
+ palette.set_pen_color(j, rgb_t(r, g, b));
}
}
@@ -481,7 +481,7 @@ PALETTE_INIT_MEMBER(videopkr_state,fortune1)
const UINT8 *color_prom = memregion("proms")->base();
int j;
- for (j = 0; j < machine().total_colors(); j++)
+ for (j = 0; j < palette.entries(); j++)
{
int r, g, b, tr, tg, tb, i, c;
@@ -505,7 +505,7 @@ PALETTE_INIT_MEMBER(videopkr_state,fortune1)
if ((c % 4) == 1 || (c % 4) == 2)
c = ((int)(c / 4) * 4) + (3 - (c % 4));
- palette_set_color(machine(), c, rgb_t(r, g, b));
+ palette.set_pen_color(c, rgb_t(r, g, b));
}
}
@@ -1264,7 +1264,8 @@ static MACHINE_CONFIG_START( videopkr, videopkr_state )
MCFG_SCREEN_UPDATE_DRIVER(videopkr_state, screen_update_videopkr)
MCFG_GFXDECODE_ADD("gfxdecode", videopkr)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(videopkr_state, videopkr)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1315,7 +1316,8 @@ static MACHINE_CONFIG_DERIVED( babypkr, videopkr )
MCFG_SCREEN_SIZE(32*16, 32*8)
MCFG_SCREEN_VISIBLE_AREA(5*16, 31*16-1, 3*8, 29*8-1)
- MCFG_PALETTE_INIT_OVERRIDE(videopkr_state,babypkr)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(videopkr_state,babypkr)
MCFG_GFXDECODE_MODIFY("gfxdecode", videodad)
MCFG_VIDEO_START_OVERRIDE(videopkr_state,vidadcba)
@@ -1330,7 +1332,8 @@ static MACHINE_CONFIG_DERIVED( fortune1, videopkr )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_CLOCK(CPU_CLOCK_ALT)
- MCFG_PALETTE_INIT_OVERRIDE(videopkr_state,fortune1)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(videopkr_state,fortune1)
MACHINE_CONFIG_END
/*************************
diff --git a/src/mame/drivers/vigilant.c b/src/mame/drivers/vigilant.c
index c590edeab66..7f833460d85 100644
--- a/src/mame/drivers/vigilant.c
+++ b/src/mame/drivers/vigilant.c
@@ -490,7 +490,7 @@ static MACHINE_CONFIG_START( vigilant, vigilant_state )
MCFG_SCREEN_UPDATE_DRIVER(vigilant_state, screen_update_vigilant)
MCFG_GFXDECODE_ADD("gfxdecode", vigilant)
- MCFG_PALETTE_LENGTH(512+32) /* 512 real palette, 32 virtual palette */
+ MCFG_PALETTE_ADD("palette", 512+32) /* 512 real palette, 32 virtual palette */
/* sound hardware */
@@ -530,7 +530,7 @@ static MACHINE_CONFIG_START( buccanrs, vigilant_state )
MCFG_SCREEN_UPDATE_DRIVER(vigilant_state, screen_update_vigilant)
MCFG_GFXDECODE_ADD("gfxdecode", buccanrs)
- MCFG_PALETTE_LENGTH(512+32) /* 512 real palette, 32 virtual palette */
+ MCFG_PALETTE_ADD("palette", 512+32) /* 512 real palette, 32 virtual palette */
/* sound hardware */
@@ -587,7 +587,7 @@ static MACHINE_CONFIG_START( kikcubic, vigilant_state )
MCFG_SCREEN_UPDATE_DRIVER(vigilant_state, screen_update_kikcubic)
MCFG_GFXDECODE_ADD("gfxdecode", kikcubic)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
diff --git a/src/mame/drivers/vindictr.c b/src/mame/drivers/vindictr.c
index defef0cc49c..a6eb0d3dbb6 100644
--- a/src/mame/drivers/vindictr.c
+++ b/src/mame/drivers/vindictr.c
@@ -191,7 +191,7 @@ static MACHINE_CONFIG_START( vindictr, vindictr_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", vindictr)
- MCFG_PALETTE_LENGTH(2048*8)
+ MCFG_PALETTE_ADD("palette", 2048*8)
MCFG_TILEMAP_ADD_STANDARD("playfield", 2, vindictr_state, get_playfield_tile_info, 8,8, SCAN_COLS, 64,64)
MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha", 2, vindictr_state, get_alpha_tile_info, 8,8, SCAN_ROWS, 64,32, 0)
diff --git a/src/mame/drivers/viper.c b/src/mame/drivers/viper.c
index 2980f2c0bc1..b571cdbb2d2 100644
--- a/src/mame/drivers/viper.c
+++ b/src/mame/drivers/viper.c
@@ -2063,11 +2063,10 @@ static MACHINE_CONFIG_START( viper, viper_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(1024, 768)
MCFG_SCREEN_VISIBLE_AREA(0, 1023, 0, 383)
-
- MCFG_PALETTE_LENGTH(65536)
-
MCFG_SCREEN_UPDATE_DRIVER(viper_state, screen_update_viper)
+ MCFG_PALETTE_ADD("palette", 65536)
+
MCFG_TIMER_ADD_NONE("ds2430_timer2")
/* sound hardware */
diff --git a/src/mame/drivers/vlc.c b/src/mame/drivers/vlc.c
index 8ab405851e1..cb2aa7ff8e2 100644
--- a/src/mame/drivers/vlc.c
+++ b/src/mame/drivers/vlc.c
@@ -179,7 +179,7 @@ public:
tilemap_t *m_bg_tilemap;
virtual void video_start();
UINT32 screen_update_nevada(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(nevada);
DECLARE_WRITE_LINE_MEMBER(duart18_irq_handler);
DECLARE_WRITE_LINE_MEMBER(duart39_irq_handler);
@@ -311,7 +311,7 @@ UINT32 nevada_state::screen_update_nevada(screen_device &screen, bitmap_ind16 &b
}
/***************************************************************************/
-void nevada_state::palette_init()
+PALETTE_INIT_MEMBER(nevada_state, nevada)
{
// Palette init
}
@@ -632,7 +632,8 @@ static MACHINE_CONFIG_START( nevada, nevada_state )
MCFG_SCREEN_UPDATE_DRIVER(nevada_state, screen_update_nevada)
MCFG_GFXDECODE_ADD("gfxdecode", nevada)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(nevada_state, nevada)
MCFG_MC6845_ADD("crtc", MC6845, "screen", MC6845_CLOCK, mc6845_intf)
diff --git a/src/mame/drivers/volfied.c b/src/mame/drivers/volfied.c
index 1d78d909c4a..f0306c4556f 100644
--- a/src/mame/drivers/volfied.c
+++ b/src/mame/drivers/volfied.c
@@ -66,7 +66,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, volfied_state )
AM_RANGE(0x100000, 0x103fff) AM_RAM /* main */
AM_RANGE(0x200000, 0x203fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w)
AM_RANGE(0x400000, 0x47ffff) AM_READWRITE(volfied_video_ram_r, volfied_video_ram_w)
- AM_RANGE(0x500000, 0x503fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x500000, 0x503fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x600000, 0x600001) AM_WRITE(volfied_video_mask_w)
AM_RANGE(0x700000, 0x700001) AM_WRITE(volfied_sprite_ctrl_w)
AM_RANGE(0xd00000, 0xd00001) AM_READWRITE(volfied_video_ctrl_r, volfied_video_ctrl_w)
@@ -267,11 +267,12 @@ static MACHINE_CONFIG_START( volfied, volfied_state )
MCFG_SCREEN_UPDATE_DRIVER(volfied_state, screen_update_volfied)
MCFG_GFXDECODE_ADD("gfxdecode", volfied)
- MCFG_PALETTE_LENGTH(8192)
-
+ MCFG_PALETTE_ADD("palette", 8192)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_PC090OJ_ADD("pc090oj", volfied_pc090oj_intf)
MCFG_PC090OJ_GFXDECODE("gfxdecode")
+ MCFG_PC090OJ_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/vp101.c b/src/mame/drivers/vp101.c
index 18b87144790..fc5e735cd20 100644
--- a/src/mame/drivers/vp101.c
+++ b/src/mame/drivers/vp101.c
@@ -92,7 +92,7 @@ static MACHINE_CONFIG_START( vp101, vp10x_state )
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)
+ MCFG_PALETTE_ADD("palette", 32768)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/vpoker.c b/src/mame/drivers/vpoker.c
index 30b16428740..136eb4ac6cf 100644
--- a/src/mame/drivers/vpoker.c
+++ b/src/mame/drivers/vpoker.c
@@ -128,7 +128,7 @@ public:
DECLARE_WRITE8_MEMBER(blitter_w);
DECLARE_WRITE_LINE_MEMBER(ptm_irq);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(vpoker);
UINT32 screen_update_vpoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -154,7 +154,7 @@ UINT32 vpoker_state::screen_update_vpoker(screen_device &screen, bitmap_ind16 &b
{
int tile = videoram[count];
//int colour = tile>>12;
- gfx->opaque(bitmap,cliprect,tile,0,0,0,x*16,y*16);
+ gfx->opaque(m_palette,bitmap,cliprect,tile,0,0,0,x*16,y*16);
count++;
}
@@ -630,7 +630,7 @@ static GFXDECODE_START( vpoker )
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 1 )
GFXDECODE_END
-void vpoker_state::palette_init()
+PALETTE_INIT_MEMBER(vpoker_state, vpoker)
{
int i;
@@ -640,7 +640,7 @@ void vpoker_state::palette_init()
color = rgb_t(pal1bit((i & 4) >> 2),pal1bit(i & 1),pal1bit((i & 2) >> 1));
- palette_set_color(machine(), i, color);
+ palette.set_pen_color(i, color);
}
}
@@ -674,8 +674,8 @@ static MACHINE_CONFIG_START( vpoker, vpoker_state )
MCFG_SCREEN_UPDATE_DRIVER(vpoker_state, screen_update_vpoker)
MCFG_GFXDECODE_ADD("gfxdecode", vpoker)
- MCFG_PALETTE_LENGTH(8)
-
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(vpoker_state, vpoker)
/* 6840 PTM */
MCFG_PTM6840_ADD("6840ptm", ptm_intf)
diff --git a/src/mame/drivers/vroulet.c b/src/mame/drivers/vroulet.c
index 59ace9a3d0e..b333a055d92 100644
--- a/src/mame/drivers/vroulet.c
+++ b/src/mame/drivers/vroulet.c
@@ -88,7 +88,7 @@ WRITE8_MEMBER(vroulet_state::vroulet_paletteram_w)
{
a=m_generic_paletteram_8[((i*8+j)*2)&0xff ];
b=m_generic_paletteram_8[((i*8+j)*2+1)&0xff ];
- palette_set_color_rgb(machine(),i*16+j,pal4bit(b),pal4bit(b>>4),pal4bit(a));
+ m_palette->set_pen_color(i*16+j,pal4bit(b),pal4bit(b>>4),pal4bit(a));
}
}
}
@@ -123,7 +123,7 @@ void vroulet_state::video_start()
UINT32 vroulet_state::screen_update_vroulet(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, 0x320, 1, 0, 0,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect, 0x320, 1, 0, 0,
m_ball[1], m_ball[0] - 12, 0);
return 0;
}
@@ -309,7 +309,7 @@ static MACHINE_CONFIG_START( vroulet, vroulet_state )
MCFG_SCREEN_UPDATE_DRIVER(vroulet_state, screen_update_vroulet)
MCFG_GFXDECODE_ADD("gfxdecode", vroulet)
- MCFG_PALETTE_LENGTH(128*4)
+ MCFG_PALETTE_ADD("palette", 128*4)
// sound hardware
diff --git a/src/mame/drivers/vsnes.c b/src/mame/drivers/vsnes.c
index 02f22ea1390..8a52b4a7880 100644
--- a/src/mame/drivers/vsnes.c
+++ b/src/mame/drivers/vsnes.c
@@ -1722,9 +1722,9 @@ static MACHINE_CONFIG_START( vsnes, vsnes_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(vsnes_state, screen_update_vsnes)
- MCFG_PALETTE_LENGTH(8*4*16)
+ MCFG_PALETTE_ADD("palette", 8*4*16)
- MCFG_PALETTE_INIT_OVERRIDE(vsnes_state,vsnes)
+ MCFG_PALETTE_INIT_OWNER(vsnes_state,vsnes)
MCFG_VIDEO_START_OVERRIDE(vsnes_state,vsnes)
MCFG_PPU2C04_ADD("ppu1", vsnes_ppu_interface_1)
@@ -1787,7 +1787,9 @@ static MACHINE_CONFIG_START( vsdual, vsnes_state )
MCFG_MACHINE_START_OVERRIDE(vsnes_state,vsdual)
/* video hardware */
- MCFG_PALETTE_LENGTH(2*8*4*16)
+ MCFG_PALETTE_ADD("palette", 2*8*4*16)
+ MCFG_PALETTE_INIT_OWNER(vsnes_state,vsdual)
+
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("screen1", RASTER)
@@ -1802,7 +1804,6 @@ static MACHINE_CONFIG_START( vsdual, vsnes_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(vsnes_state, screen_update_vsnes_bottom)
- MCFG_PALETTE_INIT_OVERRIDE(vsnes_state,vsdual)
MCFG_VIDEO_START_OVERRIDE(vsnes_state,vsdual)
MCFG_PPU2C04_ADD("ppu1", vsnes_ppu_interface_1)
@@ -1853,9 +1854,9 @@ static MACHINE_CONFIG_START( vsnes_bootleg, vsnes_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(vsnes_state, screen_update_vsnes)
- MCFG_PALETTE_LENGTH(8*4*16)
+ MCFG_PALETTE_ADD("palette", 8*4*16)
- MCFG_PALETTE_INIT_OVERRIDE(vsnes_state,vsnes)
+ MCFG_PALETTE_INIT_OWNER(vsnes_state,vsnes)
MCFG_VIDEO_START_OVERRIDE(vsnes_state,vsnes)
MCFG_PPU2C04_ADD("ppu1", vsnes_ppu_interface_1)
diff --git a/src/mame/drivers/vulgus.c b/src/mame/drivers/vulgus.c
index d198a0c4d05..276b8a52e31 100644
--- a/src/mame/drivers/vulgus.c
+++ b/src/mame/drivers/vulgus.c
@@ -228,8 +228,9 @@ static MACHINE_CONFIG_START( vulgus, vulgus_state )
MCFG_SCREEN_UPDATE_DRIVER(vulgus_state, screen_update_vulgus)
MCFG_GFXDECODE_ADD("gfxdecode", vulgus)
- MCFG_PALETTE_LENGTH(64*4+16*16+4*32*8)
+ MCFG_PALETTE_ADD("palette", 64*4+16*16+4*32*8)
+ MCFG_PALETTE_INIT_OWNER(vulgus_state, vulgus)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/wallc.c b/src/mame/drivers/wallc.c
index 493d9464ca5..cf7764a2d4b 100644
--- a/src/mame/drivers/wallc.c
+++ b/src/mame/drivers/wallc.c
@@ -71,7 +71,7 @@ public:
DECLARE_DRIVER_INIT(sidam);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(wallc);
UINT32 screen_update_wallc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -103,7 +103,7 @@ public:
***************************************************************************/
-void wallc_state::palette_init()
+PALETTE_INIT_MEMBER(wallc_state, wallc)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -117,7 +117,7 @@ void wallc_state::palette_init()
2, resistances_rg, weights_g, 330, 0,
3, resistances_b, weights_b, 330, 655+220);
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int bit0,bit1,bit7,r,g,b;
@@ -137,7 +137,7 @@ void wallc_state::palette_init()
bit7 = (color_prom[i] >> 7) & 0x01;
b = combine_3_weights(weights_b, bit7, bit1, bit0);
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
}
@@ -318,8 +318,8 @@ static MACHINE_CONFIG_START( wallc, wallc_state )
MCFG_SCREEN_UPDATE_DRIVER(wallc_state, screen_update_wallc)
MCFG_GFXDECODE_ADD("gfxdecode", wallc)
- MCFG_PALETTE_LENGTH(32)
-
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(wallc_state, wallc)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/wardner.c b/src/mame/drivers/wardner.c
index 0048690cf44..408bba1c3f0 100644
--- a/src/mame/drivers/wardner.c
+++ b/src/mame/drivers/wardner.c
@@ -189,7 +189,7 @@ static ADDRESS_MAP_START( main_program_map, AS_PROGRAM, 8, wardner_state )
AM_RANGE(0x8000, 0xffff) AM_READ(wardner_bank_r) /* Overlapped RAM/Banked ROM */
AM_RANGE(0x8000, 0x8fff) AM_WRITE(wardner_sprite_w) AM_SHARE("spriteram8")
AM_RANGE(0x9000, 0x9fff) AM_ROM
- AM_RANGE(0xa000, 0xafff) AM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_le_w) AM_SHARE("paletteram")
+ AM_RANGE(0xa000, 0xafff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xb000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("rambase_c000") /* Shared RAM with Sound Z80 */
AM_RANGE(0xc800, 0xffff) AM_ROM
@@ -417,7 +417,8 @@ static MACHINE_CONFIG_START( wardner, wardner_state )
MCFG_SCREEN_VBLANK_DEVICE("spriteram8", buffered_spriteram8_device, vblank_copy_rising)
MCFG_GFXDECODE_ADD("gfxdecode", wardner)
- MCFG_PALETTE_LENGTH(1792)
+ MCFG_PALETTE_ADD("palette", 1792)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_VIDEO_START_OVERRIDE(wardner_state,toaplan0)
diff --git a/src/mame/drivers/warpsped.c b/src/mame/drivers/warpsped.c
index 9ef90fb296e..7a0c788de7a 100644
--- a/src/mame/drivers/warpsped.c
+++ b/src/mame/drivers/warpsped.c
@@ -107,7 +107,7 @@ public:
TILE_GET_INFO_MEMBER(get_warpspeed_text_tile_info);
TILE_GET_INFO_MEMBER(get_warpspeed_starfield_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(warpspeed);
UINT32 screen_update_warpspeed(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -291,16 +291,16 @@ static GFXDECODE_START( warpspeed )
GFXDECODE_ENTRY( "gfx2", 0, warpspeed_charlayout, 0, 1 )
GFXDECODE_END
-void warpspeed_state::palette_init()
+PALETTE_INIT_MEMBER(warpspeed_state, warpspeed)
{
// tilemaps
- palette_set_color(machine(),0,rgb_t::black); /* black */
- palette_set_color(machine(),1,rgb_t::white); /* white */
+ palette.set_pen_color(0,rgb_t::black); /* black */
+ palette.set_pen_color(1,rgb_t::white); /* white */
// circles
for ( int i = 0; i < 8; i++ )
{
- palette_set_color_rgb(machine(), 2 + i, 0xff*BIT(i,0), 0xff*BIT(i,1), 0xff*BIT(i,2));
+ palette.set_pen_color(2 + i, 0xff*BIT(i,0), 0xff*BIT(i,1), 0xff*BIT(i,2));
}
}
@@ -322,7 +322,8 @@ static MACHINE_CONFIG_START( warpspeed, warpspeed_state )
MCFG_SCREEN_UPDATE_DRIVER(warpspeed_state, screen_update_warpspeed)
MCFG_GFXDECODE_ADD("gfxdecode", warpspeed)
- MCFG_PALETTE_LENGTH(2+8)
+ MCFG_PALETTE_ADD("palette", 2+8)
+ MCFG_PALETTE_INIT_OWNER(warpspeed_state, warpspeed)
MACHINE_CONFIG_END
ROM_START( warpsped )
diff --git a/src/mame/drivers/warpwarp.c b/src/mame/drivers/warpwarp.c
index b53209f6cab..6aaff3307ad 100644
--- a/src/mame/drivers/warpwarp.c
+++ b/src/mame/drivers/warpwarp.c
@@ -734,9 +734,9 @@ static MACHINE_CONFIG_START( geebee, warpwarp_state )
MCFG_SCREEN_UPDATE_DRIVER(warpwarp_state, screen_update_geebee)
MCFG_GFXDECODE_ADD("gfxdecode", 1k)
- MCFG_PALETTE_LENGTH(4*2)
+ MCFG_PALETTE_ADD("palette", 4*2)
- MCFG_PALETTE_INIT_OVERRIDE(warpwarp_state,geebee)
+ MCFG_PALETTE_INIT_OWNER(warpwarp_state,geebee)
MCFG_VIDEO_START_OVERRIDE(warpwarp_state,geebee)
/* sound hardware */
@@ -750,9 +750,10 @@ static MACHINE_CONFIG_DERIVED( navarone, geebee )
/* basic machine hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", 2k)
- MCFG_PALETTE_LENGTH(2*2)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 2*2)
- MCFG_PALETTE_INIT_OVERRIDE(warpwarp_state,navarone)
+ MCFG_PALETTE_INIT_OWNER(warpwarp_state,navarone)
MCFG_VIDEO_START_OVERRIDE(warpwarp_state,navarone)
MACHINE_CONFIG_END
@@ -769,9 +770,9 @@ static MACHINE_CONFIG_START( bombbee, warpwarp_state )
MCFG_SCREEN_UPDATE_DRIVER(warpwarp_state, screen_update_geebee)
MCFG_GFXDECODE_ADD("gfxdecode", color)
- MCFG_PALETTE_LENGTH(2*256+1)
-
- MCFG_PALETTE_INIT_OVERRIDE(warpwarp_state,warpwarp)
+
+ MCFG_PALETTE_ADD("palette", 2*256+1)
+ MCFG_PALETTE_INIT_OWNER(warpwarp_state,warpwarp)
MCFG_VIDEO_START_OVERRIDE(warpwarp_state,warpwarp)
/* sound hardware */
diff --git a/src/mame/drivers/warriorb.c b/src/mame/drivers/warriorb.c
index 40e8607980f..1a8317abe02 100644
--- a/src/mame/drivers/warriorb.c
+++ b/src/mame/drivers/warriorb.c
@@ -520,7 +520,7 @@ static MACHINE_CONFIG_START( darius2d, warriorb_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", warriorb)
- MCFG_PALETTE_LENGTH(4096*2)
+ MCFG_PALETTE_ADD("palette", 4096*2)
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
@@ -543,7 +543,9 @@ static MACHINE_CONFIG_START( darius2d, warriorb_state )
MCFG_TC0100SCN_ADD("tc0100scn_2", darius2d_tc0100scn_intf_r)
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
MCFG_TC0110PCR_ADD("tc0110pcr_1", darius2d_tc0110pcr_intf_l)
+ MCFG_TC0110PCR_PALETTE("palette")
MCFG_TC0110PCR_ADD("tc0110pcr_2", darius2d_tc0110pcr_intf_r)
+ MCFG_TC0110PCR_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -585,7 +587,7 @@ static MACHINE_CONFIG_START( warriorb, warriorb_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", warriorb)
- MCFG_PALETTE_LENGTH(4096*2)
+ MCFG_PALETTE_ADD("palette", 4096*2)
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("lscreen", RASTER)
@@ -608,7 +610,9 @@ static MACHINE_CONFIG_START( warriorb, warriorb_state )
MCFG_TC0100SCN_ADD("tc0100scn_2", warriorb_tc0100scn_intf_r)
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
MCFG_TC0110PCR_ADD("tc0110pcr_1", darius2d_tc0110pcr_intf_l)
+ MCFG_TC0110PCR_PALETTE("palette")
MCFG_TC0110PCR_ADD("tc0110pcr_2", darius2d_tc0110pcr_intf_r)
+ MCFG_TC0110PCR_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/wc90.c b/src/mame/drivers/wc90.c
index 095cf1fb315..944354cb50f 100644
--- a/src/mame/drivers/wc90.c
+++ b/src/mame/drivers/wc90.c
@@ -144,7 +144,7 @@ static ADDRESS_MAP_START( wc90_map_2, AS_PROGRAM, 8, wc90_state )
AM_RANGE(0xc000, 0xcfff) AM_RAM
AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xd800, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0xe000, 0xe7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("bank2")
AM_RANGE(0xf800, 0xfbff) AM_RAM AM_SHARE("share1")
AM_RANGE(0xfc00, 0xfc00) AM_WRITE(wc90_bankswitch1_w)
@@ -326,7 +326,8 @@ static MACHINE_CONFIG_START( wc90, wc90_state )
MCFG_SCREEN_UPDATE_DRIVER(wc90_state, screen_update_wc90)
MCFG_GFXDECODE_ADD("gfxdecode", wc90)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBRRRRGGGG)
/* sound hardware */
diff --git a/src/mame/drivers/wc90b.c b/src/mame/drivers/wc90b.c
index 533097ec70a..fc222884be6 100644
--- a/src/mame/drivers/wc90b.c
+++ b/src/mame/drivers/wc90b.c
@@ -164,7 +164,7 @@ static ADDRESS_MAP_START( wc90b_map2, AS_PROGRAM, 8, wc90b_state )
AM_RANGE(0xc000, 0xcfff) AM_RAM
AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xd800, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0xe000, 0xe7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xe800, 0xefff) AM_ROM
AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("bank2")
AM_RANGE(0xf800, 0xfbff) AM_RAM AM_SHARE("share1")
@@ -378,8 +378,8 @@ static MACHINE_CONFIG_START( wc90b, wc90b_state )
MCFG_SCREEN_UPDATE_DRIVER(wc90b_state, screen_update_wc90b)
MCFG_GFXDECODE_ADD("gfxdecode", wc90b)
- MCFG_PALETTE_LENGTH(1024)
-
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/wecleman.c b/src/mame/drivers/wecleman.c
index fba161d4fea..bd094b02c76 100644
--- a/src/mame/drivers/wecleman.c
+++ b/src/mame/drivers/wecleman.c
@@ -1066,7 +1066,7 @@ static MACHINE_CONFIG_START( wecleman, wecleman_state )
MCFG_GFXDECODE_ADD("gfxdecode", wecleman)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
MCFG_VIDEO_START_OVERRIDE(wecleman_state,wecleman)
@@ -1117,7 +1117,7 @@ MACHINE_RESET_MEMBER(wecleman_state,hotchase)
for(i=0;i<0x2000/2;i++)
{
m_generic_paletteram_16[i] = 0xffff;
- palette_set_color_rgb(machine(),i,0xff,0xff,0xff);
+ m_palette->set_pen_color(i,0xff,0xff,0xff);
}
}
@@ -1149,15 +1149,17 @@ static MACHINE_CONFIG_START( hotchase, wecleman_state )
MCFG_SCREEN_UPDATE_DRIVER(wecleman_state, screen_update_hotchase)
MCFG_GFXDECODE_ADD("gfxdecode", hotchase)
- MCFG_PALETTE_LENGTH(2048*2)
+ MCFG_PALETTE_ADD("palette", 2048*2)
MCFG_VIDEO_START_OVERRIDE(wecleman_state,hotchase)
MCFG_K051316_ADD("k051316_1", hotchase_k051316_intf_0)
MCFG_K051316_GFXDECODE("gfxdecode")
+ MCFG_K051316_PALETTE("palette")
MCFG_K051316_ADD("k051316_2", hotchase_k051316_intf_1)
MCFG_K051316_GFXDECODE("gfxdecode")
+ MCFG_K051316_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/welltris.c b/src/mame/drivers/welltris.c
index 9f42b9bb327..7b56b94caba 100644
--- a/src/mame/drivers/welltris.c
+++ b/src/mame/drivers/welltris.c
@@ -356,7 +356,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, welltris_state )
AM_RANGE(0xff8000, 0xffbfff) AM_RAM /* work */
AM_RANGE(0xffc000, 0xffc3ff) AM_RAM AM_SHARE("spriteram") /* Sprite */
AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(welltris_charvideoram_w) AM_SHARE("charvideoram") /* Char */
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") /* Palette */
+ AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* Palette */
AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("P1") /* Bottom Controls */
AM_RANGE(0xfff000, 0xfff001) AM_WRITE(welltris_palette_bank_w)
AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("P2") /* Top Controls */
@@ -714,12 +714,14 @@ static MACHINE_CONFIG_START( welltris, welltris_state )
MCFG_SCREEN_UPDATE_DRIVER(welltris_state, screen_update_welltris)
MCFG_GFXDECODE_ADD("gfxdecode", welltris)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_GFXREGION(1)
MCFG_VSYSTEM_SPR2_SET_PRITYPE(-1)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
+ MCFG_VSYSTEM_SPR2_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/wgp.c b/src/mame/drivers/wgp.c
index 5c2f15201f5..89eb23f3d16 100644
--- a/src/mame/drivers/wgp.c
+++ b/src/mame/drivers/wgp.c
@@ -644,7 +644,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, wgp_state )
AM_RANGE(0x502000, 0x517fff) AM_READWRITE(wgp_pivram_word_r, wgp_pivram_word_w) AM_SHARE("pivram") /* piv tilemaps */
AM_RANGE(0x520000, 0x52001f) AM_READWRITE(wgp_piv_ctrl_word_r, wgp_piv_ctrl_word_w) AM_SHARE("piv_ctrlram")
AM_RANGE(0x600000, 0x600003) AM_WRITE(rotate_port_w) /* rotation control ? */
- AM_RANGE(0x700000, 0x701fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
ADDRESS_MAP_END
static ADDRESS_MAP_START( cpu2_map, AS_PROGRAM, 16 /* LAN areas not mapped... */, wgp_state )
@@ -990,8 +990,8 @@ static MACHINE_CONFIG_START( wgp, wgp_state )
MCFG_SCREEN_UPDATE_DRIVER(wgp_state, screen_update_wgp)
MCFG_GFXDECODE_ADD("gfxdecode", wgp)
- MCFG_PALETTE_LENGTH(4096)
-
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
MCFG_TC0100SCN_ADD("tc0100scn", wgp_tc0100scn_intf)
MCFG_TC0100SCN_GFXDECODE("gfxdecode")
diff --git a/src/mame/drivers/wheelfir.c b/src/mame/drivers/wheelfir.c
index 4d502129003..906b5357b02 100644
--- a/src/mame/drivers/wheelfir.c
+++ b/src/mame/drivers/wheelfir.c
@@ -239,7 +239,7 @@ public:
INT32 *m_zoom_table;
UINT16 *m_blitter_data;
- UINT8 *m_palette;
+ UINT8 *m_palette_ptr;
INT32 m_palpos;
INT32 m_current_scanline;
@@ -616,16 +616,16 @@ WRITE16_MEMBER(wheelfir_state::pal_reset_pos_w)
WRITE16_MEMBER(wheelfir_state::pal_data_w)
{
int color=m_palpos/3;
- m_palette[m_palpos] = data & 0xff;
+ m_palette_ptr[m_palpos] = data & 0xff;
++m_palpos;
m_palpos %=NUM_COLORS*3;
{
- int r = m_palette[color*3];
- int g = m_palette[color*3+1];
- int b = m_palette[color*3+2];
- palette_set_color(machine(), color, rgb_t(r,g,b));
+ int r = m_palette_ptr[color*3];
+ int g = m_palette_ptr[color*3+1];
+ int b = m_palette_ptr[color*3+2];
+ m_palette->set_pen_color(color, rgb_t(r,g,b));
}
}
@@ -767,7 +767,7 @@ void wheelfir_state::machine_start()
m_blitter_data = auto_alloc_array(machine(), UINT16, 16);
m_scanlines = reinterpret_cast<scroll_info*>(auto_alloc_array(machine(), UINT8, sizeof(scroll_info)*(NUM_SCANLINES+NUM_VBLANK_LINES)));
- m_palette=auto_alloc_array(machine(), UINT8, NUM_COLORS*3);
+ m_palette_ptr = auto_alloc_array(machine(), UINT8, NUM_COLORS*3);
for(int i=0;i<(ZOOM_TABLE_SIZE);++i)
@@ -816,7 +816,7 @@ static MACHINE_CONFIG_START( wheelfir, wheelfir_state )
MCFG_SCREEN_UPDATE_DRIVER(wheelfir_state, screen_update_wheelfir)
MCFG_SCREEN_VBLANK_DRIVER(wheelfir_state, screen_eof_wheelfir)
- MCFG_PALETTE_LENGTH(NUM_COLORS)
+ MCFG_PALETTE_ADD("palette", NUM_COLORS)
MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
diff --git a/src/mame/drivers/wildpkr.c b/src/mame/drivers/wildpkr.c
index 458f98b27e8..433583f1f0f 100644
--- a/src/mame/drivers/wildpkr.c
+++ b/src/mame/drivers/wildpkr.c
@@ -176,7 +176,7 @@ public:
DECLARE_DRIVER_INIT(wildpkr);
virtual void machine_start();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(wildpkr);
UINT32 screen_update_wildpkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
};
@@ -195,7 +195,7 @@ UINT32 wildpkr_state::screen_update_wildpkr(screen_device &screen, bitmap_ind16
return 0;
}
-void wildpkr_state::palette_init()
+PALETTE_INIT_MEMBER(wildpkr_state, wildpkr)
{
}
@@ -289,10 +289,10 @@ static MACHINE_CONFIG_START( wildpkr, wildpkr_state )
MCFG_SCREEN_UPDATE_DRIVER(wildpkr_state, screen_update_wildpkr)
// MCFG_HD63484_ADD("hd63484", wildpkr_hd63484_intf)
- MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map)
-
- MCFG_PALETTE_LENGTH(256)
+ MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(wildpkr_state, wildpkr)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/williams.c b/src/mame/drivers/williams.c
index fa9c24aa7a2..24ef0b51b45 100644
--- a/src/mame/drivers/williams.c
+++ b/src/mame/drivers/williams.c
@@ -1673,7 +1673,7 @@ static MACHINE_CONFIG_START( williams2, williams_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_SCANLINE | VIDEO_ALWAYS_UPDATE)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
MCFG_GFXDECODE_ADD("gfxdecode", williams2)
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/wink.c b/src/mame/drivers/wink.c
index a5fe0084bb4..746f9a05816 100644
--- a/src/mame/drivers/wink.c
+++ b/src/mame/drivers/wink.c
@@ -155,7 +155,7 @@ WRITE8_MEMBER(wink_state::prot_w)
static ADDRESS_MAP_START( wink_io, AS_IO, 8, wink_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x1f) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_byte_le_w) AM_SHARE("paletteram") //0x10-0x1f is likely to be something else
+ AM_RANGE(0x00, 0x1f) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") //0x10-0x1f is likely to be something else
// AM_RANGE(0x20, 0x20) AM_WRITENOP //??? seems unused..
AM_RANGE(0x21, 0x21) AM_WRITE(player_mux_w) //??? no mux on the pcb.
AM_RANGE(0x22, 0x22) AM_WRITE(tile_banking_w)
@@ -369,7 +369,8 @@ static MACHINE_CONFIG_START( wink, wink_state )
MCFG_SCREEN_UPDATE_DRIVER(wink_state, screen_update_wink)
MCFG_GFXDECODE_ADD("gfxdecode", wink)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_FORMAT(xxxxBBBBRRRRGGGG)
/* sound hardware */
diff --git a/src/mame/drivers/wiping.c b/src/mame/drivers/wiping.c
index bb54f746aa5..cff662ad107 100644
--- a/src/mame/drivers/wiping.c
+++ b/src/mame/drivers/wiping.c
@@ -294,8 +294,8 @@ static MACHINE_CONFIG_START( wiping, wiping_state )
MCFG_SCREEN_UPDATE_DRIVER(wiping_state, screen_update_wiping)
MCFG_GFXDECODE_ADD("gfxdecode", wiping)
- MCFG_PALETTE_LENGTH(64*4+64*4)
-
+ MCFG_PALETTE_ADD("palette", 64*4+64*4)
+ MCFG_PALETTE_INIT_OWNER(wiping_state, wiping)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/witch.c b/src/mame/drivers/witch.c
index 17ef2db7bf3..c900cc1d1f7 100644
--- a/src/mame/drivers/witch.c
+++ b/src/mame/drivers/witch.c
@@ -518,8 +518,8 @@ static ADDRESS_MAP_START( map_main, AS_PROGRAM, 8, witch_state )
AM_RANGE(0xc800, 0xcbff) AM_READWRITE(gfx1_vram_r, gfx1_vram_w) AM_SHARE("gfx1_vram")
AM_RANGE(0xcc00, 0xcfff) AM_READWRITE(gfx1_cram_r, gfx1_cram_w) AM_SHARE("gfx1_cram")
AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("sprite_ram")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_split_lo_w) AM_SHARE("paletteram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_split_hi_w) AM_SHARE("paletteram2")
+ AM_RANGE(0xe000, 0xe7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
AM_RANGE(0xf000, 0xf0ff) AM_RAM AM_SHARE("share1")
AM_RANGE(0xf100, 0xf17f) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xf180, 0xffff) AM_RAM AM_SHARE("share2")
@@ -784,22 +784,22 @@ void witch_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
color = flags & 0x0f;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
tileno, color,
flipx, flipy,
sx+8*flipx,sy+8*flipy,0);
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
tileno+1, color,
flipx, flipy,
sx+8-8*flipx,sy+8*flipy,0);
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
tileno+2, color,
flipx, flipy,
sx+8*flipx,sy+8-8*flipy,0);
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
tileno+3, color,
flipx, flipy,
sx+8-8*flipx,sy+8-8*flipy,0);
@@ -855,8 +855,8 @@ static MACHINE_CONFIG_START( witch, witch_state )
MCFG_SCREEN_UPDATE_DRIVER(witch_state, screen_update_witch)
MCFG_GFXDECODE_ADD("gfxdecode", witch)
- MCFG_PALETTE_LENGTH(0x800)
-
+ MCFG_PALETTE_ADD("palette", 0x800)
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/wiz.c b/src/mame/drivers/wiz.c
index 77bfe6f109f..fb72dff4202 100644
--- a/src/mame/drivers/wiz.c
+++ b/src/mame/drivers/wiz.c
@@ -730,7 +730,8 @@ static MACHINE_CONFIG_START( wiz, wiz_state )
MCFG_SCREEN_UPDATE_DRIVER(wiz_state, screen_update_wiz)
MCFG_GFXDECODE_ADD("gfxdecode", wiz)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(wiz_state, wiz)
/* sound hardware */
diff --git a/src/mame/drivers/wolfpack.c b/src/mame/drivers/wolfpack.c
index 35c1edee69d..a609c332b16 100644
--- a/src/mame/drivers/wolfpack.c
+++ b/src/mame/drivers/wolfpack.c
@@ -314,7 +314,8 @@ static MACHINE_CONFIG_START( wolfpack, wolfpack_state )
MCFG_SCREEN_VBLANK_DRIVER(wolfpack_state, screen_eof_wolfpack)
MCFG_GFXDECODE_ADD("gfxdecode", wolfpack)
- MCFG_PALETTE_LENGTH(12)
+ MCFG_PALETTE_ADD("palette", 12)
+ MCFG_PALETTE_INIT_OWNER(wolfpack_state, wolfpack)
/* sound hardware */
MCFG_SOUND_ADD("speech", S14001A, 20000) /* RC Clock (C=100pf, R=470K-670K ohms, adjustable) ranging from 14925.37313hz to 21276.59574hz, likely factory set to 20000hz since anything below 19500 is too slow */
diff --git a/src/mame/drivers/wrally.c b/src/mame/drivers/wrally.c
index 803f196add9..6c20f5b6287 100644
--- a/src/mame/drivers/wrally.c
+++ b/src/mame/drivers/wrally.c
@@ -106,7 +106,7 @@ static ADDRESS_MAP_START( wrally_map, AS_PROGRAM, 16, wrally_state )
AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(wrally_vram_w) AM_SHARE("videoram") /* encrypted Video RAM */
AM_RANGE(0x108000, 0x108007) AM_RAM AM_SHARE("vregs") /* Video Registers */
AM_RANGE(0x10800c, 0x10800d) AM_WRITENOP /* CLR INT Video */
- AM_RANGE(0x200000, 0x203fff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_word_w) AM_SHARE("paletteram") /* Palette */
+ AM_RANGE(0x200000, 0x203fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* Palette */
AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW")
AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P1_P2")
@@ -258,7 +258,8 @@ static MACHINE_CONFIG_START( wrally, wrally_state )
MCFG_SCREEN_UPDATE_DRIVER(wrally_state, screen_update_wrally)
MCFG_GFXDECODE_ADD("gfxdecode", wrally)
- MCFG_PALETTE_LENGTH(1024*8)
+ MCFG_PALETTE_ADD("palette", 1024*8)
+ MCFG_PALETTE_FORMAT(xxxxBBBBRRRRGGGG)
/* sound hardware */
diff --git a/src/mame/drivers/wwfsstar.c b/src/mame/drivers/wwfsstar.c
index 8f6092f9185..044cdf4912b 100644
--- a/src/mame/drivers/wwfsstar.c
+++ b/src/mame/drivers/wwfsstar.c
@@ -173,7 +173,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, wwfsstar_state )
AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(wwfsstar_fg0_videoram_w) AM_SHARE("fg0_videoram") /* FG0 Ram */
AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM_WRITE(wwfsstar_bg0_videoram_w) AM_SHARE("bg0_videoram") /* BG0 Ram */
AM_RANGE(0x100000, 0x1003ff) AM_RAM AM_SHARE("spriteram") /* SPR Ram */
- AM_RANGE(0x140000, 0x140fff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x140000, 0x140fff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x180000, 0x180003) AM_WRITE(wwfsstar_irqack_w)
AM_RANGE(0x180000, 0x180001) AM_READ_PORT("DSW1")
AM_RANGE(0x180002, 0x180003) AM_READ_PORT("DSW2")
@@ -427,8 +427,8 @@ static MACHINE_CONFIG_START( wwfsstar, wwfsstar_state )
MCFG_SCREEN_UPDATE_DRIVER(wwfsstar_state, screen_update_wwfsstar)
MCFG_GFXDECODE_ADD("gfxdecode", wwfsstar)
- MCFG_PALETTE_LENGTH(384)
-
+ MCFG_PALETTE_ADD("palette", 384)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/xain.c b/src/mame/drivers/xain.c
index 81fb27a3fe5..17c934521ec 100644
--- a/src/mame/drivers/xain.c
+++ b/src/mame/drivers/xain.c
@@ -405,8 +405,8 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, xain_state )
AM_RANGE(0x3a0d, 0x3a0d) AM_WRITE(xain_flipscreen_w)
AM_RANGE(0x3a0e, 0x3a0e) AM_WRITE(xain_68705_w)
AM_RANGE(0x3a0f, 0x3a0f) AM_WRITE(xainCPUA_bankswitch_w)
- AM_RANGE(0x3c00, 0x3dff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_lo_w) AM_SHARE("paletteram")
- AM_RANGE(0x3e00, 0x3fff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_split_hi_w) AM_SHARE("paletteram2")
+ AM_RANGE(0x3c00, 0x3dff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0x3e00, 0x3fff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette_ext")
AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -595,8 +595,8 @@ static MACHINE_CONFIG_START( xsleena, xain_state )
MCFG_SCREEN_UPDATE_DRIVER(xain_state, screen_update_xain)
MCFG_GFXDECODE_ADD("gfxdecode", xain)
- MCFG_PALETTE_LENGTH(512)
-
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/xexex.c b/src/mame/drivers/xexex.c
index a48737e2c4f..68f084b5417 100644
--- a/src/mame/drivers/xexex.c
+++ b/src/mame/drivers/xexex.c
@@ -395,7 +395,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, xexex_state )
AM_RANGE(0x182000, 0x183fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w)
AM_RANGE(0x190000, 0x191fff) AM_DEVREAD("k056832", k056832_device, rom_word_r) // Passthrough to tile roms
AM_RANGE(0x1a0000, 0x1a1fff) AM_DEVREAD("k053250", k053250_device, rom_r)
- AM_RANGE(0x1b0000, 0x1b1fff) AM_RAM_WRITE(paletteram_xrgb_word_be_w) AM_SHARE("paletteram")
+ AM_RANGE(0x1b0000, 0x1b1fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
#if XE_DEBUG
AM_RANGE(0x0c0000, 0x0c003f) AM_DEVREAD("k056832", k056832_device, word_r)
@@ -556,7 +556,7 @@ static MACHINE_CONFIG_START( xexex, xexex_state )
MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_BEFORE_VBLANK)
+ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_SCREEN_ADD("screen", RASTER)
// MCFG_SCREEN_REFRESH_RATE(XTAL_32MHz/4/512/288)
@@ -566,13 +566,18 @@ static MACHINE_CONFIG_START( xexex, xexex_state )
MCFG_SCREEN_VISIBLE_AREA(40, 40+384-1, 0, 0+256-1)
MCFG_SCREEN_UPDATE_DRIVER(xexex_state, screen_update_xexex)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(XRGB)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_ENABLE_HILIGHTS()
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K056832_ADD("k056832", xexex_k056832_intf)
MCFG_K056832_GFXDECODE("gfxdecode")
+ MCFG_K056832_PALETTE("palette")
MCFG_K053246_ADD("k053246", xexex_k053246_intf)
MCFG_K053246_GFXDECODE("gfxdecode")
+ MCFG_K053246_PALETTE("palette")
MCFG_K053250_ADD("k053250", "screen", -5, -16)
MCFG_K053251_ADD("k053251")
MCFG_K053252_ADD("k053252", XTAL_32MHz/4, xexex_k053252_intf)
diff --git a/src/mame/drivers/xmen.c b/src/mame/drivers/xmen.c
index 06bebdc71e8..583750da87f 100644
--- a/src/mame/drivers/xmen.c
+++ b/src/mame/drivers/xmen.c
@@ -98,7 +98,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, xmen_state )
AM_RANGE(0x080000, 0x0fffff) AM_ROM
AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE("k053246", k053247_device, k053247_word_r, k053247_word_w)
AM_RANGE(0x101000, 0x101fff) AM_RAM
- AM_RANGE(0x104000, 0x104fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x104000, 0x104fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x108000, 0x108001) AM_WRITE(eeprom_w)
AM_RANGE(0x108020, 0x108027) AM_DEVWRITE("k053246", k053247_device, k053246_word_w)
AM_RANGE(0x10804c, 0x10804d) AM_WRITE(sound_cmd_w)
@@ -133,7 +133,7 @@ static ADDRESS_MAP_START( 6p_main_map, AS_PROGRAM, 16, xmen_state )
AM_RANGE(0x101000, 0x101fff) AM_RAM
AM_RANGE(0x102000, 0x102fff) AM_RAM AM_SHARE("spriteramright") /* sprites (screen 2) */
AM_RANGE(0x103000, 0x103fff) AM_RAM /* 6p - a buffer? */
- AM_RANGE(0x104000, 0x104fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x104000, 0x104fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x108000, 0x108001) AM_WRITE(eeprom_w)
AM_RANGE(0x108020, 0x108027) AM_DEVWRITE("k053246", k053247_device, k053246_word_w) /* sprites */
AM_RANGE(0x10804c, 0x10804d) AM_WRITE(sound_cmd_w)
@@ -352,21 +352,23 @@ static MACHINE_CONFIG_START( xmen, xmen_state )
MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.17) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 ) /* correct, same issue of TMNT2 */
MCFG_SCREEN_UPDATE_DRIVER(xmen_state, screen_update_xmen)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", xmen_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K053246_ADD("k053246", xmen_k053246_intf)
MCFG_K053246_GFXDECODE("gfxdecode")
+ MCFG_K053246_PALETTE("palette")
MCFG_K053251_ADD("k053251")
/* sound hardware */
@@ -404,8 +406,9 @@ static MACHINE_CONFIG_START( xmen6p, xmen_state )
MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
/* video hardware */
- MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("screen", RASTER)
@@ -428,9 +431,11 @@ static MACHINE_CONFIG_START( xmen6p, xmen_state )
MCFG_GFXDECODE_ADD("gfxdecode", empty)
MCFG_K052109_ADD("k052109", xmen_k052109_intf)
MCFG_K052109_GFXDECODE("gfxdecode")
+ MCFG_K052109_PALETTE("palette")
MCFG_K053246_ADD("k053246", xmen6p_k053246_intf)
MCFG_K053246_SET_SCREEN("screen")
MCFG_K053246_GFXDECODE("gfxdecode")
+ MCFG_K053246_PALETTE("palette")
MCFG_K053251_ADD("k053251")
/* sound hardware */
diff --git a/src/mame/drivers/xorworld.c b/src/mame/drivers/xorworld.c
index e6c007875d6..666370f9f8c 100644
--- a/src/mame/drivers/xorworld.c
+++ b/src/mame/drivers/xorworld.c
@@ -185,7 +185,8 @@ static MACHINE_CONFIG_START( xorworld, xorworld_state )
MCFG_SCREEN_UPDATE_DRIVER(xorworld_state, screen_update_xorworld)
MCFG_GFXDECODE_ADD("gfxdecode", xorworld)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(xorworld_state, xorworld)
// sound hardware
diff --git a/src/mame/drivers/xxmissio.c b/src/mame/drivers/xxmissio.c
index cf57ecad766..2d0a537a1cb 100644
--- a/src/mame/drivers/xxmissio.c
+++ b/src/mame/drivers/xxmissio.c
@@ -296,7 +296,8 @@ static MACHINE_CONFIG_START( xxmissio, xxmissio_state )
MCFG_SCREEN_UPDATE_DRIVER(xxmissio_state, screen_update_xxmissio)
MCFG_GFXDECODE_ADD("gfxdecode", xxmissio)
- MCFG_PALETTE_LENGTH(768)
+ MCFG_PALETTE_ADD("palette", 768)
+ MCFG_PALETTE_FORMAT(BBGGRRII)
/* sound hardware */
diff --git a/src/mame/drivers/xybots.c b/src/mame/drivers/xybots.c
index 339f2139715..26b3d5a9315 100644
--- a/src/mame/drivers/xybots.c
+++ b/src/mame/drivers/xybots.c
@@ -77,7 +77,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, xybots_state )
AM_RANGE(0xff9000, 0xffadff) AM_MIRROR(0x7f8000) AM_RAM
AM_RANGE(0xffae00, 0xffafff) AM_MIRROR(0x7f8000) AM_RAM AM_SHARE("mob")
AM_RANGE(0xffb000, 0xffbfff) AM_MIRROR(0x7f8000) AM_RAM_DEVWRITE("playfield", tilemap_device, write) AM_SHARE("playfield")
- AM_RANGE(0xffc000, 0xffc7ff) AM_MIRROR(0x7f8800) AM_RAM_WRITE(paletteram_IIIIRRRRGGGGBBBB_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0xffc000, 0xffc7ff) AM_MIRROR(0x7f8800) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xffd000, 0xffdfff) AM_MIRROR(0x7f8000) AM_DEVREADWRITE8("eeprom", atari_eeprom_device, read, write, 0x00ff)
AM_RANGE(0xffe000, 0xffe0ff) AM_MIRROR(0x7f8000) AM_DEVREAD8("jsa", atari_jsa_i_device, main_response_r, 0x00ff)
AM_RANGE(0xffe100, 0xffe1ff) AM_MIRROR(0x7f8000) AM_READ_PORT("FFE100")
@@ -191,7 +191,9 @@ static MACHINE_CONFIG_START( xybots, xybots_state )
/* video hardware */
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_GFXDECODE_ADD("gfxdecode", xybots)
- MCFG_PALETTE_LENGTH(1024)
+
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(IIIIRRRRGGGGBBBB)
MCFG_TILEMAP_ADD_STANDARD("playfield", 2, xybots_state, get_playfield_tile_info, 8,8, SCAN_ROWS, 64,32)
MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha", 2, xybots_state, get_alpha_tile_info, 8,8, SCAN_ROWS, 64,32, 0)
diff --git a/src/mame/drivers/xyonix.c b/src/mame/drivers/xyonix.c
index 8e767a3b2a5..e5208b32da4 100644
--- a/src/mame/drivers/xyonix.c
+++ b/src/mame/drivers/xyonix.c
@@ -229,8 +229,8 @@ static MACHINE_CONFIG_START( xyonix, xyonix_state )
MCFG_SCREEN_UPDATE_DRIVER(xyonix_state, screen_update_xyonix)
MCFG_GFXDECODE_ADD("gfxdecode", xyonix)
- MCFG_PALETTE_LENGTH(256)
-
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(xyonix_state, xyonix)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/yiear.c b/src/mame/drivers/yiear.c
index 0448d2917eb..46f64f3c368 100644
--- a/src/mame/drivers/yiear.c
+++ b/src/mame/drivers/yiear.c
@@ -284,8 +284,8 @@ static MACHINE_CONFIG_START( yiear, yiear_state )
MCFG_SCREEN_UPDATE_DRIVER(yiear_state, screen_update_yiear)
MCFG_GFXDECODE_ADD("gfxdecode", yiear)
- MCFG_PALETTE_LENGTH(32)
-
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(yiear_state, yiear)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/yunsun16.c b/src/mame/drivers/yunsun16.c
index c2024784b51..e72497f0dc7 100644
--- a/src/mame/drivers/yunsun16.c
+++ b/src/mame/drivers/yunsun16.c
@@ -129,7 +129,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, yunsun16_state )
AM_RANGE(0x800180, 0x800181) AM_WRITE(yunsun16_sound_bank_w) // Sound
AM_RANGE(0x800188, 0x800189) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound
AM_RANGE(0x8001fe, 0x8001ff) AM_WRITENOP // ? 0 (during int)
- AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette
+ AM_RANGE(0x900000, 0x903fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x908000, 0x90bfff) AM_RAM_WRITE(yunsun16_vram_1_w) AM_SHARE("vram_1") // Layer 1
AM_RANGE(0x90c000, 0x90ffff) AM_RAM_WRITE(yunsun16_vram_0_w) AM_SHARE("vram_0") // Layer 0
AM_RANGE(0x910000, 0x910fff) AM_RAM AM_SHARE("spriteram") // Sprites
@@ -593,7 +593,8 @@ static MACHINE_CONFIG_START( magicbub, yunsun16_state )
MCFG_SCREEN_UPDATE_DRIVER(yunsun16_state, screen_update_yunsun16)
MCFG_GFXDECODE_ADD("gfxdecode", yunsun16)
- MCFG_PALETTE_LENGTH(8192)
+ MCFG_PALETTE_ADD("palette", 8192)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
@@ -629,8 +630,8 @@ static MACHINE_CONFIG_START( shocking, yunsun16_state )
MCFG_SCREEN_UPDATE_DRIVER(yunsun16_state, screen_update_yunsun16)
MCFG_GFXDECODE_ADD("gfxdecode", yunsun16)
- MCFG_PALETTE_LENGTH(8192)
-
+ MCFG_PALETTE_ADD("palette", 8192)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/yunsung8.c b/src/mame/drivers/yunsung8.c
index 24827210156..a494da7c9f0 100644
--- a/src/mame/drivers/yunsung8.c
+++ b/src/mame/drivers/yunsung8.c
@@ -508,7 +508,7 @@ static MACHINE_CONFIG_START( yunsung8, yunsung8_state )
MCFG_SCREEN_UPDATE_DRIVER(yunsung8_state, screen_update_yunsung8)
MCFG_GFXDECODE_ADD("gfxdecode", yunsung8)
- MCFG_PALETTE_LENGTH(2048)
+ MCFG_PALETTE_ADD("palette", 2048)
/* sound hardware */
diff --git a/src/mame/drivers/zac2650.c b/src/mame/drivers/zac2650.c
index a81670acb99..6d983adf7e0 100644
--- a/src/mame/drivers/zac2650.c
+++ b/src/mame/drivers/zac2650.c
@@ -185,12 +185,12 @@ static INPUT_PORTS_START( dodgem )
INPUT_PORTS_END
-void zac2650_state::palette_init()
+PALETTE_INIT_MEMBER(zac2650_state, zac2650)
{
- palette_set_color(machine(),0,rgb_t::black);
- palette_set_color(machine(),1,rgb_t::white);
- palette_set_color(machine(),2,rgb_t::black);
- palette_set_color(machine(),3,rgb_t::black);
+ palette.set_pen_color(0,rgb_t::black);
+ palette.set_pen_color(1,rgb_t::white);
+ palette.set_pen_color(2,rgb_t::black);
+ palette.set_pen_color(3,rgb_t::black);
}
/************************************************************************************************
@@ -251,7 +251,8 @@ static MACHINE_CONFIG_START( tinvader, zac2650_state )
MCFG_SCREEN_UPDATE_DRIVER(zac2650_state, screen_update_tinvader)
MCFG_GFXDECODE_ADD("gfxdecode", tinvader)
- MCFG_PALETTE_LENGTH(4)
+ MCFG_PALETTE_ADD("palette", 4)
+ MCFG_PALETTE_INIT_OWNER(zac2650_state, zac2650)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/zaccaria.c b/src/mame/drivers/zaccaria.c
index eb994c1ec46..5f3807c37af 100644
--- a/src/mame/drivers/zaccaria.c
+++ b/src/mame/drivers/zaccaria.c
@@ -575,8 +575,8 @@ static MACHINE_CONFIG_START( zaccaria, zaccaria_state )
MCFG_SCREEN_UPDATE_DRIVER(zaccaria_state, screen_update_zaccaria)
MCFG_GFXDECODE_ADD("gfxdecode", zaccaria)
- MCFG_PALETTE_LENGTH(32*8+32*8)
-
+ MCFG_PALETTE_ADD("palette", 32*8+32*8)
+ MCFG_PALETTE_INIT_OWNER(zaccaria_state, zaccaria)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/zaxxon.c b/src/mame/drivers/zaxxon.c
index cfb16cc5a11..75ff144a014 100644
--- a/src/mame/drivers/zaxxon.c
+++ b/src/mame/drivers/zaxxon.c
@@ -946,7 +946,8 @@ static MACHINE_CONFIG_START( root, zaxxon_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", zaxxon)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(zaxxon_state, zaxxon)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
@@ -1006,7 +1007,10 @@ static MACHINE_CONFIG_DERIVED( congo, root )
MCFG_CPU_PERIODIC_INT_DRIVER(zaxxon_state, irq0_line_hold, (double)SOUND_CLOCK/16/16/16/4)
/* video hardware */
- MCFG_PALETTE_LENGTH(512)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_INIT_OWNER(zaxxon_state, zaxxon)
+
MCFG_VIDEO_START_OVERRIDE(zaxxon_state,congo)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(zaxxon_state, screen_update_congo)
diff --git a/src/mame/drivers/zerozone.c b/src/mame/drivers/zerozone.c
index e1a9fdc3cc9..76dba098e1d 100644
--- a/src/mame/drivers/zerozone.c
+++ b/src/mame/drivers/zerozone.c
@@ -52,7 +52,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, zerozone_state )
AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSWB")
AM_RANGE(0x08000a, 0x08000b) AM_READ_PORT("DSWA")
AM_RANGE(0x084000, 0x084001) AM_WRITE(sound_w)
- AM_RANGE(0x088000, 0x0881ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBRGBx_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x088000, 0x0881ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x098000, 0x098001) AM_RAM /* Watchdog? */
AM_RANGE(0x09ce00, 0x09ffff) AM_RAM_WRITE(tilemap_w) AM_SHARE("videoram")
AM_RANGE(0x0b4000, 0x0b4001) AM_WRITE(tilebank_w)
@@ -185,7 +185,9 @@ static MACHINE_CONFIG_START( zerozone, zerozone_state )
MCFG_SCREEN_VISIBLE_AREA(1*8, 47*8-1, 2*8, 30*8-1)
MCFG_GFXDECODE_ADD("gfxdecode", zerozone)
- MCFG_PALETTE_LENGTH(256)
+
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/zodiack.c b/src/mame/drivers/zodiack.c
index 7a54b8cd91f..eb745e38fde 100644
--- a/src/mame/drivers/zodiack.c
+++ b/src/mame/drivers/zodiack.c
@@ -575,9 +575,9 @@ static MACHINE_CONFIG_START( zodiack, zodiack_state )
MCFG_SCREEN_UPDATE_DRIVER(zodiack_state, screen_update)
MCFG_GFXDECODE_ADD("gfxdecode", zodiack)
- MCFG_PALETTE_LENGTH(4*8+2*8+2*1)
+ MCFG_PALETTE_ADD("palette", 4*8+2*8+2*1)
- MCFG_PALETTE_INIT_OVERRIDE(zodiack_state,zodiack)
+ MCFG_PALETTE_INIT_OWNER(zodiack_state,zodiack)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/zr107.c b/src/mame/drivers/zr107.c
index cd8bf9d0cda..b861c8c18e2 100644
--- a/src/mame/drivers/zr107.c
+++ b/src/mame/drivers/zr107.c
@@ -246,7 +246,7 @@ VIDEO_START_MEMBER(zr107_state,jetwave)
UINT32 zr107_state::screen_update_jetwave(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(machine().pens[0], cliprect);
+ bitmap.fill(m_palette->pen(0), cliprect);
m_k001604->draw_back_layer(bitmap, cliprect);
@@ -268,8 +268,8 @@ WRITE32_MEMBER(zr107_state::paletteram32_w)
{
COMBINE_DATA(&m_generic_paletteram_32[offset]);
data = m_generic_paletteram_32[offset];
- palette_set_color_rgb(machine(), (offset * 2) + 0, pal5bit(data >> 26), pal5bit(data >> 21), pal5bit(data >> 16));
- palette_set_color_rgb(machine(), (offset * 2) + 1, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
+ m_palette->set_pen_color((offset * 2) + 0, pal5bit(data >> 26), pal5bit(data >> 21), pal5bit(data >> 16));
+ m_palette->set_pen_color((offset * 2) + 1, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
}
#define NUM_LAYERS 2
@@ -296,7 +296,7 @@ VIDEO_START_MEMBER(zr107_state,zr107)
UINT32 zr107_state::screen_update_zr107(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(machine().pens[0], cliprect);
+ bitmap.fill(m_palette->pen(0), cliprect);
m_k056832->tilemap_draw(screen, bitmap, cliprect, 1, 0, 0);
K001005_draw(bitmap, cliprect);
@@ -459,7 +459,7 @@ WRITE32_MEMBER(zr107_state::jetwave_palette_w)
{
COMBINE_DATA(&m_generic_paletteram_32[offset]);
data = m_generic_paletteram_32[offset];
- palette_set_color_rgb(machine(), offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
+ m_palette->set_pen_color(offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
}
static ADDRESS_MAP_START( jetwave_map, AS_PROGRAM, 32, zr107_state )
@@ -769,7 +769,7 @@ static MACHINE_CONFIG_START( zr107, zr107_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 48*8-1)
MCFG_SCREEN_UPDATE_DRIVER(zr107_state, screen_update_zr107)
- MCFG_PALETTE_LENGTH(65536)
+ MCFG_PALETTE_ADD("palette", 65536)
MCFG_VIDEO_START_OVERRIDE(zr107_state,zr107)
@@ -777,6 +777,7 @@ static MACHINE_CONFIG_START( zr107, zr107_state )
MCFG_K056832_ADD("k056832", zr107_k056832_intf)
MCFG_K056832_GFXDECODE("gfxdecode")
+ MCFG_K056832_PALETTE("palette")
MCFG_K056800_ADD("k056800", XTAL_18_432MHz)
MCFG_K056800_INT_HANDLER(INPUTLINE("audiocpu", M68K_IRQ_1))
@@ -832,7 +833,7 @@ static MACHINE_CONFIG_START( jetwave, zr107_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 48*8-1)
MCFG_SCREEN_UPDATE_DRIVER(zr107_state, screen_update_jetwave)
- MCFG_PALETTE_LENGTH(65536)
+ MCFG_PALETTE_ADD("palette", 65536)
MCFG_VIDEO_START_OVERRIDE(zr107_state,jetwave)
@@ -840,6 +841,7 @@ static MACHINE_CONFIG_START( jetwave, zr107_state )
MCFG_K001604_ADD("k001604", jetwave_k001604_intf)
MCFG_K001604_GFXDECODE("gfxdecode")
+ MCFG_K001604_PALETTE("palette")
MCFG_K056800_ADD("k056800", XTAL_18_432MHz)
MCFG_K056800_INT_HANDLER(INPUTLINE("audiocpu", M68K_IRQ_1))
diff --git a/src/mame/etc/template_driver.c b/src/mame/etc/template_driver.c
index 4f6727bc1f5..480e8ab1e7d 100644
--- a/src/mame/etc/template_driver.c
+++ b/src/mame/etc/template_driver.c
@@ -26,14 +26,13 @@ public:
// screen updates
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
-
+ DECLARE_PALETTE_INIT(xxx);
protected:
// driver_device overrides
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
};
void xxx_state::video_start()
@@ -134,7 +133,7 @@ void xxx_state::machine_reset()
}
-void xxx_state::palette_init()
+PALETTE_INIT_MEMBER(xxx_state, xxx)
{
}
@@ -156,8 +155,9 @@ static MACHINE_CONFIG_START( xxx, xxx_state )
MCFG_GFXDECODE_ADD("gfxdecode", xxx)
- MCFG_PALETTE_LENGTH(8)
-
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(xxx_state, xxx)
+
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
// MCFG_SOUND_ADD("aysnd", AY8910, MAIN_CLOCK/4)
diff --git a/src/mame/includes/1942.h b/src/mame/includes/1942.h
index b461c2c47a6..83c94466ed7 100644
--- a/src/mame/includes/1942.h
+++ b/src/mame/includes/1942.h
@@ -29,7 +29,8 @@ public:
int m_palette_bank;
UINT8 m_scroll[2];
void create_palette();
- void palette_init_1942p();
+ DECLARE_PALETTE_INIT(1942);
+ DECLARE_PALETTE_INIT(1942p);
DECLARE_WRITE8_MEMBER(c1942p_palette_w);
/* devices */
@@ -48,7 +49,6 @@ public:
virtual void machine_reset();
virtual void video_start();
void video_start_c1942p();
- virtual void palette_init();
UINT32 screen_update_1942(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_1942p(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(c1942_scanline);
diff --git a/src/mame/includes/1943.h b/src/mame/includes/1943.h
index 6c7b59778ac..f50b8f56032 100644
--- a/src/mame/includes/1943.h
+++ b/src/mame/includes/1943.h
@@ -56,7 +56,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(1943);
UINT32 screen_update_1943(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int priority );
};
diff --git a/src/mame/includes/40love.h b/src/mame/includes/40love.h
index 8b5ae9184fa..7e6ef8ce1f0 100644
--- a/src/mame/includes/40love.h
+++ b/src/mame/includes/40love.h
@@ -103,7 +103,7 @@ public:
DECLARE_DRIVER_INIT(40love);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(fortyl);
DECLARE_MACHINE_START(40love);
DECLARE_MACHINE_RESET(40love);
DECLARE_MACHINE_START(undoukai);
diff --git a/src/mame/includes/4enraya.h b/src/mame/includes/4enraya.h
index 652414c1665..34bd311c598 100644
--- a/src/mame/includes/4enraya.h
+++ b/src/mame/includes/4enraya.h
@@ -45,7 +45,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(_4enraya);
UINT32 screen_update_4enraya(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
diff --git a/src/mame/includes/88games.h b/src/mame/includes/88games.h
index 94cc62c60ac..547594a23fa 100644
--- a/src/mame/includes/88games.h
+++ b/src/mame/includes/88games.h
@@ -15,7 +15,7 @@ public:
_88games_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_banked_rom(*this, "banked_rom"),
- m_paletteram_1000(*this, "paletteram_1000"),
+ m_paletteram_1000(*this, "palette"),
m_ram(*this, "ram"),
m_audiocpu(*this, "audiocpu"),
m_k052109(*this, "k052109"),
diff --git a/src/mame/includes/ambush.h b/src/mame/includes/ambush.h
index 9c48a467ce3..e8e63f7c6d1 100644
--- a/src/mame/includes/ambush.h
+++ b/src/mame/includes/ambush.h
@@ -26,7 +26,7 @@ public:
DECLARE_WRITE8_MEMBER(ambush_coin_counter_w);
DECLARE_WRITE8_MEMBER(flip_screen_w);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(ambush);
UINT32 screen_update_ambush(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_chars( bitmap_ind16 &bitmap, const rectangle &cliprect, int priority );
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/ampoker2.h b/src/mame/includes/ampoker2.h
index b7f980dbf38..a8b20cadc16 100644
--- a/src/mame/includes/ampoker2.h
+++ b/src/mame/includes/ampoker2.h
@@ -23,7 +23,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(s2k_get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(ampoker2);
DECLARE_VIDEO_START(sigma2k);
UINT32 screen_update_ampoker2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/arabian.h b/src/mame/includes/arabian.h
index 705790e8885..b363a69debc 100644
--- a/src/mame/includes/arabian.h
+++ b/src/mame/includes/arabian.h
@@ -43,7 +43,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(arabian);
UINT32 screen_update_arabian(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void blit_area( UINT8 plane, UINT16 src, UINT8 x, UINT8 y, UINT8 sx, UINT8 sy );
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/astrocde.h b/src/mame/includes/astrocde.h
index 5f555851bed..42c0576f6e7 100644
--- a/src/mame/includes/astrocde.h
+++ b/src/mame/includes/astrocde.h
@@ -137,7 +137,7 @@ public:
DECLARE_DRIVER_INIT(gorf);
DECLARE_DRIVER_INIT(astrocde);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(astrocde);
DECLARE_VIDEO_START(profpac);
DECLARE_PALETTE_INIT(profpac);
UINT32 screen_update_astrocde(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/atarifb.h b/src/mame/includes/atarifb.h
index 43cb9f98ab0..ce28ea5a961 100644
--- a/src/mame/includes/atarifb.h
+++ b/src/mame/includes/atarifb.h
@@ -84,7 +84,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(atarifb);
UINT32 screen_update_atarifb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_abaseb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_soccer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/atarigt.h b/src/mame/includes/atarigt.h
index 1916d51a672..56ddec14438 100644
--- a/src/mame/includes/atarigt.h
+++ b/src/mame/includes/atarigt.h
@@ -33,8 +33,8 @@ public:
required_device<tilemap_device> m_alpha_tilemap;
required_device<atari_rle_objects_device> m_rle;
- bitmap_ind16 * m_pf_bitmap;
- bitmap_ind16 * m_an_bitmap;
+ bitmap_ind16 m_pf_bitmap;
+ bitmap_ind16 m_an_bitmap;
UINT8 m_playfield_tile_bank;
UINT8 m_playfield_color_bank;
diff --git a/src/mame/includes/bankp.h b/src/mame/includes/bankp.h
index 57de829fee7..81c2c761b95 100644
--- a/src/mame/includes/bankp.h
+++ b/src/mame/includes/bankp.h
@@ -39,7 +39,7 @@ public:
TILE_GET_INFO_MEMBER(get_fg_tile_info);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(bankp);
UINT32 screen_update_bankp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/baraduke.h b/src/mame/includes/baraduke.h
index 768927cd209..99e25d4ad54 100644
--- a/src/mame/includes/baraduke.h
+++ b/src/mame/includes/baraduke.h
@@ -45,7 +45,7 @@ public:
TILE_GET_INFO_MEMBER(get_tile_info0);
TILE_GET_INFO_MEMBER(get_tile_info1);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(baraduke);
UINT32 screen_update_baraduke(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof_baraduke(screen_device &screen, bool state);
void scroll_w(address_space &space, int layer, int offset, int data);
diff --git a/src/mame/includes/bking.h b/src/mame/includes/bking.h
index e658cb6dbb6..7ab23395bd4 100644
--- a/src/mame/includes/bking.h
+++ b/src/mame/includes/bking.h
@@ -92,7 +92,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(bking);
DECLARE_MACHINE_START(bking3);
DECLARE_MACHINE_RESET(bking3);
DECLARE_MACHINE_RESET(common);
diff --git a/src/mame/includes/bladestl.h b/src/mame/includes/bladestl.h
index 9ff95164d14..951d5d4f70c 100644
--- a/src/mame/includes/bladestl.h
+++ b/src/mame/includes/bladestl.h
@@ -43,7 +43,7 @@ public:
DECLARE_WRITE8_MEMBER(bladestl_speech_ctrl_w);
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(bladestl);
UINT32 screen_update_bladestl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(bladestl_scanline);
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/blockade.h b/src/mame/includes/blockade.h
index 0068908366e..ac88e024506 100644
--- a/src/mame/includes/blockade.h
+++ b/src/mame/includes/blockade.h
@@ -29,7 +29,6 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
UINT32 screen_update_blockade(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(blockade_interrupt);
DECLARE_WRITE8_MEMBER(blockade_sound_freq_w);
diff --git a/src/mame/includes/blueprnt.h b/src/mame/includes/blueprnt.h
index 264b8302e79..f1837371395 100644
--- a/src/mame/includes/blueprnt.h
+++ b/src/mame/includes/blueprnt.h
@@ -43,7 +43,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
DECLARE_VIDEO_START(blueprnt);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(blueprnt);
UINT32 screen_update_blueprnt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/bogeyman.h b/src/mame/includes/bogeyman.h
index 0f6bad5aa9d..250db768f46 100644
--- a/src/mame/includes/bogeyman.h
+++ b/src/mame/includes/bogeyman.h
@@ -46,7 +46,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(bogeyman);
UINT32 screen_update_bogeyman(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/brkthru.h b/src/mame/includes/brkthru.h
index ddf85d2cfb3..76ddc3964fd 100644
--- a/src/mame/includes/brkthru.h
+++ b/src/mame/includes/brkthru.h
@@ -48,7 +48,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(brkthru);
UINT32 screen_update_brkthru(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
void show_register( bitmap_ind16 &bitmap, int x, int y, UINT32 data );
diff --git a/src/mame/includes/bsktball.h b/src/mame/includes/bsktball.h
index 65fa7651ecb..243997f4a4c 100644
--- a/src/mame/includes/bsktball.h
+++ b/src/mame/includes/bsktball.h
@@ -58,7 +58,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(bsktball);
UINT32 screen_update_bsktball(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(bsktball_scanline);
DECLARE_WRITE8_MEMBER(bsktball_bounce_w);
diff --git a/src/mame/includes/buggychl.h b/src/mame/includes/buggychl.h
index 27735026d94..be30c5f8042 100644
--- a/src/mame/includes/buggychl.h
+++ b/src/mame/includes/buggychl.h
@@ -69,7 +69,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(buggychl);
UINT32 screen_update_buggychl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(nmi_callback);
void draw_sky( bitmap_ind16 &bitmap, const rectangle &cliprect );
diff --git a/src/mame/includes/calomega.h b/src/mame/includes/calomega.h
index 82572641cbb..7f838d545ba 100644
--- a/src/mame/includes/calomega.h
+++ b/src/mame/includes/calomega.h
@@ -44,10 +44,9 @@ public:
DECLARE_DRIVER_INIT(jjpoker);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
UINT32 screen_update_calomega(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
-
+ DECLARE_PALETTE_INIT(calomega);
protected:
virtual void video_start();
- virtual void palette_init();
private:
DECLARE_WRITE_LINE_MEMBER(update_aciabaud);
diff --git a/src/mame/includes/canyon.h b/src/mame/includes/canyon.h
index e4817cd1b16..c775f9002ab 100644
--- a/src/mame/includes/canyon.h
+++ b/src/mame/includes/canyon.h
@@ -40,7 +40,7 @@ public:
DECLARE_WRITE8_MEMBER(canyon_videoram_w);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(canyon);
UINT32 screen_update_canyon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE8_MEMBER(canyon_motor_w);
DECLARE_WRITE8_MEMBER(canyon_explode_w);
diff --git a/src/mame/includes/carjmbre.h b/src/mame/includes/carjmbre.h
index bd448ca7e1f..441c01a2e44 100644
--- a/src/mame/includes/carjmbre.h
+++ b/src/mame/includes/carjmbre.h
@@ -32,7 +32,7 @@ public:
TILE_GET_INFO_MEMBER(get_carjmbre_tile_info);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(carjmbre);
UINT32 screen_update_carjmbre(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/carpolo.h b/src/mame/includes/carpolo.h
index 9faee2b0e9d..33269ec062f 100644
--- a/src/mame/includes/carpolo.h
+++ b/src/mame/includes/carpolo.h
@@ -87,7 +87,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(carpolo);
UINT32 screen_update_carpolo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof_carpolo(screen_device &screen, bool state);
INTERRUPT_GEN_MEMBER(carpolo_timer_interrupt);
diff --git a/src/mame/includes/chaknpop.h b/src/mame/includes/chaknpop.h
index 1aff9a505e6..7fd1c8079d3 100644
--- a/src/mame/includes/chaknpop.h
+++ b/src/mame/includes/chaknpop.h
@@ -53,7 +53,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(chaknpop);
UINT32 screen_update_chaknpop(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void tx_tilemap_mark_all_dirty();
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
diff --git a/src/mame/includes/cheekyms.h b/src/mame/includes/cheekyms.h
index c3eaddef1f3..d703d363fc3 100644
--- a/src/mame/includes/cheekyms.h
+++ b/src/mame/includes/cheekyms.h
@@ -38,7 +38,7 @@ public:
TILE_GET_INFO_MEMBER(cheekyms_get_tile_info);
virtual void machine_start();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(cheekyms);
UINT32 screen_update_cheekyms(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx, int flip );
diff --git a/src/mame/includes/circusc.h b/src/mame/includes/circusc.h
index 023a32f807b..79959896f70 100644
--- a/src/mame/includes/circusc.h
+++ b/src/mame/includes/circusc.h
@@ -61,7 +61,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(circusc);
UINT32 screen_update_circusc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
diff --git a/src/mame/includes/compgolf.h b/src/mame/includes/compgolf.h
index dbbd887c074..16eddf364a3 100644
--- a/src/mame/includes/compgolf.h
+++ b/src/mame/includes/compgolf.h
@@ -42,7 +42,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(compgolf);
UINT32 screen_update_compgolf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
void compgolf_expand_bg();
diff --git a/src/mame/includes/contra.h b/src/mame/includes/contra.h
index 1c359848fdf..a5f4c6af717 100644
--- a/src/mame/includes/contra.h
+++ b/src/mame/includes/contra.h
@@ -66,7 +66,7 @@ public:
TILE_GET_INFO_MEMBER(get_tx_tile_info);
virtual void machine_start();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(contra);
UINT32 screen_update_contra(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(contra_interrupt);
void set_pens( );
diff --git a/src/mame/includes/cop01.h b/src/mame/includes/cop01.h
index 7a526808d0f..f0ff8a60b4a 100644
--- a/src/mame/includes/cop01.h
+++ b/src/mame/includes/cop01.h
@@ -50,7 +50,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(cop01);
UINT32 screen_update_cop01(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
};
diff --git a/src/mame/includes/copsnrob.h b/src/mame/includes/copsnrob.h
index ffc045b21e4..ac70dee494a 100644
--- a/src/mame/includes/copsnrob.h
+++ b/src/mame/includes/copsnrob.h
@@ -38,7 +38,6 @@ public:
DECLARE_WRITE8_MEMBER(copsnrob_misc_w);
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
UINT32 screen_update_copsnrob(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
diff --git a/src/mame/includes/crbaloon.h b/src/mame/includes/crbaloon.h
index 85b12b8a65f..15fcfc15f89 100644
--- a/src/mame/includes/crbaloon.h
+++ b/src/mame/includes/crbaloon.h
@@ -46,7 +46,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(crbaloon);
UINT32 screen_update_crbaloon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
DECLARE_WRITE8_MEMBER(crbaloon_audio_set_music_freq);
diff --git a/src/mame/includes/darkmist.h b/src/mame/includes/darkmist.h
index 8d2798302a7..ca62cd05e05 100644
--- a/src/mame/includes/darkmist.h
+++ b/src/mame/includes/darkmist.h
@@ -35,7 +35,7 @@ public:
TILE_GET_INFO_MEMBER(get_fgtile_info);
TILE_GET_INFO_MEMBER(get_txttile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(darkmist);
UINT32 screen_update_darkmist(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(darkmist_scanline);
void set_pens();
diff --git a/src/mame/includes/dcheese.h b/src/mame/includes/dcheese.h
index b9d819e0203..5c83531e367 100644
--- a/src/mame/includes/dcheese.h
+++ b/src/mame/includes/dcheese.h
@@ -55,7 +55,7 @@ public:
DECLARE_CUSTOM_INPUT_MEMBER(sound_latch_state_r);
virtual void machine_start();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(dcheese);
UINT32 screen_update_dcheese(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(dcheese_vblank);
void dcheese_signal_irq(int which);
diff --git a/src/mame/includes/dday.h b/src/mame/includes/dday.h
index b2af96f99b1..ba6666214b2 100644
--- a/src/mame/includes/dday.h
+++ b/src/mame/includes/dday.h
@@ -51,7 +51,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(dday);
UINT32 screen_update_dday(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(countdown_timer_callback);
void start_countdown_timer();
diff --git a/src/mame/includes/ddribble.h b/src/mame/includes/ddribble.h
index daf774c73da..e085e146244 100644
--- a/src/mame/includes/ddribble.h
+++ b/src/mame/includes/ddribble.h
@@ -71,7 +71,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(ddribble);
UINT32 screen_update_ddribble(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(ddribble_interrupt_0);
INTERRUPT_GEN_MEMBER(ddribble_interrupt_1);
diff --git a/src/mame/includes/decocass.h b/src/mame/includes/decocass.h
index 0d05559653e..bf56c9cbadb 100644
--- a/src/mame/includes/decocass.h
+++ b/src/mame/includes/decocass.h
@@ -132,7 +132,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(decocass);
DECLARE_MACHINE_RESET(ctsttape);
DECLARE_MACHINE_RESET(cprogolfj);
DECLARE_MACHINE_RESET(cdsteljn);
diff --git a/src/mame/includes/docastle.h b/src/mame/includes/docastle.h
index 696359dc244..0e0fc8f1ea1 100644
--- a/src/mame/includes/docastle.h
+++ b/src/mame/includes/docastle.h
@@ -64,7 +64,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(docastle);
DECLARE_VIDEO_START(dorunrun);
UINT32 screen_update_docastle(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void video_start_common( UINT32 tile_transmask );
diff --git a/src/mame/includes/dogfgt.h b/src/mame/includes/dogfgt.h
index 8e890a19dda..f5adee819a5 100644
--- a/src/mame/includes/dogfgt.h
+++ b/src/mame/includes/dogfgt.h
@@ -54,7 +54,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(dogfgt);
UINT32 screen_update_dogfgt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites( bitmap_ind16 &bitmap,const rectangle &cliprect );
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/dragrace.h b/src/mame/includes/dragrace.h
index d3eeab90d3d..f6f6413868c 100644
--- a/src/mame/includes/dragrace.h
+++ b/src/mame/includes/dragrace.h
@@ -55,7 +55,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(dragrace);
UINT32 screen_update_dragrace(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(dragrace_frame_callback);
void dragrace_update_misc_flags( address_space &space );
diff --git a/src/mame/includes/dribling.h b/src/mame/includes/dribling.h
index bc6f2f6d104..a2b4ec226bd 100644
--- a/src/mame/includes/dribling.h
+++ b/src/mame/includes/dribling.h
@@ -47,7 +47,7 @@ public:
DECLARE_WRITE8_MEMBER(shr_w);
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(dribling);
UINT32 screen_update_dribling(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(dribling_irq_gen);
};
diff --git a/src/mame/includes/drmicro.h b/src/mame/includes/drmicro.h
index cb5e35f8b7c..f7f567abd86 100644
--- a/src/mame/includes/drmicro.h
+++ b/src/mame/includes/drmicro.h
@@ -36,7 +36,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(drmicro);
UINT32 screen_update_drmicro(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(drmicro_interrupt);
DECLARE_WRITE_LINE_MEMBER(pcm_w);
diff --git a/src/mame/includes/espial.h b/src/mame/includes/espial.h
index 41267a43b6a..7929286077e 100644
--- a/src/mame/includes/espial.h
+++ b/src/mame/includes/espial.h
@@ -54,7 +54,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(espial);
DECLARE_VIDEO_START(netwars);
UINT32 screen_update_espial(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(espial_sound_nmi_gen);
diff --git a/src/mame/includes/exedexes.h b/src/mame/includes/exedexes.h
index c108ef5daf3..10997e71990 100644
--- a/src/mame/includes/exedexes.h
+++ b/src/mame/includes/exedexes.h
@@ -49,7 +49,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(exedexes);
UINT32 screen_update_exedexes(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(exedexes_scanline);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int priority );
diff --git a/src/mame/includes/exerion.h b/src/mame/includes/exerion.h
index 05b972d6b91..52d77e4bd94 100644
--- a/src/mame/includes/exerion.h
+++ b/src/mame/includes/exerion.h
@@ -66,7 +66,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(exerion);
UINT32 screen_update_exerion(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_background( bitmap_ind16 &bitmap, const rectangle &cliprect);
};
diff --git a/src/mame/includes/exterm.h b/src/mame/includes/exterm.h
index e386ea863da..119ceb61d99 100644
--- a/src/mame/includes/exterm.h
+++ b/src/mame/includes/exterm.h
@@ -40,7 +40,7 @@ public:
DECLARE_WRITE8_MEMBER(sound_control_w);
DECLARE_WRITE8_MEMBER(ym2151_data_latch_w);
DECLARE_WRITE8_MEMBER(sound_slave_dac_w);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(exterm);
TIMER_CALLBACK_MEMBER(sound_delayed_w);
TIMER_DEVICE_CALLBACK_MEMBER(master_sound_nmi_callback);
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/fastlane.h b/src/mame/includes/fastlane.h
index 75e271e94f0..b9649bdd550 100644
--- a/src/mame/includes/fastlane.h
+++ b/src/mame/includes/fastlane.h
@@ -56,7 +56,7 @@ public:
TILE_GET_INFO_MEMBER(get_tile_info1);
virtual void machine_start();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(fastlane);
UINT32 screen_update_fastlane(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(fastlane_scanline);
void set_pens( );
diff --git a/src/mame/includes/fcombat.h b/src/mame/includes/fcombat.h
index 35de03222a9..2c604e82111 100644
--- a/src/mame/includes/fcombat.h
+++ b/src/mame/includes/fcombat.h
@@ -69,6 +69,6 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(fcombat);
UINT32 screen_update_fcombat(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
diff --git a/src/mame/includes/fgoal.h b/src/mame/includes/fgoal.h
index 28a6d598570..b08fe9d5684 100644
--- a/src/mame/includes/fgoal.h
+++ b/src/mame/includes/fgoal.h
@@ -56,7 +56,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(fgoal);
UINT32 screen_update_fgoal(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(interrupt_callback);
int intensity(int bits);
diff --git a/src/mame/includes/finalizr.h b/src/mame/includes/finalizr.h
index ce8bfc435be..39fc45fc4a8 100644
--- a/src/mame/includes/finalizr.h
+++ b/src/mame/includes/finalizr.h
@@ -54,7 +54,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(finalizr);
UINT32 screen_update_finalizr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(finalizr_scanline);
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/firetrap.h b/src/mame/includes/firetrap.h
index 6dd3bba1549..c1103e19333 100644
--- a/src/mame/includes/firetrap.h
+++ b/src/mame/includes/firetrap.h
@@ -76,7 +76,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(firetrap);
UINT32 screen_update_firetrap(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(firetrap_irq);
inline void get_bg_tile_info(tile_data &tileinfo, int tile_index, UINT8 *bgvideoram, int gfx_region);
diff --git a/src/mame/includes/firetrk.h b/src/mame/includes/firetrk.h
index ff37d505f2a..2e844320ee8 100644
--- a/src/mame/includes/firetrk.h
+++ b/src/mame/includes/firetrk.h
@@ -107,7 +107,7 @@ public:
TILE_GET_INFO_MEMBER(montecar_get_tile_info2);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(firetrk);
DECLARE_VIDEO_START(superbug);
DECLARE_VIDEO_START(montecar);
DECLARE_PALETTE_INIT(montecar);
diff --git a/src/mame/includes/flower.h b/src/mame/includes/flower.h
index 3c4ccb2f46a..61cf53bde19 100644
--- a/src/mame/includes/flower.h
+++ b/src/mame/includes/flower.h
@@ -41,7 +41,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg1_tile_info);
TILE_GET_INFO_MEMBER(get_text_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(flower);
UINT32 screen_update_flower(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/funkybee.h b/src/mame/includes/funkybee.h
index 6e526fd157d..27acbed9608 100644
--- a/src/mame/includes/funkybee.h
+++ b/src/mame/includes/funkybee.h
@@ -29,7 +29,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(funkybee);
UINT32 screen_update_funkybee(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
void draw_columns( bitmap_ind16 &bitmap, const rectangle &cliprect );
diff --git a/src/mame/includes/galaxian.h b/src/mame/includes/galaxian.h
index 5f9c007c758..d085cd74ef6 100644
--- a/src/mame/includes/galaxian.h
+++ b/src/mame/includes/galaxian.h
@@ -249,7 +249,7 @@ public:
DECLARE_DRIVER_INIT(froggrs);
TILE_GET_INFO_MEMBER(bg_get_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(galaxian);
DECLARE_PALETTE_INIT(moonwar);
void tenspot_set_game_bank(running_machine& machine, int bank, int from_game);
UINT32 screen_update_galaxian(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/galivan.h b/src/mame/includes/galivan.h
index a92f480a651..fbbbbf2c0e2 100644
--- a/src/mame/includes/galivan.h
+++ b/src/mame/includes/galivan.h
@@ -51,7 +51,7 @@ public:
TILE_GET_INFO_MEMBER(get_tx_tile_info);
TILE_GET_INFO_MEMBER(ninjemak_get_bg_tile_info);
TILE_GET_INFO_MEMBER(ninjemak_get_tx_tile_info);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(galivan);
DECLARE_MACHINE_START(galivan);
DECLARE_MACHINE_RESET(galivan);
DECLARE_VIDEO_START(galivan);
diff --git a/src/mame/includes/galpani2.h b/src/mame/includes/galpani2.h
index dff5941f29b..24d69f12b27 100644
--- a/src/mame/includes/galpani2.h
+++ b/src/mame/includes/galpani2.h
@@ -8,7 +8,7 @@ public:
galpani2_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_bg8(*this, "bg8"),
- m_palette(*this, "palette"),
+ m_palette_val(*this, "palette"),
m_bg8_scrollx(*this, "bg8_scrollx"),
m_bg8_scrolly(*this, "bg8_scrolly"),
m_bg15(*this, "bg15"),
@@ -24,7 +24,7 @@ public:
{ }
required_shared_ptr_array<UINT16, 2> m_bg8;
- optional_shared_ptr_array<UINT16, 2> m_palette;
+ optional_shared_ptr_array<UINT16, 2> m_palette_val;
required_shared_ptr_array<UINT16, 2> m_bg8_scrollx;
required_shared_ptr_array<UINT16, 2> m_bg8_scrolly;
required_shared_ptr<UINT16> m_bg15;
@@ -53,7 +53,7 @@ public:
DECLARE_WRITE8_MEMBER(galpani2_oki2_bank_w);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(galpani2);
UINT32 screen_update_galpani2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(galpani2_interrupt1);
TIMER_DEVICE_CALLBACK_MEMBER(galpani2_interrupt2);
diff --git a/src/mame/includes/galspnbl.h b/src/mame/includes/galspnbl.h
index b7799f55333..bcb72444796 100644
--- a/src/mame/includes/galspnbl.h
+++ b/src/mame/includes/galspnbl.h
@@ -27,13 +27,12 @@ public:
required_shared_ptr<UINT16> m_videoram;
required_shared_ptr<UINT16> m_bgvideoram;
required_shared_ptr<UINT16> m_scroll;
-// UINT16 * paletteram; // currently this uses generic palette handling
/* devices */
required_device<cpu_device> m_audiocpu;
DECLARE_WRITE16_MEMBER(soundcommand_w);
virtual void machine_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(galspnbl);
UINT32 screen_update_galspnbl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_background( bitmap_ind16 &bitmap, const rectangle &cliprect );
DECLARE_WRITE_LINE_MEMBER(irqhandler);
diff --git a/src/mame/includes/gaplus.h b/src/mame/includes/gaplus.h
index 467310d9a8e..9a15adddb8a 100644
--- a/src/mame/includes/gaplus.h
+++ b/src/mame/includes/gaplus.h
@@ -80,7 +80,7 @@ public:
TILE_GET_INFO_MEMBER(get_tile_info);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(gaplus);
UINT32 screen_update_gaplus(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof_gaplus(screen_device &screen, bool state);
INTERRUPT_GEN_MEMBER(gaplus_vblank_main_irq);
diff --git a/src/mame/includes/gatron.h b/src/mame/includes/gatron.h
index 30d8648dc75..9d92cc3e205 100644
--- a/src/mame/includes/gatron.h
+++ b/src/mame/includes/gatron.h
@@ -14,7 +14,7 @@ public:
DECLARE_WRITE8_MEMBER(output_port_1_w);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(gatron);
UINT32 screen_update_gat(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
diff --git a/src/mame/includes/gomoku.h b/src/mame/includes/gomoku.h
index a1d90f857ae..1475f2f3c97 100644
--- a/src/mame/includes/gomoku.h
+++ b/src/mame/includes/gomoku.h
@@ -25,7 +25,7 @@ public:
DECLARE_WRITE8_MEMBER(gomoku_bg_dispsw_w);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(gomoku);
UINT32 screen_update_gomoku(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
diff --git a/src/mame/includes/gotya.h b/src/mame/includes/gotya.h
index da843e3ab6e..aae1d3a9004 100644
--- a/src/mame/includes/gotya.h
+++ b/src/mame/includes/gotya.h
@@ -39,7 +39,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(gotya);
UINT32 screen_update_gotya(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_status_row( bitmap_ind16 &bitmap, const rectangle &cliprect, int sx, int col );
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
diff --git a/src/mame/includes/grchamp.h b/src/mame/includes/grchamp.h
index 177a6f34a42..a1312e7aba3 100644
--- a/src/mame/includes/grchamp.h
+++ b/src/mame/includes/grchamp.h
@@ -75,7 +75,7 @@ public:
TILEMAP_MAPPER_MEMBER(get_memory_offset);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ void palette_generate();
UINT32 screen_update_grchamp(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(grchamp_cpu0_interrupt);
INTERRUPT_GEN_MEMBER(grchamp_cpu1_interrupt);
diff --git a/src/mame/includes/gridlee.h b/src/mame/includes/gridlee.h
index b4f6d9e6665..d9cbc61c16a 100644
--- a/src/mame/includes/gridlee.h
+++ b/src/mame/includes/gridlee.h
@@ -57,7 +57,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(gridlee);
UINT32 screen_update_gridlee(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(irq_off_tick);
TIMER_CALLBACK_MEMBER(irq_timer_tick);
diff --git a/src/mame/includes/gunsmoke.h b/src/mame/includes/gunsmoke.h
index 24ee7620672..0e2d91c93f2 100644
--- a/src/mame/includes/gunsmoke.h
+++ b/src/mame/includes/gunsmoke.h
@@ -41,7 +41,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(gunsmoke);
UINT32 screen_update_gunsmoke(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/gyruss.h b/src/mame/includes/gyruss.h
index b6917689e67..5315d27c641 100644
--- a/src/mame/includes/gyruss.h
+++ b/src/mame/includes/gyruss.h
@@ -54,7 +54,7 @@ public:
TILE_GET_INFO_MEMBER(gyruss_get_tile_info);
virtual void machine_start();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(gyruss);
UINT32 screen_update_gyruss(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(master_vblank_irq);
INTERRUPT_GEN_MEMBER(slave_vblank_irq);
diff --git a/src/mame/includes/hanaawas.h b/src/mame/includes/hanaawas.h
index 4547d861938..d936fc7a58f 100644
--- a/src/mame/includes/hanaawas.h
+++ b/src/mame/includes/hanaawas.h
@@ -31,7 +31,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(hanaawas);
UINT32 screen_update_hanaawas(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE8_MEMBER(hanaawas_portB_w);
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/hcastle.h b/src/mame/includes/hcastle.h
index 3b948b1e188..9c9d1bc219f 100644
--- a/src/mame/includes/hcastle.h
+++ b/src/mame/includes/hcastle.h
@@ -63,7 +63,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(hcastle);
UINT32 screen_update_hcastle(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void set_pens();
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, UINT8 *sbank, int bank );
diff --git a/src/mame/includes/higemaru.h b/src/mame/includes/higemaru.h
index 38aaad45fc9..dba1b6a5b92 100644
--- a/src/mame/includes/higemaru.h
+++ b/src/mame/includes/higemaru.h
@@ -27,7 +27,7 @@ public:
DECLARE_WRITE8_MEMBER(higemaru_c800_w);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(higemaru);
UINT32 screen_update_higemaru(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(higemaru_scanline);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
diff --git a/src/mame/includes/hyperspt.h b/src/mame/includes/hyperspt.h
index 483e517b9b4..c95c9456436 100644
--- a/src/mame/includes/hyperspt.h
+++ b/src/mame/includes/hyperspt.h
@@ -47,7 +47,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(roadf_get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(hyperspt);
DECLARE_VIDEO_START(roadf);
UINT32 screen_update_hyperspt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
diff --git a/src/mame/includes/ikki.h b/src/mame/includes/ikki.h
index 6e8336b0f6f..1617968c8e0 100644
--- a/src/mame/includes/ikki.h
+++ b/src/mame/includes/ikki.h
@@ -37,7 +37,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(ikki);
UINT32 screen_update_ikki(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(ikki_irq);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
diff --git a/src/mame/includes/irobot.h b/src/mame/includes/irobot.h
index e578003b9f9..f2722e932eb 100644
--- a/src/mame/includes/irobot.h
+++ b/src/mame/includes/irobot.h
@@ -80,7 +80,7 @@ public:
DECLARE_DRIVER_INIT(irobot);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(irobot);
UINT32 screen_update_irobot(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(scanline_callback);
TIMER_DEVICE_CALLBACK_MEMBER(irobot_irvg_done_callback);
diff --git a/src/mame/includes/ironhors.h b/src/mame/includes/ironhors.h
index 0a1af5b5b13..89b8e1db872 100644
--- a/src/mame/includes/ironhors.h
+++ b/src/mame/includes/ironhors.h
@@ -51,7 +51,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(ironhors);
DECLARE_VIDEO_START(farwest);
UINT32 screen_update_ironhors(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_farwest(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/jackal.h b/src/mame/includes/jackal.h
index e5bdedffc4a..3a33f370af3 100644
--- a/src/mame/includes/jackal.h
+++ b/src/mame/includes/jackal.h
@@ -46,7 +46,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(jackal);
UINT32 screen_update_jackal(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(jackal_interrupt);
void set_pens( );
diff --git a/src/mame/includes/jailbrek.h b/src/mame/includes/jailbrek.h
index 11ed7f768a0..73cc0ed637a 100644
--- a/src/mame/includes/jailbrek.h
+++ b/src/mame/includes/jailbrek.h
@@ -51,7 +51,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(jailbrek);
UINT32 screen_update_jailbrek(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(jb_interrupt);
INTERRUPT_GEN_MEMBER(jb_interrupt_nmi);
diff --git a/src/mame/includes/jpmsys5.h b/src/mame/includes/jpmsys5.h
index d35aeb60808..58304b3a6d9 100644
--- a/src/mame/includes/jpmsys5.h
+++ b/src/mame/includes/jpmsys5.h
@@ -35,7 +35,7 @@ public:
optional_device<roc10937_t> m_vfd;
required_ioport m_direct_port;
- UINT8 m_palette[16][3];
+ UINT8 m_palette_val[16][3];
int m_pal_addr;
int m_pal_idx;
int m_touch_state;
diff --git a/src/mame/includes/karnov.h b/src/mame/includes/karnov.h
index 32ae49ffee4..74739979f9f 100644
--- a/src/mame/includes/karnov.h
+++ b/src/mame/includes/karnov.h
@@ -63,7 +63,7 @@ public:
TILE_GET_INFO_MEMBER(get_fix_tile_info);
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(karnov);
DECLARE_VIDEO_START(karnov);
DECLARE_VIDEO_START(wndrplnt);
UINT32 screen_update_karnov(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/kchamp.h b/src/mame/includes/kchamp.h
index 8c3539fbceb..609ccd48a7a 100644
--- a/src/mame/includes/kchamp.h
+++ b/src/mame/includes/kchamp.h
@@ -50,7 +50,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(kchamp);
DECLARE_MACHINE_START(kchampvs);
DECLARE_MACHINE_START(kchamp);
UINT32 screen_update_kchampvs(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/kingobox.h b/src/mame/includes/kingobox.h
index ae3996b5c0a..eca14cc0232 100644
--- a/src/mame/includes/kingobox.h
+++ b/src/mame/includes/kingobox.h
@@ -63,7 +63,7 @@ public:
UINT32 screen_update_kingofb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_ringking(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(kingofb_interrupt);
- void palette_init_common( const UINT8 *color_prom, void (kingofb_state::*get_rgb_data)(const UINT8 *, int, int *, int *, int *) );
+ void palette_init_common( palette_device &palette, const UINT8 *color_prom, void (kingofb_state::*get_rgb_data)(const UINT8 *, int, int *, int *, int *) );
void kingofb_get_rgb_data( const UINT8 *color_prom, int i, int *r_data, int *g_data, int *b_data );
void ringking_get_rgb_data( const UINT8 *color_prom, int i, int *r_data, int *g_data, int *b_data );
void kingofb_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/kncljoe.h b/src/mame/includes/kncljoe.h
index d2e18f09148..e0a4f85cc01 100644
--- a/src/mame/includes/kncljoe.h
+++ b/src/mame/includes/kncljoe.h
@@ -47,7 +47,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(kncljoe);
UINT32 screen_update_kncljoe(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(sound_nmi);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
diff --git a/src/mame/includes/kopunch.h b/src/mame/includes/kopunch.h
index d757753fec7..8fb7965f7e1 100644
--- a/src/mame/includes/kopunch.h
+++ b/src/mame/includes/kopunch.h
@@ -45,7 +45,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(kopunch);
UINT32 screen_update_kopunch(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(kopunch_interrupt);
};
diff --git a/src/mame/includes/ksayakyu.h b/src/mame/includes/ksayakyu.h
index 14cfb65854d..c24118b2fb3 100644
--- a/src/mame/includes/ksayakyu.h
+++ b/src/mame/includes/ksayakyu.h
@@ -40,7 +40,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(ksayakyu);
UINT32 screen_update_ksayakyu(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/labyrunr.h b/src/mame/includes/labyrunr.h
index dbe54becf50..4b06e344a6a 100644
--- a/src/mame/includes/labyrunr.h
+++ b/src/mame/includes/labyrunr.h
@@ -47,7 +47,7 @@ public:
TILE_GET_INFO_MEMBER(get_tile_info1);
virtual void machine_start();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(labyrunr);
UINT32 screen_update_labyrunr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(labyrunr_vblank_interrupt);
INTERRUPT_GEN_MEMBER(labyrunr_timer_interrupt);
diff --git a/src/mame/includes/lasso.h b/src/mame/includes/lasso.h
index 6eef0649f2f..7d52ffd3a11 100644
--- a/src/mame/includes/lasso.h
+++ b/src/mame/includes/lasso.h
@@ -64,7 +64,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(lasso);
DECLARE_MACHINE_START(wwjgtin);
DECLARE_MACHINE_RESET(wwjgtin);
DECLARE_VIDEO_START(wwjgtin);
@@ -74,7 +74,7 @@ public:
UINT32 screen_update_chameleo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_wwjgtin(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
rgb_t get_color( int data );
- void wwjgtin_set_last_four_colors( colortable_t *colortable );
+ void wwjgtin_set_last_four_colors();
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int reverse );
void draw_lasso( bitmap_ind16 &bitmap, const rectangle &cliprect );
};
diff --git a/src/mame/includes/lazercmd.h b/src/mame/includes/lazercmd.h
index ac9931c42fc..2bce59d0909 100644
--- a/src/mame/includes/lazercmd.h
+++ b/src/mame/includes/lazercmd.h
@@ -60,7 +60,7 @@ public:
DECLARE_DRIVER_INIT(lazercmd);
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(lazercmd);
UINT32 screen_update_lazercmd(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(lazercmd_timer);
TIMER_DEVICE_CALLBACK_MEMBER(bbonk_timer);
diff --git a/src/mame/includes/lockon.h b/src/mame/includes/lockon.h
index f74da977d47..28ca4497483 100644
--- a/src/mame/includes/lockon.h
+++ b/src/mame/includes/lockon.h
@@ -117,7 +117,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(lockon);
UINT32 screen_update_lockon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof_lockon(screen_device &screen, bool state);
TIMER_CALLBACK_MEMBER(cursor_callback);
diff --git a/src/mame/includes/lucky74.h b/src/mame/includes/lucky74.h
index a73da5cc730..eb014621292 100644
--- a/src/mame/includes/lucky74.h
+++ b/src/mame/includes/lucky74.h
@@ -45,7 +45,7 @@ public:
virtual void video_start();
virtual void machine_reset();
virtual void sound_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(lucky74);
UINT32 screen_update_lucky74(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(nmi_interrupt);
DECLARE_WRITE_LINE_MEMBER(lucky74_adpcm_int);
diff --git a/src/mame/includes/lvcards.h b/src/mame/includes/lvcards.h
index bd677c04391..b93b112782a 100644
--- a/src/mame/includes/lvcards.h
+++ b/src/mame/includes/lvcards.h
@@ -21,7 +21,7 @@ public:
DECLARE_WRITE8_MEMBER(lvcards_colorram_w);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(lvcards);
DECLARE_MACHINE_START(lvpoker);
DECLARE_MACHINE_RESET(lvpoker);
DECLARE_PALETTE_INIT(ponttehk);
diff --git a/src/mame/includes/m52.h b/src/mame/includes/m52.h
index 2a4e5f8c3dc..b0496171f98 100644
--- a/src/mame/includes/m52.h
+++ b/src/mame/includes/m52.h
@@ -35,7 +35,7 @@ public:
TILE_GET_INFO_MEMBER(get_tile_info);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(m52);
UINT32 screen_update_m52(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_background(bitmap_ind16 &bitmap, const rectangle &cliprect, int xpos, int ypos, int image);
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/m57.h b/src/mame/includes/m57.h
index 47635535801..06c73d13dad 100644
--- a/src/mame/includes/m57.h
+++ b/src/mame/includes/m57.h
@@ -21,7 +21,7 @@ public:
DECLARE_WRITE8_MEMBER(m57_flipscreen_w);
TILE_GET_INFO_MEMBER(get_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(m57);
UINT32 screen_update_m57(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_background(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/m58.h b/src/mame/includes/m58.h
index 1453d6a0049..14b0236e31b 100644
--- a/src/mame/includes/m58.h
+++ b/src/mame/includes/m58.h
@@ -31,7 +31,7 @@ public:
TILE_GET_INFO_MEMBER(yard_get_bg_tile_info);
TILEMAP_MAPPER_MEMBER(yard_tilemap_scan_rows);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(m58);
UINT32 screen_update_yard(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
void draw_panel( bitmap_ind16 &bitmap, const rectangle &cliprect );
diff --git a/src/mame/includes/m62.h b/src/mame/includes/m62.h
index 0d1c9cfc80c..df7efc6cc5d 100644
--- a/src/mame/includes/m62.h
+++ b/src/mame/includes/m62.h
@@ -83,7 +83,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(m62);
DECLARE_VIDEO_START(kungfum);
DECLARE_VIDEO_START(battroad);
DECLARE_PALETTE_INIT(battroad);
diff --git a/src/mame/includes/magmax.h b/src/mame/includes/magmax.h
index d343055c6c7..f8f8d555355 100644
--- a/src/mame/includes/magmax.h
+++ b/src/mame/includes/magmax.h
@@ -35,7 +35,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(magmax);
UINT32 screen_update_magmax(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(scanline_callback);
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/mainsnk.h b/src/mame/includes/mainsnk.h
index 2bc05265ad7..cdde76db0be 100644
--- a/src/mame/includes/mainsnk.h
+++ b/src/mame/includes/mainsnk.h
@@ -29,7 +29,7 @@ public:
TILE_GET_INFO_MEMBER(get_tx_tile_info);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(mainsnk);
UINT32 screen_update_mainsnk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int scrollx, int scrolly );
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/malzak.h b/src/mame/includes/malzak.h
index e9b31b7b1c0..51648bc8d47 100644
--- a/src/mame/includes/malzak.h
+++ b/src/mame/includes/malzak.h
@@ -47,6 +47,6 @@ public:
DECLARE_READ8_MEMBER(videoram_r);
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(malzak);
UINT32 screen_update_malzak(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
diff --git a/src/mame/includes/marineb.h b/src/mame/includes/marineb.h
index f5fa84fb2b3..37a45045bc2 100644
--- a/src/mame/includes/marineb.h
+++ b/src/mame/includes/marineb.h
@@ -41,7 +41,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(marineb);
DECLARE_MACHINE_RESET(springer);
UINT32 screen_update_marineb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_changes(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/mario.h b/src/mame/includes/mario.h
index 1ed0052272f..3b57216f99b 100644
--- a/src/mame/includes/mario.h
+++ b/src/mame/includes/mario.h
@@ -89,7 +89,7 @@ public:
virtual void video_start();
virtual void sound_start();
virtual void sound_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(mario);
UINT32 screen_update_mario(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
DECLARE_WRITE8_MEMBER(mario_sh_sound_w);
diff --git a/src/mame/includes/markham.h b/src/mame/includes/markham.h
index 2245ab1f628..da840971d90 100644
--- a/src/mame/includes/markham.h
+++ b/src/mame/includes/markham.h
@@ -27,7 +27,7 @@ public:
DECLARE_WRITE8_MEMBER(markham_flipscreen_w);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(markham);
UINT32 screen_update_markham(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/matmania.h b/src/mame/includes/matmania.h
index 5dbaa9a111f..5bbce01e3f7 100644
--- a/src/mame/includes/matmania.h
+++ b/src/mame/includes/matmania.h
@@ -61,7 +61,7 @@ public:
DECLARE_WRITE8_MEMBER(maniach_sh_command_w);
DECLARE_WRITE8_MEMBER(matmania_paletteram_w);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(matmania);
DECLARE_MACHINE_START(matmania);
DECLARE_MACHINE_START(maniach);
DECLARE_MACHINE_RESET(maniach);
diff --git a/src/mame/includes/meadows.h b/src/mame/includes/meadows.h
index 5ed67023cfd..2f8b5b6c5ea 100644
--- a/src/mame/includes/meadows.h
+++ b/src/mame/includes/meadows.h
@@ -53,7 +53,6 @@ public:
DECLARE_DRIVER_INIT(gypsyjug);
TILE_GET_INFO_MEMBER(get_tile_info);
virtual void video_start();
- virtual void palette_init();
UINT32 screen_update_meadows(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(meadows_interrupt);
INTERRUPT_GEN_MEMBER(minferno_interrupt);
diff --git a/src/mame/includes/megazone.h b/src/mame/includes/megazone.h
index 78ecd25cbbb..45fc97c957f 100644
--- a/src/mame/includes/megazone.h
+++ b/src/mame/includes/megazone.h
@@ -55,7 +55,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(megazone);
UINT32 screen_update_megazone(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
};
diff --git a/src/mame/includes/mermaid.h b/src/mame/includes/mermaid.h
index b925d7961c3..d0e3a6c6c4a 100644
--- a/src/mame/includes/mermaid.h
+++ b/src/mame/includes/mermaid.h
@@ -86,7 +86,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(mermaid);
DECLARE_PALETTE_INIT(rougien);
UINT32 screen_update_mermaid(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof_mermaid(screen_device &screen, bool state);
diff --git a/src/mame/includes/mikie.h b/src/mame/includes/mikie.h
index 219de52683a..05fa6e167c9 100644
--- a/src/mame/includes/mikie.h
+++ b/src/mame/includes/mikie.h
@@ -46,7 +46,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(mikie);
UINT32 screen_update_mikie(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/mitchell.h b/src/mame/includes/mitchell.h
index ea2aca6110f..e9f0af4016e 100644
--- a/src/mame/includes/mitchell.h
+++ b/src/mame/includes/mitchell.h
@@ -39,10 +39,11 @@ public:
/* video-related */
tilemap_t *m_bg_tilemap;
- UINT8 *m_objram; /* Sprite RAM */
+ dynamic_array<UINT8> m_objram; /* Sprite RAM */
int m_flipscreen;
int m_video_bank;
int m_paletteram_bank;
+ dynamic_array<UINT8> m_paletteram;
/* sound-related */
int m_sample_buffer;
@@ -82,8 +83,6 @@ public:
DECLARE_WRITE8_MEMBER(mstworld_gfxctrl_w);
DECLARE_WRITE8_MEMBER(pang_paletteram_w);
DECLARE_READ8_MEMBER(pang_paletteram_r);
- DECLARE_WRITE8_MEMBER(mgakuen_paletteram_w);
- DECLARE_READ8_MEMBER(mgakuen_paletteram_r);
DECLARE_WRITE8_MEMBER(eeprom_cs_w);
DECLARE_WRITE8_MEMBER(eeprom_clock_w);
DECLARE_WRITE8_MEMBER(eeprom_serial_w);
diff --git a/src/mame/includes/model1.h b/src/mame/includes/model1.h
index a70fb720de5..bbe9715d6a7 100644
--- a/src/mame/includes/model1.h
+++ b/src/mame/includes/model1.h
@@ -20,7 +20,8 @@ public:
m_mr(*this, "mr"),
m_display_list0(*this, "display_list0"),
m_display_list1(*this, "display_list1"),
- m_color_xlat(*this, "color_xlat"){ }
+ m_color_xlat(*this, "color_xlat"),
+ m_paletteram16(*this, "palette") { }
required_device<v60_device> m_maincpu; // V60
required_device<segam1audio_device> m_m1audio; // Model 1 standard sound board
@@ -95,7 +96,7 @@ public:
UINT16 *m_glist;
int m_render_done;
UINT16 *m_tgp_ram;
- UINT16 *m_paletteram16;
+ optional_shared_ptr<UINT16> m_paletteram16;
UINT32 *m_poly_rom;
UINT32 *m_poly_ram;
UINT16 m_lamp_state;
diff --git a/src/mame/includes/mouser.h b/src/mame/includes/mouser.h
index 9d2ed245fa8..9a7afbcad33 100644
--- a/src/mame/includes/mouser.h
+++ b/src/mame/includes/mouser.h
@@ -39,7 +39,7 @@ public:
DECLARE_DRIVER_INIT(mouser);
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(mouser);
UINT32 screen_update_mouser(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(mouser_nmi_interrupt);
INTERRUPT_GEN_MEMBER(mouser_sound_nmi_assert);
diff --git a/src/mame/includes/mrdo.h b/src/mame/includes/mrdo.h
index b3eed659287..a0d5d464b78 100644
--- a/src/mame/includes/mrdo.h
+++ b/src/mame/includes/mrdo.h
@@ -33,7 +33,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(mrdo);
UINT32 screen_update_mrdo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites( bitmap_ind16 &bitmap,const rectangle &cliprect );
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/mrjong.h b/src/mame/includes/mrjong.h
index 3c7bcae5771..83219d3f9ae 100644
--- a/src/mame/includes/mrjong.h
+++ b/src/mame/includes/mrjong.h
@@ -26,7 +26,7 @@ public:
DECLARE_WRITE8_MEMBER(mrjong_flipscreen_w);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(mrjong);
UINT32 screen_update_mrjong(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/munchmo.h b/src/mame/includes/munchmo.h
index 1877b3b1d10..b9a508c0728 100644
--- a/src/mame/includes/munchmo.h
+++ b/src/mame/includes/munchmo.h
@@ -50,7 +50,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(munchmo);
UINT32 screen_update_mnchmobl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(mnchmobl_vblank_irq);
INTERRUPT_GEN_MEMBER(mnchmobl_sound_irq);
diff --git a/src/mame/includes/mustache.h b/src/mame/includes/mustache.h
index 33ae140db9f..beccb063048 100644
--- a/src/mame/includes/mustache.h
+++ b/src/mame/includes/mustache.h
@@ -26,7 +26,7 @@ public:
DECLARE_DRIVER_INIT(mustache);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(mustache);
UINT32 screen_update_mustache(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(mustache_scanline);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
diff --git a/src/mame/includes/namcoic.h b/src/mame/includes/namcoic.h
index 6f16d0f7fa3..35fa9314d53 100644
--- a/src/mame/includes/namcoic.h
+++ b/src/mame/includes/namcoic.h
@@ -101,6 +101,9 @@ C102 - Controls CPU access to ROZ Memory Area.
#define MCFG_NAMCO_C45_ROAD_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, NAMCO_C45_ROAD, 0)
+#define MCFG_NAMCO_C45_ROAD_PALETTE(_palette_tag) \
+ namco_c45_road_device::static_set_palette_tag(*device, "^" _palette_tag);
+
//**************************************************************************
// TYPE DEFINITIONS
@@ -124,6 +127,8 @@ public:
// construction/destruction
namco_c45_road_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ static void static_set_palette_tag(device_t &device, const char *tag);
+
// read/write handlers
DECLARE_READ16_MEMBER( read );
DECLARE_WRITE16_MEMBER( write );
@@ -150,6 +155,7 @@ protected:
static const gfx_layout s_tile_layout;
required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
};
diff --git a/src/mame/includes/namcos86.h b/src/mame/includes/namcos86.h
index 48d0539734b..ba955f7029c 100644
--- a/src/mame/includes/namcos86.h
+++ b/src/mame/includes/namcos86.h
@@ -61,7 +61,7 @@ public:
TILE_GET_INFO_MEMBER(get_tile_info3);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(namcos86);
UINT32 screen_update_namcos86(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof_namcos86(screen_device &screen, bool state);
diff --git a/src/mame/includes/naughtyb.h b/src/mame/includes/naughtyb.h
index f34e80fab9a..6a73350db04 100644
--- a/src/mame/includes/naughtyb.h
+++ b/src/mame/includes/naughtyb.h
@@ -41,7 +41,7 @@ public:
DECLARE_DRIVER_INIT(trvmstr);
DECLARE_DRIVER_INIT(popflame);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(naughtyb);
UINT32 screen_update_naughtyb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
diff --git a/src/mame/includes/nbmj8891.h b/src/mame/includes/nbmj8891.h
index 84fa16cce34..74de22dd875 100644
--- a/src/mame/includes/nbmj8891.h
+++ b/src/mame/includes/nbmj8891.h
@@ -35,7 +35,7 @@ public:
bitmap_ind16 m_tmpbitmap1;
UINT8 *m_videoram0;
UINT8 *m_videoram1;
- UINT8 *m_palette;
+ UINT8 *m_palette_ptr;
UINT8 *m_clut;
int m_param_old[0x10];
int m_param_cnt;
diff --git a/src/mame/includes/nbmj8900.h b/src/mame/includes/nbmj8900.h
index 3ab9a43683b..485eaecb2ca 100644
--- a/src/mame/includes/nbmj8900.h
+++ b/src/mame/includes/nbmj8900.h
@@ -37,7 +37,7 @@ public:
bitmap_ind16 m_tmpbitmap1;
UINT8 *m_videoram0;
UINT8 *m_videoram1;
- UINT8 *m_palette;
+ UINT8 *m_palette_ptr;
UINT8 *m_clut;
int m_flipscreen_old;
DECLARE_READ8_MEMBER(nbmj8900_palette_type1_r);
diff --git a/src/mame/includes/nbmj9195.h b/src/mame/includes/nbmj9195.h
index 6f1e7321a6d..df1886c9686 100644
--- a/src/mame/includes/nbmj9195.h
+++ b/src/mame/includes/nbmj9195.h
@@ -52,7 +52,7 @@ public:
bitmap_ind16 m_tmpbitmap[VRAM_MAX];
UINT16 *m_videoram[VRAM_MAX];
UINT16 *m_videoworkram[VRAM_MAX];
- UINT8 *m_palette;
+ UINT8 *m_palette_ptr;
UINT8 *m_nb22090_palette;
UINT8 *m_clut[VRAM_MAX];
int m_flipscreen_old[VRAM_MAX];
diff --git a/src/mame/includes/niyanpai.h b/src/mame/includes/niyanpai.h
index e68804fdfb1..64f845363da 100644
--- a/src/mame/includes/niyanpai.h
+++ b/src/mame/includes/niyanpai.h
@@ -41,7 +41,7 @@ public:
bitmap_ind16 m_tmpbitmap[VRAM_MAX];
UINT16 *m_videoram[VRAM_MAX];
UINT16 *m_videoworkram[VRAM_MAX];
- UINT16 *m_palette;
+ UINT16 *m_palette_ptr;
UINT8 *m_clut[VRAM_MAX];
int m_flipscreen_old[VRAM_MAX];
DECLARE_READ8_MEMBER(niyanpai_sound_r);
diff --git a/src/mame/includes/norautp.h b/src/mame/includes/norautp.h
index 81a9065812c..af904ea713e 100644
--- a/src/mame/includes/norautp.h
+++ b/src/mame/includes/norautp.h
@@ -29,7 +29,7 @@ public:
DECLARE_DRIVER_INIT(enc);
DECLARE_DRIVER_INIT(deb);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(norautp);
UINT32 screen_update_norautp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<discrete_device> m_discrete;
diff --git a/src/mame/includes/pacland.h b/src/mame/includes/pacland.h
index 1aa49a7c847..f335823ffc1 100644
--- a/src/mame/includes/pacland.h
+++ b/src/mame/includes/pacland.h
@@ -46,7 +46,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(pacland);
UINT32 screen_update_pacland(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(main_vblank_irq);
INTERRUPT_GEN_MEMBER(mcu_vblank_irq);
diff --git a/src/mame/includes/pandoras.h b/src/mame/includes/pandoras.h
index ca1acec1db3..e814b6ca7c0 100644
--- a/src/mame/includes/pandoras.h
+++ b/src/mame/includes/pandoras.h
@@ -56,7 +56,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(pandoras);
UINT32 screen_update_pandoras(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(pandoras_master_interrupt);
INTERRUPT_GEN_MEMBER(pandoras_slave_interrupt);
diff --git a/src/mame/includes/pastelg.h b/src/mame/includes/pastelg.h
index 22c7710d95c..b88857398ea 100644
--- a/src/mame/includes/pastelg.h
+++ b/src/mame/includes/pastelg.h
@@ -45,7 +45,7 @@ public:
DECLARE_CUSTOM_INPUT_MEMBER(nb1413m3_busyflag_r);
DECLARE_CUSTOM_INPUT_MEMBER(nb1413m3_hackbusyflag_r);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(pastelg);
UINT32 screen_update_pastelg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
int pastelg_blitter_src_addr_r(address_space &space);
void pastelg_vramflip();
diff --git a/src/mame/includes/pcktgal.h b/src/mame/includes/pcktgal.h
index 29bd369c0f3..b1b2a2e5341 100644
--- a/src/mame/includes/pcktgal.h
+++ b/src/mame/includes/pcktgal.h
@@ -28,7 +28,7 @@ public:
DECLARE_DRIVER_INIT(pcktgal);
int m_msm5205next;
int m_toggle;
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(pcktgal);
virtual void machine_start();
UINT32 screen_update_pcktgal(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_pcktgalb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/pingpong.h b/src/mame/includes/pingpong.h
index bb5d1e6fc81..2f876a56cfb 100644
--- a/src/mame/includes/pingpong.h
+++ b/src/mame/includes/pingpong.h
@@ -27,7 +27,7 @@ public:
DECLARE_DRIVER_INIT(merlinmm);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(pingpong);
UINT32 screen_update_pingpong(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(pingpong_interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(merlinmm_interrupt);
diff --git a/src/mame/includes/pitnrun.h b/src/mame/includes/pitnrun.h
index 63b28847783..f940c98a0db 100644
--- a/src/mame/includes/pitnrun.h
+++ b/src/mame/includes/pitnrun.h
@@ -53,7 +53,7 @@ public:
TILE_GET_INFO_MEMBER(get_tile_info2);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(pitnrun);
UINT32 screen_update_pitnrun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(pitnrun_nmi_source);
TIMER_CALLBACK_MEMBER(pitnrun_mcu_real_data_r);
diff --git a/src/mame/includes/pk8000.h b/src/mame/includes/pk8000.h
index 47037ad6e5d..90ff34f3d96 100644
--- a/src/mame/includes/pk8000.h
+++ b/src/mame/includes/pk8000.h
@@ -21,7 +21,7 @@ public:
DECLARE_WRITE8_MEMBER(pk8000_84_porta_w);
DECLARE_WRITE8_MEMBER(pk8000_84_portc_w);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(pk8000);
UINT32 pk8000_video_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 *videomem);
protected:
diff --git a/src/mame/includes/playch10.h b/src/mame/includes/playch10.h
index d3fb8f845a8..455b6f5672d 100644
--- a/src/mame/includes/playch10.h
+++ b/src/mame/includes/playch10.h
@@ -129,7 +129,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(playch10);
DECLARE_MACHINE_START(playch10_hboard);
DECLARE_VIDEO_START(playch10_hboard);
UINT32 screen_update_playch10_top(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/polyplay.h b/src/mame/includes/polyplay.h
index 48f39fff00d..9a203e3bdf5 100644
--- a/src/mame/includes/polyplay.h
+++ b/src/mame/includes/polyplay.h
@@ -34,7 +34,7 @@ public:
DECLARE_WRITE8_MEMBER(polyplay_characterram_w);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(polyplay);
UINT32 screen_update_polyplay(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(periodic_interrupt);
INTERRUPT_GEN_MEMBER(coin_interrupt);
diff --git a/src/mame/includes/poolshrk.h b/src/mame/includes/poolshrk.h
index 46cf094e388..eecde5e605b 100644
--- a/src/mame/includes/poolshrk.h
+++ b/src/mame/includes/poolshrk.h
@@ -34,7 +34,7 @@ public:
DECLARE_DRIVER_INIT(poolshrk);
TILE_GET_INFO_MEMBER(get_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(poolshrk);
UINT32 screen_update_poolshrk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE8_MEMBER(poolshrk_scratch_sound_w);
DECLARE_WRITE8_MEMBER(poolshrk_score_sound_w);
diff --git a/src/mame/includes/pooyan.h b/src/mame/includes/pooyan.h
index ae03eac4843..ea9c523f365 100644
--- a/src/mame/includes/pooyan.h
+++ b/src/mame/includes/pooyan.h
@@ -35,7 +35,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(pooyan);
UINT32 screen_update_pooyan(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(pooyan_interrupt);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
diff --git a/src/mame/includes/popeye.h b/src/mame/includes/popeye.h
index d85a91b3c71..7c09e568bff 100644
--- a/src/mame/includes/popeye.h
+++ b/src/mame/includes/popeye.h
@@ -39,7 +39,7 @@ public:
DECLARE_DRIVER_INIT(popeye);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(popeye);
DECLARE_VIDEO_START(popeye);
DECLARE_PALETTE_INIT(popeyebl);
UINT32 screen_update_popeye(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/popper.h b/src/mame/includes/popper.h
index 9a1f776681a..e585c540326 100644
--- a/src/mame/includes/popper.h
+++ b/src/mame/includes/popper.h
@@ -56,7 +56,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(popper);
UINT32 screen_update_popper(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
void draw_sprites( bitmap_ind16 &bitmap,const rectangle &cliprect );
diff --git a/src/mame/includes/portrait.h b/src/mame/includes/portrait.h
index c0b2fb7b4f2..a0395ae367e 100644
--- a/src/mame/includes/portrait.h
+++ b/src/mame/includes/portrait.h
@@ -27,7 +27,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(portrait);
UINT32 screen_update_portrait(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
inline void get_tile_info( tile_data &tileinfo, int tile_index, const UINT8 *source );
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/pushman.h b/src/mame/includes/pushman.h
index cdd13b084d5..a9332cd0d84 100644
--- a/src/mame/includes/pushman.h
+++ b/src/mame/includes/pushman.h
@@ -19,7 +19,6 @@ public:
/* memory pointers */
required_shared_ptr<UINT16> m_spriteram;
required_shared_ptr<UINT16> m_videoram;
-// UINT16 * m_paletteram; // currently this uses generic palette handling
/* video-related */
tilemap_t *m_bg_tilemap;
diff --git a/src/mame/includes/retofinv.h b/src/mame/includes/retofinv.h
index 14cf706d5da..2c00ad5a7a0 100644
--- a/src/mame/includes/retofinv.h
+++ b/src/mame/includes/retofinv.h
@@ -65,7 +65,7 @@ public:
TILE_GET_INFO_MEMBER(bg_get_tile_info);
TILE_GET_INFO_MEMBER(fg_get_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(retofinv);
UINT32 screen_update_retofinv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(main_vblank_irq);
INTERRUPT_GEN_MEMBER(sub_vblank_irq);
diff --git a/src/mame/includes/rockrage.h b/src/mame/includes/rockrage.h
index c69f69c1c3c..be910eb56b5 100644
--- a/src/mame/includes/rockrage.h
+++ b/src/mame/includes/rockrage.h
@@ -43,7 +43,7 @@ public:
DECLARE_WRITE8_MEMBER(rockrage_speech_w);
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(rockrage);
UINT32 screen_update_rockrage(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(rockrage_interrupt);
};
diff --git a/src/mame/includes/rocnrope.h b/src/mame/includes/rocnrope.h
index 1350d33bc6f..c1b4e870137 100644
--- a/src/mame/includes/rocnrope.h
+++ b/src/mame/includes/rocnrope.h
@@ -29,7 +29,7 @@ public:
DECLARE_DRIVER_INIT(rocnropk);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(rocnrope);
UINT32 screen_update_rocnrope(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
diff --git a/src/mame/includes/rollrace.h b/src/mame/includes/rollrace.h
index 67d4fb2e68d..6acea3a0738 100644
--- a/src/mame/includes/rollrace.h
+++ b/src/mame/includes/rollrace.h
@@ -35,7 +35,7 @@ public:
DECLARE_WRITE8_MEMBER(rollrace_backgroundcolor_w);
DECLARE_WRITE8_MEMBER(rollrace_flipy_w);
DECLARE_WRITE8_MEMBER(rollrace_flipx_w);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(rollrace);
UINT32 screen_update_rollrace(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
INTERRUPT_GEN_MEMBER(sound_timer_irq);
diff --git a/src/mame/includes/sbasketb.h b/src/mame/includes/sbasketb.h
index 66057d4d7f0..5aa457ae242 100644
--- a/src/mame/includes/sbasketb.h
+++ b/src/mame/includes/sbasketb.h
@@ -51,7 +51,7 @@ public:
DECLARE_WRITE8_MEMBER( konami_SN76496_w ) { m_sn->write(space, offset, m_SN76496_latch); };
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(sbasketb);
UINT32 screen_update_sbasketb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
diff --git a/src/mame/includes/sbugger.h b/src/mame/includes/sbugger.h
index 8d7fbcc65d6..9271d423bac 100644
--- a/src/mame/includes/sbugger.h
+++ b/src/mame/includes/sbugger.h
@@ -17,7 +17,7 @@ public:
DECLARE_WRITE_LINE_MEMBER(sbugger_interrupt);
TILE_GET_INFO_MEMBER(get_sbugger_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(sbugger);
UINT32 screen_update_sbugger(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
diff --git a/src/mame/includes/scotrsht.h b/src/mame/includes/scotrsht.h
index 14c7fc834b0..fb936f03e89 100644
--- a/src/mame/includes/scotrsht.h
+++ b/src/mame/includes/scotrsht.h
@@ -27,7 +27,7 @@ public:
DECLARE_WRITE8_MEMBER(scotrsht_palettebank_w);
TILE_GET_INFO_MEMBER(scotrsht_get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(scotrsht);
UINT32 screen_update_scotrsht(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(scotrsht_interrupt);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
diff --git a/src/mame/includes/seicross.h b/src/mame/includes/seicross.h
index 357797e95ff..986240b6d70 100644
--- a/src/mame/includes/seicross.h
+++ b/src/mame/includes/seicross.h
@@ -31,7 +31,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(seicross);
UINT32 screen_update_seicross(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
diff --git a/src/mame/includes/shaolins.h b/src/mame/includes/shaolins.h
index e99a6790d6c..97a7d2b9a10 100644
--- a/src/mame/includes/shaolins.h
+++ b/src/mame/includes/shaolins.h
@@ -26,7 +26,7 @@ public:
DECLARE_WRITE8_MEMBER(shaolins_nmi_w);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(shaolins);
UINT32 screen_update_shaolins(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(shaolins_interrupt);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/shootout.h b/src/mame/includes/shootout.h
index d153789f644..25bc9259189 100644
--- a/src/mame/includes/shootout.h
+++ b/src/mame/includes/shootout.h
@@ -27,7 +27,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(shootout);
UINT32 screen_update_shootout(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_shootouj(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int bank_bits );
diff --git a/src/mame/includes/sidepckt.h b/src/mame/includes/sidepckt.h
index 28d054f2846..6b6bafeb7f6 100644
--- a/src/mame/includes/sidepckt.h
+++ b/src/mame/includes/sidepckt.h
@@ -44,7 +44,7 @@ public:
TILE_GET_INFO_MEMBER(get_tile_info);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(sidepckt);
UINT32 screen_update_sidepckt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
};
diff --git a/src/mame/includes/skydiver.h b/src/mame/includes/skydiver.h
index d96f98ff871..64543f196d5 100644
--- a/src/mame/includes/skydiver.h
+++ b/src/mame/includes/skydiver.h
@@ -52,7 +52,7 @@ public:
TILE_GET_INFO_MEMBER(get_tile_info);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(skydiver);
UINT32 screen_update_skydiver(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(skydiver_interrupt);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/skyfox.h b/src/mame/includes/skyfox.h
index 52c87631c1e..e3bcc86b39b 100644
--- a/src/mame/includes/skyfox.h
+++ b/src/mame/includes/skyfox.h
@@ -34,7 +34,7 @@ public:
DECLARE_DRIVER_INIT(skyfox);
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(skyfox);
UINT32 screen_update_skyfox(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(skyfox_interrupt);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
diff --git a/src/mame/includes/skykid.h b/src/mame/includes/skykid.h
index 2bda7422a56..e36e9f68838 100644
--- a/src/mame/includes/skykid.h
+++ b/src/mame/includes/skykid.h
@@ -49,7 +49,7 @@ public:
TILE_GET_INFO_MEMBER(bg_get_tile_info);
virtual void machine_start();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(skykid);
UINT32 screen_update_skykid(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(main_vblank_irq);
INTERRUPT_GEN_MEMBER(mcu_vblank_irq);
diff --git a/src/mame/includes/skyraid.h b/src/mame/includes/skyraid.h
index c047700da56..3810ade3615 100644
--- a/src/mame/includes/skyraid.h
+++ b/src/mame/includes/skyraid.h
@@ -27,7 +27,7 @@ public:
DECLARE_WRITE8_MEMBER(skyraid_offset_w);
DECLARE_WRITE8_MEMBER(skyraid_scroll_w);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(skyraid);
UINT32 screen_update_skyraid(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE8_MEMBER(skyraid_sound_w);
void draw_text(bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/snk6502.h b/src/mame/includes/snk6502.h
index a2b0341ede8..44a7e1cf462 100644
--- a/src/mame/includes/snk6502.h
+++ b/src/mame/includes/snk6502.h
@@ -39,7 +39,7 @@ public:
tilemap_t *m_bg_tilemap;
tilemap_t *m_fg_tilemap;
- rgb_t m_palette[64];
+ rgb_t m_palette_val[64];
UINT8 m_irq_mask;
DECLARE_WRITE8_MEMBER(snk6502_videoram_w);
diff --git a/src/mame/includes/snookr10.h b/src/mame/includes/snookr10.h
index d8c1f9a04a1..fd0781d6407 100644
--- a/src/mame/includes/snookr10.h
+++ b/src/mame/includes/snookr10.h
@@ -29,7 +29,7 @@ public:
TILE_GET_INFO_MEMBER(apple10_get_bg_tile_info);
TILE_GET_INFO_MEMBER(crystalc_get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(snookr10);
DECLARE_VIDEO_START(apple10);
DECLARE_VIDEO_START(crystalc);
DECLARE_PALETTE_INIT(apple10);
diff --git a/src/mame/includes/sonson.h b/src/mame/includes/sonson.h
index c36e5a37d92..c9a21411dbe 100644
--- a/src/mame/includes/sonson.h
+++ b/src/mame/includes/sonson.h
@@ -40,7 +40,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(sonson);
UINT32 screen_update_sonson(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/spcforce.h b/src/mame/includes/spcforce.h
index 358075a05ba..e2d4430b7d6 100644
--- a/src/mame/includes/spcforce.h
+++ b/src/mame/includes/spcforce.h
@@ -41,7 +41,7 @@ public:
DECLARE_WRITE8_MEMBER(spcforce_soundtrigger_w);
DECLARE_WRITE8_MEMBER(irq_mask_w);
DECLARE_WRITE8_MEMBER(spcforce_flip_screen_w);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(spcforce);
UINT32 screen_update_spcforce(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/spdodgeb.h b/src/mame/includes/spdodgeb.h
index 6e3a1ee8511..c33b29f424d 100644
--- a/src/mame/includes/spdodgeb.h
+++ b/src/mame/includes/spdodgeb.h
@@ -51,7 +51,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(spdodgeb);
UINT32 screen_update_spdodgeb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(spdodgeb_interrupt);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
diff --git a/src/mame/includes/speedatk.h b/src/mame/includes/speedatk.h
index 6d7868ccc23..c004581901a 100644
--- a/src/mame/includes/speedatk.h
+++ b/src/mame/includes/speedatk.h
@@ -27,7 +27,7 @@ public:
DECLARE_WRITE8_MEMBER(speedatk_6845_w);
DECLARE_WRITE8_MEMBER(speedatk_output_w);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(speedatk);
UINT32 screen_update_speedatk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT8 iox_key_matrix_calc(UINT8 p_side);
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/sprcros2.h b/src/mame/includes/sprcros2.h
index 222f94e60f9..65b73f7ab6b 100644
--- a/src/mame/includes/sprcros2.h
+++ b/src/mame/includes/sprcros2.h
@@ -32,7 +32,7 @@ public:
TILE_GET_INFO_MEMBER(get_sprcros2_fgtile_info);
virtual void machine_start();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(sprcros2);
UINT32 screen_update_sprcros2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(sprcros2_s_interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(sprcros2_m_interrupt);
diff --git a/src/mame/includes/sprint2.h b/src/mame/includes/sprint2.h
index e34ee20baa2..82a11214c18 100644
--- a/src/mame/includes/sprint2.h
+++ b/src/mame/includes/sprint2.h
@@ -66,11 +66,11 @@ public:
DECLARE_DRIVER_INIT(dominos);
TILE_GET_INFO_MEMBER(get_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(sprint2);
UINT32 screen_update_sprint2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof_sprint2(screen_device &screen, bool state);
INTERRUPT_GEN_MEMBER(sprint2);
- UINT8 collision_check(colortable_t *colortable, rectangle& rect);
+ UINT8 collision_check(rectangle& rect);
inline int get_sprite_code(UINT8 *video_ram, int n);
inline int get_sprite_x(UINT8 *video_ram, int n);
inline int get_sprite_y(UINT8 *video_ram, int n);
diff --git a/src/mame/includes/sprint4.h b/src/mame/includes/sprint4.h
index dc6ba3768f7..c5a92031656 100644
--- a/src/mame/includes/sprint4.h
+++ b/src/mame/includes/sprint4.h
@@ -45,7 +45,7 @@ public:
TILE_GET_INFO_MEMBER(sprint4_tile_info);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(sprint4);
UINT32 screen_update_sprint4(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof_sprint4(screen_device &screen, bool state);
TIMER_CALLBACK_MEMBER(nmi_callback);
diff --git a/src/mame/includes/sprint8.h b/src/mame/includes/sprint8.h
index e3555aa9a5b..1210289d039 100644
--- a/src/mame/includes/sprint8.h
+++ b/src/mame/includes/sprint8.h
@@ -38,7 +38,7 @@ public:
TILE_GET_INFO_MEMBER(get_tile_info2);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(sprint8);
UINT32 screen_update_sprint8(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof_sprint8(screen_device &screen, bool state);
TIMER_CALLBACK_MEMBER(sprint8_collision_callback);
@@ -47,7 +47,7 @@ public:
DECLARE_WRITE8_MEMBER(sprint8_screech_w);
DECLARE_WRITE8_MEMBER(sprint8_attract_w);
DECLARE_WRITE8_MEMBER(sprint8_motor_w);
- void set_pens(sprint8_state *state, colortable_t *colortable);
+ void set_pens();
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
void sprint8_set_collision(int n);
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/ssozumo.h b/src/mame/includes/ssozumo.h
index a262a55185c..a9949d6267f 100644
--- a/src/mame/includes/ssozumo.h
+++ b/src/mame/includes/ssozumo.h
@@ -37,7 +37,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(ssozumo);
UINT32 screen_update_ssozumo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(sound_timer_irq);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/sspeedr.h b/src/mame/includes/sspeedr.h
index 2e0d86bffde..74a71466b7b 100644
--- a/src/mame/includes/sspeedr.h
+++ b/src/mame/includes/sspeedr.h
@@ -36,7 +36,7 @@ public:
DECLARE_WRITE8_MEMBER(sspeedr_track_vert_w);
DECLARE_WRITE8_MEMBER(sspeedr_track_ice_w);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(sspeedr);
UINT32 screen_update_sspeedr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof_sspeedr(screen_device &screen, bool state);
void draw_track(bitmap_ind16 &bitmap);
diff --git a/src/mame/includes/ssrj.h b/src/mame/includes/ssrj.h
index 8db50973d04..c931f8aca76 100644
--- a/src/mame/includes/ssrj.h
+++ b/src/mame/includes/ssrj.h
@@ -30,7 +30,7 @@ public:
TILE_GET_INFO_MEMBER(get_tile_info4);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(ssrj);
UINT32 screen_update_ssrj(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof_ssrj(screen_device &screen, bool state);
void draw_objects(bitmap_ind16 &bitmap, const rectangle &cliprect );
diff --git a/src/mame/includes/starshp1.h b/src/mame/includes/starshp1.h
index 9d896572e3f..b89bd6872f6 100644
--- a/src/mame/includes/starshp1.h
+++ b/src/mame/includes/starshp1.h
@@ -80,11 +80,11 @@ public:
DECLARE_WRITE8_MEMBER(starshp1_analog_out_w);
TILE_GET_INFO_MEMBER(get_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(starshp1);
UINT32 screen_update_starshp1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof_starshp1(screen_device &screen, bool state);
INTERRUPT_GEN_MEMBER(starshp1_interrupt);
- void set_pens(colortable_t *colortable);
+ void set_pens();
void draw_starfield(bitmap_ind16 &bitmap);
int get_sprite_hpos(int i);
int get_sprite_vpos(int i);
diff --git a/src/mame/includes/stfight.h b/src/mame/includes/stfight.h
index 8459cfdd9ce..82b21045aa9 100644
--- a/src/mame/includes/stfight.h
+++ b/src/mame/includes/stfight.h
@@ -78,7 +78,7 @@ public:
DECLARE_VIDEO_START(stfight);
DECLARE_VIDEO_START(cshooter);
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(stfight);
UINT32 screen_update_stfight(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_cshooter(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(stfight_vb_interrupt);
diff --git a/src/mame/includes/strnskil.h b/src/mame/includes/strnskil.h
index 33383380242..73e74e47777 100644
--- a/src/mame/includes/strnskil.h
+++ b/src/mame/includes/strnskil.h
@@ -31,7 +31,7 @@ public:
DECLARE_DRIVER_INIT(pettanp);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(strnskil);
UINT32 screen_update_strnskil(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(strnskil_irq);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/subs.h b/src/mame/includes/subs.h
index 9d41d2e564c..86ba7d62bf5 100644
--- a/src/mame/includes/subs.h
+++ b/src/mame/includes/subs.h
@@ -45,7 +45,7 @@ public:
DECLARE_WRITE8_MEMBER(subs_invert1_w);
DECLARE_WRITE8_MEMBER(subs_invert2_w);
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(subs);
UINT32 screen_update_subs_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_subs_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(subs_interrupt);
diff --git a/src/mame/includes/suprloco.h b/src/mame/includes/suprloco.h
index 022a2a17c76..0d9963dbf92 100644
--- a/src/mame/includes/suprloco.h
+++ b/src/mame/includes/suprloco.h
@@ -24,7 +24,7 @@ public:
DECLARE_DRIVER_INIT(suprloco);
TILE_GET_INFO_MEMBER(get_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(suprloco);
UINT32 screen_update_suprloco(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
inline void draw_pixel(bitmap_ind16 &bitmap,const rectangle &cliprect,int x,int y,int color,int flip);
void draw_sprite(bitmap_ind16 &bitmap,const rectangle &cliprect,int spr_number);
diff --git a/src/mame/includes/suprridr.h b/src/mame/includes/suprridr.h
index 47faff76e95..75a98a6f975 100644
--- a/src/mame/includes/suprridr.h
+++ b/src/mame/includes/suprridr.h
@@ -44,7 +44,7 @@ public:
TILE_GET_INFO_MEMBER(get_tile_info);
TILE_GET_INFO_MEMBER(get_tile_info2);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(suprridr);
UINT32 screen_update_suprridr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(main_nmi_gen);
TIMER_CALLBACK_MEMBER(delayed_sound_w);
diff --git a/src/mame/includes/tagteam.h b/src/mame/includes/tagteam.h
index f6d5ac91bca..7fa14433159 100644
--- a/src/mame/includes/tagteam.h
+++ b/src/mame/includes/tagteam.h
@@ -29,7 +29,7 @@ public:
DECLARE_INPUT_CHANGED_MEMBER(coin_inserted);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(tagteam);
UINT32 screen_update_tagteam(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(sound_timer_irq);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/tank8.h b/src/mame/includes/tank8.h
index b4be2ae35f6..e2bb6b03e8f 100644
--- a/src/mame/includes/tank8.h
+++ b/src/mame/includes/tank8.h
@@ -66,10 +66,10 @@ public:
TILE_GET_INFO_MEMBER(tank8_get_tile_info);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(tank8);
UINT32 screen_update_tank8(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof_tank8(screen_device &screen, bool state);
- void set_pens(colortable_t *colortable);
+ void set_pens();
inline int get_x_pos(int n);
inline int get_y_pos(int n);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/tankbatt.h b/src/mame/includes/tankbatt.h
index e81843cd7b4..fd018d75aa0 100644
--- a/src/mame/includes/tankbatt.h
+++ b/src/mame/includes/tankbatt.h
@@ -32,7 +32,7 @@ public:
DECLARE_INPUT_CHANGED_MEMBER(coin_inserted);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(tankbatt);
UINT32 screen_update_tankbatt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(tankbatt_interrupt);
void draw_bullets(bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/tankbust.h b/src/mame/includes/tankbust.h
index fd1afb23fa2..e8d6190659b 100644
--- a/src/mame/includes/tankbust.h
+++ b/src/mame/includes/tankbust.h
@@ -44,7 +44,7 @@ public:
TILE_GET_INFO_MEMBER(get_txt_tile_info);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(tankbust);
UINT32 screen_update_tankbust(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
TIMER_CALLBACK_MEMBER(soundlatch_callback);
diff --git a/src/mame/includes/taxidriv.h b/src/mame/includes/taxidriv.h
index 9295d4f284c..e1022e34048 100644
--- a/src/mame/includes/taxidriv.h
+++ b/src/mame/includes/taxidriv.h
@@ -53,7 +53,7 @@ public:
DECLARE_READ8_MEMBER(p8910_1a_r);
DECLARE_WRITE8_MEMBER(p8910_0b_w);
DECLARE_WRITE8_MEMBER(taxidriv_spritectrl_w);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(taxidriv);
UINT32 screen_update_taxidriv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
diff --git a/src/mame/includes/tceptor.h b/src/mame/includes/tceptor.h
index 29b5b7edd6f..625b169e756 100644
--- a/src/mame/includes/tceptor.h
+++ b/src/mame/includes/tceptor.h
@@ -72,7 +72,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(tceptor);
UINT32 screen_update_tceptor_2d(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_tceptor_3d_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_tceptor_3d_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/terracre.h b/src/mame/includes/terracre.h
index e6b2c684394..9d95f9b158c 100644
--- a/src/mame/includes/terracre.h
+++ b/src/mame/includes/terracre.h
@@ -35,7 +35,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(terracre);
DECLARE_MACHINE_START(amazon);
UINT32 screen_update_amazon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
diff --git a/src/mame/includes/thedeep.h b/src/mame/includes/thedeep.h
index 3e31c896af5..305b2d9020b 100644
--- a/src/mame/includes/thedeep.h
+++ b/src/mame/includes/thedeep.h
@@ -51,7 +51,7 @@ public:
TILE_GET_INFO_MEMBER(get_tile_info_1);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(thedeep);
UINT32 screen_update_thedeep(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(thedeep_mcu_irq);
TIMER_DEVICE_CALLBACK_MEMBER(thedeep_interrupt);
diff --git a/src/mame/includes/thepit.h b/src/mame/includes/thepit.h
index 440a9d1ddc2..16d63fc3384 100644
--- a/src/mame/includes/thepit.h
+++ b/src/mame/includes/thepit.h
@@ -38,7 +38,7 @@ public:
TILE_GET_INFO_MEMBER(solid_get_tile_info);
TILE_GET_INFO_MEMBER(get_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(thepit);
DECLARE_PALETTE_INIT(suprmous);
UINT32 screen_update_thepit(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_desertdan(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/tiamc1.h b/src/mame/includes/tiamc1.h
index 8fa6dc6c9c1..d8d780a1c0b 100644
--- a/src/mame/includes/tiamc1.h
+++ b/src/mame/includes/tiamc1.h
@@ -18,7 +18,7 @@ public:
UINT8 m_bg_hshift;
tilemap_t *m_bg_tilemap1;
tilemap_t *m_bg_tilemap2;
- rgb_t *m_palette;
+ rgb_t *m_palette_ptr;
DECLARE_WRITE8_MEMBER(tiamc1_control_w);
DECLARE_WRITE8_MEMBER(tiamc1_videoram_w);
DECLARE_WRITE8_MEMBER(tiamc1_bankswitch_w);
@@ -33,7 +33,7 @@ public:
TILE_GET_INFO_MEMBER(get_bg2_tile_info);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(tiamc1);
UINT32 screen_update_tiamc1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/timelimt.h b/src/mame/includes/timelimt.h
index 3c5da4f53c8..9e315805089 100644
--- a/src/mame/includes/timelimt.h
+++ b/src/mame/includes/timelimt.h
@@ -30,7 +30,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(timelimt);
UINT32 screen_update_timelimt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(timelimt_irq);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/timeplt.h b/src/mame/includes/timeplt.h
index 313b2979de2..48dfb86f44a 100644
--- a/src/mame/includes/timeplt.h
+++ b/src/mame/includes/timeplt.h
@@ -51,7 +51,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(timeplt);
DECLARE_VIDEO_START(chkun);
UINT32 screen_update_timeplt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(timeplt_interrupt);
diff --git a/src/mame/includes/toypop.h b/src/mame/includes/toypop.h
index 2f12d80d4fc..f353b9d9a00 100644
--- a/src/mame/includes/toypop.h
+++ b/src/mame/includes/toypop.h
@@ -74,7 +74,7 @@ public:
TILE_GET_INFO_MEMBER(get_tile_info);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(toypop);
UINT32 screen_update_toypop(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(toypop_main_vblank_irq);
INTERRUPT_GEN_MEMBER(toypop_sound_timer_irq);
diff --git a/src/mame/includes/tp84.h b/src/mame/includes/tp84.h
index c29a1a2c221..c79136371a4 100644
--- a/src/mame/includes/tp84.h
+++ b/src/mame/includes/tp84.h
@@ -42,7 +42,7 @@ public:
TILE_GET_INFO_MEMBER(get_fg_tile_info);
virtual void machine_start();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(tp84);
UINT32 screen_update_tp84(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(sub_vblank_irq);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/travrusa.h b/src/mame/includes/travrusa.h
index 20429c183ae..45259c738ab 100644
--- a/src/mame/includes/travrusa.h
+++ b/src/mame/includes/travrusa.h
@@ -24,7 +24,7 @@ public:
TILE_GET_INFO_MEMBER(get_tile_info);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(travrusa);
DECLARE_PALETTE_INIT(shtrider);
UINT32 screen_update_travrusa(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void set_scroll( );
diff --git a/src/mame/includes/triplhnt.h b/src/mame/includes/triplhnt.h
index 775b3539154..19e53c505eb 100644
--- a/src/mame/includes/triplhnt.h
+++ b/src/mame/includes/triplhnt.h
@@ -58,7 +58,7 @@ public:
DECLARE_DRIVER_INIT(triplhnt);
TILE_GET_INFO_MEMBER(get_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(triplhnt);
UINT32 screen_update_triplhnt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
void triplhnt_set_collision(int code);
diff --git a/src/mame/includes/truco.h b/src/mame/includes/truco.h
index f9d4521d083..765a642391e 100644
--- a/src/mame/includes/truco.h
+++ b/src/mame/includes/truco.h
@@ -19,7 +19,7 @@ public:
DECLARE_WRITE_LINE_MEMBER(pia_irqa_w);
DECLARE_WRITE_LINE_MEMBER(pia_irqb_w);
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(truco);
UINT32 screen_update_truco(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(truco_interrupt);
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/trucocl.h b/src/mame/includes/trucocl.h
index ab650b6d410..4ce3aaa31de 100644
--- a/src/mame/includes/trucocl.h
+++ b/src/mame/includes/trucocl.h
@@ -30,7 +30,7 @@ public:
DECLARE_DRIVER_INIT(trucocl);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(trucocl);
UINT32 screen_update_trucocl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(trucocl_interrupt);
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/tryout.h b/src/mame/includes/tryout.h
index f81213b5a35..42f5cf8c1f6 100644
--- a/src/mame/includes/tryout.h
+++ b/src/mame/includes/tryout.h
@@ -36,7 +36,7 @@ public:
TILEMAP_MAPPER_MEMBER(get_fg_memory_offset);
TILEMAP_MAPPER_MEMBER(get_bg_memory_offset);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(tryout);
UINT32 screen_update_tryout(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/tunhunt.h b/src/mame/includes/tunhunt.h
index f097901c7f3..d2cf6e60fb7 100644
--- a/src/mame/includes/tunhunt.h
+++ b/src/mame/includes/tunhunt.h
@@ -25,7 +25,7 @@ public:
DECLARE_READ8_MEMBER(dsw2_4r);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(tunhunt);
UINT32 screen_update_tunhunt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void set_pens();
void draw_motion_object(bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/ultratnk.h b/src/mame/includes/ultratnk.h
index 516c4d10896..ef7aec5f4db 100644
--- a/src/mame/includes/ultratnk.h
+++ b/src/mame/includes/ultratnk.h
@@ -47,7 +47,7 @@ public:
TILE_GET_INFO_MEMBER(ultratnk_tile_info);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(ultratnk);
UINT32 screen_update_ultratnk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof_ultratnk(screen_device &screen, bool state);
TIMER_CALLBACK_MEMBER(nmi_callback);
diff --git a/src/mame/includes/usgames.h b/src/mame/includes/usgames.h
index 12e5b761fa5..c8f9b283202 100644
--- a/src/mame/includes/usgames.h
+++ b/src/mame/includes/usgames.h
@@ -18,7 +18,7 @@ public:
DECLARE_WRITE8_MEMBER(usgames_charram_w);
TILE_GET_INFO_MEMBER(get_usgames_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(usgames);
UINT32 screen_update_usgames(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
diff --git a/src/mame/includes/vulgus.h b/src/mame/includes/vulgus.h
index 083eccc1890..44a5e22794b 100644
--- a/src/mame/includes/vulgus.h
+++ b/src/mame/includes/vulgus.h
@@ -26,7 +26,7 @@ public:
TILE_GET_INFO_MEMBER(get_fg_tile_info);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(vulgus);
UINT32 screen_update_vulgus(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vulgus_vblank_irq);
void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
diff --git a/src/mame/includes/wiping.h b/src/mame/includes/wiping.h
index 6377d7a5792..6a764397392 100644
--- a/src/mame/includes/wiping.h
+++ b/src/mame/includes/wiping.h
@@ -23,7 +23,7 @@ public:
DECLARE_WRITE8_MEMBER(main_irq_mask_w);
DECLARE_WRITE8_MEMBER(sound_irq_mask_w);
DECLARE_WRITE8_MEMBER(wiping_flipscreen_w);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(wiping);
UINT32 screen_update_wiping(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
INTERRUPT_GEN_MEMBER(sound_timer_irq);
diff --git a/src/mame/includes/wiz.h b/src/mame/includes/wiz.h
index d1f3da4f045..17b57b3ed19 100644
--- a/src/mame/includes/wiz.h
+++ b/src/mame/includes/wiz.h
@@ -53,7 +53,7 @@ public:
DECLARE_DRIVER_INIT(stinger);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(wiz);
UINT32 screen_update_wiz(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_stinger(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_kungfut(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/wolfpack.h b/src/mame/includes/wolfpack.h
index b75e2613d5e..ab143a33ce1 100644
--- a/src/mame/includes/wolfpack.h
+++ b/src/mame/includes/wolfpack.h
@@ -68,14 +68,14 @@ public:
DECLARE_WRITE8_MEMBER(wolfpack_start_speech_w);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(wolfpack);
UINT32 screen_update_wolfpack(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof_wolfpack(screen_device &screen, bool state);
TIMER_CALLBACK_MEMBER(periodic_callback);
void draw_ship(bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_torpedo(bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_pt(bitmap_ind16 &bitmap, const rectangle &cliprect);
- void draw_water(colortable_t *colortable, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void draw_water(palette_device &palette, bitmap_ind16 &bitmap, const rectangle &cliprect);
protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
diff --git a/src/mame/includes/xorworld.h b/src/mame/includes/xorworld.h
index 1fa32a07824..b2ba5c48d98 100644
--- a/src/mame/includes/xorworld.h
+++ b/src/mame/includes/xorworld.h
@@ -23,7 +23,7 @@ public:
DECLARE_DRIVER_INIT(xorworld);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(xorworld);
UINT32 screen_update_xorworld(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/xyonix.h b/src/mame/includes/xyonix.h
index f3b9e9ef9a9..fafd21ca4e1 100644
--- a/src/mame/includes/xyonix.h
+++ b/src/mame/includes/xyonix.h
@@ -20,7 +20,7 @@ public:
DECLARE_WRITE8_MEMBER(xyonix_vidram_w);
TILE_GET_INFO_MEMBER(get_xyonix_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(xyonix);
UINT32 screen_update_xyonix(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void handle_coins(int coin);
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/yiear.h b/src/mame/includes/yiear.h
index 6b1668a823b..5186455df58 100644
--- a/src/mame/includes/yiear.h
+++ b/src/mame/includes/yiear.h
@@ -42,7 +42,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(yiear);
UINT32 screen_update_yiear(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(yiear_vblank_interrupt);
INTERRUPT_GEN_MEMBER(yiear_nmi_interrupt);
diff --git a/src/mame/includes/zac2650.h b/src/mame/includes/zac2650.h
index e52aaf3553a..6f8852eb97d 100644
--- a/src/mame/includes/zac2650.h
+++ b/src/mame/includes/zac2650.h
@@ -30,7 +30,7 @@ public:
DECLARE_READ8_MEMBER(tinvader_port_0_r);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(zac2650);
UINT32 screen_update_tinvader(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
int SpriteCollision(int first,int second);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/zaccaria.h b/src/mame/includes/zaccaria.h
index ab9aa733875..4ee8040a53b 100644
--- a/src/mame/includes/zaccaria.h
+++ b/src/mame/includes/zaccaria.h
@@ -50,7 +50,7 @@ public:
DECLARE_WRITE8_MEMBER(mc1408_data_w);
TILE_GET_INFO_MEMBER(get_tile_info);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(zaccaria);
UINT32 screen_update_zaccaria(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(zaccaria_cb1_toggle);
INTERRUPT_GEN_MEMBER(vblank_irq);
diff --git a/src/mame/includes/zaxxon.h b/src/mame/includes/zaxxon.h
index 09c09679c2c..5f8e11fe528 100644
--- a/src/mame/includes/zaxxon.h
+++ b/src/mame/includes/zaxxon.h
@@ -69,7 +69,7 @@ public:
TILE_GET_INFO_MEMBER(congo_get_fg_tile_info);
virtual void machine_start();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(zaxxon);
DECLARE_VIDEO_START(razmataz);
DECLARE_VIDEO_START(congo);
UINT32 screen_update_zaxxon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/machine/archimds.c b/src/mame/machine/archimds.c
index 399df278613..18374cc53ff 100644
--- a/src/mame/machine/archimds.c
+++ b/src/mame/machine/archimds.c
@@ -847,7 +847,7 @@ WRITE32_MEMBER(archimedes_state::archimedes_vidc_w)
if(reg == 0x40 && val & 0xfff)
logerror("WARNING: border color write here (PC=%08x)!\n",space.device().safe_pc());
- palette_set_color_rgb(machine(), reg >> 2, pal4bit(r), pal4bit(g), pal4bit(b) );
+ m_palette->set_pen_color(reg >> 2, pal4bit(r), pal4bit(g), pal4bit(b) );
/* handle 8bpp colors here */
if(reg <= 0x3c)
@@ -860,7 +860,7 @@ WRITE32_MEMBER(archimedes_state::archimedes_vidc_w)
g = ((val & 0x030) >> 4) | ((i & 0x20) >> 3) | ((i & 0x40) >> 3);
r = ((val & 0x007) >> 0) | ((i & 0x10) >> 1);
- palette_set_color_rgb(machine(), (reg >> 2) + 0x100 + i, pal4bit(r), pal4bit(g), pal4bit(b) );
+ m_palette->set_pen_color((reg >> 2) + 0x100 + i, pal4bit(r), pal4bit(g), pal4bit(b) );
}
}
diff --git a/src/mame/machine/atarifb.c b/src/mame/machine/atarifb.c
index 56de399f043..cbf43ecb95e 100644
--- a/src/mame/machine/atarifb.c
+++ b/src/mame/machine/atarifb.c
@@ -45,14 +45,14 @@ WRITE8_MEMBER(atarifb_state::abaseb_out1_w)
if (data & 0x80)
{
/* Invert video */
- palette_set_color(machine(), 1, rgb_t(0x00,0x00,0x00)); /* black */
- palette_set_color(machine(), 0, rgb_t(0xff,0xff,0xff)); /* white */
+ m_palette->set_pen_color(1, rgb_t(0x00,0x00,0x00)); /* black */
+ m_palette->set_pen_color(0, rgb_t(0xff,0xff,0xff)); /* white */
}
else
{
/* Regular video */
- palette_set_color(machine(), 0, rgb_t(0x00,0x00,0x00)); /* black */
- palette_set_color(machine(), 1, rgb_t(0xff,0xff,0xff)); /* white */
+ m_palette->set_pen_color(0, rgb_t(0x00,0x00,0x00)); /* black */
+ m_palette->set_pen_color(1, rgb_t(0xff,0xff,0xff)); /* white */
}
}
diff --git a/src/mame/machine/atarigen.c b/src/mame/machine/atarigen.c
index b702c14f401..04e87fd94f7 100644
--- a/src/mame/machine/atarigen.c
+++ b/src/mame/machine/atarigen.c
@@ -1412,7 +1412,7 @@ WRITE16_MEMBER(atarigen_state::paletteram_666_w)
g = ((newword >> 4) & 0x3e) | ((newword >> 15) & 1);
b = ((newword << 1) & 0x3e) | ((newword >> 15) & 1);
- palette_set_color_rgb(space.machine(), offset, pal6bit(r), pal6bit(g), pal6bit(b));
+ m_palette->set_pen_color(offset, pal6bit(r), pal6bit(g), pal6bit(b));
}
@@ -1436,7 +1436,7 @@ WRITE16_MEMBER(atarigen_state::expanded_paletteram_666_w)
g = ((newword >> 4) & 0x3e) | ((newword >> 15) & 1);
b = ((newword << 1) & 0x3e) | ((newword >> 15) & 1);
- palette_set_color_rgb(space.machine(), palentry & 0x1ff, pal6bit(r), pal6bit(g), pal6bit(b));
+ m_palette->set_pen_color(palentry & 0x1ff, pal6bit(r), pal6bit(g), pal6bit(b));
}
}
@@ -1459,7 +1459,7 @@ WRITE32_MEMBER(atarigen_state::paletteram32_666_w )
g = ((newword >> 4) & 0x3e) | ((newword >> 15) & 1);
b = ((newword << 1) & 0x3e) | ((newword >> 15) & 1);
- palette_set_color_rgb(space.machine(), offset * 2, pal6bit(r), pal6bit(g), pal6bit(b));
+ m_palette->set_pen_color(offset * 2, pal6bit(r), pal6bit(g), pal6bit(b));
}
if (ACCESSING_BITS_0_15)
@@ -1470,7 +1470,7 @@ WRITE32_MEMBER(atarigen_state::paletteram32_666_w )
g = ((newword >> 4) & 0x3e) | ((newword >> 15) & 1);
b = ((newword << 1) & 0x3e) | ((newword >> 15) & 1);
- palette_set_color_rgb(space.machine(), offset * 2 + 1, pal6bit(r), pal6bit(g), pal6bit(b));
+ m_palette->set_pen_color(offset * 2 + 1, pal6bit(r), pal6bit(g), pal6bit(b));
}
}
diff --git a/src/mame/machine/leland.c b/src/mame/machine/leland.c
index 9fc261dd2ab..914f2c10866 100644
--- a/src/mame/machine/leland.c
+++ b/src/mame/machine/leland.c
@@ -1218,14 +1218,14 @@ WRITE8_MEMBER(leland_state::ataxx_master_output_w)
WRITE8_MEMBER(leland_state::leland_gated_paletteram_w)
{
if (m_wcol_enable)
- paletteram_BBGGGRRR_byte_w(space, offset, data);
+ m_palette->write(space, offset, data);
}
READ8_MEMBER(leland_state::leland_gated_paletteram_r)
{
if (m_wcol_enable)
- return m_generic_paletteram_8[offset];
+ return m_palette->basemem().read8(offset);
return 0xff;
}
@@ -1233,7 +1233,7 @@ READ8_MEMBER(leland_state::leland_gated_paletteram_r)
WRITE8_MEMBER(leland_state::ataxx_paletteram_and_misc_w)
{
if (m_wcol_enable)
- paletteram_xxxxRRRRGGGGBBBB_byte_le_w(space, offset, data);
+ m_palette->write(space, offset, data);
else if (offset == 0x7f8 || offset == 0x7f9)
leland_master_video_addr_w(space, offset - 0x7f8, data);
else if (offset == 0x7fc)
@@ -1264,7 +1264,7 @@ WRITE8_MEMBER(leland_state::ataxx_paletteram_and_misc_w)
READ8_MEMBER(leland_state::ataxx_paletteram_and_misc_r)
{
if (m_wcol_enable)
- return m_generic_paletteram_8[offset];
+ return m_palette->basemem().read8(offset);
else if (offset == 0x7fc || offset == 0x7fd)
{
int result = m_xrom_base[0x00000 | m_xrom1_addr | ((offset & 1) << 16)];
diff --git a/src/mame/machine/mega32x.c b/src/mame/machine/mega32x.c
index e0298cd472a..249d0e38ced 100644
--- a/src/mame/machine/mega32x.c
+++ b/src/mame/machine/mega32x.c
@@ -219,7 +219,8 @@ sega_32x_device::sega_32x_device(const machine_config &mconfig, device_type type
m_master_cpu(*this, "32x_master_sh2"),
m_slave_cpu(*this, "32x_slave_sh2"),
m_lch_pwm(*this, "lch_pwm"),
- m_rch_pwm(*this, "rch_pwm")
+ m_rch_pwm(*this, "rch_pwm"),
+ m_palette(*this)
{
}
@@ -233,6 +234,16 @@ sega_32x_pal_device::sega_32x_pal_device(const machine_config &mconfig, const ch
{
}
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void sega_32x_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<sega_32x_device &>(device).m_palette.set_tag(tag);
+}
+
TIMER_CALLBACK( _32x_pwm_callback );
@@ -256,7 +267,7 @@ WRITE16_MEMBER( sega_32x_device::_32x_68k_palette_w )
m_32x_palette_lookup[offset] = (r << 10) | (g << 5) | (b << 0) | (p << 15);
- palette_set_color_rgb(space.machine(),offset+0x40,pal5bit(r),pal5bit(g),pal5bit(b));
+ m_palette->set_pen_color(offset+0x40,pal5bit(r),pal5bit(g),pal5bit(b));
}
diff --git a/src/mame/machine/mega32x.h b/src/mame/machine/mega32x.h
index c02e8b01402..9199310d6c0 100644
--- a/src/mame/machine/mega32x.h
+++ b/src/mame/machine/mega32x.h
@@ -37,7 +37,9 @@ public:
// set some variables at start, depending on region (shall be moved to a device interface?)
void set_framerate(int rate) { m_framerate = rate; }
void set_32x_pal(bool pal) { m_32x_pal = pal ? 1 : 0; }
-
+
+ // static configuration
+ static void static_set_palette_tag(device_t &device, const char *tag);
DECLARE_READ32_MEMBER( _32x_sh2_master_4000_common_4002_r );
DECLARE_READ32_MEMBER( _32x_sh2_slave_4000_common_4002_r );
@@ -183,6 +185,8 @@ private:
UINT16 *m_32x_display_dram, *m_32x_access_dram;
UINT16* m_32x_palette;
UINT16* m_32x_palette_lookup;
+
+ required_device<palette_device> m_palette;
};
@@ -204,3 +208,6 @@ class sega_32x_pal_device : public sega_32x_device
extern const device_type SEGA_32X_NTSC;
extern const device_type SEGA_32X_PAL;
+
+#define MCFG_SEGA_32X_PALETTE(_palette_tag) \
+ sega_32x_device::static_set_palette_tag(*device, "^" _palette_tag);
diff --git a/src/mame/machine/megadriv.c b/src/mame/machine/megadriv.c
index 5e5d7f4825d..a17e9c74e70 100644
--- a/src/mame/machine/megadriv.c
+++ b/src/mame/machine/megadriv.c
@@ -1016,8 +1016,6 @@ MACHINE_CONFIG_FRAGMENT( md_ntsc )
MCFG_TIMER_ADD_SCANLINE("scantimer", megadriv_scanline_timer_callback_alt_timing, "megadriv", 0, 1)
- MCFG_PALETTE_LENGTH(0x200)
-
MCFG_VIDEO_START_OVERRIDE(md_base_state,megadriv)
/* sound hardware */
@@ -1065,7 +1063,7 @@ MACHINE_CONFIG_FRAGMENT( md_pal )
MCFG_SCREEN_UPDATE_DRIVER(md_base_state,screen_update_megadriv) /* Copies a bitmap */
MCFG_SCREEN_VBLANK_DRIVER(md_base_state,screen_eof_megadriv) /* Used to Sync the timing */
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
MCFG_VIDEO_START_OVERRIDE(md_base_state,megadriv)
diff --git a/src/mame/machine/megavdp.c b/src/mame/machine/megavdp.c
index 022603beb26..daa4761ba78 100644
--- a/src/mame/machine/megavdp.c
+++ b/src/mame/machine/megavdp.c
@@ -30,6 +30,20 @@ sega_genesis_vdp_device::sega_genesis_vdp_device(const machine_config &mconfig,
{
m_use_alt_timing = 0;
m_palwrite_base = -1;
+}
+
+static MACHINE_CONFIG_FRAGMENT( sega_genesis_vdp )
+ MCFG_PALETTE_ADD("palette", 0x200)
+MACHINE_CONFIG_END
+
+//-------------------------------------------------
+// machine_config_additions - return a pointer to
+// the device's machine fragment
+//-------------------------------------------------
+
+machine_config_constructor sega_genesis_vdp_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( sega_genesis_vdp );
}
static TIMER_CALLBACK( megadriv_render_timer_callback )
@@ -251,9 +265,9 @@ void sega_genesis_vdp_device::write_cram_value(int offset, int data)
b = ((data >> 9)&0x07);
if (m_palwrite_base != -1)
{
- palette_set_color_rgb(machine(),offset + m_palwrite_base ,pal3bit(r),pal3bit(g),pal3bit(b));
- palette_set_color_rgb(machine(),offset + m_palwrite_base + 0x40 ,pal3bit(r>>1),pal3bit(g>>1),pal3bit(b>>1));
- palette_set_color_rgb(machine(),offset + m_palwrite_base + 0x80 ,pal3bit((r>>1)|0x4),pal3bit((g>>1)|0x4),pal3bit((b>>1)|0x4));
+ m_palette->set_pen_color(offset + m_palwrite_base ,pal3bit(r),pal3bit(g),pal3bit(b));
+ m_palette->set_pen_color(offset + m_palwrite_base + 0x40 ,pal3bit(r>>1),pal3bit(g>>1),pal3bit(b>>1));
+ m_palette->set_pen_color(offset + m_palwrite_base + 0x80 ,pal3bit((r>>1)|0x4),pal3bit((g>>1)|0x4),pal3bit((b>>1)|0x4));
}
megadrive_vdp_palette_lookup[offset] = (b<<2) | (g<<7) | (r<<12);
megadrive_vdp_palette_lookup_sprite[offset] = (b<<2) | (g<<7) | (r<<12);
diff --git a/src/mame/machine/megavdp.h b/src/mame/machine/megavdp.h
index b6af4b027bb..cbcfa0bd18a 100644
--- a/src/mame/machine/megavdp.h
+++ b/src/mame/machine/megavdp.h
@@ -203,6 +203,7 @@ public:
protected:
virtual void device_start();
virtual void device_reset();
+ virtual machine_config_constructor device_mconfig_additions() const;
// called when we hit 240 and 241 (used to control the z80 irq line on genesis, or the main irq on c2)
devcb2_write_line m_genesis_vdp_sndirqline_callback;
@@ -296,7 +297,6 @@ private:
address_space *m_space68k;
m68000_base_device* m_cpu68k;
-
};
diff --git a/src/mame/machine/nitedrvr.c b/src/mame/machine/nitedrvr.c
index 260d28b5ef2..fea889b612b 100644
--- a/src/mame/machine/nitedrvr.c
+++ b/src/mame/machine/nitedrvr.c
@@ -238,8 +238,8 @@ WRITE8_MEMBER(nitedrvr_state::nitedrvr_out1_w)
m_crash_data_en = 1;
m_crash_data = 0x0f;
/* Invert video */
- palette_set_color(machine(), 1, rgb_t(0x00,0x00,0x00)); /* BLACK */
- palette_set_color(machine(), 0, rgb_t(0xff,0xff,0xff)); /* WHITE */
+ m_palette->set_pen_color(1, rgb_t(0x00,0x00,0x00)); /* BLACK */
+ m_palette->set_pen_color(0, rgb_t(0xff,0xff,0xff)); /* WHITE */
}
discrete_sound_w(m_discrete, space, NITEDRVR_BANG_DATA, m_crash_data_en ? m_crash_data : 0); // Crash Volume
}
@@ -258,14 +258,14 @@ TIMER_DEVICE_CALLBACK_MEMBER(nitedrvr_state::nitedrvr_crash_toggle_callback)
if (m_crash_data & 0x01)
{
/* Invert video */
- palette_set_color(machine(), 1, rgb_t(0x00,0x00,0x00)); /* BLACK */
- palette_set_color(machine(), 0, rgb_t(0xff,0xff,0xff)); /* WHITE */
+ m_palette->set_pen_color(1, rgb_t(0x00,0x00,0x00)); /* BLACK */
+ m_palette->set_pen_color(0, rgb_t(0xff,0xff,0xff)); /* WHITE */
}
else
{
/* Normal video */
- palette_set_color(machine(), 0, rgb_t(0x00,0x00,0x00)); /* BLACK */
- palette_set_color(machine(), 1, rgb_t(0xff,0xff,0xff)); /* WHITE */
+ m_palette->set_pen_color(0, rgb_t(0x00,0x00,0x00)); /* BLACK */
+ m_palette->set_pen_color(1, rgb_t(0xff,0xff,0xff)); /* WHITE */
}
}
}
diff --git a/src/mame/machine/segaic16.c b/src/mame/machine/segaic16.c
index e7f4f104369..bc085e3e5ed 100644
--- a/src/mame/machine/segaic16.c
+++ b/src/mame/machine/segaic16.c
@@ -46,7 +46,8 @@ sega_16bit_common_base::sega_16bit_common_base(const machine_config &mconfig, de
: driver_device(mconfig, type, tag),
m_paletteram(*this, "paletteram"),
m_open_bus_recurse(false),
- m_palette_entries(0)
+ m_palette_entries(0),
+ m_palette(*this, "palette")
{
palette_init();
}
@@ -157,9 +158,9 @@ WRITE16_MEMBER( sega_16bit_common_base::paletteram_w )
int b = ((newval >> 14) & 0x01) | ((newval >> 7) & 0x1e);
// normal colors
- palette_set_color_rgb(machine(), offset + 0 * m_palette_entries, m_palette_normal[r], m_palette_normal[g], m_palette_normal[b]);
- palette_set_color_rgb(machine(), offset + 1 * m_palette_entries, m_palette_shadow[r], m_palette_shadow[g], m_palette_shadow[b]);
- palette_set_color_rgb(machine(), offset + 2 * m_palette_entries, m_palette_hilight[r], m_palette_hilight[g], m_palette_hilight[b]);
+ m_palette->set_pen_color(offset + 0 * m_palette_entries, m_palette_normal[r], m_palette_normal[g], m_palette_normal[b]);
+ m_palette->set_pen_color(offset + 1 * m_palette_entries, m_palette_shadow[r], m_palette_shadow[g], m_palette_shadow[b]);
+ m_palette->set_pen_color(offset + 2 * m_palette_entries, m_palette_hilight[r], m_palette_hilight[g], m_palette_hilight[b]);
}
diff --git a/src/mame/machine/segaic16.h b/src/mame/machine/segaic16.h
index 5cbbb37c7c4..3b16e99cb4b 100644
--- a/src/mame/machine/segaic16.h
+++ b/src/mame/machine/segaic16.h
@@ -74,6 +74,7 @@ protected:
UINT8 m_palette_normal[32]; // RGB translations for normal pixels
UINT8 m_palette_shadow[32]; // RGB translations for shadowed pixels
UINT8 m_palette_hilight[32]; // RGB translations for hilighted pixels
+ required_device<palette_device> m_palette;
};
diff --git a/src/mame/machine/segamsys.c b/src/mame/machine/segamsys.c
index b0f06f0fef7..e903b20f93a 100644
--- a/src/mame/machine/segamsys.c
+++ b/src/mame/machine/segamsys.c
@@ -525,7 +525,7 @@ static void vdp_data_w(address_space &space, UINT8 data, struct sms_vdp* chip)
g = (palword & 0x00f0)>>4;
b = (palword & 0x0f00)>>8;
rgb_t rgb = rgb_t(pal4bit(r), pal4bit(g), pal4bit(b));
- //palette_set_color(space.machine(),(chip->addr_reg&0x3e)/2, rgb);
+ //m_palette->set_pen_color((chip->addr_reg&0x3e)/2, rgb);
chip->cram_mamecolours[(chip->addr_reg&0x3e)/2]=rgb;
}
}
@@ -541,7 +541,7 @@ static void vdp_data_w(address_space &space, UINT8 data, struct sms_vdp* chip)
g = (data & 0x0c)>>2;
b = (data & 0x30)>>4;
rgb_t rgb = rgb_t(pal2bit(r), pal2bit(g), pal2bit(b));
- //palette_set_color(space.machine(),chip->addr_reg&0x1f, rgb);
+ //m_palette->set_pen_color(chip->addr_reg&0x1f, rgb);
chip->cram_mamecolours[chip->addr_reg&0x1f]=rgb;
}
@@ -1727,7 +1727,7 @@ MACHINE_CONFIG_START( sms, driver_device )
MCFG_SCREEN_UPDATE_STATIC(megatech_md_sms) /* Copies a bitmap */
MCFG_SCREEN_VBLANK_STATIC(sms) /* Used to Sync the timing */
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
MCFG_NVRAM_HANDLER( sms )
diff --git a/src/mame/video/1942.c b/src/mame/video/1942.c
index 39bf20070aa..d610149e22c 100644
--- a/src/mame/video/1942.c
+++ b/src/mame/video/1942.c
@@ -29,8 +29,6 @@ void _1942_state::create_palette()
const UINT8 *color_prom = memregion("proms")->base();
int i;
- machine().colortable = colortable_alloc(machine(), 256);
-
for (i = 0; i < 256; i++)
{
int bit0, bit1, bit2, bit3, r, g, b;
@@ -54,11 +52,11 @@ void _1942_state::create_palette()
bit3 = (color_prom[i + 2 * 256] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- colortable_palette_set_color(machine().colortable,i,rgb_t(r,g,b));
+ m_palette->set_indirect_color(i,rgb_t(r,g,b));
}
}
-void _1942_state::palette_init()
+PALETTE_INIT_MEMBER(_1942_state,1942)
{
create_palette();
@@ -72,39 +70,37 @@ void _1942_state::palette_init()
colorbase = 0;
for (i = 0; i < 64 * 4; i++)
{
- colortable_entry_set_value(machine().colortable, colorbase + i, 0x80 | *color_prom++);
+ m_palette->set_pen_indirect(colorbase + i, 0x80 | *color_prom++);
}
colorbase += 64 * 4;
/* background tiles use palette entries 0-63 in four banks */
for (i = 0; i < 32 * 8; i++)
{
- colortable_entry_set_value(machine().colortable, colorbase + 0 * 32 * 8 + i, 0x00 | *color_prom);
- colortable_entry_set_value(machine().colortable, colorbase + 1 * 32 * 8 + i, 0x10 | *color_prom);
- colortable_entry_set_value(machine().colortable, colorbase + 2 * 32 * 8 + i, 0x20 | *color_prom);
- colortable_entry_set_value(machine().colortable, colorbase + 3 * 32 * 8 + i, 0x30 | *color_prom);
+ m_palette->set_pen_indirect(colorbase + 0 * 32 * 8 + i, 0x00 | *color_prom);
+ m_palette->set_pen_indirect(colorbase + 1 * 32 * 8 + i, 0x10 | *color_prom);
+ m_palette->set_pen_indirect(colorbase + 2 * 32 * 8 + i, 0x20 | *color_prom);
+ m_palette->set_pen_indirect(colorbase + 3 * 32 * 8 + i, 0x30 | *color_prom);
color_prom++;
}
colorbase += 4 * 32 * 8;
/* sprites use palette entries 64-79 */
for (i = 0; i < 16 * 16; i++)
- colortable_entry_set_value(machine().colortable, colorbase + i, 0x40 | *color_prom++);
+ m_palette->set_pen_indirect(colorbase + i, 0x40 | *color_prom++);
}
-void _1942_state::palette_init_1942p()
+PALETTE_INIT_MEMBER(_1942_state,1942p)
{
- machine().colortable = colortable_alloc(machine(), 0x500);
-
for (int i = 0; i < 0x400; i++)
{
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
}
const UINT8 *color_prom = memregion("proms")->base();
for (int i = 0; i < 0x100; i++)
{
- colortable_entry_set_value(machine().colortable, i+0x400, color_prom[i]| 0x240);
+ palette.set_pen_indirect(i+0x400, color_prom[i]| 0x240);
}
}
@@ -251,7 +247,7 @@ void _1942_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
do
{
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code + i,col,
flip_screen(),flip_screen(),
sx,sy + 16 * i * dir,15);
@@ -310,7 +306,7 @@ void _1942_state::draw_sprites_p( bitmap_ind16 &bitmap, const rectangle &cliprec
do
{
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code + i,col,
flip_screen(),flip_screen(),
sx,sy + 16 * i * dir,15);
diff --git a/src/mame/video/1943.c b/src/mame/video/1943.c
index 8645734b471..8dcb2a3ca1b 100644
--- a/src/mame/video/1943.c
+++ b/src/mame/video/1943.c
@@ -45,14 +45,11 @@ other 2 bits (output & 0x0c) unknown
***************************************************************************/
-void _1943_state::palette_init()
+PALETTE_INIT_MEMBER(_1943_state,1943)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
for (i = 0; i < 0x100; i++)
{
int bit0, bit1, bit2, bit3;
@@ -79,7 +76,7 @@ void _1943_state::palette_init()
bit3 = (color_prom[i + 0x200] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -89,7 +86,7 @@ void _1943_state::palette_init()
for (i = 0x00; i < 0x80; i++)
{
UINT8 ctabentry = (color_prom[i] & 0x0f) | 0x40;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* foreground tiles use colors 0x00-0x3f */
@@ -97,7 +94,7 @@ void _1943_state::palette_init()
{
UINT8 ctabentry = ((color_prom[0x200 + (i - 0x080)] & 0x03) << 4) |
((color_prom[0x100 + (i - 0x080)] & 0x0f) << 0);
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* background tiles also use colors 0x00-0x3f */
@@ -105,7 +102,7 @@ void _1943_state::palette_init()
{
UINT8 ctabentry = ((color_prom[0x400 + (i - 0x180)] & 0x03) << 4) |
((color_prom[0x300 + (i - 0x180)] & 0x0f) << 0);
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* sprites use colors 0x80-0xff
@@ -115,7 +112,7 @@ void _1943_state::palette_init()
{
UINT8 ctabentry = ((color_prom[0x600 + (i - 0x280)] & 0x07) << 4) |
((color_prom[0x500 + (i - 0x280)] & 0x0f) << 0) | 0x80;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -203,7 +200,7 @@ void _1943_state::video_start()
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(_1943_state::c1943_get_bg_tile_info),this), TILEMAP_SCAN_COLS, 32, 32, 2048, 8);
m_fg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(_1943_state::c1943_get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
- colortable_configure_tilemap_groups(machine().colortable, m_bg_tilemap, m_gfxdecode->gfx(1), 0x0f);
+ m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(1), 0x0f);
m_fg_tilemap->set_transparent_pen(0);
save_item(NAME(m_char_on));
@@ -234,12 +231,12 @@ void _1943_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect,
if (priority)
{
if (color != 0x0a && color != 0x0b)
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect, code, color, flip_screen(), flip_screen(), sx, sy, 0);
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect, code, color, flip_screen(), flip_screen(), sx, sy, 0);
}
else
{
if (color == 0x0a || color == 0x0b)
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect, code, color, flip_screen(), flip_screen(), sx, sy, 0);
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect, code, color, flip_screen(), flip_screen(), sx, sy, 0);
}
}
}
@@ -253,7 +250,7 @@ UINT32 _1943_state::screen_update_1943(screen_device &screen, bitmap_ind16 &bitm
if (m_bg2_on)
m_bg2_tilemap->draw(screen, bitmap, cliprect, 0, 0);
else
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
if (m_obj_on)
draw_sprites(bitmap, cliprect, 0);
diff --git a/src/mame/video/40love.c b/src/mame/video/40love.c
index 07e8fd5eed1..cd0803f6a89 100644
--- a/src/mame/video/40love.c
+++ b/src/mame/video/40love.c
@@ -10,12 +10,12 @@
* color prom decoding
*/
-void fortyl_state::palette_init()
+PALETTE_INIT_MEMBER(fortyl_state, fortyl)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, bit3, r, g, b;
@@ -27,20 +27,20 @@ void fortyl_state::palette_init()
r = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
/* green component */
- bit0 = (color_prom[machine().total_colors()] >> 0) & 0x01;
- bit1 = (color_prom[machine().total_colors()] >> 1) & 0x01;
- bit2 = (color_prom[machine().total_colors()] >> 2) & 0x01;
- bit3 = (color_prom[machine().total_colors()] >> 3) & 0x01;
+ bit0 = (color_prom[palette.entries()] >> 0) & 0x01;
+ bit1 = (color_prom[palette.entries()] >> 1) & 0x01;
+ bit2 = (color_prom[palette.entries()] >> 2) & 0x01;
+ bit3 = (color_prom[palette.entries()] >> 3) & 0x01;
g = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
/* blue component */
- bit0 = (color_prom[2*machine().total_colors()] >> 0) & 0x01;
- bit1 = (color_prom[2*machine().total_colors()] >> 1) & 0x01;
- bit2 = (color_prom[2*machine().total_colors()] >> 2) & 0x01;
- bit3 = (color_prom[2*machine().total_colors()] >> 3) & 0x01;
+ bit0 = (color_prom[2*palette.entries()] >> 0) & 0x01;
+ bit1 = (color_prom[2*palette.entries()] >> 1) & 0x01;
+ bit2 = (color_prom[2*palette.entries()] >> 2) & 0x01;
+ bit3 = (color_prom[2*palette.entries()] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- palette_set_color(machine(), i, rgb_t(r,g,b));
+ palette.set_pen_color(i, rgb_t(r,g,b));
color_prom++;
}
@@ -290,7 +290,7 @@ void fortyl_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
if (spriteram[offs + 2] & 0xe0)
color = machine().rand() & 0xf;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -318,7 +318,7 @@ void fortyl_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
if (spriteram_2[offs + 2] & 0xe0)
color = machine().rand() & 0xf;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/8080bw.c b/src/mame/video/8080bw.c
index 89d136a4497..39f9bf8fb3a 100644
--- a/src/mame/video/8080bw.c
+++ b/src/mame/video/8080bw.c
@@ -31,14 +31,14 @@ PALETTE_INIT_MEMBER(_8080bw_state,rollingc)
// palette is 3bpp + intensity
for (int i = 0; i < 8; i++)
{
- palette_set_color_rgb(machine(), i, pal1bit(i >> 2) >> 1, pal1bit(i >> 1) >> 1, pal1bit(i >> 0) >> 1);
- palette_set_color_rgb(machine(), i | 8, pal1bit(i >> 2), pal1bit(i >> 1), pal1bit(i >> 0));
+ palette.set_pen_color(i, pal1bit(i >> 2) >> 1, pal1bit(i >> 1) >> 1, pal1bit(i >> 0) >> 1);
+ palette.set_pen_color(i | 8, pal1bit(i >> 2), pal1bit(i >> 1), pal1bit(i >> 0));
}
// but according to photos, pen 6 is clearly orange instead of dark-yellow, and pen 5 is less dark as well
// pens 1, 2 and 4 are good though. Maybe we're missing a color prom?
- palette_set_color_rgb(machine(), 0x05, 0xff, 0x00, 0x80); // pink
- palette_set_color_rgb(machine(), 0x06, 0xff, 0x80, 0x00); // orange
+ palette.set_pen_color(0x05, 0xff, 0x00, 0x80); // pink
+ palette.set_pen_color(0x06, 0xff, 0x80, 0x00); // orange
}
@@ -264,10 +264,10 @@ UINT32 _8080bw_state::screen_update_rollingc(screen_device &screen, bitmap_rgb32
UINT8 fore_color = m_colorram[offs & 0x1f1f] & 0x0f;
UINT8 back_color = m_colorram2[offs & 0x1f1f] & 0x0f;
- set_8_pixels(bitmap, y, x, data, machine().pens, fore_color, back_color);
+ set_8_pixels(bitmap, y, x, data, m_palette->pens(), fore_color, back_color);
}
- clear_extra_columns(bitmap, machine().pens, 0);
+ clear_extra_columns(bitmap, m_palette->pens(), 0);
return 0;
}
diff --git a/src/mame/video/aeroboto.c b/src/mame/video/aeroboto.c
index 13dc2bea998..7f53e0dbd4d 100644
--- a/src/mame/video/aeroboto.c
+++ b/src/mame/video/aeroboto.c
@@ -135,7 +135,7 @@ void aeroboto_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
y = 240 - y;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
m_spriteram[offs + 1],
m_spriteram[offs + 2] & 0x07,
flip_screen(), flip_screen(),
diff --git a/src/mame/video/aerofgt.c b/src/mame/video/aerofgt.c
index e836e84e7b3..28419fed06a 100644
--- a/src/mame/video/aerofgt.c
+++ b/src/mame/video/aerofgt.c
@@ -513,7 +513,7 @@ void aerofgt_state::aerfboo2_draw_sprites( screen_device &screen, bitmap_ind16 &
else
code = m_spriteram2[map_start % (m_spriteram2.bytes()/2)];
- m_gfxdecode->gfx(m_sprite_gfx + chip)->prio_zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_sprite_gfx + chip)->prio_zoom_transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -550,14 +550,14 @@ void aerofgt_state::pspikesb_draw_sprites( screen_device &screen, bitmap_ind16 &
flipx = m_spriteram3[i + 1] & 0x0800;
color = m_spriteram3[i + 1] & 0x000f;
- m_gfxdecode->gfx(m_sprite_gfx)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_sprite_gfx)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
xpos,ypos,15);
/* wrap around y */
- m_gfxdecode->gfx(m_sprite_gfx)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_sprite_gfx)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -593,14 +593,14 @@ void aerofgt_state::spikes91_draw_sprites( screen_device &screen, bitmap_ind16 &
realcode = (lookup[code] << 8) + lookup[0x10000 + code];
- m_gfxdecode->gfx(m_sprite_gfx)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_sprite_gfx)->transpen(m_palette,bitmap,cliprect,
realcode,
color,
flipx,flipy,
xpos,ypos,15);
/* wrap around y */
- m_gfxdecode->gfx(m_sprite_gfx)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_sprite_gfx)->transpen(m_palette,bitmap,cliprect,
realcode,
color,
flipx,flipy,
@@ -641,7 +641,7 @@ void aerofgt_state::aerfboot_draw_sprites( screen_device &screen, bitmap_ind16 &
sx = ((ox + 16 + 3) & 0x1ff) - 16;
- m_gfxdecode->gfx(m_sprite_gfx + (code >= 0x1000 ? 0 : 1))->prio_zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_sprite_gfx + (code >= 0x1000 ? 0 : 1))->prio_zoom_transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -679,7 +679,7 @@ void aerofgt_state::aerfboot_draw_sprites( screen_device &screen, bitmap_ind16 &
sx = ((ox + 16 + 3) & 0x1ff) - 16;
- m_gfxdecode->gfx(m_sprite_gfx + (code >= 0x1000 ? 0 : 1))->prio_zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_sprite_gfx + (code >= 0x1000 ? 0 : 1))->prio_zoom_transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -752,7 +752,7 @@ UINT32 aerofgt_state::screen_update_spikes91(screen_device &screen, bitmap_ind16
{
UINT16 tileno = m_tx_tilemap_ram[count] & 0x1fff;
UINT16 colour = m_tx_tilemap_ram[count] & 0xe000;
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
tileno,
colour>>13,
0,0,
diff --git a/src/mame/video/ajax.c b/src/mame/video/ajax.c
index 8466b0bb4a2..2e85503d09a 100644
--- a/src/mame/video/ajax.c
+++ b/src/mame/video/ajax.c
@@ -90,7 +90,7 @@ UINT32 ajax_state::screen_update_ajax(screen_device &screen, bitmap_ind16 &bitma
screen.priority().fill(0, cliprect);
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
m_k052109->tilemap_draw(screen, bitmap, cliprect, 2, 0, 1);
if (m_priority)
{
diff --git a/src/mame/video/alpha68k.c b/src/mame/video/alpha68k.c
index 9a5faa4fa09..b7a976b2588 100644
--- a/src/mame/video/alpha68k.c
+++ b/src/mame/video/alpha68k.c
@@ -30,7 +30,7 @@ WRITE16_MEMBER(alpha68k_state::alpha68k_paletteram_w)
g = ((newword >> 3) & 0x1e) | ((newword >> 13) & 0x01);
b = ((newword << 1) & 0x1e) | ((newword >> 12) & 0x01);
- palette_set_color_rgb(machine(), offset, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(offset, pal5bit(r), pal5bit(g), pal5bit(b));
}
/******************************************************************************/
@@ -104,7 +104,7 @@ void alpha68k_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
}
if (color)
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
tile,
color,
fx,fy,
@@ -249,7 +249,7 @@ void alpha68k_state::draw_sprites_V( bitmap_ind16 &bitmap, const rectangle &clip
}
if (color)
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
tile,
color,
fx,fy,
@@ -345,7 +345,7 @@ void alpha68k_state::draw_sprites_I( bitmap_ind16 &bitmap, const rectangle &clip
fy = data & 0x4000;
color = color_prom[tile << 1 | data >> 15];
- gfx->transpen(bitmap,cliprect, tile, color, 0, fy, mx, my, 0);
+ gfx->transpen(m_palette,bitmap,cliprect, tile, color, 0, fy, mx, my, 0);
my = (my + 8) & 0xff;
}
@@ -356,7 +356,7 @@ UINT32 alpha68k_state::screen_update_alpha68k_I(screen_device &screen, bitmap_in
{
int yshift = (m_microcontroller_id == 0x890a) ? 1 : 0; // The Next Space is 1 pixel off
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
/* This appears to be correct priority */
draw_sprites_I(bitmap, cliprect, 2, 0x0800, yshift);
@@ -372,9 +372,6 @@ PALETTE_INIT_MEMBER(alpha68k_state,kyros)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
@@ -382,7 +379,7 @@ PALETTE_INIT_MEMBER(alpha68k_state,kyros)
int g = pal4bit(color_prom[i + 0x100]);
int b = pal4bit(color_prom[i + 0x200]);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -391,7 +388,7 @@ PALETTE_INIT_MEMBER(alpha68k_state,kyros)
for (i = 0; i < 0x100; i++)
{
UINT8 ctabentry = ((color_prom[i] & 0x0f) << 4) | (color_prom[i + 0x100] & 0x0f);
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -400,9 +397,6 @@ PALETTE_INIT_MEMBER(alpha68k_state,paddlem)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
@@ -410,7 +404,7 @@ PALETTE_INIT_MEMBER(alpha68k_state,paddlem)
int g = pal4bit(color_prom[i + 0x100]);
int b = pal4bit(color_prom[i + 0x200]);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -419,7 +413,7 @@ PALETTE_INIT_MEMBER(alpha68k_state,paddlem)
for (i = 0; i < 0x400; i++)
{
UINT8 ctabentry = ((color_prom[i + 0x400] & 0x0f) << 4) | (color_prom[i] & 0x0f);
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -473,7 +467,7 @@ void alpha68k_state::kyros_draw_sprites( bitmap_ind16 &bitmap, const rectangle &
else
jongbou_video_banking(&bank, data);
- m_gfxdecode->gfx(bank)->transpen(bitmap,cliprect, tile, color, fx, fy, mx, my, 0);
+ m_gfxdecode->gfx(bank)->transpen(m_palette,bitmap,cliprect, tile, color, fx, fy, mx, my, 0);
}
}
//ZT
@@ -487,7 +481,7 @@ void alpha68k_state::kyros_draw_sprites( bitmap_ind16 &bitmap, const rectangle &
UINT32 alpha68k_state::screen_update_kyros(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- colortable_entry_set_value(machine().colortable, 0x100, *m_videoram & 0xff);
+ m_palette->set_pen_indirect(0x100, *m_videoram & 0xff);
bitmap.fill(0x100, cliprect); //AT
kyros_draw_sprites(bitmap, cliprect, 2, 0x0800);
@@ -532,7 +526,7 @@ void alpha68k_state::sstingry_draw_sprites( bitmap_ind16 &bitmap, const rectangl
color = (data >> 7 & 0x18) | (data >> 13 & 7);
tile = data & 0x3ff;
bank = data >> 10 & 3;
- m_gfxdecode->gfx(bank)->transpen(bitmap,cliprect, tile, color, fx, fy, mx, my, 0);
+ m_gfxdecode->gfx(bank)->transpen(m_palette,bitmap,cliprect, tile, color, fx, fy, mx, my, 0);
}
//ZT
if(m_flipscreen)
@@ -545,7 +539,7 @@ void alpha68k_state::sstingry_draw_sprites( bitmap_ind16 &bitmap, const rectangl
UINT32 alpha68k_state::screen_update_sstingry(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- colortable_entry_set_value(machine().colortable, 0x100, *m_videoram & 0xff);
+ m_palette->set_pen_indirect(0x100, *m_videoram & 0xff);
bitmap.fill(0x100, cliprect); //AT
sstingry_draw_sprites(bitmap, cliprect, 2, 0x0800);
diff --git a/src/mame/video/ambush.c b/src/mame/video/ambush.c
index 41df1a27c00..8d9380adc25 100644
--- a/src/mame/video/ambush.c
+++ b/src/mame/video/ambush.c
@@ -18,12 +18,12 @@
***************************************************************************/
-void ambush_state::palette_init()
+PALETTE_INIT_MEMBER(ambush_state, ambush)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -43,7 +43,7 @@ void ambush_state::palette_init()
bit2 = (color_prom[i] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r,g,b));
+ palette.set_pen_color(i, rgb_t(r,g,b));
}
}
@@ -78,7 +78,7 @@ void ambush_state::draw_chars( bitmap_ind16 &bitmap, const rectangle &cliprect,
scroll = ~scroll - 1;
}
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
(col & 0x0f) | ((*m_colorbank & 0x03) << 4),
flip_screen(), flip_screen(),
@@ -145,7 +145,7 @@ UINT32 ambush_state::screen_update_ambush(screen_device &screen, bitmap_ind16 &b
flipy = !flipy;
}
- m_gfxdecode->gfx(gfx)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(gfx)->transpen(m_palette,bitmap,cliprect,
code, col | ((*m_colorbank & 0x03) << 4),
flipx, flipy,
sx,sy,0);
diff --git a/src/mame/video/amiga.c b/src/mame/video/amiga.c
index 8cbbc5d9fb0..30a1080b832 100644
--- a/src/mame/video/amiga.c
+++ b/src/mame/video/amiga.c
@@ -99,7 +99,7 @@ PALETTE_INIT_MEMBER(amiga_state,amiga)
int i;
for (i = 0; i < 0x1000; i++)
- palette_set_color_rgb(machine(), i, pal4bit(i >> 8), pal4bit(i >> 4), pal4bit(i));
+ palette.set_pen_color(i, pal4bit(i >> 8), pal4bit(i >> 4), pal4bit(i));
}
diff --git a/src/mame/video/ampoker2.c b/src/mame/video/ampoker2.c
index bb567d0acb0..5e9d2376f31 100644
--- a/src/mame/video/ampoker2.c
+++ b/src/mame/video/ampoker2.c
@@ -71,7 +71,7 @@
#include "includes/ampoker2.h"
-void ampoker2_state::palette_init()
+PALETTE_INIT_MEMBER(ampoker2_state, ampoker2)
{
const UINT8 *color_prom = memregion("proms")->base();
/* - bits -
@@ -89,7 +89,7 @@ void ampoker2_state::palette_init()
2, resistances_b, weights_b, 0, 0);
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -108,7 +108,7 @@ void ampoker2_state::palette_init()
bit2 = (color_prom[i] >> 7) & 0x01;
r = combine_3_weights(weights_r, bit0, bit1, bit2);
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
}
diff --git a/src/mame/video/amspdwy.c b/src/mame/video/amspdwy.c
index d90d1195330..66307d0796a 100644
--- a/src/mame/video/amspdwy.c
+++ b/src/mame/video/amspdwy.c
@@ -18,9 +18,7 @@
WRITE8_MEMBER(amspdwy_state::amspdwy_paletteram_w)
{
- data ^= 0xff;
- paletteram_BBGGGRRR_byte_w(space, offset, data);
-// paletteram_RRRGGGBB_byte_w(offset, data);
+ m_palette->write(space, offset, UINT8(~data));
}
WRITE8_MEMBER(amspdwy_state::amspdwy_flipscreen_w)
@@ -122,7 +120,7 @@ void amspdwy_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
flipy = !flipy;
}
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
// code + ((attr & 0x18)<<5),
code + ((attr & 0x08)<<5),
attr,
diff --git a/src/mame/video/angelkds.c b/src/mame/video/angelkds.c
index 3fc32dd3a95..29d2e346a9b 100644
--- a/src/mame/video/angelkds.c
+++ b/src/mame/video/angelkds.c
@@ -162,7 +162,7 @@ void angelkds_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
if (enable & enable_n)
{
- gfx->transpen(
+ gfx->transpen(m_palette,
bitmap,
cliprect,
tile_no,
@@ -173,7 +173,7 @@ void angelkds_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
/* wraparound */
if (xpos > 240)
- gfx->transpen(
+ gfx->transpen(m_palette,
bitmap,
cliprect,
tile_no,
@@ -185,7 +185,7 @@ void angelkds_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
if (ypos > 240)
{
- gfx->transpen(
+ gfx->transpen(m_palette,
bitmap,
cliprect,
tile_no,
@@ -196,7 +196,7 @@ void angelkds_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
/* wraparound */
if (xpos > 240)
- gfx->transpen(
+ gfx->transpen(m_palette,
bitmap,
cliprect,
tile_no,
@@ -226,7 +226,7 @@ WRITE8_MEMBER(angelkds_state::angelkds_paletteram_w)
m_paletteram[offset] = data;
no = offset & 0xff;
- palette_set_color_rgb(machine(), no, pal4bit(m_paletteram[no]), pal4bit(m_paletteram[no]>>4), pal4bit(m_paletteram[no + 0x100]));
+ m_palette->set_pen_color(no, pal4bit(m_paletteram[no]), pal4bit(m_paletteram[no]>>4), pal4bit(m_paletteram[no + 0x100]));
}
/*** Video Start & Update
diff --git a/src/mame/video/appoooh.c b/src/mame/video/appoooh.c
index 3331228c681..81634f72a32 100644
--- a/src/mame/video/appoooh.c
+++ b/src/mame/video/appoooh.c
@@ -25,7 +25,7 @@ PALETTE_INIT_MEMBER(appoooh_state,appoooh)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
UINT8 pen;
int bit0, bit1, bit2, r, g, b;
@@ -55,7 +55,7 @@ PALETTE_INIT_MEMBER(appoooh_state,appoooh)
bit2 = (color_prom[pen] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -64,7 +64,7 @@ PALETTE_INIT_MEMBER(appoooh_state,robowres)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -88,7 +88,7 @@ PALETTE_INIT_MEMBER(appoooh_state,robowres)
bit2 = (color_prom[pen] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -222,7 +222,7 @@ void appoooh_state::appoooh_draw_sprites( bitmap_ind16 &dest_bmp, const rectangl
flipx = !flipx;
}
- gfx->transpen(dest_bmp,cliprect,
+ gfx->transpen(m_palette,dest_bmp,cliprect,
code,
color,
flipx,flipy,
@@ -253,7 +253,7 @@ void appoooh_state::robowres_draw_sprites( bitmap_ind16 &dest_bmp, const rectang
flipx = !flipx;
}
- gfx->transpen(dest_bmp,cliprect,
+ gfx->transpen(m_palette,dest_bmp,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/aquarium.c b/src/mame/video/aquarium.c
index 6ee2bac4a7d..d6fbdff5391 100644
--- a/src/mame/video/aquarium.c
+++ b/src/mame/video/aquarium.c
@@ -42,14 +42,14 @@ void aquarium_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
for (chain_pos = chain; chain_pos >= 0; chain_pos--)
{
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
col,
flipx, flipy,
curx,cury,0);
/* wrap around y */
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
col,
flipx, flipy,
diff --git a/src/mame/video/arabian.c b/src/mame/video/arabian.c
index 434c1929c0b..30fe9e7fe32 100644
--- a/src/mame/video/arabian.c
+++ b/src/mame/video/arabian.c
@@ -20,7 +20,7 @@
*
*************************************/
-void arabian_state::palette_init()
+PALETTE_INIT_MEMBER(arabian_state, arabian)
{
int i;
@@ -139,7 +139,7 @@ void arabian_state::palette_init()
b = (bhi * 192) + (bbase * 63);
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -365,7 +365,7 @@ WRITE8_MEMBER(arabian_state::arabian_videoram_w)
UINT32 arabian_state::screen_update_arabian(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- const pen_t *pens = &machine().pens[(m_video_control >> 3) << 8];
+ const pen_t *pens = &m_palette->pen((m_video_control >> 3) << 8);
int y;
/* render the screen from the bitmap */
diff --git a/src/mame/video/archimds.c b/src/mame/video/archimds.c
index b53e67d985c..b77699becf5 100644
--- a/src/mame/video/archimds.c
+++ b/src/mame/video/archimds.c
@@ -16,7 +16,7 @@ UINT32 archimedes_state::screen_update(screen_device &screen, bitmap_rgb32 &bitm
const UINT8 x_step[4] = { 5, 7, 11, 19 };
/* border color */
- bitmap.fill(machine().pens[0x10], cliprect);
+ bitmap.fill(m_palette->pen(0x10), cliprect);
/* define X display area through BPP mode register */
calc_dxs = (m_vidc_regs[VIDC_HDSR]*2)+x_step[m_vidc_bpp_mode & 3];
@@ -61,14 +61,14 @@ UINT32 archimedes_state::screen_update(screen_device &screen, bitmap_rgb32 &bitm
if(m_vidc_interlace)
{
if (cliprect.contains(res_x, res_y) && (res_x) <= xend && (res_y) <= yend)
- bitmap.pix32(res_y, res_x) = machine().pens[(pen>>(xi))&0x1];
+ bitmap.pix32(res_y, res_x) = m_palette->pen((pen>>(xi))&0x1);
if (cliprect.contains(res_x, res_y+1) && (res_x) <= xend && (res_y+1) <= yend)
- bitmap.pix32(res_y+1, res_x) = machine().pens[(pen>>(xi))&0x1];
+ bitmap.pix32(res_y+1, res_x) = m_palette->pen((pen>>(xi))&0x1);
}
else
{
if (cliprect.contains(res_x, res_y) && (res_x) <= xend && (res_y) <= yend)
- bitmap.pix32(res_y, res_x) = machine().pens[(pen>>(xi))&0x1];
+ bitmap.pix32(res_y, res_x) = m_palette->pen((pen>>(xi))&0x1);
}
}
@@ -91,14 +91,14 @@ UINT32 archimedes_state::screen_update(screen_device &screen, bitmap_rgb32 &bitm
if(m_vidc_interlace)
{
if (cliprect.contains(res_x, res_y) && (res_x) <= xend && (res_y) <= yend)
- bitmap.pix32(res_y, res_x) = machine().pens[(pen&0xff)+0x100];
+ bitmap.pix32(res_y, res_x) = m_palette->pen((pen&0xff)+0x100);
if (cliprect.contains(res_x, res_y) && (res_x) <= xend && (res_y+1) <= yend)
- bitmap.pix32(res_y+1, res_x) = machine().pens[(pen&0xff)+0x100];
+ bitmap.pix32(res_y+1, res_x) = m_palette->pen((pen&0xff)+0x100);
}
else
{
if (cliprect.contains(res_x, res_y) && (res_x) <= xend && (res_y) <= yend)
- bitmap.pix32(res_y, res_x) = machine().pens[(pen&0xff)+0x100];
+ bitmap.pix32(res_y, res_x) = m_palette->pen((pen&0xff)+0x100);
}
count++;
diff --git a/src/mame/video/argus.c b/src/mame/video/argus.c
index e265b281ea7..fea8396a378 100644
--- a/src/mame/video/argus.c
+++ b/src/mame/video/argus.c
@@ -376,7 +376,7 @@ void argus_state::argus_change_palette(int color, int lo_offs, int hi_offs)
UINT8 lo = m_paletteram[lo_offs];
UINT8 hi = m_paletteram[hi_offs];
jal_blend_set(color, hi & 0x0f);
- palette_set_color_rgb(machine(), color, pal4bit(lo >> 4), pal4bit(lo), pal4bit(hi >> 4));
+ m_palette->set_pen_color(color, pal4bit(lo >> 4), pal4bit(lo), pal4bit(hi >> 4));
}
void argus_state::argus_change_bg_palette(int color, int lo_offs, int hi_offs)
@@ -413,7 +413,7 @@ void argus_state::argus_change_bg_palette(int color, int lo_offs, int hi_offs)
rgb = jal_blend_func(rgb,irgb,ix);
- palette_set_color(machine(),color,rgb);
+ m_palette->set_pen_color(color,rgb);
}
@@ -840,7 +840,7 @@ void argus_state::argus_draw_sprites(bitmap_rgb32 &bitmap, const rectangle &clip
}
if (priority != pri)
- jal_blend_drawgfx(
+ jal_blend_drawgfx(m_palette,
bitmap,cliprect,m_gfxdecode->gfx(0),
tile,
color,
@@ -968,7 +968,7 @@ void argus_state::valtric_draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cl
flipy = !flipy;
}
- jal_blend_drawgfx(
+ jal_blend_drawgfx(m_palette,
bitmap,cliprect,m_gfxdecode->gfx(0),
tile,
color,
@@ -1019,7 +1019,7 @@ void argus_state::butasan_draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cl
if ((offs >= 0x100 && offs <= 0x2ff) || (offs >= 0x400 && offs <= 0x57f))
{
- jal_blend_drawgfx(
+ jal_blend_drawgfx(m_palette,
bitmap,cliprect,m_gfxdecode->gfx(0),
tile,
color,
@@ -1033,7 +1033,7 @@ void argus_state::butasan_draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cl
{
td = (fx) ? (1 - i) : i;
- jal_blend_drawgfx(
+ jal_blend_drawgfx(m_palette,
bitmap,cliprect,m_gfxdecode->gfx(0),
tile + td,
color,
@@ -1053,7 +1053,7 @@ void argus_state::butasan_draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cl
else
td = (fx) ? (i * 2) + 1 - j : i * 2 + j;
- jal_blend_drawgfx(
+ jal_blend_drawgfx(m_palette,
bitmap,cliprect,m_gfxdecode->gfx(0),
tile + td,
color,
@@ -1074,7 +1074,7 @@ void argus_state::butasan_draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cl
else
td = (fx) ? (i * 4) + 3 - j : i * 4 + j;
- jal_blend_drawgfx(
+ jal_blend_drawgfx(m_palette,
bitmap,cliprect,m_gfxdecode->gfx(0),
tile + td,
color,
@@ -1165,7 +1165,7 @@ UINT32 argus_state::screen_update_valtric(screen_device &screen, bitmap_rgb32 &b
if (m_bg_status & 1) /* Backgound enable */
valtric_draw_mosaic(screen, bitmap, cliprect);
else
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
valtric_draw_sprites(bitmap, cliprect);
m_tx_tilemap->draw(screen, bitmap, cliprect, 0, 0);
return 0;
@@ -1178,7 +1178,7 @@ UINT32 argus_state::screen_update_butasan(screen_device &screen, bitmap_rgb32 &b
if (m_bg_status & 1) /* Backgound enable */
m_bg0_tilemap->draw(screen, bitmap, cliprect, 0, 0);
else
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
if (m_butasan_bg1_status & 1) m_bg1_tilemap->draw(screen, bitmap, cliprect, 0, 0);
butasan_draw_sprites(bitmap, cliprect);
m_tx_tilemap->draw(screen, bitmap, cliprect, 0, 0);
diff --git a/src/mame/video/arkanoid.c b/src/mame/video/arkanoid.c
index 7a433b4cc9d..0bba5710ef2 100644
--- a/src/mame/video/arkanoid.c
+++ b/src/mame/video/arkanoid.c
@@ -191,12 +191,12 @@ void arkanoid_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
code = m_spriteram[offs + 3] + ((m_spriteram[offs + 2] & 0x03) << 8) + 1024 * m_gfxbank;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
2 * code,
((m_spriteram[offs + 2] & 0xf8) >> 3) + 32 * m_palettebank,
flip_screen_x(),flip_screen_y(),
sx,sy + (flip_screen_y() ? 8 : -8),0);
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
2 * code + 1,
((m_spriteram[offs + 2] & 0xf8) >> 3) + 32 * m_palettebank,
flip_screen_x(),flip_screen_y(),
diff --git a/src/mame/video/armedf.c b/src/mame/video/armedf.c
index be38158d06e..91e7de663ee 100644
--- a/src/mame/video/armedf.c
+++ b/src/mame/video/armedf.c
@@ -260,7 +260,7 @@ void armedf_state::armedf_drawgfx(bitmap_ind16 &dest_bmp,const rectangle &clip,g
UINT32 code,UINT32 color, UINT32 clut,int flipx,int flipy,int offsx,int offsy,
int transparent_color)
{
- const pen_t *pal = &gfx->machine().pens[gfx->colorbase() + gfx->granularity() * (color % gfx->colors())];
+ const pen_t *pal = &m_palette->pen(gfx->colorbase() + gfx->granularity() * (color % gfx->colors()));
const UINT8 *source_base = gfx->get_data(code % gfx->elements());
int x_index_base, y_index, sx, sy, ex, ey;
int xinc, yinc;
diff --git a/src/mame/video/astrocde.c b/src/mame/video/astrocde.c
index bb20e4cbb59..91c8ae4a0c5 100644
--- a/src/mame/video/astrocde.c
+++ b/src/mame/video/astrocde.c
@@ -61,7 +61,7 @@ inline int astrocde_state::mame_vpos_to_astrocade_vpos(int scanline)
*
*************************************/
-void astrocde_state::palette_init()
+PALETTE_INIT_MEMBER(astrocde_state, astrocde)
{
/*
The Astrocade has a 256 color palette: 32 colors with 8 luminance
@@ -104,7 +104,7 @@ void astrocde_state::palette_init()
g = MIN(g, 255);
b = MAX(b, 0);
b = MIN(b, 255);
- palette_set_color(machine(), color * 16 + luma, rgb_t(r, g, b));
+ palette.set_pen_color(color * 16 + luma, rgb_t(r, g, b));
}
}
}
@@ -150,7 +150,7 @@ PALETTE_INIT_MEMBER(astrocde_state,profpac)
bit3 = (i >> 11) & 0x01;
r = combine_4_weights(weights, bit0, bit1, bit2, bit3);
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
diff --git a/src/mame/video/atari.c b/src/mame/video/atari.c
index ac5296295dc..2f9c9a21f9d 100644
--- a/src/mame/video/atari.c
+++ b/src/mame/video/atari.c
@@ -708,6 +708,7 @@ static void cclk_init(void)
************************************************************************/
VIDEO_START( atari )
{
+ driver_device *state = machine.driver_data<driver_device>();
int i;
LOG(("atari antic_vh_start\n"));
@@ -744,7 +745,7 @@ VIDEO_START( atari )
/* reset the ANTIC color tables */
for( i = 0; i < 256; i ++ )
- antic.color_lookup[i] = (machine.pens[0] << 8) + machine.pens[0];
+ antic.color_lookup[i] = (state->m_palette->pen(0) << 8) + state->m_palette->pen(0);
LOG(("atari cclk_init\n"));
cclk_init();
@@ -1656,6 +1657,6 @@ PALETTE_INIT( atari )
for ( i = 0; i < sizeof(atari_palette) / 3; i++ )
{
- palette_set_color_rgb(machine, i, atari_palette[i*3], atari_palette[i*3+1], atari_palette[i*3+2]);
+ palette.set_pen_color(i, atari_palette[i*3], atari_palette[i*3+1], atari_palette[i*3+2]);
}
}
diff --git a/src/mame/video/atarifb.c b/src/mame/video/atarifb.c
index f2caf0cad3d..5e31720d711 100644
--- a/src/mame/video/atarifb.c
+++ b/src/mame/video/atarifb.c
@@ -139,14 +139,14 @@ void atarifb_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
{
shade = ((m_spriteram[obj * 2 + 1 + 0x20]) & 0x07);
- m_gfxdecode->gfx(gfx + 1)->transpen(bitmap,bigfield_area,
+ m_gfxdecode->gfx(gfx + 1)->transpen(m_palette,bitmap,bigfield_area,
charcode, shade,
flipx, flipy, sx, sy, 0);
shade = ((m_spriteram[obj * 2 + 1 + 0x20]) & 0x08) >> 3;
}
- m_gfxdecode->gfx(gfx)->transpen(bitmap,bigfield_area,
+ m_gfxdecode->gfx(gfx)->transpen(m_palette,bitmap,bigfield_area,
charcode, shade,
flipx, flipy, sx, sy, 0);
@@ -158,7 +158,7 @@ void atarifb_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
if ((charcode == 0x11) && (sy == 0x07))
{
sy = 0xf1; /* When multiplexed, it's 0x10...why? */
- m_gfxdecode->gfx(gfx)->transpen(bitmap,bigfield_area,
+ m_gfxdecode->gfx(gfx)->transpen(m_palette,bitmap,bigfield_area,
charcode, 0,
flipx, flipy, sx, sy, 0);
}
diff --git a/src/mame/video/atarigt.c b/src/mame/video/atarigt.c
index 5229ef89c67..5a0b8bc4c8d 100644
--- a/src/mame/video/atarigt.c
+++ b/src/mame/video/atarigt.c
@@ -78,24 +78,12 @@ TILEMAP_MAPPER_MEMBER(atarigt_state::atarigt_playfield_scan)
VIDEO_START_MEMBER(atarigt_state,atarigt)
{
- pen_t *substitute_pens;
- int i, width, height;
-
/* blend the playfields and free the temporary one */
blend_gfx(0, 2, 0x0f, 0x30);
/* allocate temp bitmaps */
- width = m_screen->width();
- height = m_screen->height();
-
- m_pf_bitmap = auto_bitmap_ind16_alloc(machine(), width, height);
- m_an_bitmap = auto_bitmap_ind16_alloc(machine(), width, height);
-
- /* map pens 1:1 */
- substitute_pens = auto_alloc_array(machine(), pen_t, 65536);
- for (i = 0; i < machine().total_colors(); i++)
- substitute_pens[i] = i;
- machine().pens = substitute_pens;
+ m_screen->register_screen_bitmap(m_pf_bitmap);
+ m_screen->register_screen_bitmap(m_an_bitmap);
/* reset statics */
memset(m_colorram, 0, 0x80000);
@@ -506,10 +494,10 @@ UINT32 atarigt_state::screen_update_atarigt(screen_device &screen, bitmap_rgb32
int x, y;
/* draw the playfield */
- m_playfield_tilemap->draw(screen, *m_pf_bitmap, cliprect, 0, 0);
+ m_playfield_tilemap->draw(screen, m_pf_bitmap, cliprect, 0, 0);
/* draw the alpha layer */
- m_alpha_tilemap->draw(screen, *m_an_bitmap, cliprect, 0, 0);
+ m_alpha_tilemap->draw(screen, m_an_bitmap, cliprect, 0, 0);
/* cache pointers */
color_latch = m_colorram[0x30000/2];
@@ -520,8 +508,8 @@ UINT32 atarigt_state::screen_update_atarigt(screen_device &screen, bitmap_rgb32
/* now do the nasty blend */
for (y = cliprect.min_y; y <= cliprect.max_y; y++)
{
- UINT16 *an = &m_an_bitmap->pix16(y);
- UINT16 *pf = &m_pf_bitmap->pix16(y);
+ UINT16 *an = &m_an_bitmap.pix16(y);
+ UINT16 *pf = &m_pf_bitmap.pix16(y);
UINT16 *mo = &mo_bitmap.pix16(y);
UINT16 *tm = &tm_bitmap.pix16(y);
UINT32 *dst = &bitmap.pix32(y);
diff --git a/src/mame/video/atarisy2.c b/src/mame/video/atarisy2.c
index a59f265896b..55569ef3636 100644
--- a/src/mame/video/atarisy2.c
+++ b/src/mame/video/atarisy2.c
@@ -194,7 +194,7 @@ WRITE16_MEMBER( atarisy2_state::paletteram_w )
red = (color_table[(newword >> 12) & 15] * inten) >> 4;
green = (color_table[(newword >> 8) & 15] * inten) >> 4;
blue = (color_table[(newword >> 4) & 15] * inten) >> 4;
- palette_set_color(space.machine(), offset, rgb_t(red, green, blue));
+ m_palette->set_pen_color(offset, rgb_t(red, green, blue));
}
diff --git a/src/mame/video/bagman.c b/src/mame/video/bagman.c
index caacb2a7311..aa7ea321730 100644
--- a/src/mame/video/bagman.c
+++ b/src/mame/video/bagman.c
@@ -57,7 +57,7 @@ PALETTE_INIT_MEMBER(bagman_state,bagman)
2, resistances_b, weights_b, 470, 0);
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -76,7 +76,7 @@ PALETTE_INIT_MEMBER(bagman_state,bagman)
bit1 = (color_prom[i] >> 7) & 0x01;
b = combine_2_weights(weights_b, bit0, bit1);
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
}
@@ -123,7 +123,7 @@ void bagman_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
}
if (spriteram[offs + 2] && spriteram[offs + 3])
- m_gfxdecode->gfx(1)->transpen(bitmap,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,
cliprect,
(spriteram[offs] & 0x3f) + 2 * (spriteram[offs + 1] & 0x20),
spriteram[offs + 1] & 0x1f,
diff --git a/src/mame/video/balsente.c b/src/mame/video/balsente.c
index 6d3fa7d11f4..2948ebf5ee7 100644
--- a/src/mame/video/balsente.c
+++ b/src/mame/video/balsente.c
@@ -90,7 +90,7 @@ WRITE8_MEMBER(balsente_state::balsente_paletteram_w)
g = m_generic_paletteram_8[(offset & ~3) + 1];
b = m_generic_paletteram_8[(offset & ~3) + 2];
- palette_set_color_rgb(machine(), offset / 4, pal4bit(r), pal4bit(g), pal4bit(b));
+ m_palette->set_pen_color(offset / 4, pal4bit(r), pal4bit(g), pal4bit(b));
}
@@ -139,7 +139,7 @@ void balsente_state::draw_one_sprite(bitmap_ind16 &bitmap, const rectangle &clip
{
if (ypos >= (16 + BALSENTE_VBEND) && ypos >= cliprect.min_y && ypos <= cliprect.max_y)
{
- const pen_t *pens = &machine().pens[m_palettebank_vis * 256];
+ const pen_t *pens = &m_palette->pen(m_palettebank_vis * 256);
UINT8 *old = &m_expanded_videoram[(ypos - BALSENTE_VBEND) * 256 + xpos];
int currx = xpos;
@@ -206,7 +206,7 @@ void balsente_state::draw_one_sprite(bitmap_ind16 &bitmap, const rectangle &clip
UINT32 balsente_state::screen_update_balsente(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- const pen_t *pens = &machine().pens[m_palettebank_vis * 256];
+ const pen_t *pens = &m_palette->pen(m_palettebank_vis * 256);
int y, i;
/* draw scanlines from the VRAM directly */
diff --git a/src/mame/video/bankp.c b/src/mame/video/bankp.c
index e743ce07514..cead7afa399 100644
--- a/src/mame/video/bankp.c
+++ b/src/mame/video/bankp.c
@@ -33,14 +33,11 @@
***************************************************************************/
-void bankp_state::palette_init()
+PALETTE_INIT_MEMBER(bankp_state, bankp)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 32);
-
for (i = 0; i < 32; i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -61,7 +58,7 @@ void bankp_state::palette_init()
bit2 = (*color_prom >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r,g,b));
+ palette.set_indirect_color(i, rgb_t(r,g,b));
color_prom++;
}
@@ -70,13 +67,13 @@ void bankp_state::palette_init()
/* charset #1 lookup table */
for (i = 0; i < m_gfxdecode->gfx(0)->colors() * m_gfxdecode->gfx(0)->granularity(); i++)
- colortable_entry_set_value(machine().colortable, m_gfxdecode->gfx(0)->colorbase() + i, *color_prom++ & 0x0f);
+ palette.set_pen_indirect(m_gfxdecode->gfx(0)->colorbase() + i, *color_prom++ & 0x0f);
color_prom += 128; /* skip the bottom half of the PROM - seems to be not used */
/* charset #2 lookup table */
for (i = 0; i < m_gfxdecode->gfx(1)->colors() * m_gfxdecode->gfx(1)->granularity(); i++)
- colortable_entry_set_value(machine().colortable, m_gfxdecode->gfx(1)->colorbase() + i, *color_prom++ & 0x0f);
+ palette.set_pen_indirect(m_gfxdecode->gfx(1)->colorbase() + i, *color_prom++ & 0x0f);
/* the bottom half of the PROM seems to be not used */
}
@@ -152,8 +149,8 @@ void bankp_state::video_start()
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(bankp_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
m_fg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(bankp_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
- colortable_configure_tilemap_groups(machine().colortable, m_bg_tilemap, m_gfxdecode->gfx(1), 0);
- colortable_configure_tilemap_groups(machine().colortable, m_fg_tilemap, m_gfxdecode->gfx(0), 0);
+ m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(1), 0);
+ m_palette->configure_tilemap_groups(*m_fg_tilemap, *m_gfxdecode->gfx(0), 0);
save_item(NAME(m_scroll_x));
save_item(NAME(m_priority));
diff --git a/src/mame/video/baraduke.c b/src/mame/video/baraduke.c
index 35fb6d36c43..bc03da3cc35 100644
--- a/src/mame/video/baraduke.c
+++ b/src/mame/video/baraduke.c
@@ -15,7 +15,7 @@
***************************************************************************/
-void baraduke_state::palette_init()
+PALETTE_INIT_MEMBER(baraduke_state, baraduke)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -44,7 +44,7 @@ void baraduke_state::palette_init()
bit3 = (color_prom[0] >> 7) & 0x01;
b = 0x0e*bit0 + 0x1f*bit1 + 0x43*bit2 + 0x8f*bit3;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
color_prom++;
}
}
@@ -270,7 +270,7 @@ void baraduke_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
{
for (x = 0;x <= sizex;x++)
{
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect,
sprite + gfx_offs[y ^ (sizey * flipy)][x ^ (sizex * flipx)],
color,
flipx,flipy,
diff --git a/src/mame/video/battlane.c b/src/mame/video/battlane.c
index 785e6821799..3718155e8a9 100644
--- a/src/mame/video/battlane.c
+++ b/src/mame/video/battlane.c
@@ -41,7 +41,7 @@ WRITE8_MEMBER(battlane_state::battlane_palette_w)
bit2 = (~data >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), offset, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset, rgb_t(r, g, b));
}
WRITE8_MEMBER(battlane_state::battlane_scrollx_w)
@@ -181,7 +181,7 @@ void battlane_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
}
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx, flipy,
@@ -192,7 +192,7 @@ void battlane_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
dy = flipy ? 16 : -16;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code + 1,
color,
flipx, flipy,
diff --git a/src/mame/video/battlera.c b/src/mame/video/battlera.c
index 724fa339df5..b14244f5ac3 100644
--- a/src/mame/video/battlera.c
+++ b/src/mame/video/battlera.c
@@ -45,7 +45,7 @@ WRITE8_MEMBER(battlera_state::battlera_palette_w)
if (offset%2) offset-=1;
pal_word=m_generic_paletteram_8[offset] | (m_generic_paletteram_8[offset+1]<<8);
- palette_set_color_rgb(machine(), offset/2, pal3bit(pal_word >> 3), pal3bit(pal_word >> 6), pal3bit(pal_word >> 0));
+ m_palette->set_pen_color(offset/2, pal3bit(pal_word >> 3), pal3bit(pal_word >> 6), pal3bit(pal_word >> 0));
}
/******************************************************************************/
@@ -272,14 +272,14 @@ void battlera_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &clip,int
if (fy) { my += 16*(cgy-1); yinc = -16; } /* Swap tile order on Y flips */
for (i=0; i<cgy; i++) {
- m_gfxdecode->gfx(1)->transpen(bitmap,clip,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,clip,
code,
colour,
fx,fy,
mx,my,0);
if (cgx)
- m_gfxdecode->gfx(1)->transpen(bitmap,clip,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,clip,
code2,
colour,
fx,fy,
@@ -318,17 +318,17 @@ UINT32 battlera_state::screen_update_battlera(screen_device &screen, bitmap_ind1
/* If this tile was changed OR tilemap was changed, redraw */
if (m_vram_dirty[offs/2]) {
m_vram_dirty[offs/2]=0;
- m_gfxdecode->gfx(0)->opaque(*m_tile_bitmap,m_tile_bitmap->cliprect(),
+ m_gfxdecode->gfx(0)->opaque(m_palette,*m_tile_bitmap,m_tile_bitmap->cliprect(),
code,
m_HuC6270_vram[offs] >> 4,
0,0,
8*mx,8*my);
- m_gfxdecode->gfx(2)->opaque(*m_front_bitmap,m_tile_bitmap->cliprect(),
+ m_gfxdecode->gfx(2)->opaque(m_palette,*m_front_bitmap,m_tile_bitmap->cliprect(),
0,
0, /* fill the spot with pen 256 */
0,0,
8*mx,8*my);
- m_gfxdecode->gfx(0)->transmask(*m_front_bitmap,m_tile_bitmap->cliprect(),
+ m_gfxdecode->gfx(0)->transmask(m_palette,*m_front_bitmap,m_tile_bitmap->cliprect(),
code,
m_HuC6270_vram[offs] >> 4,
0,0,
diff --git a/src/mame/video/battlex.c b/src/mame/video/battlex.c
index e6c0757776a..a92ff1e5441 100644
--- a/src/mame/video/battlex.c
+++ b/src/mame/video/battlex.c
@@ -10,7 +10,7 @@
WRITE8_MEMBER(battlex_state::battlex_palette_w)
{
- palette_set_color_rgb(machine(), offset, pal1bit(data >> 0), pal1bit(data >> 2), pal1bit(data >> 1));
+ m_palette->set_pen_color(offset, pal1bit(data >> 0), pal1bit(data >> 2), pal1bit(data >> 1));
}
WRITE8_MEMBER(battlex_state::battlex_scroll_x_lsb_w)
@@ -81,7 +81,7 @@ void battlex_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
flipy = !flipy;
}
- gfx->transpen(bitmap,cliprect, tile, color, flipx, flipy, sx, sy, 0);
+ gfx->transpen(m_palette,bitmap,cliprect, tile, color, flipx, flipy, sx, sy, 0);
source += 4;
}
diff --git a/src/mame/video/beathead.c b/src/mame/video/beathead.c
index 851b573e4f7..38b785406e6 100644
--- a/src/mame/video/beathead.c
+++ b/src/mame/video/beathead.c
@@ -109,7 +109,7 @@ WRITE32_MEMBER( beathead_state::palette_w )
int r = ((newword >> 9) & 0x3e) | ((newword >> 15) & 0x01);
int g = ((newword >> 4) & 0x3e) | ((newword >> 15) & 0x01);
int b = ((newword << 1) & 0x3e) | ((newword >> 15) & 0x01);
- palette_set_color_rgb(space.machine(), offset, pal6bit(r), pal6bit(g), pal6bit(b));
+ m_palette->set_pen_color(offset, pal6bit(r), pal6bit(g), pal6bit(b));
}
diff --git a/src/mame/video/beezer.c b/src/mame/video/beezer.c
index ec606e93365..4ae88f817b3 100644
--- a/src/mame/video/beezer.c
+++ b/src/mame/video/beezer.c
@@ -63,7 +63,7 @@ WRITE8_MEMBER(beezer_state::beezer_map_w)
bit1 = (data >> 7) & 0x01;
b = 0x5f * bit0 + 0xa0 * bit1;
- palette_set_color(machine(), offset, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset, rgb_t(r, g, b));
}
READ8_MEMBER(beezer_state::beezer_line_r)
diff --git a/src/mame/video/bfm_adr2.c b/src/mame/video/bfm_adr2.c
index 25a942b7180..fb8d32d0428 100644
--- a/src/mame/video/bfm_adr2.c
+++ b/src/mame/video/bfm_adr2.c
@@ -118,7 +118,8 @@ const device_type BFM_ADDER2 = &device_creator<bfm_adder2_device>;
bfm_adder2_device::bfm_adder2_device( const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock )
: device_t(mconfig, BFM_ADDER2, "BFM ADDER2", tag, owner, clock, "bfm_adder2", __FILE__),
m_cpu(*this, "adder2"),
- m_gfxdecode(*this, "gfxdecode")
+ m_gfxdecode(*this, "gfxdecode"),
+ m_palette(*this, "palette")
{
}
@@ -209,22 +210,22 @@ void bfm_adder2_device::device_start()
m_tilemap1 = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(bfm_adder2_device::get_tile1_info),this), TILEMAP_SCAN_ROWS, 8, 8, 50, 35);
- palette_set_color(machine(), 0,rgb_t(0x00,0x00,0x00));
- palette_set_color(machine(), 1,rgb_t(0x00,0x00,0xFF));
- palette_set_color(machine(), 2,rgb_t(0x00,0xFF,0x00));
- palette_set_color(machine(), 3,rgb_t(0x00,0xFF,0xFF));
- palette_set_color(machine(), 4,rgb_t(0xFF,0x00,0x00));
- palette_set_color(machine(), 5,rgb_t(0xFF,0x00,0xFF));
- palette_set_color(machine(), 6,rgb_t(0xFF,0xFF,0x00));
- palette_set_color(machine(), 7,rgb_t(0xFF,0xFF,0xFF));
- palette_set_color(machine(), 8,rgb_t(0x80,0x80,0x80));
- palette_set_color(machine(), 9,rgb_t(0x00,0x00,0x80));
- palette_set_color(machine(),10,rgb_t(0x00,0x80,0x00));
- palette_set_color(machine(),11,rgb_t(0x00,0x80,0x80));
- palette_set_color(machine(),12,rgb_t(0x80,0x00,0x00));
- palette_set_color(machine(),13,rgb_t(0x80,0x00,0x80));
- palette_set_color(machine(),14,rgb_t(0x80,0x80,0x00));
- palette_set_color(machine(),15,rgb_t(0x80,0x80,0x80));
+ m_palette->set_pen_color(0,rgb_t(0x00,0x00,0x00));
+ m_palette->set_pen_color(1,rgb_t(0x00,0x00,0xFF));
+ m_palette->set_pen_color(2,rgb_t(0x00,0xFF,0x00));
+ m_palette->set_pen_color(3,rgb_t(0x00,0xFF,0xFF));
+ m_palette->set_pen_color(4,rgb_t(0xFF,0x00,0x00));
+ m_palette->set_pen_color(5,rgb_t(0xFF,0x00,0xFF));
+ m_palette->set_pen_color(6,rgb_t(0xFF,0xFF,0x00));
+ m_palette->set_pen_color(7,rgb_t(0xFF,0xFF,0xFF));
+ m_palette->set_pen_color(8,rgb_t(0x80,0x80,0x80));
+ m_palette->set_pen_color(9,rgb_t(0x00,0x00,0x80));
+ m_palette->set_pen_color(10,rgb_t(0x00,0x80,0x00));
+ m_palette->set_pen_color(11,rgb_t(0x00,0x80,0x80));
+ m_palette->set_pen_color(12,rgb_t(0x80,0x00,0x00));
+ m_palette->set_pen_color(13,rgb_t(0x80,0x00,0x80));
+ m_palette->set_pen_color(14,rgb_t(0x80,0x80,0x00));
+ m_palette->set_pen_color(15,rgb_t(0x80,0x80,0x80));
}
// video update ///////////////////////////////////////////////////////////
@@ -272,7 +273,7 @@ WRITE8_MEMBER( bfm_adder2_device::screen_ram_w )
r = ((data & 0x18)>>3) * 85; // 00011000b = 0x18
g = ((data & 0x06)>>1) * 85; // 00000110b = 0x06
b = ((data & 0x01) ) * 255;
- palette_set_color(space.machine(), pal, rgb_t(r,g,b));
+ m_palette->set_pen_color(pal, rgb_t(r,g,b));
}
if ( m_adder2_screen_page_reg & SL_ACCESS )
@@ -546,7 +547,7 @@ static MACHINE_CONFIG_FRAGMENT( adder2 )
MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, bfm_adder2_device, update_screen)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
MCFG_GFXDECODE_ADD("gfxdecode", adder2)
MCFG_CPU_ADD("adder2", M6809, ADDER_CLOCK/4 ) // adder2 board 6809 CPU at 2 Mhz
diff --git a/src/mame/video/bfm_adr2.h b/src/mame/video/bfm_adr2.h
index 38359817a7b..f5ea8b63b5e 100644
--- a/src/mame/video/bfm_adr2.h
+++ b/src/mame/video/bfm_adr2.h
@@ -7,6 +7,8 @@ public:
// construction/destruction
bfm_adder2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ static void static_set_palette_tag(device_t &device, const char *tag);
+
TILE_GET_INFO_MEMBER( get_tile0_info );
TILE_GET_INFO_MEMBER( get_tile1_info );
UINT32 update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@@ -60,6 +62,7 @@ private:
optional_device<cpu_device> m_cpu;
required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
};
// device type definition
@@ -73,4 +76,7 @@ extern const device_type BFM_ADDER2;
#define MCFG_BFM_ADDER2_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, BFM_ADDER2, 0)
+#define MCFG_BFM_ADDER2_PALETTE(_palette_tag) \
+ bfm_adder2_device::static_set_palette_tag(*device, "^" _palette_tag);
+
#endif
diff --git a/src/mame/video/bigevglf.c b/src/mame/video/bigevglf.c
index 4eee07dc4ec..dbd33865ed6 100644
--- a/src/mame/video/bigevglf.c
+++ b/src/mame/video/bigevglf.c
@@ -15,7 +15,7 @@ WRITE8_MEMBER(bigevglf_state::bigevglf_palette_w)
m_paletteram[offset] = data;
color = m_paletteram[offset & 0x3ff] | (m_paletteram[0x400 + (offset & 0x3ff)] << 8);
- palette_set_color_rgb(machine(), offset & 0x3ff, pal4bit(color >> 4), pal4bit(color >> 0), pal4bit(color >> 8));
+ m_palette->set_pen_color(offset & 0x3ff, pal4bit(color >> 4), pal4bit(color >> 0), pal4bit(color >> 8));
}
WRITE8_MEMBER(bigevglf_state::bigevglf_gfxcontrol_w)
@@ -74,7 +74,7 @@ void bigevglf_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
sx = m_spriteram2[i + 3];
sy = 200 - m_spriteram2[i];
for (j = 0; j < 16; j++)
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
m_spriteram1[(code << 4) + j] + ((m_spriteram1[0x400 + (code << 4) + j] & 0xf) << 8),
m_spriteram2[i + 2] & 0xf,
0,0,
diff --git a/src/mame/video/bigstrkb.c b/src/mame/video/bigstrkb.c
index 468629170e2..94444461ece 100644
--- a/src/mame/video/bigstrkb.c
+++ b/src/mame/video/bigstrkb.c
@@ -40,7 +40,7 @@ void bigstrkb_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
flipx = attr & 0x0100;
col = attr & 0x000f;
- gfx->transpen(bitmap,cliprect,num,col,flipx,0,xpos,ypos,15);
+ gfx->transpen(m_palette,bitmap,cliprect,num,col,flipx,0,xpos,ypos,15);
source+=8;
}
}
@@ -122,7 +122,7 @@ void bigstrkb_state::video_start()
UINT32 bigstrkb_state::screen_update_bigstrkb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
-// bitmap.fill(get_black_pen(machine()), cliprect);
+// bitmap.fill(m_palette->black_pen(), cliprect);
m_tilemap2->set_scrollx(0, m_vidreg1[0]+(256-14));
m_tilemap2->set_scrolly(0, m_vidreg2[0]);
diff --git a/src/mame/video/bionicc.c b/src/mame/video/bionicc.c
index e94a76357ef..e02e279280e 100644
--- a/src/mame/video/bionicc.c
+++ b/src/mame/video/bionicc.c
@@ -142,7 +142,7 @@ WRITE16_MEMBER(bionicc_state::bionicc_paletteram_w)
b = b * (0x07 + bright) / 0x0e;
}
- palette_set_color (machine(), offset, rgb_t(r, g, b));
+ m_palette->set_pen_color (offset, rgb_t(r, g, b));
}
WRITE16_MEMBER(bionicc_state::bionicc_scroll_w)
@@ -217,7 +217,7 @@ void bionicc_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
flipy = !flipy;
}
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
tile_number,
color,
flipx,flipy,
@@ -228,7 +228,7 @@ void bionicc_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
UINT32 bionicc_state::screen_update_bionicc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
m_fg_tilemap->draw(screen, bitmap, cliprect, 1 | TILEMAP_DRAW_LAYER1, 0); /* nothing in FRONT */
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
m_fg_tilemap->draw(screen, bitmap, cliprect, 0 | TILEMAP_DRAW_LAYER1, 0);
diff --git a/src/mame/video/bking.c b/src/mame/video/bking.c
index 0ae24b05f57..ed173748bc4 100644
--- a/src/mame/video/bking.c
+++ b/src/mame/video/bking.c
@@ -28,7 +28,7 @@
***************************************************************************/
-void bking_state::palette_init()
+PALETTE_INIT_MEMBER(bking_state, bking)
{
const UINT8 *color_prom = memregion("proms")->base();
static const int resistances_rg[3] = { 220, 390, 820 };
@@ -42,7 +42,7 @@ void bking_state::palette_init()
3, &resistances_rg[0], gweights, 0, 0,
2, &resistances_b[0], bweights, 0, 0);
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
UINT16 pen;
int bit0, bit1, bit2, r, g, b;
@@ -78,7 +78,7 @@ void bking_state::palette_init()
bit1 = (color_prom[pen] >> 7) & 0x01;
b = combine_2_weights(gweights, bit0, bit1);
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -229,20 +229,20 @@ UINT32 bking_state::screen_update_bking(screen_device &screen, bitmap_ind16 &bit
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
/* draw the balls */
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
m_ball1_pic,
m_palette_bank,
0, 0,
m_xld1, m_yld1, 0);
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect,
m_ball2_pic,
m_palette_bank,
0, 0,
m_xld2, m_yld2, 0);
/* draw the crow */
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
m_crow_pic,
m_palette_bank,
m_crow_flip, m_crow_flip,
@@ -269,7 +269,7 @@ void bking_state::screen_eof_bking(screen_device &screen, bool state)
xld = m_xld1;
yld = m_yld1;
- m_gfxdecode->gfx(2)->opaque(m_colmap_ball,rect, m_ball1_pic, 0, 0, 0, 0, 0);
+ m_gfxdecode->gfx(2)->opaque(m_palette,m_colmap_ball,rect, m_ball1_pic, 0, 0, 0, 0, 0);
latch = 0x0c00;
}
@@ -278,7 +278,7 @@ void bking_state::screen_eof_bking(screen_device &screen, bool state)
xld = m_xld2;
yld = m_yld2;
- m_gfxdecode->gfx(3)->opaque(m_colmap_ball,rect, m_ball2_pic, 0, 0, 0, 0, 0);
+ m_gfxdecode->gfx(3)->opaque(m_palette,m_colmap_ball,rect, m_ball2_pic, 0, 0, 0, 0, 0);
latch = 0x0400;
}
diff --git a/src/mame/video/bladestl.c b/src/mame/video/bladestl.c
index f447251d26c..0c533aaca37 100644
--- a/src/mame/video/bladestl.c
+++ b/src/mame/video/bladestl.c
@@ -2,23 +2,20 @@
#include "includes/bladestl.h"
-void bladestl_state::palette_init()
+PALETTE_INIT_MEMBER(bladestl_state, bladestl)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x30);
-
/* characters use pens 0x00-0x1f, no look-up table */
for (i = 0; i < 0x20; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
/* sprites use pens 0x20-0x2f */
for (i = 0x20; i < 0x120; i++)
{
UINT8 ctabentry = (color_prom[i - 0x20] & 0x0f) | 0x20;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -34,7 +31,7 @@ static void set_pens( running_machine &machine )
rgb_t color = rgb_t(pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
- colortable_palette_set_color(machine.colortable, i >> 1, color);
+ state->m_palette->set_indirect_color(i >> 1, color);
}
}
diff --git a/src/mame/video/blktiger.c b/src/mame/video/blktiger.c
index b50490e9a95..4f89e2a0a02 100644
--- a/src/mame/video/blktiger.c
+++ b/src/mame/video/blktiger.c
@@ -207,7 +207,7 @@ void blktiger_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
flipx = !flipx;
}
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flip_screen(),
diff --git a/src/mame/video/blmbycar.c b/src/mame/video/blmbycar.c
index 9150ce253cf..d30b5fd5cdf 100644
--- a/src/mame/video/blmbycar.c
+++ b/src/mame/video/blmbycar.c
@@ -45,7 +45,7 @@ Note: if MAME_DEBUG is defined, pressing Z with:
WRITE16_MEMBER(blmbycar_state::blmbycar_palette_w)
{
data = COMBINE_DATA(&m_paletteram[offset]);
- palette_set_color_rgb( machine(), offset, pal4bit(data >> 4), pal4bit(data >> 0), pal4bit(data >> 8));
+ m_palette->set_pen_color( offset, pal4bit(data >> 4), pal4bit(data >> 0), pal4bit(data >> 8));
}
@@ -191,7 +191,7 @@ void blmbycar_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap,
x = (x & 0x1ff) - 0x10;
y = 0xf0 - ((y & 0xff) - (y & 0x100));
- m_gfxdecode->gfx(0)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->prio_transpen(m_palette,bitmap,cliprect,
code,
0x20 + (attr & 0xf),
flipx, flipy,
diff --git a/src/mame/video/blockout.c b/src/mame/video/blockout.c
index 42e9a0045ca..c41451f5cca 100644
--- a/src/mame/video/blockout.c
+++ b/src/mame/video/blockout.c
@@ -35,7 +35,7 @@ void blockout_state::setcolor( int color, int rgb )
bit3 = (rgb >> 11) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- palette_set_color(machine(), color, rgb_t(r,g,b));
+ m_palette->set_pen_color(color, rgb_t(r,g,b));
}
WRITE16_MEMBER(blockout_state::blockout_paletteram_w)
diff --git a/src/mame/video/bloodbro.c b/src/mame/video/bloodbro.c
index 2ef87c58d79..c318c4192de 100644
--- a/src/mame/video/bloodbro.c
+++ b/src/mame/video/bloodbro.c
@@ -170,7 +170,7 @@ void bloodbro_state::bloodbro_draw_sprites(screen_device &screen, bitmap_ind16 &
{
for (y = 0;y <= height;y++)
{
- m_gfxdecode->gfx(3)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->prio_transpen(m_palette,bitmap,cliprect,
tile_number++,
color,
flipx,flipy,
@@ -215,7 +215,7 @@ void bloodbro_state::weststry_draw_sprites(screen_device &screen, bitmap_ind16 &
/* Remap code 0x800 <-> 0x1000 */
code = (code&0x7ff) | ((code&0x800)<<1) | ((code&0x1000)>>1);
- m_gfxdecode->gfx(3)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->prio_transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/blueprnt.c b/src/mame/video/blueprnt.c
index 532b84f2a44..c638d9068ce 100644
--- a/src/mame/video/blueprnt.c
+++ b/src/mame/video/blueprnt.c
@@ -20,11 +20,11 @@
***************************************************************************/
-void blueprnt_state::palette_init()
+PALETTE_INIT_MEMBER(blueprnt_state, blueprnt)
{
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
UINT8 pen;
int r, g, b;
@@ -42,7 +42,7 @@ void blueprnt_state::palette_init()
g = ((pen >> 2) & 1) * ((pen & 0x08) ? 0xbf : 0xff);
b = ((pen >> 1) & 1) * ((pen & 0x08) ? 0xbf : 0xff);
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -145,7 +145,7 @@ void blueprnt_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
}
// sprites are slightly misplaced, regardless of the screen flip
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code, 0, flipx, flipy, 2 + sx, sy - 1, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code, 0, flipx, flipy, 2 + sx, sy - 1, 0);
}
}
@@ -160,7 +160,7 @@ UINT32 blueprnt_state::screen_update_blueprnt(screen_device &screen, bitmap_ind1
for (i = 0; i < 32; i++)
m_bg_tilemap->set_scrolly(i, m_scrollram[30 - i]);
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
draw_sprites(bitmap, cliprect);
m_bg_tilemap->draw(screen, bitmap, cliprect, 1, 0);
diff --git a/src/mame/video/bogeyman.c b/src/mame/video/bogeyman.c
index 6dd4418c2ae..85b6fc09fa5 100644
--- a/src/mame/video/bogeyman.c
+++ b/src/mame/video/bogeyman.c
@@ -2,7 +2,7 @@
#include "includes/bogeyman.h"
-void bogeyman_state::palette_init()
+PALETTE_INIT_MEMBER(bogeyman_state, bogeyman)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -31,7 +31,7 @@ void bogeyman_state::palette_init()
bit2 = (color_prom[256] >> 3) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i + 16, rgb_t(r,g,b));
+ palette.set_pen_color(i + 16, rgb_t(r,g,b));
color_prom++;
}
}
@@ -63,7 +63,7 @@ WRITE8_MEMBER(bogeyman_state::bogeyman_colorram2_w)
WRITE8_MEMBER(bogeyman_state::bogeyman_paletteram_w)
{
/* RGB output is inverted */
- paletteram_BBGGGRRR_byte_w(space, offset, ~data);
+ m_palette->write(space, offset, UINT8(~data));
}
TILE_GET_INFO_MEMBER(bogeyman_state::get_bg_tile_info)
@@ -123,7 +123,7 @@ void bogeyman_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
}
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code, color,
flipx, flipy,
sx, sy, 0);
@@ -131,7 +131,7 @@ void bogeyman_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
if (multi)
{
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code + 1, color,
flipx, flipy,
sx, sy + (flip_screen() ? -16 : 16), 0);
diff --git a/src/mame/video/bombjack.c b/src/mame/video/bombjack.c
index 69a81a7232a..2fb46713dda 100644
--- a/src/mame/video/bombjack.c
+++ b/src/mame/video/bombjack.c
@@ -116,7 +116,7 @@ void bombjack_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
flipy = !flipy;
}
- m_gfxdecode->gfx((m_spriteram[offs] & 0x80) ? 3 : 2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx((m_spriteram[offs] & 0x80) ? 3 : 2)->transpen(m_palette,bitmap,cliprect,
m_spriteram[offs] & 0x7f,
m_spriteram[offs + 1] & 0x0f,
flipx,flipy,
diff --git a/src/mame/video/boogwing.c b/src/mame/video/boogwing.c
index 91404449df3..8f4dfd40e69 100644
--- a/src/mame/video/boogwing.c
+++ b/src/mame/video/boogwing.c
@@ -21,7 +21,7 @@ void boogwing_state::video_start()
void boogwing_state::mix_boogwing(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
int y, x;
- const pen_t *paldata = machine().pens;
+ const pen_t *paldata = &m_palette->pen(0);
bitmap_ind16 *sprite_bitmap1, *sprite_bitmap2;
bitmap_ind8* priority_bitmap;
@@ -190,7 +190,7 @@ UINT32 boogwing_state::screen_update_boogwing(screen_device &screen, bitmap_rgb3
m_deco_tilegen2->pf_update(m_pf3_rowscroll, m_pf4_rowscroll);
/* Draw playfields */
- bitmap.fill(machine().pens[0x400], cliprect); /* pen not confirmed */
+ bitmap.fill(m_palette->pen(0x400), cliprect); /* pen not confirmed */
screen.priority().fill(0);
// bit&0x8 is definitely some kind of palette effect
diff --git a/src/mame/video/bosco.c b/src/mame/video/bosco.c
index 132586cdaa9..e9a1d33c84f 100644
--- a/src/mame/video/bosco.c
+++ b/src/mame/video/bosco.c
@@ -19,8 +19,6 @@ PALETTE_INIT_MEMBER(bosco_state,bosco)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- machine().colortable = colortable_alloc(machine(), 32+64);
-
/* core palette */
for (i = 0;i < 32;i++)
{
@@ -40,7 +38,7 @@ PALETTE_INIT_MEMBER(bosco_state,bosco)
bit2 = ((*color_prom) >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- colortable_palette_set_color(machine().colortable,i,rgb_t(r,g,b));
+ palette.set_indirect_color(i,rgb_t(r,g,b));
color_prom++;
}
@@ -57,24 +55,24 @@ PALETTE_INIT_MEMBER(bosco_state,bosco)
bits = (i >> 4) & 0x03;
b = map[bits];
- colortable_palette_set_color(machine().colortable,32 + i,rgb_t(r,g,b));
+ palette.set_indirect_color(32 + i,rgb_t(r,g,b));
}
/* characters / sprites */
for (i = 0;i < 64*4;i++)
{
- colortable_entry_set_value(machine().colortable, i, (color_prom[i] & 0x0f) + 0x10); /* chars */
- colortable_entry_set_value(machine().colortable, i+64*4, color_prom[i] & 0x0f); /* sprites */
+ palette.set_pen_indirect(i, (color_prom[i] & 0x0f) + 0x10); /* chars */
+ palette.set_pen_indirect(i+64*4, color_prom[i] & 0x0f); /* sprites */
}
/* bullets lookup table */
/* they use colors 28-31, I think - PAL 5A controls it */
for (i = 0;i < 4;i++)
- colortable_entry_set_value(machine().colortable, 64*4+64*4+i, 31-i);
+ palette.set_pen_indirect(64*4+64*4+i, 31-i);
/* now the stars */
for (i = 0;i < 64;i++)
- colortable_entry_set_value(machine().colortable, 64*4+64*4+4+i, 32 + i);
+ palette.set_pen_indirect(64*4+64*4+4+i, 32 + i);
}
@@ -127,8 +125,8 @@ VIDEO_START_MEMBER(bosco_state,bosco)
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(bosco_state::bg_get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32);
m_fg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(bosco_state::fg_get_tile_info),this),tilemap_mapper_delegate(FUNC(bosco_state::fg_tilemap_scan),this), 8,8, 8,32);
- colortable_configure_tilemap_groups(machine().colortable, m_bg_tilemap, m_gfxdecode->gfx(0), 0x1f);
- colortable_configure_tilemap_groups(machine().colortable, m_fg_tilemap, m_gfxdecode->gfx(0), 0x1f);
+ m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(0), 0x1f);
+ m_palette->configure_tilemap_groups(*m_fg_tilemap, *m_gfxdecode->gfx(0), 0x1f);
m_bg_tilemap->set_scrolldx(3,3);
@@ -197,12 +195,12 @@ void bosco_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect,
if (flip) sx += 32-2;
- m_gfxdecode->gfx(1)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,cliprect,
(spriteram[offs] & 0xfc) >> 2,
color,
flipx,flipy,
sx,sy,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, 0x0f));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 0x0f));
}
}
@@ -222,7 +220,7 @@ void bosco_state::draw_bullets(bitmap_ind16 &bitmap, const rectangle &cliprect,
y += 2;
}
- m_gfxdecode->gfx(2)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transmask(m_palette,bitmap,cliprect,
((m_bosco_radarattr[offs] & 0x0e) >> 1) ^ 0x07,
0,
!flip,!flip,
@@ -283,7 +281,7 @@ UINT32 bosco_state::screen_update_bosco(screen_device &screen, bitmap_ind16 &bit
fg_clip.min_x = 28*8;
}
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
draw_stars(bitmap,cliprect,flip);
m_bg_tilemap->draw(screen, bitmap, bg_clip, 0,0);
diff --git a/src/mame/video/brkthru.c b/src/mame/video/brkthru.c
index 7f8154ab448..98abd6c722a 100644
--- a/src/mame/video/brkthru.c
+++ b/src/mame/video/brkthru.c
@@ -32,12 +32,12 @@
***************************************************************************/
-void brkthru_state::palette_init()
+PALETTE_INIT_MEMBER(brkthru_state, brkthru)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, bit3, r, g, b;
@@ -51,13 +51,13 @@ void brkthru_state::palette_init()
bit2 = (color_prom[0] >> 6) & 0x01;
bit3 = (color_prom[0] >> 7) & 0x01;
g = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- bit0 = (color_prom[machine().total_colors()] >> 0) & 0x01;
- bit1 = (color_prom[machine().total_colors()] >> 1) & 0x01;
- bit2 = (color_prom[machine().total_colors()] >> 2) & 0x01;
- bit3 = (color_prom[machine().total_colors()] >> 3) & 0x01;
+ bit0 = (color_prom[palette.entries()] >> 0) & 0x01;
+ bit1 = (color_prom[palette.entries()] >> 1) & 0x01;
+ bit2 = (color_prom[palette.entries()] >> 2) & 0x01;
+ bit3 = (color_prom[palette.entries()] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- palette_set_color(machine(), i, rgb_t(r,g,b));
+ palette.set_pen_color(i, rgb_t(r,g,b));
color_prom++;
}
@@ -196,24 +196,24 @@ void brkthru_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
if (m_spriteram[offs] & 0x10) /* double height */
{
- m_gfxdecode->gfx(9)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(9)->transpen(m_palette,bitmap,cliprect,
code & ~1,
color,
m_flipscreen, m_flipscreen,
sx, m_flipscreen ? sy + 16 : sy - 16,0);
- m_gfxdecode->gfx(9)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(9)->transpen(m_palette,bitmap,cliprect,
code | 1,
color,
m_flipscreen, m_flipscreen,
sx,sy,0);
/* redraw with wraparound */
- m_gfxdecode->gfx(9)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(9)->transpen(m_palette,bitmap,cliprect,
code & ~1,
color,
m_flipscreen, m_flipscreen,
sx,(m_flipscreen ? sy + 16 : sy - 16) + 256,0);
- m_gfxdecode->gfx(9)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(9)->transpen(m_palette,bitmap,cliprect,
code | 1,
color,
m_flipscreen, m_flipscreen,
@@ -222,14 +222,14 @@ void brkthru_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
}
else
{
- m_gfxdecode->gfx(9)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(9)->transpen(m_palette,bitmap,cliprect,
code,
color,
m_flipscreen, m_flipscreen,
sx,sy,0);
/* redraw with wraparound */
- m_gfxdecode->gfx(9)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(9)->transpen(m_palette,bitmap,cliprect,
code,
color,
m_flipscreen, m_flipscreen,
diff --git a/src/mame/video/bsktball.c b/src/mame/video/bsktball.c
index 3b918d4d766..d15de2936c7 100644
--- a/src/mame/video/bsktball.c
+++ b/src/mame/video/bsktball.c
@@ -44,7 +44,7 @@ void bsktball_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipr
pic = (pic & 0x3f);
color = (color & 0x3f);
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, pic, color, flipx, 0, sx, sy, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, pic, color, flipx, 0, sx, sy, 0);
}
}
diff --git a/src/mame/video/btime.c b/src/mame/video/btime.c
index 4c17a0af09c..a67e2a6ceec 100644
--- a/src/mame/video/btime.c
+++ b/src/mame/video/btime.c
@@ -38,7 +38,7 @@ PALETTE_INIT_MEMBER(btime_state,btime)
/* This function is also used by Eggs. */
if (color_prom == 0) return;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -58,7 +58,7 @@ PALETTE_INIT_MEMBER(btime_state,btime)
bit2 = (color_prom[i] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r,g,b));
+ palette.set_pen_color(i, rgb_t(r,g,b));
}
}
@@ -84,7 +84,7 @@ PALETTE_INIT_MEMBER(btime_state,lnc)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -104,7 +104,7 @@ PALETTE_INIT_MEMBER(btime_state,lnc)
bit2 = (color_prom[i] >> 0) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r,g,b));
+ palette.set_pen_color(i, rgb_t(r,g,b));
}
}
@@ -140,7 +140,7 @@ WRITE8_MEMBER(btime_state::btime_paletteram_w)
{
m_paletteram[offset] = data;
/* RGB output is inverted */
- paletteram_BBGGGRRR_byte_w(space, offset, ~data);
+ m_palette->write(space, offset, UINT8(~data));
}
WRITE8_MEMBER(btime_state::lnc_videoram_w)
@@ -310,7 +310,7 @@ void btime_state::draw_chars( bitmap_ind16 &bitmap, const rectangle &cliprect, U
y = 33 - y;
}
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
color,
flip_screen(),flip_screen(),
@@ -351,7 +351,7 @@ void btime_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect,
y = y - sprite_y_adjust;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
sprite_ram[offs + interleave],
color,
flipx,flipy,
@@ -360,7 +360,7 @@ void btime_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect,
y = y + (flip_screen() ? -256 : 256);
// Wrap around
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
sprite_ram[offs + interleave],
color,
flipx,flipy,
@@ -398,7 +398,7 @@ void btime_state::draw_background( bitmap_ind16 &bitmap, const rectangle &clipre
y = 256 - y;
}
- m_gfxdecode->gfx(2)->opaque(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->opaque(m_palette,bitmap,cliprect,
gfx[tileoffset + offs],
color,
flip_screen(),flip_screen(),
@@ -494,7 +494,7 @@ UINT32 btime_state::screen_update_bnj(screen_device &screen, bitmap_ind16 &bitma
sy = 256 - sy;
}
- m_gfxdecode->gfx(2)->opaque(*m_background_bitmap,m_background_bitmap->cliprect(),
+ m_gfxdecode->gfx(2)->opaque(m_palette,*m_background_bitmap,m_background_bitmap->cliprect(),
(m_bnj_backgroundram[offs] >> 4) + ((offs & 0x80) >> 3) + 32,
0,
flip_screen(), flip_screen(),
@@ -540,7 +540,7 @@ UINT32 btime_state::screen_update_cookrace(screen_device &screen, bitmap_ind16 &
sy = 33 - sy;
}
- m_gfxdecode->gfx(2)->opaque(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->opaque(m_palette,bitmap,cliprect,
m_bnj_backgroundram[offs],
0,
flip_screen(), flip_screen(),
diff --git a/src/mame/video/bublbobl.c b/src/mame/video/bublbobl.c
index 44cbb0a4828..6827809c03a 100644
--- a/src/mame/video/bublbobl.c
+++ b/src/mame/video/bublbobl.c
@@ -80,7 +80,7 @@ UINT32 bublbobl_state::screen_update_bublbobl(screen_device &screen, bitmap_ind1
flipy = !flipy;
}
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/buggychl.c b/src/mame/video/buggychl.c
index c2cdaa837b7..e7bcb3f9e50 100644
--- a/src/mame/video/buggychl.c
+++ b/src/mame/video/buggychl.c
@@ -2,13 +2,13 @@
#include "includes/buggychl.h"
-void buggychl_state::palette_init()
+PALETTE_INIT_MEMBER(buggychl_state, buggychl)
{
int i;
/* arbitrary blue shading for the sky, estimation */
for (i = 0; i < 128; i++)
- palette_set_color(machine(), i + 128, rgb_t(0, 240-i, 255));
+ palette.set_pen_color(i + 128, rgb_t(0, 240-i, 255));
}
void buggychl_state::video_start()
@@ -105,7 +105,7 @@ void buggychl_state::draw_bg( bitmap_ind16 &bitmap, const rectangle &cliprect )
if (flip_screen_y())
sy = 31 - sy;
- m_gfxdecode->gfx(0)->opaque(m_tmp_bitmap1,m_tmp_bitmap1.cliprect(),
+ m_gfxdecode->gfx(0)->opaque(m_palette,m_tmp_bitmap1,m_tmp_bitmap1.cliprect(),
code,
2,
flip_screen_x(),flip_screen_y(),
@@ -144,7 +144,7 @@ void buggychl_state::draw_fg( bitmap_ind16 &bitmap, const rectangle &cliprect )
if (flipy)
sy = 31 - sy;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
0,
flipx,flipy,
diff --git a/src/mame/video/bwing.c b/src/mame/video/bwing.c
index b6229427026..02c8cb72f90 100644
--- a/src/mame/video/bwing.c
+++ b/src/mame/video/bwing.c
@@ -160,7 +160,7 @@ WRITE8_MEMBER(bwing_state::bwing_paletteram_w)
if (b > 0xff) b = 0xff;
}
- palette_set_color(machine(), offset, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset, rgb_t(r, g, b));
#if BW_DEBUG
m_paletteram[offset + 0x40] = m_palatch;
@@ -274,9 +274,9 @@ void bwing_state::draw_sprites( bitmap_ind16 &bmp, const rectangle &clip, UINT8
// single/double
if (!(attrib & 0x10))
- gfx->transpen(bmp,clip, code, color, fx, fy, x, y, 0);
+ gfx->transpen(m_palette,bmp,clip, code, color, fx, fy, x, y, 0);
else
- gfx->zoom_transpen(bmp,clip, code, color, fx, fy, x, y, 1<<16, 2<<16, 0);
+ gfx->zoom_transpen(m_palette,bmp,clip, code, color, fx, fy, x, y, 1<<16, 2<<16, 0);
}
}
@@ -307,7 +307,7 @@ UINT32 bwing_state::screen_update_bwing(screen_device &screen, bitmap_ind16 &bit
m_bgmap->draw(screen, bitmap, cliprect, 0, 0);
}
else
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
// draw low priority sprites
draw_sprites(bitmap, cliprect, m_spriteram, 0);
diff --git a/src/mame/video/cabal.c b/src/mame/video/cabal.c
index 7dbbe56e17d..9f3fdefd7e9 100644
--- a/src/mame/video/cabal.c
+++ b/src/mame/video/cabal.c
@@ -126,7 +126,7 @@ void cabal_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
flipy = !flipy;
}
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
tile_number,
color,
flipx,flipy,
diff --git a/src/mame/video/calomega.c b/src/mame/video/calomega.c
index f0cca1d8592..9b93ee3c568 100644
--- a/src/mame/video/calomega.c
+++ b/src/mame/video/calomega.c
@@ -65,7 +65,7 @@ UINT32 calomega_state::screen_update_calomega(screen_device &screen, bitmap_ind1
return 0;
}
-void calomega_state::palette_init()
+PALETTE_INIT_MEMBER(calomega_state, calomega)
{
const UINT8 *color_prom = memregion("proms")->base();
/* prom bits
@@ -80,7 +80,7 @@ void calomega_state::palette_init()
/* 00000BGR */
if (color_prom == 0) return;
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -97,6 +97,6 @@ void calomega_state::palette_init()
b = bit2 * 0xff;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
diff --git a/src/mame/video/canyon.c b/src/mame/video/canyon.c
index d02e3443417..a58a571c83d 100644
--- a/src/mame/video/canyon.c
+++ b/src/mame/video/canyon.c
@@ -40,7 +40,7 @@ void canyon_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
int c = m_videoram[0x3d0 + 2 * i + 0x9];
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
c >> 3,
i,
!(c & 0x80), 0,
diff --git a/src/mame/video/capbowl.c b/src/mame/video/capbowl.c
index 6fd0bd9c68b..e24b68cb201 100644
--- a/src/mame/video/capbowl.c
+++ b/src/mame/video/capbowl.c
@@ -133,7 +133,7 @@ UINT32 capbowl_state::screen_update_capbowl(screen_device &screen, bitmap_rgb32
/* if we're blanked, just fill with black */
if (m_tms34061->m_display.blanked)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
diff --git a/src/mame/video/carjmbre.c b/src/mame/video/carjmbre.c
index 6654b4cdeb6..c86b3065496 100644
--- a/src/mame/video/carjmbre.c
+++ b/src/mame/video/carjmbre.c
@@ -30,14 +30,14 @@ static const res_net_info carjmbre_net_info =
}
};
-void carjmbre_state::palette_init()
+PALETTE_INIT_MEMBER(carjmbre_state, carjmbre)
{
const UINT8 *color_prom = memregion("proms")->base();
rgb_t *rgb;
rgb = compute_res_net_all(machine(), color_prom, &carjmbre_decode_info, &carjmbre_net_info);
- palette_set_colors(machine(), 0, rgb, 64);
- machine().palette->normalize_range(0, 63);
+ palette.set_pen_colors(0, rgb, 64);
+ palette.palette()->normalize_range(0, 63);
auto_free(machine(), rgb);
}
@@ -60,11 +60,11 @@ WRITE8_MEMBER(carjmbre_state::carjmbre_bgcolor_w)
m_bgcolor = data;
if (data & 3)
for (i = 0; i < 64; i += 4)
- palette_set_color(machine(), i, palette_get_color(machine(), data));
+ m_palette->set_pen_color(i, data);
else
// restore to initial state (black)
for (i = 0; i < 64; i += 4)
- palette_set_color(machine(), i, rgb_t::black);
+ m_palette->set_pen_color(i, rgb_t::black);
}
}
@@ -145,7 +145,7 @@ UINT32 carjmbre_state::screen_update_carjmbre(screen_device &screen, bitmap_ind1
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
m_spriteram[troffs + 1],
m_spriteram[troffs + 2] & 0xf,
flipx,flipy,
diff --git a/src/mame/video/carpolo.c b/src/mame/video/carpolo.c
index 7805e37c67c..3cc4e2832cf 100644
--- a/src/mame/video/carpolo.c
+++ b/src/mame/video/carpolo.c
@@ -64,7 +64,7 @@
*
**************************************************************************/
-void carpolo_state::palette_init()
+PALETTE_INIT_MEMBER(carpolo_state, carpolo)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -91,7 +91,7 @@ void carpolo_state::palette_init()
};
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
UINT8 pen, r, g, b;
@@ -130,7 +130,7 @@ void carpolo_state::palette_init()
/* blue component */
b = ((b_voltage[(color_prom[pen] >> 0) & 0x03] - MIN_VOLTAGE) / (MAX_VOLTAGE - MIN_VOLTAGE)) * 255.;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -178,7 +178,7 @@ static void draw_alpha_line(running_machine &machine, bitmap_ind16 &bitmap, cons
code = state->m_alpharam[alpha_line * 32 + x] >> 2;
col = state->m_alpharam[alpha_line * 32 + x] & 0x03;
- state->m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ state->m_gfxdecode->gfx(2)->transpen(state->m_palette,bitmap,cliprect,
code,col,
0,0,
x*8,video_line*8,0);
@@ -206,13 +206,13 @@ void carpolo_state::draw_sprite(bitmap_ind16 &bitmap, const rectangle &cliprect,
x = 240 - x;
y = 240 - y;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
remapped_code, col,
0, flipy,
x, y,0);
/* draw with wrap around */
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
remapped_code, col,
0, flipy,
(INT16)x - 256, y,0);
@@ -262,14 +262,14 @@ UINT32 carpolo_state::screen_update_carpolo(screen_device &screen, bitmap_ind16
/* left goal - position determined by bit 6 of the
horizontal and vertical timing PROMs */
- m_gfxdecode->gfx(1)->zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->zoom_transpen(m_palette,bitmap,cliprect,
0,0,
0,0,
LEFT_GOAL_X,GOAL_Y,
0x20000,0x20000,0);
/* right goal */
- m_gfxdecode->gfx(1)->zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->zoom_transpen(m_palette,bitmap,cliprect,
0,1,
1,0,
RIGHT_GOAL_X,GOAL_Y,
@@ -358,12 +358,12 @@ int carpolo_state::check_sprite_sprite_collision(int x1, int y1, int code1, int
m_sprite_sprite_collision_bitmap1->fill(0);
m_sprite_sprite_collision_bitmap2->fill(0);
- m_gfxdecode->gfx(0)->opaque(*m_sprite_sprite_collision_bitmap1,m_sprite_sprite_collision_bitmap1->cliprect(),
+ m_gfxdecode->gfx(0)->opaque(m_palette,*m_sprite_sprite_collision_bitmap1,m_sprite_sprite_collision_bitmap1->cliprect(),
code1,0,
0,flipy1,
x1,y1);
- m_gfxdecode->gfx(0)->opaque(*m_sprite_sprite_collision_bitmap2,m_sprite_sprite_collision_bitmap2->cliprect(),
+ m_gfxdecode->gfx(0)->opaque(m_palette,*m_sprite_sprite_collision_bitmap2,m_sprite_sprite_collision_bitmap2->cliprect(),
code2,0,
0,flipy2,
x2,y2);
@@ -411,12 +411,12 @@ int carpolo_state::check_sprite_left_goal_collision(int x1, int y1, int code1, i
m_sprite_goal_collision_bitmap1->fill(0);
m_sprite_goal_collision_bitmap2->fill(0);
- m_gfxdecode->gfx(0)->opaque(*m_sprite_goal_collision_bitmap1,m_sprite_goal_collision_bitmap1->cliprect(),
+ m_gfxdecode->gfx(0)->opaque(m_palette,*m_sprite_goal_collision_bitmap1,m_sprite_goal_collision_bitmap1->cliprect(),
code1,0,
0,flipy1,
x1,y1);
- m_gfxdecode->gfx(1)->zoom_transpen(*m_sprite_goal_collision_bitmap2,m_sprite_goal_collision_bitmap2->cliprect(),
+ m_gfxdecode->gfx(1)->zoom_transpen(m_palette,*m_sprite_goal_collision_bitmap2,m_sprite_goal_collision_bitmap2->cliprect(),
0,0,
0,0,
x2,y2,
@@ -468,12 +468,12 @@ int carpolo_state::check_sprite_right_goal_collision(int x1, int y1, int code1,
m_sprite_goal_collision_bitmap1->fill(0);
m_sprite_goal_collision_bitmap2->fill(0);
- m_gfxdecode->gfx(0)->opaque(*m_sprite_goal_collision_bitmap1,m_sprite_goal_collision_bitmap1->cliprect(),
+ m_gfxdecode->gfx(0)->opaque(m_palette,*m_sprite_goal_collision_bitmap1,m_sprite_goal_collision_bitmap1->cliprect(),
code1,0,
0,flipy1,
x1,y1);
- m_gfxdecode->gfx(1)->zoom_transpen(*m_sprite_goal_collision_bitmap2,m_sprite_goal_collision_bitmap2->cliprect(),
+ m_gfxdecode->gfx(1)->zoom_transpen(m_palette,*m_sprite_goal_collision_bitmap2,m_sprite_goal_collision_bitmap2->cliprect(),
0,1,
1,0,
x2,y2,
@@ -513,7 +513,7 @@ int carpolo_state::check_sprite_border_collision(UINT8 x1, UINT8 y1, int code1,
x1 = 240 - x1;
y1 = 240 - y1;
- m_gfxdecode->gfx(0)->opaque(*m_sprite_border_collision_bitmap,m_sprite_border_collision_bitmap->cliprect(),
+ m_gfxdecode->gfx(0)->opaque(m_palette,*m_sprite_border_collision_bitmap,m_sprite_border_collision_bitmap->cliprect(),
code1,0,
0,flipy1,
0,0);
diff --git a/src/mame/video/cave.c b/src/mame/video/cave.c
index c3cf26b052c..66a9b13f052 100644
--- a/src/mame/video/cave.c
+++ b/src/mame/video/cave.c
@@ -73,13 +73,13 @@ PALETTE_INIT_MEMBER(cave_state,cave)
for (int chip = 0; chip < 4; chip++)
{
/* create a 1:1 palette map covering everything */
- m_palette_map[chip] = auto_alloc_array(machine(), UINT16, machine().total_colors());
+ m_palette_map[chip] = auto_alloc_array(machine(), UINT16, palette.entries());
int maxpens = m_paletteram[chip].bytes() / 2;
if (!maxpens)
continue;
- for (int pen = 0; pen < machine().total_colors(); pen++)
+ for (int pen = 0; pen < palette.entries(); pen++)
m_palette_map[chip][pen] = pen % maxpens;
}
}
@@ -93,7 +93,7 @@ PALETTE_INIT_MEMBER(cave_state,dfeveron)
multiplies the color code by $100 (for consistency).
That's why we need this function. */
- PALETTE_INIT_CALL_MEMBER(cave);
+ PALETTE_INIT_NAME(cave)(palette);
for (color = 0; color < 0x40; color++)
for (pen = 0; pen < 0x10; pen++)
@@ -109,7 +109,7 @@ PALETTE_INIT_MEMBER(cave_state,ddonpach)
like layer 2, but use the first 16 color of every 256 for
any given color code. */
- PALETTE_INIT_CALL_MEMBER(cave);
+ PALETTE_INIT_NAME(cave)(palette);
for (color = 0; color < 0x40; color++)
for (pen = 0; pen < 0x10; pen++)
@@ -120,7 +120,7 @@ PALETTE_INIT_MEMBER(cave_state,mazinger)
{
int color, pen;
- PALETTE_INIT_CALL_MEMBER(cave);
+ PALETTE_INIT_NAME(cave)(palette);
/* sprites (encrypted) are 4 bit deep */
for (color = 0; color < 0x40; color++)
@@ -138,7 +138,7 @@ PALETTE_INIT_MEMBER(cave_state,sailormn)
{
int color, pen;
- PALETTE_INIT_CALL_MEMBER(cave);
+ PALETTE_INIT_NAME(cave)(palette);
/* sprites (encrypted) are 4 bit deep */
for (color = 0; color < 0x40; color++)
@@ -156,7 +156,7 @@ PALETTE_INIT_MEMBER(cave_state,pwrinst2)
{
int color, pen;
- PALETTE_INIT_CALL_MEMBER(cave);
+ PALETTE_INIT_NAME(cave)(palette);
for (color = 0; color < 0x80; color++)
for (pen = 0; pen < 0x10; pen++)
@@ -170,7 +170,7 @@ PALETTE_INIT_MEMBER(cave_state,korokoro)
{
int color, pen;
- PALETTE_INIT_CALL_MEMBER(cave);
+ PALETTE_INIT_NAME(cave)(palette);
for (color = 0; color < 0x40; color++)
for (pen = 0; pen < 0x10; pen++)
@@ -182,13 +182,13 @@ void cave_state::set_pens(int chip)
{
int pen;
- for (pen = 0; pen < machine().total_colors(); pen++)
+ for (pen = 0; pen < m_palette->entries(); pen++)
{
UINT16 data = m_paletteram[chip][m_palette_map[chip][pen]];
rgb_t color = rgb_t(pal5bit(data >> 5), pal5bit(data >> 10), pal5bit(data >> 0));
- palette_set_color(machine(), pen, color);
+ m_palette->set_pen_color(pen, color);
}
}
@@ -947,7 +947,7 @@ void cave_state::do_blit_zoom32_cave( int chip, const struct sprite_cave *sprite
xcount &= 0xffff;
pen = *source;
if (pen)
- dest[x] = palette_get_color(machine(), base_pen + pen);
+ dest[x] = m_palette->pen_color(base_pen + pen);
}
xcount += sprite->zoomx_re;
}
@@ -1080,7 +1080,7 @@ void cave_state::do_blit_zoom32_cave_zb( int chip, const struct sprite_cave *spr
pen = *source;
if (pen && (zbf[x] <= pri_sp))
{
- dest[x] = palette_get_color(machine(), base_pen + pen);
+ dest[x] = m_palette->pen_color(base_pen + pen);
zbf[x] = pri_sp;
}
}
@@ -1179,7 +1179,7 @@ void cave_state::do_blit_32_cave( int chip, const struct sprite_cave *sprite )
{
pen = *source;
if (pen)
- dest[x] = palette_get_color(machine(), base_pen + pen);
+ dest[x] = m_palette->pen_color(base_pen + pen);
source++;
}
pen_data += sprite->line_offset;
@@ -1279,7 +1279,7 @@ void cave_state::do_blit_32_cave_zb( int chip, const struct sprite_cave *sprite
pen = *source;
if (pen && (zbf[x] <= pri_sp))
{
- dest[x] = palette_get_color(machine(), base_pen + pen);
+ dest[x] = m_palette->pen_color(base_pen + pen);
zbf[x] = pri_sp;
}
source++;
@@ -1593,7 +1593,7 @@ UINT32 cave_state::screen_update_cave(screen_device &screen, bitmap_rgb32 &bitma
cave_sprite_check(0, screen, cliprect);
- bitmap.fill(palette_get_color(machine(), m_background_pen), cliprect);
+ bitmap.fill(m_palette->pen_color(m_background_pen), cliprect);
/*
Tiles and sprites are ordered by priority (0 back, 3 front) with
@@ -1662,7 +1662,7 @@ PALETTE_INIT_MEMBER(cave_state,ppsatan)
{
int color, pen;
- PALETTE_INIT_CALL_MEMBER(cave);
+ PALETTE_INIT_NAME(cave)(palette);
for (int chip = 0; chip < 3; chip++)
{
@@ -1694,7 +1694,7 @@ UINT32 cave_state::screen_update_ppsatan_core(screen_device &screen, bitmap_rgb3
cave_sprite_check(chip, screen, cliprect);
- bitmap.fill(palette_get_color(machine(), m_background_pen), cliprect);
+ bitmap.fill(m_palette->pen_color(m_background_pen), cliprect);
for (int pri = 0; pri <= 3; pri++) // tile / sprite priority
{
diff --git a/src/mame/video/cbasebal.c b/src/mame/video/cbasebal.c
index 2e00a66a39b..c1a24ffc5ad 100644
--- a/src/mame/video/cbasebal.c
+++ b/src/mame/video/cbasebal.c
@@ -155,7 +155,7 @@ void cbasebal_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
flipx = !flipx;
}
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,m_flipscreen,
diff --git a/src/mame/video/cbuster.c b/src/mame/video/cbuster.c
index ffcacfdeec3..a7b50d24be3 100644
--- a/src/mame/video/cbuster.c
+++ b/src/mame/video/cbuster.c
@@ -19,7 +19,7 @@ void cbuster_state::update_24bitcol( int offset )
g = (UINT8)((float)((m_generic_paletteram_16[offset] >> 8) & 0xff) * 1.75);
b = (UINT8)((float)((m_generic_paletteram2_16[offset] >> 0) & 0xff) * 1.75);
- palette_set_color(machine(), offset, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset, rgb_t(r, g, b));
}
WRITE16_MEMBER(cbuster_state::twocrude_palette_24bit_rg_w)
diff --git a/src/mame/video/ccastles.c b/src/mame/video/ccastles.c
index 9f6fd4944e9..e2e0190f703 100644
--- a/src/mame/video/ccastles.c
+++ b/src/mame/video/ccastles.c
@@ -103,7 +103,7 @@ WRITE8_MEMBER(ccastles_state::ccastles_paletteram_w)
bit2 = (~b >> 2) & 0x01;
b = combine_3_weights(m_bweights, bit0, bit1, bit2);
- palette_set_color(machine(), offset & 0x1f, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset & 0x1f, rgb_t(r, g, b));
}
@@ -255,7 +255,7 @@ UINT32 ccastles_state::screen_update_ccastles(screen_device &screen, bitmap_ind1
{
UINT8 *spriteaddr = &m_spriteram[m_video_control[7] * 0x100]; /* BUF1/BUF2 */
int flip = m_video_control[4] ? 0xff : 0x00; /* PLAYER2 */
- pen_t black = get_black_pen(machine());
+ pen_t black = m_palette->black_pen();
int x, y, offs;
/* draw the sprites */
@@ -267,7 +267,7 @@ UINT32 ccastles_state::screen_update_ccastles(screen_device &screen, bitmap_ind1
int which = spriteaddr[offs];
int color = spriteaddr[offs + 2] >> 7;
- m_gfxdecode->gfx(0)->transpen(m_spritebitmap,cliprect, which, color, flip, flip, x, y, 7);
+ m_gfxdecode->gfx(0)->transpen(m_palette,m_spritebitmap,cliprect, which, color, flip, flip, x, y, 7);
}
/* draw the bitmap to the screen, looping over Y */
diff --git a/src/mame/video/cclimber.c b/src/mame/video/cclimber.c
index 6270c3ccb1f..1806967bf27 100644
--- a/src/mame/video/cclimber.c
+++ b/src/mame/video/cclimber.c
@@ -50,7 +50,7 @@ PALETTE_INIT_MEMBER(cclimber_state,cclimber)
2, resistances_b, weights_b, 0, 0,
0, 0, 0, 0, 0);
- for (i = 0;i < machine().total_colors(); i++)
+ for (i = 0;i < palette.entries(); i++)
{
int bit0, bit1, bit2;
int r, g, b;
@@ -72,7 +72,7 @@ PALETTE_INIT_MEMBER(cclimber_state,cclimber)
bit1 = (color_prom[i] >> 7) & 0x01;
b = combine_2_weights(weights_b, bit0, bit1);
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -141,7 +141,7 @@ PALETTE_INIT_MEMBER(cclimber_state,swimmer)
bit2 = (color_prom[i + 0x100] >> 3) & 0x01;
b = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
color_prom += 0x200;
@@ -170,15 +170,15 @@ PALETTE_INIT_MEMBER(cclimber_state,swimmer)
bit2 = (color_prom[i] >> 7) & 0x01;
b = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2;
- palette_set_color(machine(), i + 0x100, rgb_t(r, g, b));
+ palette.set_pen_color(i + 0x100, rgb_t(r, g, b));
}
/* side panel backgrond pen */
#if 0
// values calculated from the resistors don't seem to match the real board
- palette_set_color(machine(), SWIMMER_SIDE_BG_PEN, rgb_t(0x24, 0x5d, 0x4e));
+ palette.set_pen_color(SWIMMER_SIDE_BG_PEN, rgb_t(0x24, 0x5d, 0x4e));
#endif
- palette_set_color(machine(), SWIMMER_SIDE_BG_PEN, rgb_t(0x20, 0x98, 0x79));
+ palette.set_pen_color(SWIMMER_SIDE_BG_PEN, rgb_t(0x20, 0x98, 0x79));
}
@@ -214,7 +214,7 @@ PALETTE_INIT_MEMBER(cclimber_state,yamato)
bit3 = (color_prom[i + 0x40] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
/* big sprite - 8 bits RGB */
@@ -241,12 +241,12 @@ PALETTE_INIT_MEMBER(cclimber_state,yamato)
bit2 = (color_prom[i + 0x80] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i + 0x40, rgb_t(r, g, b));
+ palette.set_pen_color(i + 0x40, rgb_t(r, g, b));
}
/* fake colors for bg gradient */
for (i = 0; i < 0x100; i++)
- palette_set_color(machine(), YAMATO_SKY_PEN_BASE + i, rgb_t(0, 0, i));
+ palette.set_pen_color(YAMATO_SKY_PEN_BASE + i, rgb_t(0, 0, i));
}
@@ -278,7 +278,7 @@ PALETTE_INIT_MEMBER(cclimber_state,toprollr)
bit2 = (color_prom[i] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -323,7 +323,7 @@ void cclimber_state::swimmer_set_background_pen()
bit2 = (*m_swimmer_background_color >> 2) & 0x01;
b = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2;
- palette_set_color(machine(), CCLIMBER_BG_PEN, rgb_t(r, g, b));
+ m_palette->set_pen_color(CCLIMBER_BG_PEN, rgb_t(r, g, b));
}
@@ -569,7 +569,7 @@ void cclimber_state::cclimber_draw_sprites(bitmap_ind16 &bitmap, const rectangle
flipy = !flipy;
}
- gfx->transpen(bitmap,cliprect, code, color, flipx, flipy, x, y, 0);
+ gfx->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy, x, y, 0);
}
}
@@ -606,7 +606,7 @@ void cclimber_state::toprollr_draw_sprites(bitmap_ind16 &bitmap, const rectangle
flipy = !flipy;
}
- gfx->transpen(bitmap,cliprect, code, color, flipx, flipy, x, y, 0);
+ gfx->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy, x, y, 0);
}
}
@@ -643,7 +643,7 @@ void cclimber_state::swimmer_draw_sprites(bitmap_ind16 &bitmap, const rectangle
flipy = !flipy;
}
- gfx->transpen(bitmap,cliprect, code, color, flipx, flipy, x, y, 0);
+ gfx->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy, x, y, 0);
}
}
diff --git a/src/mame/video/centiped.c b/src/mame/video/centiped.c
index f522972f069..cd2c0671d85 100644
--- a/src/mame/video/centiped.c
+++ b/src/mame/video/centiped.c
@@ -238,7 +238,7 @@ WRITE8_MEMBER(centiped_state::centiped_paletteram_w)
/* character colors, set directly */
if ((offset & 0x08) == 0)
- palette_set_color(machine(), offset & 0x03, color);
+ m_palette->set_pen_color(offset & 0x03, color);
/* sprite colors - set all the applicable ones */
else
@@ -250,13 +250,13 @@ WRITE8_MEMBER(centiped_state::centiped_paletteram_w)
for (i = 0; i < 0x100; i += 4)
{
if (offset == ((i >> 2) & 0x03))
- palette_set_color(machine(), i + 4 + 1, color);
+ m_palette->set_pen_color(i + 4 + 1, color);
if (offset == ((i >> 4) & 0x03))
- palette_set_color(machine(), i + 4 + 2, color);
+ m_palette->set_pen_color(i + 4 + 2, color);
if (offset == ((i >> 6) & 0x03))
- palette_set_color(machine(), i + 4 + 3, color);
+ m_palette->set_pen_color(i + 4 + 3, color);
}
}
}
@@ -281,7 +281,7 @@ PALETTE_INIT_MEMBER(centiped_state,warlords)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
UINT8 pen;
int r, g, b;
@@ -306,7 +306,7 @@ PALETTE_INIT_MEMBER(centiped_state,warlords)
r = g = b = grey;
}
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -364,7 +364,7 @@ void centiped_state::milliped_set_color(offs_t offset, UINT8 data)
/* character colors, set directly */
if (offset < 0x10)
- palette_set_color(machine(), offset, color);
+ m_palette->set_pen_color(offset, color);
/* sprite colors - set all the applicable ones */
else
@@ -378,13 +378,13 @@ void centiped_state::milliped_set_color(offs_t offset, UINT8 data)
for (i = (base << 6); i < (base << 6) + 0x100; i += 4)
{
if (offset == ((i >> 2) & 0x03))
- palette_set_color(machine(), i + 0x10 + 1, color);
+ m_palette->set_pen_color(i + 0x10 + 1, color);
if (offset == ((i >> 4) & 0x03))
- palette_set_color(machine(), i + 0x10 + 2, color);
+ m_palette->set_pen_color(i + 0x10 + 2, color);
if (offset == ((i >> 6) & 0x03))
- palette_set_color(machine(), i + 0x10 + 3, color);
+ m_palette->set_pen_color(i + 0x10 + 3, color);
}
}
}
@@ -439,7 +439,7 @@ UINT32 centiped_state::screen_update_centiped(screen_device &screen, bitmap_ind1
int x = spriteram[offs + 0x20];
int y = 240 - spriteram[offs + 0x10];
- m_gfxdecode->gfx(1)->transmask(bitmap,spriteclip, code, color, flipx, flipy, x, y, m_penmask[color & 0x3f]);
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,spriteclip, code, color, flipx, flipy, x, y, m_penmask[color & 0x3f]);
}
return 0;
}
@@ -484,7 +484,7 @@ UINT32 centiped_state::screen_update_warlords(screen_device &screen, bitmap_ind1
flipx = !flipx;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code, color, flipx, flipy, x, y, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy, x, y, 0);
}
return 0;
}
@@ -515,7 +515,7 @@ UINT32 centiped_state::screen_update_bullsdrt(screen_device &screen, bitmap_ind1
int x = spriteram[offs + 0x20];
int y = 240 - spriteram[offs + 0x10];
- m_gfxdecode->gfx(1)->transpen(bitmap,spriteclip, code, color & 0x3f, 1, flipy, x, y, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,spriteclip, code, color & 0x3f, 1, flipy, x, y, 0);
}
return 0;
}
@@ -552,7 +552,7 @@ UINT32 centiped_state::screen_update_milliped(screen_device &screen, bitmap_ind1
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->transmask(bitmap,spriteclip, code, color, flipx, flipy, x, y, m_penmask[color & 0x3f]);
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,spriteclip, code, color, flipx, flipy, x, y, m_penmask[color & 0x3f]);
}
return 0;
}
diff --git a/src/mame/video/chaknpop.c b/src/mame/video/chaknpop.c
index 80b04b96dcb..bb263232f09 100644
--- a/src/mame/video/chaknpop.c
+++ b/src/mame/video/chaknpop.c
@@ -22,7 +22,7 @@
palette decode
***************************************************************************/
-void chaknpop_state::palette_init()
+PALETTE_INIT_MEMBER(chaknpop_state, chaknpop)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -52,7 +52,7 @@ void chaknpop_state::palette_init()
bit2 = (col >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -199,7 +199,7 @@ void chaknpop_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
}
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
tile,
color,
flipx, flipy,
diff --git a/src/mame/video/champbas.c b/src/mame/video/champbas.c
index 78f568a912c..16233d923e8 100644
--- a/src/mame/video/champbas.c
+++ b/src/mame/video/champbas.c
@@ -34,9 +34,6 @@ PALETTE_INIT_MEMBER(champbas_state,champbas)
3, &resistances_rg[0], gweights, 0, 0,
2, &resistances_b[0], bweights, 0, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x20);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -60,7 +57,7 @@ PALETTE_INIT_MEMBER(champbas_state,champbas)
bit1 = (color_prom[i] >> 7) & 0x01;
b = combine_2_weights(bweights, bit0, bit1);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
color_prom += 0x20;
@@ -68,7 +65,7 @@ PALETTE_INIT_MEMBER(champbas_state,champbas)
for (i = 0; i < 0x200; i++)
{
UINT8 ctabentry = (color_prom[i & 0xff] & 0x0f) | ((i & 0x100) >> 4);
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -78,9 +75,6 @@ PALETTE_INIT_MEMBER(champbas_state,exctsccr)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x20);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -105,7 +99,7 @@ PALETTE_INIT_MEMBER(champbas_state,exctsccr)
bit2 = (color_prom[i] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -116,14 +110,14 @@ PALETTE_INIT_MEMBER(champbas_state,exctsccr)
{
int swapped_i = BITSWAP8(i, 2, 7, 6, 5, 4, 3, 1, 0);
UINT8 ctabentry = (color_prom[swapped_i] & 0x0f) | ((i & 0x80) >> 3);
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* sprites (4bpp) */
for (i = 0; i < 0x100; i++)
{
UINT8 ctabentry = (color_prom[0x100 + i] & 0x0f) | 0x10;
- colortable_entry_set_value(machine().colortable, i + 0x100, ctabentry);
+ palette.set_pen_indirect(i + 0x100, ctabentry);
}
}
@@ -203,19 +197,19 @@ void champbas_state::champbas_draw_sprites( bitmap_ind16 &bitmap, const rectangl
int sy = 255 - m_spriteram_2[offs];
- gfx->transmask(bitmap,cliprect,
+ gfx->transmask(m_palette,bitmap,cliprect,
code, color,
flipx, flipy,
sx, sy,
- colortable_get_transpen_mask(machine().colortable, gfx, color, 0));
+ m_palette->transpen_mask(*gfx, color, 0));
// wraparound
- gfx->transmask(bitmap,cliprect,
+ gfx->transmask(m_palette,bitmap,cliprect,
code, color,
flipx, flipy,
sx + 256, sy,
- colortable_get_transpen_mask(machine().colortable, gfx, color, 0));
+ m_palette->transpen_mask(*gfx, color, 0));
}
}
@@ -241,7 +235,7 @@ void champbas_state::exctsccr_draw_sprites( bitmap_ind16 &bitmap, const rectangl
bank = ((obj1[offs + 1] >> 4) & 1);
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code + (bank << 6),
color,
flipx, flipy,
@@ -264,12 +258,12 @@ void champbas_state::exctsccr_draw_sprites( bitmap_ind16 &bitmap, const rectangl
color = (obj1[offs + 1]) & 0x0f;
- m_gfxdecode->gfx(2)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transmask(m_palette,bitmap,cliprect,
code,
color,
flipx, flipy,
sx,sy,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(2), color, 0x10));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(2), color, 0x10));
}
}
diff --git a/src/mame/video/changela.c b/src/mame/video/changela.c
index eb6f25037e3..3be86c5d9a2 100644
--- a/src/mame/video/changela.c
+++ b/src/mame/video/changela.c
@@ -759,7 +759,7 @@ WRITE8_MEMBER(changela_state::changela_colors_w)
g = color_table[(c >> 3) & 0x07];
b = color_table[(c >> 6) & 0x07];
- palette_set_color_rgb(machine(),color_index,r,g,b);
+ m_palette->set_pen_color(color_index,r,g,b);
}
diff --git a/src/mame/video/cheekyms.c b/src/mame/video/cheekyms.c
index 853d11d2227..56fcf2b66d0 100644
--- a/src/mame/video/cheekyms.c
+++ b/src/mame/video/cheekyms.c
@@ -15,7 +15,7 @@ Functions to emulate the video hardware of the machine.
/* bit 3 and 7 of the char color PROMs are used for something -- not currently emulated -
thus GAME_IMPERFECT_GRAPHICS */
-void cheekyms_state::palette_init()
+PALETTE_INIT_MEMBER(cheekyms_state, cheekyms)
{
const UINT8 *color_prom = memregion("proms")->base();
int i, j, bit, r, g, b;
@@ -34,7 +34,7 @@ void cheekyms_state::palette_init()
bit = (color_prom[0x20 * (i / 2) + j] >> ((4 * (i & 1)) + 2)) & 0x01;
b = 0xff * bit;
- palette_set_color(machine(), (i * 0x20) + j, rgb_t(r,g,b));
+ palette.set_pen_color((i * 0x20) + j, rgb_t(r,g,b));
}
}
}
@@ -123,19 +123,19 @@ void cheekyms_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
if (!flip)
code++;
- gfx->transpen(bitmap,cliprect, code, color, 0, 0, x, y, 0);
+ gfx->transpen(m_palette,bitmap,cliprect, code, color, 0, 0, x, y, 0);
}
else
{
if (m_spriteram[offs + 0] & 0x02)
{
- gfx->transpen(bitmap,cliprect, code | 0x20, color, 0, 0, x, y, 0);
- gfx->transpen(bitmap,cliprect, code | 0x21, color, 0, 0, 0x10 + x, y, 0);
+ gfx->transpen(m_palette,bitmap,cliprect, code | 0x20, color, 0, 0, x, y, 0);
+ gfx->transpen(m_palette,bitmap,cliprect, code | 0x21, color, 0, 0, 0x10 + x, y, 0);
}
else
{
- gfx->transpen(bitmap,cliprect, code | 0x20, color, 0, 0, x, y, 0);
- gfx->transpen(bitmap,cliprect, code | 0x21, color, 0, 0, x, 0x10 + y, 0);
+ gfx->transpen(m_palette,bitmap,cliprect, code | 0x20, color, 0, 0, x, y, 0);
+ gfx->transpen(m_palette,bitmap,cliprect, code | 0x21, color, 0, 0, x, 0x10 + y, 0);
}
}
}
diff --git a/src/mame/video/circus.c b/src/mame/video/circus.c
index 8f15625b15f..9a362bfcb00 100644
--- a/src/mame/video/circus.c
+++ b/src/mame/video/circus.c
@@ -80,7 +80,7 @@ void circus_state::draw_sprite_collision( bitmap_ind16 &bitmap, const rectangle
if (pixel)
{
collision |= bitmap.pix16(dy, dx);
- bitmap.pix16(dy, dx) = machine().pens[pixel];
+ bitmap.pix16(dy, dx) = m_palette->pen(pixel);
}
}
}
@@ -168,7 +168,7 @@ void circus_state::robotbwl_draw_bowling_alley( bitmap_ind16 &bitmap, const rect
void circus_state::robotbwl_draw_ball( bitmap_ind16 &bitmap, const rectangle &cliprect )
{
- m_gfxdecode->gfx(1)->transpen(bitmap,/* Y is horizontal position */
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,/* Y is horizontal position */
cliprect,
m_clown_z,
0,
@@ -187,7 +187,7 @@ UINT32 circus_state::screen_update_robotbwl(screen_device &screen, bitmap_ind16
void circus_state::crash_draw_car( bitmap_ind16 &bitmap, const rectangle &cliprect )
{
- m_gfxdecode->gfx(1)->transpen(bitmap,/* Y is horizontal position */
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,/* Y is horizontal position */
cliprect,
m_clown_z,
0,
diff --git a/src/mame/video/circusc.c b/src/mame/video/circusc.c
index f236b1141f7..da8b3187eca 100644
--- a/src/mame/video/circusc.c
+++ b/src/mame/video/circusc.c
@@ -30,7 +30,7 @@
***************************************************************************/
-void circusc_state::palette_init()
+PALETTE_INIT_MEMBER(circusc_state, circusc)
{
const UINT8 *color_prom = memregion("proms")->base();
static const int resistances_rg[3] = { 1000, 470, 220 };
@@ -44,9 +44,6 @@ void circusc_state::palette_init()
3, &resistances_rg[0], gweights, 0, 0,
2, &resistances_b[0], bweights, 0, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 32);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -70,7 +67,7 @@ void circusc_state::palette_init()
bit1 = (color_prom[i] >> 7) & 0x01;
b = combine_2_weights(bweights, bit0, bit1);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -80,14 +77,14 @@ void circusc_state::palette_init()
for (i = 0; i < 0x100; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry + 0x10);
+ palette.set_pen_indirect(i, ctabentry + 0x10);
}
/* sprites map to the lower 16 palette entries */
for (i = 0x100; i < 0x200; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -186,11 +183,11 @@ void circusc_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
}
- m_gfxdecode->gfx(1)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,cliprect,
code, color,
flipx,flipy,
sx,sy,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, 0));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 0));
}
}
diff --git a/src/mame/video/cischeat.c b/src/mame/video/cischeat.c
index 5742837034e..eef619314cc 100644
--- a/src/mame/video/cischeat.c
+++ b/src/mame/video/cischeat.c
@@ -739,7 +739,7 @@ void cischeat_state::cischeat_draw_road(bitmap_ind16 &bitmap, const rectangle &c
for (sx = -(xscroll%TILE_SIZE) ; sx <= max_x ; sx +=TILE_SIZE)
{
- gfx->transpen(bitmap,rect,
+ gfx->transpen(m_palette,bitmap,rect,
curr_code++,
attr,
0,0,
@@ -845,7 +845,7 @@ void cischeat_state::f1gpstar_draw_road(bitmap_ind16 &bitmap, const rectangle &c
/* Draw the line */
for (sx = xstart ; sx <= max_x ; sx += xdim)
{
- gfx->zoom_transpen(bitmap,rect,
+ gfx->zoom_transpen(m_palette,bitmap,rect,
code++,
attr >> 8,
0,0,
@@ -1003,12 +1003,12 @@ if ( (m_debugsprites) && ( ((attr & 0x0300)>>8) != (m_debugsprites-1) ) ) { cont
{
for (x = xstart; x != xend; x += xinc)
{
- m_gfxdecode->gfx(3)->zoom_transtable(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->zoom_transtable(m_palette,bitmap,cliprect,
code++,
color,
flipx,flipy,
(sx + x * xdim) / 0x10000, (sy + y * ydim) / 0x10000,
- xscale, yscale, m_drawmode_table, machine().shadow_table);
+ xscale, yscale, m_drawmode_table, m_palette->shadow_table());
}
}
#ifdef MAME_DEBUG
@@ -1157,12 +1157,12 @@ if ( (m_debugsprites) && ( ((attr & 0x0300)>>8) != (m_debugsprites-1) ) ) { cont
{
for (x = xstart; x != xend; x += xinc)
{
- m_gfxdecode->gfx(3)->zoom_transtable(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->zoom_transtable(m_palette,bitmap,cliprect,
code++,
color,
flipx,flipy,
(sx + x * xdim) / 0x10000, (sy + y * ydim) / 0x10000,
- xscale, yscale, m_drawmode_table, machine().shadow_table);
+ xscale, yscale, m_drawmode_table, m_palette->shadow_table());
}
}
#ifdef MAME_DEBUG
diff --git a/src/mame/video/citycon.c b/src/mame/video/citycon.c
index f39e0edb7ac..0a16fe71529 100644
--- a/src/mame/video/citycon.c
+++ b/src/mame/video/citycon.c
@@ -117,7 +117,7 @@ void citycon_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
flipx = !flipx;
}
- m_gfxdecode->gfx(m_spriteram[offs + 1] & 0x80 ? 2 : 1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_spriteram[offs + 1] & 0x80 ? 2 : 1)->transpen(m_palette,bitmap,cliprect,
m_spriteram[offs + 1] & 0x7f,
m_spriteram[offs + 2] & 0x0f,
flipx,flip_screen(),
@@ -129,7 +129,7 @@ void citycon_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
inline void citycon_state::changecolor_RRRRGGGGBBBBxxxx( int color, int indx )
{
int data = m_generic_paletteram_8[2 * indx | 1] | (m_generic_paletteram_8[2 * indx] << 8);
- palette_set_color_rgb(machine(), color, pal4bit(data >> 12), pal4bit(data >> 8), pal4bit(data >> 4));
+ m_palette->set_pen_color(color, pal4bit(data >> 12), pal4bit(data >> 8), pal4bit(data >> 4));
}
UINT32 citycon_state::screen_update_citycon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
diff --git a/src/mame/video/cloak.c b/src/mame/video/cloak.c
index f4b39b3b831..297b89e0a08 100644
--- a/src/mame/video/cloak.c
+++ b/src/mame/video/cloak.c
@@ -80,7 +80,7 @@ void cloak_state::set_pens()
bit2 = (~palette_ram[i] >> 2) & 0x01;
b = combine_3_weights(weights, bit0, bit1, bit2);
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ m_palette->set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -212,7 +212,7 @@ void cloak_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code, 0, flipx, flipy, sx, sy, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code, 0, flipx, flipy, sx, sy, 0);
}
}
diff --git a/src/mame/video/cloud9.c b/src/mame/video/cloud9.c
index 58daec17e40..6607bf4d81f 100644
--- a/src/mame/video/cloud9.c
+++ b/src/mame/video/cloud9.c
@@ -93,7 +93,7 @@ WRITE8_MEMBER(cloud9_state::cloud9_paletteram_w)
bit2 = (~b >> 2) & 0x01;
b = combine_3_weights(m_bweights, bit0, bit1, bit2);
- palette_set_color(machine(), offset & 0x3f, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset & 0x3f, rgb_t(r, g, b));
}
@@ -238,7 +238,7 @@ UINT32 cloud9_state::screen_update_cloud9(screen_device &screen, bitmap_ind16 &b
{
UINT8 *spriteaddr = m_spriteram;
int flip = m_video_control[5] ? 0xff : 0x00; /* PLAYER2 */
- pen_t black = get_black_pen(machine());
+ pen_t black = m_palette->black_pen();
int x, y, offs;
/* draw the sprites */
@@ -253,9 +253,9 @@ UINT32 cloud9_state::screen_update_cloud9(screen_device &screen, bitmap_ind16 &b
int which = spriteaddr[offs + 0x20];
int color = 0;
- m_gfxdecode->gfx(0)->transpen(m_spritebitmap,cliprect, which, color, xflip, yflip, x, y, 0);
+ m_gfxdecode->gfx(0)->transpen(m_palette,m_spritebitmap,cliprect, which, color, xflip, yflip, x, y, 0);
if (x >= 256 - 16)
- m_gfxdecode->gfx(0)->transpen(m_spritebitmap,cliprect, which, color, xflip, yflip, x - 256, y, 0);
+ m_gfxdecode->gfx(0)->transpen(m_palette,m_spritebitmap,cliprect, which, color, xflip, yflip, x - 256, y, 0);
}
/* draw the bitmap to the screen, looping over Y */
diff --git a/src/mame/video/clshroad.c b/src/mame/video/clshroad.c
index f019946ae4d..5a002faa4b5 100644
--- a/src/mame/video/clshroad.c
+++ b/src/mame/video/clshroad.c
@@ -45,7 +45,7 @@ PALETTE_INIT_MEMBER(clshroad_state,clshroad)
const UINT8 *color_prom = memregion("proms")->base();
int i;
for (i = 0;i < 256;i++)
- palette_set_color_rgb(machine(),i, pal4bit(color_prom[i + 256 * 0]),
+ palette.set_pen_color(i, pal4bit(color_prom[i + 256 * 0]),
pal4bit(color_prom[i + 256 * 1]),
pal4bit(color_prom[i + 256 * 2]));
}
@@ -55,9 +55,6 @@ PALETTE_INIT_MEMBER(clshroad_state,firebatl)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
@@ -65,20 +62,20 @@ PALETTE_INIT_MEMBER(clshroad_state,firebatl)
int g = pal4bit(color_prom[i + 0x100]);
int b = pal4bit(color_prom[i + 0x200]);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
color_prom += 0x300;
for (i = 0; i < 0x200; i++)
- colortable_entry_set_value(machine().colortable, i, i & 0xff);
+ palette.set_pen_indirect(i, i & 0xff);
for (i = 0x200; i < 0x300; i++)
{
UINT8 ctabentry = ((color_prom[(i - 0x200) + 0x000] & 0x0f) << 4) |
(color_prom[(i - 0x200) + 0x100] & 0x0f);
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -224,7 +221,7 @@ VIDEO_START_MEMBER(clshroad_state,firebatl)
m_tilemap_0b->set_scrolldx(-0x30, -0xb5);
m_tilemap_0b->set_transparent_pen(0 );
- colortable_configure_tilemap_groups(machine().colortable, m_tilemap_1, m_gfxdecode->gfx(2), 0x0f);
+ m_palette->configure_tilemap_groups(*m_tilemap_1, *m_gfxdecode->gfx(2), 0x0f);
}
VIDEO_START_MEMBER(clshroad_state,clshroad)
@@ -303,7 +300,7 @@ void clshroad_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
flipy = !flipy;
}
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
attr & 0x0f,
flipx,flipy,
diff --git a/src/mame/video/cninja.c b/src/mame/video/cninja.c
index 91d3d7c9ffa..8b4178afa31 100644
--- a/src/mame/video/cninja.c
+++ b/src/mame/video/cninja.c
@@ -105,7 +105,7 @@ void cninja_state::cninjabl_draw_sprites( screen_device &screen, bitmap_ind16 &b
while (multi >= 0)
{
- m_gfxdecode->gfx(3)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->prio_transpen(m_palette,bitmap,cliprect,
sprite - multi * inc,
colour,
fx,fy,
diff --git a/src/mame/video/combatsc.c b/src/mame/video/combatsc.c
index 0a3e5e4de6c..d846e184a9b 100644
--- a/src/mame/video/combatsc.c
+++ b/src/mame/video/combatsc.c
@@ -15,9 +15,6 @@ PALETTE_INIT_MEMBER(combatsc_state,combatsc)
const UINT8 *color_prom = memregion("proms")->base();
int pal;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x80);
-
for (pal = 0; pal < 8; pal++)
{
int i, clut;
@@ -55,7 +52,7 @@ PALETTE_INIT_MEMBER(combatsc_state,combatsc)
else
ctabentry = (pal << 4) | (color_prom[(clut << 8) | i] & 0x0f);
- colortable_entry_set_value(machine().colortable, (pal << 8) | i, ctabentry);
+ palette.set_pen_indirect((pal << 8) | i, ctabentry);
}
}
}
@@ -66,9 +63,6 @@ PALETTE_INIT_MEMBER(combatsc_state,combatscb)
const UINT8 *color_prom = memregion("proms")->base();
int pal;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x80);
-
for (pal = 0; pal < 8; pal++)
{
int i;
@@ -84,7 +78,7 @@ PALETTE_INIT_MEMBER(combatsc_state,combatscb)
/* chars - no lookup? */
ctabentry = (pal << 4) | (i & 0x0f); /* no lookup? */
- colortable_entry_set_value(machine().colortable, (pal << 8) | i, ctabentry);
+ palette.set_pen_indirect((pal << 8) | i, ctabentry);
}
}
}
@@ -100,7 +94,7 @@ void combatsc_state::set_pens( )
rgb_t color = rgb_t(pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
- colortable_palette_set_color(machine().colortable, i >> 1, color);
+ m_palette->set_indirect_color(i >> 1, color);
}
}
@@ -385,7 +379,7 @@ void combatsc_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
address_space &space = machine().driver_data()->generic_space();
int base_color = (circuit * 4) * 16 + (k007121->ctrlram_r(space, 6) & 0x10) * 2;
- k007121->sprites_draw(bitmap, cliprect, m_gfxdecode->gfx(circuit), machine().colortable, source, base_color, 0, 0, priority_bitmap, pri_mask);
+ k007121->sprites_draw(bitmap, cliprect, m_gfxdecode->gfx(circuit), m_palette, source, base_color, 0, 0, priority_bitmap, pri_mask);
}
@@ -538,7 +532,7 @@ void combatsc_state::bootleg_draw_sprites( bitmap_ind16 &bitmap, const rectangle
// if(m_vreg == 0x23 && (attributes & 0x02)) color += 1*16;
// if(m_vreg == 0x66 ) color += 2*16;
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
number, color,
attributes & 0x10,0, /* flip */
x, y, 15 );
diff --git a/src/mame/video/commando.c b/src/mame/video/commando.c
index cbca0a598e8..fa1cf1e7fba 100644
--- a/src/mame/video/commando.c
+++ b/src/mame/video/commando.c
@@ -113,7 +113,7 @@ void commando_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
}
if (bank < 3)
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect, code, color, flipx, flipy, sx, sy, 15);
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy, sx, sy, 15);
}
}
diff --git a/src/mame/video/compgolf.c b/src/mame/video/compgolf.c
index e6e9f886172..bee26cf4792 100644
--- a/src/mame/video/compgolf.c
+++ b/src/mame/video/compgolf.c
@@ -9,12 +9,12 @@
#include "includes/compgolf.h"
-void compgolf_state::palette_init()
+PALETTE_INIT_MEMBER(compgolf_state, compgolf)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0,bit1,bit2,r,g,b;
bit0 = (color_prom[i] >> 0) & 0x01;
@@ -30,7 +30,7 @@ void compgolf_state::palette_init()
bit2 = (color_prom[i] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r,g,b));
+ palette.set_pen_color(i, rgb_t(r,g,b));
}
}
@@ -99,14 +99,14 @@ void compgolf_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
fx = m_spriteram[offs] & 4;
fy = 0; /* ? */
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
sprite,
color,fx,fy,x,y,0);
/* Double Height */
if(m_spriteram[offs] & 0x10)
{
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
sprite + 1,
color, fx, fy, x, y + 16, 0);
}
diff --git a/src/mame/video/contra.c b/src/mame/video/contra.c
index 6404f155a12..9cb1322aaa9 100644
--- a/src/mame/video/contra.c
+++ b/src/mame/video/contra.c
@@ -19,14 +19,11 @@
**
***************************************************************************/
-void contra_state::palette_init()
+PALETTE_INIT_MEMBER(contra_state, contra)
{
const UINT8 *color_prom = memregion("proms")->base();
int chip;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x80);
-
for (chip = 0; chip < 2; chip++)
{
int pal;
@@ -45,7 +42,7 @@ void contra_state::palette_init()
else
ctabentry = (pal << 4) | (color_prom[(clut << 8) | i] & 0x0f);
- colortable_entry_set_value(machine().colortable, (chip << 11) | (pal << 8) | i, ctabentry);
+ palette.set_pen_indirect((chip << 11) | (pal << 8) | i, ctabentry);
}
}
}
@@ -62,7 +59,7 @@ void contra_state::set_pens( )
rgb_t color = rgb_t(pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
- colortable_palette_set_color(machine().colortable, i >> 1, color);
+ m_palette->set_indirect_color(i >> 1, color);
}
}
@@ -293,7 +290,7 @@ void contra_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect,
else
source = m_buffered_spriteram_2;
- k007121->sprites_draw(bitmap, cliprect, m_gfxdecode->gfx(bank), machine().colortable, source, base_color, 40, 0, priority_bitmap, (UINT32)-1);
+ k007121->sprites_draw(bitmap, cliprect, m_gfxdecode->gfx(bank), m_palette, source, base_color, 40, 0, priority_bitmap, (UINT32)-1);
}
UINT32 contra_state::screen_update_contra(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
diff --git a/src/mame/video/cop01.c b/src/mame/video/cop01.c
index ccde97cde43..79183de2ac0 100644
--- a/src/mame/video/cop01.c
+++ b/src/mame/video/cop01.c
@@ -10,14 +10,11 @@
#include "includes/cop01.h"
-void cop01_state::palette_init()
+PALETTE_INIT_MEMBER(cop01_state, cop01)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
@@ -25,7 +22,7 @@ void cop01_state::palette_init()
int g = pal4bit(color_prom[i + 0x100]);
int b = pal4bit(color_prom[i + 0x200]);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -33,7 +30,7 @@ void cop01_state::palette_init()
/* characters use colors 0x00-0x0f (or 0x00-0x7f, but the eight rows are identical) */
for (i = 0; i < 0x10; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
/* background tiles use colors 0xc0-0xff */
/* I don't know how much of the lookup table PROM is hooked up, */
@@ -42,14 +39,14 @@ void cop01_state::palette_init()
{
UINT8 ctabentry = 0xc0 | ((i - 0x10) & 0x30) |
(color_prom[(((i - 0x10) & 0x40) >> 2) | ((i - 0x10) & 0x0f)] & 0x0f);
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* sprites use colors 0x80-0x8f (or 0x80-0xbf, but the four rows are identical) */
for (i = 0x90; i < 0x190; i++)
{
UINT8 ctabentry = 0x80 | (color_prom[i - 0x90 + 0x100] & 0x0f);
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -191,7 +188,7 @@ void cop01_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
if (code & 0x80)
code += (m_vreg[0] & 0x30) << 3;
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/copsnrob.c b/src/mame/video/copsnrob.c
index b14949bd928..c1bc6507880 100644
--- a/src/mame/video/copsnrob.c
+++ b/src/mame/video/copsnrob.c
@@ -21,7 +21,7 @@ UINT32 copsnrob_state::screen_update_copsnrob(screen_device &screen, bitmap_ind1
sx = 31 - (offs % 32);
sy = offs / 32;
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect,
m_videoram[offs] & 0x3f,0,
0,0,
8*sx,8*sy);
@@ -30,25 +30,25 @@ UINT32 copsnrob_state::screen_update_copsnrob(screen_device &screen, bitmap_ind1
/* Draw the cars. Positioning was based on a screen shot */
if (m_cary[0])
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
m_carimage[0],0,
1,0,
0xe4,256 - m_cary[0],0);
if (m_cary[1])
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
m_carimage[1],0,
1,0,
0xc4,256 - m_cary[1],0);
if (m_cary[2])
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
m_carimage[2],0,
0,0,
0x24,256 - m_cary[2],0);
if (m_cary[3])
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
m_carimage[3],0,
0,0,
0x04,256 - m_cary[3],0);
@@ -77,7 +77,7 @@ UINT32 copsnrob_state::screen_update_copsnrob(screen_device &screen, bitmap_ind1
{
/* We've hit a truck's back end, so draw the truck. The front
end may be off the top of the screen, but we don't care. */
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
0,0,
0,0,
0x80,256 - (y + 31),0);
@@ -89,7 +89,7 @@ UINT32 copsnrob_state::screen_update_copsnrob(screen_device &screen, bitmap_ind1
{
/* We missed a truck's back end (it was off the bottom of the
screen) but have hit its front end, so draw the truck. */
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
0,0,
0,0,
0x80,256 - y,0);
diff --git a/src/mame/video/cosmic.c b/src/mame/video/cosmic.c
index f51cfec1fda..ef939608a3b 100644
--- a/src/mame/video/cosmic.c
+++ b/src/mame/video/cosmic.c
@@ -80,9 +80,6 @@ PALETTE_INIT_MEMBER(cosmic_state,panic)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x10);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x10; i++)
{
@@ -90,18 +87,18 @@ PALETTE_INIT_MEMBER(cosmic_state,panic)
int g = pal1bit(i >> 1);
int b = ((i & 0x0c) == 0x08) ? 0xaa : pal1bit(i >> 2);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* background uses colors 0x00-0x0f */
for (i = 0; i < 0x0f; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
/* sprites use colors 0x00-0x07 */
for (i = 0x10; i < 0x30; i++)
{
UINT8 ctabentry = color_prom[i - 0x10] & 0x07;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
m_map_color = panic_map_color;
@@ -122,29 +119,26 @@ PALETTE_INIT_MEMBER(cosmic_state,cosmica)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x08);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x08; i++)
{
rgb_t color = rgb_t(pal1bit(i >> 0), pal1bit(i >> 1), pal1bit(i >> 2));
- colortable_palette_set_color(machine().colortable, i, color);
+ palette.set_indirect_color(i, color);
}
/* background and sprites use colors 0x00-0x07 */
for (i = 0; i < 0x08; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
for (i = 0x08; i < 0x28; i++)
{
UINT8 ctabentry;
ctabentry = (color_prom[i - 0x08] >> 0) & 0x07;
- colortable_entry_set_value(machine().colortable, i + 0x00, ctabentry);
+ palette.set_pen_indirect(i + 0x00, ctabentry);
ctabentry = (color_prom[i - 0x08] >> 4) & 0x07;
- colortable_entry_set_value(machine().colortable, i + 0x20, ctabentry);
+ palette.set_pen_indirect(i + 0x20, ctabentry);
}
m_map_color = cosmica_map_color;
@@ -164,13 +158,13 @@ PALETTE_INIT_MEMBER(cosmic_state,cosmicg)
{
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int r = (i > 8) ? 0xff : 0xaa * ((i >> 0) & 1);
int g = 0xaa * ((i >> 1) & 1);
int b = 0xaa * ((i >> 2) & 1);
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
m_map_color = cosmicg_map_color;
@@ -182,9 +176,6 @@ PALETTE_INIT_MEMBER(cosmic_state,magspot)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x10);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x10; i++)
{
@@ -192,18 +183,18 @@ PALETTE_INIT_MEMBER(cosmic_state,magspot)
int g = pal1bit(i >> 1);
int b = pal1bit(i >> 2);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* background uses colors 0x00-0x0f */
for (i = 0; i < 0x0f; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
/* sprites use colors 0x00-0x0f */
for (i = 0x10; i < 0x30; i++)
{
UINT8 ctabentry = color_prom[i - 0x10] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
m_map_color = magspot_map_color;
@@ -216,25 +207,22 @@ PALETTE_INIT_MEMBER(cosmic_state,nomnlnd)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x10);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x10; i++)
{
rgb_t color = rgb_t(pal1bit(i >> 0), pal1bit(i >> 1), pal1bit(i >> 2));
- colortable_palette_set_color(machine().colortable, i, color);
+ palette.set_indirect_color(i, color);
}
/* background uses colors 0x00-0x07 */
for (i = 0; i < 0x07; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
/* sprites use colors 0x00-0x07 */
for (i = 0x10; i < 0x30; i++)
{
UINT8 ctabentry = color_prom[i - 0x10] & 0x07;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
m_map_color = magspot_map_color;
@@ -297,13 +285,13 @@ void cosmic_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
if (m_spriteram[offs] & 0x80)
/* 16x16 sprite */
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code, color,
0, ~m_spriteram[offs] & 0x40,
256-m_spriteram[offs + 2],m_spriteram[offs + 1],0);
else
/* 32x32 sprite */
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code >> 2, color,
0, ~m_spriteram[offs] & 0x40,
256-m_spriteram[offs + 2],m_spriteram[offs + 1],0);
diff --git a/src/mame/video/cps1.c b/src/mame/video/cps1.c
index 7bbc07c19d3..cf6b6ba0f09 100644
--- a/src/mame/video/cps1.c
+++ b/src/mame/video/cps1.c
@@ -2113,7 +2113,7 @@ VIDEO_START_MEMBER(cps_state,cps)
cps1_update_transmasks();
for (i = 0; i < cps1_palette_entries * 16; i++)
- palette_set_color(machine(), i, rgb_t(0,0,0));
+ m_palette->set_pen_color(i, rgb_t(0,0,0));
m_buffered_obj = auto_alloc_array_clear(machine(), UINT16, m_obj_size / 2);
@@ -2232,7 +2232,7 @@ void cps_state::cps1_build_palette( const UINT16* const palette_base )
g = ((palette >> 4) & 0x0f) * 0x11 * bright / 0x2d;
b = ((palette >> 0) & 0x0f) * 0x11 * bright / 0x2d;
- palette_set_color (machine(), 0x200 * page + offset, rgb_t(r, g, b));
+ m_palette->set_pen_color (0x200 * page + offset, rgb_t(r, g, b));
}
}
else
@@ -2319,14 +2319,14 @@ void cps_state::cps1_render_sprites( screen_device &screen, bitmap_ind16 &bitmap
#define DRAWSPRITE(CODE,COLOR,FLIPX,FLIPY,SX,SY) \
{ \
if (flip_screen()) \
- m_gfxdecode->gfx(2)->prio_transpen(bitmap,\
+ m_gfxdecode->gfx(2)->prio_transpen(m_palette,bitmap,\
cliprect, \
CODE, \
COLOR, \
!(FLIPX),!(FLIPY), \
512-16-(SX),256-16-(SY), screen.priority(),0x02,15); \
else \
- m_gfxdecode->gfx(2)->prio_transpen(bitmap,\
+ m_gfxdecode->gfx(2)->prio_transpen(m_palette,bitmap,\
cliprect, \
CODE, \
COLOR, \
@@ -2552,14 +2552,14 @@ void cps_state::cps2_render_sprites( screen_device &screen, bitmap_ind16 &bitmap
#define DRAWSPRITE(CODE,COLOR,FLIPX,FLIPY,SX,SY) \
{ \
if (flip_screen()) \
- m_gfxdecode->gfx(2)->prio_transpen(bitmap,\
+ m_gfxdecode->gfx(2)->prio_transpen(m_palette,bitmap,\
cliprect, \
CODE, \
COLOR, \
!(FLIPX),!(FLIPY), \
512-16-(SX),256-16-(SY), screen.priority(),primasks[priority],15); \
else \
- m_gfxdecode->gfx(2)->prio_transpen(bitmap,\
+ m_gfxdecode->gfx(2)->prio_transpen(m_palette,bitmap,\
cliprect, \
CODE, \
COLOR, \
@@ -2855,7 +2855,7 @@ UINT32 cps_state::screen_update_cps1(screen_device &screen, bitmap_ind16 &bitmap
// Maybe Capcom changed the background handling due to the problems that
// it caused on several monitors (because the background extended into the
// blanking area instead of going black, causing the monitor to clip).
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
}
cps1_render_stars(screen, bitmap, cliprect);
diff --git a/src/mame/video/crbaloon.c b/src/mame/video/crbaloon.c
index eb6702829cb..94492e3ba85 100644
--- a/src/mame/video/crbaloon.c
+++ b/src/mame/video/crbaloon.c
@@ -23,11 +23,11 @@
***************************************************************************/
-void crbaloon_state::palette_init()
+PALETTE_INIT_MEMBER(crbaloon_state, crbaloon)
{
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
UINT8 pen;
int h, r, g, b;
@@ -42,7 +42,7 @@ void crbaloon_state::palette_init()
g = h * ((~pen >> 1) & 1);
b = h * ((~pen >> 2) & 1);
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
diff --git a/src/mame/video/crshrace.c b/src/mame/video/crshrace.c
index 29c43298bd3..4803a9270f5 100644
--- a/src/mame/video/crshrace.c
+++ b/src/mame/video/crshrace.c
@@ -111,7 +111,7 @@ UINT32 crshrace_state::screen_update_crshrace(screen_device &screen, bitmap_ind1
{
if (m_gfxctrl & 0x04) /* display disable? */
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
diff --git a/src/mame/video/cvs.c b/src/mame/video/cvs.c
index 1f1b6796a54..b3ebdae85b1 100644
--- a/src/mame/video/cvs.c
+++ b/src/mame/video/cvs.c
@@ -29,9 +29,6 @@ PALETTE_INIT_MEMBER(cvs_state,cvs)
const UINT8 *color_prom = memregion("proms")->base();
int i, attr;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x10);
-
/* color mapping PROM */
for (attr = 0; attr < 0x100; attr++)
{
@@ -42,25 +39,25 @@ PALETTE_INIT_MEMBER(cvs_state,cvs)
/* bits 0 and 2 are swapped */
ctabentry = BITSWAP8(ctabentry,7,6,5,4,3,0,1,2);
- colortable_entry_set_value(machine().colortable, (attr << 3) | i, ctabentry);
+ palette.set_pen_indirect((attr << 3) | i, ctabentry);
}
}
/* background collision map */
for (i = 0; i < 8; i++)
{
- colortable_entry_set_value(machine().colortable, 0x800 + i, 0);
- colortable_entry_set_value(machine().colortable, 0x808 + i, i & 0x04);
- colortable_entry_set_value(machine().colortable, 0x810 + i, i & 0x02);
- colortable_entry_set_value(machine().colortable, 0x818 + i, i & 0x06);
+ palette.set_pen_indirect(0x800 + i, 0);
+ palette.set_pen_indirect(0x808 + i, i & 0x04);
+ palette.set_pen_indirect(0x810 + i, i & 0x02);
+ palette.set_pen_indirect(0x818 + i, i & 0x06);
}
/* sprites */
for (i = 0; i < 8; i++)
- colortable_entry_set_value(machine().colortable, SPRITE_PEN_BASE + i, i | 0x08);
+ palette.set_pen_indirect(SPRITE_PEN_BASE + i, i | 0x08);
/* bullet */
- colortable_entry_set_value(machine().colortable, BULLET_STAR_PEN, 7);
+ palette.set_pen_indirect(BULLET_STAR_PEN, 7);
}
@@ -74,7 +71,7 @@ void cvs_state::set_pens( )
int g = pal3bit(~m_palette_ram[i] >> 2);
int b = pal3bit(~m_palette_ram[i] >> 5);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ m_palette->set_indirect_color(i, rgb_t(r, g, b));
}
}
@@ -154,7 +151,7 @@ UINT32 cvs_state::screen_update_cvs(screen_device &screen, bitmap_ind16 &bitmap,
int gfxnum = (code < ram_based_char_start_indices[m_character_banking_mode]) ? 0 : 1;
- m_gfxdecode->gfx(gfxnum)->opaque(m_background_bitmap,m_background_bitmap.cliprect(),
+ m_gfxdecode->gfx(gfxnum)->opaque(m_palette,m_background_bitmap,m_background_bitmap.cliprect(),
code, color,
0, 0,
x, y);
@@ -170,7 +167,7 @@ UINT32 cvs_state::screen_update_cvs(screen_device &screen, bitmap_ind16 &bitmap,
collision_color = 0x102;
}
- m_gfxdecode->gfx(gfxnum)->opaque(m_collision_background,m_collision_background.cliprect(),
+ m_gfxdecode->gfx(gfxnum)->opaque(m_palette,m_collision_background,m_collision_background.cliprect(),
code, collision_color,
0, 0,
x, y);
@@ -212,7 +209,7 @@ UINT32 cvs_state::screen_update_cvs(screen_device &screen, bitmap_ind16 &bitmap,
m_collision_register |= 0x08;
/* Bullet/Background Collision */
- if (colortable_entry_get_value(machine().colortable, m_scrolled_collision_background.pix16(offs, bx)))
+ if (m_palette->pen_indirect(m_scrolled_collision_background.pix16(offs, bx)))
m_collision_register |= 0x80;
bitmap.pix16(offs, bx) = BULLET_STAR_PEN;
@@ -247,7 +244,7 @@ UINT32 cvs_state::screen_update_cvs(screen_device &screen, bitmap_ind16 &bitmap,
if (S2636_IS_PIXEL_DRAWN(pixel0) && S2636_IS_PIXEL_DRAWN(pixel2)) m_collision_register |= 0x04;
/* S2636 vs. background collision detection */
- if (colortable_entry_get_value(machine().colortable, m_scrolled_collision_background.pix16(y, x)))
+ if (m_palette->pen_indirect(m_scrolled_collision_background.pix16(y, x)))
{
if (S2636_IS_PIXEL_DRAWN(pixel0)) m_collision_register |= 0x10;
if (S2636_IS_PIXEL_DRAWN(pixel1)) m_collision_register |= 0x20;
@@ -330,7 +327,7 @@ void cvs_state::cvs_update_stars(bitmap_ind16 &bitmap, const rectangle &cliprect
y = ~y;
if ((y >= cliprect.min_y) && (y <= cliprect.max_y) &&
- (update_always || (colortable_entry_get_value(machine().colortable, bitmap.pix16(y, x)) == 0)))
+ (update_always || (m_palette->pen_indirect(bitmap.pix16(y, x)) == 0)))
bitmap.pix16(y, x) = star_pen;
}
}
diff --git a/src/mame/video/cyberbal.c b/src/mame/video/cyberbal.c
index 4b2ba0eeadb..bfaf9996644 100644
--- a/src/mame/video/cyberbal.c
+++ b/src/mame/video/cyberbal.c
@@ -141,7 +141,7 @@ inline void cyberbal_state::set_palette_entry(int entry, UINT16 value)
g = ((value >> 4) & 0x3e) | ((value >> 15) & 1);
b = ((value << 1) & 0x3e) | ((value >> 15) & 1);
- palette_set_color_rgb(machine(), entry, pal6bit(r), pal6bit(g), pal6bit(b));
+ m_palette->set_pen_color(entry, pal6bit(r), pal6bit(g), pal6bit(b));
}
diff --git a/src/mame/video/darius.c b/src/mame/video/darius.c
index 83962445cce..8d3cb5e5cb1 100644
--- a/src/mame/video/darius.c
+++ b/src/mame/video/darius.c
@@ -75,7 +75,7 @@ void darius_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
if (curx > 900) curx -= 1024;
if (cury > 400) cury -= 512;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code, color,
flipx, flipy,
curx, cury, 0);
diff --git a/src/mame/video/darkmist.c b/src/mame/video/darkmist.c
index 532c740c4d9..bcb5e93a8b0 100644
--- a/src/mame/video/darkmist.c
+++ b/src/mame/video/darkmist.c
@@ -68,14 +68,11 @@ TILE_GET_INFO_MEMBER(darkmist_state::get_txttile_info)
0);
}
-void darkmist_state::palette_init()
+PALETTE_INIT_MEMBER(darkmist_state, darkmist)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x101);
-
for (i = 0; i < 0x400; i++)
{
int ctabentry;
@@ -95,7 +92,7 @@ void darkmist_state::palette_init()
}
}
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -110,10 +107,10 @@ void darkmist_state::set_pens()
int g = pal4bit(m_generic_paletteram_8[i | 0x000] >> 4);
int b = pal4bit(m_generic_paletteram_8[i | 0x000] >> 0);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ m_palette->set_indirect_color(i, rgb_t(r, g, b));
}
- colortable_palette_set_color(machine().colortable, 0x100, rgb_t::black);
+ m_palette->set_indirect_color(0x100, rgb_t::black);
}
@@ -139,7 +136,7 @@ UINT32 darkmist_state::screen_update_darkmist(screen_device &screen, bitmap_ind1
m_fgtilemap->set_scrollx(0, DM_GETSCROLL(0xa));
m_fgtilemap->set_scrolly(0, DM_GETSCROLL(0xe));
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
if(m_hw & DISPLAY_BG)
m_bgtilemap->draw(screen, bitmap, cliprect, 0,0);
@@ -179,7 +176,7 @@ UINT32 darkmist_state::screen_update_darkmist(screen_device &screen, bitmap_ind1
palette+=32;
- m_gfxdecode->gfx(2)->transpen(
+ m_gfxdecode->gfx(2)->transpen(m_palette,
bitmap,cliprect,
tile,
palette,
diff --git a/src/mame/video/darkseal.c b/src/mame/video/darkseal.c
index f8250c0a898..1100aa479ab 100644
--- a/src/mame/video/darkseal.c
+++ b/src/mame/video/darkseal.c
@@ -33,7 +33,7 @@ void darkseal_state::update_24bitcol(int offset)
g = (m_generic_paletteram_16[offset] >> 8) & 0xff;
b = (m_generic_paletteram2_16[offset] >> 0) & 0xff;
- palette_set_color(machine(),offset,rgb_t(r,g,b));
+ m_palette->set_pen_color(offset,rgb_t(r,g,b));
}
WRITE16_MEMBER(darkseal_state::darkseal_palette_24bit_rg_w)
@@ -60,7 +60,7 @@ UINT32 darkseal_state::screen_update_darkseal(screen_device &screen, bitmap_ind1
{
machine().tilemap().set_flip_all(m_flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
m_deco_tilegen1->pf_update(m_pf1_rowscroll, m_pf1_rowscroll);
m_deco_tilegen2->pf_update(m_pf3_rowscroll, m_pf3_rowscroll);
diff --git a/src/mame/video/dassault.c b/src/mame/video/dassault.c
index feed9bb6f69..1b3ef442a93 100644
--- a/src/mame/video/dassault.c
+++ b/src/mame/video/dassault.c
@@ -27,7 +27,7 @@ void dassault_state::video_start()
void dassault_state::mixdassaultlayer(bitmap_rgb32 &bitmap, bitmap_ind16* sprite_bitmap, const rectangle &cliprect, UINT16 pri, UINT16 primask, UINT16 penbase, UINT8 alpha)
{
int y, x;
- const pen_t *paldata = machine().pens;
+ const pen_t *paldata = &m_palette->pen(0);
UINT16* srcline;
UINT32* dstline;
@@ -89,7 +89,7 @@ UINT32 dassault_state::screen_update_dassault(screen_device &screen, bitmap_rgb3
/* Draw playfields/update priority bitmap */
screen.priority().fill(0, cliprect);
- bitmap.fill(machine().pens[3072], cliprect);
+ bitmap.fill(m_palette->pen(3072), cliprect);
m_deco_tilegen2->tilemap_2_draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
/* The middle playfields can be swapped priority-wise */
diff --git a/src/mame/video/dcheese.c b/src/mame/video/dcheese.c
index 9544b8ded9d..b8ab93404ea 100644
--- a/src/mame/video/dcheese.c
+++ b/src/mame/video/dcheese.c
@@ -25,7 +25,7 @@
*
*************************************/
-void dcheese_state::palette_init()
+PALETTE_INIT_MEMBER(dcheese_state, dcheese)
{
const UINT16 *src = (UINT16 *)memregion("user1")->base();
int i;
@@ -35,7 +35,7 @@ void dcheese_state::palette_init()
for (i = 0; i < 65534; i++)
{
int data = *src++;
- palette_set_color_rgb(machine(), i, pal6bit(data >> 0), pal5bit(data >> 6), pal5bit(data >> 11));
+ palette.set_pen_color(i, pal6bit(data >> 0), pal5bit(data >> 6), pal5bit(data >> 11));
}
}
diff --git a/src/mame/video/dcon.c b/src/mame/video/dcon.c
index 341ba00f233..0a521d11fa3 100644
--- a/src/mame/video/dcon.c
+++ b/src/mame/video/dcon.c
@@ -157,76 +157,76 @@ void dcon_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap,const
for (ay=0; ay<dy; ay++) {
if (!fx && !fy)
{
- m_gfxdecode->gfx(4)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(4)->prio_transpen(m_palette,bitmap,cliprect,
sprite + inc,
color,fx,fy,x+ax*16,y+ay*16,
screen.priority(),pri_mask,15);
// wrap around y
- m_gfxdecode->gfx(4)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(4)->prio_transpen(m_palette,bitmap,cliprect,
sprite + inc,
color,fx,fy,x+ax*16,y+ay*16 + 512,
screen.priority(),pri_mask,15);
// wrap around y
- m_gfxdecode->gfx(4)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(4)->prio_transpen(m_palette,bitmap,cliprect,
sprite + inc,
color,fx,fy,x+ax*16,y+ay*16 - 512,
screen.priority(),pri_mask,15);
}
else if (fx && !fy)
{
- m_gfxdecode->gfx(4)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(4)->prio_transpen(m_palette,bitmap,cliprect,
sprite + inc,
color,fx,fy,x+(dx-1-ax)*16,y+ay*16,
screen.priority(),pri_mask,15);
// wrap around y
- m_gfxdecode->gfx(4)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(4)->prio_transpen(m_palette,bitmap,cliprect,
sprite + inc,
color,fx,fy,x+(dx-1-ax)*16,y+ay*16 + 512,
screen.priority(),pri_mask,15);
// wrap around y
- m_gfxdecode->gfx(4)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(4)->prio_transpen(m_palette,bitmap,cliprect,
sprite + inc,
color,fx,fy,x+(dx-1-ax)*16,y+ay*16 - 512,
screen.priority(),pri_mask,15);
}
else if (!fx && fy)
{
- m_gfxdecode->gfx(4)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(4)->prio_transpen(m_palette,bitmap,cliprect,
sprite + inc,
color,fx,fy,x+ax*16,y+(dy-1-ay)*16,
screen.priority(),pri_mask,15);
// wrap around y
- m_gfxdecode->gfx(4)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(4)->prio_transpen(m_palette,bitmap,cliprect,
sprite + inc,
color,fx,fy,x+ax*16,y+(dy-1-ay)*16 + 512,
screen.priority(),pri_mask,15);
// wrap around y
- m_gfxdecode->gfx(4)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(4)->prio_transpen(m_palette,bitmap,cliprect,
sprite + inc,
color,fx,fy,x+ax*16,y+(dy-1-ay)*16 - 512,
screen.priority(),pri_mask,15);
}
else
{
- m_gfxdecode->gfx(4)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(4)->prio_transpen(m_palette,bitmap,cliprect,
sprite + inc,
color,fx,fy,x+(dx-1-ax)*16,y+(dy-1-ay)*16,
screen.priority(),pri_mask,15);
// wrap around y
- m_gfxdecode->gfx(4)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(4)->prio_transpen(m_palette,bitmap,cliprect,
sprite + inc,
color,fx,fy,x+(dx-1-ax)*16,y+(dy-1-ay)*16 + 512,
screen.priority(),pri_mask,15);
// wrap around y
- m_gfxdecode->gfx(4)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(4)->prio_transpen(m_palette,bitmap,cliprect,
sprite + inc,
color,fx,fy,x+(dx-1-ax)*16,y+(dy-1-ay)*16 - 512,
screen.priority(),pri_mask,15);
diff --git a/src/mame/video/dday.c b/src/mame/video/dday.c
index 8d6b011e903..24a11013cb1 100644
--- a/src/mame/video/dday.c
+++ b/src/mame/video/dday.c
@@ -45,15 +45,12 @@ void dday_state::start_countdown_timer()
***************************************************************************/
-void dday_state::palette_init()
+PALETTE_INIT_MEMBER(dday_state, dday)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- palette_set_shadow_factor(machine(), 1.0 / 8);
-
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
+ palette.set_shadow_factor(1.0 / 8);
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
@@ -62,85 +59,85 @@ void dday_state::palette_init()
int g = pal4bit(color_prom[i + 0x100]);
int b = pal4bit(color_prom[i + 0x200]);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
for (i = 0; i < 0x100; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
/* HACK!!! This table is handgenerated, but it matches the screenshot.
I have no clue how it really works */
- colortable_entry_set_value(machine().colortable, 0*8+0+0, 0x00);
- colortable_entry_set_value(machine().colortable, 0*8+0+1, 0x01);
- colortable_entry_set_value(machine().colortable, 0*8+0+2, 0x15);
- colortable_entry_set_value(machine().colortable, 0*8+0+3, 0x02);
- colortable_entry_set_value(machine().colortable, 0*8+4+0, 0x00);
- colortable_entry_set_value(machine().colortable, 0*8+4+1, 0x01);
- colortable_entry_set_value(machine().colortable, 0*8+4+2, 0x15);
- colortable_entry_set_value(machine().colortable, 0*8+4+3, 0x02);
-
- colortable_entry_set_value(machine().colortable, 1*8+0+0, 0x04);
- colortable_entry_set_value(machine().colortable, 1*8+0+1, 0x05);
- colortable_entry_set_value(machine().colortable, 1*8+0+2, 0x03);
- colortable_entry_set_value(machine().colortable, 1*8+0+3, 0x07);
- colortable_entry_set_value(machine().colortable, 1*8+4+0, 0x04);
- colortable_entry_set_value(machine().colortable, 1*8+4+1, 0x05);
- colortable_entry_set_value(machine().colortable, 1*8+4+2, 0x03);
- colortable_entry_set_value(machine().colortable, 1*8+4+3, 0x07);
-
- colortable_entry_set_value(machine().colortable, 2*8+0+0, 0x08);
- colortable_entry_set_value(machine().colortable, 2*8+0+1, 0x15);
- colortable_entry_set_value(machine().colortable, 2*8+0+2, 0x0a);
- colortable_entry_set_value(machine().colortable, 2*8+0+3, 0x03);
- colortable_entry_set_value(machine().colortable, 2*8+4+0, 0x08);
- colortable_entry_set_value(machine().colortable, 2*8+4+1, 0x15);
- colortable_entry_set_value(machine().colortable, 2*8+4+2, 0x0a);
- colortable_entry_set_value(machine().colortable, 2*8+4+3, 0x03);
-
- colortable_entry_set_value(machine().colortable, 3*8+0+0, 0x08);
- colortable_entry_set_value(machine().colortable, 3*8+0+1, 0x15);
- colortable_entry_set_value(machine().colortable, 3*8+0+2, 0x0a);
- colortable_entry_set_value(machine().colortable, 3*8+0+3, 0x03);
- colortable_entry_set_value(machine().colortable, 3*8+4+0, 0x08);
- colortable_entry_set_value(machine().colortable, 3*8+4+1, 0x15);
- colortable_entry_set_value(machine().colortable, 3*8+4+2, 0x0a);
- colortable_entry_set_value(machine().colortable, 3*8+4+3, 0x03);
-
- colortable_entry_set_value(machine().colortable, 4*8+0+0, 0x10);
- colortable_entry_set_value(machine().colortable, 4*8+0+1, 0x11);
- colortable_entry_set_value(machine().colortable, 4*8+0+2, 0x12);
- colortable_entry_set_value(machine().colortable, 4*8+0+3, 0x07);
- colortable_entry_set_value(machine().colortable, 4*8+4+0, 0x10);
- colortable_entry_set_value(machine().colortable, 4*8+4+1, 0x11);
- colortable_entry_set_value(machine().colortable, 4*8+4+2, 0x12);
- colortable_entry_set_value(machine().colortable, 4*8+4+3, 0x07);
-
- colortable_entry_set_value(machine().colortable, 5*8+0+0, 0x1d);
- colortable_entry_set_value(machine().colortable, 5*8+0+1, 0x15);
- colortable_entry_set_value(machine().colortable, 5*8+0+2, 0x16);
- colortable_entry_set_value(machine().colortable, 5*8+0+3, 0x1b);
- colortable_entry_set_value(machine().colortable, 5*8+4+0, 0x1d);
- colortable_entry_set_value(machine().colortable, 5*8+4+1, 0x15);
- colortable_entry_set_value(machine().colortable, 5*8+4+2, 0x16);
- colortable_entry_set_value(machine().colortable, 5*8+4+3, 0x1b);
-
- colortable_entry_set_value(machine().colortable, 6*8+0+0, 0x1d);
- colortable_entry_set_value(machine().colortable, 6*8+0+1, 0x15);
- colortable_entry_set_value(machine().colortable, 6*8+0+2, 0x1a);
- colortable_entry_set_value(machine().colortable, 6*8+0+3, 0x1b);
- colortable_entry_set_value(machine().colortable, 6*8+4+0, 0x1d);
- colortable_entry_set_value(machine().colortable, 6*8+4+1, 0x15);
- colortable_entry_set_value(machine().colortable, 6*8+4+2, 0x1a);
- colortable_entry_set_value(machine().colortable, 6*8+4+3, 0x1b);
-
- colortable_entry_set_value(machine().colortable, 7*8+0+0, 0x1d);
- colortable_entry_set_value(machine().colortable, 7*8+0+1, 0x02);
- colortable_entry_set_value(machine().colortable, 7*8+0+2, 0x04);
- colortable_entry_set_value(machine().colortable, 7*8+0+3, 0x1b);
- colortable_entry_set_value(machine().colortable, 7*8+4+0, 0x1d);
- colortable_entry_set_value(machine().colortable, 7*8+4+1, 0x02);
- colortable_entry_set_value(machine().colortable, 7*8+4+2, 0x04);
- colortable_entry_set_value(machine().colortable, 7*8+4+3, 0x1b);
+ palette.set_pen_indirect(0*8+0+0, 0x00);
+ palette.set_pen_indirect(0*8+0+1, 0x01);
+ palette.set_pen_indirect(0*8+0+2, 0x15);
+ palette.set_pen_indirect(0*8+0+3, 0x02);
+ palette.set_pen_indirect(0*8+4+0, 0x00);
+ palette.set_pen_indirect(0*8+4+1, 0x01);
+ palette.set_pen_indirect(0*8+4+2, 0x15);
+ palette.set_pen_indirect(0*8+4+3, 0x02);
+
+ palette.set_pen_indirect(1*8+0+0, 0x04);
+ palette.set_pen_indirect(1*8+0+1, 0x05);
+ palette.set_pen_indirect(1*8+0+2, 0x03);
+ palette.set_pen_indirect(1*8+0+3, 0x07);
+ palette.set_pen_indirect(1*8+4+0, 0x04);
+ palette.set_pen_indirect(1*8+4+1, 0x05);
+ palette.set_pen_indirect(1*8+4+2, 0x03);
+ palette.set_pen_indirect(1*8+4+3, 0x07);
+
+ palette.set_pen_indirect(2*8+0+0, 0x08);
+ palette.set_pen_indirect(2*8+0+1, 0x15);
+ palette.set_pen_indirect(2*8+0+2, 0x0a);
+ palette.set_pen_indirect(2*8+0+3, 0x03);
+ palette.set_pen_indirect(2*8+4+0, 0x08);
+ palette.set_pen_indirect(2*8+4+1, 0x15);
+ palette.set_pen_indirect(2*8+4+2, 0x0a);
+ palette.set_pen_indirect(2*8+4+3, 0x03);
+
+ palette.set_pen_indirect(3*8+0+0, 0x08);
+ palette.set_pen_indirect(3*8+0+1, 0x15);
+ palette.set_pen_indirect(3*8+0+2, 0x0a);
+ palette.set_pen_indirect(3*8+0+3, 0x03);
+ palette.set_pen_indirect(3*8+4+0, 0x08);
+ palette.set_pen_indirect(3*8+4+1, 0x15);
+ palette.set_pen_indirect(3*8+4+2, 0x0a);
+ palette.set_pen_indirect(3*8+4+3, 0x03);
+
+ palette.set_pen_indirect(4*8+0+0, 0x10);
+ palette.set_pen_indirect(4*8+0+1, 0x11);
+ palette.set_pen_indirect(4*8+0+2, 0x12);
+ palette.set_pen_indirect(4*8+0+3, 0x07);
+ palette.set_pen_indirect(4*8+4+0, 0x10);
+ palette.set_pen_indirect(4*8+4+1, 0x11);
+ palette.set_pen_indirect(4*8+4+2, 0x12);
+ palette.set_pen_indirect(4*8+4+3, 0x07);
+
+ palette.set_pen_indirect(5*8+0+0, 0x1d);
+ palette.set_pen_indirect(5*8+0+1, 0x15);
+ palette.set_pen_indirect(5*8+0+2, 0x16);
+ palette.set_pen_indirect(5*8+0+3, 0x1b);
+ palette.set_pen_indirect(5*8+4+0, 0x1d);
+ palette.set_pen_indirect(5*8+4+1, 0x15);
+ palette.set_pen_indirect(5*8+4+2, 0x16);
+ palette.set_pen_indirect(5*8+4+3, 0x1b);
+
+ palette.set_pen_indirect(6*8+0+0, 0x1d);
+ palette.set_pen_indirect(6*8+0+1, 0x15);
+ palette.set_pen_indirect(6*8+0+2, 0x1a);
+ palette.set_pen_indirect(6*8+0+3, 0x1b);
+ palette.set_pen_indirect(6*8+4+0, 0x1d);
+ palette.set_pen_indirect(6*8+4+1, 0x15);
+ palette.set_pen_indirect(6*8+4+2, 0x1a);
+ palette.set_pen_indirect(6*8+4+3, 0x1b);
+
+ palette.set_pen_indirect(7*8+0+0, 0x1d);
+ palette.set_pen_indirect(7*8+0+1, 0x02);
+ palette.set_pen_indirect(7*8+0+2, 0x04);
+ palette.set_pen_indirect(7*8+0+3, 0x1b);
+ palette.set_pen_indirect(7*8+4+0, 0x1d);
+ palette.set_pen_indirect(7*8+4+1, 0x02);
+ palette.set_pen_indirect(7*8+4+2, 0x04);
+ palette.set_pen_indirect(7*8+4+3, 0x1b);
}
@@ -315,7 +312,7 @@ UINT32 dday_state::screen_update_dday(screen_device &screen, bitmap_ind16 &bitma
UINT16 src_pixel = m_main_bitmap.pix16(y, x);
if (sl_bitmap.pix16(y, x) == 0xff)
- src_pixel += machine().total_colors();
+ src_pixel += m_palette->entries();
bitmap.pix16(y, x) = src_pixel;
}
diff --git a/src/mame/video/ddragon.c b/src/mame/video/ddragon.c
index 30ab2a0d5a1..04dc7ceabec 100644
--- a/src/mame/video/ddragon.c
+++ b/src/mame/video/ddragon.c
@@ -131,7 +131,7 @@ WRITE8_MEMBER(ddragon_state::ddragon_fgvideoram_w)
***************************************************************************/
-#define DRAW_SPRITE( order, sx, sy ) gfx->transpen(bitmap,\
+#define DRAW_SPRITE( order, sx, sy ) gfx->transpen(m_palette,bitmap,\
cliprect, \
(which + order),color,flipx,flipy,sx,sy,0);
diff --git a/src/mame/video/ddragon3.c b/src/mame/video/ddragon3.c
index 725bfe20373..6049207fa7e 100644
--- a/src/mame/video/ddragon3.c
+++ b/src/mame/video/ddragon3.c
@@ -218,15 +218,15 @@ void ddragon3_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
for (count=0;count<chain;count++) {
if (flip_screen()) {
if (!flipy) {
- gfx->transpen(bitmap,cliprect,number+count,colourbank,flipx,flipy,xpos,ypos+(16*(chain-1))-(16*count),0);
+ gfx->transpen(m_palette,bitmap,cliprect,number+count,colourbank,flipx,flipy,xpos,ypos+(16*(chain-1))-(16*count),0);
} else {
- gfx->transpen(bitmap,cliprect,number+count,colourbank,flipx,flipy,xpos,ypos+16*count,0);
+ gfx->transpen(m_palette,bitmap,cliprect,number+count,colourbank,flipx,flipy,xpos,ypos+16*count,0);
}
} else {
if (flipy) {
- gfx->transpen(bitmap,cliprect,number+count,colourbank,flipx,flipy,xpos,ypos-(16*(chain-1))+(16*count),0);
+ gfx->transpen(m_palette,bitmap,cliprect,number+count,colourbank,flipx,flipy,xpos,ypos-(16*(chain-1))+(16*count),0);
} else {
- gfx->transpen(bitmap,cliprect,number+count,colourbank,flipx,flipy,xpos,ypos-16*count,0);
+ gfx->transpen(m_palette,bitmap,cliprect,number+count,colourbank,flipx,flipy,xpos,ypos-16*count,0);
}
}
}
diff --git a/src/mame/video/ddribble.c b/src/mame/video/ddribble.c
index fbeeb2263c8..d36badf23d7 100644
--- a/src/mame/video/ddribble.c
+++ b/src/mame/video/ddribble.c
@@ -10,22 +10,19 @@
#include "includes/ddribble.h"
-void ddribble_state::palette_init()
+PALETTE_INIT_MEMBER(ddribble_state, ddribble)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x40);
-
for (i = 0x10; i < 0x40; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
/* sprite #2 uses pens 0x00-0x0f */
for (i = 0x40; i < 0x140; i++)
{
UINT8 ctabentry = color_prom[i - 0x40] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -39,7 +36,7 @@ void ddribble_state::set_pens( )
UINT16 data = m_paletteram[i | 1] | (m_paletteram[i] << 8);
rgb_t color = rgb_t(pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
- colortable_palette_set_color(machine().colortable, i >> 1, color);
+ m_palette->set_indirect_color(i >> 1, color);
}
}
@@ -224,7 +221,7 @@ void ddribble_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipr
ey = flipy ? (height - 1 - y) : y;
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
(number)+x_offset[ex]+y_offset[ey],
color,
flipx, flipy,
diff --git a/src/mame/video/deadang.c b/src/mame/video/deadang.c
index 2ab4b1434e2..6fdcdcf22ee 100644
--- a/src/mame/video/deadang.c
+++ b/src/mame/video/deadang.c
@@ -116,7 +116,7 @@ void deadang_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, co
if (fy) fy=0; else fy=1;
}
- m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->prio_transpen(m_palette,bitmap,cliprect,
sprite,
color,fx,fy,x,y,
screen.priority(),pri,15);
@@ -148,7 +148,7 @@ UINT32 deadang_state::screen_update_deadang(screen_device &screen, bitmap_ind16
m_pf2_layer->enable(!(m_scroll_ram[0x34]&4));
flip_screen_set(m_scroll_ram[0x34]&0x40 );
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
screen.priority().fill(0, cliprect);
m_pf3_layer->draw(screen, bitmap, cliprect, 0,1);
m_pf1_layer->draw(screen, bitmap, cliprect, 0,2);
diff --git a/src/mame/video/dec0.c b/src/mame/video/dec0.c
index e721e9a5347..6df6216bde8 100644
--- a/src/mame/video/dec0.c
+++ b/src/mame/video/dec0.c
@@ -25,7 +25,7 @@ void dec0_state::update_24bitcol(int offset)
g = (m_generic_paletteram_16[offset] >> 8) & 0xff;
b = (m_generic_paletteram2_16[offset] >> 0) & 0xff;
- palette_set_color(machine(),offset,rgb_t(r,g,b));
+ m_palette->set_pen_color(offset,rgb_t(r,g,b));
}
WRITE16_MEMBER(dec0_state::dec0_paletteram_rg_w)
@@ -266,7 +266,7 @@ UINT32 dec0_state::screen_update_birdtry(screen_device &screen, bitmap_ind16 &bi
/* This game doesn't have the extra playfield chip on the game board, but
the palette does show through. */
- bitmap.fill(machine().pens[768], cliprect);
+ bitmap.fill(m_palette->pen(768), cliprect);
m_tilegen2->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
m_spritegen->draw_sprites(machine(), bitmap, cliprect, m_buffered_spriteram, 0x00, 0x00, 0x0f);
m_tilegen1->deco_bac06_pf_draw(bitmap,cliprect,0, 0x00, 0x00, 0x00, 0x00);
diff --git a/src/mame/video/dec8.c b/src/mame/video/dec8.c
index 381b5e1745b..e352087d64d 100644
--- a/src/mame/video/dec8.c
+++ b/src/mame/video/dec8.c
@@ -77,7 +77,7 @@ PALETTE_INIT_MEMBER(dec8_state,ghostb)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, bit3, r, g, b;
@@ -91,13 +91,13 @@ PALETTE_INIT_MEMBER(dec8_state,ghostb)
bit2 = (color_prom[i] >> 6) & 0x01;
bit3 = (color_prom[i] >> 7) & 0x01;
g = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- bit0 = (color_prom[i + machine().total_colors()] >> 0) & 0x01;
- bit1 = (color_prom[i + machine().total_colors()] >> 1) & 0x01;
- bit2 = (color_prom[i + machine().total_colors()] >> 2) & 0x01;
- bit3 = (color_prom[i + machine().total_colors()] >> 3) & 0x01;
+ bit0 = (color_prom[i + palette.entries()] >> 0) & 0x01;
+ bit1 = (color_prom[i + palette.entries()] >> 1) & 0x01;
+ bit2 = (color_prom[i + palette.entries()] >> 2) & 0x01;
+ bit3 = (color_prom[i + palette.entries()] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -240,13 +240,13 @@ void dec8_state::srdarwin_draw_sprites( bitmap_ind16 &bitmap, const rectangle &
}
else sy2 = sy + 16;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
color,
fx,flip_screen(),
sx,sy,0);
if (multi)
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code+1,
color,
fx,flip_screen(),
diff --git a/src/mame/video/deckarn.c b/src/mame/video/deckarn.c
index 33af77c37c5..d380505d3cd 100644
--- a/src/mame/video/deckarn.c
+++ b/src/mame/video/deckarn.c
@@ -15,7 +15,8 @@ const device_type DECO_KARNOVSPRITES = &device_creator<deco_karnovsprites_device
deco_karnovsprites_device::deco_karnovsprites_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, DECO_KARNOVSPRITES, "karnovsprites_device", tag, owner, clock, "deco_karnovsprites", __FILE__),
m_gfxregion(0),
- m_gfxdecode(*this)
+ m_gfxdecode(*this),
+ m_palette(*this)
{
}
@@ -110,14 +111,24 @@ void deco_karnovsprites_device::draw_sprites( running_machine &machine, bitmap_i
else
sprite2 = sprite + 1;
- m_gfxdecode->gfx(m_gfxregion)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_gfxregion)->transpen(m_palette,bitmap,cliprect,
sprite,
colour,fx,fy,x,y,0);
/* 1 more sprite drawn underneath */
if (extra)
- m_gfxdecode->gfx(m_gfxregion)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_gfxregion)->transpen(m_palette,bitmap,cliprect,
sprite2,
colour,fx,fy,x,y+16,0);
}
}
+
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void deco_karnovsprites_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<deco_karnovsprites_device &>(device).m_palette.set_tag(tag);
+}
diff --git a/src/mame/video/deckarn.h b/src/mame/video/deckarn.h
index 33dd49eb5ec..6c0cb13b7f0 100644
--- a/src/mame/video/deckarn.h
+++ b/src/mame/video/deckarn.h
@@ -9,6 +9,7 @@ public:
// static configuration
static void static_set_gfxdecode_tag(device_t &device, const char *tag);
+ static void static_set_palette_tag(device_t &device, const char *tag);
static void set_gfx_region(device_t &device, int region);
protected:
@@ -18,9 +19,13 @@ protected:
UINT8 m_gfxregion;
private:
required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
};
extern const device_type DECO_KARNOVSPRITES;
#define MCFG_DECO_KARNOVSPRITES_GFXDECODE(_gfxtag) \
deco_karnovsprites_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+
+#define MCFG_DECO_KARNOVSPRITES_PALETTE(_palette_tag) \
+ deco_karnovsprites_device::static_set_palette_tag(*device, "^" _palette_tag);
diff --git a/src/mame/video/decmxc06.c b/src/mame/video/decmxc06.c
index fdd70f4319c..3f47ebc488f 100644
--- a/src/mame/video/decmxc06.c
+++ b/src/mame/video/decmxc06.c
@@ -50,7 +50,8 @@ const device_type DECO_MXC06 = &device_creator<deco_mxc06_device>;
deco_mxc06_device::deco_mxc06_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, DECO_MXC06, "decmxc06_device", tag, owner, clock, "deco_mxc06", __FILE__),
m_gfxregion(0),
- m_gfxdecode(*this)
+ m_gfxdecode(*this),
+ m_palette(*this)
{
}
@@ -157,7 +158,7 @@ void deco_mxc06_device::draw_sprites( running_machine &machine, bitmap_ind16 &bi
if (draw)
{
- m_gfxdecode->gfx(m_gfxregion)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_gfxregion)->transpen(m_palette,bitmap,cliprect,
code - y * incy,
color & col_mask,
flipx,flipy,
@@ -197,7 +198,7 @@ void deco_mxc06_device::draw_sprites_bootleg( running_machine &machine, bitmap_i
sx -= 0x100;
- m_gfxdecode->gfx(m_gfxregion)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_gfxregion)->transpen(m_palette,bitmap,cliprect,
code,
color & col_mask,
flipx,flipy,
@@ -215,3 +216,13 @@ void deco_mxc06_device::device_start()
void deco_mxc06_device::device_reset()
{
}
+
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void deco_mxc06_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<deco_mxc06_device &>(device).m_palette.set_tag(tag);
+}
diff --git a/src/mame/video/decmxc06.h b/src/mame/video/decmxc06.h
index cbdd4689f23..62bb9bb7a97 100644
--- a/src/mame/video/decmxc06.h
+++ b/src/mame/video/decmxc06.h
@@ -8,6 +8,7 @@ public:
// static configuration
static void static_set_gfxdecode_tag(device_t &device, const char *tag);
+ static void static_set_palette_tag(device_t &device, const char *tag);
static void set_gfx_region(device_t &device, int region);
void set_gfxregion(int region) { m_gfxregion = region; };
@@ -23,10 +24,13 @@ protected:
private:
required_device<gfxdecode_device> m_gfxdecode;
-
+ required_device<palette_device> m_palette;
};
extern const device_type DECO_MXC06;
#define MCFG_DECO_MXC06_GFXDECODE(_gfxtag) \
deco_mxc06_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+
+#define MCFG_DECO_MXC06_PALETTE(_palette_tag) \
+ deco_mxc06_device::static_set_palette_tag(*device, "^" _palette_tag);
diff --git a/src/mame/video/deco16ic.c b/src/mame/video/deco16ic.c
index e65bbc19653..50d2b17d38f 100644
--- a/src/mame/video/deco16ic.c
+++ b/src/mame/video/deco16ic.c
@@ -181,7 +181,8 @@ deco16ic_device::deco16ic_device(const machine_config &mconfig, const char *tag,
m_pf12_last_small(0),
m_pf12_last_big(0),
m_pf1_8bpp_mode(0),
- m_gfxdecode(*this)
+ m_gfxdecode(*this),
+ m_palette(*this)
{
}
@@ -512,7 +513,7 @@ void deco16ic_device::custom_tilemap_draw(
if ((flags & TILEMAP_DRAW_OPAQUE) || (p & trans_mask))
{
- bitmap.pix(y, x) = machine().pens[p];
+ bitmap.pix(y, x) = m_palette->pen(p);
if (screen.priority().valid())
{
UINT8 *pri = &screen.priority().pix8(y);
@@ -944,3 +945,13 @@ void deco16ic_device::tilemap_12_combine_draw(screen_device &screen, bitmap_rgb3
{
custom_tilemap_draw(screen, bitmap, cliprect, 0, m_pf1_tilemap_16x16, 0, m_pf2_tilemap_16x16, m_pf1_rowscroll_ptr, m_pf12_control[1], m_pf12_control[2], m_pf12_control[5] & 0xff, m_pf12_control[6] & 0xff, 0xf, 4, 0xff, flags, priority, is_tattoo);
}
+
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void deco16ic_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<deco16ic_device &>(device).m_palette.set_tag(tag);
+}
diff --git a/src/mame/video/deco16ic.h b/src/mame/video/deco16ic.h
index 4227670589b..1eceb27d6aa 100644
--- a/src/mame/video/deco16ic.h
+++ b/src/mame/video/deco16ic.h
@@ -42,6 +42,7 @@ public:
// static configuration
static void static_set_gfxdecode_tag(device_t &device, const char *tag);
+ static void static_set_palette_tag(device_t &device, const char *tag);
DECLARE_WRITE16_MEMBER( pf1_data_w );
@@ -148,6 +149,7 @@ private:
TILE_GET_INFO_MEMBER(get_pf2_tile_info_b);
TILE_GET_INFO_MEMBER(get_pf1_tile_info_b);
required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
};
extern const device_type DECO16IC;
@@ -167,4 +169,7 @@ extern const device_type DECO16IC;
#define MCFG_DECO16IC_GFXDECODE(_gfxtag) \
deco16ic_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+#define MCFG_DECO16IC_PALETTE(_palette_tag) \
+ deco16ic_device::static_set_palette_tag(*device, "^" _palette_tag);
+
#endif
diff --git a/src/mame/video/deco32.c b/src/mame/video/deco32.c
index 74ef209563d..1819cdfa58b 100644
--- a/src/mame/video/deco32.c
+++ b/src/mame/video/deco32.c
@@ -87,7 +87,7 @@ void deco32_state::updateAceRam()
r = (UINT8)((float)r + (((float)fadeptr - (float)r) * (float)fadepsr/255.0f));
}
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ m_palette->set_pen_color(i,rgb_t(r,g,b));
}
}
@@ -106,7 +106,7 @@ WRITE32_MEMBER(deco32_state::deco32_nonbuffered_palette_w)
g = (m_generic_paletteram_32[offset] >> 8) & 0xff;
r = (m_generic_paletteram_32[offset] >> 0) & 0xff;
- palette_set_color(machine(),offset,rgb_t(r,g,b));
+ m_palette->set_pen_color(offset,rgb_t(r,g,b));
}
WRITE32_MEMBER(deco32_state::deco32_buffered_palette_w)
@@ -117,7 +117,7 @@ WRITE32_MEMBER(deco32_state::deco32_buffered_palette_w)
WRITE32_MEMBER(deco32_state::deco32_palette_dma_w)
{
- const int m=machine().total_colors();
+ const int m=m_palette->entries();
int r,g,b,i;
for (i=0; i<m; i++) {
@@ -134,7 +134,7 @@ WRITE32_MEMBER(deco32_state::deco32_palette_dma_w)
g = (m_generic_paletteram_32[i] >> 8) & 0xff;
r = (m_generic_paletteram_32[i] >> 0) & 0xff;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ m_palette->set_pen_color(i,rgb_t(r,g,b));
}
}
}
@@ -143,7 +143,7 @@ WRITE32_MEMBER(deco32_state::deco32_palette_dma_w)
/******************************************************************************/
-INLINE void dragngun_drawgfxzoom(
+INLINE void dragngun_drawgfxzoom(dragngun_state *state,
bitmap_rgb32 &dest_bmp,const rectangle &clip,gfx_element *gfx,
UINT32 code,UINT32 color,int flipx,int flipy,int sx,int sy,
int transparent_color,
@@ -167,7 +167,7 @@ INLINE void dragngun_drawgfxzoom(
{
if( gfx )
{
- const pen_t *pal = &gfx->machine().pens[gfx->colorbase() + gfx->granularity() * (color % gfx->colors())];
+ const pen_t *pal = &state->m_palette->pen(gfx->colorbase() + gfx->granularity() * (color % gfx->colors()));
const UINT8 *code_base = gfx->get_data(code % gfx->elements());
if (sprite_screen_width && sprite_screen_height)
@@ -475,7 +475,7 @@ void dragngun_state::dragngun_draw_sprites( bitmap_rgb32 &bitmap, const rectangl
sprite&=0x7fff;
if (zoomx!=0x10000 || zoomy!=0x10000)
- dragngun_drawgfxzoom(
+ dragngun_drawgfxzoom(this,
bitmap,cliprect,m_gfxdecode->gfx(bank),
sprite,
colour,
@@ -484,7 +484,7 @@ void dragngun_state::dragngun_draw_sprites( bitmap_rgb32 &bitmap, const rectangl
15,zoomx,zoomy,NULL,0,
((xpos+(zoomx<<4))>>16) - (xpos>>16), ((ypos+(zoomy<<4))>>16) - (ypos>>16), alpha );
else
- m_gfxdecode->gfx(bank)->alpha(bitmap,cliprect,
+ m_gfxdecode->gfx(bank)->alpha(m_palette,bitmap,cliprect,
sprite,
colour,
fx,fy,
@@ -570,7 +570,7 @@ UINT32 deco32_state::screen_update_captaven(screen_device &screen, bitmap_ind16
machine().tilemap().set_flip_all(flip_screen() ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
screen.priority().fill(0, cliprect);
- bitmap.fill(machine().pens[0x000], cliprect); // Palette index not confirmed
+ bitmap.fill(m_palette->pen(0x000), cliprect); // Palette index not confirmed
m_deco_tilegen2->set_pf1_8bpp_mode(1);
@@ -600,7 +600,7 @@ UINT32 deco32_state::screen_update_captaven(screen_device &screen, bitmap_ind16
UINT32 dragngun_state::screen_update_dragngun(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
m_deco_tilegen1->pf_update(m_pf1_rowscroll, m_pf2_rowscroll);
m_deco_tilegen2->pf_update(m_pf3_rowscroll, m_pf4_rowscroll);
@@ -637,7 +637,7 @@ UINT32 dragngun_state::screen_update_dragngun(screen_device &screen, bitmap_rgb3
UINT32 deco32_state::screen_update_fghthist(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
screen.priority().fill(0, cliprect);
- bitmap.fill(machine().pens[0x300], cliprect); // Palette index not confirmed
+ bitmap.fill(m_palette->pen(0x300), cliprect); // Palette index not confirmed
m_deco_tilegen1->pf_update(m_pf1_rowscroll, m_pf2_rowscroll);
m_deco_tilegen2->pf_update(m_pf3_rowscroll, m_pf4_rowscroll);
@@ -676,7 +676,7 @@ UINT32 deco32_state::screen_update_fghthist(screen_device &screen, bitmap_rgb32
*/
void deco32_state::mixDualAlphaSprites(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, gfx_element *gfx0, gfx_element *gfx1, int mixAlphaTilemap)
{
- const pen_t *pens = machine().pens;
+ const pen_t *pens = m_palette->pens();
const pen_t *pal0 = &pens[gfx0->colorbase()];
const pen_t *pal1 = &pens[gfx1->colorbase()];
const pen_t *pal2 = &pens[m_gfxdecode->gfx((m_pri&1) ? 1 : 2)->colorbase()];
@@ -820,7 +820,7 @@ UINT32 deco32_state::screen_update_nslasher(screen_device &screen, bitmap_rgb32
screen.priority().fill(0, cliprect);
- bitmap.fill(machine().pens[0x200], cliprect);
+ bitmap.fill(m_palette->pen(0x200), cliprect);
/* Draw sprites to temporary bitmaps, saving alpha & priority info for later mixing */
m_sprgen1->set_pix_raw_shift(8);
diff --git a/src/mame/video/deco_mlc.c b/src/mame/video/deco_mlc.c
index fb2f6a96ca1..21685ed920f 100644
--- a/src/mame/video/deco_mlc.c
+++ b/src/mame/video/deco_mlc.c
@@ -35,7 +35,7 @@ VIDEO_START_MEMBER(deco_mlc_state,mlc)
}
-static void mlc_drawgfxzoomline(
+static void mlc_drawgfxzoomline(deco_mlc_state *state,
UINT32* dest,const rectangle &clip,gfx_element *gfx,
UINT32 code1,UINT32 code2, UINT32 color,int flipx,int sx,
int transparent_color,int use8bpp,
@@ -93,7 +93,7 @@ static void mlc_drawgfxzoomline(
if( ex>sx )
{ /* skip if inner loop doesn't draw anything */
- const pen_t *pal = &gfx->machine().pens[gfx->colorbase() + gfx->granularity() * (color % gfx->colors())];
+ const pen_t *pal = &state->m_palette->pen(gfx->colorbase() + gfx->granularity() * (color % gfx->colors()));
const UINT8 *code_base1 = gfx->get_data(code1 % gfx->elements());
/* no alpha */
@@ -521,7 +521,7 @@ void deco_mlc_state::draw_sprites( const rectangle &cliprect, int scanline, UINT
}
}
- mlc_drawgfxzoomline(
+ mlc_drawgfxzoomline(this,
dest,user_clip,m_gfxdecode->gfx(0),
tile,tile2,
color + colorOffset,fx,realxbase,
@@ -552,7 +552,7 @@ void deco_mlc_state::screen_eof_mlc(screen_device &screen, bool state)
UINT32 deco_mlc_state::screen_update_mlc(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
// temp_bitmap->fill(0, cliprect);
- bitmap.fill(machine().pens[0], cliprect); /* Pen 0 fill colour confirmed from Skull Fang level 2 */
+ bitmap.fill(m_palette->pen(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 dec4420abaa..4dbe89928e6 100644
--- a/src/mame/video/decocass.c
+++ b/src/mame/video/decocass.c
@@ -248,10 +248,10 @@ void decocass_state::draw_object(bitmap_ind16 &bitmap, const rectangle &cliprect
else
sx = 91 - (m_part_h_shift & 0x7f);
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect, 0, color, 0, 0, sx + 64, sy, 0);
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect, 1, color, 0, 0, sx, sy, 0);
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect, 0, color, 0, 1, sx + 64, sy - 64, 0);
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect, 1, color, 0, 1, sx, sy - 64, 0);
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect, 0, color, 0, 0, sx + 64, sy, 0);
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect, 1, color, 0, 0, sx, sy, 0);
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect, 0, color, 0, 1, sx + 64, sy - 64, 0);
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect, 1, color, 0, 1, sx, sy - 64, 0);
}
void decocass_state::draw_center(bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -294,7 +294,7 @@ WRITE8_MEMBER(decocass_state::decocass_paletteram_w )
m_paletteram[offset] = data;
offset = (offset & 31) ^ 16;
- colortable_palette_set_color(machine().colortable, offset, rgb_t(pal3bit(~data >> 0), pal3bit(~data >> 3), pal2bit(~data >> 6)));
+ m_palette->set_indirect_color(offset, rgb_t(pal3bit(~data >> 0), pal3bit(~data >> 3), pal2bit(~data >> 6)));
}
WRITE8_MEMBER(decocass_state::decocass_charram_w )
@@ -515,7 +515,7 @@ void decocass_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
sy -= sprite_y_adjust;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
sprite_ram[offs + interleave],
color,
flipx,flipy,
@@ -524,7 +524,7 @@ void decocass_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
sy += (flip_screen() ? -256 : 256);
// Wrap around
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
sprite_ram[offs + interleave],
color,
flipx,flipy,
diff --git a/src/mame/video/decocomn.c b/src/mame/video/decocomn.c
index d71f17adc17..e4d7f5471b7 100644
--- a/src/mame/video/decocomn.c
+++ b/src/mame/video/decocomn.c
@@ -74,7 +74,7 @@ WRITE16_MEMBER( decocomn_device::nonbuffered_palette_w )
g = (state->m_generic_paletteram_16[offset + 1] >> 8) & 0xff;
r = (state->m_generic_paletteram_16[offset + 1] >> 0) & 0xff;
- palette_set_color(space.machine(), offset / 2, rgb_t(r,g,b));
+ state->m_palette->set_pen_color(offset / 2, rgb_t(r,g,b));
}
WRITE16_MEMBER( decocomn_device::buffered_palette_w )
@@ -90,7 +90,7 @@ WRITE16_MEMBER( decocomn_device::palette_dma_w )
{
driver_device *state = space.machine().driver_data();
- const int m = space.machine().total_colors();
+ const int m = state->m_palette->entries();
int r, g, b, i;
for (i = 0; i < m; i++)
@@ -103,7 +103,7 @@ WRITE16_MEMBER( decocomn_device::palette_dma_w )
g = (state->m_generic_paletteram_16[i * 2 + 1] >> 8) & 0xff;
r = (state->m_generic_paletteram_16[i * 2 + 1] >> 0) & 0xff;
- palette_set_color(space.machine(), i, rgb_t(r,g,b));
+ state->m_palette->set_pen_color(i, rgb_t(r,g,b));
}
}
}
diff --git a/src/mame/video/decospr.c b/src/mame/video/decospr.c
index fe06040794e..09f865bc7a1 100644
--- a/src/mame/video/decospr.c
+++ b/src/mame/video/decospr.c
@@ -170,7 +170,8 @@ decospr_device::decospr_device(const machine_config &mconfig, const char *tag, d
m_y_offset(0),
m_flipallx(0),
m_transpen(0),
- m_gfxdecode(*this)
+ m_gfxdecode(*this),
+ m_palette(*this)
{
}
@@ -355,14 +356,14 @@ void decospr_device::draw_sprites_common(_BitmapClass &bitmap, const rectangle &
if ((ypos<=cliprect.max_y) && (ypos>=(cliprect.min_y)-16))
{
if (m_pricallback)
- m_gfxdecode->gfx(m_gfxregion)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_gfxregion)->prio_transpen(m_palette,bitmap,cliprect,
sprite - multi * inc,
colour,
fx,fy,
x,ypos,
m_screen->priority(),pri,m_transpen);
else
- m_gfxdecode->gfx(m_gfxregion)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_gfxregion)->transpen(m_palette,bitmap,cliprect,
sprite - multi * inc,
colour,
fx,fy,
@@ -374,14 +375,14 @@ void decospr_device::draw_sprites_common(_BitmapClass &bitmap, const rectangle &
if (w)
{
if (m_pricallback)
- m_gfxdecode->gfx(m_gfxregion)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_gfxregion)->prio_transpen(m_palette,bitmap,cliprect,
(sprite - multi * inc)-mult2,
colour,
fx,fy,
x-16,ypos,
m_screen->priority(),pri,m_transpen);
else
- m_gfxdecode->gfx(m_gfxregion)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_gfxregion)->transpen(m_palette,bitmap,cliprect,
(sprite - multi * inc)-mult2,
colour,
fx,fy,
@@ -479,7 +480,7 @@ void decospr_device::draw_sprites_common(_BitmapClass &bitmap, const rectangle &
if ((ypos<=cliprect.max_y) && (ypos>=(cliprect.min_y)-16))
{
- m_gfxdecode->gfx(m_gfxregion)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_gfxregion)->prio_transpen(m_palette,bitmap,cliprect,
sprite + yy + h * xx,
colour,
fx,fy,
@@ -491,7 +492,7 @@ void decospr_device::draw_sprites_common(_BitmapClass &bitmap, const rectangle &
if ((ypos<=cliprect.max_y) && (ypos>=(cliprect.min_y-16)))
{
- m_gfxdecode->gfx(m_gfxregion)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_gfxregion)->prio_transpen(m_palette,bitmap,cliprect,
sprite + yy + h * xx,
colour,
fx,fy,
@@ -506,7 +507,7 @@ void decospr_device::draw_sprites_common(_BitmapClass &bitmap, const rectangle &
if ((ypos<=cliprect.max_y) && (ypos>=(cliprect.min_y)-16))
{
- m_gfxdecode->gfx(m_gfxregion)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_gfxregion)->transpen(m_palette,bitmap,cliprect,
sprite + yy + h * xx,
colour,
fx,fy,
@@ -518,7 +519,7 @@ void decospr_device::draw_sprites_common(_BitmapClass &bitmap, const rectangle &
if ((ypos<=cliprect.max_y) && (ypos>=(cliprect.min_y-16)))
{
- m_gfxdecode->gfx(m_gfxregion)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_gfxregion)->transpen(m_palette,bitmap,cliprect,
sprite + yy + h * xx,
colour,
fx,fy,
@@ -576,7 +577,7 @@ void decospr_device::inefficient_copy_sprite_bitmap(bitmap_rgb32 &bitmap, const
fatalerror("decospr_device::inefficient_copy_sprite_bitmap with no m_sprite_bitmap\n");
int y, x;
- const pen_t *paldata = machine().pens;
+ const pen_t *paldata = m_palette->pens();
UINT16* srcline;
UINT32* dstline;
@@ -620,3 +621,13 @@ void decospr_device::inefficient_copy_sprite_bitmap(bitmap_rgb32 &bitmap, const
}
}
}
+
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void decospr_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<decospr_device &>(device).m_palette.set_tag(tag);
+}
diff --git a/src/mame/video/decospr.h b/src/mame/video/decospr.h
index fe7155b74fd..29596bc0316 100644
--- a/src/mame/video/decospr.h
+++ b/src/mame/video/decospr.h
@@ -10,6 +10,7 @@ public:
// static configuration
static void static_set_gfxdecode_tag(device_t &device, const char *tag);
+ static void static_set_palette_tag(device_t &device, const char *tag);
static void set_gfx_region(device_t &device, int gfxregion);
static void set_pri_callback(device_t &device, decospr_priority_callback_func callback);
static void set_col_callback(device_t &device, decospr_colour_callback_func callback);
@@ -78,9 +79,14 @@ private:
template<class _BitmapClass>
void draw_sprites_common(_BitmapClass &bitmap, const rectangle &cliprect, UINT16* spriteram, int sizewords, bool invert_flip);
required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
};
extern const device_type DECO_SPRITE;
#define MCFG_DECO_SPRITE_GFXDECODE(_gfxtag) \
decospr_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+
+#define MCFG_DECO_SPRITE_PALETTE(_palette_tag) \
+ decospr_device::static_set_palette_tag(*device, "^" _palette_tag);
+
diff --git a/src/mame/video/deniam.c b/src/mame/video/deniam.c
index af4c1cc2dd9..621674c3a2f 100644
--- a/src/mame/video/deniam.c
+++ b/src/mame/video/deniam.c
@@ -147,7 +147,7 @@ WRITE16_MEMBER(deniam_state::deniam_palette_w)
r = ((data << 1) & 0x1e) | ((data >> 12) & 0x01);
g = ((data >> 3) & 0x1e) | ((data >> 13) & 0x01);
b = ((data >> 7) & 0x1e) | ((data >> 14) & 0x01);
- palette_set_color_rgb(machine(), offset, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(offset, pal5bit(r), pal5bit(g), pal5bit(b));
}
READ16_MEMBER(deniam_state::deniam_coinctrl_r)
diff --git a/src/mame/video/digdug.c b/src/mame/video/digdug.c
index 8725906c036..6b09b65a881 100644
--- a/src/mame/video/digdug.c
+++ b/src/mame/video/digdug.c
@@ -26,8 +26,6 @@ PALETTE_INIT_MEMBER(digdug_state,digdug)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- machine().colortable = colortable_alloc(machine(), 32);
-
for (i = 0;i < 32;i++)
{
int bit0,bit1,bit2,r,g,b;
@@ -44,24 +42,24 @@ PALETTE_INIT_MEMBER(digdug_state,digdug)
bit1 = (*color_prom >> 6) & 0x01;
bit2 = (*color_prom >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- colortable_palette_set_color(machine().colortable,i,rgb_t(r,g,b));
+ palette.set_indirect_color(i,rgb_t(r,g,b));
color_prom++;
}
/* characters - direct mapping */
for (i = 0; i < 16; i++)
{
- colortable_entry_set_value(machine().colortable, i*2+0, 0);
- colortable_entry_set_value(machine().colortable, i*2+1, i);
+ palette.set_pen_indirect(i*2+0, 0);
+ palette.set_pen_indirect(i*2+1, i);
}
/* sprites */
for (i = 0;i < 0x100;i++)
- colortable_entry_set_value(machine().colortable, 16*2+i, (*color_prom++ & 0x0f) + 0x10);
+ palette.set_pen_indirect(16*2+i, (*color_prom++ & 0x0f) + 0x10);
/* bg_select */
for (i = 0;i < 0x100;i++)
- colortable_entry_set_value(machine().colortable, 16*2+256+i, *color_prom++ & 0x0f);
+ palette.set_pen_indirect(16*2+256+i, *color_prom++ & 0x0f);
}
@@ -277,14 +275,14 @@ void digdug_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
{
for (x = 0;x <= size;x++)
{
- UINT32 transmask = colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, 0x1f);
- m_gfxdecode->gfx(1)->transmask(bitmap,visarea,
+ UINT32 transmask = m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 0x1f);
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,visarea,
sprite + gfx_offs[y ^ (size * flipy)][x ^ (size * flipx)],
color,
flipx,flipy,
((sx + 16*x) & 0xff), sy + 16*y,transmask);
/* wraparound */
- m_gfxdecode->gfx(1)->transmask(bitmap,visarea,
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,visarea,
sprite + gfx_offs[y ^ (size * flipy)][x ^ (size * flipx)],
color,
flipx,flipy,
diff --git a/src/mame/video/djboy.c b/src/mame/video/djboy.c
index 89d1a794bd4..7d952b030b4 100644
--- a/src/mame/video/djboy.c
+++ b/src/mame/video/djboy.c
@@ -48,7 +48,7 @@ WRITE8_MEMBER(djboy_state::djboy_paletteram_w)
offset &= ~1;
val = (m_paletteram[offset] << 8) | m_paletteram[offset + 1];
- palette_set_color_rgb(machine(), offset / 2, pal4bit(val >> 8), pal4bit(val >> 4), pal4bit(val >> 0));
+ m_palette->set_pen_color(offset / 2, pal4bit(val >> 8), pal4bit(val >> 4), pal4bit(val >> 0));
}
UINT32 djboy_state::screen_update_djboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
diff --git a/src/mame/video/djmain.c b/src/mame/video/djmain.c
index 41c764e275a..bb63bf9a0c5 100644
--- a/src/mame/video/djmain.c
+++ b/src/mame/video/djmain.c
@@ -94,7 +94,7 @@ void djmain_state::draw_sprites( bitmap_rgb32 &bitmap, const rectangle &cliprect
int zh = oy + (((y + 1) * yscale + (1 << 11)) >> 12) - sy;
- m_gfxdecode->gfx(0)->zoom_transpen(bitmap,
+ m_gfxdecode->gfx(0)->zoom_transpen(m_palette,bitmap,
cliprect,
c,
color,
@@ -112,7 +112,7 @@ void djmain_state::draw_sprites( bitmap_rgb32 &bitmap, const rectangle &cliprect
int sy = oy + (y << 4);
- m_gfxdecode->gfx(0)->transpen(bitmap,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,
cliprect,
c,
color,
@@ -162,7 +162,7 @@ UINT32 djmain_state::screen_update_djmain(screen_device &screen, bitmap_rgb32 &b
order[j] = temp;
}
- bitmap.fill(machine().pens[0], cliprect);
+ bitmap.fill(m_palette->pen(0), cliprect);
for (i = 0; i < NUM_LAYERS + 1; i++)
{
diff --git a/src/mame/video/dkong.c b/src/mame/video/dkong.c
index 35b4f7ff517..a01a7338d58 100644
--- a/src/mame/video/dkong.c
+++ b/src/mame/video/dkong.c
@@ -204,7 +204,7 @@ PALETTE_INIT_MEMBER(dkong_state,dkong2b)
int i;
rgb = compute_res_net_all(machine(), color_prom, &dkong_decode_info, &dkong_net_info);
- palette_set_colors(machine(), 0, rgb, 256);
+ palette.set_pen_colors(0, rgb, 256);
/* Now treat tri-state black background generation */
@@ -215,10 +215,10 @@ PALETTE_INIT_MEMBER(dkong_state,dkong2b)
r = compute_res_net( 1, 0, &dkong_net_bck_info );
g = compute_res_net( 1, 1, &dkong_net_bck_info );
b = compute_res_net( 1, 2, &dkong_net_bck_info );
- palette_set_color_rgb(machine(),i,r,g,b);
+ palette.set_pen_color(i,r,g,b);
}
- machine().palette->normalize_range(0, 255);
+ palette.palette()->normalize_range(0, 255);
color_prom += 512;
/* color_prom now points to the beginning of the character color codes */
@@ -242,7 +242,7 @@ PALETTE_INIT_MEMBER(dkong_state,dkong4b)
/* blue component */
b = compute_res_net( (color_prom[0]>>0) & 0x03, 2, &radarscp_net_info );
- palette_set_color_rgb(machine(),i,r,g,b);
+ palette.set_pen_color(i,r,g,b);
color_prom++;
}
@@ -254,10 +254,10 @@ PALETTE_INIT_MEMBER(dkong_state,dkong4b)
r = compute_res_net( 1, 0, &radarscp_net_bck_info );
g = compute_res_net( 1, 1, &radarscp_net_bck_info );
b = compute_res_net( 1, 2, &radarscp_net_bck_info );
- palette_set_color_rgb(machine(),i,r,g,b);
+ palette.set_pen_color(i,r,g,b);
}
- machine().palette->normalize_range(0, 255);
+ palette.palette()->normalize_range(0, 255);
color_prom += 256;
/* color_prom now points to the beginning of the character color codes */
@@ -280,7 +280,7 @@ PALETTE_INIT_MEMBER(dkong_state,radarscp)
/* blue component */
b = compute_res_net( (color_prom[0]>>0) & 0x03, 2, &radarscp_net_info );
- palette_set_color_rgb(machine(),i,r,g,b);
+ palette.set_pen_color(i,r,g,b);
color_prom++;
}
@@ -292,14 +292,14 @@ PALETTE_INIT_MEMBER(dkong_state,radarscp)
r = compute_res_net( 1, 0, &radarscp_net_bck_info );
g = compute_res_net( 1, 1, &radarscp_net_bck_info );
b = compute_res_net( 1, 2, &radarscp_net_bck_info );
- palette_set_color_rgb(machine(),i,r,g,b);
+ palette.set_pen_color(i,r,g,b);
}
/* Star color */
r = compute_res_net( 1, 0, &radarscp_stars_net_info );
g = compute_res_net( 0, 1, &radarscp_stars_net_info );
b = compute_res_net( 0, 2, &radarscp_stars_net_info );
- palette_set_color_rgb(machine(),RADARSCP_STAR_COL,r,g,b);
+ palette.set_pen_color(RADARSCP_STAR_COL,r,g,b);
/* Oscillating background */
for (i = 0;i < 256;i++)
@@ -308,7 +308,7 @@ PALETTE_INIT_MEMBER(dkong_state,radarscp)
g = compute_res_net( 0, 1, &radarscp_blue_net_info );
b = compute_res_net( i, 2, &radarscp_blue_net_info );
- palette_set_color_rgb(machine(),RADARSCP_BCK_COL_OFFSET + i,r,g,b);
+ palette.set_pen_color(RADARSCP_BCK_COL_OFFSET + i,r,g,b);
}
/* Grid */
@@ -318,10 +318,10 @@ PALETTE_INIT_MEMBER(dkong_state,radarscp)
g = compute_res_net( (i>>1) & 1, 1, &radarscp_grid_net_info );
b = compute_res_net( (i>>2) & 1, 2, &radarscp_grid_net_info );
- palette_set_color_rgb(machine(),RADARSCP_GRID_COL_OFFSET + i,r,g,b);
+ palette.set_pen_color(RADARSCP_GRID_COL_OFFSET + i,r,g,b);
}
- machine().palette->normalize_range(0, RADARSCP_GRID_COL_OFFSET+7);
+ palette.palette()->normalize_range(0, RADARSCP_GRID_COL_OFFSET+7);
color_prom += 256;
/* color_prom now points to the beginning of the character color codes */
@@ -343,7 +343,7 @@ PALETTE_INIT_MEMBER(dkong_state,radarscp1)
/* blue component */
b = compute_res_net( color_prom[0], 2, &radarscp1_net_info );
- palette_set_color_rgb(machine(),i,r,g,b);
+ palette.set_pen_color(i,r,g,b);
color_prom++;
}
@@ -355,14 +355,14 @@ PALETTE_INIT_MEMBER(dkong_state,radarscp1)
r = compute_res_net( 0, 0, &radarscp1_net_info );
g = compute_res_net( 0, 1, &radarscp1_net_info );
b = compute_res_net( 0, 2, &radarscp1_net_info );
- palette_set_color_rgb(machine(),i,r,g,b);
+ palette.set_pen_color(i,r,g,b);
}
/* Star color */
r = compute_res_net( 1, 0, &radarscp_stars_net_info );
g = compute_res_net( 0, 1, &radarscp_stars_net_info );
b = compute_res_net( 0, 2, &radarscp_stars_net_info );
- palette_set_color_rgb(machine(),RADARSCP_STAR_COL,r,g,b);
+ palette.set_pen_color(RADARSCP_STAR_COL,r,g,b);
/* Oscillating background */
for (i = 0;i < 256;i++)
@@ -371,7 +371,7 @@ PALETTE_INIT_MEMBER(dkong_state,radarscp1)
g = compute_res_net( 0, 1, &radarscp_blue_net_info );
b = compute_res_net( i, 2, &radarscp_blue_net_info );
- palette_set_color_rgb(machine(),RADARSCP_BCK_COL_OFFSET + i,r,g,b);
+ palette.set_pen_color(RADARSCP_BCK_COL_OFFSET + i,r,g,b);
}
/* Grid */
@@ -381,9 +381,9 @@ PALETTE_INIT_MEMBER(dkong_state,radarscp1)
g = compute_res_net( (i>>1) & 1, 1, &radarscp_grid_net_info );
b = compute_res_net( (i>>2) & 1, 2, &radarscp_grid_net_info );
- palette_set_color_rgb(machine(),RADARSCP_GRID_COL_OFFSET + i,r,g,b);
+ palette.set_pen_color(RADARSCP_GRID_COL_OFFSET + i,r,g,b);
}
- machine().palette->normalize_range(0, RADARSCP_GRID_COL_OFFSET+7);
+ palette.palette()->normalize_range(0, RADARSCP_GRID_COL_OFFSET+7);
color_prom += 512;
/* color_prom now points to the beginning of the character color codes */
@@ -433,8 +433,8 @@ PALETTE_INIT_MEMBER(dkong_state,dkong3)
rgb_t *rgb;
rgb = compute_res_net_all(machine(), color_prom, &dkong3_decode_info, &dkong3_net_info);
- palette_set_colors(machine(), 0, rgb, 256);
- machine().palette->normalize_range(0, 255);
+ palette.set_pen_colors(0, rgb, 256);
+ palette.palette()->normalize_range(0, 255);
auto_free(machine(), rgb);
color_prom += 1024;
@@ -632,11 +632,11 @@ void dkong_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect,
}
y = scanline - ((y + add_y + 1 + scanline_vfc) & 0x0F);
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code, color, flipx, flipy, x, y, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy, x, y, 0);
// wraparound
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code, color, flipx, flipy, m_flip ? x + 256 : x - 256, y, 0);
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code, color, flipx, flipy, x, y - 256, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy, m_flip ? x + 256 : x - 256, y, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy, x, y - 256, 0);
num_sprt++;
}
@@ -899,10 +899,10 @@ void dkong_state::check_palette()
switch (newset)
{
case DKONG_RADARSCP_CONVERSION:
- PALETTE_INIT_CALL_MEMBER(radarscp);
+ PALETTE_INIT_NAME(radarscp)(m_palette);
break;
case DKONG_BOARD:
- PALETTE_INIT_CALL_MEMBER(dkong2b);
+ PALETTE_INIT_NAME(dkong2b)(m_palette);
break;
}
}
@@ -995,7 +995,7 @@ UINT32 dkong_state::screen_update_pestplce(screen_device &screen, bitmap_ind16 &
{
if (m_sprite_ram[offs])
{
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
m_sprite_ram[offs + 2],
(m_sprite_ram[offs + 1] & 0x0f) + 16 * m_palette_bank,
m_sprite_ram[offs + 1] & 0x80,m_sprite_ram[offs + 1] & 0x40,
diff --git a/src/mame/video/docastle.c b/src/mame/video/docastle.c
index c75f6b08562..8d524f0b461 100644
--- a/src/mame/video/docastle.c
+++ b/src/mame/video/docastle.c
@@ -27,7 +27,7 @@
***************************************************************************/
-void docastle_state::palette_init()
+PALETTE_INIT_MEMBER(docastle_state, docastle)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -55,8 +55,8 @@ void docastle_state::palette_init()
/* because the graphics are decoded as 4bpp with the top bit used for transparency
or priority, we create matching 3bpp sets of palette entries, which effectively
ignores the value of the top bit */
- palette_set_color(machine(), ((i & 0xf8) << 1) | 0x00 | (i & 0x07), rgb_t(r,g,b));
- palette_set_color(machine(), ((i & 0xf8) << 1) | 0x08 | (i & 0x07), rgb_t(r,g,b));
+ palette.set_pen_color(((i & 0xf8) << 1) | 0x00 | (i & 0x07), rgb_t(r,g,b));
+ palette.set_pen_color(((i & 0xf8) << 1) | 0x08 | (i & 0x07), rgb_t(r,g,b));
color_prom++;
}
}
@@ -181,7 +181,7 @@ void docastle_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap,
}
/* first draw the sprite, visible */
- m_gfxdecode->gfx(1)->prio_transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->prio_transmask(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -190,7 +190,7 @@ void docastle_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap,
0x00,0x80ff);
/* then draw the mask, behind the background but obscuring following sprites */
- m_gfxdecode->gfx(1)->prio_transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->prio_transmask(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/dogfgt.c b/src/mame/video/dogfgt.c
index f64e663d752..633a78fe0e0 100644
--- a/src/mame/video/dogfgt.c
+++ b/src/mame/video/dogfgt.c
@@ -11,7 +11,7 @@
***************************************************************************/
-void dogfgt_state::palette_init()
+PALETTE_INIT_MEMBER(dogfgt_state, dogfgt)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -37,7 +37,7 @@ void dogfgt_state::palette_init()
bit2 = (*color_prom >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i + 16, rgb_t(r,g,b));
+ palette.set_pen_color(i + 16, rgb_t(r,g,b));
color_prom++;
}
}
@@ -192,7 +192,7 @@ void dogfgt_state::draw_sprites( bitmap_ind16 &bitmap,const rectangle &cliprect
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
m_spriteram[offs + 1] + ((m_spriteram[offs] & 0x30) << 4),
(m_spriteram[offs] & 0x08) >> 3,
flipx,flipy,
diff --git a/src/mame/video/dooyong.c b/src/mame/video/dooyong.c
index 6110f11ee8f..62b128c6074 100644
--- a/src/mame/video/dooyong.c
+++ b/src/mame/video/dooyong.c
@@ -159,7 +159,7 @@ WRITE8_MEMBER(dooyong_state::paletteram_flytiger_w)
UINT16 value;
m_paletteram_flytiger[offset] = data;
value = m_paletteram_flytiger[offset & ~1] | (m_paletteram_flytiger[offset | 1] << 8);
- palette_set_color_rgb(machine(), offset/2, pal5bit(value >> 10), pal5bit(value >> 5), pal5bit(value >> 0));
+ m_palette->set_pen_color(offset/2, pal5bit(value >> 10), pal5bit(value >> 5), pal5bit(value >> 0));
}
}
@@ -413,7 +413,7 @@ void dooyong_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, co
for (y = 0; y <= height; y++)
{
- m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->prio_transpen(m_palette,bitmap,cliprect,
code + y,
color,
flipx, flipy,
@@ -481,7 +481,7 @@ void dooyong_state::rshark_draw_sprites(screen_device &screen, bitmap_ind16 &bit
for (x = 0; x <= width; x++)
{
int _x = sx + (16 * (flipx ? (width - x) : x));
- m_gfxdecode->gfx(0)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->prio_transpen(m_palette,bitmap,cliprect,
code,
color,
flipx, flipy,
@@ -498,7 +498,7 @@ void dooyong_state::rshark_draw_sprites(screen_device &screen, bitmap_ind16 &bit
UINT32 dooyong_state::screen_update_lastday(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
screen.priority().fill(0, cliprect);
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 1);
@@ -512,7 +512,7 @@ UINT32 dooyong_state::screen_update_lastday(screen_device &screen, bitmap_ind16
UINT32 dooyong_state::screen_update_gulfstrm(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
screen.priority().fill(0, cliprect);
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 1);
@@ -525,7 +525,7 @@ UINT32 dooyong_state::screen_update_gulfstrm(screen_device &screen, bitmap_ind16
UINT32 dooyong_state::screen_update_pollux(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
screen.priority().fill(0, cliprect);
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 1);
@@ -538,7 +538,7 @@ UINT32 dooyong_state::screen_update_pollux(screen_device &screen, bitmap_ind16 &
UINT32 dooyong_state::screen_update_flytiger(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
screen.priority().fill(0, cliprect);
if (m_flytiger_pri)
@@ -560,7 +560,7 @@ UINT32 dooyong_state::screen_update_flytiger(screen_device &screen, bitmap_ind16
UINT32 dooyong_state::screen_update_bluehawk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
screen.priority().fill(0, cliprect);
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 1);
@@ -574,7 +574,7 @@ UINT32 dooyong_state::screen_update_bluehawk(screen_device &screen, bitmap_ind16
UINT32 dooyong_state::screen_update_primella(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
if (m_tx_pri) m_tx_tilemap->draw(screen, bitmap, cliprect, 0, 0);
@@ -585,7 +585,7 @@ UINT32 dooyong_state::screen_update_primella(screen_device &screen, bitmap_ind16
UINT32 dooyong_state::screen_update_rshark(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
screen.priority().fill(0, cliprect);
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 1);
@@ -599,7 +599,7 @@ UINT32 dooyong_state::screen_update_rshark(screen_device &screen, bitmap_ind16 &
UINT32 dooyong_state::screen_update_popbingo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
screen.priority().fill(0, cliprect);
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 1);
diff --git a/src/mame/video/drgnmst.c b/src/mame/video/drgnmst.c
index 5df8ddc9ce7..bdbac6e8238 100644
--- a/src/mame/video/drgnmst.c
+++ b/src/mame/video/drgnmst.c
@@ -93,7 +93,7 @@ void drgnmst_state::draw_sprites( bitmap_ind16 &bitmap,const rectangle &cliprect
realy = ypos + incy * y;
realnumber = number + x + y * 16;
- gfx->transpen(bitmap,cliprect, realnumber, colr, flipx, flipy, realx, realy, 15);
+ gfx->transpen(m_palette,bitmap,cliprect, realnumber, colr, flipx, flipy, realx, realy, 15);
}
}
source += 4;
diff --git a/src/mame/video/dribling.c b/src/mame/video/dribling.c
index 96fa0866dda..9c22199420b 100644
--- a/src/mame/video/dribling.c
+++ b/src/mame/video/dribling.c
@@ -17,7 +17,7 @@
*
*************************************/
-void dribling_state::palette_init()
+PALETTE_INIT_MEMBER(dribling_state, dribling)
{
const UINT8 *prom = memregion("proms")->base() + 0x400;
int i;
@@ -32,7 +32,7 @@ void dribling_state::palette_init()
g *= 0x55;
b *= 0xff;
- palette_set_color(machine(), i, rgb_t(r,g,b));
+ palette.set_pen_color(i, rgb_t(r,g,b));
}
}
diff --git a/src/mame/video/drmicro.c b/src/mame/video/drmicro.c
index cafa102aae7..d100cd61372 100644
--- a/src/mame/video/drmicro.c
+++ b/src/mame/video/drmicro.c
@@ -56,14 +56,11 @@ TILE_GET_INFO_MEMBER(drmicro_state::get_bg2_tile_info)
/****************************************************************************/
-void drmicro_state::palette_init()
+PALETTE_INIT_MEMBER(drmicro_state, drmicro)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x20);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -88,7 +85,7 @@ void drmicro_state::palette_init()
bit2 = (color_prom[i] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -97,7 +94,7 @@ void drmicro_state::palette_init()
for (i = 0; i < 0x200; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -145,7 +142,7 @@ UINT32 drmicro_state::screen_update_drmicro(screen_device &screen, bitmap_ind16
else
x = (240 - x) & 0xff;
- m_gfxdecode->gfx(3-g)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3-g)->transpen(m_palette,bitmap,cliprect,
chr,
col,
fx,fy,
@@ -153,7 +150,7 @@ UINT32 drmicro_state::screen_update_drmicro(screen_device &screen, bitmap_ind16
if (x > 240)
{
- m_gfxdecode->gfx(3-g)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3-g)->transpen(m_palette,bitmap,cliprect,
chr,
col,
fx,fy,
diff --git a/src/mame/video/dynax.c b/src/mame/video/dynax.c
index 43d61cf2257..9d2d7f4fa2a 100644
--- a/src/mame/video/dynax.c
+++ b/src/mame/video/dynax.c
@@ -32,14 +32,14 @@ PALETTE_INIT_MEMBER(dynax_state,sprtmtch)
if (!color_prom)
return;
- for (int i = 0; i < machine().total_colors(); i++)
+ for (int i = 0; i < palette.entries(); i++)
{
int x = (color_prom[i] << 8) + color_prom[0x200 + i];
/* The bits are in reverse order! */
int r = BITSWAP8((x >> 0) & 0x1f, 7, 6, 5, 0, 1, 2, 3, 4);
int g = BITSWAP8((x >> 5) & 0x1f, 7, 6, 5, 0, 1, 2, 3, 4);
int b = BITSWAP8((x >> 10) & 0x1f, 7, 6, 5, 0, 1, 2, 3, 4);
- palette_set_color_rgb(machine(), i, pal5bit(r), pal5bit(g), pal5bit(b));
+ palette.set_pen_color(i, pal5bit(r), pal5bit(g), pal5bit(b));
}
}
@@ -50,14 +50,14 @@ PALETTE_INIT_MEMBER(dynax_state,janyuki)
if (!color_prom)
return;
- for (int i = 0; i < machine().total_colors(); i++)
+ for (int i = 0; i < palette.entries(); i++)
{
int x = (color_prom[i] << 8) + color_prom[0x200 + i];
/* The bits are in reverse order! */
int r = BITSWAP8((x >> 0) & 0x0f, 7, 6, 5, 4, 0, 1, 2, 3);
int g = BITSWAP8((x >> 5) & 0x0f, 7, 6, 5, 4, 0, 1, 2, 3);
int b = BITSWAP8((x >> 10) & 0x0f, 7, 6, 5, 4, 0, 1, 2, 3);
- palette_set_color_rgb(machine(), i, pal4bit(r), pal4bit(g), pal4bit(b));
+ palette.set_pen_color(i, pal4bit(r), pal4bit(g), pal4bit(b));
}
}
diff --git a/src/mame/video/dynduke.c b/src/mame/video/dynduke.c
index be2875f6b76..246078d14b2 100644
--- a/src/mame/video/dynduke.c
+++ b/src/mame/video/dynduke.c
@@ -11,7 +11,7 @@ WRITE16_MEMBER(dynduke_state::dynduke_paletteram_w)
COMBINE_DATA(&m_generic_paletteram_16[offset]);
color=m_generic_paletteram_16[offset];
- palette_set_color_rgb(machine(),offset,pal4bit(color >> 0),pal4bit(color >> 4),pal4bit(color >> 8));
+ m_palette->set_pen_color(offset,pal4bit(color >> 0),pal4bit(color >> 4),pal4bit(color >> 8));
}
WRITE16_MEMBER(dynduke_state::dynduke_background_w)
@@ -157,7 +157,7 @@ void dynduke_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect,
if (fy) fy=0; else fy=1;
}
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect,
sprite,
color,fx,fy,x,y,15);
}
@@ -173,7 +173,7 @@ void dynduke_state::draw_background(bitmap_ind16 &bitmap, const rectangle &clipr
/* if we're disabled, don't draw */
if (!m_back_enable)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return;
}
diff --git a/src/mame/video/eprom.c b/src/mame/video/eprom.c
index dbd454113dd..da1ff64db10 100644
--- a/src/mame/video/eprom.c
+++ b/src/mame/video/eprom.c
@@ -37,7 +37,7 @@ void eprom_state::update_palette()
g = ((data >> 4) & 15) * i / 4;
b = ((data >> 0) & 15) * i / 4;
- palette_set_color_rgb(machine(), color, r, g, b);
+ m_palette->set_pen_color(color, r, g, b);
}
}
@@ -202,7 +202,7 @@ UINT32 eprom_state::screen_update_eprom(screen_device &screen, bitmap_ind16 &bit
{
if (m_video_disable)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
@@ -349,7 +349,7 @@ UINT32 eprom_state::screen_update_guts(screen_device &screen, bitmap_ind16 &bitm
{
if (m_video_disable)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
diff --git a/src/mame/video/equites.c b/src/mame/video/equites.c
index bda0ac8f208..bb28ecc06c5 100644
--- a/src/mame/video/equites.c
+++ b/src/mame/video/equites.c
@@ -13,19 +13,17 @@ PALETTE_INIT_MEMBER(equites_state,equites)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- machine().colortable = colortable_alloc(machine(), 256);
-
for (i = 0; i < 256; i++)
- colortable_palette_set_color(machine().colortable, i, rgb_t(pal4bit(color_prom[i]), pal4bit(color_prom[i + 0x100]), pal4bit(color_prom[i + 0x200])));
+ palette.set_indirect_color(i, rgb_t(pal4bit(color_prom[i]), pal4bit(color_prom[i + 0x100]), pal4bit(color_prom[i + 0x200])));
// point to the CLUT
color_prom += 0x380;
for (i = 0; i < 256; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
for (i = 0; i < 0x80; i++)
- colortable_entry_set_value(machine().colortable, i + 0x100, color_prom[i]);
+ palette.set_pen_indirect(i + 0x100, color_prom[i]);
}
PALETTE_INIT_MEMBER(equites_state,splndrbt)
@@ -33,25 +31,23 @@ PALETTE_INIT_MEMBER(equites_state,splndrbt)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- machine().colortable = colortable_alloc(machine(), 256);
-
for (i = 0; i < 0x100; i++)
- colortable_palette_set_color(machine().colortable, i, rgb_t(pal4bit(color_prom[i]), pal4bit(color_prom[i + 0x100]), pal4bit(color_prom[i + 0x200])));
+ palette.set_indirect_color(i, rgb_t(pal4bit(color_prom[i]), pal4bit(color_prom[i + 0x100]), pal4bit(color_prom[i + 0x200])));
for (i = 0; i < 0x100; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
// point to the bg CLUT
color_prom += 0x300;
for (i = 0; i < 0x80; i++)
- colortable_entry_set_value(machine().colortable, i + 0x100, color_prom[i] + 0x10);
+ palette.set_pen_indirect(i + 0x100, color_prom[i] + 0x10);
// point to the sprite CLUT
color_prom += 0x100;
for (i = 0; i < 0x100; i++)
- colortable_entry_set_value(machine().colortable, i + 0x180, color_prom[i]);
+ palette.set_pen_indirect(i + 0x180, color_prom[i]);
}
@@ -136,7 +132,7 @@ VIDEO_START_MEMBER(equites_state,splndrbt)
m_fg_tilemap->set_scrolldx(8, -8);
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(equites_state::splndrbt_bg_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
- colortable_configure_tilemap_groups(machine().colortable, m_bg_tilemap, m_gfxdecode->gfx(1), 0x10);
+ m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(1), 0x10);
}
@@ -259,7 +255,7 @@ void equites_state::equites_draw_sprites_block( bitmap_ind16 &bitmap, const rect
int color = (~attr & 0xf000) >> 12;
int sx = (m_spriteram[offs] & 0xff00) >> 8;
int sy = (m_spriteram[offs] & 0x00ff);
- int transmask = colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(2), color, 0);
+ int transmask = m_palette->transpen_mask(*m_gfxdecode->gfx(2), color, 0);
if (flip_screen())
{
@@ -275,7 +271,7 @@ void equites_state::equites_draw_sprites_block( bitmap_ind16 &bitmap, const rect
// sprites are 16x14 centered in a 16x16 square, so skip the first line
sy += 1;
- m_gfxdecode->gfx(2)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transmask(m_palette,bitmap,cliprect,
tile,
color,
fx, fy,
@@ -338,12 +334,12 @@ void equites_state::splndrbt_draw_sprites( bitmap_ind16 &bitmap, const rectangle
int sx = data2 & 0x00ff;
int sy = m_spriteram_2[offs + 0] & 0x00ff;
int scalex = m_spriteram_2[offs + 1] & 0x000f;
- int transmask = colortable_get_transpen_mask(machine().colortable, gfx, color, 0);
+ int transmask = m_palette->transpen_mask(*gfx, color, 0);
// const UINT8 * const xromline = xrom + (scalex << 4);
const UINT8 * const yromline = yrom + (scaley << 4) + (15 - scaley);
const UINT8* const srcgfx = gfx->get_data(tile);
- const pen_t *paldata = &machine().pens[gfx->colorbase() + gfx->granularity() * color];
+ const pen_t *paldata = &m_palette->pen(gfx->colorbase() + gfx->granularity() * color);
int x,yy;
sy += 16;
diff --git a/src/mame/video/espial.c b/src/mame/video/espial.c
index de975755ebd..6e7986d6bd2 100644
--- a/src/mame/video/espial.c
+++ b/src/mame/video/espial.c
@@ -29,12 +29,12 @@
***************************************************************************/
-void espial_state::palette_init()
+PALETTE_INIT_MEMBER(espial_state, espial)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -45,16 +45,16 @@ void espial_state::palette_init()
r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
/* green component */
bit0 = (color_prom[i] >> 3) & 0x01;
- bit1 = (color_prom[i + machine().total_colors()] >> 0) & 0x01;
- bit2 = (color_prom[i + machine().total_colors()] >> 1) & 0x01;
+ bit1 = (color_prom[i + palette.entries()] >> 0) & 0x01;
+ bit2 = (color_prom[i + palette.entries()] >> 1) & 0x01;
g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
/* blue component */
bit0 = 0;
- bit1 = (color_prom[i + machine().total_colors()] >> 2) & 0x01;
- bit2 = (color_prom[i + machine().total_colors()] >> 3) & 0x01;
+ bit1 = (color_prom[i + palette.entries()] >> 2) & 0x01;
+ bit2 = (color_prom[i + palette.entries()] >> 3) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r,g,b));
+ palette.set_pen_color(i, rgb_t(r,g,b));
}
}
@@ -184,11 +184,11 @@ void espial_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
{
if (m_flipscreen)
{
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,color,
flipx,flipy,
sx,sy + 16,0);
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code + 1,
color,
flipx,flipy,
@@ -196,11 +196,11 @@ void espial_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
}
else
{
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,color,
flipx,flipy,
sx,sy - 16,0);
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code + 1,color,
flipx,flipy,
sx,sy,0);
@@ -208,7 +208,7 @@ void espial_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
}
else
{
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,color,
flipx,flipy,
sx,sy,0);
diff --git a/src/mame/video/exedexes.c b/src/mame/video/exedexes.c
index 1ab9d2a5012..cff03ad516b 100644
--- a/src/mame/video/exedexes.c
+++ b/src/mame/video/exedexes.c
@@ -31,14 +31,11 @@
***************************************************************************/
-void exedexes_state::palette_init()
+PALETTE_INIT_MEMBER(exedexes_state, exedexes)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
@@ -46,7 +43,7 @@ void exedexes_state::palette_init()
int g = pal4bit(color_prom[i + 0x100]);
int b = pal4bit(color_prom[i + 0x200]);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -56,28 +53,28 @@ void exedexes_state::palette_init()
for (i = 0; i < 0x100; i++)
{
UINT8 ctabentry = color_prom[i] | 0xc0;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* 32x32 tiles use colors 0-0x0f */
for (i = 0x100; i < 0x200; i++)
{
UINT8 ctabentry = color_prom[i];
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* 16x16 tiles use colors 0x40-0x4f */
for (i = 0x200; i < 0x300; i++)
{
UINT8 ctabentry = color_prom[i] | 0x40;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* sprites use colors 0x80-0xbf in four banks */
for (i = 0x300; i < 0x400; i++)
{
UINT8 ctabentry = color_prom[i] | (color_prom[i + 0x100] << 4) | 0x80;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -171,7 +168,7 @@ void exedexes_state::video_start()
m_tx_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(exedexes_state::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
m_fg_tilemap->set_transparent_pen(0);
- colortable_configure_tilemap_groups(machine().colortable, m_tx_tilemap, m_gfxdecode->gfx(0), 0xcf);
+ m_palette->configure_tilemap_groups(*m_tx_tilemap, *m_gfxdecode->gfx(0), 0xcf);
}
void exedexes_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int priority )
@@ -197,7 +194,7 @@ void exedexes_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
sx = buffered_spriteram[offs + 3] - ((buffered_spriteram[offs + 1] & 0x80) << 1);
sy = buffered_spriteram[offs + 2];
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/exerion.c b/src/mame/video/exerion.c
index 845f53efc78..716015d602d 100644
--- a/src/mame/video/exerion.c
+++ b/src/mame/video/exerion.c
@@ -36,7 +36,7 @@
***************************************************************************/
-void exerion_state::palette_init()
+PALETTE_INIT_MEMBER(exerion_state, exerion)
{
const UINT8 *color_prom = memregion("proms")->base();
static const int resistances_rg[3] = { 1000, 470, 220 };
@@ -50,9 +50,6 @@ void exerion_state::palette_init()
3, &resistances_rg[0], gweights, 0, 0,
2, &resistances_b[0], bweights, 0, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x20);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -76,7 +73,7 @@ void exerion_state::palette_init()
bit1 = (color_prom[i] >> 7) & 0x01;
b = combine_2_weights(bweights, bit0, bit1);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -86,7 +83,7 @@ void exerion_state::palette_init()
for (i = 0; i < 0x200; i++)
{
UINT8 ctabentry = 0x10 | (color_prom[(i & 0x1c0) | ((i & 3) << 4) | ((i >> 2) & 0x0f)] & 0x0f);
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* bg chars (this is not the full story... there are four layers mixed */
@@ -94,7 +91,7 @@ void exerion_state::palette_init()
for (i = 0x200; i < 0x300; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -388,12 +385,12 @@ UINT32 exerion_state::screen_update_exerion(screen_device &screen, bitmap_ind16
else
code &= ~0x10, code2 |= 0x10;
- gfx->transmask(bitmap,cliprect, code2, color, xflip, yflip, x, y + gfx->height(),
- colortable_get_transpen_mask(machine().colortable, gfx, color, 0x10));
+ gfx->transmask(m_palette,bitmap,cliprect, code2, color, xflip, yflip, x, y + gfx->height(),
+ m_palette->transpen_mask(*gfx, color, 0x10));
}
- gfx->transmask(bitmap,cliprect, code, color, xflip, yflip, x, y,
- colortable_get_transpen_mask(machine().colortable, gfx, color, 0x10));
+ gfx->transmask(m_palette,bitmap,cliprect, code, color, xflip, yflip, x, y,
+ m_palette->transpen_mask(*gfx, color, 0x10));
if (doubled) i += 4;
}
@@ -406,7 +403,7 @@ UINT32 exerion_state::screen_update_exerion(screen_device &screen, bitmap_ind16
int y = m_cocktail_flip ? (31*8 - 8*sy) : 8*sy;
offs = sx + sy * 64;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
m_videoram[offs] + 256 * m_char_bank,
((m_videoram[offs] & 0xf0) >> 4) + m_char_palette * 16,
m_cocktail_flip, m_cocktail_flip, x, y, 0);
diff --git a/src/mame/video/exidy.c b/src/mame/video/exidy.c
index 7410bed6842..f1712d501b1 100644
--- a/src/mame/video/exidy.c
+++ b/src/mame/video/exidy.c
@@ -95,7 +95,7 @@ READ8_MEMBER(exidy_state::exidy_interrupt_r)
inline void exidy_state::set_1_color(int index, int which)
{
- palette_set_color_rgb(machine(), index,
+ m_palette->set_pen_color(index,
pal1bit(m_color_latch[2] >> which),
pal1bit(m_color_latch[1] >> which),
pal1bit(m_color_latch[0] >> which));
@@ -216,7 +216,7 @@ void exidy_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
int sx = 236 - *m_sprite2_xpos - 4;
int sy = 244 - *m_sprite2_ypos - 4;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
((*m_spriteno >> 4) & 0x0f) + 32 + 16 * sprite_set_2, 1,
0, 0, sx, sy, 0);
@@ -230,7 +230,7 @@ void exidy_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
if (sy < 0) sy = 0;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
(*m_spriteno & 0x0f) + 16 * sprite_set_1, 0,
0, 0, sx, sy, 0);
}
@@ -295,7 +295,7 @@ void exidy_state::check_collision()
{
org_1_x = 236 - *m_sprite1_xpos - 4;
org_1_y = 244 - *m_sprite1_ypos - 4;
- m_gfxdecode->gfx(0)->transpen(m_motion_object_1_vid,clip,
+ m_gfxdecode->gfx(0)->transpen(m_palette,m_motion_object_1_vid,clip,
(*m_spriteno & 0x0f) + 16 * sprite_set_1, 0,
0, 0, 0, 0, 0);
}
@@ -304,7 +304,7 @@ void exidy_state::check_collision()
m_motion_object_2_vid.fill(0xff, clip);
org_2_x = 236 - *m_sprite2_xpos - 4;
org_2_y = 244 - *m_sprite2_ypos - 4;
- m_gfxdecode->gfx(0)->transpen(m_motion_object_2_vid,clip,
+ m_gfxdecode->gfx(0)->transpen(m_palette,m_motion_object_2_vid,clip,
((*m_spriteno >> 4) & 0x0f) + 32 + 16 * sprite_set_2, 0,
0, 0, 0, 0, 0);
@@ -314,7 +314,7 @@ void exidy_state::check_collision()
{
sx = org_2_x - org_1_x;
sy = org_2_y - org_1_y;
- m_gfxdecode->gfx(0)->transpen(m_motion_object_2_clip,clip,
+ m_gfxdecode->gfx(0)->transpen(m_palette,m_motion_object_2_clip,clip,
((*m_spriteno >> 4) & 0x0f) + 32 + 16 * sprite_set_2, 0,
0, 0, sx, sy, 0);
}
diff --git a/src/mame/video/exidy440.c b/src/mame/video/exidy440.c
index 94996ddfbe6..8a3449e6b43 100644
--- a/src/mame/video/exidy440.c
+++ b/src/mame/video/exidy440.c
@@ -115,7 +115,7 @@ WRITE8_MEMBER(exidy440_state::exidy440_paletteram_w)
word = (m_local_paletteram[offset] << 8) + m_local_paletteram[offset + 1];
/* extract the 5-5-5 RGB colors */
- palette_set_color_rgb(machine(), offset / 2, pal5bit(word >> 10), pal5bit(word >> 5), pal5bit(word >> 0));
+ m_palette->set_pen_color(offset / 2, pal5bit(word >> 10), pal5bit(word >> 5), pal5bit(word >> 0));
}
}
@@ -198,7 +198,7 @@ WRITE8_MEMBER(exidy440_state::exidy440_control_w)
{
/* extract a word and the 5-5-5 RGB components */
int word = (m_local_paletteram[offset] << 8) + m_local_paletteram[offset + 1];
- palette_set_color_rgb(machine(), i, pal5bit(word >> 10), pal5bit(word >> 5), pal5bit(word >> 0));
+ m_palette->set_pen_color(i, pal5bit(word >> 10), pal5bit(word >> 5), pal5bit(word >> 0));
}
}
}
@@ -466,7 +466,7 @@ UINT32 exidy440_state::screen_update_topsecex(screen_device &screen, bitmap_ind1
MACHINE_CONFIG_FRAGMENT( exidy440_video )
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_VIDEO_START_OVERRIDE(exidy440_state,exidy440)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
diff --git a/src/mame/video/exprraid.c b/src/mame/video/exprraid.c
index 1fc8fa88f5a..0f2078fc4c6 100644
--- a/src/mame/video/exprraid.c
+++ b/src/mame/video/exprraid.c
@@ -109,7 +109,7 @@ void exprraid_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code, color,
flipx, flipy,
sx, sy, 0);
@@ -118,7 +118,7 @@ void exprraid_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
if (attr & 0x10)
{
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code + 1, color,
flipx, flipy,
sx, sy + (flip_screen() ? -16 : 16), 0);
diff --git a/src/mame/video/exterm.c b/src/mame/video/exterm.c
index 72ca9898b54..e8710cdb7f6 100644
--- a/src/mame/video/exterm.c
+++ b/src/mame/video/exterm.c
@@ -15,13 +15,13 @@
*
*************************************/
-void exterm_state::palette_init()
+PALETTE_INIT_MEMBER(exterm_state, exterm)
{
int i;
/* initialize 555 RGB lookup */
for (i = 0; i < 32768; i++)
- palette_set_color_rgb(machine(), i + 0x800, pal5bit(i >> 10), pal5bit(i >> 5), pal5bit(i >> 0));
+ palette.set_pen_color(i + 0x800, pal5bit(i >> 10), pal5bit(i >> 5), pal5bit(i >> 0));
}
diff --git a/src/mame/video/exzisus.c b/src/mame/video/exzisus.c
index 6fef273743d..5fa601fa72d 100644
--- a/src/mame/video/exzisus.c
+++ b/src/mame/video/exzisus.c
@@ -136,7 +136,7 @@ UINT32 exzisus_state::screen_update_exzisus(screen_device &screen, bitmap_ind16
y = 248 - y;
}
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code & 0x3fff,
color,
flip_screen(), flip_screen(),
@@ -205,7 +205,7 @@ UINT32 exzisus_state::screen_update_exzisus(screen_device &screen, bitmap_ind16
y = 248 - y;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code & 0x3fff,
color,
flip_screen(), flip_screen(),
diff --git a/src/mame/video/f1gp.c b/src/mame/video/f1gp.c
index c1cb9bc4f07..1b45aa3b457 100644
--- a/src/mame/video/f1gp.c
+++ b/src/mame/video/f1gp.c
@@ -210,7 +210,7 @@ UINT32 f1gp_state::screen_update_f1gp(screen_device &screen, bitmap_ind16 &bitma
UINT32 f1gp_state::screen_update_f1gp2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
if (m_gfxctrl & 4) /* blank screen */
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
else
{
switch (m_gfxctrl & 3)
@@ -294,7 +294,7 @@ void f1gp_state::f1gpb_draw_sprites( screen_device &screen,bitmap_ind16 &bitmap,
gfx = 0;
}
- m_gfxdecode->gfx(1 + gfx)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1 + gfx)->prio_transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -303,7 +303,7 @@ void f1gp_state::f1gpb_draw_sprites( screen_device &screen,bitmap_ind16 &bitmap,
pri ? 0 : 0x2,15);
// wrap around x
- m_gfxdecode->gfx(1 + gfx)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1 + gfx)->prio_transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/fantland.c b/src/mame/video/fantland.c
index 353a9081dcb..f04b7f3dd40 100644
--- a/src/mame/video/fantland.c
+++ b/src/mame/video/fantland.c
@@ -134,7 +134,7 @@ void fantland_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect
if (x >= 0x180) x -= 0x200;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, code,color, flipx,flipy, x,y,0);
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect, code,color, flipx,flipy, x,y,0);
}
}
diff --git a/src/mame/video/fastfred.c b/src/mame/video/fastfred.c
index f0e5ef30e35..53497fd2b2b 100644
--- a/src/mame/video/fastfred.c
+++ b/src/mame/video/fastfred.c
@@ -36,9 +36,6 @@ PALETTE_INIT_MEMBER(fastfred_state,fastfred)
4, resistances, gweights, 470, 0,
4, resistances, bweights, 470, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
@@ -66,12 +63,12 @@ PALETTE_INIT_MEMBER(fastfred_state,fastfred)
bit3 = (color_prom[i + 0x200] >> 3) & 0x01;
b = combine_4_weights(bweights, bit0, bit1, bit2, bit3);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* characters and sprites use the same palette */
for (i = 0; i < 0x100; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
}
/***************************************************************************
@@ -277,7 +274,7 @@ void fastfred_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,flip_screen_x() ? spritevisibleareaflipx : spritevisiblearea,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,flip_screen_x() ? spritevisibleareaflipx : spritevisiblearea,
code,
m_colorbank | (m_spriteram[offs + 2] & 0x07),
flipx,flipy,
@@ -346,8 +343,8 @@ VIDEO_START_MEMBER(fastfred_state,imago)
m_stars_on = 1;
/* web colors */
- palette_set_color(machine(),256+64+0,rgb_t(0x50,0x00,0x00));
- palette_set_color(machine(),256+64+1,rgb_t(0x00,0x00,0x00));
+ m_palette->set_pen_color(256+64+0,rgb_t(0x50,0x00,0x00));
+ m_palette->set_pen_color(256+64+1,rgb_t(0x00,0x00,0x00));
}
UINT32 fastfred_state::screen_update_imago(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
diff --git a/src/mame/video/fastlane.c b/src/mame/video/fastlane.c
index 0b2a185ddcb..4f704649874 100644
--- a/src/mame/video/fastlane.c
+++ b/src/mame/video/fastlane.c
@@ -2,14 +2,11 @@
#include "includes/fastlane.h"
-void fastlane_state::palette_init()
+PALETTE_INIT_MEMBER(fastlane_state, fastlane)
{
const UINT8 *color_prom = memregion("proms")->base();
int pal;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x400);
-
for (pal = 0; pal < 0x10; pal++)
{
int i;
@@ -17,7 +14,7 @@ void fastlane_state::palette_init()
for (i = 0; i < 0x400; i++)
{
UINT8 ctabentry = (i & 0x3f0) | color_prom[(pal << 4) | (i & 0x0f)];
- colortable_entry_set_value(machine().colortable, (pal << 10) | i, ctabentry);
+ palette.set_pen_indirect((pal << 10) | i, ctabentry);
}
}
}
@@ -33,7 +30,7 @@ void fastlane_state::set_pens( )
rgb_t color = rgb_t(pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
- colortable_palette_set_color(machine().colortable, i >> 1, color);
+ m_palette->set_indirect_color(i >> 1, color);
}
}
@@ -167,7 +164,7 @@ UINT32 fastlane_state::screen_update_fastlane(screen_device &screen, bitmap_ind1
m_layer0->set_scrolly(0, m_k007121->ctrlram_r(space, 2));
m_layer0->draw(screen, bitmap, finalclip0, 0, 0);
- m_k007121->sprites_draw(bitmap, cliprect, m_gfxdecode->gfx(0), machine().colortable, m_spriteram, 0, 40, 0, screen.priority(), (UINT32)-1);
+ m_k007121->sprites_draw(bitmap, cliprect, m_gfxdecode->gfx(0), m_palette, m_spriteram, 0, 40, 0, screen.priority(), (UINT32)-1);
m_layer1->draw(screen, bitmap, finalclip1, 0, 0);
return 0;
}
diff --git a/src/mame/video/fcombat.c b/src/mame/video/fcombat.c
index 97c5e164bd6..7fe4e443dec 100644
--- a/src/mame/video/fcombat.c
+++ b/src/mame/video/fcombat.c
@@ -37,14 +37,11 @@ TILE_GET_INFO_MEMBER(fcombat_state::get_bg_tile_info)
***************************************************************************/
-void fcombat_state::palette_init()
+PALETTE_INIT_MEMBER(fcombat_state, fcombat)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x20);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -69,7 +66,7 @@ void fcombat_state::palette_init()
bit2 = (color_prom[i] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -79,7 +76,7 @@ void fcombat_state::palette_init()
for (i = 0; i < 0x200; i++)
{
UINT8 ctabentry = (color_prom[(i & 0x1c0) | ((i & 3) << 4) | ((i >> 2) & 0x0f)] & 0x0f) | 0x10;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* bg chars (this is not the full story... there are four layers mixed */
@@ -87,7 +84,7 @@ void fcombat_state::palette_init()
for (i = 0x200; i < 0x300; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -177,18 +174,18 @@ UINT32 fcombat_state::screen_update_fcombat(screen_device &screen, bitmap_ind16
else
code &= ~0x10, code2 |= 0x10;
- gfx->transpen(bitmap,cliprect, code2, color, xflip, yflip, x, y + gfx->height(), 0);
+ gfx->transpen(m_palette,bitmap,cliprect, code2, color, xflip, yflip, x, y + gfx->height(), 0);
}
if(flags&0x10)
{
- gfx->transpen(bitmap,cliprect, code2 + 16, color, xflip, yflip, x, y + gfx->height(), 0);
- gfx->transpen(bitmap,cliprect, code2 + 16 * 2, color, xflip, yflip, x, y + 2 * gfx->height(), 0);
- gfx->transpen(bitmap,cliprect, code2 + 16 * 3, color, xflip, yflip, x, y + 3 * gfx->height(), 0);
+ gfx->transpen(m_palette,bitmap,cliprect, code2 + 16, color, xflip, yflip, x, y + gfx->height(), 0);
+ gfx->transpen(m_palette,bitmap,cliprect, code2 + 16 * 2, color, xflip, yflip, x, y + 2 * gfx->height(), 0);
+ gfx->transpen(m_palette,bitmap,cliprect, code2 + 16 * 3, color, xflip, yflip, x, y + 3 * gfx->height(), 0);
}
- gfx->transpen(bitmap,cliprect, code, color, xflip, yflip, x, y, 0);
+ gfx->transpen(m_palette,bitmap,cliprect, code, color, xflip, yflip, x, y, 0);
if (doubled) i += 4;
}
@@ -201,7 +198,7 @@ UINT32 fcombat_state::screen_update_fcombat(screen_device &screen, bitmap_ind16
int y = m_cocktail_flip ? (31 * 8 - 8 * sy) : 8 * sy;
offs = sx + sy * 64;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
m_videoram[offs] + 256 * m_char_bank,
((m_videoram[offs] & 0xf0) >> 4) + m_char_palette * 16,
m_cocktail_flip, m_cocktail_flip, x, y, 0);
diff --git a/src/mame/video/fgoal.c b/src/mame/video/fgoal.c
index b6e17fd56d3..cd8a8415a84 100644
--- a/src/mame/video/fgoal.c
+++ b/src/mame/video/fgoal.c
@@ -48,14 +48,14 @@ UINT32 fgoal_state::screen_update_fgoal(screen_device &screen, bitmap_ind16 &bit
if (m_fgoal_player == 1 && (ioport("IN1")->read() & 0x40))
{
- m_gfxdecode->gfx(0)->zoom_opaque(m_fgbitmap,cliprect,
+ m_gfxdecode->gfx(0)->zoom_opaque(m_palette,m_fgbitmap,cliprect,
0, (m_fgoal_player << 2) | m_current_color,
1, 1,
0, 16,
0x40000,
0x40000);
- m_gfxdecode->gfx(1)->zoom_opaque(m_bgbitmap,cliprect,
+ m_gfxdecode->gfx(1)->zoom_opaque(m_palette,m_bgbitmap,cliprect,
0, 0,
1, 1,
0, 16,
@@ -64,14 +64,14 @@ UINT32 fgoal_state::screen_update_fgoal(screen_device &screen, bitmap_ind16 &bit
}
else
{
- m_gfxdecode->gfx(0)->zoom_opaque(m_fgbitmap,cliprect,
+ m_gfxdecode->gfx(0)->zoom_opaque(m_palette,m_fgbitmap,cliprect,
0, (m_fgoal_player << 2) | m_current_color,
0, 0,
0, 0,
0x40000,
0x40000);
- m_gfxdecode->gfx(1)->zoom_opaque(m_bgbitmap,cliprect,
+ m_gfxdecode->gfx(1)->zoom_opaque(m_palette,m_bgbitmap,cliprect,
0, 0,
0, 0,
0, 0,
diff --git a/src/mame/video/finalizr.c b/src/mame/video/finalizr.c
index 511b163b69e..d31c5db4f56 100644
--- a/src/mame/video/finalizr.c
+++ b/src/mame/video/finalizr.c
@@ -10,14 +10,11 @@
#include "includes/finalizr.h"
-void finalizr_state::palette_init()
+PALETTE_INIT_MEMBER(finalizr_state, finalizr)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x20);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -25,7 +22,7 @@ void finalizr_state::palette_init()
int g = pal4bit(color_prom[i + 0x00] >> 4);
int b = pal4bit(color_prom[i + 0x20] >> 0);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -34,13 +31,13 @@ void finalizr_state::palette_init()
for (i = 0; i < 0x100; i++)
{
UINT8 ctabentry = (color_prom[i] & 0x0f) | 0x10;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
for (i = 0x100; i < 0x200; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -125,22 +122,22 @@ UINT32 finalizr_state::screen_update_finalizr(screen_device &screen, bitmap_ind1
flipy = !flipy;
}
- gfx1->transpen(bitmap,cliprect,
+ gfx1->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
flipx?sx+16:sx,flipy?sy+16:sy,0);
- gfx1->transpen(bitmap,cliprect,
+ gfx1->transpen(m_palette,bitmap,cliprect,
code + 1,
color,
flipx,flipy,
flipx?sx:sx+16,flipy?sy+16:sy,0);
- gfx1->transpen(bitmap,cliprect,
+ gfx1->transpen(m_palette,bitmap,cliprect,
code + 2,
color,
flipx,flipy,
flipx?sx+16:sx,flipy?sy:sy+16,0);
- gfx1->transpen(bitmap,cliprect,
+ gfx1->transpen(m_palette,bitmap,cliprect,
code + 3,
color,
flipx,flipy,
@@ -158,7 +155,7 @@ UINT32 finalizr_state::screen_update_finalizr(screen_device &screen, bitmap_ind1
if (size == 0x00) /* 16x16 */
{
- gfx1->transpen(bitmap,cliprect,
+ gfx1->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -170,12 +167,12 @@ UINT32 finalizr_state::screen_update_finalizr(screen_device &screen, bitmap_ind1
if (size == 0x04) /* 16x8 */
{
- gfx2->transpen(bitmap,cliprect,
+ gfx2->transpen(m_palette,bitmap,cliprect,
code & ~1,
color,
flipx,flipy,
flipx?sx+8:sx,sy,0);
- gfx2->transpen(bitmap,cliprect,
+ gfx2->transpen(m_palette,bitmap,cliprect,
code | 1,
color,
flipx,flipy,
@@ -183,12 +180,12 @@ UINT32 finalizr_state::screen_update_finalizr(screen_device &screen, bitmap_ind1
}
else if (size == 0x08) /* 8x16 */
{
- gfx2->transpen(bitmap,cliprect,
+ gfx2->transpen(m_palette,bitmap,cliprect,
code & ~2,
color,
flipx,flipy,
sx,flipy?sy+8:sy,0);
- gfx2->transpen(bitmap,cliprect,
+ gfx2->transpen(m_palette,bitmap,cliprect,
code | 2,
color,
flipx,flipy,
@@ -196,7 +193,7 @@ UINT32 finalizr_state::screen_update_finalizr(screen_device &screen, bitmap_ind1
}
else if (size == 0x0c) /* 8x8 */
{
- gfx2->transpen(bitmap,cliprect,
+ gfx2->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/firetrap.c b/src/mame/video/firetrap.c
index bfabf82a414..5011e5b97b4 100644
--- a/src/mame/video/firetrap.c
+++ b/src/mame/video/firetrap.c
@@ -34,13 +34,13 @@
***************************************************************************/
-void firetrap_state::palette_init()
+PALETTE_INIT_MEMBER(firetrap_state, firetrap)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, bit3, r, g, b;
@@ -55,13 +55,13 @@ void firetrap_state::palette_init()
bit2 = (color_prom[i] >> 6) & 0x01;
bit3 = (color_prom[i] >> 7) & 0x01;
g = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- bit0 = (color_prom[i + machine().total_colors()] >> 0) & 0x01;
- bit1 = (color_prom[i + machine().total_colors()] >> 1) & 0x01;
- bit2 = (color_prom[i + machine().total_colors()] >> 2) & 0x01;
- bit3 = (color_prom[i + machine().total_colors()] >> 3) & 0x01;
+ bit0 = (color_prom[i + palette.entries()] >> 0) & 0x01;
+ bit1 = (color_prom[i + palette.entries()] >> 1) & 0x01;
+ bit2 = (color_prom[i + palette.entries()] >> 2) & 0x01;
+ bit3 = (color_prom[i + palette.entries()] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- palette_set_color(machine(), i, rgb_t(r,g,b));
+ palette.set_pen_color(i, rgb_t(r,g,b));
}
}
@@ -219,24 +219,24 @@ void firetrap_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
{
if (flip_screen()) sy -= 16;
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect,
code & ~1,
color,
flipx,flipy,
sx,flipy ? sy : sy + 16,0);
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect,
code | 1,
color,
flipx,flipy,
sx,flipy ? sy + 16 : sy,0);
/* redraw with wraparound */
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect,
code & ~1,
color,
flipx,flipy,
sx - 256,flipy ? sy : sy + 16,0);
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect,
code | 1,
color,
flipx,flipy,
@@ -244,14 +244,14 @@ void firetrap_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
}
else
{
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
sx,sy,0);
/* redraw with wraparound */
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/firetrk.c b/src/mame/video/firetrk.c
index e72fa468632..179561692de 100644
--- a/src/mame/video/firetrk.c
+++ b/src/mame/video/firetrk.c
@@ -10,7 +10,7 @@ Atari Fire Truck + Super Bug + Monte Carlo video emulation
static const rectangle playfield_window(0x02a, 0x115, 0x000, 0x0ff);
-void firetrk_state::palette_init()
+PALETTE_INIT_MEMBER(firetrk_state, firetrk)
{
int i;
@@ -43,14 +43,14 @@ void firetrk_state::palette_init()
else if (color == 2)
m_color2_mask |= 1 << i;
- palette_set_color(machine(), i, palette_source[color]);
+ palette.set_pen_color(i, palette_source[color]);
}
}
void firetrk_state::prom_to_palette(int number, UINT8 val)
{
- palette_set_color(machine(), number, rgb_t(pal1bit(val >> 2), pal1bit(val >> 1), pal1bit(val >> 0)));
+ m_palette->set_pen_color(number, rgb_t(pal1bit(val >> 2), pal1bit(val >> 1), pal1bit(val >> 0)));
}
@@ -106,8 +106,8 @@ PALETTE_INIT_MEMBER(firetrk_state,montecar)
prom_to_palette(i, color_prom[0x100 + colortable_source[i]]);
}
- palette_set_color(machine(), ARRAY_LENGTH(colortable_source) + 0, rgb_t::black);
- palette_set_color(machine(), ARRAY_LENGTH(colortable_source) + 1, rgb_t::white);
+ palette.set_pen_color(ARRAY_LENGTH(colortable_source) + 0, rgb_t::black);
+ palette.set_pen_color(ARRAY_LENGTH(colortable_source) + 1, rgb_t::white);
}
@@ -262,7 +262,7 @@ void firetrk_state::firetrk_draw_car(bitmap_ind16 &bitmap, const rectangle &clip
y = 104;
}
- gfx[gfx_bank]->transpen(bitmap,cliprect, code, color, flip_x, flip_y, x, y, 0);
+ gfx[gfx_bank]->transpen(m_palette,bitmap,cliprect, code, color, flip_x, flip_y, x, y, 0);
}
@@ -274,7 +274,7 @@ void firetrk_state::superbug_draw_car(bitmap_ind16 &bitmap, const rectangle &cli
int flip_x = *m_car_rot & 0x04;
int flip_y = *m_car_rot & 0x08;
- gfx[gfx_bank]->transpen(bitmap,cliprect, code, color, flip_x, flip_y, 144, 104, 0);
+ gfx[gfx_bank]->transpen(m_palette,bitmap,cliprect, code, color, flip_x, flip_y, 144, 104, 0);
}
@@ -303,17 +303,17 @@ void firetrk_state::montecar_draw_car(bitmap_ind16 &bitmap, const rectangle &cli
y = 104;
}
- gfx[gfx_bank]->transpen(bitmap,cliprect, code, color, flip_x, flip_y, x, y, 0);
+ gfx[gfx_bank]->transpen(m_palette,bitmap,cliprect, code, color, flip_x, flip_y, x, y, 0);
}
-static void draw_text(bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element **gfx, UINT8 *alpha_ram,
+static void draw_text(palette_device &palette, bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element **gfx, UINT8 *alpha_ram,
int x, int count, int height)
{
int i;
for (i = 0; i < count; i++)
- gfx[0]->opaque(bitmap,cliprect, alpha_ram[i], 0, 0, 0, x, i * height);
+ gfx[0]->opaque(palette,bitmap,cliprect, alpha_ram[i], 0, 0, 0, x, i * height);
}
@@ -348,8 +348,8 @@ UINT32 firetrk_state::screen_update_firetrk(screen_device &screen, bitmap_ind16
m_tilemap1->draw(screen, bitmap, playfield_window, 0, 0);
firetrk_draw_car(bitmap, playfield_window, m_gfxdecode->gfx(), 0, m_flash);
firetrk_draw_car(bitmap, playfield_window, m_gfxdecode->gfx(), 1, m_flash);
- draw_text(bitmap, cliprect, m_gfxdecode->gfx(), m_alpha_num_ram + 0x00, 296, 0x10, 0x10);
- draw_text(bitmap, cliprect, m_gfxdecode->gfx(), m_alpha_num_ram + 0x10, 8, 0x10, 0x10);
+ draw_text(m_palette, bitmap, cliprect, m_gfxdecode->gfx(), m_alpha_num_ram + 0x00, 296, 0x10, 0x10);
+ draw_text(m_palette, bitmap, cliprect, m_gfxdecode->gfx(), m_alpha_num_ram + 0x10, 8, 0x10, 0x10);
if (cliprect.max_y == screen.visible_area().max_y)
{
@@ -381,8 +381,8 @@ UINT32 firetrk_state::screen_update_superbug(screen_device &screen, bitmap_ind16
bitmap.fill(0, cliprect);
m_tilemap1->draw(screen, bitmap, playfield_window, 0, 0);
superbug_draw_car(bitmap, playfield_window, m_gfxdecode->gfx(), m_flash);
- draw_text(bitmap, cliprect, m_gfxdecode->gfx(), m_alpha_num_ram + 0x00, 296, 0x10, 0x10);
- draw_text(bitmap, cliprect, m_gfxdecode->gfx(), m_alpha_num_ram + 0x10, 8, 0x10, 0x10);
+ draw_text(m_palette, bitmap, cliprect, m_gfxdecode->gfx(), m_alpha_num_ram + 0x00, 296, 0x10, 0x10);
+ draw_text(m_palette, bitmap, cliprect, m_gfxdecode->gfx(), m_alpha_num_ram + 0x10, 8, 0x10, 0x10);
if (cliprect.max_y == screen.visible_area().max_y)
{
@@ -411,8 +411,8 @@ UINT32 firetrk_state::screen_update_montecar(screen_device &screen, bitmap_ind16
m_tilemap1->draw(screen, bitmap, playfield_window, 0, 0);
montecar_draw_car(bitmap, playfield_window, m_gfxdecode->gfx(), 0, FALSE);
montecar_draw_car(bitmap, playfield_window, m_gfxdecode->gfx(), 1, FALSE);
- draw_text(bitmap, cliprect, m_gfxdecode->gfx(), m_alpha_num_ram + 0x00, 24, 0x20, 0x08);
- draw_text(bitmap, cliprect, m_gfxdecode->gfx(), m_alpha_num_ram + 0x20, 16, 0x20, 0x08);
+ draw_text(m_palette, bitmap, cliprect, m_gfxdecode->gfx(), m_alpha_num_ram + 0x00, 24, 0x20, 0x08);
+ draw_text(m_palette, bitmap, cliprect, m_gfxdecode->gfx(), m_alpha_num_ram + 0x20, 16, 0x20, 0x08);
if (cliprect.max_y == screen.visible_area().max_y)
{
diff --git a/src/mame/video/fitfight.c b/src/mame/video/fitfight.c
index 5713b4e9671..a51979961a9 100644
--- a/src/mame/video/fitfight.c
+++ b/src/mame/video/fitfight.c
@@ -34,7 +34,7 @@ void fitfight_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
if (end) break;
if (prio == layer)
- gfx->transpen(bitmap,cliprect, number, colr, xflip, yflip, xpos, ypos, 0);
+ gfx->transpen(m_palette,bitmap,cliprect, number, colr, xflip, yflip, xpos, ypos, 0);
source += 4;
}
@@ -113,7 +113,7 @@ UINT32 fitfight_state::screen_update_fitfight(screen_device &screen, bitmap_ind1
vblank = (m_fof_700000[0] & 0x8000);
if (vblank > 0)
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
else {
// if (machine().input().code_pressed(KEYCODE_Q))
// scrollbak = ((m_fof_a00000[0] & 0xff00) >> 5) - ((m_fof_700000[0] & 0x0038) >> 3);
diff --git a/src/mame/video/flower.c b/src/mame/video/flower.c
index 1f673f6d3a3..17c20e66643 100644
--- a/src/mame/video/flower.c
+++ b/src/mame/video/flower.c
@@ -4,14 +4,11 @@
#include "includes/flower.h"
-void flower_state::palette_init()
+PALETTE_INIT_MEMBER(flower_state, flower)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
@@ -19,11 +16,11 @@ void flower_state::palette_init()
int g = pal4bit(color_prom[i + 0x100]);
int b = pal4bit(color_prom[i + 0x200]);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
for (i = 0; i < 0x100; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
}
void flower_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect )
@@ -104,7 +101,7 @@ void flower_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
if (xblock) sxoffs+=xblocksizeinpixels;
if (yblock) syoffs+=yblocksizeinpixels;
- gfx->zoom_transpen(bitmap,cliprect,
+ gfx->zoom_transpen(m_palette,bitmap,cliprect,
code+yoffs+xoffs,
color,
flipx,flipy,
diff --git a/src/mame/video/flstory.c b/src/mame/video/flstory.c
index ada062b6866..6c7993839a6 100644
--- a/src/mame/video/flstory.c
+++ b/src/mame/video/flstory.c
@@ -96,9 +96,9 @@ WRITE8_MEMBER(flstory_state::flstory_videoram_w)
WRITE8_MEMBER(flstory_state::flstory_palette_w)
{
if (offset & 0x100)
- paletteram_xxxxBBBBGGGGRRRR_byte_split_hi_w(space, (offset & 0xff) + (m_palette_bank << 8),data);
+ m_palette->write(space, (offset & 0xff) + (m_palette_bank << 8),data);
else
- paletteram_xxxxBBBBGGGGRRRR_byte_split_lo_w(space, (offset & 0xff) + (m_palette_bank << 8),data);
+ m_palette->write(space, (offset & 0xff) + (m_palette_bank << 8),data);
}
READ8_MEMBER(flstory_state::flstory_palette_r)
@@ -187,14 +187,14 @@ void flstory_state::flstory_draw_sprites( bitmap_ind16 &bitmap, const rectangle
flipx = ((m_spriteram[offs + 1] & 0x40) >> 6) ^ m_flipscreen;
flipy = ((m_spriteram[offs + 1] & 0x80) >> 7) ^ m_flipscreen;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
m_spriteram[offs + 1] & 0x0f,
flipx,flipy,
sx,sy,15);
/* wrap around */
if (sx > 240)
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
m_spriteram[offs + 1] & 0x0f,
flipx,flipy,
@@ -242,14 +242,14 @@ void flstory_state::victnine_draw_sprites( bitmap_ind16 &bitmap, const rectangle
flipx = ((m_spriteram[offs + 1] & 0x40) >> 6) ^ m_flipscreen;
flipy = ((m_spriteram[offs + 1] & 0x80) >> 7) ^ m_flipscreen;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
m_spriteram[offs + 1] & 0x0f,
flipx,flipy,
sx,sy,15);
/* wrap around */
if (sx > 240)
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
m_spriteram[offs + 1] & 0x0f,
flipx,flipy,
diff --git a/src/mame/video/foodf.c b/src/mame/video/foodf.c
index e9c1992e961..d85bf0b2316 100644
--- a/src/mame/video/foodf.c
+++ b/src/mame/video/foodf.c
@@ -98,7 +98,7 @@ WRITE16_MEMBER(foodf_state::foodf_paletteram_w)
bit1 = (newword >> 7) & 0x01;
b = combine_2_weights(m_bweights, bit0, bit1);
- palette_set_color(machine(), offset, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset, rgb_t(r, g, b));
}
@@ -137,11 +137,11 @@ UINT32 foodf_state::screen_update_foodf(screen_device &screen, bitmap_ind16 &bit
int vflip = (data1 >> 14) & 1;
int pri = (data1 >> 13) & 1;
- gfx->prio_transpen(bitmap,cliprect, pict, color, hflip, vflip,
+ gfx->prio_transpen(m_palette,bitmap,cliprect, pict, color, hflip, vflip,
xpos, ypos, priority_bitmap, pri * 2, 0);
/* draw again with wraparound (needed to get the end of level animation right) */
- gfx->prio_transpen(bitmap,cliprect, pict, color, hflip, vflip,
+ gfx->prio_transpen(m_palette,bitmap,cliprect, pict, color, hflip, vflip,
xpos - 256, ypos, priority_bitmap, pri * 2, 0);
}
diff --git a/src/mame/video/freekick.c b/src/mame/video/freekick.c
index 508df19ed25..7c2f2a35fd8 100644
--- a/src/mame/video/freekick.c
+++ b/src/mame/video/freekick.c
@@ -51,7 +51,7 @@ void freekick_state::gigas_draw_sprites( bitmap_ind16 &bitmap, const rectangle &
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -85,7 +85,7 @@ void freekick_state::pbillrd_draw_sprites( bitmap_ind16 &bitmap, const rectangle
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -120,7 +120,7 @@ void freekick_state::freekick_draw_sprites( bitmap_ind16 &bitmap, const rectangl
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/fromanc2.c b/src/mame/video/fromanc2.c
index 12e0a362480..81994b1ab07 100644
--- a/src/mame/video/fromanc2.c
+++ b/src/mame/video/fromanc2.c
@@ -77,7 +77,7 @@ WRITE16_MEMBER(fromanc2_state::fromanc2_paletteram_0_w)
// GGGG_GRRR_RRBB_BBBx
color = ((offset & 0x0700) << 1) + (offset & 0x00ff);
- palette_set_color_rgb(machine(), 0x000 + color, pal5bit(data >> 6), pal5bit(data >> 11), pal5bit(data >> 1));
+ m_palette->set_pen_color(0x000 + color, pal5bit(data >> 6), pal5bit(data >> 11), pal5bit(data >> 1));
}
WRITE16_MEMBER(fromanc2_state::fromanc2_paletteram_1_w)
@@ -88,7 +88,7 @@ WRITE16_MEMBER(fromanc2_state::fromanc2_paletteram_1_w)
// GGGG_GRRR_RRBB_BBBx
color = ((offset & 0x0700) << 1) + (offset & 0x00ff);
- palette_set_color_rgb(machine(), 0x100 + color, pal5bit(data >> 6), pal5bit(data >> 11), pal5bit(data >> 1));
+ m_palette->set_pen_color(0x100 + color, pal5bit(data >> 6), pal5bit(data >> 11), pal5bit(data >> 1));
}
@@ -110,7 +110,7 @@ WRITE16_MEMBER(fromanc2_state::fromancr_paletteram_0_w)
// xGGG_GGRR_RRRB_BBBB
color = ((offset & 0x0700) << 1) + (offset & 0x00ff);
- palette_set_color_rgb(machine(), 0x000 + color, pal5bit(data >> 5), pal5bit(data >> 10), pal5bit(data >> 0));
+ m_palette->set_pen_color(0x000 + color, pal5bit(data >> 5), pal5bit(data >> 10), pal5bit(data >> 0));
}
WRITE16_MEMBER(fromanc2_state::fromancr_paletteram_1_w)
@@ -121,7 +121,7 @@ WRITE16_MEMBER(fromanc2_state::fromancr_paletteram_1_w)
// xGGG_GGRR_RRRB_BBBB
color = ((offset & 0x0700) << 1) + (offset & 0x00ff);
- palette_set_color_rgb(machine(), 0x100 + color, pal5bit(data >> 5), pal5bit(data >> 10), pal5bit(data >> 0));
+ m_palette->set_pen_color(0x100 + color, pal5bit(data >> 5), pal5bit(data >> 10), pal5bit(data >> 0));
}
@@ -143,7 +143,7 @@ WRITE16_MEMBER(fromanc2_state::fromanc4_paletteram_0_w)
// xRRR_RRGG_GGGB_BBBB
color = ((offset & 0x0700) << 1) + (offset & 0x00ff);
- palette_set_color_rgb(machine(), 0x000 + color, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
+ m_palette->set_pen_color(0x000 + color, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
}
WRITE16_MEMBER(fromanc2_state::fromanc4_paletteram_1_w)
@@ -154,7 +154,7 @@ WRITE16_MEMBER(fromanc2_state::fromanc4_paletteram_1_w)
// xRRR_RRGG_GGGB_BBBB
color = ((offset & 0x0700) << 1) + (offset & 0x00ff);
- palette_set_color_rgb(machine(), 0x100 + color, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
+ m_palette->set_pen_color(0x100 + color, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
}
diff --git a/src/mame/video/fromance.c b/src/mame/video/fromance.c
index 5b016e2096a..f38cf9a8e82 100644
--- a/src/mame/video/fromance.c
+++ b/src/mame/video/fromance.c
@@ -162,7 +162,7 @@ WRITE8_MEMBER(fromance_state::fromance_paletteram_w)
/* compute R,G,B */
palword = (m_local_paletteram[offset | 1] << 8) | m_local_paletteram[offset & ~1];
- palette_set_color_rgb(machine(), offset / 2, pal5bit(palword >> 10), pal5bit(palword >> 5), pal5bit(palword >> 0));
+ m_palette->set_pen_color(offset / 2, pal5bit(palword >> 10), pal5bit(palword >> 5), pal5bit(palword >> 0));
}
diff --git a/src/mame/video/funkybee.c b/src/mame/video/funkybee.c
index 36a85d9a3a2..9adbd11b50d 100644
--- a/src/mame/video/funkybee.c
+++ b/src/mame/video/funkybee.c
@@ -9,7 +9,7 @@
#include "emu.h"
#include "includes/funkybee.h"
-void funkybee_state::palette_init()
+PALETTE_INIT_MEMBER(funkybee_state, funkybee)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -35,7 +35,7 @@ void funkybee_state::palette_init()
bit2 = (*color_prom >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r,g,b));
+ palette.set_pen_color(i, rgb_t(r,g,b));
color_prom++;
}
}
@@ -111,7 +111,7 @@ void funkybee_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
flipx = !flipx;
}
- m_gfxdecode->gfx(2 + m_gfx_bank)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2 + m_gfx_bank)->transpen(m_palette,bitmap,cliprect,
code, color,
flipx, flipy,
sx, sy, 0);
@@ -133,7 +133,7 @@ void funkybee_state::draw_columns( bitmap_ind16 &bitmap, const rectangle &clipre
if (flip)
sy = 248 - sy;
- m_gfxdecode->gfx(m_gfx_bank)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_gfx_bank)->transpen(m_palette,bitmap,cliprect,
code, color,
flip, flip,
sx, sy,0);
@@ -146,7 +146,7 @@ void funkybee_state::draw_columns( bitmap_ind16 &bitmap, const rectangle &clipre
if (flip)
sy = 248 - sy;
- m_gfxdecode->gfx(m_gfx_bank)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_gfx_bank)->transpen(m_palette,bitmap,cliprect,
code, color,
flip, flip,
sx, sy,0);
diff --git a/src/mame/video/funworld.c b/src/mame/video/funworld.c
index e54b6e86452..0d55ba9067b 100644
--- a/src/mame/video/funworld.c
+++ b/src/mame/video/funworld.c
@@ -62,7 +62,7 @@ PALETTE_INIT_MEMBER(funworld_state,funworld)
2, resistances_g, weights_g, 100, 0);
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -81,7 +81,7 @@ PALETTE_INIT_MEMBER(funworld_state,funworld)
bit1 = (color_prom[i] >> 7) & 0x01;
g = combine_2_weights(weights_g, bit0, bit1);
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
}
diff --git a/src/mame/video/funybubl.c b/src/mame/video/funybubl.c
index 744e0ccb669..62211336540 100644
--- a/src/mame/video/funybubl.c
+++ b/src/mame/video/funybubl.c
@@ -19,7 +19,7 @@ WRITE8_MEMBER(funybubl_state::funybubl_paldatawrite)
coldat = m_paletteram[colchanged * 4] | (m_paletteram[colchanged * 4 + 1] << 8) |
(m_paletteram[colchanged * 4 + 2] << 16) | (m_paletteram[colchanged * 4 + 3] << 24);
- palette_set_color_rgb(machine(), colchanged, pal6bit(coldat >> 12), pal6bit(coldat >> 0), pal6bit(coldat >> 6));
+ m_palette->set_pen_color(colchanged, pal6bit(coldat >> 12), pal6bit(coldat >> 0), pal6bit(coldat >> 6));
}
@@ -65,7 +65,7 @@ void funybubl_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
// bits 0x40 and 0x10 not used?...
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, tile, 0, 0, 0, xpos, ypos, 255);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, tile, 0, 0, 0, xpos, ypos, 255);
source -= 0x20;
}
}
@@ -76,7 +76,7 @@ UINT32 funybubl_state::screen_update_funybubl(screen_device &screen, bitmap_ind1
int x, y, offs;
offs = 0;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
/* tilemap .. convert it .. banking makes it slightly more annoying but still easy */
for (y = 0; y < 32; y++)
@@ -86,7 +86,7 @@ UINT32 funybubl_state::screen_update_funybubl(screen_device &screen, bitmap_ind1
int data;
data = m_banked_vram[offs] | (m_banked_vram[offs + 1] << 8);
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, data & 0x7fff, (data & 0x8000) ? 2 : 1, 0, 0, x*8, y*8, 0);
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect, data & 0x7fff, (data & 0x8000) ? 2 : 1, 0, 0, x*8, y*8, 0);
offs += 2;
}
}
diff --git a/src/mame/video/fuukifg2.c b/src/mame/video/fuukifg2.c
index 3293d916d95..46302dfe63d 100644
--- a/src/mame/video/fuukifg2.c
+++ b/src/mame/video/fuukifg2.c
@@ -85,8 +85,8 @@ PALETTE_INIT_MEMBER(fuuki16_state,fuuki16)
/* The game does not initialise the palette at startup. It should
be totally black */
- for (pen = 0; pen < machine().total_colors(); pen++)
- palette_set_color(machine(),pen,rgb_t(0,0,0));
+ for (pen = 0; pen < palette.entries(); pen++)
+ palette.set_pen_color(pen,rgb_t(0,0,0));
}
#endif
@@ -196,7 +196,7 @@ void fuuki16_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, c
for (x = xstart; x != xend; x += xinc)
{
if (xzoom == (16*8) && yzoom == (16*8))
- gfx->prio_transpen(bitmap,cliprect,
+ gfx->prio_transpen(m_palette,bitmap,cliprect,
code++,
attr & 0x3f,
flipx, flipy,
@@ -204,7 +204,7 @@ void fuuki16_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, c
priority_bitmap,
pri_mask,15 );
else
- gfx->prio_zoom_transpen(bitmap,cliprect,
+ gfx->prio_zoom_transpen(m_palette,bitmap,cliprect,
code++,
attr & 0x3f,
flipx, flipy,
diff --git a/src/mame/video/fuukifg3.c b/src/mame/video/fuukifg3.c
index 75162b6ebf3..6ac1cfc2a49 100644
--- a/src/mame/video/fuukifg3.c
+++ b/src/mame/video/fuukifg3.c
@@ -218,7 +218,7 @@ void fuuki32_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, c
for (x = xstart; x != xend; x += xinc)
{
if (xzoom == (16*8) && yzoom == (16*8))
- gfx->prio_transpen(bitmap,cliprect,
+ gfx->prio_transpen(m_palette,bitmap,cliprect,
code++,
attr & 0x3f,
flipx, flipy,
@@ -226,7 +226,7 @@ void fuuki32_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, c
priority_bitmap,
pri_mask,15 );
else
- gfx->prio_zoom_transpen(bitmap,cliprect,
+ gfx->prio_zoom_transpen(m_palette,bitmap,cliprect,
code++,
attr & 0x3f,
flipx, flipy,
diff --git a/src/mame/video/gaelco.c b/src/mame/video/gaelco.c
index 8474f34b317..1c24c39cfe0 100644
--- a/src/mame/video/gaelco.c
+++ b/src/mame/video/gaelco.c
@@ -166,7 +166,7 @@ void gaelco_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, co
ex = xflip ? (spr_size - 1 - x) : x;
ey = yflip ? (spr_size - 1 - y) : y;
- gfx->prio_transpen(bitmap,cliprect,number + x_offset[ex] + y_offset[ey],
+ gfx->prio_transpen(m_palette,bitmap,cliprect,number + x_offset[ex] + y_offset[ey],
color,xflip,yflip,
sx-0x0f+x*8,sy+y*8,
screen.priority(),pri_mask,0);
diff --git a/src/mame/video/gaelco2.c b/src/mame/video/gaelco2.c
index 0ff0810e290..891f2df8744 100644
--- a/src/mame/video/gaelco2.c
+++ b/src/mame/video/gaelco2.c
@@ -234,7 +234,7 @@ WRITE16_MEMBER(gaelco2_state::gaelco2_palette_w)
b = pal5bit(b);
/* update game palette */
- palette_set_color(machine(), 4096*0 + offset, rgb_t(r, g, b));
+ m_palette->set_pen_color(4096*0 + offset, rgb_t(r, g, b));
/* update shadow/highligh palettes */
for (i = 1; i < 16; i++){
@@ -246,7 +246,7 @@ WRITE16_MEMBER(gaelco2_state::gaelco2_palette_w)
auxg = ADJUST_COLOR(g + pen_color_adjust[i]);
auxb = ADJUST_COLOR(b + pen_color_adjust[i]);
- palette_set_color(machine(), 4096*i + offset, rgb_t(auxr, auxg, auxb));
+ m_palette->set_pen_color(4096*i + offset, rgb_t(auxr, auxg, auxb));
}
}
@@ -377,7 +377,7 @@ void gaelco2_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, co
/* normal sprite, pen 0 transparent */
if (color_effect == 0){
- gfx->transpen(bitmap,cliprect, number,
+ gfx->transpen(m_palette,bitmap,cliprect, number,
color, xflip, yflip,
((sx + ex*16) & 0x3ff) + spr_x_adjust,
((sy + ey*16) & 0x1ff), 0);
diff --git a/src/mame/video/gaiden.c b/src/mame/video/gaiden.c
index 5651cbd1ea2..48209bc5501 100644
--- a/src/mame/video/gaiden.c
+++ b/src/mame/video/gaiden.c
@@ -276,7 +276,7 @@ void gaiden_state::blendbitmaps(bitmap_rgb32 &dest,bitmap_ind16 &src1,bitmap_ind
int sx,int sy,const rectangle &cliprect)
{
int y,x;
- const pen_t *paldata = machine().pens;
+ const pen_t *paldata = m_palette->pens();
for (y = cliprect.min_y; y <= cliprect.max_y; y++)
{
diff --git a/src/mame/video/galaga.c b/src/mame/video/galaga.c
index ad733e52e0a..45ff75bc644 100644
--- a/src/mame/video/galaga.c
+++ b/src/mame/video/galaga.c
@@ -328,8 +328,6 @@ PALETTE_INIT_MEMBER(galaga_state,galaga)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- machine().colortable = colortable_alloc(machine(), 32+64);
-
/* core palette */
for (i = 0;i < 32;i++)
{
@@ -348,7 +346,7 @@ PALETTE_INIT_MEMBER(galaga_state,galaga)
bit2 = ((*color_prom) >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- colortable_palette_set_color(machine().colortable,i,rgb_t(r,g,b));
+ palette.set_indirect_color(i,rgb_t(r,g,b));
color_prom++;
}
@@ -365,20 +363,20 @@ PALETTE_INIT_MEMBER(galaga_state,galaga)
bits = (i >> 4) & 0x03;
b = map[bits];
- colortable_palette_set_color(machine().colortable,32 + i,rgb_t(r,g,b));
+ palette.set_indirect_color(32 + i,rgb_t(r,g,b));
}
/* characters */
for (i = 0;i < 64*4;i++)
- colortable_entry_set_value(machine().colortable, i, (*(color_prom++) & 0x0f) + 0x10); /* chars */
+ palette.set_pen_indirect(i, (*(color_prom++) & 0x0f) + 0x10); /* chars */
/* sprites */
for (i = 0;i < 64*4;i++)
- colortable_entry_set_value(machine().colortable, 64*4+i, (*(color_prom++) & 0x0f));
+ palette.set_pen_indirect(64*4+i, (*(color_prom++) & 0x0f));
/* now the stars */
for (i = 0;i < 64;i++)
- colortable_entry_set_value(machine().colortable, 64*4+64*4+i, 32 + i);
+ palette.set_pen_indirect(64*4+64*4+i, 32 + i);
}
@@ -432,7 +430,7 @@ TILE_GET_INFO_MEMBER(galaga_state::get_tile_info)
VIDEO_START_MEMBER(galaga_state,galaga)
{
m_fg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(galaga_state::get_tile_info),this),tilemap_mapper_delegate(FUNC(galaga_state::tilemap_scan),this),8,8,36,28);
- colortable_configure_tilemap_groups(machine().colortable, m_fg_tilemap, m_gfxdecode->gfx(0), 0x1f);
+ m_palette->configure_tilemap_groups(*m_fg_tilemap, *m_gfxdecode->gfx(0), 0x1f);
m_galaga_gfxbank = 0;
@@ -508,12 +506,12 @@ void galaga_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
{
for (x = 0;x <= sizex;x++)
{
- m_gfxdecode->gfx(1)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,cliprect,
sprite + gfx_offs[y ^ (sizey * flipy)][x ^ (sizex * flipx)],
color,
flipx,flipy,
sx + 16*x, sy + 16*y,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, 0x0f));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 0x0f));
}
}
}
@@ -554,7 +552,7 @@ void galaga_state::draw_stars(bitmap_ind16 &bitmap, const rectangle &cliprect )
UINT32 galaga_state::screen_update_galaga(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
draw_stars(bitmap,cliprect);
draw_sprites(bitmap,cliprect);
m_fg_tilemap->draw(screen, bitmap, cliprect, 0,0);
diff --git a/src/mame/video/galastrm.c b/src/mame/video/galastrm.c
index 235b3840419..822e1b14988 100644
--- a/src/mame/video/galastrm.c
+++ b/src/mame/video/galastrm.c
@@ -198,7 +198,7 @@ void galastrm_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, c
if ((priority != 0 && sprite_ptr->primask != 0) ||
(priority == 0 && sprite_ptr->primask == 0))
{
- m_gfxdecode->gfx(sprite_ptr->gfx)->prio_zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(sprite_ptr->gfx)->prio_zoom_transpen(m_palette,bitmap,cliprect,
sprite_ptr->code,
sprite_ptr->color,
sprite_ptr->flipx,sprite_ptr->flipy,
diff --git a/src/mame/video/galaxia.c b/src/mame/video/galaxia.c
index 2eff4b396d0..e788e80dada 100644
--- a/src/mame/video/galaxia.c
+++ b/src/mame/video/galaxia.c
@@ -32,11 +32,11 @@ PALETTE_INIT_MEMBER(galaxia_state,galaxia)
};
for (int i = 0; i < 0x18; i++)
- palette_set_color_rgb(machine(), i, pal1bit(lut_clr[i] >> 0), pal1bit(lut_clr[i] >> 1), pal1bit(lut_clr[i] >> 2));
+ palette.set_pen_color(i, pal1bit(lut_clr[i] >> 0), pal1bit(lut_clr[i] >> 1), pal1bit(lut_clr[i] >> 2));
// stars/bullets
- palette_set_color_rgb(machine(), STAR_PEN, pal1bit(1), pal1bit(1), pal1bit(1));
- palette_set_color_rgb(machine(), BULLET_PEN, pal1bit(1), pal1bit(1), pal1bit(0));
+ palette.set_pen_color(STAR_PEN, pal1bit(1), pal1bit(1), pal1bit(1));
+ palette.set_pen_color(BULLET_PEN, pal1bit(1), pal1bit(1), pal1bit(0));
}
PALETTE_INIT_MEMBER(galaxia_state,astrowar)
@@ -47,16 +47,16 @@ PALETTE_INIT_MEMBER(galaxia_state,astrowar)
for (int i = 0; i < 8; i++)
{
// background
- palette_set_color_rgb(machine(), i*2, 0, 0, 0);
- palette_set_color_rgb(machine(), i*2 + 1, pal1bit(lut_clr[i] >> 0), pal1bit(lut_clr[i] >> 1), pal1bit(lut_clr[i] >> 2));
+ palette.set_pen_color(i*2, 0, 0, 0);
+ palette.set_pen_color(i*2 + 1, pal1bit(lut_clr[i] >> 0), pal1bit(lut_clr[i] >> 1), pal1bit(lut_clr[i] >> 2));
// sprites
- palette_set_color_rgb(machine(), i | SPRITE_PEN_BASE, pal1bit(i >> 0), pal1bit(i >> 1), pal1bit(i >> 2));
+ palette.set_pen_color(i | SPRITE_PEN_BASE, pal1bit(i >> 0), pal1bit(i >> 1), pal1bit(i >> 2));
}
// stars/bullets
- palette_set_color_rgb(machine(), STAR_PEN, pal1bit(1), pal1bit(1), pal1bit(1));
- palette_set_color_rgb(machine(), BULLET_PEN, pal1bit(1), pal1bit(1), pal1bit(0));
+ palette.set_pen_color(STAR_PEN, pal1bit(1), pal1bit(1), pal1bit(1));
+ palette.set_pen_color(BULLET_PEN, pal1bit(1), pal1bit(1), pal1bit(0));
}
TILE_GET_INFO_MEMBER(galaxia_state::get_galaxia_bg_tile_info)
diff --git a/src/mame/video/galaxian.c b/src/mame/video/galaxian.c
index 8f184a7f10e..ff9cc5062f9 100644
--- a/src/mame/video/galaxian.c
+++ b/src/mame/video/galaxian.c
@@ -235,7 +235,7 @@ H=B0: 0C,0C,0D,0D,0E,0E,0F,0F 0C,0C,2D,2D,0E,0E,2F,2F
*
*************************************/
-void galaxian_state::palette_init()
+PALETTE_INIT_MEMBER(galaxian_state, galaxian)
{
const UINT8 *color_prom = memregion("proms")->base();
static const int rgb_resistances[3] = { 1000, 470, 220 };
@@ -301,7 +301,7 @@ void galaxian_state::palette_init()
bit1 = BIT(color_prom[i],7);
b = combine_2_weights(bweights, bit0, bit1);
- palette_set_color(machine(), i, rgb_t(r,g,b));
+ palette.set_pen_color(i, rgb_t(r,g,b));
}
/*
@@ -361,7 +361,7 @@ void galaxian_state::palette_init()
PALETTE_INIT_MEMBER(galaxian_state,moonwar)
{
- galaxian_state::palette_init();
+ PALETTE_INIT_NAME(galaxian)(palette);
/* wire mod to connect the bullet blue output to the 220 ohm resistor */
m_bullet_color[7] = rgb_t(0xef,0xef,0x97);
@@ -578,7 +578,7 @@ void galaxian_state::sprites_draw(bitmap_rgb32 &bitmap, const rectangle &cliprec
/* draw */
- m_gfxdecode->gfx(1)->transpen(bitmap,clip,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,clip,
code, color,
flipx, flipy,
GALAXIAN_H0START + GALAXIAN_XSCALE * sx, sy, 0);
diff --git a/src/mame/video/galaxold.c b/src/mame/video/galaxold.c
index b42566f48df..ac1122b4be6 100644
--- a/src/mame/video/galaxold.c
+++ b/src/mame/video/galaxold.c
@@ -70,7 +70,7 @@ PALETTE_INIT_MEMBER(galaxold_state,galaxold)
bit1 = BIT(*color_prom,7);
b = 0x4f * bit0 + 0xa8 * bit1;
- palette_set_color_rgb(machine(),i,r,g,b);
+ palette.set_pen_color(i,r,g,b);
color_prom++;
}
@@ -79,17 +79,17 @@ PALETTE_INIT_MEMBER(galaxold_state,galaxold)
/* bullets - yellow and white */
- palette_set_color(machine(),BULLETS_COLOR_BASE+0,rgb_t(0xef,0xef,0x00));
- palette_set_color(machine(),BULLETS_COLOR_BASE+1,rgb_t(0xef,0xef,0xef));
+ palette.set_pen_color(BULLETS_COLOR_BASE+0,rgb_t(0xef,0xef,0x00));
+ palette.set_pen_color(BULLETS_COLOR_BASE+1,rgb_t(0xef,0xef,0xef));
}
PALETTE_INIT_MEMBER(galaxold_state,scrambold)
{
- PALETTE_INIT_CALL_MEMBER(galaxold);
+ PALETTE_INIT_NAME(galaxold)(palette);
/* blue background - 390 ohm resistor */
- palette_set_color(machine(),BACKGROUND_COLOR_BASE,rgb_t(0,0,0x56));
+ palette.set_pen_color(BACKGROUND_COLOR_BASE,rgb_t(0,0,0x56));
}
@@ -99,7 +99,7 @@ PALETTE_INIT_MEMBER(galaxold_state,stratgyx)
int i;
- PALETTE_INIT_CALL_MEMBER(galaxold);
+ PALETTE_INIT_NAME(galaxold)(palette);
/* The background color generator is connected this way:
@@ -114,7 +114,7 @@ PALETTE_INIT_MEMBER(galaxold_state,stratgyx)
int g = BIT(i,1) * 0x3c;
int b = BIT(i,2) * 0x47;
- palette_set_color_rgb(machine(),base+i,r,g,b);
+ palette.set_pen_color(base+i,r,g,b);
}
}
@@ -145,7 +145,7 @@ PALETTE_INIT_MEMBER(galaxold_state,rockclim)
bit1 = BIT(*color_prom,7);
b = 0x4f * bit0 + 0xa8 * bit1;
- palette_set_color_rgb(machine(),i,r,g,b);
+ palette.set_pen_color(i,r,g,b);
color_prom++;
}
}
@@ -192,14 +192,14 @@ PALETTE_INIT_MEMBER(galaxold_state,darkplnt)
bit2 = BIT(*color_prom,5);
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color_rgb(machine(),i,r,g,b);
+ palette.set_pen_color(i,r,g,b);
color_prom++;
}
/* bullets - red and blue */
- palette_set_color(machine(),BULLETS_COLOR_BASE+0,rgb_t(0xef,0x00,0x00));
- palette_set_color(machine(),BULLETS_COLOR_BASE+1,rgb_t(0x00,0x00,0xef));
+ palette.set_pen_color(BULLETS_COLOR_BASE+0,rgb_t(0xef,0x00,0x00));
+ palette.set_pen_color(BULLETS_COLOR_BASE+1,rgb_t(0x00,0x00,0xef));
}
PALETTE_INIT_MEMBER(galaxold_state,minefld)
@@ -208,7 +208,7 @@ PALETTE_INIT_MEMBER(galaxold_state,minefld)
int i;
- PALETTE_INIT_CALL_MEMBER(galaxold);
+ PALETTE_INIT_NAME(galaxold)(palette);
/* set up background colors */
@@ -220,7 +220,7 @@ PALETTE_INIT_MEMBER(galaxold_state,minefld)
int r = 0;
int g = i;
int b = i * 2;
- palette_set_color_rgb(machine(),base+i,r,g,b);
+ palette.set_pen_color(base+i,r,g,b);
}
/* graduated brown */
@@ -230,7 +230,7 @@ PALETTE_INIT_MEMBER(galaxold_state,minefld)
int r = i * 1.5;
int g = i * 0.75;
int b = i / 2;
- palette_set_color_rgb(machine(),base+128+i,r,g,b);
+ palette.set_pen_color(base+128+i,r,g,b);
}
}
@@ -240,7 +240,7 @@ PALETTE_INIT_MEMBER(galaxold_state,rescue)
int i;
- PALETTE_INIT_CALL_MEMBER(galaxold);
+ PALETTE_INIT_NAME(galaxold)(palette);
/* set up background colors */
@@ -252,7 +252,7 @@ PALETTE_INIT_MEMBER(galaxold_state,rescue)
int r = 0;
int g = i;
int b = i * 2;
- palette_set_color_rgb(machine(),base+i,r,g,b);
+ palette.set_pen_color(base+i,r,g,b);
}
}
@@ -262,7 +262,7 @@ PALETTE_INIT_MEMBER(galaxold_state,mariner)
int i;
- PALETTE_INIT_CALL_MEMBER(galaxold);
+ PALETTE_INIT_NAME(galaxold)(palette);
/* set up background colors */
@@ -282,7 +282,7 @@ PALETTE_INIT_MEMBER(galaxold_state,mariner)
g = 0;
b = 0x0e * BIT(i,0) + 0x1f * BIT(i,1) + 0x43 * BIT(i,2) + 0x8f * BIT(i,3);
- palette_set_color_rgb(machine(),base+i,r,g,b);
+ palette.set_pen_color(base+i,r,g,b);
}
}
@@ -315,7 +315,7 @@ PALETTE_INIT_MEMBER(galaxold_state,dambustr)
bit1 = BIT(*color_prom,7);
g = 0x4f * bit0 + 0xa8 * bit1;
- palette_set_color_rgb(machine(),i,r,g,b);
+ palette.set_pen_color(i,r,g,b);
color_prom++;
}
@@ -324,8 +324,8 @@ PALETTE_INIT_MEMBER(galaxold_state,dambustr)
/* bullets - yellow and white */
- palette_set_color(machine(),BULLETS_COLOR_BASE+0,rgb_t(0xef,0xef,0x00));
- palette_set_color(machine(),BULLETS_COLOR_BASE+1,rgb_t(0xef,0xef,0xef));
+ palette.set_pen_color(BULLETS_COLOR_BASE+0,rgb_t(0xef,0xef,0x00));
+ palette.set_pen_color(BULLETS_COLOR_BASE+1,rgb_t(0xef,0xef,0xef));
/*
Assumption (not clear from the schematics):
@@ -341,7 +341,7 @@ PALETTE_INIT_MEMBER(galaxold_state,dambustr)
int r = BIT(i,0) * 0x47;
int g = BIT(i,1) * 0x47;
int b = BIT(i,2) * 0x4f;
- palette_set_color_rgb(machine(),base+i,r,g,b);
+ palette.set_pen_color(base+i,r,g,b);
}
}
@@ -352,7 +352,7 @@ PALETTE_INIT_MEMBER(galaxold_state,turtles)
int i;
- PALETTE_INIT_CALL_MEMBER(galaxold);
+ PALETTE_INIT_NAME(galaxold)(palette);
/* The background color generator is connected this way:
@@ -367,7 +367,7 @@ PALETTE_INIT_MEMBER(galaxold_state,turtles)
int g = BIT(i,1) * 0x47;
int b = BIT(i,2) * 0x55;
- palette_set_color_rgb(machine(),base+i,r,g,b);
+ palette.set_pen_color(base+i,r,g,b);
}
}
@@ -1349,7 +1349,7 @@ void galaxold_state::galaxold_init_stars(int colors_offset)
g = map[bits];
bits = (i >> 4) & 0x03;
b = map[bits];
- palette_set_color_rgb(machine(),colors_offset+i,r,g,b);
+ m_palette->set_pen_color(colors_offset+i,r,g,b);
}
@@ -1700,7 +1700,7 @@ void galaxold_state::draw_sprites(bitmap_ind16 &bitmap, UINT8 *spriteram, size_t
if (offs < 3*4) sy++;
- m_gfxdecode->gfx(1)->transpen(bitmap,m_flipscreen_x ? spritevisibleareaflipx : spritevisiblearea,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,m_flipscreen_x ? spritevisibleareaflipx : spritevisiblearea,
code,color,
flipx,flipy,
sx,sy,0);
diff --git a/src/mame/video/galivan.c b/src/mame/video/galivan.c
index 357f9590cc9..471b5395003 100644
--- a/src/mame/video/galivan.c
+++ b/src/mame/video/galivan.c
@@ -52,14 +52,11 @@ background: 0x4000 bytes of ROM: 76543210 tile code low bits
***************************************************************************/
-void galivan_state::palette_init()
+PALETTE_INIT_MEMBER(galivan_state, galivan)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
@@ -67,7 +64,7 @@ void galivan_state::palette_init()
int g = pal4bit(color_prom[i + 0x100]);
int b = pal4bit(color_prom[i + 0x200]);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -75,7 +72,7 @@ void galivan_state::palette_init()
/* characters use colors 0-0x7f */
for (i = 0; i < 0x80; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
/* I think that */
/* background tiles use colors 0xc0-0xff in four banks */
@@ -90,7 +87,7 @@ void galivan_state::palette_init()
else
ctabentry = 0xc0 | (i & 0x0f) | ((i & 0x30) >> 0);
- colortable_entry_set_value(machine().colortable, 0x80 + i, ctabentry);
+ palette.set_pen_indirect(0x80 + i, ctabentry);
}
/* sprites use colors 0x80-0xbf in four banks */
@@ -108,7 +105,7 @@ void galivan_state::palette_init()
else
ctabentry = 0x80 | ((i & 0x03) << 4) | (color_prom[i >> 4] & 0x0f);
- colortable_entry_set_value(machine().colortable, 0x180 + i_swapped, ctabentry);
+ palette.set_pen_indirect(0x180 + i_swapped, ctabentry);
}
}
@@ -125,7 +122,8 @@ TILE_GET_INFO_MEMBER(galivan_state::get_bg_tile_info)
UINT8 *BGROM = memregion("gfx4")->base();
int attr = BGROM[tile_index + 0x4000];
int code = BGROM[tile_index] | ((attr & 0x03) << 8);
- SET_TILE_INFO_MEMBER(m_gfxdecode, 1,
+ SET_TILE_INFO_MEMBER(m_gfxdecode,
+ 1,
code,
(attr & 0x78) >> 3, /* seems correct */
0);
@@ -135,7 +133,8 @@ TILE_GET_INFO_MEMBER(galivan_state::get_tx_tile_info)
{
int attr = m_videoram[tile_index + 0x400];
int code = m_videoram[tile_index] | ((attr & 0x01) << 8);
- SET_TILE_INFO_MEMBER(m_gfxdecode, 0,
+ SET_TILE_INFO_MEMBER(m_gfxdecode,
+ 0,
code,
(attr & 0xe0) >> 5, /* not sure */
0);
@@ -147,7 +146,8 @@ TILE_GET_INFO_MEMBER(galivan_state::ninjemak_get_bg_tile_info)
UINT8 *BGROM = memregion("gfx4")->base();
int attr = BGROM[tile_index + 0x4000];
int code = BGROM[tile_index] | ((attr & 0x03) << 8);
- SET_TILE_INFO_MEMBER(m_gfxdecode, 1,
+ SET_TILE_INFO_MEMBER(m_gfxdecode,
+ 1,
code,
((attr & 0x60) >> 3) | ((attr & 0x0c) >> 2), /* seems correct */
0);
@@ -161,7 +161,8 @@ TILE_GET_INFO_MEMBER(galivan_state::ninjemak_get_tx_tile_info)
if(tile_index < 0x12) /* don't draw the NB1414M4 params! TODO: could be a better fix */
code = attr = 0x01;
- SET_TILE_INFO_MEMBER(m_gfxdecode, 0,
+ SET_TILE_INFO_MEMBER(m_gfxdecode,
+ 0,
code,
(attr & 0x1c) >> 2, /* seems correct ? */
0);
@@ -317,7 +318,7 @@ void galivan_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
// code = buffered_spriteram[offs + 1] + ((attr & 0x02) << 7);
code = buffered_spriteram[offs + 1] + ((attr & 0x06) << 7); // for ninjemak, not sure ?
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
code,
color + 16 * (spritepalettebank[code >> 2] & 0x0f),
flipx,flipy,
diff --git a/src/mame/video/galpani2.c b/src/mame/video/galpani2.c
index 67d95405dc0..26e2d742484 100644
--- a/src/mame/video/galpani2.c
+++ b/src/mame/video/galpani2.c
@@ -70,8 +70,8 @@ WRITE16_MEMBER( galpani2_state::galpani2_bg8_1_w ) { galpani2_bg8_w(offset, data
inline void galpani2_state::galpani2_palette_w(offs_t offset, UINT16 data, UINT16 mem_mask, int _n_)
{
- UINT16 newword = COMBINE_DATA(&m_palette[_n_][offset]);
- palette_set_color_rgb( machine(), offset + 0x4000 + _n_ * 0x100, pal5bit(newword >> 5), pal5bit(newword >> 10), pal5bit(newword >> 0) );
+ UINT16 newword = COMBINE_DATA(&m_palette_val[_n_][offset]);
+ m_palette->set_pen_color( offset + 0x4000 + _n_ * 0x100, pal5bit(newword >> 5), pal5bit(newword >> 10), pal5bit(newword >> 0) );
}
WRITE16_MEMBER( galpani2_state::galpani2_palette_0_w ) { galpani2_palette_w(offset, data, mem_mask, 0); }
@@ -106,14 +106,14 @@ WRITE16_MEMBER( galpani2_state::galpani2_bg15_w )
***************************************************************************/
-void galpani2_state::palette_init()
+PALETTE_INIT_MEMBER(galpani2_state, galpani2)
{
int i;
/* first $4200 colors are dynamic */
/* initialize 555 RGB lookup */
for (i = 0; i < 0x8000; i++)
- palette_set_color_rgb(machine(),0x4200+i,pal5bit(i >> 5),pal5bit(i >> 10),pal5bit(i >> 0));
+ palette.set_pen_color(0x4200+i,pal5bit(i >> 5),pal5bit(i >> 10),pal5bit(i >> 0));
}
void galpani2_state::video_start()
diff --git a/src/mame/video/galpanic.c b/src/mame/video/galpanic.c
index d4022d0cb55..6e5bda766e7 100644
--- a/src/mame/video/galpanic.c
+++ b/src/mame/video/galpanic.c
@@ -17,7 +17,7 @@ PALETTE_INIT_MEMBER(galpanic_state,galpanic)
/* initialize 555 RGB lookup */
for (i = 0;i < 32768;i++)
- palette_set_color_rgb(machine(),i+1024,pal5bit(i >> 5),pal5bit(i >> 10),pal5bit(i >> 0));
+ palette.set_pen_color(i+1024,pal5bit(i >> 5),pal5bit(i >> 10),pal5bit(i >> 0));
}
@@ -39,7 +39,7 @@ WRITE16_MEMBER(galpanic_state::galpanic_paletteram_w)
{
data = COMBINE_DATA(&m_generic_paletteram_16[offset]);
/* bit 0 seems to be a transparency flag for the front bitmap */
- palette_set_color_rgb(machine(),offset,pal5bit(data >> 6),pal5bit(data >> 11),pal5bit(data >> 1));
+ m_palette->set_pen_color(offset,pal5bit(data >> 6),pal5bit(data >> 11),pal5bit(data >> 1));
}
@@ -72,7 +72,7 @@ void galpanic_state::comad_draw_sprites(bitmap_ind16 &bitmap, const rectangle &c
sx = (sx&0x1ff) - (sx&0x200);
sy = (sy&0x1ff) - (sy&0x200);
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/galspnbl.c b/src/mame/video/galspnbl.c
index fb6cb807220..6e9888a0096 100644
--- a/src/mame/video/galspnbl.c
+++ b/src/mame/video/galspnbl.c
@@ -2,13 +2,13 @@
#include "includes/galspnbl.h"
-void galspnbl_state::palette_init()
+PALETTE_INIT_MEMBER(galspnbl_state, galspnbl)
{
int i;
/* initialize 555 RGB lookup */
for (i = 0; i < 32768; i++)
- palette_set_color_rgb(machine(), i + 1024, pal5bit(i >> 5), pal5bit(i >> 10), pal5bit(i >> 0));
+ palette.set_pen_color(i + 1024, pal5bit(i >> 5), pal5bit(i >> 10), pal5bit(i >> 0));
}
@@ -35,7 +35,7 @@ UINT32 galspnbl_state::screen_update_galspnbl(screen_device &screen, bitmap_ind1
draw_background(bitmap, cliprect);
- galspnbl_draw_sprites(screen, m_gfxdecode, bitmap, cliprect, 0, m_spriteram, m_spriteram.bytes());
+ galspnbl_draw_sprites(screen, m_gfxdecode, m_palette, bitmap, cliprect, 0, m_spriteram, m_spriteram.bytes());
for (offs = 0; offs < 0x1000 / 2; offs++)
{
@@ -50,7 +50,7 @@ UINT32 galspnbl_state::screen_update_galspnbl(screen_device &screen, bitmap_ind1
/* What is this? A priority/half transparency marker? */
if (!(attr & 0x0008))
{
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
color,
0,0,
@@ -59,6 +59,6 @@ UINT32 galspnbl_state::screen_update_galspnbl(screen_device &screen, bitmap_ind1
}
}
- galspnbl_draw_sprites(screen, m_gfxdecode, bitmap, cliprect, 1, m_spriteram, m_spriteram.bytes());
+ galspnbl_draw_sprites(screen, m_gfxdecode, m_palette, bitmap, cliprect, 1, m_spriteram, m_spriteram.bytes());
return 0;
}
diff --git a/src/mame/video/gaplus.c b/src/mame/video/gaplus.c
index 7a611c50bbf..f6f6a05bd15 100644
--- a/src/mame/video/gaplus.c
+++ b/src/mame/video/gaplus.c
@@ -23,14 +23,11 @@
***************************************************************************/
-void gaplus_state::palette_init()
+PALETTE_INIT_MEMBER(gaplus_state, gaplus)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 256);
-
for (i = 0;i < 256;i++)
{
int bit0,bit1,bit2,bit3,r,g,b;
@@ -54,7 +51,7 @@ void gaplus_state::palette_init()
bit3 = (color_prom[i + 0x200] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- colortable_palette_set_color(machine().colortable,i,rgb_t(r,g,b));
+ palette.set_indirect_color(i,rgb_t(r,g,b));
}
color_prom += 0x300;
@@ -62,12 +59,12 @@ void gaplus_state::palette_init()
/* characters use colors 0xf0-0xff */
for (i = 0;i < m_gfxdecode->gfx(0)->colors() * m_gfxdecode->gfx(0)->granularity();i++)
- colortable_entry_set_value(machine().colortable, m_gfxdecode->gfx(0)->colorbase() + i, 0xf0 + (*color_prom++ & 0x0f));
+ palette.set_pen_indirect(m_gfxdecode->gfx(0)->colorbase() + i, 0xf0 + (*color_prom++ & 0x0f));
/* sprites */
for (i = 0;i < m_gfxdecode->gfx(1)->colors() * m_gfxdecode->gfx(1)->granularity();i++)
{
- colortable_entry_set_value(machine().colortable, m_gfxdecode->gfx(1)->colorbase() + i, (color_prom[0] & 0x0f) + ((color_prom[0x200] & 0x0f) << 4));
+ palette.set_pen_indirect(m_gfxdecode->gfx(1)->colorbase() + i, (color_prom[0] & 0x0f) + ((color_prom[0x200] & 0x0f) << 4));
color_prom++;
}
}
@@ -182,7 +179,7 @@ void gaplus_state::video_start()
{
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(gaplus_state::get_tile_info),this),tilemap_mapper_delegate(FUNC(gaplus_state::tilemap_scan),this),8,8,36,28);
- colortable_configure_tilemap_groups(machine().colortable, m_bg_tilemap, m_gfxdecode->gfx(0), 0xff);
+ m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(0), 0xff);
starfield_init();
}
@@ -288,12 +285,12 @@ void gaplus_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
{
for (x = 0;x <= sizex;x++)
{
- m_gfxdecode->gfx(1)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,cliprect,
sprite + (duplicate ? 0 : (gfx_offs[y ^ (sizey * flipy)][x ^ (sizex * flipx)])),
color,
flipx,flipy,
sx + 16*x,sy + 16*y,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, 0xff));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 0xff));
}
}
}
diff --git a/src/mame/video/gatron.c b/src/mame/video/gatron.c
index 35e5791603c..3751d511752 100644
--- a/src/mame/video/gatron.c
+++ b/src/mame/video/gatron.c
@@ -54,6 +54,6 @@ UINT32 gatron_state::screen_update_gat(screen_device &screen, bitmap_ind16 &bitm
return 0;
}
-void gatron_state::palette_init()
+PALETTE_INIT_MEMBER(gatron_state, gatron)
{
}
diff --git a/src/mame/video/gberet.c b/src/mame/video/gberet.c
index 558f7cd8bc0..fd793f497db 100644
--- a/src/mame/video/gberet.c
+++ b/src/mame/video/gberet.c
@@ -26,9 +26,6 @@ PALETTE_INIT_MEMBER(gberet_state,gberet)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x20);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -53,7 +50,7 @@ PALETTE_INIT_MEMBER(gberet_state,gberet)
bit2 = (color_prom[i] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -62,7 +59,7 @@ PALETTE_INIT_MEMBER(gberet_state,gberet)
for (i = 0; i < 0x100; i++)
{
UINT8 ctabentry = (color_prom[i] & 0x0f) | 0x10;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
for (i = 0x100; i < 0x200; i++)
@@ -74,7 +71,7 @@ PALETTE_INIT_MEMBER(gberet_state,gberet)
else
ctabentry = 0;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -121,7 +118,7 @@ TILE_GET_INFO_MEMBER(gberet_state::get_bg_tile_info)
VIDEO_START_MEMBER(gberet_state,gberet)
{
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(gberet_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
- colortable_configure_tilemap_groups(machine().colortable, m_bg_tilemap, m_gfxdecode->gfx(0), 0x10);
+ m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(0), 0x10);
m_bg_tilemap->set_scroll_rows(32);
}
@@ -155,8 +152,8 @@ void gberet_state::gberet_draw_sprites( bitmap_ind16 &bitmap, const rectangle &c
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->transmask(bitmap,cliprect, code, color, flipx, flipy, sx, sy,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, 0));
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,cliprect, code, color, flipx, flipy, sx, sy,
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 0));
}
}
}
@@ -207,8 +204,8 @@ void gberet_state::gberetb_draw_sprites( bitmap_ind16 &bitmap, const rectangle &
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->transmask(bitmap,cliprect, code, color, flipx, flipy, sx, sy,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, 0));
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,cliprect, code, color, flipx, flipy, sx, sy,
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 0));
}
}
}
diff --git a/src/mame/video/gcpinbal.c b/src/mame/video/gcpinbal.c
index c3234260f5b..0272a908b2a 100644
--- a/src/mame/video/gcpinbal.c
+++ b/src/mame/video/gcpinbal.c
@@ -202,7 +202,7 @@ void gcpinbal_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap,
for (chain_pos = chain; chain_pos >= 0; chain_pos--)
{
- m_gfxdecode->gfx(0)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->prio_transpen(m_palette,bitmap,cliprect,
code,
col,
flipx, flipy,
diff --git a/src/mame/video/gijoe.c b/src/mame/video/gijoe.c
index 3b8197cb317..d8fae238b4e 100644
--- a/src/mame/video/gijoe.c
+++ b/src/mame/video/gijoe.c
@@ -155,7 +155,7 @@ UINT32 gijoe_state::screen_update_gijoe(screen_device &screen, bitmap_ind16 &bit
konami_sortlayers4(layer, m_layer_pri);
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
screen.priority().fill(0, cliprect);
m_k056832->tilemap_draw(screen, bitmap, cliprect, layer[0], 0, 1);
diff --git a/src/mame/video/ginganin.c b/src/mame/video/ginganin.c
index cf34c8c1797..0c1720e8adc 100644
--- a/src/mame/video/ginganin.c
+++ b/src/mame/video/ginganin.c
@@ -228,7 +228,7 @@ void ginganin_state::draw_sprites( bitmap_ind16 &bitmap,const rectangle &cliprec
flipy = !flipy;
}
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect,
code & 0x3fff,
attr >> 12,
flipx, flipy,
diff --git a/src/mame/video/gladiatr.c b/src/mame/video/gladiatr.c
index bc3b67a3af1..c72baae221e 100644
--- a/src/mame/video/gladiatr.c
+++ b/src/mame/video/gladiatr.c
@@ -108,7 +108,7 @@ WRITE8_MEMBER(gladiatr_state::gladiatr_paletteram_w)
g = (g << 1) + ((m_generic_paletteram_8[offset + 0x400] >> 5) & 0x01);
b = (b << 1) + ((m_generic_paletteram_8[offset + 0x400] >> 6) & 0x01);
- palette_set_color_rgb(machine(),offset,pal5bit(r),pal5bit(g),pal5bit(b));
+ m_palette->set_pen_color(offset,pal5bit(r),pal5bit(g),pal5bit(b));
}
@@ -227,7 +227,7 @@ void gladiatr_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
int t = tile_offset[ey][ex] + tile_number;
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
t,
color,
xflip, yflip,
@@ -293,6 +293,6 @@ UINT32 gladiatr_state::screen_update_gladiatr(screen_device &screen, bitmap_ind1
m_fg_tilemap->draw(screen, bitmap, cliprect, 0,0);
}
else
- bitmap.fill(get_black_pen(machine()), cliprect );
+ bitmap.fill(m_palette->black_pen(), cliprect );
return 0;
}
diff --git a/src/mame/video/glass.c b/src/mame/video/glass.c
index b06e2245823..118784cd314 100644
--- a/src/mame/video/glass.c
+++ b/src/mame/video/glass.c
@@ -177,7 +177,7 @@ void glass_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
number = ((number & 0x03) << 14) | ((number & 0x0fffc) >> 2);
- gfx->transpen(bitmap,cliprect,number,
+ gfx->transpen(m_palette,bitmap,cliprect,number,
0x10 + (color & 0x0f),xflip,yflip,
sx-0x0f,sy,0);
}
@@ -198,7 +198,7 @@ UINT32 glass_state::screen_update_glass(screen_device &screen, bitmap_ind16 &bit
m_pant[1]->set_scrollx(0, m_vregs[3]);
/* draw layers + sprites */
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
copybitmap(bitmap, *m_screen_bitmap, 0, 0, 0x18, 0x24, cliprect);
m_pant[1]->draw(screen, bitmap, cliprect, 0, 0);
m_pant[0]->draw(screen, bitmap, cliprect, 0, 0);
diff --git a/src/mame/video/gng.c b/src/mame/video/gng.c
index aef8da4b4c6..75425d5c545 100644
--- a/src/mame/video/gng.c
+++ b/src/mame/video/gng.c
@@ -124,7 +124,7 @@ void gng_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
flipy = !flipy;
}
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
buffered_spriteram[offs] + ((attributes << 2) & 0x300),
(attributes >> 4) & 3,
flipx,flipy,
diff --git a/src/mame/video/goal92.c b/src/mame/video/goal92.c
index b3186856b78..77338553b67 100644
--- a/src/mame/video/goal92.c
+++ b/src/mame/video/goal92.c
@@ -121,7 +121,7 @@ void goal92_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
y = 256 - (y + 7);
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
sprite,
color,fx,fy,x,y,15);
}
@@ -158,7 +158,7 @@ UINT32 goal92_state::screen_update_goal92(screen_device &screen, bitmap_ind16 &b
m_fg_layer->set_scrolly(0, m_scrollram[3] + 8);
}
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
m_bg_layer->draw(screen, bitmap, cliprect, 0, 0);
draw_sprites(bitmap, cliprect, 2);
diff --git a/src/mame/video/goindol.c b/src/mame/video/goindol.c
index 6c6529f431d..e4643adab94 100644
--- a/src/mame/video/goindol.c
+++ b/src/mame/video/goindol.c
@@ -102,13 +102,13 @@ void goindol_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
palette = sprite_ram[offs + 2] >> 3;
- m_gfxdecode->gfx(gfxbank)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(gfxbank)->transpen(m_palette,bitmap,cliprect,
tile,
palette,
flip_screen(),flip_screen(),
sx,sy, 0);
- m_gfxdecode->gfx(gfxbank)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(gfxbank)->transpen(m_palette,bitmap,cliprect,
tile+1,
palette,
flip_screen(),flip_screen(),
diff --git a/src/mame/video/goldstar.c b/src/mame/video/goldstar.c
index f5119487bcb..b060011094b 100644
--- a/src/mame/video/goldstar.c
+++ b/src/mame/video/goldstar.c
@@ -350,7 +350,7 @@ UINT32 goldstar_state::screen_update_goldstar(screen_device &screen, bitmap_ind1
{
int i;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
if (!(m_cm_enable_reg &0x01))
return 0;
@@ -383,7 +383,7 @@ UINT32 goldstar_state::screen_update_goldstar(screen_device &screen, bitmap_ind1
int girlyscroll = (INT8)((m_cm_girl_scroll & 0xf0));
int girlxscroll = (INT8)((m_cm_girl_scroll & 0x0f)<<4);
- gfx->zoom_transpen(bitmap,cliprect,m_cmaster_girl_num,m_cmaster_girl_pal,0,0,-(girlxscroll*2),-(girlyscroll), 0x20000, 0x10000,0);
+ gfx->zoom_transpen(m_palette,bitmap,cliprect,m_cmaster_girl_num,m_cmaster_girl_pal,0,0,-(girlxscroll*2),-(girlyscroll), 0x20000, 0x10000,0);
}
}
@@ -400,7 +400,7 @@ UINT32 goldstar_state::screen_update_bingowng(screen_device &screen, bitmap_ind1
{
int i;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
if (!(m_cm_enable_reg &0x01))
return 0;
@@ -425,7 +425,7 @@ UINT32 goldstar_state::screen_update_bingowng(screen_device &screen, bitmap_ind1
int girlyscroll = (INT8)((m_cm_girl_scroll & 0xf0));
int girlxscroll = (INT8)((m_cm_girl_scroll & 0x0f)<<4);
- gfx->zoom_transpen(bitmap,cliprect,m_cmaster_girl_num,m_cmaster_girl_pal,0,0,-(girlxscroll*2),-(girlyscroll), 0x20000, 0x10000,0);
+ gfx->zoom_transpen(m_palette,bitmap,cliprect,m_cmaster_girl_num,m_cmaster_girl_pal,0,0,-(girlxscroll*2),-(girlyscroll), 0x20000, 0x10000,0);
}
}
@@ -442,7 +442,7 @@ UINT32 goldstar_state::screen_update_magical(screen_device &screen, bitmap_ind16
{
int i;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
if (!(m_cm_enable_reg &0x01))
return 0;
@@ -500,7 +500,7 @@ UINT32 goldstar_state::screen_update_unkch(screen_device &screen, bitmap_ind16 &
{
int i;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
if (!(m_cm_enable_reg &0x01))
return 0;
@@ -553,7 +553,7 @@ UINT32 goldstar_state::screen_update_cmast91(screen_device &screen, bitmap_ind16
{
int i;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
if (!(m_cm_enable_reg &0x01))
return 0;
@@ -588,7 +588,7 @@ UINT32 goldstar_state::screen_update_amcoe1a(screen_device &screen, bitmap_ind16
{
int i;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
if (!(m_cm_enable_reg &0x01))
return 0;
diff --git a/src/mame/video/gomoku.c b/src/mame/video/gomoku.c
index efbdec99b70..4e62c564893 100644
--- a/src/mame/video/gomoku.c
+++ b/src/mame/video/gomoku.c
@@ -18,13 +18,13 @@
******************************************************************************/
-void gomoku_state::palette_init()
+PALETTE_INIT_MEMBER(gomoku_state, gomoku)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
int bit0, bit1, bit2, r, g, b;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
/* red component */
bit0 = (*color_prom >> 0) & 0x01;
@@ -42,7 +42,7 @@ void gomoku_state::palette_init()
bit2 = (*color_prom >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(),i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
color_prom++;
}
}
diff --git a/src/mame/video/gottlieb.c b/src/mame/video/gottlieb.c
index d659bf2811c..55887886771 100644
--- a/src/mame/video/gottlieb.c
+++ b/src/mame/video/gottlieb.c
@@ -32,7 +32,7 @@ WRITE8_MEMBER(gottlieb_state::gottlieb_paletteram_w)
/* alpha is set to 0 if laserdisc video is enabled */
a = (m_transparent0 && offset / 2 == 0) ? 0 : 255;
- palette_set_color(machine(), offset / 2, rgb_t(a, r, g, b));
+ m_palette->set_pen_color(offset / 2, rgb_t(a, r, g, b));
}
@@ -210,7 +210,7 @@ void gottlieb_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprec
if (flip_screen_y()) sy = 228 - sy;
- m_gfxdecode->gfx(2)->transpen(bitmap,clip,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,clip,
code, 0,
flip_screen_x(), flip_screen_y(),
sx,sy, 0);
@@ -231,7 +231,7 @@ UINT32 gottlieb_state::screen_update_gottlieb(screen_device &screen, bitmap_rgb3
if (!m_background_priority)
m_bg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
else
- bitmap.fill(machine().pens[0], cliprect);
+ bitmap.fill(m_palette->pen(0), cliprect);
/* draw the sprites */
draw_sprites(bitmap, cliprect);
diff --git a/src/mame/video/gotya.c b/src/mame/video/gotya.c
index 332a9f0f73d..8b352513797 100644
--- a/src/mame/video/gotya.c
+++ b/src/mame/video/gotya.c
@@ -9,7 +9,7 @@
***************************************************************************/
-void gotya_state::palette_init()
+PALETTE_INIT_MEMBER(gotya_state, gotya)
{
const UINT8 *color_prom = memregion("proms")->base();
static const int resistances_rg[3] = { 1000, 470, 220 };
@@ -23,9 +23,6 @@ void gotya_state::palette_init()
3, &resistances_rg[0], gweights, 0, 0,
2, &resistances_b[0], bweights, 0, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 32);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -49,7 +46,7 @@ void gotya_state::palette_init()
bit1 = (color_prom[i] >> 7) & 0x01;
b = combine_2_weights(bweights, bit0, bit1);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -58,7 +55,7 @@ void gotya_state::palette_init()
for (i = 0; i < 0x40; i++)
{
UINT8 ctabentry = color_prom[i] & 0x07;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -129,7 +126,7 @@ void gotya_state::draw_status_row( bitmap_ind16 &bitmap, const rectangle &clipre
sy = 31 - row;
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect,
m_videoram2[row * 32 + col],
m_videoram2[row * 32 + col + 0x10] & 0x0f,
flip_screen_x(), flip_screen_y(),
@@ -153,7 +150,7 @@ void gotya_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
sy = 240 - sy;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code, color,
flip_screen_x(), flip_screen_y(),
sx, sy, 0);
diff --git a/src/mame/video/gp9001.c b/src/mame/video/gp9001.c
index 4e21cd1690f..f95546f0c94 100644
--- a/src/mame/video/gp9001.c
+++ b/src/mame/video/gp9001.c
@@ -208,7 +208,8 @@ gp9001vdp_device::gp9001vdp_device(const machine_config &mconfig, const char *ta
device_memory_interface(mconfig, *this),
m_space_config("gp9001vdp", ENDIANNESS_BIG, 16,14, 0, NULL, *ADDRESS_MAP_NAME(gp9001vdp_map)),
m_gfxregion(0),
- m_gfxdecode(*this)
+ m_gfxdecode(*this),
+ m_palette(*this)
{
}
@@ -815,7 +816,7 @@ void gp9001vdp_device::draw_sprites( running_machine &machine, bitmap_ind16 &bit
else sx = sx_base + dim_x;
/*
- gfx->transpen(bitmap,cliprect,sprite,
+ gfx->transpen(m_palette,bitmap,cliprect,sprite,
color,
flipx,flipy,
sx,sy,0);
@@ -825,7 +826,7 @@ void gp9001vdp_device::draw_sprites( running_machine &machine, bitmap_ind16 &bit
{
int yy, xx;
- const pen_t *paldata = &gfx->machine().pens[gfx->colorbase() + gfx->granularity() * color];
+ const pen_t *paldata = &m_palette->pen(gfx->colorbase() + gfx->granularity() * color);
const UINT8* srcdata = gfx->get_data(sprite);
int count = 0;
int ystart, yend, yinc;
@@ -977,3 +978,13 @@ void gp9001vdp_device::gp9001_screen_eof(void)
/** Shift sprite RAM buffers *** Used to fix sprite lag **/
if (sp.use_sprite_buffer) memcpy(sp.vram16_buffer,sp.vram16,GP9001_SPRITERAM_SIZE);
}
+
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void gp9001vdp_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<gp9001vdp_device &>(device).m_palette.set_tag(tag);
+}
diff --git a/src/mame/video/gp9001.h b/src/mame/video/gp9001.h
index 1a90dd37162..c727c8344f7 100644
--- a/src/mame/video/gp9001.h
+++ b/src/mame/video/gp9001.h
@@ -39,6 +39,7 @@ public:
// static configuration
static void static_set_gfxdecode_tag(device_t &device, const char *tag);
+ static void static_set_palette_tag(device_t &device, const char *tag);
static void static_set_gfx_region(device_t &device, int gfxregion);
UINT16 gp9001_voffs;
@@ -111,6 +112,7 @@ private:
void gp9001_scroll_reg_select_w( offs_t offset, UINT16 data, UINT16 mem_mask );
void gp9001_scroll_reg_data_w(offs_t offset, UINT16 data, UINT16 mem_mask);
required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
};
extern const device_type GP9001_VDP;
@@ -136,3 +138,7 @@ extern const device_type GP9001_VDP;
#define MCFG_GP9001_VDP_GFXDECODE(_gfxtag) \
gp9001vdp_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+
+#define MCFG_GP9001_VDP_PALETTE(_palette_tag) \
+ gp9001vdp_device::static_set_palette_tag(*device, "^" _palette_tag);
+
diff --git a/src/mame/video/grchamp.c b/src/mame/video/grchamp.c
index bc8210f67fd..e0f2d3c6b43 100644
--- a/src/mame/video/grchamp.c
+++ b/src/mame/video/grchamp.c
@@ -12,7 +12,7 @@
#define RGB_MAX 191
-void grchamp_state::palette_init()
+void grchamp_state::palette_generate()
{
const UINT8 *color_prom = memregion("proms")->base();
static const int resistances[3] = { 100, 270, 470 };
@@ -98,6 +98,7 @@ TILEMAP_MAPPER_MEMBER(grchamp_state::get_memory_offset)
void grchamp_state::video_start()
{
+ palette_generate();
m_work_bitmap.allocate(32,32);
/* allocate tilemaps for each of the three sections */
@@ -110,8 +111,8 @@ void grchamp_state::video_start()
#if 0
int grchamp_state::collision_check(grchamp_state *state, bitmap_ind16 &bitmap, int which )
{
- int bgcolor = machine().pens[0];
- int sprite_transp = machine().pens[0x24];
+ int bgcolor = m_palette->pen(0);
+ int sprite_transp = m_palette->pen(0x24);
const rectangle &visarea = m_screen->visible_area();
int y0 = 240 - m_cpu0_out[3];
int x0 = 256 - m_cpu0_out[2];
@@ -123,7 +124,7 @@ int grchamp_state::collision_check(grchamp_state *state, bitmap_ind16 &bitmap, i
{
/* draw the current player sprite into a work bitmap */
- m_gfxdecode->gfx(4)->opaque(m_work_bitmap,
+ m_gfxdecode->gfx(4)->opaque(m_palette,m_work_bitmap,
m_work_bitmap.cliprect(),
m_cpu0_out[4]&0xf,
1, /* color */
@@ -189,7 +190,7 @@ void grchamp_state::draw_sprites(grchamp_state *state, bitmap_ind16 &bitmap, con
int color = source[2];
int code = source[1);
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
bank + (code & 0x3f),
color,
code & 0x40,
diff --git a/src/mame/video/gridlee.c b/src/mame/video/gridlee.c
index 1ea82483bf4..de1c29d2958 100644
--- a/src/mame/video/gridlee.c
+++ b/src/mame/video/gridlee.c
@@ -20,14 +20,14 @@
*
*************************************/
-void gridlee_state::palette_init()
+PALETTE_INIT_MEMBER(gridlee_state, gridlee)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
- palette_set_color_rgb(machine(),i,pal4bit(color_prom[0x0000]),pal4bit(color_prom[0x0800]),pal4bit(color_prom[0x1000]));
+ palette.set_pen_color(i,pal4bit(color_prom[0x0000]),pal4bit(color_prom[0x0800]),pal4bit(color_prom[0x1000]));
color_prom++;
}
}
@@ -132,7 +132,7 @@ WRITE8_MEMBER(gridlee_state::gridlee_palette_select_w)
UINT32 gridlee_state::screen_update_gridlee(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- const pen_t *pens = &machine().pens[m_palettebank_vis * 32];
+ const pen_t *pens = &m_palette->pen(m_palettebank_vis * 32);
UINT8 *gfx;
int x, y, i;
diff --git a/src/mame/video/groundfx.c b/src/mame/video/groundfx.c
index 9a827ddf34e..1959dee20b2 100644
--- a/src/mame/video/groundfx.c
+++ b/src/mame/video/groundfx.c
@@ -179,7 +179,7 @@ void groundfx_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,co
else
clipper=&cliprect;
- m_gfxdecode->gfx(sprite_ptr->gfx)->prio_zoom_transpen(bitmap,*clipper,
+ m_gfxdecode->gfx(sprite_ptr->gfx)->prio_zoom_transpen(m_palette,bitmap,*clipper,
sprite_ptr->code,
sprite_ptr->color,
sprite_ptr->flipx,sprite_ptr->flipy,
diff --git a/src/mame/video/gstriker.c b/src/mame/video/gstriker.c
index ba5adc1c469..55d84c94216 100644
--- a/src/mame/video/gstriker.c
+++ b/src/mame/video/gstriker.c
@@ -331,7 +331,7 @@ WRITE16_MEMBER(gstriker_state::gsx_videoram3_w)
UINT32 gstriker_state::screen_update_gstriker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
// Sandwitched screen/sprite0/score/sprite1. Surely wrong, probably
// needs sprite orthogonality
diff --git a/src/mame/video/gsword.c b/src/mame/video/gsword.c
index ffd17a4df94..d0616b35b61 100644
--- a/src/mame/video/gsword.c
+++ b/src/mame/video/gsword.c
@@ -14,9 +14,6 @@ PALETTE_INIT_MEMBER(gsword_state,josvolly)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
@@ -24,7 +21,7 @@ PALETTE_INIT_MEMBER(gsword_state,josvolly)
int g = pal4bit(color_prom[i + 0x100]);
int b = pal4bit(color_prom[i + 0x200]);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -32,13 +29,13 @@ PALETTE_INIT_MEMBER(gsword_state,josvolly)
/* characters */
for (i = 0; i < 0x100; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
/* sprites */
for (i = 0x100; i < 0x200; i++)
{
UINT8 ctabentry = (BITSWAP8(color_prom[i - 0x100],7,6,5,4,0,1,2,3) & 0x0f) | 0x80;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -48,9 +45,6 @@ PALETTE_INIT_MEMBER(gsword_state,gsword)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
@@ -75,7 +69,7 @@ PALETTE_INIT_MEMBER(gsword_state,gsword)
bit2 = (color_prom[i + 0x000] >> 3) & 1;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -83,13 +77,13 @@ PALETTE_INIT_MEMBER(gsword_state,gsword)
/* characters */
for (i = 0; i < 0x100; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
/* sprites */
for (i = 0x100; i < 0x200; i++)
{
UINT8 ctabentry = (BITSWAP8(color_prom[i - 0x100],7,6,5,4,0,1,2,3) & 0x0f) | 0x80;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -191,12 +185,12 @@ void gsword_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
flipx = !flipx;
flipy = !flipy;
}
- m_gfxdecode->gfx(1+spritebank)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(1+spritebank)->transmask(m_palette,bitmap,cliprect,
tile,
color,
flipx,flipy,
sx,sy,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1+spritebank), color, 0x8f));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1+spritebank), color, 0x8f));
}
}
}
diff --git a/src/mame/video/gticlub.c b/src/mame/video/gticlub.c
index e86ef87fa47..2c982ca48f3 100644
--- a/src/mame/video/gticlub.c
+++ b/src/mame/video/gticlub.c
@@ -1576,12 +1576,13 @@ void K001005_draw(bitmap_rgb32 &bitmap, const rectangle &cliprect)
void K001005_swap_buffers(running_machine &machine)
{
+ driver_device *state = machine.driver_data<driver_device>();
K001005_bitmap_page ^= 1;
//if (K001005_status == 2)
{
float zvalue = ZBUFFER_MAX;
- K001005_bitmap[K001005_bitmap_page]->fill(machine.pens[0]&0x00ffffff, K001005_cliprect);
+ K001005_bitmap[K001005_bitmap_page]->fill(state->m_palette->pen(0)&0x00ffffff, K001005_cliprect);
K001005_zbuffer->fill(*(int*)&zvalue, K001005_cliprect);
}
}
diff --git a/src/mame/video/gunbustr.c b/src/mame/video/gunbustr.c
index a0aebbf25a3..762b7158fca 100644
--- a/src/mame/video/gunbustr.c
+++ b/src/mame/video/gunbustr.c
@@ -164,7 +164,7 @@ void gunbustr_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,co
}
else
{
- m_gfxdecode->gfx(sprite_ptr->gfx)->zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(sprite_ptr->gfx)->zoom_transpen(m_palette,bitmap,cliprect,
sprite_ptr->code,
sprite_ptr->color,
sprite_ptr->flipx,sprite_ptr->flipy,
@@ -183,7 +183,7 @@ logerror("Sprite number %04x had %02x invalid chunks\n",tilenum,bad_chunks);
{
sprite_ptr--;
- m_gfxdecode->gfx(sprite_ptr->gfx)->prio_zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(sprite_ptr->gfx)->prio_zoom_transpen(m_palette,bitmap,cliprect,
sprite_ptr->code,
sprite_ptr->color,
sprite_ptr->flipx,sprite_ptr->flipy,
diff --git a/src/mame/video/gundealr.c b/src/mame/video/gundealr.c
index bd5a0c96ce6..efc30d40cc6 100644
--- a/src/mame/video/gundealr.c
+++ b/src/mame/video/gundealr.c
@@ -92,7 +92,7 @@ WRITE8_MEMBER(gundealr_state::gundealr_paletteram_w)
b = (val >> 4) & 0x0f;
/* TODO: the bottom 4 bits are used as well, but I'm not sure about the meaning */
- palette_set_color_rgb(machine(), offset / 2, pal4bit(r), pal4bit(g), pal4bit(b));
+ m_palette->set_pen_color(offset / 2, pal4bit(r), pal4bit(g), pal4bit(b));
}
WRITE8_MEMBER(gundealr_state::gundealr_fg_scroll_w)
diff --git a/src/mame/video/gunsmoke.c b/src/mame/video/gunsmoke.c
index 685701aee25..e961f665133 100644
--- a/src/mame/video/gunsmoke.c
+++ b/src/mame/video/gunsmoke.c
@@ -16,14 +16,11 @@
***************************************************************************/
-void gunsmoke_state::palette_init()
+PALETTE_INIT_MEMBER(gunsmoke_state, gunsmoke)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
@@ -31,7 +28,7 @@ void gunsmoke_state::palette_init()
int g = pal4bit(color_prom[i + 0x100]);
int b = pal4bit(color_prom[i + 0x200]);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -41,21 +38,21 @@ void gunsmoke_state::palette_init()
for (i = 0; i < 0x80; i++)
{
UINT8 ctabentry = color_prom[i] | 0x40;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* background tiles use colors 0-0x3f */
for (i = 0x100; i < 0x200; i++)
{
UINT8 ctabentry = color_prom[i] | ((color_prom[i + 0x100] & 0x03) << 4);
- colortable_entry_set_value(machine().colortable, i - 0x80, ctabentry);
+ palette.set_pen_indirect(i - 0x80, ctabentry);
}
/* sprites use colors 0x80-0xff */
for (i = 0x300; i < 0x400; i++)
{
UINT8 ctabentry = color_prom[i] | ((color_prom[i + 0x100] & 0x07) << 4) | 0x80;
- colortable_entry_set_value(machine().colortable, i - 0x180, ctabentry);
+ palette.set_pen_indirect(i - 0x180, ctabentry);
}
}
@@ -130,7 +127,7 @@ void gunsmoke_state::video_start()
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(gunsmoke_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 32, 32, 2048, 8);
m_fg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(gunsmoke_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
- colortable_configure_tilemap_groups(machine().colortable, m_fg_tilemap, m_gfxdecode->gfx(0), 0x4f);
+ m_palette->configure_tilemap_groups(*m_fg_tilemap, *m_gfxdecode->gfx(0), 0x4f);
}
void gunsmoke_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
@@ -162,7 +159,7 @@ void gunsmoke_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
flipy = !flipy;
}
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect, code, color, flipx, flipy, sx, sy, 0);
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy, sx, sy, 0);
}
}
@@ -174,7 +171,7 @@ UINT32 gunsmoke_state::screen_update_gunsmoke(screen_device &screen, bitmap_ind1
if (m_bgon)
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
else
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
if (m_objon)
draw_sprites(bitmap, cliprect);
diff --git a/src/mame/video/gyruss.c b/src/mame/video/gyruss.c
index 1fa77aa97b6..df3ade43d1a 100644
--- a/src/mame/video/gyruss.c
+++ b/src/mame/video/gyruss.c
@@ -29,7 +29,7 @@
***************************************************************************/
-void gyruss_state::palette_init()
+PALETTE_INIT_MEMBER(gyruss_state, gyruss)
{
const UINT8 *color_prom = memregion("proms")->base();
static const int resistances_rg[3] = { 1000, 470, 220 };
@@ -43,9 +43,6 @@ void gyruss_state::palette_init()
2, resistances_b, weights_b, 470, 0,
0, 0, 0, 0, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 32);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -69,7 +66,7 @@ void gyruss_state::palette_init()
bit1 = (color_prom[i] >> 7) & 0x01;
b = combine_2_weights(weights_b, bit0, bit1);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -79,14 +76,14 @@ void gyruss_state::palette_init()
for (i = 0; i < 0x100; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* characters map to the upper 16 palette entries */
for (i = 0x100; i < 0x140; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry + 0x10);
+ palette.set_pen_indirect(i, ctabentry + 0x10);
}
}
@@ -142,7 +139,7 @@ void gyruss_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
int flip_x = ~m_spriteram[offs + 2] & 0x40;
int flip_y = m_spriteram[offs + 2] & 0x80;
- gfx[gfx_bank]->transpen(bitmap,cliprect, code, color, flip_x, flip_y, x, y, 0);
+ gfx[gfx_bank]->transpen(m_palette,bitmap,cliprect, code, color, flip_x, flip_y, x, y, 0);
}
}
diff --git a/src/mame/video/hanaawas.c b/src/mame/video/hanaawas.c
index ef208285b61..c3535802a56 100644
--- a/src/mame/video/hanaawas.c
+++ b/src/mame/video/hanaawas.c
@@ -15,14 +15,11 @@
***************************************************************************/
-void hanaawas_state::palette_init()
+PALETTE_INIT_MEMBER(hanaawas_state, hanaawas)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x10);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x10; i++)
{
@@ -47,7 +44,7 @@ void hanaawas_state::palette_init()
bit2 = (color_prom[i] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -59,7 +56,7 @@ void hanaawas_state::palette_init()
{
int swapped_i = BITSWAP8(i,2,7,6,5,4,3,1,0);
UINT8 ctabentry = color_prom[swapped_i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
diff --git a/src/mame/video/harddriv.c b/src/mame/video/harddriv.c
index 262a0f04b71..ed5aa51f736 100644
--- a/src/mame/video/harddriv.c
+++ b/src/mame/video/harddriv.c
@@ -241,7 +241,7 @@ WRITE16_MEMBER( harddriv_state::hdgsp_control_hi_w )
break;
case 0x04:
- if (space.machine().total_colors() >= 256 * 8)
+ if (m_palette->entries() >= 256 * 8)
update_palette_bank(space.machine(), (m_gfx_palettebank & ~4) | (val << 2));
break;
@@ -330,7 +330,7 @@ INLINE void gsp_palette_change(running_machine &machine, int offset)
int red = (state->m_gsp_paletteram_lo[offset] >> 8) & 0xff;
int green = state->m_gsp_paletteram_lo[offset] & 0xff;
int blue = state->m_gsp_paletteram_hi[offset] & 0xff;
- palette_set_color(machine, offset, rgb_t(red, green, blue));
+ state->m_palette->set_pen_color(offset, rgb_t(red, green, blue));
}
diff --git a/src/mame/video/hcastle.c b/src/mame/video/hcastle.c
index 30c28a7f2dd..1677b8c26d8 100644
--- a/src/mame/video/hcastle.c
+++ b/src/mame/video/hcastle.c
@@ -8,14 +8,11 @@
#include "includes/hcastle.h"
-void hcastle_state::palette_init()
+PALETTE_INIT_MEMBER(hcastle_state, hcastle)
{
const UINT8 *color_prom = memregion("proms")->base();
int chip;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x80);
-
for (chip = 0; chip < 2; chip++)
{
int pal;
@@ -34,7 +31,7 @@ void hcastle_state::palette_init()
else
ctabentry = (pal << 4) | (color_prom[(clut << 8) | i] & 0x0f);
- colortable_entry_set_value(machine().colortable, (chip << 11) | (pal << 8) | i, ctabentry);
+ palette.set_pen_indirect((chip << 11) | (pal << 8) | i, ctabentry);
}
}
}
@@ -51,7 +48,7 @@ void hcastle_state::set_pens()
rgb_t color = rgb_t(pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
- colortable_palette_set_color(machine().colortable, i >> 1, color);
+ m_palette->set_indirect_color(i >> 1, color);
}
}
@@ -204,7 +201,7 @@ void hcastle_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
int base_color = (k007121->ctrlram_r(space, 6) & 0x30) * 2;
int bank_base = (bank == 0) ? 0x4000 * (m_gfx_bank & 1) : 0;
- k007121->sprites_draw(bitmap, cliprect, m_gfxdecode->gfx(bank), machine().colortable, sbank, base_color, 0, bank_base, priority_bitmap, (UINT32)-1);
+ k007121->sprites_draw(bitmap, cliprect, m_gfxdecode->gfx(bank), m_palette, sbank, base_color, 0, bank_base, priority_bitmap, (UINT32)-1);
}
/*****************************************************************************/
diff --git a/src/mame/video/higemaru.c b/src/mame/video/higemaru.c
index 931d02f6f31..1725ed6b86c 100644
--- a/src/mame/video/higemaru.c
+++ b/src/mame/video/higemaru.c
@@ -19,14 +19,11 @@ WRITE8_MEMBER(higemaru_state::higemaru_colorram_w)
***************************************************************************/
-void higemaru_state::palette_init()
+PALETTE_INIT_MEMBER(higemaru_state, higemaru)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x20);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -51,7 +48,7 @@ void higemaru_state::palette_init()
bit2 = (color_prom[i] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -61,14 +58,14 @@ void higemaru_state::palette_init()
for (i = 0; i < 0x80; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* sprites use colors 16-31 */
for (i = 0x80; i < 0x180; i++)
{
UINT8 ctabentry = (color_prom[i + 0x80] & 0x0f) | 0x10;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -125,14 +122,14 @@ void higemaru_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
col,
flipx,flipy,
sx,sy,15);
/* draw again with wraparound */
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
col,
flipx,flipy,
diff --git a/src/mame/video/himesiki.c b/src/mame/video/himesiki.c
index 9c1dd77ac11..708cdced6c1 100644
--- a/src/mame/video/himesiki.c
+++ b/src/mame/video/himesiki.c
@@ -78,7 +78,7 @@ void himesiki_state::himesiki_draw_sprites( bitmap_ind16 &bitmap, const rectangl
y -= 0x100;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code, col, fx, fy, x, y, 15);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code, col, fx, fy, x, y, 15);
}
for (offs = 0; offs < 0x100; offs += 4)
@@ -107,7 +107,7 @@ void himesiki_state::himesiki_draw_sprites( bitmap_ind16 &bitmap, const rectangl
if (y > 0xf0)
y -= 0x100;
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect, code, col, f, f, x, y, 15);
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect, code, col, f, f, x, y, 15);
}
}
diff --git a/src/mame/video/hng64.c b/src/mame/video/hng64.c
index a24bc0967fb..35ae71fa1ea 100644
--- a/src/mame/video/hng64.c
+++ b/src/mame/video/hng64.c
@@ -253,8 +253,8 @@ static void draw_sprites(screen_device &screen, bitmap_rgb32 &bitmap, const rect
if (!chaini)
{
- if (!blend) gfx->prio_zoom_transpen(bitmap,cliprect,tileno,pal,xflip,yflip,drawx,drawy,zoomx,zoomy/*0x10000*/,screen.priority(), 0,0);
- else gfx->prio_zoom_transpen_additive(bitmap,cliprect,tileno,pal,xflip,yflip,drawx,drawy,zoomx,zoomy/*0x10000*/,screen.priority(), 0,0);
+ if (!blend) gfx->prio_zoom_transpen(state->m_palette,bitmap,cliprect,tileno,pal,xflip,yflip,drawx,drawy,zoomx,zoomy/*0x10000*/,screen.priority(), 0,0);
+ else gfx->prio_zoom_transpen_additive(state->m_palette,bitmap,cliprect,tileno,pal,xflip,yflip,drawx,drawy,zoomx,zoomy/*0x10000*/,screen.priority(), 0,0);
tileno++;
}
else // inline chain mode, used by ss64
@@ -273,8 +273,8 @@ static void draw_sprites(screen_device &screen, bitmap_rgb32 &bitmap, const rect
pal&=0xf;
}
- if (!blend) gfx->prio_zoom_transpen(bitmap,cliprect,tileno,pal,xflip,yflip,drawx,drawy,zoomx,zoomy/*0x10000*/,screen.priority(), 0,0);
- else gfx->prio_zoom_transpen_additive(bitmap,cliprect,tileno,pal,xflip,yflip,drawx,drawy,zoomx,zoomy/*0x10000*/,screen.priority(), 0,0);
+ if (!blend) gfx->prio_zoom_transpen(state->m_palette,bitmap,cliprect,tileno,pal,xflip,yflip,drawx,drawy,zoomx,zoomy/*0x10000*/,screen.priority(), 0,0);
+ else gfx->prio_zoom_transpen_additive(state->m_palette,bitmap,cliprect,tileno,pal,xflip,yflip,drawx,drawy,zoomx,zoomy/*0x10000*/,screen.priority(), 0,0);
source +=8;
}
@@ -676,7 +676,8 @@ do {
static void hng64_tilemap_draw_roz_core(screen_device &screen, 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 = &screen.machine().pens[blit->tilemap_priority_code >> 16];
+ hng64_state *state = screen.machine().driver_data<hng64_state>();
+ const pen_t *clut = &state->m_palette->pen(blit->tilemap_priority_code >> 16);
bitmap_ind8 &priority_bitmap = screen.priority();
bitmap_rgb32 &destbitmap = *blit->bitmap;
bitmap_ind16 &srcbitmap = tmap->pixmap();
@@ -1125,7 +1126,7 @@ static void hng64_drawtilemap(screen_device &screen, bitmap_rgb32 &bitmap, const
bitmap_ind16 &bm = tilemap->pixmap();
int bmheight = bm.height();
int bmwidth = bm.width();
- const pen_t *paldata = screen.machine().pens;
+ const pen_t *paldata = state->m_palette->pens();
UINT32* dstptr;
UINT16* srcptr;
int xx,yy;
@@ -1221,7 +1222,7 @@ static void hng64_drawtilemap(screen_device &screen, bitmap_rgb32 &bitmap, const
bitmap_ind16 &bm = tilemap->pixmap();
int bmheight = bm.height();
int bmwidth = bm.width();
- const pen_t *paldata = screen.machine().pens;
+ const pen_t *paldata = state->m_palette->pens();
UINT32* dstptr;
UINT16* srcptr;
int xx,yy;
@@ -1347,7 +1348,7 @@ UINT32 hng64_state::screen_update_hng64(screen_device &screen, bitmap_rgb32 &bit
}
#endif
- bitmap.fill(hng64_tcram[0x50/4] & 0x10000 ? get_black_pen(screen.machine()) : screen.machine().pens[0], cliprect); //FIXME: Is the register correct? check with HW tests
+ bitmap.fill(hng64_tcram[0x50/4] & 0x10000 ? m_palette->black_pen() : m_palette->pen(0), cliprect); //FIXME: Is the register correct? check with HW tests
screen.priority().fill(0x00, cliprect);
if (m_screen_dis)
@@ -2971,7 +2972,7 @@ INLINE void FillSmoothTexPCHorizontalLine(running_machine &machine,
{
// The color out of the texture
paletteEntry %= prOptions.palPageSize;
- rgb_t color = machine.pens[prOptions.palOffset + paletteEntry];
+ rgb_t color = state->m_palette->pen(prOptions.palOffset + paletteEntry);
// Apply the lighting
float rIntensity = (r_start/w_start) / 255.0f;
diff --git a/src/mame/video/holeland.c b/src/mame/video/holeland.c
index ed72ae44368..79dc5e01a37 100644
--- a/src/mame/video/holeland.c
+++ b/src/mame/video/holeland.c
@@ -135,7 +135,7 @@ void holeland_state::holeland_draw_sprites( bitmap_ind16 &bitmap, const rectangl
sy = 240 - sy;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -173,7 +173,7 @@ void holeland_state::crzrally_draw_sprites( bitmap_ind16 &bitmap,const rectangle
sy = 240 - sy;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/homedata.c b/src/mame/video/homedata.c
index 55c66c6c81b..0856f563299 100644
--- a/src/mame/video/homedata.c
+++ b/src/mame/video/homedata.c
@@ -329,7 +329,7 @@ PALETTE_INIT_MEMBER(homedata_state,mrokumei)
g = ((color >> 7) & 0x1e) | ((color >> 2) & 1);
b = ((color >> 3) & 0x1e) | ((color >> 1) & 1);
- palette_set_color_rgb(machine(), i, pal5bit(r), pal5bit(g), pal5bit(b));
+ palette.set_pen_color(i, pal5bit(r), pal5bit(g), pal5bit(b));
}
}
@@ -352,7 +352,7 @@ PALETTE_INIT_MEMBER(homedata_state,reikaids)
r = ((color >> 7) & 0x1e) | ((color >> 2) & 1);
b = ((color >> 3) & 0x1e) | ((color >> 1) & 1);
- palette_set_color_rgb(machine(), i, pal5bit(r), pal5bit(g), pal5bit(b));
+ palette.set_pen_color(i, pal5bit(r), pal5bit(g), pal5bit(b));
}
}
@@ -375,7 +375,7 @@ PALETTE_INIT_MEMBER(homedata_state,pteacher)
r = ((color >> 6) & 0x1f);
b = ((color >> 1) & 0x1f);
- palette_set_color_rgb(machine(), i, pal5bit(r), pal5bit(g), pal5bit(b));
+ palette.set_pen_color(i, pal5bit(r), pal5bit(g), pal5bit(b));
}
}
@@ -391,7 +391,7 @@ PALETTE_INIT_MEMBER(homedata_state,mirderby)
g = color_prom[0x100+i];
b = color_prom[0x200+i];
- palette_set_color_rgb(machine(),i,pal4bit(r),pal4bit(g),pal4bit(b));
+ palette.set_pen_color(i,pal4bit(r),pal4bit(g),pal4bit(b));
}
}
@@ -798,7 +798,7 @@ UINT32 homedata_state::screen_update_mrokumei(screen_device &screen, bitmap_ind1
/* blank screen */
if (m_vreg[0x3] == 0xc1 && m_vreg[0x4] == 0xc0 && m_vreg[0x5] == 0xff)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
@@ -860,7 +860,7 @@ UINT32 homedata_state::screen_update_reikaids(screen_device &screen, bitmap_ind1
}
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
pri = (m_bank & 0x70) >> 4;
for (i = 0; i < 4; i++)
@@ -906,7 +906,7 @@ UINT32 homedata_state::screen_update_reikaids(screen_device &screen, bitmap_ind1
}
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
pri = (m_blitter_bank & 0x70) >> 4;
for (i = 0; i < 4; i++)
@@ -923,7 +923,7 @@ UINT32 homedata_state::screen_update_pteacher(screen_device &screen, bitmap_ind1
/* blank screen */
if (m_vreg[0x3] == 0xc1 && m_vreg[0x4] == 0xc0 && m_vreg[0x5] == 0xff)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
diff --git a/src/mame/video/homerun.c b/src/mame/video/homerun.c
index 367bedacb49..00d5f86e7f1 100644
--- a/src/mame/video/homerun.c
+++ b/src/mame/video/homerun.c
@@ -87,7 +87,7 @@ WRITE8_MEMBER(homerun_state::homerun_color_w)
bit2 = (data >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), offset, rgb_t(r,g,b));
+ m_palette->set_pen_color(offset, rgb_t(r,g,b));
}
@@ -122,14 +122,14 @@ void homerun_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
int flipx = (spriteram[offs + 2] & 0x40) >> 6;
int flipy = (spriteram[offs + 2] & 0x80) >> 7;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
sx,sy,0);
// wraparound
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/hyperspt.c b/src/mame/video/hyperspt.c
index 514f5e33d9e..2711fece038 100644
--- a/src/mame/video/hyperspt.c
+++ b/src/mame/video/hyperspt.c
@@ -29,7 +29,7 @@
***************************************************************************/
-void hyperspt_state::palette_init()
+PALETTE_INIT_MEMBER(hyperspt_state, hyperspt)
{
const UINT8 *color_prom = memregion("proms")->base();
static const int resistances_rg[3] = { 1000, 470, 220 };
@@ -43,9 +43,6 @@ void hyperspt_state::palette_init()
3, &resistances_rg[0], gweights, 1000, 0,
2, &resistances_b[0], bweights, 1000, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x20);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -69,7 +66,7 @@ void hyperspt_state::palette_init()
bit1 = (color_prom[i] >> 7) & 0x01;
b = combine_2_weights(bweights, bit0, bit1);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -79,14 +76,14 @@ void hyperspt_state::palette_init()
for (i = 0; i < 0x100; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* characters */
for (i = 0x100; i < 0x200; i++)
{
UINT8 ctabentry = (color_prom[i] & 0x0f) | 0x10;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -152,20 +149,20 @@ void hyperspt_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
sy += 1;
- m_gfxdecode->gfx(0)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transmask(m_palette,bitmap,cliprect,
code, color,
flipx, flipy,
sx, sy,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(0), color, 0));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(0), color, 0));
/* redraw with wraparound */
- m_gfxdecode->gfx(0)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transmask(m_palette,bitmap,cliprect,
code, color,
flipx, flipy,
sx - 256, sy,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(0), color, 0));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(0), color, 0));
}
}
diff --git a/src/mame/video/hyprduel.c b/src/mame/video/hyprduel.c
index 5bfe1a79d75..d72fcc357a9 100644
--- a/src/mame/video/hyprduel.c
+++ b/src/mame/video/hyprduel.c
@@ -64,7 +64,7 @@ Note: if MAME_DEBUG is defined, pressing Z with:
WRITE16_MEMBER(hyprduel_state::hyprduel_paletteram_w)
{
data = COMBINE_DATA(&m_paletteram[offset]);
- palette_set_color_rgb(machine(), offset, pal5bit(data >> 6), pal5bit(data >> 11), pal5bit(data >> 1));
+ m_palette->set_pen_color(offset, pal5bit(data >> 6), pal5bit(data >> 11), pal5bit(data >> 1));
}
@@ -552,9 +552,9 @@ void hyprduel_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap,
if ((gfxstart + width * height - 1) >= gfx_size)
continue;
- gfx_element gfx(machine(), base_gfx8 + gfxstart, width, height, width, 0, 256);
+ gfx_element gfx(machine(), base_gfx8 + gfxstart, width, height, width, m_palette->entries(), 0, 256);
- gfx.prio_zoom_transpen(bitmap,cliprect,
+ gfx.prio_zoom_transpen(m_palette, bitmap,cliprect,
0,
color_start >> 4,
flipx, flipy,
@@ -568,9 +568,9 @@ void hyprduel_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap,
if ((gfxstart + width / 2 * height - 1) >= gfx_size)
continue;
- gfx_element gfx(machine(), base_gfx4 + 2 * gfxstart, width, height, width, 0, 16);
+ gfx_element gfx(machine(), base_gfx4 + 2 * gfxstart, width, height, width, m_palette->entries(), 0, 16);
- gfx.prio_zoom_transpen(bitmap,cliprect,
+ gfx.prio_zoom_transpen(m_palette, bitmap,cliprect,
0,
color + color_start,
flipx, flipy,
diff --git a/src/mame/video/ikki.c b/src/mame/video/ikki.c
index e737de33b4c..b21adf0d0f4 100644
--- a/src/mame/video/ikki.c
+++ b/src/mame/video/ikki.c
@@ -11,14 +11,11 @@ Video hardware driver by Uki
#include "emu.h"
#include "includes/ikki.h"
-void ikki_state::palette_init()
+PALETTE_INIT_MEMBER(ikki_state, ikki)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable - extra pen for the punch through pen */
- machine().colortable = colortable_alloc(machine(), 0x101);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
@@ -26,7 +23,7 @@ void ikki_state::palette_init()
int g = pal4bit(color_prom[i + 0x100]);
int b = pal4bit(color_prom[i + 0x200]);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -44,14 +41,14 @@ void ikki_state::palette_init()
ctabentry = 0x100;
}
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* bg lookup table */
for (i = 0x200; i < 0x400; i++)
{
UINT8 ctabentry = color_prom[i];
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -91,11 +88,11 @@ void ikki_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
if (y > 240)
y = y - 256;
- m_gfxdecode->gfx(1)->transmask(m_sprite_bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transmask(m_palette,m_sprite_bitmap,cliprect,
code, color,
m_flipscreen,m_flipscreen,
x,y,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, 0));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 0));
}
/* copy the sprite bitmap into the main bitmap, skipping the transparent pixels */
@@ -107,7 +104,7 @@ void ikki_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
{
UINT16 pen = m_sprite_bitmap.pix16(y, x);
- if (colortable_entry_get_value(machine().colortable, pen) != 0x100)
+ if (m_palette->pen_indirect(pen) != 0x100)
bitmap.pix16(y, x) = pen;
}
}
@@ -174,7 +171,7 @@ UINT32 ikki_state::screen_update_ikki(screen_device &screen, bitmap_ind16 &bitma
bank = (color & 0xe0) << 3;
color = ((color & 0x1f)<<0) | ((color & 0x80) >> 2);
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect,
m_videoram[offs * 2 + 1] + bank,
color,
m_flipscreen,m_flipscreen,
@@ -209,7 +206,7 @@ UINT32 ikki_state::screen_update_ikki(screen_device &screen, bitmap_ind16 &bitma
bank = (color & 0xe0) << 3;
color = ((color & 0x1f)<<0) | ((color & 0x80) >> 2);
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect,
m_videoram[offs * 2 + 1] + bank,
color,
m_flipscreen,m_flipscreen,
diff --git a/src/mame/video/inufuku.c b/src/mame/video/inufuku.c
index 277fd0e2316..1287c02a2a9 100644
--- a/src/mame/video/inufuku.c
+++ b/src/mame/video/inufuku.c
@@ -138,7 +138,7 @@ UINT32 inufuku_state::screen_update_inufuku(screen_device &screen, bitmap_ind16
{
int i;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
screen.priority().fill(0);
if (m_bg_raster)
diff --git a/src/mame/video/irobot.c b/src/mame/video/irobot.c
index 2faf4be6d35..7a646cef6ea 100644
--- a/src/mame/video/irobot.c
+++ b/src/mame/video/irobot.c
@@ -37,7 +37,7 @@
***************************************************************************/
-void irobot_state::palette_init()
+PALETTE_INIT_MEMBER(irobot_state, irobot)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -53,7 +53,7 @@ void irobot_state::palette_init()
int swapped_i = BITSWAP8(i,7,6,5,4,3,0,1,2);
- palette_set_color(machine(), swapped_i + 64, rgb_t(r, g, b));
+ palette.set_pen_color(swapped_i + 64, rgb_t(r, g, b));
}
}
@@ -72,7 +72,7 @@ WRITE8_MEMBER(irobot_state::irobot_paletteram_w)
g = 12 * bits * intensity;
bits = (color >> 7) & 0x03;
r = 12 * bits * intensity;
- palette_set_color(machine(),(offset >> 1) & 0x3F,rgb_t(r,g,b));
+ m_palette->set_pen_color((offset >> 1) & 0x3F,rgb_t(r,g,b));
}
@@ -360,7 +360,7 @@ UINT32 irobot_state::screen_update_irobot(screen_device &screen, bitmap_ind16 &b
int code = videoram[offs] & 0x3f;
int color = ((videoram[offs] & 0xc0) >> 6) | (m_alphamap >> 3);
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code, color,
0,0,
8*x,8*y,0);
diff --git a/src/mame/video/ironhors.c b/src/mame/video/ironhors.c
index d7c30004644..afcca391380 100644
--- a/src/mame/video/ironhors.c
+++ b/src/mame/video/ironhors.c
@@ -16,7 +16,7 @@
***************************************************************************/
-void ironhors_state::palette_init()
+PALETTE_INIT_MEMBER(ironhors_state, ironhors)
{
const UINT8 *color_prom = memregion("proms")->base();
static const int resistances[4] = { 2000, 1000, 470, 220 };
@@ -29,9 +29,6 @@ void ironhors_state::palette_init()
4, resistances, gweights, 1000, 0,
4, resistances, bweights, 1000, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
@@ -59,7 +56,7 @@ void ironhors_state::palette_init()
bit3 = (color_prom[i + 0x200] >> 3) & 0x01;
b = combine_4_weights(bweights, bit0, bit1, bit2, bit3);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table,*/
@@ -74,7 +71,7 @@ void ironhors_state::palette_init()
for (j = 0; j < 8; j++)
{
UINT8 ctabentry = (j << 5) | ((~i & 0x100) >> 4) | (color_prom[i] & 0x0f);
- colortable_entry_set_value(machine().colortable, ((i & 0x100) << 3) | (j << 8) | (i & 0xff), ctabentry);
+ palette.set_pen_indirect(((i & 0x100) << 3) | (j << 8) | (i & 0xff), ctabentry);
}
}
}
@@ -181,7 +178,7 @@ void ironhors_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
switch (sr[offs + 4] & 0x0c)
{
case 0x00: /* 16x16 */
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code/4,
color,
flipx,flipy,
@@ -192,12 +189,12 @@ void ironhors_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
{
if (flip_screen()) sy += 8; // this fixes the train wheels' position
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code & ~1,
color,
flipx,flipy,
flipx?sx+8:sx,sy,0);
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code | 1,
color,
flipx,flipy,
@@ -207,12 +204,12 @@ void ironhors_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
case 0x08: /* 8x16 */
{
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code & ~2,
color,
flipx,flipy,
sx,flipy?sy+8:sy,0);
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code | 2,
color,
flipx,flipy,
@@ -222,7 +219,7 @@ void ironhors_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
case 0x0c: /* 8x8 */
{
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -290,7 +287,7 @@ void ironhors_state::farwest_draw_sprites( bitmap_ind16 &bitmap, const rectangle
switch (sr[offs + 3] & 0x0c)
{
case 0x00: /* 16x16 */
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code/4,
color,
flipx,flipy,
@@ -301,12 +298,12 @@ void ironhors_state::farwest_draw_sprites( bitmap_ind16 &bitmap, const rectangle
{
if (flip_screen()) sy += 8; // this fixes the train wheels' position
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code & ~1,
color,
flipx,flipy,
flipx?sx+8:sx,sy,0);
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code | 1,
color,
flipx,flipy,
@@ -316,12 +313,12 @@ void ironhors_state::farwest_draw_sprites( bitmap_ind16 &bitmap, const rectangle
case 0x08: /* 8x16 */
{
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code & ~2,
color,
flipx,flipy,
sx,flipy?sy+8:sy,0);
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code | 2,
color,
flipx,flipy,
@@ -331,7 +328,7 @@ void ironhors_state::farwest_draw_sprites( bitmap_ind16 &bitmap, const rectangle
case 0x0c: /* 8x8 */
{
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/itech32.c b/src/mame/video/itech32.c
index 1a850dcd526..fa665fc4c15 100644
--- a/src/mame/video/itech32.c
+++ b/src/mame/video/itech32.c
@@ -233,7 +233,7 @@ WRITE16_MEMBER(itech32_state::timekill_intensity_w)
double intensity = (double)(data & 0xff) / (double)0x60;
int i;
for (i = 0; i < 8192; i++)
- palette_set_pen_contrast(machine(), i, intensity);
+ m_palette->set_pen_contrast(i, intensity);
}
}
@@ -311,7 +311,7 @@ WRITE16_MEMBER(itech32_state::timekill_paletteram_w)
g = m_generic_paletteram_16[offset & ~1] >> 8;
b = m_generic_paletteram_16[offset | 1] >> 8;
- palette_set_color(machine(), offset / 2, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset / 2, rgb_t(r, g, b));
}
@@ -328,7 +328,7 @@ WRITE16_MEMBER(itech32_state::bloodstm_paletteram_w)
g = m_generic_paletteram_16[offset & ~1] >> 8;
b = m_generic_paletteram_16[offset | 1] & 0xff;
- palette_set_color(machine(), offset / 2, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset / 2, rgb_t(r, g, b));
}
@@ -342,7 +342,7 @@ WRITE32_MEMBER(itech32_state::drivedge_paletteram_w)
g = (m_generic_paletteram_32[offset] >> 8) & 0xff;
b = (m_generic_paletteram_32[offset] >> 16) & 0xff;
- palette_set_color(machine(), offset, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset, rgb_t(r, g, b));
}
@@ -356,7 +356,7 @@ WRITE32_MEMBER(itech32_state::itech020_paletteram_w)
g = (m_generic_paletteram_32[offset] >> 8) & 0xff;
b = m_generic_paletteram_32[offset] & 0xff;
- palette_set_color(machine(), offset, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset, rgb_t(r, g, b));
}
diff --git a/src/mame/video/itech8.c b/src/mame/video/itech8.c
index 201bb2f2eeb..74d4fc1a598 100644
--- a/src/mame/video/itech8.c
+++ b/src/mame/video/itech8.c
@@ -582,7 +582,7 @@ UINT32 itech8_state::screen_update_itech8_2layer(screen_device &screen, bitmap_r
/* if we're blanked, just fill with black */
if (m_tms34061->m_display.blanked)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
@@ -617,7 +617,7 @@ UINT32 itech8_state::screen_update_itech8_grmatch(screen_device &screen, bitmap_
/* if we're blanked, just fill with black */
if (m_tms34061->m_display.blanked)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
@@ -665,7 +665,7 @@ UINT32 itech8_state::screen_update_itech8_2page(screen_device &screen, bitmap_rg
/* if we're blanked, just fill with black */
if (m_tms34061->m_display.blanked)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
@@ -696,7 +696,7 @@ UINT32 itech8_state::screen_update_itech8_2page_large(screen_device &screen, bit
/* if we're blanked, just fill with black */
if (m_tms34061->m_display.blanked)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
diff --git a/src/mame/video/jack.c b/src/mame/video/jack.c
index 6a3cc36f81b..b726bf5e829 100644
--- a/src/mame/video/jack.c
+++ b/src/mame/video/jack.c
@@ -26,7 +26,7 @@ WRITE8_MEMBER(jack_state::jack_colorram_w)
WRITE8_MEMBER(jack_state::jack_paletteram_w)
{
/* RGB output is inverted */
- paletteram_BBGGGRRR_byte_w(space, offset, ~data);
+ m_palette->write(space, offset, UINT8(~data));
}
READ8_MEMBER(jack_state::jack_flipscreen_r)
@@ -89,7 +89,7 @@ void jack_state::jack_draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipr
flipy = !flipy;
}
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -149,7 +149,7 @@ PALETTE_INIT_MEMBER(jack_state,joinem)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, r, g, b;
bit0 = (color_prom[i] >> 0) & 0x01;
@@ -165,7 +165,7 @@ PALETTE_INIT_MEMBER(jack_state,joinem)
bit2 = (color_prom[i] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r,g,b));
+ palette.set_pen_color(i, rgb_t(r,g,b));
}
}
@@ -209,7 +209,7 @@ void jack_state::joinem_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cli
flipy = !flipy;
}
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/jackal.c b/src/mame/video/jackal.c
index ed93c1bc5e2..715743862d9 100644
--- a/src/mame/video/jackal.c
+++ b/src/mame/video/jackal.c
@@ -12,30 +12,27 @@
#include "includes/jackal.h"
-void jackal_state::palette_init()
+PALETTE_INIT_MEMBER(jackal_state, jackal)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x200);
-
for (i = 0; i < 0x100; i++)
{
UINT16 ctabentry = i | 0x100;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
for (i = 0x100; i < 0x200; i++)
{
UINT16 ctabentry = color_prom[i - 0x100] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
for (i = 0x200; i < 0x300; i++)
{
UINT16 ctabentry = (color_prom[i - 0x100] & 0x0f) | 0x10;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -50,7 +47,7 @@ void jackal_state::set_pens( )
rgb_t color = rgb_t(pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
- colortable_palette_set_color(machine().colortable, i >> 1, color);
+ m_palette->set_indirect_color(i >> 1, color);
}
}
@@ -112,7 +109,7 @@ void jackal_state::draw_background( screen_device &screen, bitmap_ind16 &bitmap,
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
}
-#define DRAW_SPRITE(bank, code, sx, sy) m_gfxdecode->gfx(bank)->transpen(bitmap,cliprect, code, color, flipx, flipy, sx, sy, 0);
+#define DRAW_SPRITE(bank, code, sx, sy) m_gfxdecode->gfx(bank)->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy, sx, sy, 0);
void jackal_state::draw_sprites_region( bitmap_ind16 &bitmap, const rectangle &cliprect, const UINT8 *sram, int length, int bank )
{
diff --git a/src/mame/video/jailbrek.c b/src/mame/video/jailbrek.c
index 8b5494324c8..7bd39752585 100644
--- a/src/mame/video/jailbrek.c
+++ b/src/mame/video/jailbrek.c
@@ -1,14 +1,11 @@
#include "emu.h"
#include "includes/jailbrek.h"
-void jailbrek_state::palette_init()
+PALETTE_INIT_MEMBER(jailbrek_state, jailbrek)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x20);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -16,7 +13,7 @@ void jailbrek_state::palette_init()
int g = pal4bit(color_prom[i + 0x00] >> 4);
int b = pal4bit(color_prom[i + 0x20] >> 0);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -25,13 +22,13 @@ void jailbrek_state::palette_init()
for (i = 0; i < 0x100; i++)
{
UINT8 ctabentry = (color_prom[i] & 0x0f) | 0x10;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
for (i = 0x100; i < 0x200; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -85,9 +82,9 @@ void jailbrek_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->transmask(bitmap,cliprect, code, color, flipx, flipy,
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,cliprect, code, color, flipx, flipy,
sx, sy,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, 0));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 0));
}
}
diff --git a/src/mame/video/jalblend.c b/src/mame/video/jalblend.c
index 398144dad37..4f78ca974df 100644
--- a/src/mame/video/jalblend.c
+++ b/src/mame/video/jalblend.c
@@ -85,20 +85,20 @@ rgb_t jal_blend_func(rgb_t dest, rgb_t addMe, UINT8 alpha)
}
template<class _BitmapClass>
-void jal_blend_drawgfx_common(_BitmapClass &dest_bmp,const rectangle &clip,gfx_element *gfx,
+void jal_blend_drawgfx_common(palette_device &palette,_BitmapClass &dest_bmp,const rectangle &clip,gfx_element *gfx,
UINT32 code,UINT32 color,int flipx,int flipy,int offsx,int offsy,
int transparent_color)
{
if (jal_blend_table == NULL)
{
- gfx->transpen(dest_bmp,clip,code,color,flipx,flipy,offsx,offsy,transparent_color);
+ gfx->transpen(palette,dest_bmp,clip,code,color,flipx,flipy,offsx,offsy,transparent_color);
return;
}
/* Start drawing */
if (gfx)
{
- const pen_t *pal = &gfx->machine().pens[gfx->colorbase() + gfx->granularity() * (color % gfx->colors())];
+ const pen_t *pal = &palette.pen(gfx->colorbase() + gfx->granularity() * (color % gfx->colors()));
const UINT8 *alpha = &jal_blend_table[gfx->granularity() * (color % gfx->colors())];
const UINT8 *source_base = gfx->get_data(code % gfx->elements());
int x_index_base, y_index, sx, sy, ex, ey;
@@ -110,41 +110,41 @@ void jal_blend_drawgfx_common(_BitmapClass &dest_bmp,const rectangle &clip,gfx_e
x_index_base = flipx ? gfx->width()-1 : 0;
y_index = flipy ? gfx->height()-1 : 0;
- /* start coordinates */
+ // start coordinates
sx = offsx;
sy = offsy;
- /* end coordinates */
+ // end coordinates
ex = sx + gfx->width();
ey = sy + gfx->height();
if (sx < clip.min_x)
- { /* clip left */
+ { // clip left
int pixels = clip.min_x-sx;
sx += pixels;
x_index_base += xinc*pixels;
}
if (sy < clip.min_y)
- { /* clip top */
+ { // clip top
int pixels = clip.min_y-sy;
sy += pixels;
y_index += yinc*pixels;
}
- /* NS 980211 - fixed incorrect clipping */
+ // NS 980211 - fixed incorrect clipping
if (ex > clip.max_x+1)
- { /* clip right */
+ { // clip right
ex = clip.max_x+1;
}
if (ey > clip.max_y+1)
- { /* clip bottom */
+ { // clip bottom
ey = clip.max_y+1;
}
if (ex > sx)
- { /* skip if inner loop doesn't draw anything */
+ { // skip if inner loop doesn't draw anything
int x, y;
- /* taken from case 7: TRANSPARENCY_ALPHARANGE */
+ // taken from case 7: TRANSPARENCY_ALPHARANGE
for (y = sy; y < ey; y++)
{
const UINT8 *source = source_base + y_index*gfx->rowbytes();
@@ -157,12 +157,12 @@ void jal_blend_drawgfx_common(_BitmapClass &dest_bmp,const rectangle &clip,gfx_e
{
if (alpha[c] & 8)
{
- /* Comp with clamp */
+ // Comp with clamp
dest[x] = jal_blend_func(dest[x], pal[c], alpha[c]);
}
else
{
- /* Skip the costly alpha step altogether */
+ // Skip the costly alpha step altogether
dest[x] = pal[c];
}
}
@@ -174,11 +174,11 @@ void jal_blend_drawgfx_common(_BitmapClass &dest_bmp,const rectangle &clip,gfx_e
}
}
-void jal_blend_drawgfx(bitmap_ind16 &dest_bmp,const rectangle &clip,gfx_element *gfx,
+void jal_blend_drawgfx(palette_device &palette,bitmap_ind16 &dest_bmp,const rectangle &clip,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,gfx_element *gfx,
+{ jal_blend_drawgfx_common(palette,dest_bmp, clip, gfx, code, color, flipx, flipy, offsx, offsy, transparent_color); }
+void jal_blend_drawgfx(palette_device &palette,bitmap_rgb32 &dest_bmp,const rectangle &clip,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); }
+{ jal_blend_drawgfx_common(palette,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 5dc3c788523..0351a6842b9 100644
--- a/src/mame/video/jalblend.h
+++ b/src/mame/video/jalblend.h
@@ -2,9 +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_ind16 &dest_bmp,const rectangle &clip,gfx_element *gfx,
+void jal_blend_drawgfx(palette_device &palette,bitmap_ind16 &dest_bmp,const rectangle &clip,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,gfx_element *gfx,
+void jal_blend_drawgfx(palette_device &palette,bitmap_rgb32 &dest_bmp,const rectangle &clip,gfx_element *gfx,
UINT32 code,UINT32 color,int flipx,int flipy,int offsx,int offsy,
int transparent_color);
diff --git a/src/mame/video/jpmimpct.c b/src/mame/video/jpmimpct.c
index ab49147fd9b..dcf306cf687 100644
--- a/src/mame/video/jpmimpct.c
+++ b/src/mame/video/jpmimpct.c
@@ -48,7 +48,7 @@ WRITE16_MEMBER(jpmimpct_state::jpmimpct_bt477_w)
if (++*addr_cnt == 3)
{
- palette_set_color(machine(), m_bt477.address, rgb_t(color[0], color[1], color[2]));
+ m_palette->set_pen_color(m_bt477.address, rgb_t(color[0], color[1], color[2]));
*addr_cnt = 0;
/* Address register increments */
@@ -116,8 +116,8 @@ void jpmimpct_scanline_update(screen_device &screen, bitmap_rgb32 &bitmap, int s
for (x = params->heblnk; x < params->hsblnk; x += 2)
{
UINT16 pixels = vram[coladdr++ & 0xff];
- dest[x + 0] = screen.machine().pens[pixels & 0xff];
- dest[x + 1] = screen.machine().pens[pixels >> 8];
+ dest[x + 0] = state->m_palette->pen(pixels & 0xff);
+ dest[x + 1] = state->m_palette->pen(pixels >> 8);
}
}
diff --git a/src/mame/video/k001005.c b/src/mame/video/k001005.c
index dc87ac29b35..f6966673539 100644
--- a/src/mame/video/k001005.c
+++ b/src/mame/video/k001005.c
@@ -46,7 +46,8 @@ k001005_device::k001005_device(const machine_config &mconfig, const char *tag, d
m_bitmap_page(0),
m_poly(NULL),
m_prev_poly_type(0),
- m_gfxrom(NULL)
+ m_gfxrom(NULL),
+ m_palette(*this)
{
m_ram[0] = 0;
m_ram[1] = 0;
@@ -245,7 +246,7 @@ void k001005_device::swap_buffers( )
//if (m_status == 2)
{
- m_bitmap[m_bitmap_page]->fill(machine().pens[0] & 0x00ffffff, m_cliprect);
+ m_bitmap[m_bitmap_page]->fill(m_palette->pen(0) & 0x00ffffff, m_cliprect);
m_zbuffer->fill(0xffffffff, m_cliprect);
}
}
@@ -930,3 +931,13 @@ void k001005_device::draw( bitmap_rgb32 &bitmap, const rectangle &cliprect )
}
}
}
+
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void k001005_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<k001005_device &>(device).m_palette.set_tag(tag);
+}
diff --git a/src/mame/video/k001005.h b/src/mame/video/k001005.h
index 95d068e9261..981d4890fea 100644
--- a/src/mame/video/k001005.h
+++ b/src/mame/video/k001005.h
@@ -27,6 +27,8 @@ public:
k001005_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
~k001005_device() {}
+ static void static_set_palette_tag(device_t &device, const char *tag);
+
void draw(bitmap_rgb32 &bitmap, const rectangle &cliprect);
void swap_buffers();
void preprocess_texture_data(UINT8 *rom, int length, int gticlub);
@@ -80,6 +82,7 @@ private:
int m_prev_poly_type;
UINT8 *m_gfxrom;
+ required_device<palette_device> m_palette;
};
extern const device_type K001005;
@@ -89,5 +92,7 @@ extern const device_type K001005;
MCFG_DEVICE_ADD(_tag, K001005, 0) \
MCFG_DEVICE_CONFIG(_interface)
+#define MCFG_K001005_PALETTE(_palette_tag) \
+ k001005_device::static_set_palette_tag(*device, "^" _palette_tag);
#endif
diff --git a/src/mame/video/k001604.c b/src/mame/video/k001604.c
index cc7dfccb648..d70052242e0 100644
--- a/src/mame/video/k001604.c
+++ b/src/mame/video/k001604.c
@@ -20,7 +20,8 @@ k001604_device::k001604_device(const machine_config &mconfig, const char *tag, d
m_tile_ram(NULL),
m_char_ram(NULL),
m_reg(NULL),
- m_gfxdecode(*this)
+ m_gfxdecode(*this),
+ m_palette(*this)
{
m_gfx_index[0] = 0;
m_gfx_index[1] = 0;
@@ -119,8 +120,8 @@ void k001604_device::device_start()
m_layer_8x8[0]->set_transparent_pen(0);
m_layer_8x8[1]->set_transparent_pen(0);
- m_gfxdecode->set_gfx(m_gfx_index[0], auto_alloc_clear(machine(), gfx_element(machine(), k001604_char_layout_layer_8x8, (UINT8*)&m_char_ram[0], machine().total_colors() / 16, 0)));
- m_gfxdecode->set_gfx(m_gfx_index[1], auto_alloc_clear(machine(), gfx_element(machine(), k001604_char_layout_layer_16x16, (UINT8*)&m_char_ram[0], machine().total_colors() / 16, 0)));
+ m_gfxdecode->set_gfx(m_gfx_index[0], auto_alloc_clear(machine(), gfx_element(machine(), k001604_char_layout_layer_8x8, (UINT8*)&m_char_ram[0], m_palette->entries() / 16, 0)));
+ m_gfxdecode->set_gfx(m_gfx_index[1], auto_alloc_clear(machine(), gfx_element(machine(), k001604_char_layout_layer_16x16, (UINT8*)&m_char_ram[0], m_palette->entries() / 16, 0)));
save_pointer(NAME(m_reg), 0x400 / 4);
save_pointer(NAME(m_char_ram), 0x200000 / 4);
@@ -431,3 +432,13 @@ WRITE32_MEMBER( k001604_device::reg_w )
//printf("K001604_reg_w (%d), %02X, %08X, %08X at %08X\n", chip, offset, data, mem_mask, space.device().safe_pc());
}
}
+
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void k001604_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<k001604_device &>(device).m_palette.set_tag(tag);
+}
diff --git a/src/mame/video/k001604.h b/src/mame/video/k001604.h
index 29525fb669c..119972a37a8 100644
--- a/src/mame/video/k001604.h
+++ b/src/mame/video/k001604.h
@@ -23,6 +23,7 @@ public:
// static configuration
static void static_set_gfxdecode_tag(device_t &device, const char *tag);
+ static void static_set_palette_tag(device_t &device, const char *tag);
void draw_back_layer( bitmap_rgb32 &bitmap, const rectangle &cliprect );
void draw_front_layer( screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect );
@@ -48,6 +49,7 @@ private:
UINT32 * m_char_ram;
UINT32 * m_reg;
required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
TILEMAP_MAPPER_MEMBER(scan_layer_8x8_0_size0);
TILEMAP_MAPPER_MEMBER(scan_layer_8x8_0_size1);
@@ -73,4 +75,7 @@ extern const device_type K001604;
#define MCFG_K001604_GFXDECODE(_gfxtag) \
k001604_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+#define MCFG_K001604_PALETTE(_palette_tag) \
+ k001604_device::static_set_palette_tag(*device, "^" _palette_tag);
+
#endif
diff --git a/src/mame/video/k007121.c b/src/mame/video/k007121.c
index 2089ab221f9..3050796cea8 100644
--- a/src/mame/video/k007121.c
+++ b/src/mame/video/k007121.c
@@ -118,7 +118,8 @@ const device_type K007121 = &device_creator<k007121_device>;
k007121_device::k007121_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, K007121, "Konami 007121", tag, owner, clock, "k007121", __FILE__),
- m_flipscreen(0)
+ m_flipscreen(0),
+ m_palette(*this)
{
}
@@ -223,13 +224,13 @@ WRITE8_MEMBER( k007121_device::ctrl_w )
*
*/
-void k007121_device::sprites_draw( bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx, colortable_t *ctable,
+void k007121_device::sprites_draw( bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx, palette_device *palette,
const UINT8 *source, int base_color, int global_x_offset, int bank_base, bitmap_ind8 &priority_bitmap, UINT32 pri_mask )
{
// gfx_element *gfx = gfxs[chip];
int flipscreen = m_flipscreen;
int i, num, inc, offs[5];
- int is_flakatck = (ctable == NULL);
+ int is_flakatck = (palette->indirect_entries() == 0);
if (is_flakatck)
{
@@ -290,7 +291,7 @@ void k007121_device::sprites_draw( bitmap_ind16 &bitmap, const rectangle &clipre
if (is_flakatck)
transparent_mask = 1 << 0;
else
- transparent_mask = colortable_get_transpen_mask(ctable, gfx, color, 0);
+ transparent_mask = palette->transpen_mask(*gfx, color, 0);
if (!is_flakatck || source[0x00]) /* Flak Attack needs this */
{
@@ -331,7 +332,7 @@ void k007121_device::sprites_draw( bitmap_ind16 &bitmap, const rectangle &clipre
}
if (pri_mask != -1)
- gfx->prio_transmask(bitmap,cliprect,
+ gfx->prio_transmask(m_palette,bitmap,cliprect,
number + x_offset[ex] + y_offset[ey],
color,
flipx,flipy,
@@ -339,7 +340,7 @@ void k007121_device::sprites_draw( bitmap_ind16 &bitmap, const rectangle &clipre
priority_bitmap,pri_mask,
transparent_mask);
else
- gfx->transmask(bitmap,cliprect,
+ gfx->transmask(m_palette,bitmap,cliprect,
number + x_offset[ex] + y_offset[ey],
color,
flipx,flipy,
@@ -352,3 +353,13 @@ void k007121_device::sprites_draw( bitmap_ind16 &bitmap, const rectangle &clipre
source += inc;
}
}
+
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void k007121_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<k007121_device &>(device).m_palette.set_tag(tag);
+}
diff --git a/src/mame/video/k007121.h b/src/mame/video/k007121.h
index 4b1833c5a73..52b49ab5ba8 100644
--- a/src/mame/video/k007121.h
+++ b/src/mame/video/k007121.h
@@ -8,12 +8,14 @@ public:
k007121_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
~k007121_device() {}
+ static void static_set_palette_tag(device_t &device, const char *tag);
+
DECLARE_READ8_MEMBER( ctrlram_r );
DECLARE_WRITE8_MEMBER( ctrl_w );
/* shall we move source in the interface? */
/* also notice that now we directly pass *gfx[chip] instead of **gfx !! */
- void sprites_draw( 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, bitmap_ind8 &priority_bitmap, UINT32 pri_mask );
+ void sprites_draw( bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx, palette_device *palette, const UINT8 *source, int base_color, int global_x_offset, int bank_base, bitmap_ind8 &priority_bitmap, UINT32 pri_mask );
protected:
// device-level overrides
@@ -25,6 +27,7 @@ private:
// internal state
UINT8 m_ctrlram[8];
int m_flipscreen;
+ required_device<palette_device> m_palette;
};
extern const device_type K007121;
@@ -32,4 +35,7 @@ extern const device_type K007121;
#define MCFG_K007121_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, K007121, 0)
+#define MCFG_K007121_PALETTE(_palette_tag) \
+ k007121_device::static_set_palette_tag(*device, "^" _palette_tag);
+
#endif
diff --git a/src/mame/video/k007420.c b/src/mame/video/k007420.c
index 7ff1f7ee205..d4471fa346c 100644
--- a/src/mame/video/k007420.c
+++ b/src/mame/video/k007420.c
@@ -19,7 +19,8 @@ const device_type K007420 = &device_creator<k007420_device>;
k007420_device::k007420_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, K007420, "Konami 007420", tag, owner, clock, "k007420", __FILE__),
m_ram(NULL),
- m_flipscreen(0)
+ m_flipscreen(0),
+ m_palette(*this)
//m_regs[8],
{
}
@@ -182,14 +183,14 @@ void k007420_device::sprites_draw( bitmap_ind16 &bitmap, const rectangle &clipre
else
c += bank;
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
c,
color,
flipx,flipy,
sx,sy,0);
if (m_regs[2] & 0x80)
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
c,
color,
flipx,flipy,
@@ -226,7 +227,7 @@ void k007420_device::sprites_draw( bitmap_ind16 &bitmap, const rectangle &clipre
else
c += bank;
- gfx->zoom_transpen(bitmap,cliprect,
+ gfx->zoom_transpen(m_palette,bitmap,cliprect,
c,
color,
flipx,flipy,
@@ -234,7 +235,7 @@ void k007420_device::sprites_draw( bitmap_ind16 &bitmap, const rectangle &clipre
(zw << 16) / 8,(zh << 16) / 8,0);
if (m_regs[2] & 0x80)
- gfx->zoom_transpen(bitmap,cliprect,
+ gfx->zoom_transpen(m_palette,bitmap,cliprect,
c,
color,
flipx,flipy,
@@ -259,3 +260,13 @@ void k007420_device::sprites_draw( bitmap_ind16 &bitmap, const rectangle &clipre
}
#endif
}
+
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void k007420_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<k007420_device &>(device).m_palette.set_tag(tag);
+}
diff --git a/src/mame/video/k007420.h b/src/mame/video/k007420.h
index c2dffbf9bd6..797652e0476 100644
--- a/src/mame/video/k007420.h
+++ b/src/mame/video/k007420.h
@@ -17,6 +17,8 @@ public:
k007420_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
~k007420_device() {}
+ static void static_set_palette_tag(device_t &device, const char *tag);
+
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
void sprites_draw(bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx);
@@ -32,6 +34,7 @@ private:
int m_flipscreen; // current code uses the 7342 flipscreen!!
UINT8 m_regs[8]; // current code uses the 7342 regs!! (only [2])
+ required_device<palette_device> m_palette;
};
extern const device_type K007420;
@@ -40,4 +43,7 @@ extern const device_type K007420;
MCFG_DEVICE_ADD(_tag, K007420, 0) \
MCFG_DEVICE_CONFIG(_interface)
+#define MCFG_K007420_PALETTE(_palette_tag) \
+ k007420_device::static_set_palette_tag(*device, "^" _palette_tag);
+
#endif
diff --git a/src/mame/video/k037122.c b/src/mame/video/k037122.c
index 799bda4a6d3..b81124ab3e8 100644
--- a/src/mame/video/k037122.c
+++ b/src/mame/video/k037122.c
@@ -20,7 +20,8 @@ k037122_device::k037122_device(const machine_config &mconfig, const char *tag, d
m_char_ram(NULL),
m_reg(NULL),
m_gfx_index(0),
- m_gfxdecode(*this)
+ m_gfxdecode(*this),
+ m_palette(*this)
{
}
@@ -35,6 +36,16 @@ void k037122_device::static_set_gfxdecode_tag(device_t &device, const char *tag)
}
//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void k037122_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<k037122_device &>(device).m_palette.set_tag(tag);
+}
+
+//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
@@ -61,7 +72,7 @@ void k037122_device::device_start()
m_layer[0]->set_transparent_pen(0);
m_layer[1]->set_transparent_pen(0);
- m_gfxdecode->set_gfx(m_gfx_index,auto_alloc_clear(machine(), gfx_element(machine(), k037122_char_layout, (UINT8*)m_char_ram, machine().total_colors() / 16, 0)));
+ m_gfxdecode->set_gfx(m_gfx_index,auto_alloc_clear(machine(), gfx_element(machine(), k037122_char_layout, (UINT8*)m_char_ram, m_palette->entries() / 16, 0)));
save_pointer(NAME(m_reg), 0x400 / 4);
save_pointer(NAME(m_char_ram), 0x200000 / 4);
@@ -137,7 +148,7 @@ void k037122_device::update_palette_color( UINT32 palette_base, int color )
{
UINT32 data = m_tile_ram[(palette_base / 4) + color];
- palette_set_color_rgb(machine(), color, pal5bit(data >> 6), pal6bit(data >> 0), pal5bit(data >> 11));
+ m_palette->set_pen_color(color, pal5bit(data >> 6), pal6bit(data >> 0), pal5bit(data >> 11));
}
READ32_MEMBER( k037122_device::sram_r )
diff --git a/src/mame/video/k037122.h b/src/mame/video/k037122.h
index 87035c139df..8d52ede79e2 100644
--- a/src/mame/video/k037122.h
+++ b/src/mame/video/k037122.h
@@ -11,6 +11,7 @@ public:
// static configuration
static void static_set_gfxdecode_tag(device_t &device, const char *tag);
+ static void static_set_palette_tag(device_t &device, const char *tag);
static void static_set_gfx_index(device_t &device, int index) { downcast<k037122_device &>(device).m_gfx_index = index; }
void tile_draw( screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect );
@@ -36,6 +37,7 @@ private:
int m_gfx_index;
required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
TILE_GET_INFO_MEMBER(tile_info_layer0);
TILE_GET_INFO_MEMBER(tile_info_layer1);
@@ -51,4 +53,8 @@ extern const device_type K037122;
#define MCFG_K037122_GFXDECODE(_gfxtag) \
k037122_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+
+#define MCFG_K037122_PALETTE(_palette_tag) \
+ k037122_device::static_set_palette_tag(*device, "^" _palette_tag);
+
#endif
diff --git a/src/mame/video/k051316.c b/src/mame/video/k051316.c
index 309870c04e8..138217a1336 100644
--- a/src/mame/video/k051316.c
+++ b/src/mame/video/k051316.c
@@ -50,7 +50,8 @@ k051316_device::k051316_device(const machine_config &mconfig, const char *tag, d
m_ram(NULL),
//m_tmap,
//m_ctrlram[16],
- m_gfxdecode(*this)
+ m_gfxdecode(*this),
+ m_palette(*this)
{
}
@@ -66,6 +67,16 @@ void k051316_device::static_set_gfxdecode_tag(device_t &device, const char *tag)
//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void k051316_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<k051316_device &>(device).m_palette.set_tag(tag);
+}
+
+//-------------------------------------------------
// device_config_complete - perform any
// operations now that the configuration is
// complete
@@ -160,22 +171,22 @@ void k051316_device::device_start()
case -4:
total = 0x400;
is_tail2nos = 1;
- konami_decode_gfx(machine(), m_gfxdecode, m_gfx_num, machine().root_device().memregion(m_gfx_memory_region_tag)->base(), total, &charlayout_tail2nos, 4);
+ konami_decode_gfx(machine(), m_gfxdecode, m_palette, m_gfx_num, machine().root_device().memregion(m_gfx_memory_region_tag)->base(), total, &charlayout_tail2nos, 4);
break;
case 4:
total = machine().root_device().memregion(m_gfx_memory_region_tag)->bytes() / 128;
- konami_decode_gfx(machine(), m_gfxdecode, m_gfx_num, machine().root_device().memregion(m_gfx_memory_region_tag)->base(), total, &charlayout4, 4);
+ konami_decode_gfx(machine(), m_gfxdecode, m_palette, m_gfx_num, machine().root_device().memregion(m_gfx_memory_region_tag)->base(), total, &charlayout4, 4);
break;
case 7:
total = machine().root_device().memregion(m_gfx_memory_region_tag)->bytes() / 256;
- konami_decode_gfx(machine(), m_gfxdecode, m_gfx_num, machine().root_device().memregion(m_gfx_memory_region_tag)->base(), total, &charlayout7, 7);
+ konami_decode_gfx(machine(), m_gfxdecode, m_palette, m_gfx_num, machine().root_device().memregion(m_gfx_memory_region_tag)->base(), total, &charlayout7, 7);
break;
case 8:
total = machine().root_device().memregion(m_gfx_memory_region_tag)->bytes() / 256;
- konami_decode_gfx(machine(), m_gfxdecode, m_gfx_num, machine().root_device().memregion(m_gfx_memory_region_tag)->base(), total, &charlayout8, 8);
+ konami_decode_gfx(machine(), m_gfxdecode, m_palette, m_gfx_num, machine().root_device().memregion(m_gfx_memory_region_tag)->base(), total, &charlayout8, 8);
break;
default:
diff --git a/src/mame/video/k051316.h b/src/mame/video/k051316.h
index 9c2d242699e..e43acdcad20 100644
--- a/src/mame/video/k051316.h
+++ b/src/mame/video/k051316.h
@@ -22,6 +22,7 @@ public:
// static configuration
static void static_set_gfxdecode_tag(device_t &device, const char *tag);
+ static void static_set_palette_tag(device_t &device, const char *tag);
/*
The callback is passed:
@@ -53,6 +54,7 @@ private:
tilemap_t *m_tmap;
UINT8 m_ctrlram[16];
required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
TILE_GET_INFO_MEMBER(get_tile_info0);
void get_tile_info( tile_data &tileinfo, int tile_index );
@@ -66,4 +68,7 @@ extern const device_type K051316;
#define MCFG_K051316_GFXDECODE(_gfxtag) \
k051316_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+
+#define MCFG_K051316_PALETTE(_palette_tag) \
+ k051316_device::static_set_palette_tag(*device, "^" _palette_tag);
#endif
diff --git a/src/mame/video/k051960.c b/src/mame/video/k051960.c
index 6b42e780d9a..13893c0bf73 100644
--- a/src/mame/video/k051960.c
+++ b/src/mame/video/k051960.c
@@ -76,7 +76,8 @@ k051960_device::k051960_device(const machine_config &mconfig, const char *tag, d
m_irq_enabled(0),
m_nmi_enabled(0),
m_k051937_counter(0),
- m_gfxdecode(*this)
+ m_gfxdecode(*this),
+ m_palette(*this)
{
}
@@ -92,6 +93,16 @@ void k051960_device::static_set_gfxdecode_tag(device_t &device, const char *tag)
//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void k051960_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<k051960_device &>(device).m_palette.set_tag(tag);
+}
+
+//-------------------------------------------------
// device_config_complete - perform any
// operations now that the configuration is
// complete
@@ -164,24 +175,24 @@ void k051960_device::device_start()
{
case NORMAL_PLANE_ORDER:
total = machine().root_device().memregion(m_gfx_memory_region)->bytes() / 128;
- konami_decode_gfx(machine(), m_gfxdecode, m_gfx_num, machine().root_device().memregion(m_gfx_memory_region)->base(), total, &spritelayout, 4);
+ konami_decode_gfx(machine(), m_gfxdecode, m_palette, m_gfx_num, machine().root_device().memregion(m_gfx_memory_region)->base(), total, &spritelayout, 4);
break;
case REVERSE_PLANE_ORDER:
total = machine().root_device().memregion(m_gfx_memory_region)->bytes() / 128;
- konami_decode_gfx(machine(), m_gfxdecode, m_gfx_num, machine().root_device().memregion(m_gfx_memory_region)->base(), total, &spritelayout_reverse, 4);
+ konami_decode_gfx(machine(), m_gfxdecode, m_palette, m_gfx_num, machine().root_device().memregion(m_gfx_memory_region)->base(), total, &spritelayout_reverse, 4);
break;
case GRADIUS3_PLANE_ORDER:
total = 0x4000;
- konami_decode_gfx(machine(), m_gfxdecode, m_gfx_num, machine().root_device().memregion(m_gfx_memory_region)->base(), total, &spritelayout_gradius3, 4);
+ konami_decode_gfx(machine(), m_gfxdecode, m_palette, m_gfx_num, machine().root_device().memregion(m_gfx_memory_region)->base(), total, &spritelayout_gradius3, 4);
break;
default:
fatalerror("Unknown plane_order\n");
}
- if (VERBOSE && !(machine().config().m_video_attributes & VIDEO_HAS_SHADOWS))
+ if (VERBOSE && !(m_palette->shadows_enabled()))
popmessage("driver should use VIDEO_HAS_SHADOWS");
/* deinterleave the graphics, if needed */
@@ -512,20 +523,20 @@ void k051960_device::k051960_sprites_draw( bitmap_ind16 &bitmap, const rectangle
c += yoffset[y];
if (max_priority == -1)
- m_gfx->prio_transtable(bitmap,cliprect,
+ m_gfx->prio_transtable(m_palette,bitmap,cliprect,
c,
color,
flipx,flipy,
sx & 0x1ff,sy,
priority_bitmap,pri,
- drawmode_table,machine().shadow_table);
+ drawmode_table,m_palette->shadow_table());
else
- m_gfx->transtable(bitmap,cliprect,
+ m_gfx->transtable(m_palette,bitmap,cliprect,
c,
color,
flipx,flipy,
sx & 0x1ff,sy,
- drawmode_table,machine().shadow_table);
+ drawmode_table,m_palette->shadow_table());
}
}
}
@@ -555,22 +566,22 @@ void k051960_device::k051960_sprites_draw( bitmap_ind16 &bitmap, const rectangle
c += yoffset[y];
if (max_priority == -1)
- m_gfx->prio_zoom_transtable(bitmap,cliprect,
+ m_gfx->prio_zoom_transtable(m_palette,bitmap,cliprect,
c,
color,
flipx,flipy,
sx & 0x1ff,sy,
(zw << 16) / 16,(zh << 16) / 16,
priority_bitmap,pri,
- drawmode_table,machine().shadow_table);
+ drawmode_table,m_palette->shadow_table());
else
- m_gfx->zoom_transtable(bitmap,cliprect,
+ m_gfx->zoom_transtable(m_palette,bitmap,cliprect,
c,
color,
flipx,flipy,
sx & 0x1ff,sy,
(zw << 16) / 16,(zh << 16) / 16,
- drawmode_table,machine().shadow_table);
+ drawmode_table,m_palette->shadow_table());
}
}
}
diff --git a/src/mame/video/k051960.h b/src/mame/video/k051960.h
index 4c15fd5edcb..df28f29da6e 100644
--- a/src/mame/video/k051960.h
+++ b/src/mame/video/k051960.h
@@ -22,7 +22,8 @@ public:
// static configuration
static void static_set_gfxdecode_tag(device_t &device, const char *tag);
-
+ static void static_set_palette_tag(device_t &device, const char *tag);
+
/*
The callback is passed:
- code (range 00-1FFF, output of the pins CA5-CA17)
@@ -71,6 +72,7 @@ private:
int m_k051937_counter;
required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
int k051960_fetchromdata( int byte );
};
@@ -84,4 +86,7 @@ extern const device_type K051960;
#define MCFG_K051960_GFXDECODE(_gfxtag) \
k051960_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+#define MCFG_K051960_PALETTE(_palette_tag) \
+ k051960_device::static_set_palette_tag(*device, "^" _palette_tag);
+
#endif
diff --git a/src/mame/video/k052109.c b/src/mame/video/k052109.c
index 044603199fc..63184b6aea4 100644
--- a/src/mame/video/k052109.c
+++ b/src/mame/video/k052109.c
@@ -152,7 +152,8 @@ k052109_device::k052109_device(const machine_config &mconfig, const char *tag, d
//m_dx[3], m_dy[3],
m_romsubbank(0),
m_scrollctrl(0),
- m_gfxdecode(*this)
+ m_gfxdecode(*this),
+ m_palette(*this)
{
}
@@ -166,6 +167,17 @@ void k052109_device::static_set_gfxdecode_tag(device_t &device, const char *tag)
downcast<k052109_device &>(device).m_gfxdecode.set_tag(tag);
}
+
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void k052109_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<k052109_device &>(device).m_palette.set_tag(tag);
+}
+
//-------------------------------------------------
// device_config_complete - perform any
// operations now that the configuration is
@@ -224,12 +236,12 @@ void k052109_device::device_start()
{
case NORMAL_PLANE_ORDER:
total = machine().root_device().memregion(m_gfx_memory_region)->bytes() / 32;
- konami_decode_gfx(machine(), m_gfxdecode, m_gfx_num, machine().root_device().memregion(m_gfx_memory_region)->base(), total, &charlayout, 4);
+ konami_decode_gfx(machine(), m_gfxdecode, m_palette, m_gfx_num, machine().root_device().memregion(m_gfx_memory_region)->base(), total, &charlayout, 4);
break;
case GRADIUS3_PLANE_ORDER:
total = 0x1000;
- konami_decode_gfx(machine(), m_gfxdecode, m_gfx_num, machine().root_device().memregion(m_gfx_memory_region)->base(), total, &charlayout_gradius3, 4);
+ konami_decode_gfx(machine(), m_gfxdecode, m_palette, m_gfx_num, machine().root_device().memregion(m_gfx_memory_region)->base(), total, &charlayout_gradius3, 4);
break;
default:
diff --git a/src/mame/video/k052109.h b/src/mame/video/k052109.h
index 386431cc5b9..84681a2b7d7 100644
--- a/src/mame/video/k052109.h
+++ b/src/mame/video/k052109.h
@@ -23,6 +23,7 @@ public:
// static configuration
static void static_set_gfxdecode_tag(device_t &device, const char *tag);
+ static void static_set_palette_tag(device_t &device, const char *tag);
/*
You don't have to decode the graphics: the vh_start() routines will do that
@@ -90,6 +91,7 @@ private:
INT32 m_dx[3], m_dy[3];
UINT8 m_romsubbank, m_scrollctrl;
required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
TILE_GET_INFO_MEMBER(get_tile_info0);
TILE_GET_INFO_MEMBER(get_tile_info1);
@@ -108,4 +110,7 @@ extern const device_type K052109;
#define MCFG_K052109_GFXDECODE(_gfxtag) \
k052109_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+#define MCFG_K052109_PALETTE(_palette_tag) \
+ k052109_device::static_set_palette_tag(*device, "^" _palette_tag);
+
#endif
diff --git a/src/mame/video/k053244_k053245.c b/src/mame/video/k053244_k053245.c
index 27187a36ee5..84414cce198 100644
--- a/src/mame/video/k053244_k053245.c
+++ b/src/mame/video/k053244_k053245.c
@@ -50,7 +50,8 @@ k05324x_device::k05324x_device(const machine_config &mconfig, const char *tag, d
m_rombank(0),
m_ramsize(0),
m_z_rejection(0),
- m_gfxdecode(*this)
+ m_gfxdecode(*this),
+ m_palette(*this)
{
}
@@ -64,6 +65,15 @@ void k05324x_device::static_set_gfxdecode_tag(device_t &device, const char *tag)
downcast<k05324x_device &>(device).m_gfxdecode.set_tag(tag);
}
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void k05324x_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<k05324x_device &>(device).m_palette.set_tag(tag);
+}
//-------------------------------------------------
// device_config_complete - perform any
@@ -116,14 +126,14 @@ void k05324x_device::device_start()
{
case NORMAL_PLANE_ORDER:
total = machine().root_device().memregion(m_gfx_memory_region)->bytes() / 128;
- konami_decode_gfx(machine(), m_gfxdecode, m_gfx_num, machine().root_device().memregion(m_gfx_memory_region)->base(), total, &spritelayout, 4);
+ konami_decode_gfx(machine(), m_gfxdecode, m_palette, m_gfx_num, machine().root_device().memregion(m_gfx_memory_region)->base(), total, &spritelayout, 4);
break;
default:
fatalerror("Unsupported plane_order\n");
}
- if (VERBOSE && !(machine().config().m_video_attributes & VIDEO_HAS_SHADOWS))
+ if (VERBOSE && !(m_palette->shadows_enabled()))
popmessage("driver should use VIDEO_HAS_SHADOWS");
/* deinterleave the graphics, if needed */
@@ -529,24 +539,24 @@ void k05324x_device::k053245_sprites_draw( bitmap_ind16 &bitmap, const rectangle
if (zoomx == 0x10000 && zoomy == 0x10000)
{
- m_gfx->prio_transtable(bitmap,cliprect,
+ m_gfx->prio_transtable(m_palette,bitmap,cliprect,
c,
color,
fx,fy,
sx,sy,
priority_bitmap,pri,
- drawmode_table,machine().shadow_table);
+ drawmode_table,m_palette->shadow_table());
}
else
{
- m_gfx->prio_zoom_transtable(bitmap,cliprect,
+ m_gfx->prio_zoom_transtable(m_palette,bitmap,cliprect,
c,
color,
fx,fy,
sx,sy,
(zw << 16) / 16,(zh << 16) / 16,
priority_bitmap,pri,
- drawmode_table,machine().shadow_table);
+ drawmode_table,m_palette->shadow_table());
}
}
@@ -777,24 +787,24 @@ void k05324x_device::k053245_sprites_draw_lethal( bitmap_ind16 &bitmap, const re
if (zoomx == 0x10000 && zoomy == 0x10000)
{
- m_gfxdecode->gfx(0)->prio_transtable(bitmap,cliprect, /* hardcoded to 0 (decoded 6bpp gfx) for le */
+ m_gfxdecode->gfx(0)->prio_transtable(m_palette,bitmap,cliprect, /* hardcoded to 0 (decoded 6bpp gfx) for le */
c,
color,
fx,fy,
sx,sy,
priority_bitmap,pri,
- drawmode_table,machine().shadow_table);
+ drawmode_table,m_palette->shadow_table());
}
else
{
- m_gfxdecode->gfx(0)->prio_zoom_transtable(bitmap,cliprect, /* hardcoded to 0 (decoded 6bpp gfx) for le */
+ m_gfxdecode->gfx(0)->prio_zoom_transtable(m_palette,bitmap,cliprect, /* hardcoded to 0 (decoded 6bpp gfx) for le */
c,
color,
fx,fy,
sx,sy,
(zw << 16) / 16,(zh << 16) / 16,
priority_bitmap,pri,
- drawmode_table,machine().shadow_table);
+ drawmode_table,m_palette->shadow_table());
}
}
diff --git a/src/mame/video/k053244_k053245.h b/src/mame/video/k053244_k053245.h
index fdbd69e75a9..3d9ef2d2ef8 100644
--- a/src/mame/video/k053244_k053245.h
+++ b/src/mame/video/k053244_k053245.h
@@ -31,6 +31,7 @@ public:
// static configuration
static void static_set_gfxdecode_tag(device_t &device, const char *tag);
+ static void static_set_palette_tag(device_t &device, const char *tag);
DECLARE_READ16_MEMBER( k053245_word_r );
DECLARE_WRITE16_MEMBER( k053245_word_w );
@@ -68,6 +69,7 @@ private:
int m_z_rejection;
required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
DECLARE_READ16_MEMBER( k053244_reg_word_r ); // OBJSET0 debug handler
};
@@ -87,6 +89,9 @@ extern const device_type K053244;
#define MCFG_K053244_GFXDECODE(_gfxtag) \
k05324x_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+#define MCFG_K053244_PALETTE(_palette_tag) \
+ k05324x_device::static_set_palette_tag(*device, "^" _palette_tag);
+
#define MCFG_K053245_ADD(_tag, _interface) \
MCFG_DEVICE_ADD(_tag, K053245, 0) \
MCFG_DEVICE_CONFIG(_interface)
@@ -94,5 +99,7 @@ extern const device_type K053244;
#define MCFG_K053245_GFXDECODE(_gfxtag) \
k05324x_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+#define MCFG_K053245_PALETTE(_palette_tag) \
+ k05324x_device::static_set_palette_tag(*device, "^" _palette_tag);
#endif
diff --git a/src/mame/video/k053246_k053247_k055673.c b/src/mame/video/k053246_k053247_k055673.c
index cf92777302d..d2068e15379 100644
--- a/src/mame/video/k053246_k053247_k055673.c
+++ b/src/mame/video/k053246_k053247_k055673.c
@@ -358,9 +358,9 @@ void k053247_device::k053247_sprites_draw_common( _BitmapClass &bitmap, const re
VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS
*/
- if (machine().config().m_video_attributes & VIDEO_HAS_SHADOWS)
+ if (m_palette->shadows_enabled())
{
- if (sizeof(typename _BitmapClass::pixel_t) == 4 && (machine().config().m_video_attributes & VIDEO_HAS_HIGHLIGHTS))
+ if (sizeof(typename _BitmapClass::pixel_t) == 4 && (m_palette->hilights_enabled()))
shdmask = 3; // enable all shadows and highlights
else
shdmask = 0; // enable default shadows
@@ -571,8 +571,8 @@ void k053247_device::zdrawgfxzoom32GP(
src_fh = 16;
src_base = m_gfx->get_data(code % m_gfx->elements());
- pal_base = m_gfx->machine().pens + m_gfx->colorbase() + (color % m_gfx->colors()) * granularity;
- shd_base = m_gfx->machine().shadow_table;
+ pal_base = m_palette->pens() + m_gfx->colorbase() + (color % m_gfx->colors()) * granularity;
+ shd_base = m_palette->shadow_table();
dst_ptr = &bitmap.pix32(0);
dst_pitch = bitmap.rowpixels();
@@ -998,7 +998,8 @@ const device_type K053246 = &device_creator<k053247_device>;
k053247_device::k053247_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, K053246, "Konami 053246 & 053247", tag, owner, clock, "k053247", __FILE__),
device_video_interface(mconfig, *this),
- m_gfxdecode(*this)
+ m_gfxdecode(*this),
+ m_palette(*this)
{
clear_all();
}
@@ -1006,7 +1007,8 @@ k053247_device::k053247_device(const machine_config &mconfig, const char *tag, d
k053247_device::k053247_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
: device_t(mconfig, type, name, tag, owner, clock, shortname, source),
device_video_interface(mconfig, *this),
- m_gfxdecode(*this)
+ m_gfxdecode(*this),
+ m_palette(*this)
{
clear_all();
}
@@ -1021,6 +1023,15 @@ void k053247_device::static_set_gfxdecode_tag(device_t &device, const char *tag)
downcast<k053247_device &>(device).m_gfxdecode.set_tag(tag);
}
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void k053247_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<k053247_device &>(device).m_palette.set_tag(tag);
+}
//-------------------------------------------------
// device_config_complete - perform any
@@ -1081,12 +1092,12 @@ void k053247_device::device_start()
{
case NORMAL_PLANE_ORDER:
total = machine().root_device().memregion(m_intf_gfx_memory_region)->bytes() / 128;
- konami_decode_gfx(machine(), m_gfxdecode, m_intf_gfx_num, machine().root_device().memregion(m_intf_gfx_memory_region)->base(), total, &spritelayout, 4);
+ konami_decode_gfx(machine(), m_gfxdecode, m_palette, m_intf_gfx_num, machine().root_device().memregion(m_intf_gfx_memory_region)->base(), total, &spritelayout, 4);
break;
case TASMAN_PLANE_ORDER:
total = machine().root_device().memregion(m_intf_gfx_memory_region)->bytes() / 128;
- konami_decode_gfx(machine(), m_gfxdecode, m_intf_gfx_num, machine().root_device().memregion(m_intf_gfx_memory_region)->base(), total, &tasman_16x16_layout, 4);
+ konami_decode_gfx(machine(), m_gfxdecode, m_palette, m_intf_gfx_num, machine().root_device().memregion(m_intf_gfx_memory_region)->base(), total, &tasman_16x16_layout, 4);
break;
default:
@@ -1097,12 +1108,12 @@ void k053247_device::device_start()
{
if (m_screen->format() == BITMAP_FORMAT_RGB32)
{
- if ((machine().config().m_video_attributes & (VIDEO_HAS_SHADOWS|VIDEO_HAS_HIGHLIGHTS)) != VIDEO_HAS_SHADOWS+VIDEO_HAS_HIGHLIGHTS)
+ if (!m_palette->shadows_enabled() || !m_palette->hilights_enabled())
popmessage("driver missing SHADOWS or HIGHLIGHTS flag");
}
else
{
- if (!(machine().config().m_video_attributes & VIDEO_HAS_SHADOWS))
+ if (!(m_palette->shadows_enabled()))
popmessage("driver should use VIDEO_HAS_SHADOWS");
}
}
@@ -1277,29 +1288,29 @@ void k053247_device::alt_k055673_vh_start(running_machine &machine, const char *
}
total = size4 / 128;
- konami_decode_gfx(machine, m_gfxdecode, gfx_index, (UINT8 *)alt_k055673_rom, total, &spritelayout, 5);
+ konami_decode_gfx(machine, m_gfxdecode, m_palette, gfx_index, (UINT8 *)alt_k055673_rom, total, &spritelayout, 5);
break;
case K055673_LAYOUT_RNG:
total = machine.root_device().memregion(gfx_memory_region)->bytes() / (16*16/2);
- konami_decode_gfx(machine, m_gfxdecode, gfx_index, (UINT8 *)alt_k055673_rom, total, &spritelayout2, 4);
+ konami_decode_gfx(machine, m_gfxdecode, m_palette, gfx_index, (UINT8 *)alt_k055673_rom, total, &spritelayout2, 4);
break;
case K055673_LAYOUT_LE2:
total = machine.root_device().memregion(gfx_memory_region)->bytes() / (16*16);
- konami_decode_gfx(machine, m_gfxdecode, gfx_index, (UINT8 *)alt_k055673_rom, total, &spritelayout3, 8);
+ konami_decode_gfx(machine, m_gfxdecode, m_palette, gfx_index, (UINT8 *)alt_k055673_rom, total, &spritelayout3, 8);
break;
case K055673_LAYOUT_GX6:
total = machine.root_device().memregion(gfx_memory_region)->bytes() / (16*16*6/8);
- konami_decode_gfx(machine, m_gfxdecode, gfx_index, (UINT8 *)alt_k055673_rom, total, &spritelayout4, 6);
+ konami_decode_gfx(machine, m_gfxdecode, m_palette, gfx_index, (UINT8 *)alt_k055673_rom, total, &spritelayout4, 6);
break;
default:
fatalerror("Unsupported layout\n");
}
- if (VERBOSE && !(machine.config().m_video_attributes & VIDEO_HAS_SHADOWS))
+ if (VERBOSE && !(m_palette->shadows_enabled()))
popmessage("driver should use VIDEO_HAS_SHADOWS");
m_dx = dx;
diff --git a/src/mame/video/k053246_k053247_k055673.h b/src/mame/video/k053246_k053247_k055673.h
index 7d712fdb00c..48f951b0edf 100644
--- a/src/mame/video/k053246_k053247_k055673.h
+++ b/src/mame/video/k053246_k053247_k055673.h
@@ -64,6 +64,7 @@ public:
// static configuration
static void static_set_gfxdecode_tag(device_t &device, const char *tag);
+ static void static_set_palette_tag(device_t &device, const char *tag);
void clear_all();
@@ -117,6 +118,7 @@ public:
const char *m_memory_region;
required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
/* alt implementation - to be collapsed */
void alt_k055673_vh_start(running_machine &machine, const char *gfx_memory_region, int alt_layout, int dx, int dy,
@@ -248,7 +250,7 @@ public:
if (gx_objzbuf && gx_shdzbuf) /* GX */
{
- k053247_draw_yxloop_gx( bitmap, cliprect,
+ k053247_draw_yxloop_gx(bitmap, cliprect,
code,
color,
height, width,
@@ -274,14 +276,14 @@ public:
color = 0;
shadow = -1;
whichtable = shadowmode_table;
- palette_set_shadow_mode(machine(), 0);
+ m_palette->set_shadow_mode(0);
}
else
{
if (shdmask >= 0)
{
shadow = (color & K053247_CUSTOMSHADOW) ? (color >> K053247_SHDSHIFT) : (shadow >> 10);
- if (shadow &= 3) palette_set_shadow_mode(machine(), (shadow - 1) & shdmask);
+ if (shadow &= 3) m_palette->set_shadow_mode((shadow - 1) & shdmask);
}
else
shadow = 0;
@@ -291,7 +293,7 @@ public:
drawmode_table[m_gfx->granularity() - 1] = shadow ? DRAWMODE_SHADOW : DRAWMODE_SOURCE;
- k053247_draw_yxloop_gx( bitmap, cliprect,
+ k053247_draw_yxloop_gx(bitmap, cliprect,
code,
color,
height, width,
@@ -313,7 +315,7 @@ public:
template<class _BitmapClass>
- void k053247_draw_yxloop_gx( _BitmapClass &bitmap, const rectangle &cliprect,
+ void k053247_draw_yxloop_gx(_BitmapClass &bitmap, const rectangle &cliprect,
int code,
int color,
int height, int width,
@@ -409,48 +411,48 @@ public:
{
if (nozoom)
{
- m_gfx->prio_transtable(bitmap,cliprect,
+ m_gfx->prio_transtable(m_palette,bitmap,cliprect,
tempcode,
color,
fx,fy,
sx,sy,
m_screen->priority(),primask,
- whichtable,machine().shadow_table);
+ whichtable,m_palette->shadow_table());
}
else
{
- m_gfx->prio_zoom_transtable(bitmap,cliprect,
+ m_gfx->prio_zoom_transtable(m_palette,bitmap,cliprect,
tempcode,
color,
fx,fy,
sx,sy,
(zw << 16) >> 4,(zh << 16) >> 4,
m_screen->priority(),primask,
- whichtable,machine().shadow_table);
+ whichtable,m_palette->shadow_table());
}
if (mirrory && height == 1) /* Simpsons shadows */
{
if (nozoom)
{
- m_gfx->prio_transtable(bitmap,cliprect,
+ m_gfx->prio_transtable(m_palette,bitmap,cliprect,
tempcode,
color,
fx,!fy,
sx,sy,
m_screen->priority(),primask,
- whichtable,machine().shadow_table);
+ whichtable,m_palette->shadow_table());
}
else
{
- m_gfx->prio_zoom_transtable(bitmap,cliprect,
+ m_gfx->prio_zoom_transtable(m_palette,bitmap,cliprect,
tempcode,
color,
fx,!fy,
sx,sy,
(zw << 16) >> 4,(zh << 16) >> 4,
m_screen->priority(),primask,
- whichtable,machine().shadow_table);
+ whichtable,m_palette->shadow_table());
}
}
}
@@ -505,6 +507,9 @@ extern const device_type K055673;
#define MCFG_K053246_GFXDECODE(_gfxtag) \
k053247_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+#define MCFG_K053246_PALETTE(_palette_tag) \
+ k053247_device::static_set_palette_tag(*device, "^" _palette_tag);
+
#define MCFG_K055673_ADD(_tag, _interface) \
MCFG_DEVICE_ADD(_tag, K055673, 0) \
@@ -518,6 +523,9 @@ extern const device_type K055673;
#define MCFG_K055673_GFXDECODE(_gfxtag) \
k055673_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+#define MCFG_K055673_PALETTE(_palette_tag) \
+ k055673_device::static_set_palette_tag(*device, "^" _palette_tag);
+
/* old non-device stuff */
diff --git a/src/mame/video/k053936.c b/src/mame/video/k053936.c
index b7c7d1d6382..7d0bb15a7e6 100644
--- a/src/mame/video/k053936.c
+++ b/src/mame/video/k053936.c
@@ -460,7 +460,7 @@ INLINE void K053936GP_copyroz32clip( running_machine &machine,
int tilebpp, int blend, int alpha, int clip, int pixeldouble_output )
{
static const int colormask[8]={1,3,7,0xf,0x1f,0x3f,0x7f,0xff};
-
+ driver_device *state = machine.driver_data<driver_device>();
int cy, cx;
int ecx;
int src_pitch, incxy, incxx;
@@ -506,7 +506,7 @@ INLINE void K053936GP_copyroz32clip( running_machine &machine,
ecx = tx = -tx;
tilebpp = (tilebpp-1) & 7;
- pal_base = machine.pens;
+ pal_base = state->m_palette->pens();
cmask = colormask[tilebpp];
src_pitch = src_bitmap.rowpixels();
diff --git a/src/mame/video/k054156_k054157_k056832.c b/src/mame/video/k054156_k054157_k056832.c
index c81ec1a0862..eb6c6b254af 100644
--- a/src/mame/video/k054156_k054157_k056832.c
+++ b/src/mame/video/k054156_k054157_k056832.c
@@ -214,7 +214,8 @@ k056832_device::k056832_device(const machine_config &mconfig, const char *tag, d
m_uses_tile_banks(0),
m_cur_tile_bank(0),
m_k055555(0),
- m_gfxdecode(*this)
+ m_gfxdecode(*this),
+ m_palette(*this)
{
}
@@ -230,6 +231,16 @@ void k056832_device::static_set_gfxdecode_tag(device_t &device, const char *tag)
//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void k056832_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<k056832_device &>(device).m_palette.set_tag(tag);
+}
+
+//-------------------------------------------------
// device_config_complete - perform any
// operations now that the configuration is
// complete
@@ -2126,37 +2137,37 @@ void k056832_device::create_gfx(running_machine &machine, const char *gfx_memory
{
case K056832_BPP_4:
total = machine.root_device().memregion(gfx_memory_region)->bytes() / (i*4);
- konami_decode_gfx(machine, m_gfxdecode, gfx_index, machine.root_device().memregion(gfx_memory_region)->base(), total, &charlayout4, 4);
+ konami_decode_gfx(machine, m_gfxdecode, m_palette, gfx_index, machine.root_device().memregion(gfx_memory_region)->base(), total, &charlayout4, 4);
break;
case K056832_BPP_5:
total = machine.root_device().memregion(gfx_memory_region)->bytes() / (i*5);
- konami_decode_gfx(machine, m_gfxdecode, gfx_index, machine.root_device().memregion(gfx_memory_region)->base(), total, &charlayout5, 5);
+ konami_decode_gfx(machine, m_gfxdecode, m_palette, gfx_index, machine.root_device().memregion(gfx_memory_region)->base(), total, &charlayout5, 5);
break;
case K056832_BPP_6:
total = machine.root_device().memregion(gfx_memory_region)->bytes() / (i*6);
- konami_decode_gfx(machine, m_gfxdecode, gfx_index, machine.root_device().memregion(gfx_memory_region)->base(), total, &charlayout6, 6);
+ konami_decode_gfx(machine, m_gfxdecode, m_palette, gfx_index, machine.root_device().memregion(gfx_memory_region)->base(), total, &charlayout6, 6);
break;
case K056832_BPP_8:
total = machine.root_device().memregion(gfx_memory_region)->bytes() / (i*8);
- konami_decode_gfx(machine, m_gfxdecode, gfx_index, machine.root_device().memregion(gfx_memory_region)->base(), total, &charlayout8, 8);
+ konami_decode_gfx(machine, m_gfxdecode, m_palette, gfx_index, machine.root_device().memregion(gfx_memory_region)->base(), total, &charlayout8, 8);
break;
case K056832_BPP_8LE:
total = machine.root_device().memregion(gfx_memory_region)->bytes() / (i*8);
- konami_decode_gfx(machine, m_gfxdecode, gfx_index, machine.root_device().memregion(gfx_memory_region)->base(), total, &charlayout8le, 8);
+ konami_decode_gfx(machine, m_gfxdecode, m_palette, gfx_index, machine.root_device().memregion(gfx_memory_region)->base(), total, &charlayout8le, 8);
break;
case K056832_BPP_8TASMAN:
total = machine.root_device().memregion(gfx_memory_region)->bytes() / (i*8);
- konami_decode_gfx(machine, m_gfxdecode, gfx_index, machine.root_device().memregion(gfx_memory_region)->base(), total, &charlayout8_tasman, 8);
+ konami_decode_gfx(machine, m_gfxdecode, m_palette, gfx_index, machine.root_device().memregion(gfx_memory_region)->base(), total, &charlayout8_tasman, 8);
break;
case K056832_BPP_4dj:
total = machine.root_device().memregion(gfx_memory_region)->bytes() / (i*4);
- konami_decode_gfx(machine, m_gfxdecode, gfx_index, machine.root_device().memregion(gfx_memory_region)->base(), total, &charlayout4dj, 4);
+ konami_decode_gfx(machine, m_gfxdecode, m_palette, gfx_index, machine.root_device().memregion(gfx_memory_region)->base(), total, &charlayout4dj, 4);
break;
default:
diff --git a/src/mame/video/k054156_k054157_k056832.h b/src/mame/video/k054156_k054157_k056832.h
index 8cf90f8b9fe..1729e4fa656 100644
--- a/src/mame/video/k054156_k054157_k056832.h
+++ b/src/mame/video/k054156_k054157_k056832.h
@@ -61,6 +61,7 @@ public:
// static configuration
static void static_set_gfxdecode_tag(device_t &device, const char *tag);
+ static void static_set_palette_tag(device_t &device, const char *tag);
void SetExtLinescroll(); /* Lethal Enforcers */
@@ -219,6 +220,7 @@ private:
void finalize_init(running_machine &machine);
required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
public:
// todo: collapse these into above
@@ -245,6 +247,8 @@ extern const device_type K056832;
#define MCFG_K056832_GFXDECODE(_gfxtag) \
k056832_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+#define MCFG_K056832_PALETTE(_palette_tag) \
+ k056832_device::static_set_palette_tag(*device, "^" _palette_tag);
#endif
diff --git a/src/mame/video/k054338.c b/src/mame/video/k054338.c
index 8df873bf770..eb08680c640 100644
--- a/src/mame/video/k054338.c
+++ b/src/mame/video/k054338.c
@@ -58,6 +58,7 @@ int K054338_read_register(int reg)
void K054338_update_all_shadows(running_machine &machine, int rushingheroes_hack)
{
+ driver_device *state = machine.driver_data<driver_device>();
int i, d;
int noclip = k54338_regs[K338_REG_CONTROL] & K338_CTL_CLIPSL;
@@ -70,15 +71,15 @@ void K054338_update_all_shadows(running_machine &machine, int rushingheroes_hack
if (!rushingheroes_hack)
{
- palette_set_shadow_dRGB32(machine, 0, K054338_shdRGB[0], K054338_shdRGB[1], K054338_shdRGB[2], noclip);
- palette_set_shadow_dRGB32(machine, 1, K054338_shdRGB[3], K054338_shdRGB[4], K054338_shdRGB[5], noclip);
- palette_set_shadow_dRGB32(machine, 2, K054338_shdRGB[6], K054338_shdRGB[7], K054338_shdRGB[8], noclip);
+ state->m_palette->set_shadow_dRGB32(0, K054338_shdRGB[0], K054338_shdRGB[1], K054338_shdRGB[2], noclip);
+ state->m_palette->set_shadow_dRGB32(1, K054338_shdRGB[3], K054338_shdRGB[4], K054338_shdRGB[5], noclip);
+ state->m_palette->set_shadow_dRGB32(2, K054338_shdRGB[6], K054338_shdRGB[7], K054338_shdRGB[8], noclip);
}
else // rushing heroes seems to specify shadows in another format, or it's not being interpreted properly.
{
- palette_set_shadow_dRGB32(machine, 0, -80, -80, -80, 0);
- palette_set_shadow_dRGB32(machine, 1, -80, -80, -80, 0);
- palette_set_shadow_dRGB32(machine, 2, -80, -80, -80, 0);
+ state->m_palette->set_shadow_dRGB32(0, -80, -80, -80, 0);
+ state->m_palette->set_shadow_dRGB32(1, -80, -80, -80, 0);
+ state->m_palette->set_shadow_dRGB32(2, -80, -80, -80, 0);
}
}
@@ -310,6 +311,7 @@ int k054338_device::register_r( int reg )
void k054338_device::update_all_shadows( int rushingheroes_hack )
{
+ driver_device *state = machine().driver_data<driver_device>();
int i, d;
int noclip = m_regs[K338_REG_CONTROL] & K338_CTL_CLIPSL;
@@ -323,15 +325,15 @@ void k054338_device::update_all_shadows( int rushingheroes_hack )
if (!rushingheroes_hack)
{
- palette_set_shadow_dRGB32(machine(), 0, m_shd_rgb[0], m_shd_rgb[1], m_shd_rgb[2], noclip);
- palette_set_shadow_dRGB32(machine(), 1, m_shd_rgb[3], m_shd_rgb[4], m_shd_rgb[5], noclip);
- palette_set_shadow_dRGB32(machine(), 2, m_shd_rgb[6], m_shd_rgb[7], m_shd_rgb[8], noclip);
+ state->m_palette->set_shadow_dRGB32(0, m_shd_rgb[0], m_shd_rgb[1], m_shd_rgb[2], noclip);
+ state->m_palette->set_shadow_dRGB32(1, m_shd_rgb[3], m_shd_rgb[4], m_shd_rgb[5], noclip);
+ state->m_palette->set_shadow_dRGB32(2, m_shd_rgb[6], m_shd_rgb[7], m_shd_rgb[8], noclip);
}
else // rushing heroes seems to specify shadows in another format, or it's not being interpreted properly.
{
- palette_set_shadow_dRGB32(machine(), 0, -80, -80, -80, 0);
- palette_set_shadow_dRGB32(machine(), 1, -80, -80, -80, 0);
- palette_set_shadow_dRGB32(machine(), 2, -80, -80, -80, 0);
+ state->m_palette->set_shadow_dRGB32(0, -80, -80, -80, 0);
+ state->m_palette->set_shadow_dRGB32(1, -80, -80, -80, 0);
+ state->m_palette->set_shadow_dRGB32(2, -80, -80, -80, 0);
}
}
diff --git a/src/mame/video/kan_panb.c b/src/mame/video/kan_panb.c
index 6913725d887..eb5bbc966fa 100644
--- a/src/mame/video/kan_panb.c
+++ b/src/mame/video/kan_panb.c
@@ -44,7 +44,7 @@ UINT32 snowbros_state::screen_update_honeydol(screen_device &screen, bitmap_ind1
sy = y;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
tile,
tilecolour,
flipx, flipy,
@@ -78,7 +78,7 @@ UINT32 snowbros_state::screen_update_honeydol(screen_device &screen, bitmap_ind1
tilecolour = (tilecolour&0x03f0) >> 4;
tilecolour ^=0x3f; // unusual, but correct..
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
tile,
tilecolour,
flipx, flipy,
@@ -133,7 +133,7 @@ UINT32 snowbros_state::screen_update_twinadv(screen_device &screen, bitmap_ind16
tilecolour = (tilecolour&0x00f0) >> 4;
tilecolour ^=0xf; // unusual, but correct..
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
tile,
tilecolour,
flipx, flipy,
@@ -148,7 +148,7 @@ UINT32 snowbros_state::screen_update_wintbob(screen_device &screen, bitmap_ind16
UINT16 *spriteram16 = m_bootleg_spriteram16;
int offs;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
for (offs = 0;offs < m_bootleg_spriteram16.bytes()/2;offs += 8)
{
@@ -175,7 +175,7 @@ UINT32 snowbros_state::screen_update_wintbob(screen_device &screen, bitmap_ind16
if ((xpos > -16) && (ypos > 0) && (xpos < 256) && (ypos < 240) && (disbl !=2))
{
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
tilen,
colr,
flipx, flipy,
@@ -215,7 +215,7 @@ UINT32 snowbros_state::screen_update_snowbro3(screen_device &screen, bitmap_ind1
/* This clears & redraws the entire screen each pass */
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
for (offs = 0;offs < m_bootleg_spriteram16.bytes()/2;offs += 8)
{
@@ -263,7 +263,7 @@ UINT32 snowbros_state::screen_update_snowbro3(screen_device &screen, bitmap_ind1
tilecolour = 0x10;
}
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
tile,
(tilecolour & 0xf0) >> 4,
flipx, flipy,
diff --git a/src/mame/video/kan_pand.c b/src/mame/video/kan_pand.c
index bbbab9b754c..545e66abddb 100644
--- a/src/mame/video/kan_pand.c
+++ b/src/mame/video/kan_pand.c
@@ -55,7 +55,8 @@ const device_type KANEKO_PANDORA = &device_creator<kaneko_pandora_device>;
kaneko_pandora_device::kaneko_pandora_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, KANEKO_PANDORA, "Kaneko Pandora - PX79C480FP-3", tag, owner, clock, "kaneko_pandora", __FILE__),
device_video_interface(mconfig, *this),
- m_gfxdecode(*this)
+ m_gfxdecode(*this),
+ m_palette(*this)
{
}
@@ -69,6 +70,15 @@ void kaneko_pandora_device::static_set_gfxdecode_tag(device_t &device, const cha
downcast<kaneko_pandora_device &>(device).m_gfxdecode.set_tag(tag);
}
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void kaneko_pandora_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<kaneko_pandora_device &>(device).m_palette.set_tag(tag);
+}
//-------------------------------------------------
// device_config_complete - perform any
@@ -223,7 +233,7 @@ void kaneko_pandora_device::draw( bitmap_ind16 &bitmap, const rectangle &cliprec
if (sy & 0x100)
sy -= 0x200;
- m_gfxdecode->gfx(m_gfx_region)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_gfx_region)->transpen(m_palette,bitmap,cliprect,
tile,
(tilecolour & 0xf0) >> 4,
flipx, flipy,
diff --git a/src/mame/video/kan_pand.h b/src/mame/video/kan_pand.h
index c9ab639f868..f8db5da5815 100644
--- a/src/mame/video/kan_pand.h
+++ b/src/mame/video/kan_pand.h
@@ -30,6 +30,7 @@ public:
// static configuration
static void static_set_gfxdecode_tag(device_t &device, const char *tag);
+ static void static_set_palette_tag(device_t &device, const char *tag);
DECLARE_WRITE8_MEMBER ( spriteram_w );
DECLARE_READ8_MEMBER( spriteram_r );
@@ -55,6 +56,7 @@ private:
int m_clear_bitmap;
int m_bg_pen; // might work some other way..
required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
};
extern const device_type KANEKO_PANDORA;
@@ -71,4 +73,7 @@ extern const device_type KANEKO_PANDORA;
#define MCFG_KANEKO_PANDORA_GFXDECODE(_gfxtag) \
kaneko_pandora_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+#define MCFG_KANEKO_PANDORA_PALETTE(_palette_tag) \
+ kaneko_pandora_device::static_set_palette_tag(*device, "^" _palette_tag);
+
#endif /* __KAN_PAND_H__ */
diff --git a/src/mame/video/kaneko16.c b/src/mame/video/kaneko16.c
index 0a3814cf7a1..1472fca8184 100644
--- a/src/mame/video/kaneko16.c
+++ b/src/mame/video/kaneko16.c
@@ -91,7 +91,7 @@ PALETTE_INIT_MEMBER(kaneko16_berlwall_state,berlwall)
/* initialize 555 RGB lookup */
for (i = 0; i < 32768; i++)
- palette_set_color_rgb(machine(),2048 + i,pal5bit(i >> 5),pal5bit(i >> 10),pal5bit(i >> 0));
+ palette.set_pen_color(2048 + i,pal5bit(i >> 5),pal5bit(i >> 10),pal5bit(i >> 0));
}
VIDEO_START_MEMBER(kaneko16_berlwall_state,berlwall)
diff --git a/src/mame/video/kaneko_grap2.c b/src/mame/video/kaneko_grap2.c
index ede2da8323b..d072bd4c3d1 100644
--- a/src/mame/video/kaneko_grap2.c
+++ b/src/mame/video/kaneko_grap2.c
@@ -15,7 +15,8 @@
const device_type KANEKO_GRAP2 = &device_creator<kaneko_grap2_device>;
kaneko_grap2_device::kaneko_grap2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : device_t(mconfig, KANEKO_GRAP2, "kaneko_grap2_device", tag, owner, clock, "kaneko_grap2", __FILE__)
+ : device_t(mconfig, KANEKO_GRAP2, "kaneko_grap2_device", tag, owner, clock, "kaneko_grap2", __FILE__),
+ m_palette(*this)
{
m_chipnum = 0;
}
@@ -27,6 +28,16 @@ void kaneko_grap2_device::set_chipnum(device_t &device, int chipnum)
dev.m_chipnum = chipnum;
}
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void kaneko_grap2_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<kaneko_grap2_device &>(device).m_palette.set_tag(tag);
+}
+
void kaneko_grap2_device::device_start()
{
@@ -153,7 +164,7 @@ WRITE16_MEMBER(kaneko_grap2_device::galpani3_regs1_go_w)
void kaneko_grap2_device::set_color_555_gp3(running_machine &machine, pen_t color, int rshift, int gshift, int bshift, UINT16 data)
{
- palette_set_color_rgb(machine, color, pal5bit(data >> rshift), pal5bit(data >> gshift), pal5bit(data >> bshift));
+ m_palette->set_pen_color(color, pal5bit(data >> rshift), pal5bit(data >> gshift), pal5bit(data >> bshift));
}
WRITE16_MEMBER(kaneko_grap2_device::galpani3_framebuffer1_palette_w)
diff --git a/src/mame/video/kaneko_grap2.h b/src/mame/video/kaneko_grap2.h
index e35682cfd6f..59e0c99438a 100644
--- a/src/mame/video/kaneko_grap2.h
+++ b/src/mame/video/kaneko_grap2.h
@@ -26,7 +26,7 @@ public:
int m_chipnum; // used to decide where we write the palette
static void set_chipnum(device_t &device, int chipnum);
-
+ static void static_set_palette_tag(device_t &device, const char *tag);
DECLARE_READ16_MEMBER(galpani3_regs1_r);
DECLARE_WRITE16_MEMBER(galpani3_regs1_go_w);
@@ -85,9 +85,11 @@ protected:
virtual void device_reset();
private:
-
-
+ required_device<palette_device> m_palette;
};
extern const device_type KANEKO_GRAP2;
+
+#define MCFG_KANEKO_GRAP2_PALETTE(_palette_tag) \
+ kaneko_grap2_device::static_set_palette_tag(*device, "^" _palette_tag);
diff --git a/src/mame/video/karnov.c b/src/mame/video/karnov.c
index c7f97884f1b..253086f5448 100644
--- a/src/mame/video/karnov.c
+++ b/src/mame/video/karnov.c
@@ -35,12 +35,12 @@
***************************************************************************/
-void karnov_state::palette_init()
+PALETTE_INIT_MEMBER(karnov_state, karnov)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, bit3, r, g, b;
@@ -54,13 +54,13 @@ void karnov_state::palette_init()
bit2 = (color_prom[0] >> 6) & 0x01;
bit3 = (color_prom[0] >> 7) & 0x01;
g = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- bit0 = (color_prom[machine().total_colors()] >> 0) & 0x01;
- bit1 = (color_prom[machine().total_colors()] >> 1) & 0x01;
- bit2 = (color_prom[machine().total_colors()] >> 2) & 0x01;
- bit3 = (color_prom[machine().total_colors()] >> 3) & 0x01;
+ bit0 = (color_prom[palette.entries()] >> 0) & 0x01;
+ bit1 = (color_prom[palette.entries()] >> 1) & 0x01;
+ bit2 = (color_prom[palette.entries()] >> 2) & 0x01;
+ bit3 = (color_prom[palette.entries()] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
color_prom++;
}
}
@@ -99,10 +99,10 @@ void karnov_state::draw_background( bitmap_ind16 &bitmap, const rectangle &clipr
color = tile >> 12;
tile = tile & 0x7ff;
if (m_flipscreen)
- m_gfxdecode->gfx(1)->opaque(*m_bitmap_f,m_bitmap_f->cliprect(),tile,
+ m_gfxdecode->gfx(1)->opaque(m_palette,*m_bitmap_f,m_bitmap_f->cliprect(),tile,
color, fx, fy, 496-16*mx,496-16*my);
else
- m_gfxdecode->gfx(1)->opaque(*m_bitmap_f,m_bitmap_f->cliprect(),tile,
+ m_gfxdecode->gfx(1)->opaque(m_palette,*m_bitmap_f,m_bitmap_f->cliprect(),tile,
color, fx, fy, 16*mx,16*my);
}
diff --git a/src/mame/video/kchamp.c b/src/mame/video/kchamp.c
index 818a9cf1ab1..9f36056f11b 100644
--- a/src/mame/video/kchamp.c
+++ b/src/mame/video/kchamp.c
@@ -10,18 +10,18 @@
#include "includes/kchamp.h"
-void kchamp_state::palette_init()
+PALETTE_INIT_MEMBER(kchamp_state, kchamp)
{
const UINT8 *color_prom = memregion("proms")->base();
int i, red, green, blue;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
red = color_prom[i];
- green = color_prom[machine().total_colors() + i];
- blue = color_prom[2 * machine().total_colors() + i];
+ green = color_prom[palette.entries() + i];
+ blue = color_prom[2 * palette.entries() + i];
- palette_set_color_rgb(machine(), i, pal4bit(red), pal4bit(green), pal4bit(blue));
+ palette.set_pen_color(i, pal4bit(red), pal4bit(green), pal4bit(blue));
}
}
@@ -89,7 +89,7 @@ void kchamp_state::kchamp_draw_sprites( bitmap_ind16 &bitmap, const rectangle &c
flipy = !flipy;
}
- m_gfxdecode->gfx(bank)->transpen(bitmap,cliprect, code, color, flipx, flipy, sx, sy, 0);
+ m_gfxdecode->gfx(bank)->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy, sx, sy, 0);
}
}
@@ -117,7 +117,7 @@ void kchamp_state::kchampvs_draw_sprites( bitmap_ind16 &bitmap, const rectangle
flipy = !flipy;
}
- m_gfxdecode->gfx(bank)->transpen(bitmap,cliprect, code, color, flipx, flipy, sx, sy, 0);
+ m_gfxdecode->gfx(bank)->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy, sx, sy, 0);
}
}
diff --git a/src/mame/video/kickgoal.c b/src/mame/video/kickgoal.c
index 25e143f3963..2cce0190639 100644
--- a/src/mame/video/kickgoal.c
+++ b/src/mame/video/kickgoal.c
@@ -106,7 +106,7 @@ void kickgoal_state::kickgoal_draw_sprites(bitmap_ind16 &bitmap,const rectangle
ypos = 0x110 - ypos;
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
tileno+m_sprbase,
0x30 + color,
flipx,0,
diff --git a/src/mame/video/kingobox.c b/src/mame/video/kingobox.c
index 99dc86773ba..2a1fa9737af 100644
--- a/src/mame/video/kingobox.c
+++ b/src/mame/video/kingobox.c
@@ -23,7 +23,7 @@
***************************************************************************/
-void kingofb_state::palette_init_common( const UINT8 *color_prom, void (kingofb_state::*get_rgb_data)(const UINT8 *, int, int *, int *, int *) )
+void kingofb_state::palette_init_common( palette_device &palette, const UINT8 *color_prom, void (kingofb_state::*get_rgb_data)(const UINT8 *, int, int *, int *, int *) )
{
static const int resistances[4] = { 1500, 750, 360, 180 };
static const int resistances_fg[1] = { 51 };
@@ -42,9 +42,6 @@ void kingofb_state::palette_init_common( const UINT8 *color_prom, void (kingofb_
4, resistances, gweights, 470, 0,
4, resistances, bweights, 470, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x108);
-
for (i = 0; i < 0x100; i++)
{
int r_data, g_data, b_data;
@@ -74,7 +71,7 @@ void kingofb_state::palette_init_common( const UINT8 *color_prom, void (kingofb_
bit3 = (b_data >> 3) & 0x01;
b = combine_4_weights(bweights, bit0, bit1, bit2, bit3);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* the foreground chars directly map to primary colors */
@@ -91,16 +88,16 @@ void kingofb_state::palette_init_common( const UINT8 *color_prom, void (kingofb_
/* blue component */
b = (((i - 0x100) >> 0) & 0x01) * bweights_fg[0];
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
for (i = 0; i < 0x100; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
for (i = 0x101; i < 0x110; i += 2)
{
UINT16 ctabentry = ((i - 0x101) >> 1) | 0x100;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -124,13 +121,13 @@ void kingofb_state::ringking_get_rgb_data( const UINT8 *color_prom, int i, int *
PALETTE_INIT_MEMBER(kingofb_state,kingofb)
{
const UINT8 *color_prom = memregion("proms")->base();
- palette_init_common(color_prom, &kingofb_state::kingofb_get_rgb_data);
+ palette_init_common(palette, color_prom, &kingofb_state::kingofb_get_rgb_data);
}
PALETTE_INIT_MEMBER(kingofb_state,ringking)
{
const UINT8 *color_prom = memregion("proms")->base();
- palette_init_common(color_prom, &kingofb_state::ringking_get_rgb_data);
+ palette_init_common(palette, color_prom, &kingofb_state::ringking_get_rgb_data);
}
WRITE8_MEMBER(kingofb_state::kingofb_videoram_w)
@@ -232,7 +229,7 @@ void kingofb_state::kingofb_draw_sprites(bitmap_ind16 &bitmap, const rectangle &
flipy = !flipy;
}
- m_gfxdecode->gfx(2 + bank)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2 + bank)->transpen(m_palette,bitmap,cliprect,
code, color,
flipx, flipy,
sx, sy, 0);
@@ -289,7 +286,7 @@ void kingofb_state::ringking_draw_sprites( bitmap_ind16 &bitmap, const rectangle
flipy = !flipy;
}
- m_gfxdecode->gfx(2 + bank)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2 + bank)->transpen(m_palette,bitmap,cliprect,
code, color,
flipx, flipy,
sx, sy, 0);
diff --git a/src/mame/video/kncljoe.c b/src/mame/video/kncljoe.c
index 3b6c85180b8..7a85aed69d6 100644
--- a/src/mame/video/kncljoe.c
+++ b/src/mame/video/kncljoe.c
@@ -14,14 +14,11 @@ Knuckle Joe - (c) 1985 Taito Corporation
***************************************************************************/
-void kncljoe_state::palette_init()
+PALETTE_INIT_MEMBER(kncljoe_state, kncljoe)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x90);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x80; i++)
{
@@ -29,7 +26,7 @@ void kncljoe_state::palette_init()
int g = pal4bit(color_prom[i + 0x100]);
int b = pal4bit(color_prom[i + 0x200]);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
for (i = 0x80; i < 0x90; i++)
@@ -55,7 +52,7 @@ void kncljoe_state::palette_init()
bit2 = (color_prom[(i - 0x80) + 0x300] >> 2) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -63,13 +60,13 @@ void kncljoe_state::palette_init()
/* chars */
for (i = 0; i < 0x80; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
/* sprite lookup table */
for (i = 0x80; i < 0x100; i++)
{
UINT8 ctabentry = (color_prom[i - 0x80] & 0x0f) | 0x80;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -225,7 +222,7 @@ void kncljoe_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
if (sx >= 256-8)
sx -= 256;
- gfx->transpen(bitmap,clip,
+ gfx->transpen(m_palette,bitmap,clip,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/konami_helper.c b/src/mame/video/konami_helper.c
index fb267c0711d..a6ad901a3cb 100644
--- a/src/mame/video/konami_helper.c
+++ b/src/mame/video/konami_helper.c
@@ -76,13 +76,13 @@ void konamid_rom_deinterleave_4(running_machine &machine, const char *mem_region
}
-void konami_decode_gfx(running_machine &machine, gfxdecode_device * gfxdecode, int gfx_index, UINT8 *data, UINT32 total, const gfx_layout *layout, int bpp)
+void konami_decode_gfx(running_machine &machine, gfxdecode_device * gfxdecode, palette_device &palette, int gfx_index, UINT8 *data, UINT32 total, const gfx_layout *layout, int bpp)
{
gfx_layout gl;
memcpy(&gl, layout, sizeof(gl));
gl.total = total;
- gfxdecode->set_gfx(gfx_index, auto_alloc(machine, gfx_element(machine, gl, data, machine.total_colors() >> bpp, 0)));
+ gfxdecode->set_gfx(gfx_index, auto_alloc(machine, gfx_element(machine, gl, data, palette.entries() >> bpp, 0)));
}
diff --git a/src/mame/video/konami_helper.h b/src/mame/video/konami_helper.h
index 4a411e4fc91..7e404fd3c7d 100644
--- a/src/mame/video/konami_helper.h
+++ b/src/mame/video/konami_helper.h
@@ -25,7 +25,7 @@ void konamid_rom_deinterleave_2_half(running_machine &machine, const char *mem_r
void konamid_rom_deinterleave_4(running_machine &machine, const char *mem_region);
-void konami_decode_gfx(running_machine &machine, gfxdecode_device * gfxdecode, int gfx_index, UINT8 *data, UINT32 total, const gfx_layout *layout, int bpp);
+void konami_decode_gfx(running_machine &machine, gfxdecode_device * gfxdecode, palette_device &palette, int gfx_index, UINT8 *data, UINT32 total, const gfx_layout *layout, int bpp);
void konami_deinterleave_gfx(running_machine &machine, const char *gfx_memory_region, int deinterleave);
/* helper function to sort three tile layers by priority order */
diff --git a/src/mame/video/konamigx.c b/src/mame/video/konamigx.c
index f395208e56e..878587940ad 100644
--- a/src/mame/video/konamigx.c
+++ b/src/mame/video/konamigx.c
@@ -35,7 +35,7 @@ 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);
+INLINE void set_color_555(palette_device &palette, pen_t color, int rshift, int gshift, int bshift, UINT16 data);
static int konamigx_palformat;
static bitmap_rgb32* dualscreen_left_tempbitmap;
static bitmap_rgb32* dualscreen_right_tempbitmap;
@@ -374,7 +374,7 @@ void konamigx_state::konamigx_mixer_init(screen_device &screen, int objdma)
else
m_k055673->k053247_get_ram(&gx_spriteram);
- palette_set_shadow_dRGB32(machine(), 3,-80,-80,-80, 0);
+ m_palette->set_shadow_dRGB32(3,-80,-80,-80, 0);
K054338_invert_alpha(1);
}
@@ -853,7 +853,7 @@ void konamigx_state::gx_draw_basic_extended_tilemaps_2(screen_device &screen, bi
int xx,yy;
int width = screen.width();
int height = screen.height();
- const pen_t *paldata = screen.machine().pens;
+ const pen_t *paldata = m_palette->pens();
// the output size of the roz layer has to be doubled horizontally
// so that it aligns with the sprites and normal tilemaps. This appears
@@ -925,7 +925,7 @@ void konamigx_state::konamigx_mixer_draw(screen_device &screen, bitmap_rgb32 &bi
}
color &= K055555_COLORMASK;
- if (drawmode >= 4) palette_set_shadow_mode(machine(), order & 0x0f);
+ if (drawmode >= 4) m_palette->set_shadow_mode(order & 0x0f);
if (!(mixerflags & GXMIX_NOZBUF))
{
@@ -936,7 +936,7 @@ void konamigx_state::konamigx_mixer_draw(screen_device &screen, bitmap_rgb32 &bi
- m_k055673->k053247_draw_single_sprite_gxcore( bitmap, cliprect,
+ m_k055673->k053247_draw_single_sprite_gxcore(bitmap, cliprect,
gx_objzbuf, gx_shdzbuf, code, gx_spriteram, offs,
color, alpha, drawmode, zcode, pri,
/* non-gx only */
@@ -1616,7 +1616,7 @@ UINT32 konamigx_state::screen_update_konamigx(screen_device &screen, bitmap_rgb3
/* Hack! draw type-1 roz layer here for testing purposes only */
if (gx_specialrozenable == 1)
{
- const pen_t *paldata = machine().pens;
+ const pen_t *paldata = m_palette->pens();
if ( machine().input().code_pressed(KEYCODE_W) )
{
@@ -1665,8 +1665,8 @@ UINT32 konamigx_state::screen_update_konamigx_left(screen_device &screen, bitmap
{
UINT32 coldat = m_generic_paletteram_32[offset];
- set_color_555(machine(), offset*2, 0, 5, 10,coldat >> 16);
- set_color_555(machine(), offset*2+1, 0, 5, 10,coldat & 0xffff);
+ set_color_555(m_palette, offset*2, 0, 5, 10,coldat >> 16);
+ set_color_555(m_palette, offset*2+1, 0, 5, 10,coldat & 0xffff);
}
}
else
@@ -1679,7 +1679,7 @@ UINT32 konamigx_state::screen_update_konamigx_left(screen_device &screen, bitmap
g = (m_generic_paletteram_32[offset] >> 8) & 0xff;
b = (m_generic_paletteram_32[offset] >> 0) & 0xff;
- palette_set_color(machine(),offset,rgb_t(r,g,b));
+ m_palette->set_pen_color(offset,rgb_t(r,g,b));
}
}
@@ -1710,8 +1710,8 @@ UINT32 konamigx_state::screen_update_konamigx_right(screen_device &screen, bitma
{
UINT32 coldat = m_subpaletteram32[offset];
- set_color_555(machine(), offset*2, 0, 5, 10,coldat >> 16);
- set_color_555(machine(), offset*2+1, 0, 5, 10,coldat & 0xffff);
+ set_color_555(m_palette, offset*2, 0, 5, 10,coldat >> 16);
+ set_color_555(m_palette, offset*2+1, 0, 5, 10,coldat & 0xffff);
}
}
else
@@ -1724,7 +1724,7 @@ UINT32 konamigx_state::screen_update_konamigx_right(screen_device &screen, bitma
g = (m_subpaletteram32[offset] >> 8) & 0xff;
b = (m_subpaletteram32[offset] >> 0) & 0xff;
- palette_set_color(machine(),offset,rgb_t(r,g,b));
+ m_palette->set_pen_color(offset,rgb_t(r,g,b));
}
}
@@ -1746,7 +1746,7 @@ WRITE32_MEMBER(konamigx_state::konamigx_palette_w)
g = (m_generic_paletteram_32[offset] >> 8) & 0xff;
b = (m_generic_paletteram_32[offset] >> 0) & 0xff;
- palette_set_color(machine(),offset,rgb_t(r,g,b));
+ m_palette->set_pen_color(offset,rgb_t(r,g,b));
}
#ifdef UNUSED_FUNCTION
@@ -1762,13 +1762,13 @@ WRITE32_MEMBER(konamigx_state::konamigx_palette2_w)
offset += (0x8000/4);
- palette_set_color(machine(),offset,rgb_t(r,g,b));
+ m_palette->set_pen_color(offset,rgb_t(r,g,b));
}
#endif
-INLINE void set_color_555(running_machine &machine, pen_t color, int rshift, int gshift, int bshift, UINT16 data)
+INLINE void set_color_555(palette_device &palette, pen_t color, int rshift, int gshift, int bshift, UINT16 data)
{
- palette_set_color_rgb(machine, color, pal5bit(data >> rshift), pal5bit(data >> gshift), pal5bit(data >> bshift));
+ palette.set_pen_color(color, pal5bit(data >> rshift), pal5bit(data >> gshift), pal5bit(data >> bshift));
}
#ifdef UNUSED_FUNCTION
@@ -1780,8 +1780,8 @@ WRITE32_MEMBER(konamigx_state::konamigx_555_palette_w)
coldat = m_generic_paletteram_32[offset];
- set_color_555(machine(), offset*2, 0, 5, 10,coldat >> 16);
- set_color_555(machine(), offset*2+1, 0, 5, 10,coldat & 0xffff);
+ set_color_555(m_palette, offset*2, 0, 5, 10,coldat >> 16);
+ set_color_555(m_palette, offset*2+1, 0, 5, 10,coldat & 0xffff);
}
// sub monitor for type 3
@@ -1793,8 +1793,8 @@ WRITE32_MEMBER(konamigx_state::konamigx_555_palette2_w)
offset += (0x4000/4);
- set_color_555(machine(), offset*2, 0, 5, 10,coldat >> 16);
- set_color_555(machine(), offset*2+1, 0, 5, 10,coldat & 0xffff);
+ set_color_555(m_palette, offset*2, 0, 5, 10,coldat >> 16);
+ set_color_555(m_palette, offset*2+1, 0, 5, 10,coldat & 0xffff);
}
#endif
diff --git a/src/mame/video/kopunch.c b/src/mame/video/kopunch.c
index 8ad72743aa4..41e697ddbb6 100644
--- a/src/mame/video/kopunch.c
+++ b/src/mame/video/kopunch.c
@@ -2,13 +2,13 @@
#include "includes/kopunch.h"
-void kopunch_state::palette_init()
+PALETTE_INIT_MEMBER(kopunch_state, kopunch)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
color_prom += 24; /* first 24 colors are black */
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -28,7 +28,7 @@ void kopunch_state::palette_init()
bit2 = (*color_prom >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
color_prom++;
}
}
diff --git a/src/mame/video/ksayakyu.c b/src/mame/video/ksayakyu.c
index b6fc906a862..8bd9e2e5bec 100644
--- a/src/mame/video/ksayakyu.c
+++ b/src/mame/video/ksayakyu.c
@@ -30,7 +30,7 @@ WRITE8_MEMBER(ksayakyu_state::ksayakyu_videoctrl_w)
m_tilemap->set_flip((data & 2) ? TILEMAP_FLIPX : 0);
}
-void ksayakyu_state::palette_init()
+PALETTE_INIT_MEMBER(ksayakyu_state, ksayakyu)
{
const UINT8 *prom = memregion("proms")->base();
int r, g, b, i;
@@ -41,7 +41,7 @@ void ksayakyu_state::palette_init()
g = (prom[i] & 0x38) >> 3;
b = (prom[i] & 0xc0) >> 6;
- palette_set_color_rgb(machine(), i, pal3bit(r), pal3bit(g), pal2bit(b));
+ palette.set_pen_color(i, pal3bit(r), pal3bit(g), pal2bit(b));
}
}
@@ -102,7 +102,7 @@ void ksayakyu_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
flipy ^= 1;
}
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
tile & 0x7f,
(attributes & 0x78) >> 3,
flipx,flipy,
diff --git a/src/mame/video/kyugo.c b/src/mame/video/kyugo.c
index 9f5effd75df..f1d56ce8aca 100644
--- a/src/mame/video/kyugo.c
+++ b/src/mame/video/kyugo.c
@@ -185,7 +185,7 @@ void kyugo_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
}
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/labyrunr.c b/src/mame/video/labyrunr.c
index cf4a0375d5d..f52e0a80e5b 100644
--- a/src/mame/video/labyrunr.c
+++ b/src/mame/video/labyrunr.c
@@ -2,14 +2,11 @@
#include "includes/labyrunr.h"
-void labyrunr_state::palette_init()
+PALETTE_INIT_MEMBER(labyrunr_state, labyrunr)
{
const UINT8 *color_prom = memregion("proms")->base();
int pal;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x80);
-
for (pal = 0; pal < 8; pal++)
{
/* chars, no lookup table */
@@ -18,7 +15,7 @@ void labyrunr_state::palette_init()
int i;
for (i = 0; i < 0x100; i++)
- colortable_entry_set_value(machine().colortable, (pal << 8) | i, (pal << 4) | (i & 0x0f));
+ palette.set_pen_indirect((pal << 8) | i, (pal << 4) | (i & 0x0f));
}
/* sprites */
else
@@ -34,7 +31,7 @@ void labyrunr_state::palette_init()
else
ctabentry = (pal << 4) | (color_prom[i] & 0x0f);
- colortable_entry_set_value(machine().colortable, (pal << 8) | i, ctabentry);
+ palette.set_pen_indirect((pal << 8) | i, ctabentry);
}
}
}
@@ -51,7 +48,7 @@ void labyrunr_state::set_pens( )
rgb_t color = rgb_t(pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
- colortable_palette_set_color(machine().colortable, i >> 1, color);
+ m_palette->set_indirect_color(i >> 1, color);
}
}
@@ -183,7 +180,7 @@ UINT32 labyrunr_state::screen_update_labyrunr(screen_device &screen, bitmap_ind1
set_pens();
screen.priority().fill(0, cliprect);
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
if (~m_k007121->ctrlram_r(space, 3) & 0x20)
{
@@ -208,7 +205,7 @@ UINT32 labyrunr_state::screen_update_labyrunr(screen_device &screen, bitmap_ind1
}
m_layer0->draw(screen, bitmap, finalclip0, TILEMAP_DRAW_OPAQUE, 0);
- m_k007121->sprites_draw(bitmap, cliprect, m_gfxdecode->gfx(0), machine().colortable, m_spriteram,(m_k007121->ctrlram_r(space, 6) & 0x30) * 2, 40,0,screen.priority(),(m_k007121->ctrlram_r(space, 3) & 0x40) >> 5);
+ m_k007121->sprites_draw(bitmap, cliprect, m_gfxdecode->gfx(0), m_palette, m_spriteram,(m_k007121->ctrlram_r(space, 6) & 0x30) * 2, 40,0,screen.priority(),(m_k007121->ctrlram_r(space, 3) & 0x40) >> 5);
/* we ignore the transparency because layer1 is drawn only at the top of the screen also covering sprites */
m_layer1->draw(screen, bitmap, finalclip1, TILEMAP_DRAW_OPAQUE, 0);
}
@@ -278,7 +275,7 @@ UINT32 labyrunr_state::screen_update_labyrunr(screen_device &screen, bitmap_ind1
if(use_clip3[1])
m_layer1->draw(screen, bitmap, finalclip3, 0, 1);
- m_k007121->sprites_draw(bitmap, cliprect, m_gfxdecode->gfx(0), machine().colortable, m_spriteram, (m_k007121->ctrlram_r(space, 6) & 0x30) * 2,40,0,screen.priority(),(m_k007121->ctrlram_r(space, 3) & 0x40) >> 5);
+ m_k007121->sprites_draw(bitmap, cliprect, m_gfxdecode->gfx(0), m_palette, m_spriteram, (m_k007121->ctrlram_r(space, 6) & 0x30) * 2,40,0,screen.priority(),(m_k007121->ctrlram_r(space, 3) & 0x40) >> 5);
}
return 0;
}
diff --git a/src/mame/video/ladybug.c b/src/mame/video/ladybug.c
index 647e62f5dca..58bdab6a9c8 100644
--- a/src/mame/video/ladybug.c
+++ b/src/mame/video/ladybug.c
@@ -29,7 +29,7 @@
***************************************************************************/
-static void palette_init_common( running_machine &machine, const UINT8 *color_prom, int colortable_size,
+static void palette_init_common( palette_device &palette, const UINT8 *color_prom, int colortable_size,
int r_bit0, int r_bit1, int g_bit0, int g_bit1, int b_bit0, int b_bit1 )
{
static const int resistances[2] = { 470, 220 };
@@ -42,9 +42,6 @@ static void palette_init_common( running_machine &machine, const UINT8 *color_pr
2, resistances, gweights, 470, 0,
2, resistances, bweights, 470, 0);
- /* allocate the colortable */
- machine.colortable = colortable_alloc(machine, colortable_size);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -66,7 +63,7 @@ static void palette_init_common( running_machine &machine, const UINT8 *color_pr
bit1 = (~color_prom[i] >> b_bit1) & 0x01;
b = combine_2_weights(bweights, bit0, bit1);
- colortable_palette_set_color(machine.colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -76,7 +73,7 @@ static void palette_init_common( running_machine &machine, const UINT8 *color_pr
for (i = 0; i < 0x20; i++)
{
UINT8 ctabentry = ((i << 3) & 0x18) | ((i >> 2) & 0x07);
- colortable_entry_set_value(machine.colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* sprites */
@@ -85,10 +82,10 @@ static void palette_init_common( running_machine &machine, const UINT8 *color_pr
UINT8 ctabentry = color_prom[(i - 0x20) >> 1];
ctabentry = BITSWAP8((color_prom[i - 0x20] >> 0) & 0x0f, 7,6,5,4,0,1,2,3);
- colortable_entry_set_value(machine.colortable, i + 0x00, ctabentry);
+ palette.set_pen_indirect(i + 0x00, ctabentry);
ctabentry = BITSWAP8((color_prom[i - 0x20] >> 4) & 0x0f, 7,6,5,4,0,1,2,3);
- colortable_entry_set_value(machine.colortable, i + 0x20, ctabentry);
+ palette.set_pen_indirect(i + 0x20, ctabentry);
}
}
@@ -96,7 +93,7 @@ static void palette_init_common( running_machine &machine, const UINT8 *color_pr
PALETTE_INIT_MEMBER(ladybug_state,ladybug)
{
const UINT8 *color_prom = memregion("proms")->base();
- palette_init_common(machine(), color_prom, 0x20, 0, 5, 2, 6, 4, 7);
+ palette_init_common(palette, color_prom, 0x20, 0, 5, 2, 6, 4, 7);
}
PALETTE_INIT_MEMBER(ladybug_state,sraider)
@@ -105,7 +102,7 @@ PALETTE_INIT_MEMBER(ladybug_state,sraider)
int i;
/* the resistor net may be probably different than Lady Bug */
- palette_init_common(machine(), color_prom, 0x41, 3, 0, 5, 4, 7, 6);
+ palette_init_common(palette, color_prom, 0x41, 3, 0, 5, 4, 7, 6);
/* star colors */
for (i = 0x20; i < 0x40; i++)
@@ -127,14 +124,14 @@ PALETTE_INIT_MEMBER(ladybug_state,sraider)
bit0 = ((i - 0x20) >> 0) & 0x01;
r = 0x47 * bit0;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
for (i = 0x60; i < 0x80; i++)
- colortable_entry_set_value(machine().colortable, i, (i - 0x60) + 0x20);
+ palette.set_pen_indirect(i, (i - 0x60) + 0x20);
/* stationary part of grid */
- colortable_entry_set_value(machine().colortable, 0x81, 0x40);
+ palette.set_pen_indirect(0x81, 0x40);
}
WRITE8_MEMBER(ladybug_state::ladybug_videoram_w)
@@ -256,14 +253,14 @@ void ladybug_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
if (spriteram[offs + i] & 0x80)
{
if (spriteram[offs + i] & 0x40) /* 16x16 */
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
(spriteram[offs + i + 1] >> 2) + 4 * (spriteram[offs + i + 2] & 0x10),
spriteram[offs + i + 2] & 0x0f,
spriteram[offs + i] & 0x20,spriteram[offs + i] & 0x10,
spriteram[offs + i + 3],
offs / 4 - 8 + (spriteram[offs + i] & 0x0f),0);
else /* 8x8 */
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
spriteram[offs + i + 1] + 16 * (spriteram[offs + i + 2] & 0x10),
spriteram[offs + i + 2] & 0x0f,
spriteram[offs + i] & 0x20,spriteram[offs + i] & 0x10,
@@ -333,7 +330,7 @@ UINT32 ladybug_state::screen_update_sraider(screen_device &screen, bitmap_ind16
redclash_draw_stars(bitmap, cliprect, 0x60, 1, 0x00, 0xd8);
// draw the gridlines
- colortable_palette_set_color(machine().colortable, 0x40, rgb_t(m_grid_color & 0x40 ? 0xff : 0,
+ m_palette->set_indirect_color(0x40, rgb_t(m_grid_color & 0x40 ? 0xff : 0,
m_grid_color & 0x20 ? 0xff : 0,
m_grid_color & 0x10 ? 0xff : 0));
m_grid_tilemap->draw(screen, bitmap, cliprect, 0, flip_screen());
diff --git a/src/mame/video/ladyfrog.c b/src/mame/video/ladyfrog.c
index 95f4cc57565..79a7a8659be 100644
--- a/src/mame/video/ladyfrog.c
+++ b/src/mame/video/ladyfrog.c
@@ -44,9 +44,9 @@ READ8_MEMBER(ladyfrog_state::ladyfrog_videoram_r)
WRITE8_MEMBER(ladyfrog_state::ladyfrog_palette_w)
{
if (offset & 0x100)
- paletteram_xxxxBBBBGGGGRRRR_byte_split_hi_w(space, (offset & 0xff) + (m_palette_bank << 8), data);
+ m_palette->write(space, (offset & 0xff) + (m_palette_bank << 8), data);
else
- paletteram_xxxxBBBBGGGGRRRR_byte_split_lo_w(space, (offset & 0xff) + (m_palette_bank << 8), data);
+ m_palette->write(space, (offset & 0xff) + (m_palette_bank << 8), data);
}
READ8_MEMBER(ladyfrog_state::ladyfrog_palette_r)
@@ -104,7 +104,7 @@ void ladyfrog_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
sy = 238 - m_spriteram[offs + 0];
flipx = ((m_spriteram[offs + 1] & 0x40)>>6);
flipy = ((m_spriteram[offs + 1] & 0x80)>>7);
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
pal,
flipx,flipy,
@@ -113,7 +113,7 @@ void ladyfrog_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
if (m_spriteram[offs + 3] > 240)
{
sx = (m_spriteram[offs + 3] - 256);
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
pal,
flipx,flipy,
diff --git a/src/mame/video/lasso.c b/src/mame/video/lasso.c
index 18a9fb4fc33..2112e91fe6d 100644
--- a/src/mame/video/lasso.c
+++ b/src/mame/video/lasso.c
@@ -64,13 +64,13 @@ rgb_t lasso_state::get_color( int data )
}
-void lasso_state::palette_init()
+PALETTE_INIT_MEMBER(lasso_state, lasso)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
for (i = 0; i < 0x40; i++)
- palette_set_color(machine(), i, get_color(color_prom[i]));
+ palette.set_pen_color(i, get_color(color_prom[i]));
}
@@ -79,15 +79,12 @@ PALETTE_INIT_MEMBER(lasso_state,wwjgtin)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x40);
-
for (i = 0; i < 0x40; i++)
- colortable_palette_set_color(machine().colortable, i, get_color(color_prom[i]));
+ palette.set_indirect_color(i, get_color(color_prom[i]));
/* characters/sprites */
for (i = 0; i < 0x40; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
/* track */
for (i = 0x40; i < 0x140; i++)
@@ -99,18 +96,18 @@ PALETTE_INIT_MEMBER(lasso_state,wwjgtin)
else
ctabentry = 0;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
-void lasso_state::wwjgtin_set_last_four_colors( colortable_t *colortable )
+void lasso_state::wwjgtin_set_last_four_colors()
{
int i;
/* the last palette entries can be changed */
for(i = 0; i < 3; i++)
- colortable_palette_set_color(colortable, 0x3d + i, get_color(m_last_colors[i]));
+ m_palette->set_indirect_color(0x3d + i, get_color(m_last_colors[i]));
}
@@ -301,7 +298,7 @@ void lasso_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect,
code = source[1] & 0x3f;
color = source[2] & 0x0f;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code | ((UINT16)m_gfxbank << 6),
color,
flipx, flipy,
@@ -354,7 +351,7 @@ void lasso_state::draw_lasso( bitmap_ind16 &bitmap, const rectangle &cliprect )
UINT32 lasso_state::screen_update_lasso(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- palette_set_color(machine(), 0, get_color(*m_back_color));
+ m_palette->set_pen_color(0, get_color(*m_back_color));
bitmap.fill(0, cliprect);
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
@@ -366,7 +363,7 @@ UINT32 lasso_state::screen_update_lasso(screen_device &screen, bitmap_ind16 &bit
UINT32 lasso_state::screen_update_chameleo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- palette_set_color(machine(), 0, get_color(*m_back_color));
+ m_palette->set_pen_color(0, get_color(*m_back_color));
bitmap.fill(0, cliprect);
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
@@ -378,8 +375,8 @@ UINT32 lasso_state::screen_update_chameleo(screen_device &screen, bitmap_ind16 &
UINT32 lasso_state::screen_update_wwjgtin(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- colortable_palette_set_color(machine().colortable, 0, get_color(*m_back_color));
- wwjgtin_set_last_four_colors(machine().colortable);
+ m_palette->set_indirect_color(0, get_color(*m_back_color));
+ wwjgtin_set_last_four_colors();
m_track_tilemap->set_scrollx(0, m_track_scroll[0] + m_track_scroll[1] * 256);
m_track_tilemap->set_scrolly(0, m_track_scroll[2] + m_track_scroll[3] * 256);
@@ -387,7 +384,7 @@ UINT32 lasso_state::screen_update_wwjgtin(screen_device &screen, bitmap_ind16 &b
if (m_track_enable)
m_track_tilemap->draw(screen, bitmap, cliprect, 0, 0);
else
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
draw_sprites(bitmap, cliprect, 1); // reverse order
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
diff --git a/src/mame/video/lastduel.c b/src/mame/video/lastduel.c
index 1ba7f64cd1e..8f420fb60f6 100644
--- a/src/mame/video/lastduel.c
+++ b/src/mame/video/lastduel.c
@@ -188,7 +188,7 @@ WRITE16_MEMBER(lastduel_state::lastduel_palette_word_w)
green = ((data >> 8) & 0x0f) * bright * 0x11 / 0x1f;
blue = ((data >> 4) & 0x0f) * bright * 0x11 / 0x1f;
- palette_set_color (machine(), offset, rgb_t(red, green, blue));
+ m_palette->set_pen_color (offset, rgb_t(red, green, blue));
}
/***************************************************************************
@@ -238,7 +238,7 @@ void lastduel_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
}
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/lazercmd.c b/src/mame/video/lazercmd.c
index f3a2f1e816c..1006ef8683a 100644
--- a/src/mame/video/lazercmd.c
+++ b/src/mame/video/lazercmd.c
@@ -67,7 +67,7 @@ UINT32 lazercmd_state::screen_update_lazercmd(screen_device &screen, bitmap_ind1
sx *= HORZ_CHR;
sy *= VERT_CHR;
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect,
m_videoram[i], video_inverted ? 1 : 0,
0,0,
sx,sy);
diff --git a/src/mame/video/legionna.c b/src/mame/video/legionna.c
index afe343dc206..385b0e066d2 100644
--- a/src/mame/video/legionna.c
+++ b/src/mame/video/legionna.c
@@ -359,7 +359,7 @@ void legionna_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,co
for (ax=0; ax<dx; ax++)
for (ay=0; ay<dy; ay++)
{
- m_gfxdecode->gfx(3)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->prio_transpen(m_palette,bitmap,cliprect,
sprite++,
color,fx,fy,(x+ax*16)+m_sprite_xoffs,y+ay*16+m_sprite_yoffs,
screen.priority(),pri_mask, 15);
@@ -370,7 +370,7 @@ void legionna_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,co
for (ax=0; ax<dx; ax++)
for (ay=0; ay<dy; ay++)
{
- m_gfxdecode->gfx(3)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->prio_transpen(m_palette,bitmap,cliprect,
sprite++,
color,fx,fy,(x+ax*16)+m_sprite_xoffs,y+(dy-ay-1)*16+m_sprite_yoffs,
screen.priority(),pri_mask,15);
@@ -384,7 +384,7 @@ void legionna_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,co
for (ax=0; ax<dx; ax++)
for (ay=0; ay<dy; ay++)
{
- m_gfxdecode->gfx(3)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->prio_transpen(m_palette,bitmap,cliprect,
sprite++,
color,fx,fy,(x+(dx-ax-1)*16)+m_sprite_xoffs,y+ay*16+m_sprite_yoffs,
screen.priority(),pri_mask,15);
@@ -395,7 +395,7 @@ void legionna_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,co
for (ax=0; ax<dx; ax++)
for (ay=0; ay<dy; ay++)
{
- m_gfxdecode->gfx(3)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->prio_transpen(m_palette,bitmap,cliprect,
sprite++,
color,fx,fy,(x+(dx-ax-1)*16)+m_sprite_xoffs,y+(dy-ay-1)*16+m_sprite_yoffs,
screen.priority(),pri_mask, 15);
@@ -420,7 +420,7 @@ UINT32 legionna_state::screen_update_legionna(screen_device &screen, bitmap_ind1
m_text_layer->set_scrolly(0, 0/*m_scrollram16[7]*/ );
screen.priority().fill(0, cliprect);
- bitmap.fill(get_black_pen(machine()), cliprect); /* wrong color? */
+ bitmap.fill(m_palette->black_pen(), cliprect); /* wrong color? */
/* m_layer_disable is a guess based on 'stage 1' screen in heatbrl */
@@ -476,7 +476,7 @@ UINT32 legionna_state::screen_update_grainbow(screen_device &screen, bitmap_ind1
m_text_layer->set_scrollx(0, 0/*m_scrollram16[6]*/ );
m_text_layer->set_scrolly(0, 0/*m_scrollram16[7]*/ );
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
screen.priority().fill(0, cliprect);
if(!(m_layer_disable & 1))
diff --git a/src/mame/video/leland.c b/src/mame/video/leland.c
index 980dd28a4d6..9aa8f017a8c 100644
--- a/src/mame/video/leland.c
+++ b/src/mame/video/leland.c
@@ -518,7 +518,8 @@ MACHINE_CONFIG_FRAGMENT( leland_video )
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_VIDEO_START_OVERRIDE(leland_state,leland)
- MCFG_PALETTE_LENGTH(1024)
+ MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT(BBGGGRRR)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_SIZE(40*8, 32*8)
@@ -529,6 +530,10 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_DERIVED( ataxx_video, leland_video )
MCFG_VIDEO_START_OVERRIDE(leland_state,ataxx)
+
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(leland_state, screen_update_ataxx)
+
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_FORMAT(xxxxRRRRGGGGBBBB)
MACHINE_CONFIG_END
diff --git a/src/mame/video/lemmings.c b/src/mame/video/lemmings.c
index 7dfd7887cdb..06ed014c555 100644
--- a/src/mame/video/lemmings.c
+++ b/src/mame/video/lemmings.c
@@ -110,7 +110,7 @@ WRITE16_MEMBER(lemmings_state::lemmings_vram_w)
void lemmings_state::lemmings_copy_bitmap(bitmap_rgb32& bitmap, bitmap_ind16& srcbitmap, int* xscroll, int* yscroll, const rectangle& cliprect)
{
int y,x;
- const pen_t *paldata = machine().pens;
+ const pen_t *paldata = m_palette->pens();
for (y=cliprect.min_y; y<cliprect.max_y;y++)
{
@@ -138,7 +138,7 @@ UINT32 lemmings_state::screen_update_lemmings(screen_device &screen, bitmap_rgb3
m_sprgen->draw_sprites(bitmap, cliprect, m_sprite_triple_buffer_1, 0x400, true);
m_sprgen2->draw_sprites(bitmap, cliprect, m_sprite_triple_buffer_0, 0x400, true);
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
m_sprgen->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0800, 0x0800, 0x300, 0xff);
/* Pixel layer can be windowed in hardware (two player mode) */
diff --git a/src/mame/video/liberate.c b/src/mame/video/liberate.c
index e8dea2a8371..910bd71f9dd 100644
--- a/src/mame/video/liberate.c
+++ b/src/mame/video/liberate.c
@@ -242,7 +242,7 @@ WRITE8_MEMBER(liberate_state::prosport_paletteram_w)
m_paletteram[offset] = data;
/* RGB output is inverted */
- palette_set_color_rgb(machine(), offset, pal3bit(~data >> 0), pal3bit(~data >> 3), pal2bit(~data >> 6));
+ m_palette->set_pen_color(offset, pal3bit(~data >> 0), pal3bit(~data >> 3), pal2bit(~data >> 6));
}
PALETTE_INIT_MEMBER(liberate_state,liberate)
@@ -271,9 +271,9 @@ PALETTE_INIT_MEMBER(liberate_state,liberate)
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
color_prom++;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
- palette_set_color(machine(),32,rgb_t(0,0,0)); /* Allocate black for when no background is displayed */
+ palette.set_pen_color(32,rgb_t(0,0,0)); /* Allocate black for when no background is displayed */
}
/***************************************************************************/
@@ -332,13 +332,13 @@ void liberate_state::liberate_draw_sprites( bitmap_ind16 &bitmap, const rectangl
sy2 = sy + 16;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
color,
fx,fy,
sx,sy,0);
if (multi)
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code+1,
color,
fx,fy,
@@ -396,13 +396,13 @@ void liberate_state::prosport_draw_sprites( bitmap_ind16 &bitmap, const rectangl
sy2 = sy + 16;
}
- m_gfxdecode->gfx(gfx_region)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(gfx_region)->transpen(m_palette,bitmap,cliprect,
code,
color,
fx,fy,
sx,sy,0);
if (multi)
- m_gfxdecode->gfx(gfx_region)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(gfx_region)->transpen(m_palette,bitmap,cliprect,
code2,
color,
fx,fy,
@@ -456,13 +456,13 @@ void liberate_state::boomrang_draw_sprites( bitmap_ind16 &bitmap, const rectangl
sy2 = sy + 16;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
color,
fx,fy,
sx,sy,0);
if (multi)
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code2,
color,
fx,fy,
@@ -486,7 +486,7 @@ void liberate_state::prosoccr_draw_sprites( bitmap_ind16 &bitmap, const rectangl
fx = spriteram[offs + 0] & 4;
fy = spriteram[offs + 0] & 2;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
0,
fx,fy,
@@ -546,7 +546,7 @@ UINT32 liberate_state::screen_update_prosport(screen_device &screen, bitmap_ind1
my = (offs) % 32;
mx = (offs) / 32;
- m_gfxdecode->gfx(gfx_region)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(gfx_region)->transpen(m_palette,bitmap,cliprect,
tile, 1, 0, 0, 248 - 8 * mx, 8 * my, 0);
}
diff --git a/src/mame/video/lkage.c b/src/mame/video/lkage.c
index 298e4225d8e..37aedf5bc67 100644
--- a/src/mame/video/lkage.c
+++ b/src/mame/video/lkage.c
@@ -148,7 +148,7 @@ void lkage_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, con
for (y = 0; y < height; y++)
{
- m_gfxdecode->gfx(1)->prio_transpen(
+ m_gfxdecode->gfx(1)->prio_transpen(m_palette,
bitmap,
cliprect,
sprite_number ^ y,
diff --git a/src/mame/video/lockon.c b/src/mame/video/lockon.c
index d3195da868c..512821b1933 100644
--- a/src/mame/video/lockon.c
+++ b/src/mame/video/lockon.c
@@ -96,7 +96,7 @@ static const res_net_info lockon_pd_net_info =
}
};
-void lockon_state::palette_init()
+PALETTE_INIT_MEMBER(lockon_state, lockon)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -120,7 +120,7 @@ void lockon_state::palette_init()
b = compute_res_net((p1 & 0x1f), 2, &lockon_pd_net_info);
}
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -645,8 +645,8 @@ WRITE16_MEMBER(lockon_state::lockon_fb_clut_w)
{
rgb_t color;
- color = palette_get_color(machine(), 0x300 + (data & 0xff));
- palette_set_color(machine(), 0x400 + offset, color);
+ color = m_palette->pen_color(0x300 + (data & 0xff));
+ m_palette->set_pen_color(0x400 + offset, color);
}
/* Rotation control register */
@@ -912,7 +912,7 @@ UINT32 lockon_state::screen_update_lockon(screen_device &screen, bitmap_ind16 &b
/* If screen output is disabled, fill with black */
if (!BIT(m_ctrl_reg, 7))
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
diff --git a/src/mame/video/lordgun.c b/src/mame/video/lordgun.c
index a875ef12ff1..cc9a164fc07 100644
--- a/src/mame/video/lordgun.c
+++ b/src/mame/video/lordgun.c
@@ -50,7 +50,7 @@ WRITE16_MEMBER(lordgun_state::lordgun_paletteram_w)
{
COMBINE_DATA(&m_generic_paletteram_16[offset]);
for (int pri = 0; pri < 8; pri++)
- palette_set_color_rgb(machine(), offset+0x800*pri, pal4bit(data >> 0), pal4bit(data >> 4), pal4bit(data >> 8));
+ m_palette->set_pen_color(offset+0x800*pri, pal4bit(data >> 0), pal4bit(data >> 4), pal4bit(data >> 8));
}
@@ -273,7 +273,7 @@ void lordgun_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
{
for (x = x0; x != x1; x += dx)
{
- m_gfxdecode->gfx(4)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(4)->transpen(m_palette,bitmap,cliprect,
code, color + pri * 0x800/0x40,
flipx, flipy,
sx + x * 0x10, sy + y * 0x10,
@@ -332,7 +332,7 @@ UINT32 lordgun_state::screen_update_lordgun(screen_device &screen, bitmap_ind16
if (m_whitescreen)
{
- bitmap.fill(get_white_pen(machine()), cliprect);
+ bitmap.fill(m_palette->white_pen(), cliprect);
return 0;
}
diff --git a/src/mame/video/lsasquad.c b/src/mame/video/lsasquad.c
index 4af72995986..34b0f071ba5 100644
--- a/src/mame/video/lsasquad.c
+++ b/src/mame/video/lsasquad.c
@@ -32,13 +32,13 @@ void lsasquad_state::draw_layer( bitmap_ind16 &bitmap, const rectangle &cliprect
code = m_videoram[base + 2 * y] + ((attr & 0x0f) << 8);
color = attr >> 4;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
color,
flip_screen(),flip_screen(),
sx,sy,15);
if (sx > 248) /* wraparound */
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
color,
flip_screen(),flip_screen(),
@@ -119,13 +119,13 @@ int lsasquad_state::draw_layer_daikaiju( bitmap_ind16 &bitmap, const rectangle &
if ((type == 0 && color != 0x0d) || (type != 0 && color == 0x0d))
{
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
color,
flip_screen(),flip_screen(),
sx,sy,15);
if (sx > 248) /* wraparound */
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
color,
flip_screen(),flip_screen(),
@@ -180,13 +180,13 @@ void lsasquad_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
sx,sy,15);
/* wraparound */
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/lucky74.c b/src/mame/video/lucky74.c
index 837c247a353..4e2c759c104 100644
--- a/src/mame/video/lucky74.c
+++ b/src/mame/video/lucky74.c
@@ -123,7 +123,7 @@ WRITE8_MEMBER(lucky74_state::lucky74_bg_colorram_w)
}
-void lucky74_state::palette_init()
+PALETTE_INIT_MEMBER(lucky74_state, lucky74)
/*
There are 2 states (see the technical notes).
We're constructing a double-sized palette with one half for each state.
@@ -188,10 +188,10 @@ void lucky74_state::palette_init()
/* PROMs circuitry, 1st state */
- palette_set_color(machine(), i, rgb_t(r1, g1, b1));
+ palette.set_pen_color(i, rgb_t(r1, g1, b1));
/* PROMs circuitry, 2nd state */
- palette_set_color(machine(), i + 256, rgb_t(r2, g2, b2));
+ palette.set_pen_color(i + 256, rgb_t(r2, g2, b2));
}
}
diff --git a/src/mame/video/lvcards.c b/src/mame/video/lvcards.c
index 4c072dff31c..362d1ad2ccc 100644
--- a/src/mame/video/lvcards.c
+++ b/src/mame/video/lvcards.c
@@ -15,7 +15,7 @@ PALETTE_INIT_MEMBER(lvcards_state,ponttehk)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for ( i = 0; i < machine().total_colors(); i++ )
+ for ( i = 0; i < palette.entries(); i++ )
{
int bit0,bit1,bit2,bit3,r,g,b;
@@ -27,31 +27,31 @@ PALETTE_INIT_MEMBER(lvcards_state,ponttehk)
r = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
/* green component */
- bit0 = (color_prom[machine().total_colors()] >> 0) & 0x01;
- bit1 = (color_prom[machine().total_colors()] >> 1) & 0x01;
- bit2 = (color_prom[machine().total_colors()] >> 2) & 0x01;
- bit3 = (color_prom[machine().total_colors()] >> 3) & 0x01;
+ bit0 = (color_prom[palette.entries()] >> 0) & 0x01;
+ bit1 = (color_prom[palette.entries()] >> 1) & 0x01;
+ bit2 = (color_prom[palette.entries()] >> 2) & 0x01;
+ bit3 = (color_prom[palette.entries()] >> 3) & 0x01;
g = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
/* blue component */
- bit0 = (color_prom[2*machine().total_colors()] >> 0) & 0x01;
- bit1 = (color_prom[2*machine().total_colors()] >> 1) & 0x01;
- bit2 = (color_prom[2*machine().total_colors()] >> 2) & 0x01;
- bit3 = (color_prom[2*machine().total_colors()] >> 3) & 0x01;
+ bit0 = (color_prom[2*palette.entries()] >> 0) & 0x01;
+ bit1 = (color_prom[2*palette.entries()] >> 1) & 0x01;
+ bit2 = (color_prom[2*palette.entries()] >> 2) & 0x01;
+ bit3 = (color_prom[2*palette.entries()] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
color_prom++;
}
}
-void lvcards_state::palette_init()//Ever so slightly different, but different enough.
+PALETTE_INIT_MEMBER(lvcards_state, lvcards)//Ever so slightly different, but different enough.
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for ( i = 0; i < machine().total_colors(); i++ )
+ for ( i = 0; i < palette.entries(); i++ )
{
int bit0,bit1,bit2,bit3,r,g,b;
@@ -63,20 +63,20 @@ void lvcards_state::palette_init()//Ever so slightly different, but different en
r = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
/* green component */
- bit0 = (color_prom[machine().total_colors()] >> 0) & 0x11;
- bit1 = (color_prom[machine().total_colors()] >> 1) & 0x11;
- bit2 = (color_prom[machine().total_colors()] >> 2) & 0x11;
- bit3 = (color_prom[machine().total_colors()] >> 3) & 0x11;
+ bit0 = (color_prom[palette.entries()] >> 0) & 0x11;
+ bit1 = (color_prom[palette.entries()] >> 1) & 0x11;
+ bit2 = (color_prom[palette.entries()] >> 2) & 0x11;
+ bit3 = (color_prom[palette.entries()] >> 3) & 0x11;
g = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
/* blue component */
- bit0 = (color_prom[2*machine().total_colors()] >> 0) & 0x11;
- bit1 = (color_prom[2*machine().total_colors()] >> 1) & 0x11;
- bit2 = (color_prom[2*machine().total_colors()] >> 2) & 0x11;
- bit3 = (color_prom[2*machine().total_colors()] >> 3) & 0x11;
+ bit0 = (color_prom[2*palette.entries()] >> 0) & 0x11;
+ bit1 = (color_prom[2*palette.entries()] >> 1) & 0x11;
+ bit2 = (color_prom[2*palette.entries()] >> 2) & 0x11;
+ bit3 = (color_prom[2*palette.entries()] >> 3) & 0x11;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
color_prom++;
}
diff --git a/src/mame/video/lwings.c b/src/mame/video/lwings.c
index 89d3ae353c0..cf294ec41cc 100644
--- a/src/mame/video/lwings.c
+++ b/src/mame/video/lwings.c
@@ -195,7 +195,7 @@ void lwings_state::lwings_draw_sprites( bitmap_ind16 &bitmap, const rectangle &c
flipy = !flipy;
}
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code,color,
flipx,flipy,
sx,sy,15);
@@ -243,7 +243,7 @@ void lwings_state::trojan_draw_sprites( bitmap_ind16 &bitmap, const rectangle &c
flipy = !flipy;
}
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code,color,
flipx,flipy,
sx,sy,15);
diff --git a/src/mame/video/m10.c b/src/mame/video/m10.c
index 5ca077bffa8..d2de47ca4f2 100644
--- a/src/mame/video/m10.c
+++ b/src/mame/video/m10.c
@@ -130,9 +130,9 @@ UINT32 m10_state::screen_update_m10(screen_device &screen, bitmap_ind16 &bitmap,
for (i = 0; i < 4; i++)
if (m_flip)
- m_back_gfx->opaque(bitmap,cliprect, i, color[i], 1, 1, 31 * 8 - xpos[i], 0);
+ m_back_gfx->opaque(m_palette,bitmap,cliprect, i, color[i], 1, 1, 31 * 8 - xpos[i], 0);
else
- m_back_gfx->opaque(bitmap,cliprect, i, color[i], 0, 0, xpos[i], 0);
+ m_back_gfx->opaque(m_palette,bitmap,cliprect, i, color[i], 0, 0, xpos[i], 0);
if (m_bottomline)
{
diff --git a/src/mame/video/m107.c b/src/mame/video/m107.c
index 289d2f5bdb6..8a7a19025a4 100644
--- a/src/mame/video/m107.c
+++ b/src/mame/video/m107.c
@@ -184,7 +184,7 @@ void m107_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const
for (i=0; i<y_multi; i++)
{
- m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->prio_transpen(m_palette,bitmap,cliprect,
sprite + s_ptr,
colour,
fx,fy,
@@ -192,7 +192,7 @@ void m107_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const
screen.priority(),pri_mask,0);
/* wrap-around y */
- m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->prio_transpen(m_palette,bitmap,cliprect,
sprite + s_ptr,
colour,
fx,fy,
@@ -241,7 +241,7 @@ void m107_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const
if (!ffy) sprite+=y_multi-1;
for (i=0; i<y_multi; i++)
{
- m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->prio_transpen(m_palette,bitmap,cliprect,
sprite+(ffy?i:-i),
colour,
ffx,ffy,
@@ -249,7 +249,7 @@ void m107_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const
screen.priority(),pri_mask,0);
/* wrap-around y */
- m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->prio_transpen(m_palette,bitmap,cliprect,
sprite+(ffy?i:-i),
colour,
ffx,ffy,
diff --git a/src/mame/video/m52.c b/src/mame/video/m52.c
index 7e23a3a4557..eed176ec8bc 100644
--- a/src/mame/video/m52.c
+++ b/src/mame/video/m52.c
@@ -17,7 +17,7 @@
*
*************************************/
-void m52_state::palette_init()
+PALETTE_INIT_MEMBER(m52_state, m52)
{
const UINT8 *color_prom = memregion("proms")->base();
const UINT8 *char_pal = color_prom + 0x000;
@@ -29,8 +29,6 @@ void m52_state::palette_init()
double weights_r[3], weights_g[3], weights_b[3], scale;
int i;
- machine().colortable = colortable_alloc(machine(), 512 + 32 + 32);
-
/* compute palette information for characters/backgrounds */
scale = compute_resistor_weights(0, 255, -1.0,
3, resistances_3, weights_r, 0, 0,
@@ -45,7 +43,7 @@ void m52_state::palette_init()
int g = combine_3_weights(weights_g, BIT(promval,3), BIT(promval,4), BIT(promval,5));
int b = combine_2_weights(weights_b, BIT(promval,6), BIT(promval,7));
- colortable_palette_set_color(machine().colortable, i, rgb_t(r,g,b));
+ palette.set_indirect_color(i, rgb_t(r,g,b));
}
/* background palette */
@@ -56,7 +54,7 @@ void m52_state::palette_init()
int g = combine_3_weights(weights_g, BIT(promval,3), BIT(promval,4), BIT(promval,5));
int b = combine_2_weights(weights_b, BIT(promval,6), BIT(promval,7));
- colortable_palette_set_color(machine().colortable, 512+i, rgb_t(r,g,b));
+ palette.set_indirect_color(512+i, rgb_t(r,g,b));
}
/* compute palette information for sprites */
@@ -73,18 +71,18 @@ void m52_state::palette_init()
int g = combine_3_weights(weights_g, BIT(promval,3), BIT(promval,4), BIT(promval,5));
int b = combine_3_weights(weights_b, BIT(promval,0), BIT(promval,1), BIT(promval,2));
- colortable_palette_set_color(machine().colortable, 512 + 32 + i, rgb_t(r,g,b));
+ palette.set_indirect_color(512 + 32 + i, rgb_t(r,g,b));
}
/* character lookup table */
for (i = 0; i < 512; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
/* sprite lookup table */
for (i = 0; i < 16 * 4; i++)
{
UINT8 promval = sprite_table[(i & 3) | ((i & ~3) << 1)];
- colortable_entry_set_value(machine().colortable, 512 + i, 512 + 32 + promval);
+ palette.set_pen_indirect(512 + i, 512 + 32 + promval);
}
/* background */
@@ -93,18 +91,18 @@ void m52_state::palette_init()
/* xbb00: mountains */
/* 0xxbb: hills */
/* 1xxbb: city */
- colortable_entry_set_value(machine().colortable, 512+16*4+0*4+0, 512);
- colortable_entry_set_value(machine().colortable, 512+16*4+0*4+1, 512+4);
- colortable_entry_set_value(machine().colortable, 512+16*4+0*4+2, 512+8);
- colortable_entry_set_value(machine().colortable, 512+16*4+0*4+3, 512+12);
- colortable_entry_set_value(machine().colortable, 512+16*4+1*4+0, 512);
- colortable_entry_set_value(machine().colortable, 512+16*4+1*4+1, 512+1);
- colortable_entry_set_value(machine().colortable, 512+16*4+1*4+2, 512+2);
- colortable_entry_set_value(machine().colortable, 512+16*4+1*4+3, 512+3);
- colortable_entry_set_value(machine().colortable, 512+16*4+2*4+0, 512);
- colortable_entry_set_value(machine().colortable, 512+16*4+2*4+1, 512+16+1);
- colortable_entry_set_value(machine().colortable, 512+16*4+2*4+2, 512+16+2);
- colortable_entry_set_value(machine().colortable, 512+16*4+2*4+3, 512+16+3);
+ palette.set_pen_indirect(512+16*4+0*4+0, 512);
+ palette.set_pen_indirect(512+16*4+0*4+1, 512+4);
+ palette.set_pen_indirect(512+16*4+0*4+2, 512+8);
+ palette.set_pen_indirect(512+16*4+0*4+3, 512+12);
+ palette.set_pen_indirect(512+16*4+1*4+0, 512);
+ palette.set_pen_indirect(512+16*4+1*4+1, 512+1);
+ palette.set_pen_indirect(512+16*4+1*4+2, 512+2);
+ palette.set_pen_indirect(512+16*4+1*4+3, 512+3);
+ palette.set_pen_indirect(512+16*4+2*4+0, 512);
+ palette.set_pen_indirect(512+16*4+2*4+1, 512+16+1);
+ palette.set_pen_indirect(512+16*4+2*4+2, 512+16+2);
+ palette.set_pen_indirect(512+16*4+2*4+3, 512+16+3);
}
@@ -308,7 +306,7 @@ void m52_state::draw_background(bitmap_ind16 &bitmap, const rectangle &cliprect,
ypos = ypos + (22 - 8);
- m_gfxdecode->gfx(image)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(image)->transpen(m_palette,bitmap,cliprect,
0, 0,
flip_screen(),
flip_screen(),
@@ -316,7 +314,7 @@ void m52_state::draw_background(bitmap_ind16 &bitmap, const rectangle &cliprect,
ypos, 0);
- m_gfxdecode->gfx(image)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(image)->transpen(m_palette,bitmap,cliprect,
0, 0,
flip_screen(),
flip_screen(),
@@ -410,9 +408,9 @@ UINT32 m52_state::screen_update_m52(screen_device &screen, bitmap_ind16 &bitmap,
clip = cliprect;
#endif
- m_gfxdecode->gfx(1)->transmask(bitmap,clip,
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,clip,
code, color, flipx, flipy, sx, sy,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, 512 + 32));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 512 + 32));
}
return 0;
}
diff --git a/src/mame/video/m57.c b/src/mame/video/m57.c
index 979f366c46e..58ef05017da 100644
--- a/src/mame/video/m57.c
+++ b/src/mame/video/m57.c
@@ -30,13 +30,11 @@
***************************************************************************/
-void m57_state::palette_init()
+PALETTE_INIT_MEMBER(m57_state, m57)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- machine().colortable = colortable_alloc(machine(), 32 * 8 + 16);
-
/* character palette */
for (i = 0; i < 256; i++)
{
@@ -58,8 +56,8 @@ void m57_state::palette_init()
bit2 = (color_prom[0] >> 2) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r,g,b));
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_indirect_color(i, rgb_t(r,g,b));
+ palette.set_pen_indirect(i, i);
color_prom++;
}
@@ -87,7 +85,7 @@ void m57_state::palette_init()
bit2 = (*color_prom >> 2) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- colortable_palette_set_color(machine().colortable, i + 256, rgb_t(r,g,b));
+ palette.set_indirect_color(i + 256, rgb_t(r,g,b));
color_prom++;
}
@@ -98,7 +96,7 @@ void m57_state::palette_init()
/* sprite lookup table */
for (i = 0; i < 32 * 8; i++)
{
- colortable_entry_set_value(machine().colortable, i + 32 * 8, 256 + (~*color_prom & 0x0f));
+ palette.set_pen_indirect(i + 32 * 8, 256 + (~*color_prom & 0x0f));
color_prom++;
}
}
@@ -241,12 +239,12 @@ void m57_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
flipy = !flipy;
}
- m_gfxdecode->gfx(1 + bank)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(1 + bank)->transmask(m_palette,bitmap,cliprect,
tile_number,
color,
flipx, flipy,
sx, sy,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, 256 + 15));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 256 + 15));
}
}
diff --git a/src/mame/video/m58.c b/src/mame/video/m58.c
index c2cf796e936..dff3e8147fe 100644
--- a/src/mame/video/m58.c
+++ b/src/mame/video/m58.c
@@ -19,7 +19,7 @@
*
*************************************/
-void m58_state::palette_init()
+PALETTE_INIT_MEMBER(m58_state, m58)
{
const UINT8 *color_prom = memregion("proms")->base();
const UINT8 *char_lopal = color_prom + 0x000;
@@ -33,8 +33,6 @@ void m58_state::palette_init()
double weights_r[3], weights_g[3], weights_b[3], scale;
int i;
- machine().colortable = colortable_alloc(machine(), 256+256+16);
-
/* compute palette information for characters/radar */
scale = compute_resistor_weights(0, 255, -1.0,
2, resistances_2, weights_r, 0, 0,
@@ -49,7 +47,7 @@ void m58_state::palette_init()
int g = combine_3_weights(weights_g, BIT(promval,3), BIT(promval,4), BIT(promval,5));
int b = combine_3_weights(weights_b, BIT(promval,0), BIT(promval,1), BIT(promval,2));
- colortable_palette_set_color(machine().colortable, i, rgb_t(r,g,b));
+ palette.set_indirect_color(i, rgb_t(r,g,b));
}
/* radar palette */
@@ -60,7 +58,7 @@ void m58_state::palette_init()
int g = combine_3_weights(weights_g, BIT(promval,3), BIT(promval,4), BIT(promval,5));
int b = combine_3_weights(weights_b, BIT(promval,0), BIT(promval,1), BIT(promval,2));
- colortable_palette_set_color(machine().colortable, 256+i, rgb_t(r,g,b));
+ palette.set_indirect_color(256+i, rgb_t(r,g,b));
}
/* compute palette information for sprites */
@@ -77,22 +75,22 @@ void m58_state::palette_init()
int g = combine_3_weights(weights_g, BIT(promval,3), BIT(promval,4), BIT(promval,5));
int b = combine_3_weights(weights_b, BIT(promval,0), BIT(promval,1), BIT(promval,2));
- colortable_palette_set_color(machine().colortable, 256+256+i, rgb_t(r,g,b));
+ palette.set_indirect_color(256+256+i, rgb_t(r,g,b));
}
/* character lookup table */
for (i = 0; i < 256; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
/* radar lookup table */
for (i = 0; i < 256; i++)
- colortable_entry_set_value(machine().colortable, 256+i, 256+i);
+ palette.set_pen_indirect(256+i, 256+i);
/* sprite lookup table */
for (i = 0; i < 256; i++)
{
UINT8 promval = sprite_table[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, 256+256+i, 256+256+promval);
+ palette.set_pen_indirect(256+256+i, 256+256+promval);
}
}
@@ -209,7 +207,7 @@ WRITE8_MEMBER(m58_state::yard_flipscreen_w)
*
*************************************/
-#define DRAW_SPRITE(code, sy) m_gfxdecode->gfx(1)->transmask(bitmap,cliprect, code, color, flipx, flipy, sx, sy, colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, 512));
+#define DRAW_SPRITE(code, sy) m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,cliprect, code, color, flipx, flipy, sx, sy, m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 512));
void m58_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect )
{
diff --git a/src/mame/video/m62.c b/src/mame/video/m62.c
index 65da6b912e1..a1c22c482c9 100644
--- a/src/mame/video/m62.c
+++ b/src/mame/video/m62.c
@@ -197,20 +197,20 @@ void m62_state::m62_amplify_contrast(palette_t *palette, UINT32 numcolors)
palette->set_contrast(255000.0/ymax);
}
-void m62_state::palette_init()
+PALETTE_INIT_MEMBER(m62_state, m62)
{
const UINT8 *color_prom = memregion("proms")->base();
rgb_t *rgb;
rgb = compute_res_net_all(machine(), color_prom, &m62_tile_decode_info, &m62_tile_net_info);
- palette_set_colors(machine(), 0x000, rgb, 0x100);
+ palette.set_pen_colors(0x000, rgb, 0x100);
auto_free(machine(), rgb);
rgb = compute_res_net_all(machine(), color_prom, &m62_sprite_decode_info, &m62_sprite_net_info);
- palette_set_colors(machine(), 0x100, rgb, 0x100);
+ palette.set_pen_colors(0x100, rgb, 0x100);
auto_free(machine(), rgb);
- m62_amplify_contrast(machine().palette,0);
+ m62_amplify_contrast(palette.palette(),0);
/* we'll need this at run time */
m_sprite_height_prom = color_prom + 0x600;
@@ -223,14 +223,14 @@ PALETTE_INIT_MEMBER(m62_state,lotlot)
rgb_t *rgb;
rgb = compute_res_net_all(machine(), color_prom, &lotlot_tile_decode_info, &m62_tile_net_info);
- palette_set_colors(machine(), 0x000, rgb, 0x180);
+ palette.set_pen_colors(0x000, rgb, 0x180);
auto_free(machine(), rgb);
rgb = compute_res_net_all(machine(), color_prom, &lotlot_sprite_decode_info, &m62_sprite_net_info);
- palette_set_colors(machine(), 0x180, rgb, 0x180);
+ palette.set_pen_colors(0x180, rgb, 0x180);
auto_free(machine(), rgb);
- m62_amplify_contrast(machine().palette,0);
+ m62_amplify_contrast(palette.palette(),0);
/* we'll need this at run time */
m_sprite_height_prom = color_prom + 0x900;
@@ -244,18 +244,18 @@ PALETTE_INIT_MEMBER(m62_state,battroad)
// m62 palette
rgb = compute_res_net_all(machine(), color_prom, &m62_tile_decode_info, &m62_tile_net_info);
- palette_set_colors(machine(), 0x000, rgb, 0x100);
+ palette.set_pen_colors(0x000, rgb, 0x100);
auto_free(machine(), rgb);
rgb = compute_res_net_all(machine(), color_prom, &m62_sprite_decode_info, &m62_sprite_net_info);
- palette_set_colors(machine(), 0x100, rgb, 0x100);
+ palette.set_pen_colors(0x100, rgb, 0x100);
auto_free(machine(), rgb);
- m62_amplify_contrast(machine().palette,0x200);
+ m62_amplify_contrast(palette.palette(),0x200);
// custom palette for foreground
rgb = compute_res_net_all(machine(), color_prom, &battroad_char_decode_info, &battroad_char_net_info);
- palette_set_colors(machine(), 0x200, rgb, 0x020);
+ palette.set_pen_colors(0x200, rgb, 0x020);
auto_free(machine(), rgb);
/* we'll need this at run time */
@@ -269,14 +269,14 @@ PALETTE_INIT_MEMBER(m62_state,spelunk2)
rgb_t *rgb;
rgb = compute_res_net_all(machine(), color_prom, &spelunk2_tile_decode_info, &m62_tile_net_info);
- palette_set_colors(machine(), 0x000, rgb, 0x200);
+ palette.set_pen_colors(0x000, rgb, 0x200);
auto_free(machine(), rgb);
rgb = compute_res_net_all(machine(), color_prom, &spelunk2_sprite_decode_info, &m62_sprite_net_info);
- palette_set_colors(machine(), 0x200, rgb, 0x100);
+ palette.set_pen_colors(0x200, rgb, 0x100);
auto_free(machine(), rgb);
- m62_amplify_contrast(machine().palette,0);
+ m62_amplify_contrast(palette.palette(),0);
/* we'll need this at run time */
m_sprite_height_prom = color_prom + 0x700;
@@ -391,7 +391,7 @@ void m62_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, i
do
{
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code + i * incr,col,
flipx,flipy,
sx,sy + 16 * i,0);
@@ -556,11 +556,11 @@ UINT32 m62_state::screen_update_ldrun3(screen_device &screen, bitmap_ind16 &bitm
my_cliprect.min_y = 0 * 8;
my_cliprect.max_y = 1 * 8 - 1;
- bitmap.fill(get_black_pen(machine()), my_cliprect);
+ bitmap.fill(m_palette->black_pen(), my_cliprect);
my_cliprect.min_y = 31 * 8;
my_cliprect.max_y = 32 * 8 - 1;
- bitmap.fill(get_black_pen(machine()), my_cliprect);
+ bitmap.fill(m_palette->black_pen(), my_cliprect);
}
return 0;
diff --git a/src/mame/video/m72.c b/src/mame/video/m72.c
index 06c4b08b472..eb866d03d3a 100644
--- a/src/mame/video/m72.c
+++ b/src/mame/video/m72.c
@@ -273,7 +273,7 @@ READ16_MEMBER(m72_state::m72_palette2_r)
inline void m72_state::changecolor(int color,int r,int g,int b)
{
- palette_set_color_rgb(machine(),color,pal5bit(r),pal5bit(g),pal5bit(b));
+ m_palette->set_pen_color(color,pal5bit(r),pal5bit(g),pal5bit(b));
}
WRITE16_MEMBER(m72_state::m72_palette1_w)
@@ -452,7 +452,7 @@ void m72_state::m72_draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
if (flipy) c += h-1-y;
else c += y;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
c,
color,
flipx,flipy,
@@ -504,7 +504,7 @@ void m72_state::majtitle_draw_sprites(bitmap_ind16 &bitmap,const rectangle &clip
if (flipy) c += h-1-y;
else c += y;
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
c,
color,
flipx,flipy,
@@ -518,7 +518,7 @@ UINT32 m72_state::screen_update_m72(screen_device &screen, bitmap_ind16 &bitmap,
{
if (m_video_off)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
@@ -543,7 +543,7 @@ UINT32 m72_state::screen_update_majtitle(screen_device &screen, bitmap_ind16 &bi
if (m_video_off)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
diff --git a/src/mame/video/m90.c b/src/mame/video/m90.c
index 060fdde7796..033ecc95299 100644
--- a/src/mame/video/m90.c
+++ b/src/mame/video/m90.c
@@ -160,7 +160,7 @@ void m90_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,const r
for (i = 0;i < y_multi;i++)
if (m_video_control_data[7] & 0x01)
- m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->prio_transpen(m_palette,bitmap,cliprect,
sprite + (fy ? y_multi-1 - i : i),
colour,
fx,fy,
@@ -168,7 +168,7 @@ void m90_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,const r
screen.priority(),
(colour & 0x08) ? 0x00 : 0x02,0);
else if (m_video_control_data[7] & 0x02)
- m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->prio_transpen(m_palette,bitmap,cliprect,
sprite + (fy ? y_multi-1 - i : i),
colour,
fx,fy,
@@ -176,7 +176,7 @@ void m90_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,const r
screen.priority(),
((colour & 0x0c)==0x0c) ? 0x00 : 0x02,0);
else
- m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->prio_transpen(m_palette,bitmap,cliprect,
sprite + (fy ? y_multi-1 - i : i),
colour,
fx,fy,
@@ -215,7 +215,7 @@ void m90_state::bomblord_draw_sprites(screen_device &screen, bitmap_ind16 &bitma
fx = (spriteram16[offs+3] >> 8) & 0x02;
fy = (spriteram16[offs+2] >> 8) & 0x80;
- m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->prio_transpen(m_palette,bitmap,cliprect,
sprite,
colour,
fx,fy,
@@ -253,7 +253,7 @@ void m90_state::dynablsb_draw_sprites(screen_device &screen, bitmap_ind16 &bitma
fx = (spriteram16[offs+3] >> 8) & 0x02;
fy = (spriteram16[offs+2] >> 8) & 0x80;
- m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->prio_transpen(m_palette,bitmap,cliprect,
sprite,
colour,
fx,fy,
@@ -444,7 +444,7 @@ UINT32 m90_state::screen_update_m90(screen_device &screen, bitmap_ind16 &bitmap,
draw_sprites(screen,bitmap,cliprect);
} else {
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
}
return 0;
@@ -454,7 +454,7 @@ UINT32 m90_state::screen_update_bomblord(screen_device &screen, bitmap_ind16 &bi
{
int i;
screen.priority().fill(0, cliprect);
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
/* Setup scrolling */
if (m_video_control_data[6]&0x20) {
@@ -505,7 +505,7 @@ UINT32 m90_state::screen_update_bomblord(screen_device &screen, bitmap_ind16 &bi
UINT32 m90_state::screen_update_dynablsb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
screen.priority().fill(0, cliprect);
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
if (!(m_video_data[0xf008/2] & 0x4000)) {
m_pf1_wide_layer->mark_all_dirty();
diff --git a/src/mame/video/m92.c b/src/mame/video/m92.c
index 6751715a028..2cb48b31693 100644
--- a/src/mame/video/m92.c
+++ b/src/mame/video/m92.c
@@ -138,7 +138,7 @@ READ16_MEMBER(m92_state::m92_paletteram_r)
WRITE16_MEMBER(m92_state::m92_paletteram_w)
{
- paletteram_xBBBBBGGGGGRRRRR_word_w(space, offset + 0x400 * m_palette_bank, data, mem_mask);
+ m_palette->write(space, offset + 0x400 * m_palette_bank, data, mem_mask);
}
/*****************************************************************************/
@@ -354,26 +354,26 @@ void m92_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const
{
if (flip_screen())
{
- m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->prio_transpen(m_palette,bitmap,cliprect,
code + s_ptr, color, !flipx, !flipy,
464 - x, 240 - (y - row * 16),
screen.priority(), pri, 0);
// wrap around x
- m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->prio_transpen(m_palette,bitmap,cliprect,
code + s_ptr, color, !flipx, !flipy,
464 - x + 512, 240 - (y - row * 16),
screen.priority(), pri, 0);
}
else
{
- m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->prio_transpen(m_palette,bitmap,cliprect,
code + s_ptr, color, flipx, flipy,
x, y - row * 16,
screen.priority(), pri, 0);
// wrap around x
- m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->prio_transpen(m_palette,bitmap,cliprect,
code + s_ptr, color, flipx, flipy,
x - 512, y - row * 16,
screen.priority(), pri, 0);
@@ -428,26 +428,26 @@ void m92_state::ppan_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, c
{
if (flip_screen())
{
- m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->prio_transpen(m_palette,bitmap,cliprect,
code + s_ptr, color, !flipx, !flipy,
464 - x, 240 - (y - row * 16),
screen.priority(), pri, 0);
// wrap around x
- m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->prio_transpen(m_palette,bitmap,cliprect,
code + s_ptr, color, !flipx, !flipy,
464 - x + 512, 240 - (y - row * 16),
screen.priority(), pri, 0);
}
else
{
- m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->prio_transpen(m_palette,bitmap,cliprect,
code + s_ptr, color, flipx, flipy,
x, y - row * 16,
screen.priority(), pri, 0);
// wrap around x
- m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->prio_transpen(m_palette,bitmap,cliprect,
code + s_ptr, color, flipx, flipy,
x - 512, y - row * 16,
screen.priority(), pri, 0);
diff --git a/src/mame/video/macrossp.c b/src/mame/video/macrossp.c
index 86c2014e691..c719e7e31e4 100644
--- a/src/mame/video/macrossp.c
+++ b/src/mame/video/macrossp.c
@@ -235,7 +235,7 @@ void macrossp_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprec
xoffset = 0;
for (xcnt = 0; xcnt <= wide; xcnt++)
{
- gfx->zoom_alpha(bitmap,cliprect,tileno+loopno,col,flipx,flipy,xpos+xoffset,ypos+yoffset,xzoom*0x100,yzoom*0x100,0,alpha);
+ gfx->zoom_alpha(m_palette,bitmap,cliprect,tileno+loopno,col,flipx,flipy,xpos+xoffset,ypos+yoffset,xzoom*0x100,yzoom*0x100,0,alpha);
xoffset += ((xzoom*16 + (1<<7)) >> 8);
loopno++;
@@ -252,7 +252,7 @@ void macrossp_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprec
xoffset = 0;
for (xcnt = 0; xcnt <= wide; xcnt++)
{
- gfx->zoom_alpha(bitmap,cliprect,tileno+loopno,col,flipx,flipy,xpos+xoffset,ypos+yoffset,xzoom*0x100,yzoom*0x100,0,alpha);
+ gfx->zoom_alpha(m_palette,bitmap,cliprect,tileno+loopno,col,flipx,flipy,xpos+xoffset,ypos+yoffset,xzoom*0x100,yzoom*0x100,0,alpha);
xoffset += ((xzoom * 16 + (1 << 7)) >> 8);
loopno++;
@@ -272,7 +272,7 @@ void macrossp_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprec
xoffset = ((wide*xzoom*16) >> 8);
for (xcnt = wide; xcnt >= 0; xcnt--)
{
- gfx->zoom_alpha(bitmap,cliprect,tileno+loopno,col,flipx,flipy,xpos+xoffset,ypos+yoffset,xzoom*0x100,yzoom*0x100,0,alpha);
+ gfx->zoom_alpha(m_palette,bitmap,cliprect,tileno+loopno,col,flipx,flipy,xpos+xoffset,ypos+yoffset,xzoom*0x100,yzoom*0x100,0,alpha);
xoffset -= ((xzoom * 16 + (1 << 7)) >> 8);
loopno++;
@@ -289,7 +289,7 @@ void macrossp_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprec
xoffset = ((wide * xzoom * 16) >> 8);
for (xcnt = wide; xcnt >=0 ; xcnt--)
{
- gfx->zoom_alpha(bitmap,cliprect,tileno+loopno,col,flipx,flipy,xpos+xoffset,ypos+yoffset,xzoom*0x100,yzoom*0x100,0,alpha);
+ gfx->zoom_alpha(m_palette,bitmap,cliprect,tileno+loopno,col,flipx,flipy,xpos+xoffset,ypos+yoffset,xzoom*0x100,yzoom*0x100,0,alpha);
xoffset -= ((xzoom * 16 + (1 << 7)) >> 8);
loopno++;
@@ -386,7 +386,7 @@ UINT32 macrossp_state::screen_update_macrossp(screen_device &screen, bitmap_rgb3
{
int layers[3],layerpri[3];
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
layers[0] = 0;
layerpri[0] = (m_scra_videoregs[0] & 0x0000c000) >> 14;
diff --git a/src/mame/video/madalien.c b/src/mame/video/madalien.c
index 099ad867fa6..4fd85eac48c 100644
--- a/src/mame/video/madalien.c
+++ b/src/mame/video/madalien.c
@@ -19,9 +19,6 @@ PALETTE_INIT_MEMBER(madalien_state,madalien)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x20);
-
for (i = 0; i < 0x20; i++)
{
int r = 0;
@@ -41,11 +38,11 @@ PALETTE_INIT_MEMBER(madalien_state,madalien)
if (BIT(color_prom[i], 5))
b += 0xc0;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
for (i = 0; i < 0x10; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
for (i = 0x10; i < 0x20; i++)
{
@@ -57,11 +54,11 @@ PALETTE_INIT_MEMBER(madalien_state,madalien)
if (BIT((i - 0x10), 2))
ctabentry = ctabentry ^ 0x06;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
for (i = 0x20; i < 0x30; i++)
- colortable_entry_set_value(machine().colortable, i, (i - 0x20) | 0x10);
+ palette.set_pen_indirect(i, (i - 0x20) | 0x10);
}
@@ -148,8 +145,8 @@ VIDEO_START_MEMBER(madalien_state,madalien)
m_gfxdecode->gfx(0)->set_source(m_charram);
- m_gfxdecode->gfx(2)->opaque(*m_headlight_bitmap,m_headlight_bitmap->cliprect(), 0, 0, 0, 0, 0x00, 0x00);
- m_gfxdecode->gfx(2)->opaque(*m_headlight_bitmap,m_headlight_bitmap->cliprect(), 0, 0, 0, 1, 0x00, 0x40);
+ m_gfxdecode->gfx(2)->opaque(m_palette,*m_headlight_bitmap,m_headlight_bitmap->cliprect(), 0, 0, 0, 0, 0x00, 0x00);
+ m_gfxdecode->gfx(2)->opaque(m_palette,*m_headlight_bitmap,m_headlight_bitmap->cliprect(), 0, 0, 0, 1, 0x00, 0x40);
}
@@ -390,8 +387,8 @@ MACHINE_CONFIG_FRAGMENT( madalien_video )
MCFG_SCREEN_UPDATE_DRIVER(madalien_state, screen_update_madalien)
MCFG_GFXDECODE_ADD("gfxdecode", madalien)
- MCFG_PALETTE_LENGTH(0x30)
- MCFG_PALETTE_INIT_OVERRIDE(madalien_state,madalien)
+ MCFG_PALETTE_ADD("palette", 0x30)
+ MCFG_PALETTE_INIT_OWNER(madalien_state,madalien)
MCFG_VIDEO_START_OVERRIDE(madalien_state,madalien)
MCFG_MC6845_ADD("crtc", MC6845, "screen", PIXEL_CLOCK / 8, mc6845_intf)
diff --git a/src/mame/video/magmax.c b/src/mame/video/magmax.c
index c8b5a206714..6015d71f61f 100644
--- a/src/mame/video/magmax.c
+++ b/src/mame/video/magmax.c
@@ -24,14 +24,11 @@ Additional tweaking by Jarek Burczynski
bit 0 -- 2.2kohm resistor -- RED/GREEN/BLUE
***************************************************************************/
-void magmax_state::palette_init()
+PALETTE_INIT_MEMBER(magmax_state, magmax)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
@@ -39,7 +36,7 @@ void magmax_state::palette_init()
int g = pal4bit(color_prom[i + 0x100]);
int b = pal4bit(color_prom[i + 0x200]);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -47,18 +44,18 @@ void magmax_state::palette_init()
/* characters use colors 0-0x0f */
for (i = 0; i < 0x10; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
/*sprites use colors 0x10-0x1f, color 0x1f being transparent*/
for (i = 0x10; i < 0x110; i++)
{
UINT8 ctabentry = (color_prom[i - 0x10] & 0x0f) | 0x10;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* background uses all colors (no lookup table) */
for (i = 0x110; i < 0x210; i++)
- colortable_entry_set_value(machine().colortable, i, i - 0x110);
+ palette.set_pen_indirect(i, i - 0x110);
}
@@ -200,12 +197,12 @@ UINT32 magmax_state::screen_update_magmax(screen_device &screen, bitmap_ind16 &b
if (code & 0x80) /* sprite bankswitch */
code += (*m_vreg & 0x30) * 0x8;
- m_gfxdecode->gfx(1)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,cliprect,
code,
color,
flipx, flipy,
sx, sy,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, 0x1f));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 0x1f));
}
}
@@ -230,7 +227,7 @@ UINT32 magmax_state::screen_update_magmax(screen_device &screen, bitmap_ind16 &b
sy = 31 - sy;
}
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
0,
m_flipscreen, m_flipscreen,
diff --git a/src/mame/video/mainsnk.c b/src/mame/video/mainsnk.c
index 3a413b9276a..b2c7dd90e8d 100644
--- a/src/mame/video/mainsnk.c
+++ b/src/mame/video/mainsnk.c
@@ -2,7 +2,7 @@
#include "includes/mainsnk.h"
-void mainsnk_state::palette_init()
+PALETTE_INIT_MEMBER(mainsnk_state, mainsnk)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -30,7 +30,7 @@ void mainsnk_state::palette_init()
bit3 = (color_prom[i + num_colors] >> 1) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
}
@@ -148,7 +148,7 @@ void mainsnk_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
flipy = !flipy;
}
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
tile_number,
color,
flipx,flipy,
diff --git a/src/mame/video/malzak.c b/src/mame/video/malzak.c
index 0fdfa78f0ac..c88059418de 100644
--- a/src/mame/video/malzak.c
+++ b/src/mame/video/malzak.c
@@ -38,7 +38,7 @@ UINT32 malzak_state::screen_update_malzak(screen_device &screen, bitmap_rgb32 &b
if (sx < -15*2)
sx += 256*2;
- m_gfxdecode->gfx(0)->zoom_transpen(bitmap,cliprect, m_playfield_code[x * 16 + y], 2, 0, 0, sx, sy, 0x20000, 0x20000, 0);
+ m_gfxdecode->gfx(0)->zoom_transpen(m_palette,bitmap,cliprect, m_playfield_code[x * 16 + y], 2, 0, 0, sx, sy, 0x20000, 0x20000, 0);
}
/* update the S2636 chips */
diff --git a/src/mame/video/mappy.c b/src/mame/video/mappy.c
index 8a193691a81..abfc243be99 100644
--- a/src/mame/video/mappy.c
+++ b/src/mame/video/mappy.c
@@ -43,9 +43,6 @@ PALETTE_INIT_MEMBER(mappy_state,superpac)
3, &resistances[0], gweights, 0, 0,
2, &resistances[1], bweights, 0, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 32);
-
/* create a lookup table for the palette */
for (i = 0; i < 32; i++)
{
@@ -69,7 +66,7 @@ PALETTE_INIT_MEMBER(mappy_state,superpac)
bit1 = (color_prom[i] >> 7) & 0x01;
b = combine_2_weights(bweights, bit0, bit1);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -79,14 +76,14 @@ PALETTE_INIT_MEMBER(mappy_state,superpac)
for (i = 0; i < 64*4; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, (ctabentry ^ 15) + 0x10);
+ palette.set_pen_indirect(i, (ctabentry ^ 15) + 0x10);
}
/* sprites map to the lower 16 palette entries */
for (i = 64*4; i < 128*4; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -103,9 +100,6 @@ PALETTE_INIT_MEMBER(mappy_state,mappy)
3, &resistances[0], gweights, 0, 0,
2, &resistances[1], bweights, 0, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 32);
-
/* create a lookup table for the palette */
for (i = 0; i < 32; i++)
{
@@ -129,7 +123,7 @@ PALETTE_INIT_MEMBER(mappy_state,mappy)
bit1 = (color_prom[i] >> 7) & 0x01;
b = combine_2_weights(bweights, bit0, bit1);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -139,14 +133,14 @@ PALETTE_INIT_MEMBER(mappy_state,mappy)
for (i = 0*4; i < 64*4; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry + 0x10);
+ palette.set_pen_indirect(i, ctabentry + 0x10);
}
/* sprites map to the lower 16 palette entries */
- for (i = 64*4; i < machine().total_colors(); i++)
+ for (i = 64*4; i < palette.entries(); i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -175,9 +169,6 @@ PALETTE_INIT_MEMBER(mappy_state,phozon)
4, &resistances[0], gweights, 0, 0,
4, &resistances[0], bweights, 0, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 32);
-
/* create a lookup table for the palette */
for (i = 0; i < 32; i++)
{
@@ -205,7 +196,7 @@ PALETTE_INIT_MEMBER(mappy_state,phozon)
bit3 = (color_prom[i + 0x200] >> 3) & 0x01;
b = combine_4_weights(bweights, bit0, bit1, bit2, bit3);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -215,14 +206,14 @@ PALETTE_INIT_MEMBER(mappy_state,phozon)
for (i = 0; i < 64*4; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* sprites map to the upper 16 palette entries */
for (i = 64*4; i < 128*4; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry + 0x10);
+ palette.set_pen_indirect(i, ctabentry + 0x10);
}
}
@@ -323,14 +314,14 @@ VIDEO_START_MEMBER(mappy_state,superpac)
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(mappy_state::superpac_get_tile_info),this),tilemap_mapper_delegate(FUNC(mappy_state::superpac_tilemap_scan),this),8,8,36,28);
m_screen->register_screen_bitmap(m_sprite_bitmap);
- colortable_configure_tilemap_groups(machine().colortable, m_bg_tilemap, m_gfxdecode->gfx(0), 31);
+ m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(0), 31);
}
VIDEO_START_MEMBER(mappy_state,phozon)
{
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(mappy_state::phozon_get_tile_info),this),tilemap_mapper_delegate(FUNC(mappy_state::superpac_tilemap_scan),this),8,8,36,28);
- colortable_configure_tilemap_groups(machine().colortable, m_bg_tilemap, m_gfxdecode->gfx(0), 15);
+ m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(0), 15);
save_item(NAME(m_scroll));
}
@@ -339,7 +330,7 @@ VIDEO_START_MEMBER(mappy_state,mappy)
{
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(mappy_state::mappy_get_tile_info),this),tilemap_mapper_delegate(FUNC(mappy_state::mappy_tilemap_scan),this),8,8,36,60);
- colortable_configure_tilemap_groups(machine().colortable, m_bg_tilemap, m_gfxdecode->gfx(0), 31);
+ m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(0), 31);
m_bg_tilemap->set_scroll_cols(36);
}
@@ -430,12 +421,12 @@ void mappy_state::mappy_draw_sprites(bitmap_ind16 &bitmap, const rectangle &clip
{
for (x = 0;x <= sizex;x++)
{
- m_gfxdecode->gfx(1)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,cliprect,
sprite + gfx_offs[y ^ (sizey * flipy)][x ^ (sizex * flipx)],
color,
flipx,flipy,
sx + 16*x,sy + 16*y,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, 15));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 15));
}
}
}
@@ -507,12 +498,12 @@ void mappy_state::phozon_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cli
{
for (x = 0;x <= sizex;x++)
{
- m_gfxdecode->gfx(1)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,cliprect,
sprite + gfx_offs[y ^ (sizey * flipy)][x ^ (sizex * flipx)],
color,
flipx,flipy,
sx + 8*x,sy + 8*y,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, 31));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 31));
}
}
}
@@ -540,7 +531,7 @@ UINT32 mappy_state::screen_update_superpac(screen_device &screen, bitmap_ind16 &
for (x = 0;x < sprite_bitmap.width();x++)
{
int spr_entry = sprite_bitmap.pix16(y, x);
- int spr_pen = colortable_entry_get_value(machine().colortable, spr_entry);
+ int spr_pen = m_palette->pen_indirect(spr_entry);
if (spr_pen == 0 || spr_pen == 1)
bitmap.pix16(y, x) = spr_entry;
}
diff --git a/src/mame/video/marineb.c b/src/mame/video/marineb.c
index 7f20d8e0f66..17ee066e1f4 100644
--- a/src/mame/video/marineb.c
+++ b/src/mame/video/marineb.c
@@ -10,12 +10,12 @@
#include "includes/marineb.h"
-void marineb_state::palette_init()
+PALETTE_INIT_MEMBER(marineb_state, marineb)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -26,16 +26,16 @@ void marineb_state::palette_init()
r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
/* green component */
bit0 = (color_prom[i] >> 3) & 0x01;
- bit1 = (color_prom[i + machine().total_colors()] >> 0) & 0x01;
- bit2 = (color_prom[i + machine().total_colors()] >> 1) & 0x01;
+ bit1 = (color_prom[i + palette.entries()] >> 0) & 0x01;
+ bit2 = (color_prom[i + palette.entries()] >> 1) & 0x01;
g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
/* blue component */
bit0 = 0;
- bit1 = (color_prom[i + machine().total_colors()] >> 2) & 0x01;
- bit2 = (color_prom[i + machine().total_colors()] >> 3) & 0x01;
+ bit1 = (color_prom[i + palette.entries()] >> 2) & 0x01;
+ bit2 = (color_prom[i + palette.entries()] >> 3) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r,g,b));
+ palette.set_pen_color(i, rgb_t(r,g,b));
}
}
@@ -213,7 +213,7 @@ UINT32 marineb_state::screen_update_marineb(screen_device &screen, bitmap_ind16
sx++;
}
- m_gfxdecode->gfx(gfx)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(gfx)->transpen(m_palette,bitmap,cliprect,
code,
col,
flipx,flipy,
@@ -255,7 +255,7 @@ UINT32 marineb_state::screen_update_changes(screen_device &screen, bitmap_ind16
sx++;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code >> 2,
col,
flipx,flipy,
@@ -284,7 +284,7 @@ UINT32 marineb_state::screen_update_changes(screen_device &screen, bitmap_ind16
code >>= 4;
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code,
col,
flipx,flipy,
@@ -292,7 +292,7 @@ UINT32 marineb_state::screen_update_changes(screen_device &screen, bitmap_ind16
/* draw again for wrap around */
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code,
col,
flipx,flipy,
@@ -350,7 +350,7 @@ UINT32 marineb_state::screen_update_springer(screen_device &screen, bitmap_ind16
sx--;
}
- m_gfxdecode->gfx(gfx)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(gfx)->transpen(m_palette,bitmap,cliprect,
code,
col,
flipx,flipy,
@@ -393,7 +393,7 @@ UINT32 marineb_state::screen_update_hoccer(screen_device &screen, bitmap_ind16 &
flipx = !flipx;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code >> 2,
col,
flipx,flipy,
@@ -451,7 +451,7 @@ UINT32 marineb_state::screen_update_hopprobo(screen_device &screen, bitmap_ind16
sx--;
}
- m_gfxdecode->gfx(gfx)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(gfx)->transpen(m_palette,bitmap,cliprect,
code,
col,
flipx,flipy,
diff --git a/src/mame/video/mario.c b/src/mame/video/mario.c
index 76011da0c3c..b62a964c5ff 100644
--- a/src/mame/video/mario.c
+++ b/src/mame/video/mario.c
@@ -62,20 +62,20 @@ static const res_net_info mario_net_info_std =
bit 0 -- 470 ohm resistor -- inverter -- BLUE
***************************************************************************/
-void mario_state::palette_init()
+PALETTE_INIT_MEMBER(mario_state, mario)
{
const UINT8 *color_prom = memregion("proms")->base();
rgb_t *rgb;
rgb = compute_res_net_all(machine(), color_prom, &mario_decode_info, &mario_net_info);
- palette_set_colors(machine(), 0, rgb, 256);
+ palette.set_pen_colors(0, rgb, 256);
auto_free(machine(), rgb);
rgb = compute_res_net_all(machine(), color_prom+256, &mario_decode_info, &mario_net_info_std);
- palette_set_colors(machine(), 256, rgb, 256);
+ palette.set_pen_colors(256, rgb, 256);
auto_free(machine(), rgb);
- machine().palette->normalize_range(0, 255);
- machine().palette->normalize_range(256, 511);
+ palette.palette()->normalize_range(0, 255);
+ palette.palette()->normalize_range(256, 511);
}
WRITE8_MEMBER(mario_state::mario_videoram_w)
@@ -175,7 +175,7 @@ void mario_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
{
y -= 14;
x -= 7;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
m_spriteram[offs + 2],
(m_spriteram[offs + 1] & 0x0f) + 16 * m_palette_bank + 32 * m_monitor,
!(m_spriteram[offs + 1] & 0x80),!(m_spriteram[offs + 1] & 0x40),
@@ -185,7 +185,7 @@ void mario_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
{
y += 1;
x -= 8;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
m_spriteram[offs + 2],
(m_spriteram[offs + 1] & 0x0f) + 16 * m_palette_bank + 32 * m_monitor,
(m_spriteram[offs + 1] & 0x80),(m_spriteram[offs + 1] & 0x40),
diff --git a/src/mame/video/markham.c b/src/mame/video/markham.c
index 875a8db3a5b..f46a779c3a7 100644
--- a/src/mame/video/markham.c
+++ b/src/mame/video/markham.c
@@ -11,14 +11,11 @@
#include "emu.h"
#include "includes/markham.h"
-void markham_state::palette_init()
+PALETTE_INIT_MEMBER(markham_state, markham)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
@@ -26,7 +23,7 @@ void markham_state::palette_init()
int g = pal4bit(color_prom[i + 0x100]);
int b = pal4bit(color_prom[i + 0x200]);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -36,7 +33,7 @@ void markham_state::palette_init()
for (i = 0; i < 0x400; i++)
{
UINT8 ctabentry = color_prom[i];
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -105,12 +102,12 @@ void markham_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
if (px > 248)
px = px - 256;
- m_gfxdecode->gfx(1)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,cliprect,
chr,
col,
fx,fy,
px,py,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), col, 0));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), col, 0));
}
}
diff --git a/src/mame/video/matmania.c b/src/mame/video/matmania.c
index c34cc71b5f3..fd2809632b2 100644
--- a/src/mame/video/matmania.c
+++ b/src/mame/video/matmania.c
@@ -41,7 +41,7 @@
bit 0 -- 2.2kohm resistor -- BLUE
***************************************************************************/
-void matmania_state::palette_init()
+PALETTE_INIT_MEMBER(matmania_state, matmania)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -66,7 +66,7 @@ void matmania_state::palette_init()
bit3 = BIT(color_prom[64], 3);
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
color_prom++;
}
}
@@ -103,7 +103,7 @@ WRITE8_MEMBER(matmania_state::matmania_paletteram_w)
bit3 = BIT(val, 3);
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- palette_set_color(machine(),offs2 + 64,rgb_t(r,g,b));
+ m_palette->set_pen_color(offs2 + 64,rgb_t(r,g,b));
}
@@ -137,7 +137,7 @@ UINT32 matmania_state::screen_update_matmania(screen_device &screen, bitmap_ind1
int sx = 15 - offs / 32;
int sy = offs % 32;
- m_gfxdecode->gfx(1)->opaque(*m_tmpbitmap,m_tmpbitmap->cliprect(),
+ m_gfxdecode->gfx(1)->opaque(m_palette,*m_tmpbitmap,m_tmpbitmap->cliprect(),
m_videoram[offs] + ((m_colorram[offs] & 0x08) << 5),
(m_colorram[offs] & 0x30) >> 4,
0,sy >= 16, /* flip horizontally tiles on the right half of the bitmap */
@@ -150,7 +150,7 @@ UINT32 matmania_state::screen_update_matmania(screen_device &screen, bitmap_ind1
int sx = 15 - offs / 32;
int sy = offs % 32;
- m_gfxdecode->gfx(1)->opaque(*m_tmpbitmap2,m_tmpbitmap2->cliprect(),
+ m_gfxdecode->gfx(1)->opaque(m_palette,*m_tmpbitmap2,m_tmpbitmap2->cliprect(),
m_videoram3[offs] + ((m_colorram3[offs] & 0x08) << 5),
(m_colorram3[offs] & 0x30) >> 4,
0,sy >= 16, /* flip horizontally tiles on the right half of the bitmap */
@@ -172,7 +172,7 @@ UINT32 matmania_state::screen_update_matmania(screen_device &screen, bitmap_ind1
{
if (spriteram[offs] & 0x01)
{
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
spriteram[offs + 1] + ((spriteram[offs] & 0xf0) << 4),
(spriteram[offs] & 0x08) >> 3,
spriteram[offs] & 0x04, spriteram[offs] & 0x02,
@@ -187,7 +187,7 @@ UINT32 matmania_state::screen_update_matmania(screen_device &screen, bitmap_ind1
int sx = 31 - offs / 32;
int sy = offs % 32;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
m_videoram2[offs] + 256 * (m_colorram2[offs] & 0x07),
(m_colorram2[offs] & 0x30) >> 4,
0,0,
@@ -208,7 +208,7 @@ UINT32 matmania_state::screen_update_maniach(screen_device &screen, bitmap_ind16
int sx = 15 - offs / 32;
int sy = offs % 32;
- m_gfxdecode->gfx(1)->opaque(*m_tmpbitmap,m_tmpbitmap->cliprect(),
+ m_gfxdecode->gfx(1)->opaque(m_palette,*m_tmpbitmap,m_tmpbitmap->cliprect(),
m_videoram[offs] + ((m_colorram[offs] & 0x03) << 8),
(m_colorram[offs] & 0x30) >> 4,
0,sy >= 16, /* flip horizontally tiles on the right half of the bitmap */
@@ -221,7 +221,7 @@ UINT32 matmania_state::screen_update_maniach(screen_device &screen, bitmap_ind16
int sx = 15 - offs / 32;
int sy = offs % 32;
- m_gfxdecode->gfx(1)->opaque(*m_tmpbitmap2,m_tmpbitmap2->cliprect(),
+ m_gfxdecode->gfx(1)->opaque(m_palette,*m_tmpbitmap2,m_tmpbitmap2->cliprect(),
m_videoram3[offs] + ((m_colorram3[offs] & 0x03) << 8),
(m_colorram3[offs] & 0x30) >> 4,
0,sy >= 16, /* flip horizontally tiles on the right half of the bitmap */
@@ -245,7 +245,7 @@ UINT32 matmania_state::screen_update_maniach(screen_device &screen, bitmap_ind16
{
if (spriteram[offs] & 0x01)
{
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
spriteram[offs+1] + ((spriteram[offs] & 0xf0) << 4),
(spriteram[offs] & 0x08) >> 3,
spriteram[offs] & 0x04,spriteram[offs] & 0x02,
@@ -260,7 +260,7 @@ UINT32 matmania_state::screen_update_maniach(screen_device &screen, bitmap_ind16
int sx = 31 - offs / 32;
int sy = offs % 32;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
m_videoram2[offs] + 256 * (m_colorram2[offs] & 0x07),
(m_colorram2[offs] & 0x30) >> 4,
0,0,
diff --git a/src/mame/video/mcatadv.c b/src/mame/video/mcatadv.c
index 386e7916554..e4bab9f5ef2 100644
--- a/src/mame/video/mcatadv.c
+++ b/src/mame/video/mcatadv.c
@@ -199,7 +199,7 @@ UINT32 mcatadv_state::screen_update_mcatadv(screen_device &screen, bitmap_ind16
{
int i;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
screen.priority().fill(0, cliprect);
if (m_scroll1[2] != m_palette_bank1)
diff --git a/src/mame/video/mcr.c b/src/mame/video/mcr.c
index 542dbee7d53..8eaa469ceff 100644
--- a/src/mame/video/mcr.c
+++ b/src/mame/video/mcr.c
@@ -134,7 +134,7 @@ VIDEO_START_MEMBER(mcr_state,mcr)
void mcr_state::mcr_set_color(int index, int data)
{
- palette_set_color_rgb(machine(), index, pal3bit(data >> 6), pal3bit(data >> 0), pal3bit(data >> 3));
+ m_palette->set_pen_color(index, pal3bit(data >> 6), pal3bit(data >> 0), pal3bit(data >> 3));
}
@@ -151,7 +151,7 @@ void mcr_state::journey_set_color(int index, int data)
b = (b << 5) | (b << 1);
/* set the BG color */
- palette_set_color(machine(), index, rgb_t(r, g, b));
+ m_palette->set_pen_color(index, rgb_t(r, g, b));
/* if this is an odd entry in the upper palette bank, the hardware */
/* hard-codes a low 1 bit -- this is used for better grayscales */
@@ -163,7 +163,7 @@ void mcr_state::journey_set_color(int index, int data)
}
/* set the FG color */
- palette_set_color(machine(), index + 64, rgb_t(r, g, b));
+ m_palette->set_pen_color(index + 64, rgb_t(r, g, b));
}
diff --git a/src/mame/video/mcr3.c b/src/mame/video/mcr3.c
index 71ffe3397b6..596d83d2f36 100644
--- a/src/mame/video/mcr3.c
+++ b/src/mame/video/mcr3.c
@@ -73,16 +73,16 @@ PALETTE_INIT_MEMBER(mcr3_state,spyhunt)
{
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
- palette_set_color(machine(),i,rgb_t::black); /* black */
+ palette.set_pen_color(i,rgb_t::black); /* black */
}
/* alpha colors are hard-coded */
- palette_set_color(machine(),4*16+0,rgb_t(0x00,0x00,0x00));
- palette_set_color(machine(),4*16+1,rgb_t(0x00,0xff,0x00));
- palette_set_color(machine(),4*16+2,rgb_t(0x00,0x00,0xff));
- palette_set_color(machine(),4*16+3,rgb_t(0xff,0xff,0xff));
+ palette.set_pen_color(4*16+0,rgb_t(0x00,0x00,0x00));
+ palette.set_pen_color(4*16+1,rgb_t(0x00,0xff,0x00));
+ palette.set_pen_color(4*16+2,rgb_t(0x00,0x00,0xff));
+ palette.set_pen_color(4*16+3,rgb_t(0xff,0xff,0xff));
}
@@ -154,7 +154,7 @@ WRITE8_MEMBER(mcr3_state::mcr3_paletteram_w)
offset &= 0x7f;
/* high bit of red comes from low bit of address */
- palette_set_color_rgb(machine(), offset / 2, pal3bit(((offset & 1) << 2) + (data >> 6)), pal3bit(data >> 0), pal3bit(data >> 3));
+ m_palette->set_pen_color(offset / 2, pal3bit(((offset & 1) << 2) + (data >> 6)), pal3bit(data >> 0), pal3bit(data >> 3));
}
WRITE8_MEMBER(mcr3_state::spyhuntpr_paletteram_w)
@@ -166,7 +166,7 @@ WRITE8_MEMBER(mcr3_state::spyhuntpr_paletteram_w)
int g = (data & 0x38) >> 3;
int b = (data & 0xc0) >> 6;
- palette_set_color(machine(), offset^0xf, rgb_t(r<<5,g<<5,b<<6));
+ m_palette->set_pen_color(offset^0xf, rgb_t(r<<5,g<<5,b<<6));
}
@@ -277,21 +277,21 @@ void mcr3_state::mcr3_update_sprites(screen_device &screen, bitmap_ind16 &bitmap
if (!mcr_cocktail_flip)
{
/* first draw the sprite, visible */
- m_gfxdecode->gfx(1)->prio_transmask(bitmap,cliprect, code, color, flipx, flipy, sx, sy,
+ m_gfxdecode->gfx(1)->prio_transmask(m_palette,bitmap,cliprect, code, color, flipx, flipy, sx, sy,
screen.priority(), 0x00, 0x0101);
/* then draw the mask, behind the background but obscuring following sprites */
- m_gfxdecode->gfx(1)->prio_transmask(bitmap,cliprect, code, color, flipx, flipy, sx, sy,
+ m_gfxdecode->gfx(1)->prio_transmask(m_palette,bitmap,cliprect, code, color, flipx, flipy, sx, sy,
screen.priority(), 0x02, 0xfeff);
}
else
{
/* first draw the sprite, visible */
- m_gfxdecode->gfx(1)->prio_transmask(bitmap,cliprect, code, color, !flipx, !flipy, 480 - sx, 452 - sy,
+ m_gfxdecode->gfx(1)->prio_transmask(m_palette,bitmap,cliprect, code, color, !flipx, !flipy, 480 - sx, 452 - sy,
screen.priority(), 0x00, 0x0101);
/* then draw the mask, behind the background but obscuring following sprites */
- m_gfxdecode->gfx(1)->prio_transmask(bitmap,cliprect, code, color, !flipx, !flipy, 480 - sx, 452 - sy,
+ m_gfxdecode->gfx(1)->prio_transmask(m_palette,bitmap,cliprect, code, color, !flipx, !flipy, 480 - sx, 452 - sy,
screen.priority(), 0x02, 0xfeff);
}
}
diff --git a/src/mame/video/mcr68.c b/src/mame/video/mcr68.c
index b17696ceaf9..db00c40b26d 100644
--- a/src/mame/video/mcr68.c
+++ b/src/mame/video/mcr68.c
@@ -143,7 +143,7 @@ WRITE16_MEMBER(mcr68_state::mcr68_paletteram_w)
COMBINE_DATA(&m_generic_paletteram_16[offset]);
newword = m_generic_paletteram_16[offset];
- palette_set_color_rgb(machine(), offset, pal3bit(newword >> 6), pal3bit(newword >> 0), pal3bit(newword >> 3));
+ m_palette->set_pen_color(offset, pal3bit(newword >> 6), pal3bit(newword >> 0), pal3bit(newword >> 3));
}
@@ -153,7 +153,7 @@ WRITE16_MEMBER(mcr68_state::zwackery_paletteram_w)
COMBINE_DATA(&m_generic_paletteram_16[offset]);
newword = m_generic_paletteram_16[offset];
- palette_set_color_rgb(machine(), offset, pal5bit(~newword >> 10), pal5bit(~newword >> 0), pal5bit(~newword >> 5));
+ m_palette->set_pen_color(offset, pal5bit(~newword >> 10), pal5bit(~newword >> 0), pal5bit(~newword >> 5));
}
@@ -240,11 +240,11 @@ void mcr68_state::mcr68_update_sprites(screen_device &screen, bitmap_ind16 &bitm
The color 8 is used to cover over other sprites. */
/* first draw the sprite, visible */
- m_gfxdecode->gfx(1)->prio_transmask(bitmap,sprite_clip, code, color, flipx, flipy, x, y,
+ m_gfxdecode->gfx(1)->prio_transmask(m_palette,bitmap,sprite_clip, code, color, flipx, flipy, x, y,
screen.priority(), 0x00, 0x0101);
/* then draw the mask, behind the background but obscuring following sprites */
- m_gfxdecode->gfx(1)->prio_transmask(bitmap,sprite_clip, code, color, flipx, flipy, x, y,
+ m_gfxdecode->gfx(1)->prio_transmask(m_palette,bitmap,sprite_clip, code, color, flipx, flipy, x, y,
screen.priority(), 0x02, 0xfeff);
}
}
@@ -297,11 +297,11 @@ void mcr68_state::zwackery_update_sprites(screen_device &screen, bitmap_ind16 &b
The color 8 is used to cover over other sprites. */
/* first draw the sprite, visible */
- m_gfxdecode->gfx(1)->prio_transmask(bitmap,cliprect, code, color, flipx, flipy, x, y,
+ m_gfxdecode->gfx(1)->prio_transmask(m_palette,bitmap,cliprect, code, color, flipx, flipy, x, y,
screen.priority(), 0x00, 0x0101);
/* then draw the mask, behind the background but obscuring following sprites */
- m_gfxdecode->gfx(1)->prio_transmask(bitmap,cliprect, code, color, flipx, flipy, x, y,
+ m_gfxdecode->gfx(1)->prio_transmask(m_palette,bitmap,cliprect, code, color, flipx, flipy, x, y,
screen.priority(), 0x02, 0xfeff);
}
}
diff --git a/src/mame/video/meadows.c b/src/mame/video/meadows.c
index 52c92b7fc17..40c9b1a75d8 100644
--- a/src/mame/video/meadows.c
+++ b/src/mame/video/meadows.c
@@ -88,7 +88,7 @@ void meadows_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &clip)
int bank = i; /* that fixes it for now :-/ */
int flip = spriteram[i+8] >> 5; /* bit #5 flip vertical flag */
- m_gfxdecode->gfx(bank + 1)->transpen(bitmap,clip, code, 0, flip, 0, x, y, 0);
+ m_gfxdecode->gfx(bank + 1)->transpen(m_palette,bitmap,clip, code, 0, flip, 0, x, y, 0);
}
}
diff --git a/src/mame/video/megasys1.c b/src/mame/video/megasys1.c
index 6acab4f965b..b0def8bbd93 100644
--- a/src/mame/video/megasys1.c
+++ b/src/mame/video/megasys1.c
@@ -597,7 +597,7 @@ void megasys1_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,co
code = spritedata[0x0E/2] + objectdata[0x06/2];
color = (attr & color_mask);
- m_gfxdecode->gfx(3)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->prio_transpen(m_palette,bitmap,cliprect,
(code & 0xfff ) + ((m_sprite_bank & 1) << 12),
color,
flipx, flipy,
@@ -637,7 +637,7 @@ void megasys1_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,co
sx = 240-sx; sy = 240-sy;
}
- m_gfxdecode->gfx(2)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->prio_transpen(m_palette,bitmap,cliprect,
code,
color,
flipx, flipy,
diff --git a/src/mame/video/megazone.c b/src/mame/video/megazone.c
index f8f2cfe7aaf..433bfea5cd0 100644
--- a/src/mame/video/megazone.c
+++ b/src/mame/video/megazone.c
@@ -36,7 +36,7 @@ Changes by Martin M. (pfloyd@gmx.net) 14.10.2001:
***************************************************************************/
-void megazone_state::palette_init()
+PALETTE_INIT_MEMBER(megazone_state, megazone)
{
const UINT8 *color_prom = memregion("proms")->base();
static const int resistances_rg[3] = { 1000, 470, 220 };
@@ -50,9 +50,6 @@ void megazone_state::palette_init()
3, &resistances_rg[0], gweights, 1000, 0,
2, &resistances_b[0], bweights, 1000, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x20);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -76,7 +73,7 @@ void megazone_state::palette_init()
bit1 = BIT(color_prom[i], 7);
b = combine_2_weights(bweights, bit0, bit1);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -86,14 +83,14 @@ void megazone_state::palette_init()
for (i = 0; i < 0x100; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* characters */
for (i = 0x100; i < 0x200; i++)
{
UINT8 ctabentry = (color_prom[i] & 0x0f) | 0x10;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -133,7 +130,7 @@ UINT32 megazone_state::screen_update_megazone(screen_device &screen, bitmap_ind1
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->opaque(*m_tmpbitmap,m_tmpbitmap->cliprect(),
+ m_gfxdecode->gfx(1)->opaque(m_palette,*m_tmpbitmap,m_tmpbitmap->cliprect(),
((int)m_videoram[offs]) + ((m_colorram[offs] & (1 << 7) ? 256 : 0) ),
(m_colorram[offs] & 0x0f) + 0x10,
flipx,flipy,
@@ -180,12 +177,12 @@ UINT32 megazone_state::screen_update_megazone(screen_device &screen, bitmap_ind1
else
sx = sx + 32;
- m_gfxdecode->gfx(0)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transmask(m_palette,bitmap,cliprect,
spriteram[offs + 2],
color,
flipx,flipy,
sx,sy,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(0), color, 0));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(0), color, 0));
}
}
@@ -213,7 +210,7 @@ UINT32 megazone_state::screen_update_megazone(screen_device &screen, bitmap_ind1
- m_gfxdecode->gfx(1)->opaque(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->opaque(m_palette,bitmap,cliprect,
((int)m_videoram2[offs]) + ((m_colorram2[offs] & (1 << 7) ? 256 : 0) ),
(m_colorram2[offs] & 0x0f) + 0x10,
flipx,flipy,
diff --git a/src/mame/video/mermaid.c b/src/mame/video/mermaid.c
index 71b7ea06f55..05a8544a7df 100644
--- a/src/mame/video/mermaid.c
+++ b/src/mame/video/mermaid.c
@@ -2,35 +2,32 @@
#include "includes/mermaid.h"
-void mermaid_state::palette_init()
+PALETTE_INIT_MEMBER(mermaid_state, mermaid)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x41);
-
for (i = 0; i < 0x40; i++)
{
int r = 0x21 * BIT(color_prom[i], 0) + 0x47 * BIT(color_prom[i], 1) + 0x97 * BIT(color_prom[i], 2);
int g = 0x21 * BIT(color_prom[i], 3) + 0x47 * BIT(color_prom[i], 4) + 0x97 * BIT(color_prom[i], 5);
int b = 0x47 * BIT(color_prom[i], 6) + 0x97 * BIT(color_prom[i], 7);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* blue background */
- colortable_palette_set_color(machine().colortable, 0x40, rgb_t(0, 0, 0xff));
+ palette.set_indirect_color(0x40, rgb_t(0, 0, 0xff));
/* char/sprite palette */
for (i = 0; i < 0x40; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
/* background palette */
- colortable_entry_set_value(machine().colortable, 0x40, 0x20);
- colortable_entry_set_value(machine().colortable, 0x41, 0x21);
- colortable_entry_set_value(machine().colortable, 0x42, 0x40);
- colortable_entry_set_value(machine().colortable, 0x43, 0x21);
+ palette.set_pen_indirect(0x40, 0x20);
+ palette.set_pen_indirect(0x41, 0x21);
+ palette.set_pen_indirect(0x42, 0x40);
+ palette.set_pen_indirect(0x43, 0x21);
}
PALETTE_INIT_MEMBER(mermaid_state,rougien)
@@ -38,30 +35,27 @@ PALETTE_INIT_MEMBER(mermaid_state,rougien)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x41);
-
for (i = 0; i < 0x40; i++)
{
int r = 0x21 * BIT(color_prom[i], 0) + 0x47 * BIT(color_prom[i], 1) + 0x97 * BIT(color_prom[i], 2);
int g = 0x21 * BIT(color_prom[i], 3) + 0x47 * BIT(color_prom[i], 4) + 0x97 * BIT(color_prom[i], 5);
int b = 0x47 * BIT(color_prom[i], 6) + 0x97 * BIT(color_prom[i], 7);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* blue background */
- colortable_palette_set_color(machine().colortable, 0x40, rgb_t(0, 0, 0));
+ palette.set_indirect_color(0x40, rgb_t(0, 0, 0));
/* char/sprite palette */
for (i = 0; i < 0x40; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
/* background palette */
- colortable_entry_set_value(machine().colortable, 0x40, 0x40);
- colortable_entry_set_value(machine().colortable, 0x41, 0x00);
- colortable_entry_set_value(machine().colortable, 0x42, 0x00);
- colortable_entry_set_value(machine().colortable, 0x43, 0x02);
+ palette.set_pen_indirect(0x40, 0x40);
+ palette.set_pen_indirect(0x41, 0x00);
+ palette.set_pen_indirect(0x42, 0x00);
+ palette.set_pen_indirect(0x43, 0x02);
}
@@ -215,7 +209,7 @@ void mermaid_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
}
- m_gfxdecode->gfx(1)->transpen(bitmap,(flip_screen_x() ? flip_spritevisiblearea : spritevisiblearea), code, color, flipx, flipy, sx, sy, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,(flip_screen_x() ? flip_spritevisiblearea : spritevisiblearea), code, color, flipx, flipy, sx, sy, 0);
}
}
@@ -237,8 +231,8 @@ UINT8 mermaid_state::collision_check( 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, m_helper.pix16(y, x)) & 0x3f;
- UINT16 b = colortable_entry_get_value(machine().colortable, m_helper2.pix16(y, x)) & 0x3f;
+ UINT16 a = m_palette->pen_indirect(m_helper.pix16(y, x)) & 0x3f;
+ UINT16 b = m_palette->pen_indirect(m_helper2.pix16(y, x)) & 0x3f;
if (b)
if (a)
@@ -310,7 +304,7 @@ void mermaid_state::screen_eof_mermaid(screen_device &screen, bool state)
m_bg_tilemap->draw(screen, m_helper, rect, 0, 0);
- m_gfxdecode->gfx(1)->transpen(m_helper2,rect, code, 0, flipx, flipy, sx, sy, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,m_helper2,rect, code, 0, flipx, flipy, sx, sy, 0);
m_coll_bit2 |= collision_check(rect);
@@ -321,7 +315,7 @@ void mermaid_state::screen_eof_mermaid(screen_device &screen, bool state)
m_fg_tilemap->draw(screen, m_helper, rect, 0, 0);
- m_gfxdecode->gfx(1)->transpen(m_helper2,rect, code, 0, flipx, flipy, sx, sy, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,m_helper2,rect, code, 0, flipx, flipy, sx, sy, 0);
m_coll_bit1 |= collision_check(rect);
@@ -359,10 +353,10 @@ void mermaid_state::screen_eof_mermaid(screen_device &screen, bool state)
sy2 = 240 - sy2;
}
- m_gfxdecode->gfx(1)->transpen(m_helper,rect, code2, 0, flipx2, flipy2, sx2, sy2, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,m_helper,rect, code2, 0, flipx2, flipy2, sx2, sy2, 0);
}
- m_gfxdecode->gfx(1)->transpen(m_helper2,rect, code, 0, flipx, flipy, sx, sy, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,m_helper2,rect, code, 0, flipx, flipy, sx, sy, 0);
m_coll_bit0 |= collision_check(rect);
}
@@ -440,10 +434,10 @@ void mermaid_state::screen_eof_mermaid(screen_device &screen, bool state)
sy2 = 240 - sy2;
}
- m_gfxdecode->gfx(1)->transpen(m_helper,rect, code2, 0, flipx2, flipy2, sx2, sy2, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,m_helper,rect, code2, 0, flipx2, flipy2, sx2, sy2, 0);
}
- m_gfxdecode->gfx(1)->transpen(m_helper2,rect, code, 0, flipx, flipy, sx, sy, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,m_helper2,rect, code, 0, flipx, flipy, sx, sy, 0);
m_coll_bit3 |= collision_check(rect);
}
@@ -521,10 +515,10 @@ void mermaid_state::screen_eof_mermaid(screen_device &screen, bool state)
sy2 = 240 - sy2;
}
- m_gfxdecode->gfx(1)->transpen(m_helper,rect, code2, 0, flipx2, flipy2, sx2, sy2, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,m_helper,rect, code2, 0, flipx2, flipy2, sx2, sy2, 0);
}
- m_gfxdecode->gfx(1)->transpen(m_helper2,rect, code, 0, flipx, flipy, sx, sy, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,m_helper2,rect, code, 0, flipx, flipy, sx, sy, 0);
m_coll_bit6 |= collision_check(rect);
}
diff --git a/src/mame/video/metlclsh.c b/src/mame/video/metlclsh.c
index 53f4c205452..e15727bfc0b 100644
--- a/src/mame/video/metlclsh.c
+++ b/src/mame/video/metlclsh.c
@@ -201,15 +201,15 @@ void metlclsh_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
{
if (sizey)
{
- gfx->transpen(bitmap,cliprect, code & ~1, color, flipx,flipy,
+ gfx->transpen(m_palette,bitmap,cliprect, code & ~1, color, flipx,flipy,
sx, sy + (flipy ? 0 : -16) + wrapy,0);
- gfx->transpen(bitmap,cliprect, code | 1, color, flipx,flipy,
+ gfx->transpen(m_palette,bitmap,cliprect, code | 1, color, flipx,flipy,
sx,sy + (flipy ? -16 : 0) + wrapy,0);
}
else
{
- gfx->transpen(bitmap,cliprect, code, color, flipx,flipy,
+ gfx->transpen(m_palette,bitmap,cliprect, code, color, flipx,flipy,
sx,sy + wrapy,0);
}
}
diff --git a/src/mame/video/metro.c b/src/mame/video/metro.c
index 356a57b22b3..f8a47701337 100644
--- a/src/mame/video/metro.c
+++ b/src/mame/video/metro.c
@@ -502,9 +502,9 @@ void metro_state::metro_draw_sprites( screen_device &screen, bitmap_ind16 &bitma
if ((gfxstart + width * height - 1) >= gfx_size)
continue;
- gfx_element gfx(machine(), base_gfx8 + gfxstart, width, height, width, 0, 256);
+ gfx_element gfx(machine(), base_gfx8 + gfxstart, width, height, width, m_palette->entries(), 0, 256);
- gfx.prio_zoom_transpen(bitmap,cliprect,
+ gfx.prio_zoom_transpen(m_palette, bitmap,cliprect,
0,
color_start >> 4,
flipx, flipy,
@@ -518,9 +518,9 @@ void metro_state::metro_draw_sprites( screen_device &screen, bitmap_ind16 &bitma
if ((gfxstart + width / 2 * height - 1) >= gfx_size)
continue;
- gfx_element gfx(machine(), base_gfx4 + 2 * gfxstart, width, height, width, 0, 16);
+ gfx_element gfx(machine(), base_gfx4 + 2 * gfxstart, width, height, width, m_palette->entries(),0, 16);
- gfx.prio_zoom_transpen(bitmap,cliprect,
+ gfx.prio_zoom_transpen(m_palette, bitmap,cliprect,
0,
color + color_start,
flipx, flipy,
@@ -703,7 +703,7 @@ if (machine().input().code_pressed(KEYCODE_Z))
if (machine().input().code_pressed(KEYCODE_A)) msk |= 8;
if (msk != 0)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
layers_ctrl &= msk;
}
diff --git a/src/mame/video/mexico86.c b/src/mame/video/mexico86.c
index 0e80ec8e54f..e8c3b4ce18a 100644
--- a/src/mame/video/mexico86.c
+++ b/src/mame/video/mexico86.c
@@ -85,7 +85,7 @@ UINT32 mexico86_state::screen_update_mexico86(screen_device &screen, bitmap_ind1
x = (sx + xc * 8) & 0xff;
y = (sy + yc * 8) & 0xff;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -105,7 +105,7 @@ UINT32 mexico86_state::screen_update_kikikai(screen_device &screen, bitmap_ind16
int goffs, code, color, y;
int tx, ty;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
sx = 0;
for (offs = 0; offs < m_objectram.bytes(); offs += 4)
{
@@ -143,7 +143,7 @@ UINT32 mexico86_state::screen_update_kikikai(screen_device &screen, bitmap_ind16
color = (m_videoram[goffs + 1] & 0xe0) >> 5;
goffs += 0x40;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
color,
0,0,
@@ -152,7 +152,7 @@ UINT32 mexico86_state::screen_update_kikikai(screen_device &screen, bitmap_ind16
code = m_videoram[goffs] + ((m_videoram[goffs + 1] & 0x1f) << 8);
color = (m_videoram[goffs + 1] & 0xe0) >> 5;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
color,
0,0,
diff --git a/src/mame/video/micro3d.c b/src/mame/video/micro3d.c
index 2928f1e92ba..c63259aa198 100644
--- a/src/mame/video/micro3d.c
+++ b/src/mame/video/micro3d.c
@@ -109,7 +109,7 @@ WRITE16_MEMBER(micro3d_state::micro3d_clut_w)
COMBINE_DATA(&m_generic_paletteram_16[offset]);
word = m_generic_paletteram_16[offset];
- palette_set_color_rgb(machine(), offset, pal5bit(word >> 6), pal5bit(word >> 1), pal5bit(word >> 11));
+ m_palette->set_pen_color(offset, pal5bit(word >> 6), pal5bit(word >> 1), pal5bit(word >> 11));
}
WRITE16_MEMBER(micro3d_state::micro3d_creg_w)
diff --git a/src/mame/video/midtunit.c b/src/mame/video/midtunit.c
index c62acfb6218..8b1f47319bf 100644
--- a/src/mame/video/midtunit.c
+++ b/src/mame/video/midtunit.c
@@ -301,7 +301,7 @@ WRITE16_MEMBER(midtunit_state::midtunit_paletteram_w)
COMBINE_DATA(&m_generic_paletteram_16[offset]);
//newword = m_generic_paletteram_16[offset];
- palette_set_color_rgb(machine(), offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
+ m_palette->set_pen_color(offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
}
diff --git a/src/mame/video/midvunit.c b/src/mame/video/midvunit.c
index 5aa1f059bbc..1ae3a0bb513 100644
--- a/src/mame/video/midvunit.c
+++ b/src/mame/video/midvunit.c
@@ -509,7 +509,7 @@ WRITE32_MEMBER(midvunit_state::midvunit_paletteram_w)
COMBINE_DATA(&m_generic_paletteram_32[offset]);
newword = m_generic_paletteram_32[offset];
- palette_set_color_rgb(machine(), offset, pal5bit(newword >> 10), pal5bit(newword >> 5), pal5bit(newword >> 0));
+ m_palette->set_pen_color(offset, pal5bit(newword >> 10), pal5bit(newword >> 5), pal5bit(newword >> 0));
}
diff --git a/src/mame/video/midyunit.c b/src/mame/video/midyunit.c
index 6d68b79fac9..4463e3083c7 100644
--- a/src/mame/video/midyunit.c
+++ b/src/mame/video/midyunit.c
@@ -235,7 +235,7 @@ WRITE16_MEMBER(midyunit_state::midyunit_paletteram_w)
COMBINE_DATA(&m_generic_paletteram_16[offset]);
newword = m_generic_paletteram_16[offset];
- palette_set_color_rgb(machine(), offset & m_palette_mask, pal5bit(newword >> 10), pal5bit(newword >> 5), pal5bit(newword >> 0));
+ m_palette->set_pen_color(offset & m_palette_mask, pal5bit(newword >> 10), pal5bit(newword >> 5), pal5bit(newword >> 0));
}
diff --git a/src/mame/video/midzeus.c b/src/mame/video/midzeus.c
index fed25a6a384..500d14d5941 100644
--- a/src/mame/video/midzeus.c
+++ b/src/mame/video/midzeus.c
@@ -269,7 +269,7 @@ VIDEO_START_MEMBER(midzeus_state,midzeus)
/* initialize a 5-5-5 palette */
for (i = 0; i < 32768; i++)
- palette_set_color_rgb(machine(), i, pal5bit(i >> 10), pal5bit(i >> 5), pal5bit(i >> 0));
+ m_palette->set_pen_color(i, pal5bit(i >> 10), pal5bit(i >> 5), pal5bit(i >> 0));
/* initialize polygon engine */
poly = poly_alloc(machine(), 10000, sizeof(poly_extra_data), POLYFLAG_ALLOW_QUADS);
diff --git a/src/mame/video/mikie.c b/src/mame/video/mikie.c
index 04d4145cd5f..8ef54cced81 100644
--- a/src/mame/video/mikie.c
+++ b/src/mame/video/mikie.c
@@ -26,7 +26,7 @@
***************************************************************************/
-void mikie_state::palette_init()
+PALETTE_INIT_MEMBER(mikie_state, mikie)
{
const UINT8 *color_prom = memregion("proms")->base();
static const int resistances[4] = { 2200, 1000, 470, 220 };
@@ -39,9 +39,6 @@ void mikie_state::palette_init()
4, resistances, gweights, 470, 0,
4, resistances, bweights, 470, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
@@ -69,7 +66,7 @@ void mikie_state::palette_init()
bit3 = (color_prom[i + 0x200] >> 3) & 0x01;
b = combine_4_weights(bweights, bit0, bit1, bit2, bit3);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table,*/
@@ -83,7 +80,7 @@ void mikie_state::palette_init()
for (j = 0; j < 8; j++)
{
UINT8 ctabentry = (j << 5) | ((~i & 0x100) >> 4) | (color_prom[i] & 0x0f);
- colortable_entry_set_value(machine().colortable, ((i & 0x100) << 3) | (j << 8) | (i & 0xff), ctabentry);
+ m_palette->set_pen_indirect(((i & 0x100) << 3) | (j << 8) | (i & 0xff), ctabentry);
}
}
}
@@ -160,7 +157,7 @@ void mikie_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
}
- m_gfxdecode->gfx(gfxbank)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(gfxbank)->transpen(m_palette,bitmap,cliprect,
code, color,
flipx,flipy,
sx,sy, 0);
diff --git a/src/mame/video/mitchell.c b/src/mame/video/mitchell.c
index 44f05439f5e..1c1ab8c4475 100644
--- a/src/mame/video/mitchell.c
+++ b/src/mame/video/mitchell.c
@@ -39,12 +39,14 @@ VIDEO_START_MEMBER(mitchell_state,pang)
m_bg_tilemap->set_transparent_pen(15);
/* OBJ RAM */
- m_objram = auto_alloc_array_clear(machine(), UINT8, m_videoram.bytes());
+ m_objram.resize(m_videoram.bytes());
/* Palette RAM */
- m_generic_paletteram_8.allocate(2 * machine().total_colors());
+ m_paletteram.resize(2 * m_palette->entries());
+ m_palette->basemem().set(m_paletteram, ENDIANNESS_LITTLE, 2);
- save_pointer(NAME(m_objram), m_videoram.bytes());
+ save_item(NAME(m_objram));
+ save_item(NAME(m_paletteram));
}
@@ -238,28 +240,12 @@ logerror("PC %04x: pang_gfxctrl_w %02x\n",space.device().safe_pc(),data);
WRITE8_MEMBER(mitchell_state::pang_paletteram_w)
{
- if (m_paletteram_bank)
- paletteram_xxxxRRRRGGGGBBBB_byte_le_w(space, offset + 0x800, data);
- else
- paletteram_xxxxRRRRGGGGBBBB_byte_le_w(space, offset, data);
+ m_palette->write(space, offset + (m_paletteram_bank ? 0x800 : 0x000), data);
}
READ8_MEMBER(mitchell_state::pang_paletteram_r)
{
- if (m_paletteram_bank)
- return m_generic_paletteram_8[offset + 0x800];
-
- return m_generic_paletteram_8[offset];
-}
-
-WRITE8_MEMBER(mitchell_state::mgakuen_paletteram_w)
-{
- paletteram_xxxxRRRRGGGGBBBB_byte_le_w(space, offset, data);
-}
-
-READ8_MEMBER(mitchell_state::mgakuen_paletteram_r)
-{
- return m_generic_paletteram_8[offset];
+ return m_palette->basemem().read8(offset + (m_paletteram_bank ? 0x800 : 0x000));
}
@@ -289,7 +275,7 @@ void mitchell_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
sx = 496 - sx;
sy = 240 - sy;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
color,
m_flipscreen, m_flipscreen,
diff --git a/src/mame/video/mjkjidai.c b/src/mame/video/mjkjidai.c
index 3a3a7e2117c..049c1964df9 100644
--- a/src/mame/video/mjkjidai.c
+++ b/src/mame/video/mjkjidai.c
@@ -112,7 +112,7 @@ void mjkjidai_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect
sx += 16;
sy += 1;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -125,7 +125,7 @@ void mjkjidai_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect
UINT32 mjkjidai_state::screen_update_mjkjidai(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
if (!m_display_enable)
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
else
{
m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0);
diff --git a/src/mame/video/model1.c b/src/mame/video/model1.c
index 2a1d9f9f38b..70f36d73227 100644
--- a/src/mame/video/model1.c
+++ b/src/mame/video/model1.c
@@ -454,10 +454,10 @@ static void draw_quads(model1_state *state, bitmap_rgb32 &bitmap, const rectangl
fill_quad(bitmap, view, q);
#if 0
- draw_line(bitmap, get_black_pen(screen.machine()), q->p[0]->s.x, q->p[0]->s.y, q->p[1]->s.x, q->p[1]->s.y);
- draw_line(bitmap, get_black_pen(screen.machine()), q->p[1]->s.x, q->p[1]->s.y, q->p[2]->s.x, q->p[2]->s.y);
- draw_line(bitmap, get_black_pen(screen.machine()), q->p[2]->s.x, q->p[2]->s.y, q->p[3]->s.x, q->p[3]->s.y);
- draw_line(bitmap, get_black_pen(screen.machine()), q->p[3]->s.x, q->p[3]->s.y, q->p[0]->s.x, q->p[0]->s.y);
+ draw_line(bitmap, m_palette->black_pen(), q->p[0]->s.x, q->p[0]->s.y, q->p[1]->s.x, q->p[1]->s.y);
+ draw_line(bitmap, m_palette->black_pen(), q->p[1]->s.x, q->p[1]->s.y, q->p[2]->s.x, q->p[2]->s.y);
+ draw_line(bitmap, m_palette->black_pen(), q->p[2]->s.x, q->p[2]->s.y, q->p[3]->s.x, q->p[3]->s.y);
+ draw_line(bitmap, m_palette->black_pen(), q->p[3]->s.x, q->p[3]->s.y, q->p[0]->s.x, q->p[0]->s.y);
#endif
}
@@ -1445,8 +1445,6 @@ static void tgp_scan(running_machine &machine)
VIDEO_START_MEMBER(model1_state,model1)
{
- m_paletteram16 = m_generic_paletteram_16;
-
m_view = auto_alloc_clear(machine(), struct view);
m_poly_rom = (UINT32 *)memregion("user1")->base();
@@ -1515,7 +1513,7 @@ UINT32 model1_state::screen_update_model1(screen_device &screen, bitmap_rgb32 &b
view->ayys = sin(view->ayy);
screen.priority().fill(0);
- bitmap.fill(machine().pens[0], cliprect);
+ bitmap.fill(m_palette->pen(0), cliprect);
segas24_tile *tile = machine().device<segas24_tile>("tile");
tile->draw(screen, bitmap, cliprect, 6, 0, 0);
diff --git a/src/mame/video/model2.c b/src/mame/video/model2.c
index f2eee94c21a..664c11943e5 100644
--- a/src/mame/video/model2.c
+++ b/src/mame/video/model2.c
@@ -2719,7 +2719,7 @@ UINT32 model2_state::screen_update_model2(screen_device &screen, bitmap_rgb32 &b
{
logerror("--- frame ---\n");
- bitmap.fill(machine().pens[0], cliprect);
+ bitmap.fill(m_palette->pen(0), cliprect);
m_sys24_bitmap.fill(0, cliprect);
segas24_tile *tile = machine().device<segas24_tile>("tile");
diff --git a/src/mame/video/momoko.c b/src/mame/video/momoko.c
index cb4ae935619..049c4e88c3f 100644
--- a/src/mame/video/momoko.c
+++ b/src/mame/video/momoko.c
@@ -142,7 +142,7 @@ UINT32 momoko_state::screen_update_momoko(screen_device &screen, bitmap_ind16 &b
py = 248 - (8 * y + dy + 9);
}
- m_gfxdecode->gfx(1)->opaque(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->opaque(m_palette,bitmap,cliprect,
chr,
col,
flip,flip,
@@ -176,7 +176,7 @@ UINT32 momoko_state::screen_update_momoko(screen_device &screen, bitmap_ind16 &b
py = y + 1;
}
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect,
chr,
col,
!fx,fy,
@@ -238,7 +238,7 @@ UINT32 momoko_state::screen_update_momoko(screen_device &screen, bitmap_ind16 &b
px = 248 - x;
py = y + 1;
}
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect,
chr,
col,
!fx,fy,
@@ -271,7 +271,7 @@ UINT32 momoko_state::screen_update_momoko(screen_device &screen, bitmap_ind16 &b
px = 248 - x * 8;
py = 255 - y;
}
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
m_videoram[(sy >> 3) * 32 + x] * 8 + dy,
col,
flip,0,
@@ -304,7 +304,7 @@ UINT32 momoko_state::screen_update_momoko(screen_device &screen, bitmap_ind16 &b
px = 248 - (8 * x + dx - 8);
py = 248 - (8 * y + dy + 9);
}
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
chr,
0, /* color */
flip,flip, /* flip */
diff --git a/src/mame/video/mouser.c b/src/mame/video/mouser.c
index bd37879c7a8..68f9c0ff4b9 100644
--- a/src/mame/video/mouser.c
+++ b/src/mame/video/mouser.c
@@ -16,12 +16,12 @@
#include "emu.h"
#include "includes/mouser.h"
-void mouser_state::palette_init()
+PALETTE_INIT_MEMBER(mouser_state, mouser)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -40,7 +40,7 @@ void mouser_state::palette_init()
bit1 = BIT(*color_prom, 7);
b = 0x4f * bit0 + 0xa8 * bit1;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
color_prom++;
}
}
@@ -90,7 +90,7 @@ UINT32 mouser_state::screen_update_mouser(screen_device &screen, bitmap_ind16 &b
/* Note: this is _not_ dependant on flipping */
color_offs = offs % 32 + ((256 + 8 * (offs / 32) - spriteram[offs % 32] )% 256) / 8 * 32;
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect,
m_videoram[offs] | (m_colorram[color_offs] >> 5) * 256 | ((m_colorram[color_offs] >> 4) & 1) * 512,
m_colorram[color_offs]%16,
flip_screen_x(),flip_screen_y(),
@@ -121,7 +121,7 @@ UINT32 mouser_state::screen_update_mouser(screen_device &screen, bitmap_ind16 &b
}
if (BIT(spriteram[offs + 1], 4))
- m_gfxdecode->gfx(1+((spriteram[offs+1]&0x20)>>5))->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1+((spriteram[offs+1]&0x20)>>5))->transpen(m_palette,bitmap,cliprect,
spriteram[offs]&0x3f,
spriteram[offs+1]%16,
flipx,flipy,
@@ -150,7 +150,7 @@ UINT32 mouser_state::screen_update_mouser(screen_device &screen, bitmap_ind16 &b
}
if (BIT(spriteram[offs + 1], 4))
- m_gfxdecode->gfx(1+((spriteram[offs+1]&0x20)>>5))->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1+((spriteram[offs+1]&0x20)>>5))->transpen(m_palette,bitmap,cliprect,
spriteram[offs]&0x3f,
spriteram[offs+1]%16,
flipx,flipy,
diff --git a/src/mame/video/mrdo.c b/src/mame/video/mrdo.c
index 53442614444..8a95c55c598 100644
--- a/src/mame/video/mrdo.c
+++ b/src/mame/video/mrdo.c
@@ -42,7 +42,7 @@
***************************************************************************/
-void mrdo_state::palette_init()
+PALETTE_INIT_MEMBER(mrdo_state, mrdo)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -75,9 +75,6 @@ void mrdo_state::palette_init()
if (weight[i] < 0) weight[i] = 0;
}
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
for (i = 0; i < 0x100; i++)
{
int a1,a2;
@@ -102,7 +99,7 @@ void mrdo_state::palette_init()
bits2 = (color_prom[a2] >> 4) & 0x03;
b = weight[bits0 + (bits2 << 2)];
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -110,7 +107,7 @@ void mrdo_state::palette_init()
/* characters */
for (i = 0; i < 0x100; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
/* sprites */
for (i = 0x100; i < 0x140; i++)
@@ -122,7 +119,7 @@ void mrdo_state::palette_init()
else
ctabentry &= 0x0f; /* low 4 bits are for sprite color n */
- colortable_entry_set_value(machine().colortable, i, ctabentry + ((ctabentry & 0x0c) << 3));
+ palette.set_pen_indirect(i, ctabentry + ((ctabentry & 0x0c) << 3));
}
}
@@ -242,7 +239,7 @@ void mrdo_state::draw_sprites( bitmap_ind16 &bitmap,const rectangle &cliprect )
{
if (spriteram[offs + 1] != 0)
{
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
spriteram[offs], spriteram[offs + 2] & 0x0f,
spriteram[offs + 2] & 0x10, spriteram[offs + 2] & 0x20,
spriteram[offs + 3], 256 - spriteram[offs + 1], 0);
diff --git a/src/mame/video/mrflea.c b/src/mame/video/mrflea.c
index 53b1d886f7f..d12f10bad41 100644
--- a/src/mame/video/mrflea.c
+++ b/src/mame/video/mrflea.c
@@ -55,12 +55,12 @@ void mrflea_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
int ypos = source[0] - 16 + 3;
int tile_number = source[2] + source[3] * 0x100;
- gfx->transpen(bitmap,clip,
+ gfx->transpen(m_palette,bitmap,clip,
tile_number,
0, /* color */
0,0, /* no flip */
xpos,ypos,0 );
- gfx->transpen(bitmap,clip,
+ gfx->transpen(m_palette,bitmap,clip,
tile_number,
0, /* color */
0,0, /* no flip */
@@ -89,7 +89,7 @@ void mrflea_state::draw_background( bitmap_ind16 &bitmap, const rectangle &clipr
int tile_number = base + source[0] + source[0x400] * 0x100;
source++;
- gfx->opaque(bitmap,cliprect,
+ gfx->opaque(m_palette,bitmap,cliprect,
tile_number,
0, /* color */
0,0, /* no flip */
diff --git a/src/mame/video/mrjong.c b/src/mame/video/mrjong.c
index 653edf08a33..ee96b3a4438 100644
--- a/src/mame/video/mrjong.c
+++ b/src/mame/video/mrjong.c
@@ -16,14 +16,11 @@
***************************************************************************/
-void mrjong_state::palette_init()
+PALETTE_INIT_MEMBER(mrjong_state, mrjong)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x10);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x10; i++)
{
@@ -48,7 +45,7 @@ void mrjong_state::palette_init()
bit2 = BIT(color_prom[i], 7);
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -58,7 +55,7 @@ void mrjong_state::palette_init()
for (i = 0; i < 0x80; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -133,7 +130,7 @@ void mrjong_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
sprt,
color,
flipx, flipy,
diff --git a/src/mame/video/ms32.c b/src/mame/video/ms32.c
index 3facf890063..3fa87b44f7a 100644
--- a/src/mame/video/ms32.c
+++ b/src/mame/video/ms32.c
@@ -142,7 +142,7 @@ void ms32_state::update_color(int color)
b = ((m_palram[color*2+1] & 0x00ff) >>0 );
}
- palette_set_color(machine(),color,rgb_t(r,g,b));
+ m_palette->set_pen_color(color,rgb_t(r,g,b));
}
WRITE32_MEMBER(ms32_state::ms32_brightness_w)
@@ -464,7 +464,7 @@ UINT32 ms32_state::screen_update_ms32(screen_device &screen, bitmap_rgb32 &bitma
int xx, yy;
int width = screen.width();
int height = screen.height();
- const pen_t *paldata = machine().pens;
+ const pen_t *paldata = m_palette->pens();
UINT16* srcptr_tile;
UINT8* srcptr_tilepri;
diff --git a/src/mame/video/msisaac.c b/src/mame/video/msisaac.c
index 6fa665f30c4..f9608827839 100644
--- a/src/mame/video/msisaac.c
+++ b/src/mame/video/msisaac.c
@@ -176,41 +176,41 @@ void msisaac_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
switch (attributes & 3)
{
case 0: /* flipx==0 && flipy==0 */
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
sprite_number+1,color,
flipx,flipy,
sx,sy-16,0 );
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
sprite_number,color,
flipx,flipy,
sx,sy,0 );
break;
case 1: /* flipx==1 && flipy==0 */
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
sprite_number+1,color,
flipx,flipy,
sx,sy-16,0 );
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
sprite_number,color,
flipx,flipy,
sx,sy,0 );
break;
case 2: /* flipx==0 && flipy==1 */
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
sprite_number,color,
flipx,flipy,
sx,sy-16,0 );
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
sprite_number+1,color,
flipx,flipy,
sx,sy,0 );
break;
case 3: /* flipx==1 && flipy==1 */
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
sprite_number,color,
flipx,flipy,
sx,sy-16,0 );
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
sprite_number+1,color,
flipx,flipy,
sx,sy,0 );
@@ -219,7 +219,7 @@ void msisaac_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
}
else
{
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
sprite_number,
color,
flipx,flipy,
diff --git a/src/mame/video/mugsmash.c b/src/mame/video/mugsmash.c
index 4f1b4736fbf..bf08084eedf 100644
--- a/src/mame/video/mugsmash.c
+++ b/src/mame/video/mugsmash.c
@@ -44,7 +44,7 @@ void mugsmash_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
ypos -= 16;
- gfx->transpen(
+ gfx->transpen(m_palette,
bitmap,
cliprect,
num,
diff --git a/src/mame/video/munchmo.c b/src/mame/video/munchmo.c
index 4b3f1e0ba87..433bee4003c 100644
--- a/src/mame/video/munchmo.c
+++ b/src/mame/video/munchmo.c
@@ -2,12 +2,12 @@
#include "includes/munchmo.h"
-void munchmo_state::palette_init()
+PALETTE_INIT_MEMBER(munchmo_state, munchmo)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -26,7 +26,7 @@ void munchmo_state::palette_init()
bit1 = BIT(color_prom[i], 7);
b = 0x4f * bit0 + 0xa8 * bit1;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -64,7 +64,7 @@ void munchmo_state::draw_status( bitmap_ind16 &bitmap, const rectangle &cliprect
for (sy = 0; sy < 256; sy += 8)
{
- gfx->opaque(bitmap,cliprect,
+ gfx->opaque(m_palette,bitmap,cliprect,
*source++,
0, /* color */
0,0, /* no flip */
@@ -94,7 +94,7 @@ void munchmo_state::draw_background( bitmap_ind16 &bitmap, const rectangle &clip
{
for (col = 0; col < 4; col++)
{
- gfx->opaque(*m_tmpbitmap,m_tmpbitmap->cliprect(),
+ gfx->opaque(m_palette,*m_tmpbitmap,m_tmpbitmap->cliprect(),
rom[col + tile_number * 4 + row * 0x400],
m_palette_bank,
0,0, /* flip */
@@ -135,7 +135,7 @@ void munchmo_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
{
sx = (sx >> 1) | (tile_number & 0x80);
sx = 2 * ((- 32 - scroll - sx) & 0xff) + xadjust;
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
0x7f - (tile_number & 0x7f),
color_base - (attributes & 0x03),
0,0, /* no flip */
diff --git a/src/mame/video/mustache.c b/src/mame/video/mustache.c
index 104dba15274..5753e4822f2 100644
--- a/src/mame/video/mustache.c
+++ b/src/mame/video/mustache.c
@@ -10,7 +10,7 @@
#include "includes/mustache.h"
-void mustache_state::palette_init()
+PALETTE_INIT_MEMBER(mustache_state, mustache)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -40,7 +40,7 @@ void mustache_state::palette_init()
bit3 = (color_prom[i + 512] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
}
@@ -130,7 +130,7 @@ void mustache_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
sy = 240 - sy;
}
- gfx->transpen(bitmap,clip,
+ gfx->transpen(m_palette,bitmap,clip,
code,
color,
flip_screen(),flip_screen(),
diff --git a/src/mame/video/mystston.c b/src/mame/video/mystston.c
index a257f07ca7b..a778eeba666 100644
--- a/src/mame/video/mystston.c
+++ b/src/mame/video/mystston.c
@@ -110,7 +110,7 @@ void mystston_state::set_palette()
bit1 = (data >> 7) & 0x01;
b = combine_2_weights(weights_b, bit0, bit1);
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ m_palette->set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -197,7 +197,7 @@ void mystston_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
flipy = !flipy;
}
- gfx->transpen(bitmap,cliprect, code, color, flipx, flipy, x, y, 0);
+ gfx->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy, x, y, 0);
}
}
}
@@ -312,7 +312,7 @@ MACHINE_CONFIG_FRAGMENT( mystston_video )
MCFG_VIDEO_RESET_OVERRIDE(mystston_state,mystston)
MCFG_GFXDECODE_ADD("gfxdecode", mystston)
- MCFG_PALETTE_LENGTH(0x40)
+ MCFG_PALETTE_ADD("palette", 0x40)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
diff --git a/src/mame/video/n8080.c b/src/mame/video/n8080.c
index dc0f2ee009a..3de9de38420 100644
--- a/src/mame/video/n8080.c
+++ b/src/mame/video/n8080.c
@@ -21,7 +21,7 @@ PALETTE_INIT_MEMBER(n8080_state,n8080)
int i;
for (i = 0; i < 8; i++)
- palette_set_color_rgb(machine(), i, pal1bit(i >> 0), pal1bit(i >> 1), pal1bit(i >> 2));
+ palette.set_pen_color(i, pal1bit(i >> 0), pal1bit(i >> 1), pal1bit(i >> 2));
}
@@ -29,17 +29,17 @@ PALETTE_INIT_MEMBER(n8080_state,helifire)
{
int i;
- PALETTE_INIT_CALL_MEMBER(n8080);
+ PALETTE_INIT_NAME(n8080)(palette);
for (i = 0; i < 0x100; i++)
{
int level = 0xff * exp(-3 * i / 255.); /* capacitor discharge */
- palette_set_color(machine(), 0x000 + 8 + i, rgb_t(0x00, 0x00, level)); /* shades of blue */
- palette_set_color(machine(), 0x100 + 8 + i, rgb_t(0x00, 0xC0, level)); /* shades of blue w/ green star */
+ palette.set_pen_color(0x000 + 8 + i, rgb_t(0x00, 0x00, level)); /* shades of blue */
+ palette.set_pen_color(0x100 + 8 + i, rgb_t(0x00, 0xC0, level)); /* shades of blue w/ green star */
- palette_set_color(machine(), 0x200 + 8 + i, rgb_t(level, 0x00, 0x00)); /* shades of red */
- palette_set_color(machine(), 0x300 + 8 + i, rgb_t(level, 0xC0, 0x00)); /* shades of red w/ green star */
+ palette.set_pen_color(0x200 + 8 + i, rgb_t(level, 0x00, 0x00)); /* shades of red */
+ palette.set_pen_color(0x300 + 8 + i, rgb_t(level, 0xC0, 0x00)); /* shades of red w/ green star */
}
}
@@ -364,7 +364,7 @@ void n8080_state::screen_eof_helifire(screen_device &screen, bool state)
}
}
- palette_set_color_rgb(machine(),i,
+ m_palette->set_pen_color(i,
R ? 255 : 0,
G ? 255 : 0,
B ? 255 : 0);
diff --git a/src/mame/video/namcofl.c b/src/mame/video/namcofl.c
index 6068e7a849c..fadc04d212c 100644
--- a/src/mame/video/namcofl.c
+++ b/src/mame/video/namcofl.c
@@ -67,7 +67,7 @@ static void namcofl_install_palette(running_machine &machine)
for( byte_offset=0; byte_offset<4; byte_offset++ )
{
- palette_set_color_rgb( machine, pen++, r&0xff, g&0xff, b&0xff);
+ state->m_palette->set_pen_color(pen++, r&0xff, g&0xff, b&0xff);
r>>=8; g>>=8; b>>=8;
}
}
@@ -86,7 +86,7 @@ UINT32 namcofl_state::screen_update_namcofl(screen_device &screen, bitmap_ind16
namcofl_install_palette(machine());
- bitmap.fill(get_black_pen(machine()), cliprect );
+ bitmap.fill(m_palette->black_pen(), cliprect );
for( pri=0; pri<16; pri++ )
{
diff --git a/src/mame/video/namcona1.c b/src/mame/video/namcona1.c
index ffddba954ba..652873b8515 100644
--- a/src/mame/video/namcona1.c
+++ b/src/mame/video/namcona1.c
@@ -165,9 +165,9 @@ UpdatePalette(running_machine &machine, int offset )
int r = (((data&0x00e0)>>5)+((data&0xe000)>>13)*2)*0xff/(0x7*3);
int g = (((data&0x001c)>>2)+((data&0x1c00)>>10)*2)*0xff/(0x7*3);
int b = (((data&0x0003)>>0)+((data&0x0300)>>8)*2)*0xff/(0x3*3);
- palette_set_color_rgb( machine, offset+0x1000, r, g, b);
+ state->m_palette->set_pen_color(offset+0x1000, r, g, b);
- palette_set_color_rgb( machine, offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
+ state->m_palette->set_pen_color(offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
} /* namcona1_paletteram_w */
READ16_MEMBER(namcona1_state::namcona1_paletteram_r)
@@ -291,9 +291,9 @@ void namcona1_state::video_start()
m_shaperam = auto_alloc_array_clear(machine(), UINT16, 0x2000*4/2 );
m_cgram = auto_alloc_array_clear(machine(), UINT16, 0x1000*0x40/2 );
- m_gfxdecode->set_gfx(0, auto_alloc( machine(), gfx_element( machine(), cg_layout_8bpp, (UINT8 *)m_cgram, machine().total_colors()/256, 0 )));
- m_gfxdecode->set_gfx(1, auto_alloc( machine(), gfx_element( machine(), cg_layout_4bpp, (UINT8 *)m_cgram, machine().total_colors()/16, 0 )));
- m_gfxdecode->set_gfx(2, auto_alloc( machine(), gfx_element( machine(), shape_layout, (UINT8 *)m_shaperam, machine().total_colors()/2, 0 )));
+ m_gfxdecode->set_gfx(0, auto_alloc( machine(), gfx_element( machine(), cg_layout_8bpp, (UINT8 *)m_cgram, m_palette->entries()/256, 0 )));
+ m_gfxdecode->set_gfx(1, auto_alloc( machine(), gfx_element( machine(), cg_layout_4bpp, (UINT8 *)m_cgram, m_palette->entries()/16, 0 )));
+ m_gfxdecode->set_gfx(2, auto_alloc( machine(), gfx_element( machine(), shape_layout, (UINT8 *)m_shaperam, m_palette->entries()/2, 0 )));
} /* namcona1_vh_start */
@@ -418,7 +418,7 @@ static void pdraw_tile(
if( (gfx_region == 0 && color == 0x0f) ||
(gfx_region == 1 && color == 0xff) )
{
- pen_t *palette_shadow_table = screen.machine().shadow_table;
+ pen_t *palette_shadow_table = state->m_palette->shadow_table();
dest[x] = palette_shadow_table[dest[x]];
}
else
@@ -561,7 +561,7 @@ static void draw_background(screen_device &screen, bitmap_ind16 &bitmap, const r
gfx_element *pGfx;
pGfx = state->m_gfxdecode->gfx(0);
- paldata = &screen.machine().pens[pGfx->colorbase() + pGfx->granularity() * state->m_tilemap_palette_bank[which]];
+ paldata = &state->m_palette->pen(pGfx->colorbase() + pGfx->granularity() * state->m_tilemap_palette_bank[which]);
/* draw one scanline at a time */
clip.min_x = cliprect.min_x;
diff --git a/src/mame/video/namconb1.c b/src/mame/video/namconb1.c
index 68ece53b59b..80876a8ee7b 100644
--- a/src/mame/video/namconb1.c
+++ b/src/mame/video/namconb1.c
@@ -94,7 +94,7 @@ static void namconb1_install_palette(running_machine &machine)
for( byte_offset=0; byte_offset<4; byte_offset++ )
{
- palette_set_color_rgb( machine, pen++, r>>24, g>>24, b>>24 );
+ state->m_palette->set_pen_color(pen++, r>>24, g>>24, b>>24 );
r<<=8; g<<=8; b<<=8;
}
}
@@ -146,7 +146,7 @@ UINT32 namconb1_state::screen_update_namconb1(screen_device &screen, bitmap_ind1
/* intersect with master clip rectangle */
clip &= cliprect;
- bitmap.fill(get_black_pen(machine()), cliprect );
+ bitmap.fill(m_palette->black_pen(), cliprect );
video_update_common( screen, bitmap, clip, 0 );
@@ -183,7 +183,7 @@ UINT32 namconb1_state::screen_update_namconb2(screen_device &screen, bitmap_ind1
/* intersect with master clip rectangle */
clip &= cliprect;
- bitmap.fill(get_black_pen(machine()), cliprect );
+ bitmap.fill(m_palette->black_pen(), cliprect );
if( memcmp(m_tilemap_tile_bank,m_tilebank32,sizeof(m_tilemap_tile_bank))!=0 )
{
diff --git a/src/mame/video/namcos1.c b/src/mame/video/namcos1.c
index 42bca45c97f..5757f09a2b2 100644
--- a/src/mame/video/namcos1.c
+++ b/src/mame/video/namcos1.c
@@ -154,14 +154,14 @@ void namcos1_state::video_start()
memset(m_paletteram, 0, 0x8000);
memset(m_cus116, 0, 0x10);
for (i = 0; i < 0x2000; i++)
- palette_set_color(machine(), i, rgb_t(0, 0, 0));
+ m_palette->set_pen_color(i, rgb_t(0, 0, 0));
/* all palette entries are not affected by shadow sprites... */
for (i = 0;i < 0x2000;i++)
- machine().shadow_table[i] = i;
+ m_palette->shadow_table()[i] = i;
/* ... except for tilemap colors */
for (i = 0x0800;i < 0x1000;i++)
- machine().shadow_table[i] = i + 0x0800;
+ m_palette->shadow_table()[i] = i + 0x0800;
memset(m_playfield_control, 0, sizeof(m_playfield_control));
m_copy_sprites = 0;
@@ -218,7 +218,7 @@ WRITE8_HANDLER( namcos1_paletteram_w )
r = state->m_paletteram[offset];
g = state->m_paletteram[offset + 0x0800];
b = state->m_paletteram[offset + 0x1000];
- palette_set_color(space.machine(),color,rgb_t(r,g,b));
+ state->m_palette->set_pen_color(color,rgb_t(r,g,b));
}
else
{
@@ -345,7 +345,7 @@ static void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rect
gfx->set_source_clip(tx, sizex, ty, sizey);
if (color != 0x7f)
- gfx->prio_transpen(bitmap,cliprect,
+ gfx->prio_transpen(state->m_palette,bitmap,cliprect,
sprite,
color,
flipx,flipy,
@@ -354,14 +354,14 @@ static void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rect
screen.priority(), pri_mask,
0xf);
else
- gfx->prio_transtable(bitmap,cliprect,
+ gfx->prio_transtable(state->m_palette,bitmap,cliprect,
sprite,
color,
flipx,flipy,
sx & 0x1ff,
((sy + 16) & 0xff) - 16,
screen.priority(), pri_mask,
- state->m_drawmode_table, screen.machine().shadow_table);
+ state->m_drawmode_table, state->m_palette->shadow_table());
source -= 0x10;
}
@@ -378,7 +378,7 @@ UINT32 namcos1_state::screen_update_namcos1(screen_device &screen, bitmap_ind16
flip_screen_set(m_spriteram[0x0ff6] & 1);
/* background color */
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
/* berabohm uses asymmetrical visibility windows to iris on the character */
i = ((m_cus116[0] << 8) | m_cus116[1]) - 1; // min x
diff --git a/src/mame/video/namcos2.c b/src/mame/video/namcos2.c
index 1d3b3a46909..d16e6773190 100644
--- a/src/mame/video/namcos2.c
+++ b/src/mame/video/namcos2.c
@@ -378,7 +378,7 @@ namcos2_state::update_palette()
int r = m_paletteram[offset | 0x0000] & 0x00ff;
int g = m_paletteram[offset | 0x0800] & 0x00ff;
int b = m_paletteram[offset | 0x1000] & 0x00ff;
- palette_set_color(machine(),pen++,rgb_t(r,g,b));
+ m_palette->set_pen_color(pen++,rgb_t(r,g,b));
offset++;
}
}
@@ -391,7 +391,7 @@ void namcos2_state::draw_sprite_init()
/* set table for sprite color == 0x0f */
for( int i = 0; i<16*256; i++ )
{
- machine().shadow_table[i] = i+0x2000;
+ m_palette->shadow_table()[i] = i+0x2000;
}
}
@@ -421,7 +421,7 @@ UINT32 namcos2_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
int pri;
update_palette();
- bitmap.fill(get_black_pen(machine()), cliprect );
+ bitmap.fill(m_palette->black_pen(), cliprect );
apply_clip( clip, cliprect );
/* HACK: enable ROZ layer only if it has priority > 0 */
@@ -457,7 +457,7 @@ UINT32 namcos2_state::screen_update_finallap(screen_device &screen, bitmap_ind16
int pri;
update_palette();
- bitmap.fill(get_black_pen(machine()), cliprect );
+ bitmap.fill(m_palette->black_pen(), cliprect );
apply_clip( clip, cliprect );
for( pri=0; pri<16; pri++ )
@@ -490,7 +490,7 @@ UINT32 namcos2_state::screen_update_luckywld(screen_device &screen, bitmap_ind16
int pri;
update_palette();
- bitmap.fill(get_black_pen(machine()), cliprect );
+ bitmap.fill(m_palette->black_pen(), cliprect );
apply_clip( clip, cliprect );
for( pri=0; pri<16; pri++ )
@@ -523,7 +523,7 @@ UINT32 namcos2_state::screen_update_sgunner(screen_device &screen, bitmap_ind16
int pri;
update_palette();
- bitmap.fill(get_black_pen(machine()), cliprect );
+ bitmap.fill(m_palette->black_pen(), cliprect );
apply_clip( clip, cliprect );
for( pri=0; pri<8; pri++ )
@@ -549,7 +549,7 @@ UINT32 namcos2_state::screen_update_metlhawk(screen_device &screen, bitmap_ind16
int pri;
update_palette();
- bitmap.fill(get_black_pen(machine()), cliprect );
+ bitmap.fill(m_palette->black_pen(), cliprect );
apply_clip( clip, cliprect );
for( pri=0; pri<16; pri++ )
diff --git a/src/mame/video/namcos21.c b/src/mame/video/namcos21.c
index 27197e10470..b456897ba47 100644
--- a/src/mame/video/namcos21.c
+++ b/src/mame/video/namcos21.c
@@ -160,7 +160,7 @@ update_palette( running_machine &machine )
g = data1&0xff;
b = data2&0xff;
- palette_set_color( machine,i, rgb_t(r,g,b) );
+ state->m_palette->set_pen_color(i, rgb_t(r,g,b) );
}
} /* update_palette */
diff --git a/src/mame/video/namcos22.c b/src/mame/video/namcos22.c
index 9aa73ccba5c..0bea04a5324 100644
--- a/src/mame/video/namcos22.c
+++ b/src/mame/video/namcos22.c
@@ -282,7 +282,7 @@ void namcos22_renderer::poly3d_drawquad(screen_device &screen, bitmap_rgb32 &bit
extra.fadefactor = 0;
extra.fogfactor = 0;
- extra.pens = &screen.machine().pens[(color & 0x7f) << 8];
+ extra.pens = &m_state.m_palette->pen((color & 0x7f) << 8);
extra.primap = &screen.priority();
extra.bn = node->data.quad.texturebank;
extra.flags = flags;
@@ -528,7 +528,7 @@ void namcos22_renderer::poly3d_drawsprite(
extra.line_modulo = gfx->rowbytes();
extra.flipx = flipx;
extra.flipy = flipy;
- extra.pens = &gfx->machine().pens[gfx->colorbase() + gfx->granularity() * (color & 0x7f)];
+ extra.pens = &m_state.m_palette->pen(gfx->colorbase() + gfx->granularity() * (color & 0x7f));
extra.primap = &screen.priority();
extra.source = gfx->get_data(code % gfx->elements());
@@ -1863,7 +1863,7 @@ WRITE32_MEMBER(namcos22_state::namcos22s_spotram_w)
void namcos22_state::namcos22s_mix_text_layer(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int prival)
{
- const pen_t *pens = machine().pens;
+ const pen_t *pens = m_palette->pens();
UINT16 *src;
UINT32 *dest;
UINT8 *pri;
@@ -1945,7 +1945,7 @@ void namcos22_state::namcos22s_mix_text_layer(screen_device &screen, bitmap_rgb3
void namcos22_state::namcos22_mix_text_layer(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- const pen_t *pens = machine().pens;
+ const pen_t *pens = m_palette->pens();
UINT16 *src;
UINT32 *dest;
UINT8 *pri;
@@ -2046,7 +2046,7 @@ void namcos22_state::update_palette()
int r = nthbyte(m_paletteram, which + 0x00000);
int g = nthbyte(m_paletteram, which + 0x08000);
int b = nthbyte(m_paletteram, which + 0x10000);
- palette_set_color(machine(), which, rgb_t(r, g, b));
+ m_palette->set_pen_color(which, rgb_t(r, g, b));
}
m_dirtypal[i] = 0;
}
@@ -2323,7 +2323,7 @@ UINT32 namcos22_state::screen_update_namcos22(screen_device &screen, bitmap_rgb3
screen.priority().fill(0, cliprect);
// background color
- bitmap.fill(screen.machine().pens[0x7fff], cliprect);
+ bitmap.fill(m_palette->pen(0x7fff), cliprect);
// layers
draw_polygons(bitmap);
diff --git a/src/mame/video/namcos86.c b/src/mame/video/namcos86.c
index d09b0a166e8..fec29b05ec9 100644
--- a/src/mame/video/namcos86.c
+++ b/src/mame/video/namcos86.c
@@ -32,11 +32,11 @@ Namco System 86 Video Hardware
***************************************************************************/
-void namcos86_state::palette_init()
+PALETTE_INIT_MEMBER(namcos86_state, namcos86)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- rgb_t palette[512];
+ rgb_t palette_val[512];
for (i = 0;i < 512;i++)
{
@@ -58,7 +58,7 @@ void namcos86_state::palette_init()
bit3 = (color_prom[512] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- palette[i] = rgb_t(r,g,b);
+ palette_val[i] = rgb_t(r,g,b);
color_prom++;
}
@@ -67,11 +67,11 @@ void namcos86_state::palette_init()
/* tiles lookup table */
for (i = 0;i < 2048;i++)
- palette_set_color(machine(), i, palette[*color_prom++]);
+ palette.set_pen_color(i, palette_val[*color_prom++]);
/* sprites lookup table */
for (i = 0;i < 2048;i++)
- palette_set_color(machine(), 2048 + i, palette[256 + *color_prom++]);
+ palette.set_pen_color(2048 + i, palette_val[256 + *color_prom++]);
/* color_prom now points to the beginning of the tile address decode PROM */
@@ -321,7 +321,7 @@ static void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rect
sy++; /* sprites are buffered and delayed by one scanline */
gfx->set_source_clip(tx, sizex, ty, sizey);
- gfx->prio_transpen(bitmap,cliprect,
+ gfx->prio_transpen(state->m_palette,bitmap,cliprect,
sprite,
color,
flipx,flipy,
diff --git a/src/mame/video/naughtyb.c b/src/mame/video/naughtyb.c
index 44c5341a7f1..087da342815 100644
--- a/src/mame/video/naughtyb.c
+++ b/src/mame/video/naughtyb.c
@@ -57,7 +57,7 @@ static const res_net_info naughtyb_net_info =
***************************************************************************/
-void naughtyb_state::palette_init()
+PALETTE_INIT_MEMBER(naughtyb_state, naughtyb)
{
const UINT8 *color_prom = memregion("proms")->base();
static const int resistances[2] = { 270, 130 };
@@ -70,7 +70,7 @@ void naughtyb_state::palette_init()
2, resistances, weights, 0, 0,
0, 0, 0, 0, 0);
- for (i = 0;i < machine().total_colors(); i++)
+ for (i = 0;i < palette.entries(); i++)
{
int bit0, bit1;
int r, g, b;
@@ -90,7 +90,7 @@ void naughtyb_state::palette_init()
bit1 = (color_prom[i+0x100] >> 1) & 0x01;
b = combine_2_weights(weights, bit0, bit1);
- palette_set_color(machine(), BITSWAP8(i,5,7,6,2,1,0,4,3), rgb_t(r, g, b));
+ palette.set_pen_color(BITSWAP8(i,5,7,6,2,1,0,4,3), rgb_t(r, g, b));
}
}
@@ -224,13 +224,13 @@ UINT32 naughtyb_state::screen_update_naughtyb(screen_device &screen, bitmap_ind1
}
}
- m_gfxdecode->gfx(0)->opaque(tmpbitmap,tmpbitmap.cliprect(),
+ m_gfxdecode->gfx(0)->opaque(m_palette,tmpbitmap,tmpbitmap.cliprect(),
m_videoram2[offs] + 256 * m_bankreg,
(m_videoram2[offs] >> 5) + 8 * m_palreg,
m_cocktail,m_cocktail,
8*sx,8*sy);
- m_gfxdecode->gfx(1)->transpen(tmpbitmap,tmpbitmap.cliprect(),
+ m_gfxdecode->gfx(1)->transpen(m_palette,tmpbitmap,tmpbitmap.cliprect(),
videoram[offs] + 256*m_bankreg,
(videoram[offs] >> 5) + 8 * m_palreg,
m_cocktail,m_cocktail,
diff --git a/src/mame/video/nbmj8688.c b/src/mame/video/nbmj8688.c
index 8cd638783e6..f2249cc2b9d 100644
--- a/src/mame/video/nbmj8688.c
+++ b/src/mame/video/nbmj8688.c
@@ -59,7 +59,7 @@ PALETTE_INIT_MEMBER(nbmj8688_state,mbmj8688_8bit)
bit2 = ((i >> 7) & 0x01);
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -76,7 +76,7 @@ PALETTE_INIT_MEMBER(nbmj8688_state,mbmj8688_12bit)
g = ((i & 0x38) >> 2) | (((i >> 8) & 0x02) >> 1);
b = ((i & 0xc0) >> 4) | (((i >> 8) & 0x0c) >> 2);
- palette_set_color_rgb(machine(), i, pal4bit(r), pal4bit(g), pal4bit(b));
+ palette.set_pen_color(i, pal4bit(r), pal4bit(g), pal4bit(b));
}
}
@@ -92,7 +92,7 @@ PALETTE_INIT_MEMBER(nbmj8688_state,mbmj8688_16bit)
g = (((i & 0x3800) >> 9) | ((i & 0x0018) >> 3)); // G 5bit
b = (((i & 0xc000) >> 11) | ((i & 0x00e0) >> 5)); // B 5bit
- palette_set_color_rgb(machine(), i, pal6bit(r), pal5bit(g), pal5bit(b));
+ palette.set_pen_color(i, pal6bit(r), pal5bit(g), pal5bit(b));
}
}
diff --git a/src/mame/video/nbmj8891.c b/src/mame/video/nbmj8891.c
index 40ecac9181f..de017360c05 100644
--- a/src/mame/video/nbmj8891.c
+++ b/src/mame/video/nbmj8891.c
@@ -16,68 +16,68 @@
******************************************************************************/
READ8_MEMBER(nbmj8891_state::nbmj8891_palette_type1_r)
{
- return m_palette[offset];
+ return m_palette_ptr[offset];
}
WRITE8_MEMBER(nbmj8891_state::nbmj8891_palette_type1_w)
{
int r, g, b;
- m_palette[offset] = data;
+ m_palette_ptr[offset] = data;
if (!(offset & 1)) return;
offset &= 0x1fe;
- r = ((m_palette[offset + 0] & 0x0f) >> 0);
- g = ((m_palette[offset + 1] & 0xf0) >> 4);
- b = ((m_palette[offset + 1] & 0x0f) >> 0);
+ r = ((m_palette_ptr[offset + 0] & 0x0f) >> 0);
+ g = ((m_palette_ptr[offset + 1] & 0xf0) >> 4);
+ b = ((m_palette_ptr[offset + 1] & 0x0f) >> 0);
- palette_set_color_rgb(machine(), (offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
+ m_palette->set_pen_color((offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
}
READ8_MEMBER(nbmj8891_state::nbmj8891_palette_type2_r)
{
- return m_palette[offset];
+ return m_palette_ptr[offset];
}
WRITE8_MEMBER(nbmj8891_state::nbmj8891_palette_type2_w)
{
int r, g, b;
- m_palette[offset] = data;
+ m_palette_ptr[offset] = data;
if (!(offset & 0x100)) return;
offset &= 0x0ff;
- r = ((m_palette[offset + 0x000] & 0x0f) >> 0);
- g = ((m_palette[offset + 0x000] & 0xf0) >> 4);
- b = ((m_palette[offset + 0x100] & 0x0f) >> 0);
+ r = ((m_palette_ptr[offset + 0x000] & 0x0f) >> 0);
+ g = ((m_palette_ptr[offset + 0x000] & 0xf0) >> 4);
+ b = ((m_palette_ptr[offset + 0x100] & 0x0f) >> 0);
- palette_set_color_rgb(machine(), (offset & 0x0ff), pal4bit(r), pal4bit(g), pal4bit(b));
+ m_palette->set_pen_color((offset & 0x0ff), pal4bit(r), pal4bit(g), pal4bit(b));
}
READ8_MEMBER(nbmj8891_state::nbmj8891_palette_type3_r)
{
- return m_palette[offset];
+ return m_palette_ptr[offset];
}
WRITE8_MEMBER(nbmj8891_state::nbmj8891_palette_type3_w)
{
int r, g, b;
- m_palette[offset] = data;
+ m_palette_ptr[offset] = data;
if (!(offset & 1)) return;
offset &= 0x1fe;
- r = ((m_palette[offset + 1] & 0x0f) >> 0);
- g = ((m_palette[offset + 0] & 0xf0) >> 4);
- b = ((m_palette[offset + 0] & 0x0f) >> 0);
+ r = ((m_palette_ptr[offset + 1] & 0x0f) >> 0);
+ g = ((m_palette_ptr[offset + 0] & 0xf0) >> 4);
+ b = ((m_palette_ptr[offset + 0] & 0x0f) >> 0);
- palette_set_color_rgb(machine(), (offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
+ m_palette->set_pen_color((offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
}
WRITE8_MEMBER(nbmj8891_state::nbmj8891_clutsel_w)
@@ -487,7 +487,7 @@ VIDEO_START_MEMBER(nbmj8891_state,nbmj8891_1layer)
m_screen->register_screen_bitmap(m_tmpbitmap0);
m_videoram0 = auto_alloc_array(machine(), UINT8, width * height);
- m_palette = auto_alloc_array(machine(), UINT8, 0x200);
+ m_palette_ptr = auto_alloc_array(machine(), UINT8, 0x200);
m_clut = auto_alloc_array(machine(), UINT8, 0x800);
memset(m_videoram0, 0xff, (width * height * sizeof(char)));
m_gfxdraw_mode = 0;
@@ -505,7 +505,7 @@ void nbmj8891_state::video_start()
m_screen->register_screen_bitmap(m_tmpbitmap1);
m_videoram0 = auto_alloc_array(machine(), UINT8, width * height);
m_videoram1 = auto_alloc_array(machine(), UINT8, width * height);
- m_palette = auto_alloc_array(machine(), UINT8, 0x200);
+ m_palette_ptr = auto_alloc_array(machine(), UINT8, 0x200);
m_clut = auto_alloc_array(machine(), UINT8, 0x800);
memset(m_videoram0, 0xff, (width * height * sizeof(UINT8)));
memset(m_videoram1, 0xff, (width * height * sizeof(UINT8)));
diff --git a/src/mame/video/nbmj8900.c b/src/mame/video/nbmj8900.c
index 53e59aae2fe..59a30022dfc 100644
--- a/src/mame/video/nbmj8900.c
+++ b/src/mame/video/nbmj8900.c
@@ -16,69 +16,69 @@
******************************************************************************/
READ8_MEMBER(nbmj8900_state::nbmj8900_palette_type1_r)
{
- return m_palette[offset];
+ return m_palette_ptr[offset];
}
WRITE8_MEMBER(nbmj8900_state::nbmj8900_palette_type1_w)
{
int r, g, b;
- m_palette[offset] = data;
+ m_palette_ptr[offset] = data;
if (!(offset & 1)) return;
offset &= 0x1fe;
- r = ((m_palette[offset + 0] & 0x0f) >> 0);
- g = ((m_palette[offset + 1] & 0xf0) >> 4);
- b = ((m_palette[offset + 1] & 0x0f) >> 0);
+ r = ((m_palette_ptr[offset + 0] & 0x0f) >> 0);
+ g = ((m_palette_ptr[offset + 1] & 0xf0) >> 4);
+ b = ((m_palette_ptr[offset + 1] & 0x0f) >> 0);
- palette_set_color_rgb(machine(), (offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
+ m_palette->set_pen_color((offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
}
#ifdef UNUSED_FUNCTION
READ8_MEMBER(nbmj8900_state::nbmj8900_palette_type2_r)
{
- return m_palette[offset];
+ return m_palette_ptr[offset];
}
WRITE8_MEMBER(nbmj8900_state::nbmj8900_palette_type2_w)
{
int r, g, b;
- m_palette[offset] = data;
+ m_palette_ptr[offset] = data;
if (!(offset & 0x100)) return;
offset &= 0x0ff;
- r = ((m_palette[offset + 0x000] & 0x0f) >> 0);
- g = ((m_palette[offset + 0x000] & 0xf0) >> 4);
- b = ((m_palette[offset + 0x100] & 0x0f) >> 0);
+ r = ((m_palette_ptr[offset + 0x000] & 0x0f) >> 0);
+ g = ((m_palette_ptr[offset + 0x000] & 0xf0) >> 4);
+ b = ((m_palette_ptr[offset + 0x100] & 0x0f) >> 0);
- palette_set_color_rgb(machine(), (offset & 0x0ff), pal4bit(r), pal4bit(g), pal4bit(b));
+ m_palette->set_pen_color((offset & 0x0ff), pal4bit(r), pal4bit(g), pal4bit(b));
}
READ8_MEMBER(nbmj8900_state::nbmj8900_palette_type3_r)
{
- return m_palette[offset];
+ return m_palette_ptr[offset];
}
WRITE8_MEMBER(nbmj8900_state::nbmj8900_palette_type3_w)
{
int r, g, b;
- m_palette[offset] = data;
+ m_palette_ptr[offset] = data;
if (!(offset & 1)) return;
offset &= 0x1fe;
- r = ((m_palette[offset + 1] & 0x0f) >> 0);
- g = ((m_palette[offset + 0] & 0xf0) >> 4);
- b = ((m_palette[offset + 0] & 0x0f) >> 0);
+ r = ((m_palette_ptr[offset + 1] & 0x0f) >> 0);
+ g = ((m_palette_ptr[offset + 0] & 0xf0) >> 4);
+ b = ((m_palette_ptr[offset + 0] & 0x0f) >> 0);
- palette_set_color_rgb(machine(), (offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
+ m_palette->set_pen_color((offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
}
#endif
@@ -186,13 +186,13 @@ void nbmj8900_state::nbmj8900_vramflip(int vram)
void nbmj8900_state::update_pixel0(int x, int y)
{
UINT8 color = m_videoram0[(y * m_screen_width) + x];
- m_tmpbitmap0.pix16(y, x) = machine().pens[color];
+ m_tmpbitmap0.pix16(y, x) = m_palette->pen(color);
}
void nbmj8900_state::update_pixel1(int x, int y)
{
UINT8 color = m_videoram1[(y * m_screen_width) + x];
- m_tmpbitmap1.pix16(y, x) = machine().pens[color];
+ m_tmpbitmap1.pix16(y, x) = m_palette->pen(color);
}
void nbmj8900_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
@@ -371,11 +371,11 @@ void nbmj8900_state::video_start()
m_screen->register_screen_bitmap(m_tmpbitmap1);
m_videoram0 = auto_alloc_array(machine(), UINT8, m_screen_width * m_screen_height);
m_videoram1 = auto_alloc_array(machine(), UINT8, m_screen_width * m_screen_height);
- m_palette = auto_alloc_array(machine(), UINT8, 0x200);
+ m_palette_ptr = auto_alloc_array(machine(), UINT8, 0x200);
m_clut = auto_alloc_array(machine(), UINT8, 0x800);
memset(m_videoram0, 0xff, (m_screen_width * m_screen_height * sizeof(UINT8)));
memset(m_videoram1, 0xff, (m_screen_width * m_screen_height * sizeof(UINT8)));
-// machine().pens[0x07f] = 0xff; /* palette_transparent_pen */
+// m_palette->pen(0x07f) = 0xff; /* palette_transparent_pen */
m_gfxdraw_mode = 1;
}
diff --git a/src/mame/video/nbmj8991.c b/src/mame/video/nbmj8991.c
index dc38cb11d07..17dc1fe7ba3 100644
--- a/src/mame/video/nbmj8991.c
+++ b/src/mame/video/nbmj8991.c
@@ -28,7 +28,7 @@ WRITE8_MEMBER(nbmj8991_state::nbmj8991_palette_type1_w)
g = ((m_generic_paletteram_8[offset + 1] & 0xf0) >> 4);
b = ((m_generic_paletteram_8[offset + 1] & 0x0f) >> 0);
- palette_set_color_rgb(machine(), (offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
+ m_palette->set_pen_color((offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
}
WRITE8_MEMBER(nbmj8991_state::nbmj8991_palette_type2_w)
@@ -45,7 +45,7 @@ WRITE8_MEMBER(nbmj8991_state::nbmj8991_palette_type2_w)
g = (((m_generic_paletteram_8[offset + 0] & 0x03) << 3) | ((m_generic_paletteram_8[offset + 1] & 0xe0) >> 5));
b = ((m_generic_paletteram_8[offset + 1] & 0x1f) >> 0);
- palette_set_color_rgb(machine(), (offset / 2), pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color((offset / 2), pal5bit(r), pal5bit(g), pal5bit(b));
}
WRITE8_MEMBER(nbmj8991_state::nbmj8991_palette_type3_w)
@@ -62,7 +62,7 @@ WRITE8_MEMBER(nbmj8991_state::nbmj8991_palette_type3_w)
g = ((m_generic_paletteram_8[offset + 0] & 0xf0) >> 4);
b = ((m_generic_paletteram_8[offset + 0] & 0x0f) >> 0);
- palette_set_color_rgb(machine(), (offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
+ m_palette->set_pen_color((offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
}
/******************************************************************************
diff --git a/src/mame/video/nbmj9195.c b/src/mame/video/nbmj9195.c
index 232bd7090a1..717d2ba063a 100644
--- a/src/mame/video/nbmj9195.c
+++ b/src/mame/video/nbmj9195.c
@@ -16,24 +16,24 @@
******************************************************************************/
READ8_MEMBER(nbmj9195_state::nbmj9195_palette_r)
{
- return m_palette[offset];
+ return m_palette_ptr[offset];
}
WRITE8_MEMBER(nbmj9195_state::nbmj9195_palette_w)
{
int r, g, b;
- m_palette[offset] = data;
+ m_palette_ptr[offset] = data;
if (offset & 1)
{
offset &= 0x1fe;
- r = ((m_palette[offset + 0] & 0x0f) >> 0);
- g = ((m_palette[offset + 0] & 0xf0) >> 4);
- b = ((m_palette[offset + 1] & 0x0f) >> 0);
+ r = ((m_palette_ptr[offset + 0] & 0x0f) >> 0);
+ g = ((m_palette_ptr[offset + 0] & 0xf0) >> 4);
+ b = ((m_palette_ptr[offset + 1] & 0x0f) >> 0);
- palette_set_color_rgb(machine(), (offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
+ m_palette->set_pen_color((offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
}
}
@@ -56,7 +56,7 @@ WRITE8_MEMBER(nbmj9195_state::nbmj9195_nb22090_palette_w)
g = m_nb22090_palette[(0x100 + (offs_h * 0x300) + offs_l)];
b = m_nb22090_palette[(0x200 + (offs_h * 0x300) + offs_l)];
- palette_set_color(machine(), ((offs_h * 0x100) + offs_l), rgb_t(r, g, b));
+ m_palette->set_pen_color(((offs_h * 0x100) + offs_l), rgb_t(r, g, b));
}
/******************************************************************************
@@ -384,7 +384,7 @@ VIDEO_START_MEMBER(nbmj9195_state,nbmj9195_1layer)
m_screen->register_screen_bitmap(m_tmpbitmap[0]);
m_videoram[0] = auto_alloc_array_clear(machine(), UINT16, width * height);
- m_palette = auto_alloc_array(machine(), UINT8, 0x200);
+ m_palette_ptr = auto_alloc_array(machine(), UINT8, 0x200);
m_clut[0] = auto_alloc_array(machine(), UINT8, 0x1000);
m_scanline[0] = m_scanline[1] = SCANLINE_MIN;
m_nb19010_busyflag = 1;
@@ -400,7 +400,7 @@ void nbmj9195_state::video_start()
m_screen->register_screen_bitmap(m_tmpbitmap[1]);
m_videoram[0] = auto_alloc_array_clear(machine(), UINT16, width * height);
m_videoram[1] = auto_alloc_array_clear(machine(), UINT16, width * height);
- m_palette = auto_alloc_array(machine(), UINT8, 0x200);
+ m_palette_ptr = auto_alloc_array(machine(), UINT8, 0x200);
m_clut[0] = auto_alloc_array(machine(), UINT8, 0x1000);
m_clut[1] = auto_alloc_array(machine(), UINT8, 0x1000);
m_scanline[0] = m_scanline[1] = SCANLINE_MIN;
diff --git a/src/mame/video/nemesis.c b/src/mame/video/nemesis.c
index 464d242cf29..95f6cbaa9c8 100644
--- a/src/mame/video/nemesis.c
+++ b/src/mame/video/nemesis.c
@@ -204,7 +204,7 @@ WRITE16_MEMBER(nemesis_state::nemesis_palette_word_w)
bit5 = BIT(data, 14);
b = MULTIPLIER;
- palette_set_color(machine(), offset, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset, rgb_t(r, g, b));
}
WRITE16_MEMBER(nemesis_state::salamander_palette_word_w)
@@ -213,7 +213,7 @@ WRITE16_MEMBER(nemesis_state::salamander_palette_word_w)
offset &= ~1;
data = ((m_paletteram[offset] << 8) & 0xff00) | (m_paletteram[offset + 1] & 0xff);
- palette_set_color_rgb(machine(), offset / 2, pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
+ m_palette->set_pen_color(offset / 2, pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
}
@@ -386,7 +386,7 @@ void nemesis_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, c
flipy = !flipy;
}
- m_gfxdecode->gfx(char_type)->prio_zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(char_type)->prio_zoom_transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/ninjakd2.c b/src/mame/video/ninjakd2.c
index a31851c2a1c..6e67653c87d 100644
--- a/src/mame/video/ninjakd2.c
+++ b/src/mame/video/ninjakd2.c
@@ -388,7 +388,7 @@ void ninjakd2_state::draw_sprites( bitmap_ind16 &bitmap)
{
int const tile = code ^ (x << big_xshift) ^ (y << big_yshift);
- gfx->transpen(bitmap,bitmap.cliprect(),
+ gfx->transpen(m_palette,bitmap,bitmap.cliprect(),
tile,
color,
flipx,flipy,
diff --git a/src/mame/video/ninjaw.c b/src/mame/video/ninjaw.c
index f7a6542d58c..ac4bc8cb06e 100644
--- a/src/mame/video/ninjaw.c
+++ b/src/mame/video/ninjaw.c
@@ -76,7 +76,7 @@ void ninjaw_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
cury = y;
code = tilenum;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code, color,
flipx, flipy,
curx, cury, 0);
@@ -109,7 +109,7 @@ UINT32 ninjaw_state::update_screen(screen_device &screen, bitmap_ind16 &bitmap,
/* Ensure screen blanked even when bottom layers not drawn due to disable bit */
if (nodraw)
- bitmap.fill(get_black_pen(screen.machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
/* Sprites can be under/over the layer below text layer */
draw_sprites(bitmap, cliprect, 1, xoffs, 8); // draw sprites with priority 1 which are under the mid layer
diff --git a/src/mame/video/niyanpai.c b/src/mame/video/niyanpai.c
index 65442d8b91e..0080790bf85 100644
--- a/src/mame/video/niyanpai.c
+++ b/src/mame/video/niyanpai.c
@@ -15,18 +15,18 @@
******************************************************************************/
READ16_MEMBER(niyanpai_state::niyanpai_palette_r)
{
- return m_palette[offset];
+ return m_palette_ptr[offset];
}
WRITE16_MEMBER(niyanpai_state::niyanpai_palette_w)
{
int r, g, b;
int offs_h, offs_l;
- UINT16 oldword = m_palette[offset];
+ UINT16 oldword = m_palette_ptr[offset];
UINT16 newword;
- COMBINE_DATA(&m_palette[offset]);
- newword = m_palette[offset];
+ COMBINE_DATA(&m_palette_ptr[offset]);
+ newword = m_palette_ptr[offset];
if (oldword != newword)
{
@@ -35,20 +35,20 @@ WRITE16_MEMBER(niyanpai_state::niyanpai_palette_w)
if (ACCESSING_BITS_8_15)
{
- r = ((m_palette[(0x000 + (offs_h * 0x180) + offs_l)] & 0xff00) >> 8);
- g = ((m_palette[(0x080 + (offs_h * 0x180) + offs_l)] & 0xff00) >> 8);
- b = ((m_palette[(0x100 + (offs_h * 0x180) + offs_l)] & 0xff00) >> 8);
+ r = ((m_palette_ptr[(0x000 + (offs_h * 0x180) + offs_l)] & 0xff00) >> 8);
+ g = ((m_palette_ptr[(0x080 + (offs_h * 0x180) + offs_l)] & 0xff00) >> 8);
+ b = ((m_palette_ptr[(0x100 + (offs_h * 0x180) + offs_l)] & 0xff00) >> 8);
- palette_set_color(machine(), ((offs_h << 8) + (offs_l << 1) + 0), rgb_t(r, g, b));
+ m_palette->set_pen_color(((offs_h << 8) + (offs_l << 1) + 0), rgb_t(r, g, b));
}
if (ACCESSING_BITS_0_7)
{
- r = ((m_palette[(0x000 + (offs_h * 0x180) + offs_l)] & 0x00ff) >> 0);
- g = ((m_palette[(0x080 + (offs_h * 0x180) + offs_l)] & 0x00ff) >> 0);
- b = ((m_palette[(0x100 + (offs_h * 0x180) + offs_l)] & 0x00ff) >> 0);
+ r = ((m_palette_ptr[(0x000 + (offs_h * 0x180) + offs_l)] & 0x00ff) >> 0);
+ g = ((m_palette_ptr[(0x080 + (offs_h * 0x180) + offs_l)] & 0x00ff) >> 0);
+ b = ((m_palette_ptr[(0x100 + (offs_h * 0x180) + offs_l)] & 0x00ff) >> 0);
- palette_set_color(machine(), ((offs_h << 8) + (offs_l << 1) + 1), rgb_t(r, g, b));
+ m_palette->set_pen_color(((offs_h << 8) + (offs_l << 1) + 1), rgb_t(r, g, b));
}
}
}
@@ -365,7 +365,7 @@ void niyanpai_state::video_start()
m_videoworkram[0] = auto_alloc_array_clear(machine(), UINT16, width * height);
m_videoworkram[1] = auto_alloc_array_clear(machine(), UINT16, width * height);
m_videoworkram[2] = auto_alloc_array_clear(machine(), UINT16, width * height);
- m_palette = auto_alloc_array(machine(), UINT16, 0x480);
+ m_palette_ptr = auto_alloc_array(machine(), UINT16, 0x480);
m_clut[0] = auto_alloc_array(machine(), UINT8, 0x1000);
m_clut[1] = auto_alloc_array(machine(), UINT8, 0x1000);
m_clut[2] = auto_alloc_array(machine(), UINT8, 0x1000);
diff --git a/src/mame/video/nmk16.c b/src/mame/video/nmk16.c
index 49bc22c79f1..777e9d8d909 100644
--- a/src/mame/video/nmk16.c
+++ b/src/mame/video/nmk16.c
@@ -419,7 +419,7 @@ inline void nmk16_state::nmk16_draw_sprite(bitmap_ind16 &bitmap, const rectangle
xx = w;
do
{
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code,
color,
flip_screen(), flip_screen(),
@@ -467,7 +467,7 @@ inline void nmk16_state::nmk16_draw_sprite_flipsupported(bitmap_ind16 &bitmap, c
xx = w;
do
{
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx, flipy,
@@ -596,7 +596,7 @@ int nmk16_state::nmk16_bioshipbg_sprflip_tx_update(screen_device &screen, bitmap
int numtile = data&0xfff;
int color = (data&0xf000)>>12;
- m_gfxdecode->gfx(3)->opaque(*m_background_bitmap,m_background_bitmap->cliprect(),
+ m_gfxdecode->gfx(3)->opaque(m_palette,*m_background_bitmap,m_background_bitmap->cliprect(),
numtile,
color,
0,0, /* no flip */
@@ -605,7 +605,7 @@ int nmk16_state::nmk16_bioshipbg_sprflip_tx_update(screen_device &screen, bitmap
data = tilerom[offs+0x1000+bank];
numtile = data&0xfff;
color = (data&0xf000)>>12;
- m_gfxdecode->gfx(3)->opaque(*m_background_bitmap,m_background_bitmap->cliprect(),
+ m_gfxdecode->gfx(3)->opaque(m_palette,*m_background_bitmap,m_background_bitmap->cliprect(),
numtile,
color,
0,0, /* no flip */
diff --git a/src/mame/video/nova2001.c b/src/mame/video/nova2001.c
index 6adb588e4ad..250d6fa16fc 100644
--- a/src/mame/video/nova2001.c
+++ b/src/mame/video/nova2001.c
@@ -44,7 +44,7 @@ PALETTE_INIT_MEMBER(nova2001_state,nova2001)
/* blue component */
b = (((color_prom[entry] >> 4) & 0x0c) | intensity) * 0x11;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
}
@@ -52,18 +52,18 @@ WRITE8_MEMBER(nova2001_state::ninjakun_paletteram_w)
{
int i;
- paletteram_BBGGRRII_byte_w(space,offset,data);
+ m_palette->write(space,offset,data);
// expand the sprite palette to full length
if (offset < 16)
{
- paletteram_BBGGRRII_byte_w(space, 0x200 + offset * 16 + 1, data);
+ m_palette->write(space, 0x200 + offset * 16 + 1, data);
if (offset != 1)
{
for (i = 0; i < 16; i++)
{
- paletteram_BBGGRRII_byte_w(space, 0x200 + offset + i * 16, data);
+ m_palette->write(space, 0x200 + offset + i * 16, data);
}
}
}
@@ -283,7 +283,7 @@ void nova2001_state::nova2001_draw_sprites(bitmap_ind16 &bitmap, const rectangle
flipy = !flipy;
}
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
tile,
color,
flipx, flipy,
@@ -320,14 +320,14 @@ void nova2001_state::pkunwar_draw_sprites(bitmap_ind16 &bitmap, const rectangle
flipy = !flipy;
}
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
tile,
color,
flipx, flipy,
sx, sy, 0);
// there's no X MSB, so draw with wraparound (fixes title screen)
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
tile,
color,
flipx, flipy,
diff --git a/src/mame/video/nycaptor.c b/src/mame/video/nycaptor.c
index 608f3b77c70..7c9388f845d 100644
--- a/src/mame/video/nycaptor.c
+++ b/src/mame/video/nycaptor.c
@@ -103,9 +103,9 @@ WRITE8_MEMBER(nycaptor_state::nycaptor_palette_w)
return;
if (offset & 0x100)
- paletteram_xxxxBBBBGGGGRRRR_byte_split_hi_w(space, (offset & 0xff) + (m_palette_bank << 8), data);
+ m_palette->write(space, (offset & 0xff) + (m_palette_bank << 8), data);
else
- paletteram_xxxxBBBBGGGGRRRR_byte_split_lo_w(space, (offset & 0xff) + (m_palette_bank << 8), data);
+ m_palette->write(space, (offset & 0xff) + (m_palette_bank << 8), data);
}
READ8_MEMBER(nycaptor_state::nycaptor_palette_r)
@@ -173,7 +173,7 @@ void nycaptor_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
flipx = BIT(m_spriteram[offs + 1], 6);
flipy = BIT(m_spriteram[offs + 1], 7);
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
pal,
flipx,flipy,
@@ -182,7 +182,7 @@ void nycaptor_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
if (m_spriteram[offs + 3] > 240)
{
sx = (m_spriteram[offs + 3] - 256);
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
pal,
flipx,flipy,
diff --git a/src/mame/video/ohmygod.c b/src/mame/video/ohmygod.c
index 5e8f0627173..d7907d7c9a5 100644
--- a/src/mame/video/ohmygod.c
+++ b/src/mame/video/ohmygod.c
@@ -90,7 +90,7 @@ void ohmygod_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
sy -= 65536;
flipx = sr[offs + 3] & 0x8000;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,0,
diff --git a/src/mame/video/ojankohs.c b/src/mame/video/ojankohs.c
index ea7338e91bc..8daf9ae5d77 100644
--- a/src/mame/video/ojankohs.c
+++ b/src/mame/video/ojankohs.c
@@ -23,7 +23,7 @@ PALETTE_INIT_MEMBER(ojankohs_state,ojankoy)
int i;
int bit0, bit1, bit2, bit3, bit4, r, g, b;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
bit0 = BIT(color_prom[0], 2);
bit1 = BIT(color_prom[0], 3);
@@ -31,20 +31,20 @@ PALETTE_INIT_MEMBER(ojankohs_state,ojankoy)
bit3 = BIT(color_prom[0], 5);
bit4 = BIT(color_prom[0], 6);
r = 0x08 * bit0 + 0x11 * bit1 + 0x21 * bit2 + 0x43 * bit3 + 0x82 * bit4;
- bit0 = BIT(color_prom[machine().total_colors()], 5);
- bit1 = BIT(color_prom[machine().total_colors()], 6);
- bit2 = BIT(color_prom[machine().total_colors()], 7);
+ bit0 = BIT(color_prom[palette.entries()], 5);
+ bit1 = BIT(color_prom[palette.entries()], 6);
+ bit2 = BIT(color_prom[palette.entries()], 7);
bit3 = BIT(color_prom[0], 0);
bit4 = BIT(color_prom[0], 1);
g = 0x08 * bit0 + 0x11 * bit1 + 0x21 * bit2 + 0x43 * bit3 + 0x82 * bit4;
- bit0 = BIT(color_prom[machine().total_colors()], 0);
- bit1 = BIT(color_prom[machine().total_colors()], 1);
- bit2 = BIT(color_prom[machine().total_colors()], 2);
- bit3 = BIT(color_prom[machine().total_colors()], 3);
- bit4 = BIT(color_prom[machine().total_colors()], 4);
+ bit0 = BIT(color_prom[palette.entries()], 0);
+ bit1 = BIT(color_prom[palette.entries()], 1);
+ bit2 = BIT(color_prom[palette.entries()], 2);
+ bit3 = BIT(color_prom[palette.entries()], 3);
+ bit4 = BIT(color_prom[palette.entries()], 4);
b = 0x08 * bit0 + 0x11 * bit1 + 0x21 * bit2 + 0x43 * bit3 + 0x82 * bit4;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
color_prom++;
}
}
@@ -61,7 +61,7 @@ WRITE8_MEMBER(ojankohs_state::ojankohs_palette_w)
g = ((m_paletteram[offset + 0] & 0x03) << 3) | ((m_paletteram[offset + 1] & 0xe0) >> 5);
b = (m_paletteram[offset + 1] & 0x1f) >> 0;
- palette_set_color_rgb(machine(), offset >> 1, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(offset >> 1, pal5bit(r), pal5bit(g), pal5bit(b));
}
WRITE8_MEMBER(ojankohs_state::ccasino_palette_w)
@@ -79,7 +79,7 @@ WRITE8_MEMBER(ojankohs_state::ccasino_palette_w)
g = ((m_paletteram[offset + 0] & 0x03) << 3) | ((m_paletteram[offset + 1] & 0xe0) >> 5);
b = (m_paletteram[offset + 1] & 0x1f) >> 0;
- palette_set_color_rgb(machine(), offset >> 1, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(offset >> 1, pal5bit(r), pal5bit(g), pal5bit(b));
}
WRITE8_MEMBER(ojankohs_state::ojankoc_palette_w)
@@ -98,7 +98,7 @@ WRITE8_MEMBER(ojankohs_state::ojankoc_palette_w)
g = (color >> 5) & 0x1f;
b = (color >> 0) & 0x1f;
- palette_set_color_rgb(machine(), offset >> 1, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(offset >> 1, pal5bit(r), pal5bit(g), pal5bit(b));
}
diff --git a/src/mame/video/oneshot.c b/src/mame/video/oneshot.c
index 18c63cd218f..9c229aa6950 100644
--- a/src/mame/video/oneshot.c
+++ b/src/mame/video/oneshot.c
@@ -123,7 +123,7 @@ void oneshot_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
for (blocky = 0; blocky < ysize; blocky++)
{
- gfx->transpen(
+ gfx->transpen(m_palette,
bitmap,
cliprect,
num + (blocky * xsize) + blockx,
@@ -132,7 +132,7 @@ void oneshot_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
xpos + blockx * 8, ypos + blocky * 8, 0);
- gfx->transpen(
+ gfx->transpen(m_palette,
bitmap,
cliprect,
num + (blocky * xsize) + blockx,
@@ -148,7 +148,7 @@ void oneshot_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
UINT32 oneshot_state::screen_update_oneshot(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
m_mid_tilemap->set_scrollx(0, m_scroll[0] - 0x1f5);
m_mid_tilemap->set_scrolly(0, m_scroll[1]);
@@ -163,7 +163,7 @@ UINT32 oneshot_state::screen_update_oneshot(screen_device &screen, bitmap_ind16
UINT32 oneshot_state::screen_update_maddonna(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
m_mid_tilemap->set_scrolly(0, m_scroll[1]); // other registers aren't used so we don't know which layers they relate to
diff --git a/src/mame/video/orbit.c b/src/mame/video/orbit.c
index 69426a27715..44b9653ed97 100644
--- a/src/mame/video/orbit.c
+++ b/src/mame/video/orbit.c
@@ -69,7 +69,7 @@ void orbit_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
hpos <<= 1;
vpos <<= 1;
- m_gfxdecode->gfx(layout)->zoom_transpen(bitmap,cliprect, code, 0, flip_x, flip_y,
+ m_gfxdecode->gfx(layout)->zoom_transpen(m_palette,bitmap,cliprect, code, 0, flip_x, flip_y,
hpos, vpos, zoom_x, zoom_y, 0);
}
}
diff --git a/src/mame/video/othunder.c b/src/mame/video/othunder.c
index 34e086b2b29..dbfd9d23d72 100644
--- a/src/mame/video/othunder.c
+++ b/src/mame/video/othunder.c
@@ -164,7 +164,7 @@ void othunder_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap,
}
else
{
- m_gfxdecode->gfx(0)->zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->zoom_transpen(m_palette,bitmap,cliprect,
sprite_ptr->code,
sprite_ptr->color,
sprite_ptr->flipx,sprite_ptr->flipy,
@@ -182,7 +182,7 @@ logerror("Sprite number %04x had %02x invalid chunks\n",tilenum,bad_chunks);
{
sprite_ptr--;
- m_gfxdecode->gfx(0)->prio_zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->prio_zoom_transpen(m_palette,bitmap,cliprect,
sprite_ptr->code,
sprite_ptr->color,
sprite_ptr->flipx,sprite_ptr->flipy,
diff --git a/src/mame/video/pacland.c b/src/mame/video/pacland.c
index 7848f33b71d..a7dc671f56e 100644
--- a/src/mame/video/pacland.c
+++ b/src/mame/video/pacland.c
@@ -83,33 +83,30 @@ void pacland_state::switch_palette()
color_prom++;
- colortable_palette_set_color(machine().colortable,i,rgb_t(r,g,b));
+ m_palette->set_indirect_color(i,rgb_t(r,g,b));
}
}
-void pacland_state::palette_init()
+PALETTE_INIT_MEMBER(pacland_state, pacland)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 256);
-
m_color_prom = color_prom; /* we'll need this later */
/* skip the palette data, it will be initialized later */
color_prom += 2 * 0x400;
/* color_prom now points to the beginning of the lookup table */
for (i = 0;i < 0x400;i++)
- colortable_entry_set_value(machine().colortable, m_gfxdecode->gfx(0)->colorbase() + i, *color_prom++);
+ palette.set_pen_indirect(m_gfxdecode->gfx(0)->colorbase() + i, *color_prom++);
/* Background */
for (i = 0;i < 0x400;i++)
- colortable_entry_set_value(machine().colortable, m_gfxdecode->gfx(1)->colorbase() + i, *color_prom++);
+ palette.set_pen_indirect(m_gfxdecode->gfx(1)->colorbase() + i, *color_prom++);
/* Sprites */
for (i = 0;i < 0x400;i++)
- colortable_entry_set_value(machine().colortable, m_gfxdecode->gfx(2)->colorbase() + i, *color_prom++);
+ palette.set_pen_indirect(m_gfxdecode->gfx(2)->colorbase() + i, *color_prom++);
m_palette_bank = 0;
switch_palette();
@@ -128,7 +125,7 @@ void pacland_state::palette_init()
/* iterate over all palette entries except the last one */
for (palentry = 0; palentry < 0x100; palentry++)
{
- UINT32 mask = colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(2), i, palentry);
+ UINT32 mask = palette.transpen_mask(*m_gfxdecode->gfx(2), i, palentry);
/* transmask[0] is a mask that is used to draw only high priority sprite pixels; thus, pens
$00-$7F are opaque, and others are transparent */
@@ -207,8 +204,8 @@ void pacland_state::video_start()
assert(m_gfxdecode->gfx(0)->colors() <= TILEMAP_NUM_GROUPS);
for (color = 0; color < m_gfxdecode->gfx(0)->colors(); color++)
{
- UINT32 mask = colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(0), color, 0x7f);
- mask |= colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(0), color, 0xff);
+ UINT32 mask = m_palette->transpen_mask(*m_gfxdecode->gfx(0), color, 0x7f);
+ mask |= m_palette->transpen_mask(*m_gfxdecode->gfx(0), color, 0xff);
m_fg_tilemap->set_transmask(color, mask, 0);
}
@@ -314,13 +311,13 @@ void pacland_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, co
for (x = 0;x <= sizex;x++)
{
if (whichmask != 0)
- m_gfxdecode->gfx(2)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transmask(m_palette,bitmap,cliprect,
sprite + gfx_offs[y ^ (sizey * flipy)][x ^ (sizex * flipx)],
color,
flipx,flipy,
sx + 16*x,sy + 16*y,m_transmask[whichmask][color]);
else
- m_gfxdecode->gfx(2)->prio_transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->prio_transmask(m_palette,bitmap,cliprect,
sprite + gfx_offs[y ^ (sizey * flipy)][x ^ (sizex * flipx)],
color,
flipx,flipy,
diff --git a/src/mame/video/pacman.c b/src/mame/video/pacman.c
index 5adb92dbcd8..d4800f2a2b8 100644
--- a/src/mame/video/pacman.c
+++ b/src/mame/video/pacman.c
@@ -74,9 +74,6 @@ PALETTE_INIT_MEMBER(pacman_state,pacman)
3, &resistances[0], gweights, 0, 0,
2, &resistances[1], bweights, 0, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 32);
-
/* create a lookup table for the palette */
for (i = 0; i < 32; i++)
{
@@ -100,7 +97,7 @@ PALETTE_INIT_MEMBER(pacman_state,pacman)
bit1 = (color_prom[i] >> 7) & 0x01;
b = combine_2_weights(bweights, bit0, bit1);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -112,10 +109,10 @@ PALETTE_INIT_MEMBER(pacman_state,pacman)
UINT8 ctabentry = color_prom[i] & 0x0f;
/* first palette bank */
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
/* second palette bank */
- colortable_entry_set_value(machine().colortable, i + 64*4, 0x10 + ctabentry);
+ palette.set_pen_indirect(i + 64*4, 0x10 + ctabentry);
}
}
@@ -243,20 +240,20 @@ UINT32 pacman_state::screen_update_pacman(screen_device &screen, bitmap_ind16 &b
color = ( spriteram[offs + 1] & 0x1f ) | (m_colortablebank << 5) | (m_palettebank << 6 );
- m_gfxdecode->gfx(1)->transmask(bitmap,spriteclip,
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,spriteclip,
( spriteram[offs] >> 2 ) | (m_spritebank << 6),
color,
fx,fy,
sx,sy,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color & 0x3f, 0));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color & 0x3f, 0));
/* also plot the sprite with wraparound (tunnel in Crush Roller) */
- m_gfxdecode->gfx(1)->transmask(bitmap,spriteclip,
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,spriteclip,
( spriteram[offs] >> 2 ) | (m_spritebank << 6),
color,
fx,fy,
sx - 256,sy,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color & 0x3f, 0));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color & 0x3f, 0));
}
/* In the Pac Man based games (NOT Pengo) the first two sprites must be offset */
/* one pixel to the left to get a more correct placement */
@@ -281,20 +278,20 @@ UINT32 pacman_state::screen_update_pacman(screen_device &screen, bitmap_ind16 &b
fx = (spriteram[offs] & 1) ^ m_inv_spr;
fy = (spriteram[offs] & 2) ^ ((m_inv_spr) << 1);
- m_gfxdecode->gfx(1)->transmask(bitmap,spriteclip,
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,spriteclip,
( spriteram[offs] >> 2 ) | (m_spritebank << 6),
color,
fx,fy,
sx,sy + m_xoffsethack,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color & 0x3f, 0));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color & 0x3f, 0));
/* also plot the sprite with wraparound (tunnel in Crush Roller) */
- m_gfxdecode->gfx(1)->transmask(bitmap,spriteclip,
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,spriteclip,
( spriteram[offs] >> 2 ) | (m_spritebank << 6),
color,
fy,fx, //FIXME: flipping bits are really supposed to be inverted here?
sx - 256,sy + m_xoffsethack,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color & 0x3f, 0));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color & 0x3f, 0));
}
}
@@ -410,12 +407,12 @@ UINT32 pacman_state::screen_update_s2650games(screen_device &screen, bitmap_ind1
color = spriteram[offs + 1] & 0x1f;
/* TODO: ?? */
- m_gfxdecode->gfx(1)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,cliprect,
(spriteram[offs] >> 2) | ((m_s2650_spriteram[offs] & 3) << 6),
color,
spriteram[offs] & 1,spriteram[offs] & 2,
sx,sy,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color & 0x3f, 0));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color & 0x3f, 0));
}
/* In the Pac Man based games (NOT Pengo) the first two sprites must be offset */
/* one pixel to the left to get a more correct placement */
@@ -430,12 +427,12 @@ UINT32 pacman_state::screen_update_s2650games(screen_device &screen, bitmap_ind1
color = spriteram[offs + 1] & 0x1f;
/* TODO: ?? */
- m_gfxdecode->gfx(1)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,cliprect,
(spriteram[offs] >> 2) | ((m_s2650_spriteram[offs] & 3)<<6),
color,
spriteram[offs] & 1,spriteram[offs] & 2,
sx,sy + m_xoffsethack,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color & 0x3f, 0));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color & 0x3f, 0));
}
return 0;
}
diff --git a/src/mame/video/pandoras.c b/src/mame/video/pandoras.c
index 43d58d2d849..bbbc47c50ef 100644
--- a/src/mame/video/pandoras.c
+++ b/src/mame/video/pandoras.c
@@ -21,7 +21,7 @@
***************************************************************************/
-void pandoras_state::palette_init()
+PALETTE_INIT_MEMBER(pandoras_state, pandoras)
{
const UINT8 *color_prom = memregion("proms")->base();
static const int resistances_rg[3] = { 1000, 470, 220 };
@@ -35,9 +35,6 @@ void pandoras_state::palette_init()
3, &resistances_rg[0], gweights, 1000, 0,
2, &resistances_b[0], bweights, 1000, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x20);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -61,7 +58,7 @@ void pandoras_state::palette_init()
bit1 = (color_prom[i] >> 7) & 0x01;
b = combine_2_weights(bweights, bit0, bit1);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -71,14 +68,14 @@ void pandoras_state::palette_init()
for (i = 0; i < 0x100; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* characters */
for (i = 0x100; i < 0x200; i++)
{
UINT8 ctabentry = (color_prom[i] & 0x0f) | 0x10;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -159,12 +156,12 @@ void pandoras_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
int nflipx = sr[offs + 3] & 0x40;
int nflipy = sr[offs + 3] & 0x80;
- m_gfxdecode->gfx(0)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transmask(m_palette,bitmap,cliprect,
sr[offs + 2],
color,
!nflipx,!nflipy,
sx,sy,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(0), color, 0));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(0), color, 0));
}
}
diff --git a/src/mame/video/paradise.c b/src/mame/video/paradise.c
index 58308b47873..3185e110db3 100644
--- a/src/mame/video/paradise.c
+++ b/src/mame/video/paradise.c
@@ -44,7 +44,7 @@ void paradise_state::update_pix_palbank()
int i;
for (i = 0; i < 15; i++)
- palette_set_color_rgb(machine(), 0x800 + i, m_paletteram[0x200 + m_pixbank + i + 0x800 * 0], m_paletteram[0x200 + m_pixbank + i + 0x800 * 1],
+ m_palette->set_pen_color(0x800 + i, m_paletteram[0x200 + m_pixbank + i + 0x800 * 0], m_paletteram[0x200 + m_pixbank + i + 0x800 * 1],
m_paletteram[0x200 + m_pixbank + i + 0x800 * 2]);
}
@@ -53,7 +53,7 @@ WRITE8_MEMBER(paradise_state::paradise_palette_w)
{
m_paletteram[offset] = data;
offset %= 0x800;
- palette_set_color_rgb(machine(), offset, m_paletteram[offset + 0x800 * 0], m_paletteram[offset + 0x800 * 1],
+ m_palette->set_pen_color(offset, m_paletteram[offset + 0x800 * 0], m_paletteram[offset + 0x800 * 1],
m_paletteram[offset + 0x800 * 2]);
update_pix_palbank();
@@ -199,20 +199,20 @@ void paradise_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
y = 0xf0 - y; flipy = !flipy;
}
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code + (attr << 8),
0,
flipx, flipy,
x,y, 0xff );
/* wrap around x */
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code + (attr << 8),
0,
flipx, flipy,
x - 256,y, 0xff );
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code + (attr << 8),
0,
flipx, flipy,
@@ -244,7 +244,7 @@ if (machine().input().code_pressed(KEYCODE_Z))
}
#endif
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
if (!(m_priority & 4)) /* Screen blanking */
return 0;
@@ -279,7 +279,7 @@ if (machine().input().code_pressed(KEYCODE_Z))
/* no pix layer, no tilemap_0, different priority bits */
UINT32 paradise_state::screen_update_torus(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
if (!(m_priority & 2)) /* Screen blanking */
return 0;
@@ -309,7 +309,7 @@ UINT32 paradise_state::screen_update_torus(screen_device &screen, bitmap_ind16 &
/* I don't know how the priority bits work on this one */
UINT32 paradise_state::screen_update_madball(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
m_tilemap_0->draw(screen, bitmap, cliprect, 0, 0);
m_tilemap_1->draw(screen, bitmap, cliprect, 0, 0);
m_tilemap_2->draw(screen, bitmap, cliprect, 0, 0);
diff --git a/src/mame/video/pastelg.c b/src/mame/video/pastelg.c
index 6788af205b3..3fa0fb3a110 100644
--- a/src/mame/video/pastelg.c
+++ b/src/mame/video/pastelg.c
@@ -13,13 +13,13 @@
******************************************************************************/
-void pastelg_state::palette_init()
+PALETTE_INIT_MEMBER(pastelg_state, pastelg)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
int bit0, bit1, bit2, bit3, r, g, b;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
bit0 = (color_prom[0] >> 0) & 0x01;
bit1 = (color_prom[0] >> 1) & 0x01;
@@ -31,13 +31,13 @@ void pastelg_state::palette_init()
bit2 = (color_prom[0] >> 6) & 0x01;
bit3 = (color_prom[0] >> 7) & 0x01;
g = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- bit0 = (color_prom[machine().total_colors()] >> 0) & 0x01;
- bit1 = (color_prom[machine().total_colors()] >> 1) & 0x01;
- bit2 = (color_prom[machine().total_colors()] >> 2) & 0x01;
- bit3 = (color_prom[machine().total_colors()] >> 3) & 0x01;
+ bit0 = (color_prom[palette.entries()] >> 0) & 0x01;
+ bit1 = (color_prom[palette.entries()] >> 1) & 0x01;
+ bit2 = (color_prom[palette.entries()] >> 2) & 0x01;
+ bit3 = (color_prom[palette.entries()] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
color_prom++;
}
}
diff --git a/src/mame/video/pbaction.c b/src/mame/video/pbaction.c
index 904f15af561..7d268b4f40b 100644
--- a/src/mame/video/pbaction.c
+++ b/src/mame/video/pbaction.c
@@ -115,7 +115,7 @@ void pbaction_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
flipy = !flipy;
}
- m_gfxdecode->gfx((spriteram[offs] & 0x80) ? 3 : 2)->transpen(bitmap,cliprect, /* normal or double size */
+ m_gfxdecode->gfx((spriteram[offs] & 0x80) ? 3 : 2)->transpen(m_palette,bitmap,cliprect, /* normal or double size */
spriteram[offs],
spriteram[offs + 1] & 0x0f,
flipx,flipy,
diff --git a/src/mame/video/pc080sn.c b/src/mame/video/pc080sn.c
index 703b3b003ad..ae9dccb861b 100644
--- a/src/mame/video/pc080sn.c
+++ b/src/mame/video/pc080sn.c
@@ -52,7 +52,8 @@ const device_type PC080SN = &device_creator<pc080sn_device>;
pc080sn_device::pc080sn_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, PC080SN, "Taito PC080SN", tag, owner, clock, "pc080sn", __FILE__),
m_ram(NULL),
- m_gfxdecode(*this)
+ m_gfxdecode(*this),
+ m_palette(*this)
//m_bg_ram[0](NULL),
//m_bg_ram[1](NULL),
//m_bgscroll_ram[0](NULL),
@@ -71,6 +72,16 @@ void pc080sn_device::static_set_gfxdecode_tag(device_t &device, const char *tag)
}
//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void pc080sn_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<pc080sn_device &>(device).m_palette.set_tag(tag);
+}
+
+//-------------------------------------------------
// device_config_complete - perform any
// operations now that the configuration is
// complete
diff --git a/src/mame/video/pc080sn.h b/src/mame/video/pc080sn.h
index 8c540f1e143..8acee56e618 100644
--- a/src/mame/video/pc080sn.h
+++ b/src/mame/video/pc080sn.h
@@ -19,6 +19,7 @@ public:
// static configuration
static void static_set_gfxdecode_tag(device_t &device, const char *tag);
+ static void static_set_palette_tag(device_t &device, const char *tag);
DECLARE_READ16_MEMBER( word_r );
DECLARE_WRITE16_MEMBER( word_w );
@@ -62,6 +63,7 @@ public:
tilemap_t *m_tilemap[2];
required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
};
extern const device_type PC080SN;
@@ -73,4 +75,7 @@ extern const device_type PC080SN;
#define MCFG_PC080SN_GFXDECODE(_gfxtag) \
pc080sn_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+#define MCFG_PC080SN_PALETTE(_palette_tag) \
+ pc080sn_device::static_set_palette_tag(*device, "^" _palette_tag);
+
#endif
diff --git a/src/mame/video/pc090oj.c b/src/mame/video/pc090oj.c
index a96fda8bdf6..86ea906e982 100644
--- a/src/mame/video/pc090oj.c
+++ b/src/mame/video/pc090oj.c
@@ -80,7 +80,8 @@ pc090oj_device::pc090oj_device(const machine_config &mconfig, const char *tag, d
m_sprite_ctrl(0),
m_ram(NULL),
m_ram_buffered(0),
- m_gfxdecode(*this)
+ m_gfxdecode(*this),
+ m_palette(*this)
{
}
@@ -94,6 +95,15 @@ void pc090oj_device::static_set_gfxdecode_tag(device_t &device, const char *tag)
downcast<pc090oj_device &>(device).m_gfxdecode.set_tag(tag);
}
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void pc090oj_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<pc090oj_device &>(device).m_palette.set_tag(tag);
+}
//-------------------------------------------------
// device_config_complete - perform any
@@ -231,7 +241,7 @@ void pc090oj_device::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
x += m_x_offset;
y += m_y_offset;
- m_gfxdecode->gfx(m_gfxnum)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_gfxnum)->prio_transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/pc090oj.h b/src/mame/video/pc090oj.h
index a0afb3c47e9..cafebae15b2 100644
--- a/src/mame/video/pc090oj.h
+++ b/src/mame/video/pc090oj.h
@@ -18,6 +18,7 @@ public:
// static configuration
static void static_set_gfxdecode_tag(device_t &device, const char *tag);
+ static void static_set_palette_tag(device_t &device, const char *tag);
DECLARE_READ16_MEMBER( word_r );
DECLARE_WRITE16_MEMBER( word_w );
@@ -49,6 +50,7 @@ private:
UINT16 * m_ram;
UINT16 * m_ram_buffered;
required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
};
extern const device_type PC090OJ;
@@ -60,4 +62,7 @@ extern const device_type PC090OJ;
#define MCFG_PC090OJ_GFXDECODE(_gfxtag) \
pc090oj_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+#define MCFG_PC090OJ_PALETTE(_palette_tag) \
+ pc090oj_device::static_set_palette_tag(*device, "^" _palette_tag);
+
#endif
diff --git a/src/mame/video/pcktgal.c b/src/mame/video/pcktgal.c
index 40502d88cf0..791b2e84edd 100644
--- a/src/mame/video/pcktgal.c
+++ b/src/mame/video/pcktgal.c
@@ -1,12 +1,12 @@
#include "emu.h"
#include "includes/pcktgal.h"
-void pcktgal_state::palette_init()
+PALETTE_INIT_MEMBER(pcktgal_state, pcktgal)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int bit0,bit1,bit2,bit3,r,g,b;
@@ -20,13 +20,13 @@ void pcktgal_state::palette_init()
bit2 = (color_prom[i] >> 6) & 0x01;
bit3 = (color_prom[i] >> 7) & 0x01;
g = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- bit0 = (color_prom[i + machine().total_colors()] >> 0) & 0x01;
- bit1 = (color_prom[i + machine().total_colors()] >> 1) & 0x01;
- bit2 = (color_prom[i + machine().total_colors()] >> 2) & 0x01;
- bit3 = (color_prom[i + machine().total_colors()] >> 3) & 0x01;
+ bit0 = (color_prom[i + palette.entries()] >> 0) & 0x01;
+ bit1 = (color_prom[i + palette.entries()] >> 1) & 0x01;
+ bit2 = (color_prom[i + palette.entries()] >> 2) & 0x01;
+ bit3 = (color_prom[i + palette.entries()] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
}
@@ -54,7 +54,7 @@ void pcktgal_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
if (flipy) flipy=0; else flipy=1;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
spriteram[offs+3] + ((spriteram[offs+1] & 1) << 8),
(spriteram[offs+1] & 0x70) >> 4,
flipx,flipy,
diff --git a/src/mame/video/pgm.c b/src/mame/video/pgm.c
index 2b1b2a54cd4..f77ae85deff 100644
--- a/src/mame/video/pgm.c
+++ b/src/mame/video/pgm.c
@@ -625,7 +625,7 @@ VIDEO_START_MEMBER(pgm_state,pgm)
m_bg_tilemap->set_scroll_rows(16 * 32);
for (i = 0; i < 0x1200 / 2; i++)
- palette_set_color(machine(), i, rgb_t(0, 0, 0));
+ m_palette->set_pen_color(i, rgb_t(0, 0, 0));
m_spritebufferram = auto_alloc_array_clear(machine(), UINT16, 0xa00/2);
diff --git a/src/mame/video/phoenix.c b/src/mame/video/phoenix.c
index 913f9e23ce8..1e6bef17e4a 100644
--- a/src/mame/video/phoenix.c
+++ b/src/mame/video/phoenix.c
@@ -87,9 +87,9 @@ PALETTE_INIT_MEMBER(phoenix_state,phoenix)
{
int col;
col = ((i << 3 ) & 0x18) | ((i>>2) & 0x07) | (i & 0x60);
- palette_set_color(machine(),i,rgb[col]);
+ palette.set_pen_color(i,rgb[col]);
}
- machine().palette->normalize_range(0, 255);
+ palette.palette()->normalize_range(0, 255);
auto_free(machine(), rgb);
}
@@ -105,9 +105,9 @@ PALETTE_INIT_MEMBER(phoenix_state,survival)
{
int col;
col = ((i << 3 ) & 0x18) | ((i>>2) & 0x07) | (i & 0x60);
- palette_set_color(machine(),i,rgb[col]);
+ palette.set_pen_color(i,rgb[col]);
}
- machine().palette->normalize_range(0, 255);
+ palette.palette()->normalize_range(0, 255);
auto_free(machine(), rgb);
}
@@ -123,9 +123,9 @@ PALETTE_INIT_MEMBER(phoenix_state,pleiads)
{
int col;
col = ((i << 3 ) & 0x18) | ((i>>2) & 0x07) | (i & 0xE0);
- palette_set_color(machine(),i,rgb[col]);
+ palette.set_pen_color(i,rgb[col]);
}
- machine().palette->normalize_range(0, 255);
+ palette.palette()->normalize_range(0, 255);
auto_free(machine(), rgb);
}
diff --git a/src/mame/video/pingpong.c b/src/mame/video/pingpong.c
index b2407bf1b32..a3367aa9228 100644
--- a/src/mame/video/pingpong.c
+++ b/src/mame/video/pingpong.c
@@ -30,14 +30,11 @@
bit 0 -- 1 kohm resistor -- RED
***************************************************************************/
-void pingpong_state::palette_init()
+PALETTE_INIT_MEMBER(pingpong_state, pingpong)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x20);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -62,7 +59,7 @@ void pingpong_state::palette_init()
bit2 = (color_prom[i] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -72,14 +69,14 @@ void pingpong_state::palette_init()
for (i = 0; i < 0x100; i++)
{
UINT8 ctabentry = (color_prom[i] & 0x0f) | 0x10;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* sprites */
for (i = 0x100; i < 0x200; i++)
{
UINT8 ctabentry = BITSWAP8(color_prom[i],7,6,5,4,0,1,2,3);
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -133,12 +130,12 @@ void pingpong_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
color = spriteram[offs] & 0x1f;
schar = spriteram[offs + 2] & 0x7f;
- m_gfxdecode->gfx(1)->transmask(bitmap,spritevisiblearea,
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,spritevisiblearea,
schar,
color,
flipx,flipy,
sx,sy,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, 0));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 0));
}
}
diff --git a/src/mame/video/pirates.c b/src/mame/video/pirates.c
index ab9687638c8..e2f469e95ff 100644
--- a/src/mame/video/pirates.c
+++ b/src/mame/video/pirates.c
@@ -89,7 +89,7 @@ void pirates_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
ypos = 0xf2 - ypos;
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/pitnrun.c b/src/mame/video/pitnrun.c
index f5efa0e8199..9c02a015b45 100644
--- a/src/mame/video/pitnrun.c
+++ b/src/mame/video/pitnrun.c
@@ -112,7 +112,7 @@ void pitnrun_state::pitnrun_spotlights()
}
-void pitnrun_state::palette_init()
+PALETTE_INIT_MEMBER(pitnrun_state, pitnrun)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -132,7 +132,7 @@ void pitnrun_state::palette_init()
bit2 = (color_prom[i] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
/* fake bg palette for lightning effect*/
@@ -154,7 +154,7 @@ void pitnrun_state::palette_init()
g/=3;
b/=3;
- palette_set_color_rgb(machine(),i+16,(r>0xff)?0xff:r,(g>0xff)?0xff:g,(b>0xff)?0xff:b);
+ palette.set_pen_color(i+16,(r>0xff)?0xff:r,(g>0xff)?0xff:g,(b>0xff)?0xff:b);
}
}
@@ -196,7 +196,7 @@ void pitnrun_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
flipy = !flipy;
}
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
(spriteram[offs+1]&0x3f)+((spriteram[offs+2]&0x80)>>1)+((spriteram[offs+2]&0x40)<<1),
pal,
flipx,flipy,
diff --git a/src/mame/video/pk8000.c b/src/mame/video/pk8000.c
index 9241d32858d..def323c9802 100644
--- a/src/mame/video/pk8000.c
+++ b/src/mame/video/pk8000.c
@@ -80,9 +80,9 @@ static const rgb_t pk8000_palette[16] = {
rgb_t(0xff, 0xff, 0xff), // F
};
-void pk8000_base_state::palette_init()
+PALETTE_INIT_MEMBER(pk8000_base_state, pk8000)
{
- palette_set_colors(machine(), 0, pk8000_palette, ARRAY_LENGTH(pk8000_palette));
+ palette.set_pen_colors(0, pk8000_palette, ARRAY_LENGTH(pk8000_palette));
}
READ8_MEMBER(pk8000_base_state::pk8000_84_porta_r)
diff --git a/src/mame/video/pktgaldx.c b/src/mame/video/pktgaldx.c
index d2d5f26bcd8..e0d7831def9 100644
--- a/src/mame/video/pktgaldx.c
+++ b/src/mame/video/pktgaldx.c
@@ -29,7 +29,7 @@ UINT32 pktgaldx_state::screen_update_pktgaldb(screen_device &screen, bitmap_ind1
int tileno;
int colour;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
/* the bootleg seems to treat the tilemaps as sprites */
for (offset = 0; offset < 0x1600 / 2; offset += 8)
@@ -43,7 +43,7 @@ UINT32 pktgaldx_state::screen_update_pktgaldb(screen_device &screen, bitmap_ind1
y &= 0x1ff;
y -= 8;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, tileno ^ 0x1000, colour, 0, 0, x, y, 0);
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect, tileno ^ 0x1000, colour, 0, 0, x, y, 0);
}
for (offset = 0x1600/2; offset < 0x2000 / 2; offset += 8)
@@ -57,7 +57,7 @@ UINT32 pktgaldx_state::screen_update_pktgaldb(screen_device &screen, bitmap_ind1
y &= 0x1ff;
y -= 8;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, tileno ^ 0x4000, colour, 0, 0, x, y, 0);
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect, tileno ^ 0x4000, colour, 0, 0, x, y, 0);
}
for (offset = 0x2000/2; offset < 0x4000 / 2; offset += 8)
@@ -71,7 +71,7 @@ UINT32 pktgaldx_state::screen_update_pktgaldb(screen_device &screen, bitmap_ind1
y &= 0x1ff;
y -= 8;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, tileno ^ 0x3000, colour, 0, 0, x, y, 0);
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect, tileno ^ 0x3000, colour, 0, 0, x, y, 0);
}
return 0;
diff --git a/src/mame/video/playch10.c b/src/mame/video/playch10.c
index 974adff596a..b786dd10277 100644
--- a/src/mame/video/playch10.c
+++ b/src/mame/video/playch10.c
@@ -14,7 +14,7 @@ WRITE8_MEMBER(playch10_state::playch10_videoram_w)
}
}
-void playch10_state::palette_init()
+PALETTE_INIT_MEMBER(playch10_state, playch10)
{
const UINT8 *color_prom = memregion("proms")->base();
ppu2c0x_device *ppu = machine().device<ppu2c0x_device>("ppu");
@@ -50,12 +50,12 @@ void playch10_state::palette_init()
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
color_prom++;
}
- ppu->init_palette_rgb(machine(), 256);
+ ppu->init_palette_rgb(palette, 256);
}
void playch10_state::ppu_irq(int *ppu_regs)
diff --git a/src/mame/video/playmark.c b/src/mame/video/playmark.c
index 62239df0da9..eac6e542724 100644
--- a/src/mame/video/playmark.c
+++ b/src/mame/video/playmark.c
@@ -325,7 +325,7 @@ WRITE16_MEMBER(playmark_state::bigtwin_paletteram_w)
g |= ((val & 0x04) >> 2);
b |= ((val & 0x02) >> 1);
- palette_set_color_rgb(machine(), offset, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(offset, pal5bit(r), pal5bit(g), pal5bit(b));
}
WRITE16_MEMBER(playmark_state::bigtwin_scroll_w)
@@ -435,7 +435,7 @@ void playmark_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap,
if(!pri && (color & 0x0c) == 0x0c)
pri = 2;
- m_gfxdecode->gfx(0)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->prio_transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,0,
@@ -473,7 +473,7 @@ void playmark_state::bigtwinb_draw_sprites( screen_device &screen, bitmap_ind16
code = spriteram[offs + 2] >> codeshift;
color = ((spriteram[offs + 1] & 0xf000) >> 12);
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,0,
@@ -545,7 +545,7 @@ UINT32 playmark_state::screen_update_bigtwinb(screen_device &screen, bitmap_ind1
m_tx_tilemap->draw(screen, bitmap, cliprect, 0, 0);
}
else
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
@@ -599,6 +599,6 @@ UINT32 playmark_state::screen_update_hrdtimes(screen_device &screen, bitmap_ind1
m_tx_tilemap->draw(screen, bitmap, cliprect, 0, 0);
}
else
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
diff --git a/src/mame/video/plygonet.c b/src/mame/video/plygonet.c
index bd1dc1ada52..c858471273e 100644
--- a/src/mame/video/plygonet.c
+++ b/src/mame/video/plygonet.c
@@ -99,7 +99,7 @@ void polygonet_state::video_start()
assert(m_ttl_gfx_index != MAX_GFX_ELEMENTS);
/* decode the ttl layer's gfx */
- m_gfxdecode->set_gfx(m_ttl_gfx_index, auto_alloc(machine(), gfx_element(machine(), charlayout, memregion("gfx1")->base(), machine().total_colors() / 16, 0)));
+ m_gfxdecode->set_gfx(m_ttl_gfx_index, auto_alloc(machine(), gfx_element(machine(), charlayout, memregion("gfx1")->base(), m_palette->entries() / 16, 0)));
/* create the tilemap */
m_ttl_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(polygonet_state::ttl_get_tile_info),this), tilemap_mapper_delegate(FUNC(polygonet_state::plygonet_scan),this), 8, 8, 64, 32);
@@ -119,7 +119,7 @@ void polygonet_state::video_start()
UINT32 polygonet_state::screen_update_polygonet(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
screen.priority().fill(0);
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
m_k053936->zoom_draw(screen, bitmap, cliprect, m_roz_tilemap, 0, 0, 0);
diff --git a/src/mame/video/pokechmp.c b/src/mame/video/pokechmp.c
index 7007f477b9f..e9f5626e514 100644
--- a/src/mame/video/pokechmp.c
+++ b/src/mame/video/pokechmp.c
@@ -62,7 +62,7 @@ void pokechmp_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
if (spriteram[offs+1] & 0x01) tileno += 0x100;
if (spriteram[offs+1] & 0x08) tileno += 0x200;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
tileno,
(spriteram[offs+1] & 0xf0) >> 4,
flipx,flipy,
diff --git a/src/mame/video/polepos.c b/src/mame/video/polepos.c
index 28e7b795a23..08d4c87653b 100644
--- a/src/mame/video/polepos.c
+++ b/src/mame/video/polepos.c
@@ -30,9 +30,6 @@ PALETTE_INIT_MEMBER(polepos_state,polepos)
const UINT8 *color_prom = memregion("proms")->base();
int i, j;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 128);
-
/*******************************************************
* Color PROMs
* Sheet 15B: middle, 136014-137,138,139
@@ -77,7 +74,7 @@ PALETTE_INIT_MEMBER(polepos_state,polepos)
bit3 = (color_prom[0x200 + i] >> 3) & 1;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- colortable_palette_set_color(machine().colortable,i,rgb_t(r,g,b));
+ palette.set_indirect_color(i,rgb_t(r,g,b));
}
/*******************************************************
@@ -88,8 +85,8 @@ PALETTE_INIT_MEMBER(polepos_state,polepos)
for (i = 0; i < 64*4; i++)
{
int color = color_prom[0x300 + i];
- colortable_entry_set_value(machine().colortable, 0x0000 + i, (color != 15) ? (0x020 + color) : 0x2f);
- colortable_entry_set_value(machine().colortable, 0x0100 + i, (color != 15) ? (0x060 + color) : 0x2f);
+ palette.set_pen_indirect(0x0000 + i, (color != 15) ? (0x020 + color) : 0x2f);
+ palette.set_pen_indirect(0x0100 + i, (color != 15) ? (0x060 + color) : 0x2f);
}
/*******************************************************
@@ -101,7 +98,7 @@ PALETTE_INIT_MEMBER(polepos_state,polepos)
for (i = 0; i < 64*4; i++)
{
int color = color_prom[0x400 + i];
- colortable_entry_set_value(machine().colortable, 0x0200 + i, 0x000 + color);
+ palette.set_pen_indirect(0x0200 + i, 0x000 + color);
}
/*******************************************************
@@ -112,8 +109,8 @@ PALETTE_INIT_MEMBER(polepos_state,polepos)
for (i = 0; i < 64*16; i++)
{
int color = color_prom[0xc00 + i];
- colortable_entry_set_value(machine().colortable, 0x0300 + i, (color != 15) ? (0x010 + color) : 0x1f);
- colortable_entry_set_value(machine().colortable, 0x0700 + i, (color != 15) ? (0x050 + color) : 0x1f);
+ palette.set_pen_indirect(0x0300 + i, (color != 15) ? (0x010 + color) : 0x1f);
+ palette.set_pen_indirect(0x0700 + i, (color != 15) ? (0x050 + color) : 0x1f);
}
/*******************************************************
@@ -125,7 +122,7 @@ PALETTE_INIT_MEMBER(polepos_state,polepos)
for (i = 0; i < 64*16; i++)
{
int color = color_prom[0x800 + i];
- colortable_entry_set_value(machine().colortable, 0x0b00 + i, 0x040 + color);
+ palette.set_pen_indirect(0x0b00 + i, 0x040 + color);
}
/* 136014-142, 136014-143, 136014-144 Vertical position modifiers */
@@ -195,7 +192,7 @@ VIDEO_START_MEMBER(polepos_state,polepos)
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(polepos_state::bg_get_tile_info),this),TILEMAP_SCAN_COLS,8,8,64,16);
m_tx_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(polepos_state::tx_get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32);
- colortable_configure_tilemap_groups(machine().colortable, m_tx_tilemap, m_gfxdecode->gfx(0), 0x2f);
+ m_palette->configure_tilemap_groups(*m_tx_tilemap, *m_gfxdecode->gfx(0), 0x2f);
}
@@ -422,7 +419,7 @@ void polepos_state::zoom_sprite(bitmap_ind16 &bitmap,int big,
gfx_element *gfx = m_gfxdecode->gfx(big ? 3 : 2);
const UINT8 *gfxdata = gfx->get_data(code % gfx->elements());
UINT8 *scaling_rom = memregion("gfx6")->base();
- UINT32 transmask = colortable_get_transpen_mask(machine().colortable, gfx, color, 0x1f);
+ UINT32 transmask = m_palette->transpen_mask(*gfx, color, 0x1f);
int coloroffs = gfx->colorbase() + color * gfx->granularity();
int x,y;
diff --git a/src/mame/video/policetr.c b/src/mame/video/policetr.c
index a1c71225af8..fa69085656b 100644
--- a/src/mame/video/policetr.c
+++ b/src/mame/video/policetr.c
@@ -330,7 +330,7 @@ WRITE32_MEMBER(policetr_state::policetr_palette_data_w)
m_palette_data[m_palette_index] = (data >> 16) & 0xff;
if (++m_palette_index == 3)
{
- palette_set_color(machine(), m_palette_offset, rgb_t(m_palette_data[0], m_palette_data[1], m_palette_data[2]));
+ m_palette->set_pen_color(m_palette_offset, rgb_t(m_palette_data[0], m_palette_data[1], m_palette_data[2]));
m_palette_index = 0;
}
}
diff --git a/src/mame/video/polyplay.c b/src/mame/video/polyplay.c
index c9677910f14..729c568cac1 100644
--- a/src/mame/video/polyplay.c
+++ b/src/mame/video/polyplay.c
@@ -13,19 +13,19 @@
#include "includes/polyplay.h"
-void polyplay_state::palette_init()
+PALETTE_INIT_MEMBER(polyplay_state, polyplay)
{
- palette_set_color(machine(),0,rgb_t(0x00,0x00,0x00));
- palette_set_color(machine(),1,rgb_t(0xff,0xff,0xff));
-
- palette_set_color(machine(),2,rgb_t(0x00,0x00,0x00));
- palette_set_color(machine(),3,rgb_t(0xff,0x00,0x00));
- palette_set_color(machine(),4,rgb_t(0x00,0xff,0x00));
- palette_set_color(machine(),5,rgb_t(0xff,0xff,0x00));
- palette_set_color(machine(),6,rgb_t(0x00,0x00,0xff));
- palette_set_color(machine(),7,rgb_t(0xff,0x00,0xff));
- palette_set_color(machine(),8,rgb_t(0x00,0xff,0xff));
- palette_set_color(machine(),9,rgb_t(0xff,0xff,0xff));
+ palette.set_pen_color(0,rgb_t(0x00,0x00,0x00));
+ palette.set_pen_color(1,rgb_t(0xff,0xff,0xff));
+
+ palette.set_pen_color(2,rgb_t(0x00,0x00,0x00));
+ palette.set_pen_color(3,rgb_t(0xff,0x00,0x00));
+ palette.set_pen_color(4,rgb_t(0x00,0xff,0x00));
+ palette.set_pen_color(5,rgb_t(0xff,0xff,0x00));
+ palette.set_pen_color(6,rgb_t(0x00,0x00,0xff));
+ palette.set_pen_color(7,rgb_t(0xff,0x00,0xff));
+ palette.set_pen_color(8,rgb_t(0x00,0xff,0xff));
+ palette.set_pen_color(9,rgb_t(0xff,0xff,0xff));
}
@@ -57,7 +57,7 @@ UINT32 polyplay_state::screen_update_polyplay(screen_device &screen, bitmap_ind1
int sy = offs >> 6 << 3;
UINT8 code = videoram[offs];
- m_gfxdecode->gfx((code >> 7) & 0x01)->opaque(bitmap,cliprect,
+ m_gfxdecode->gfx((code >> 7) & 0x01)->opaque(m_palette,bitmap,cliprect,
code, 0, 0, 0, sx, sy);
}
diff --git a/src/mame/video/poolshrk.c b/src/mame/video/poolshrk.c
index 4689c07d7ff..8a09f68daa9 100644
--- a/src/mame/video/poolshrk.c
+++ b/src/mame/video/poolshrk.c
@@ -40,7 +40,7 @@ UINT32 poolshrk_state::screen_update_poolshrk(screen_device &screen, bitmap_ind1
int hpos = m_hpos_ram[i];
int vpos = m_vpos_ram[i];
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, i, (i == 0) ? 0 : 1, 0, 0,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect, i, (i == 0) ? 0 : 1, 0, 0,
248 - hpos, vpos - 15, 0);
}
diff --git a/src/mame/video/pooyan.c b/src/mame/video/pooyan.c
index 6ddf337da93..b3ab73dfcbb 100644
--- a/src/mame/video/pooyan.c
+++ b/src/mame/video/pooyan.c
@@ -27,7 +27,7 @@
***************************************************************************/
-void pooyan_state::palette_init()
+PALETTE_INIT_MEMBER(pooyan_state, pooyan)
{
const UINT8 *color_prom = memregion("proms")->base();
static const int resistances_rg[3] = { 1000, 470, 220 };
@@ -41,9 +41,6 @@ void pooyan_state::palette_init()
3, resistances_rg, gweights, 1000, 0,
2, resistances_b, bweights, 1000, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x20);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -67,7 +64,7 @@ void pooyan_state::palette_init()
bit1 = (color_prom[i] >> 7) & 0x01;
b = combine_2_weights(bweights, bit0, bit1);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -77,14 +74,14 @@ void pooyan_state::palette_init()
for (i = 0; i < 0x100; i++)
{
UINT8 ctabentry = (color_prom[i] & 0x0f) | 0x10;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* sprites */
for (i = 0x100; i < 0x200; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -171,12 +168,12 @@ void pooyan_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
int flipy = spriteram_2[offs] & 0x80;
- m_gfxdecode->gfx(1)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,cliprect,
code,
color,
flipx, flipy,
sx, sy,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, 0));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 0));
}
}
diff --git a/src/mame/video/popeye.c b/src/mame/video/popeye.c
index 86bc0073eca..885489106c2 100644
--- a/src/mame/video/popeye.c
+++ b/src/mame/video/popeye.c
@@ -79,7 +79,7 @@ void popeye_state::convert_color_prom(const UINT8 *color_prom)
bit2 = ((color_prom[prom_offs] ^ m_invertmask) >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(),16 + (2 * i) + 1,rgb_t(r,g,b));
+ m_palette->set_pen_color(16 + (2 * i) + 1,rgb_t(r,g,b));
}
color_prom += 32;
@@ -106,13 +106,13 @@ void popeye_state::convert_color_prom(const UINT8 *color_prom)
bit2 = ((color_prom[256] ^ m_invertmask) >> 3) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(),48+i,rgb_t(r,g,b));
+ m_palette->set_pen_color(48+i,rgb_t(r,g,b));
color_prom++;
}
}
-void popeye_state::palette_init()
+PALETTE_INIT_MEMBER(popeye_state, popeye)
{
const UINT8 *color_prom = memregion("proms")->base();
m_invertmask = 0xff;
@@ -160,7 +160,7 @@ void popeye_state::set_background_palette(int bank)
}
b = 0x1c * bit0 + 0x31 * bit1 + 0x47 * bit2;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ m_palette->set_pen_color(i,rgb_t(r,g,b));
color_prom++;
}
@@ -357,7 +357,7 @@ void popeye_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
sy = 496 - sy;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code ^ 0x1ff,
color,
flipx,flipy,
diff --git a/src/mame/video/popper.c b/src/mame/video/popper.c
index 4b2381b2066..454eb5d0eef 100644
--- a/src/mame/video/popper.c
+++ b/src/mame/video/popper.c
@@ -38,14 +38,14 @@ static const res_net_info popper_net_info =
}
};
-void popper_state::palette_init()
+PALETTE_INIT_MEMBER(popper_state, popper)
{
const UINT8 *color_prom = memregion("proms")->base();
rgb_t *rgb;
rgb = compute_res_net_all(machine(), color_prom, &popper_decode_info, &popper_net_info);
- palette_set_colors(machine(), 0, rgb, 64);
- machine().palette->normalize_range(0, 63);
+ palette.set_pen_colors(0, rgb, 64);
+ palette.palette()->normalize_range(0, 63);
auto_free(machine(), rgb);
}
@@ -213,7 +213,7 @@ void popper_state::draw_sprites( bitmap_ind16 &bitmap,const rectangle &cliprect
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
m_spriteram[offs + 1],
(m_spriteram[offs + 2] & 0x0f),
flipx,flipy,
diff --git a/src/mame/video/portrait.c b/src/mame/video/portrait.c
index 6b6d7a97852..f9856a0eefe 100644
--- a/src/mame/video/portrait.c
+++ b/src/mame/video/portrait.c
@@ -72,15 +72,12 @@ void portrait_state::video_start()
-void portrait_state::palette_init()
+PALETTE_INIT_MEMBER(portrait_state, portrait)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
UINT8* lookup = memregion("tileattr")->base();
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x40);
-
/*
for (i = 0;i < 0x40;i++)
{
@@ -92,7 +89,7 @@ void portrait_state::palette_init()
g = (data >> 3) & 0x3;
b = (data >> 5) & 0x7;
- colortable_palette_set_color(machine().colortable, i, rgb_t(pal3bit(r), pal2bit(g), pal3bit(b)));
+ palette.set_indirect_color(i, rgb_t(pal3bit(r), pal2bit(g), pal3bit(b)));
color_prom++;
}
@@ -107,10 +104,10 @@ void portrait_state::palette_init()
g = (data >> 5) & 0x1f;
b = (data >> 10) & 0x1f;
- colortable_palette_set_color(machine().colortable, i, rgb_t(pal5bit(r), pal5bit(g), pal5bit(b)));
+ palette.set_indirect_color(i, rgb_t(pal5bit(r), pal5bit(g), pal5bit(b)));
// ?? the lookup seems to reference 0x3f colours, unless 1 bit is priority or similar?
- colortable_palette_set_color(machine().colortable, i+0x20, rgb_t(pal5bit(r>>1), pal5bit(g>>1), pal5bit(b>>1)));
+ palette.set_indirect_color(i+0x20, rgb_t(pal5bit(r>>1), pal5bit(g>>1), pal5bit(b>>1)));
color_prom++;
}
@@ -120,7 +117,7 @@ void portrait_state::palette_init()
for (i = 0;i < 0x800;i++)
{
UINT8 ctabentry = lookup[i]&0x3f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -174,7 +171,7 @@ void portrait_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
}
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
tilenum,color,
0,fy,
sx,sy,7);
diff --git a/src/mame/video/powerins.c b/src/mame/video/powerins.c
index 12494621079..54bbb5d0399 100644
--- a/src/mame/video/powerins.c
+++ b/src/mame/video/powerins.c
@@ -86,7 +86,7 @@ WRITE16_MEMBER(powerins_state::powerins_paletteram16_w)
int g = ((newword >> 7) & 0x1E ) | ((newword >> 2) & 0x01);
int b = ((newword >> 3) & 0x1E ) | ((newword >> 1) & 0x01);
- palette_set_color_rgb( machine(),offset, pal5bit(r),pal5bit(g),pal5bit(b) );
+ m_palette->set_pen_color( offset, pal5bit(r),pal5bit(g),pal5bit(b) );
}
@@ -297,7 +297,7 @@ void powerins_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect
{
for (y = 0 ; y < dimy ; y++)
{
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx, flipy,
diff --git a/src/mame/video/powervr2.c b/src/mame/video/powervr2.c
index bbf063d8d4e..689c04acbbf 100644
--- a/src/mame/video/powervr2.c
+++ b/src/mame/video/powervr2.c
@@ -3282,7 +3282,7 @@ void powervr2_device::debug_paletteram()
g = (pal & 0x03e0)>>5;
b = (pal & 0x001f)>>0;
//a = a ? 0xff : 0x00;
- palette_set_color_rgb(machine(), i, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(i, pal5bit(r), pal5bit(g), pal5bit(b));
}
break;
case 1: //rgb565
@@ -3291,7 +3291,7 @@ void powervr2_device::debug_paletteram()
r = (pal & 0xf800)>>11;
g = (pal & 0x07e0)>>5;
b = (pal & 0x001f)>>0;
- palette_set_color_rgb(machine(), i, pal5bit(r), pal6bit(g), pal5bit(b));
+ m_palette->set_pen_color(i, pal5bit(r), pal6bit(g), pal5bit(b));
}
break;
case 2: //argb4444
@@ -3300,7 +3300,7 @@ void powervr2_device::debug_paletteram()
r = (pal & 0x0f00)>>8;
g = (pal & 0x00f0)>>4;
b = (pal & 0x000f)>>0;
- palette_set_color_rgb(machine(), i, pal4bit(r), pal4bit(g), pal4bit(b));
+ m_palette->set_pen_color(i, pal4bit(r), pal4bit(g), pal4bit(b));
}
break;
case 3: //argb8888
@@ -3309,7 +3309,7 @@ void powervr2_device::debug_paletteram()
r = (pal & 0x00ff0000)>>16;
g = (pal & 0x0000ff00)>>8;
b = (pal & 0x000000ff)>>0;
- palette_set_color_rgb(machine(), i, r, g, b);
+ m_palette->set_pen_color(i, r, g, b);
}
break;
}
diff --git a/src/mame/video/ppu2c0x.c b/src/mame/video/ppu2c0x.c
index becabd43380..f41e66278f1 100644
--- a/src/mame/video/ppu2c0x.c
+++ b/src/mame/video/ppu2c0x.c
@@ -302,7 +302,7 @@ inline void ppu2c0x_device::writebyte(offs_t address, UINT8 data)
*
*************************************/
-void ppu2c0x_device::init_palette( running_machine &machine, int first_entry )
+void ppu2c0x_device::init_palette( palette_device &palette, int first_entry )
{
/* This routine builds a palette using a transformation from */
/* the YUV (Y, B-Y, R-Y) to the RGB color space */
@@ -408,7 +408,7 @@ void ppu2c0x_device::init_palette( running_machine &machine, int first_entry )
B = 255;
/* Round, and set the value */
- palette_set_color_rgb(machine, first_entry++, floor(R + .5), floor(G + .5), floor(B + .5));
+ palette.set_pen_color(first_entry++, floor(R + .5), floor(G + .5), floor(B + .5));
}
}
}
@@ -416,13 +416,13 @@ void ppu2c0x_device::init_palette( running_machine &machine, int first_entry )
/* color tables are modified at run-time, and are initialized on 'ppu2c0x_reset' */
}
-void ppu2c0x_device::init_palette_rgb( running_machine &machine, int first_entry )
+void ppu2c0x_device::init_palette_rgb( palette_device &palette, int first_entry )
{
int color_emphasis, color_num;
int R, G, B;
- UINT8 *palette_data = machine.root_device().memregion("palette")->base();
+ UINT8 *palette_data = machine().root_device().memregion("palette")->base();
/* Loop through the emphasis modes (8 total) */
for (color_emphasis = 0; color_emphasis < 8; color_emphasis++)
@@ -433,7 +433,7 @@ void ppu2c0x_device::init_palette_rgb( running_machine &machine, int first_entry
G = ((color_emphasis & 2) ? 7 : palette_data[color_num * 3 + 1]);
B = ((color_emphasis & 4) ? 7 : palette_data[color_num * 3 + 2]);
- palette_set_color_rgb(machine, first_entry++, pal3bit(R), pal3bit(G), pal3bit(B));
+ palette.set_pen_color(first_entry++, pal3bit(R), pal3bit(G), pal3bit(B));
}
}
diff --git a/src/mame/video/ppu2c0x.h b/src/mame/video/ppu2c0x.h
index 58f9def8f8b..dafa18f9422 100644
--- a/src/mame/video/ppu2c0x.h
+++ b/src/mame/video/ppu2c0x.h
@@ -156,8 +156,8 @@ public:
/* routines */
- void init_palette( running_machine &machine, int first_entry );
- void init_palette_rgb( running_machine &machine, int first_entry );
+ void init_palette( palette_device &palette, int first_entry );
+ void init_palette_rgb( palette_device &palette, int first_entry );
void draw_background( UINT8 *line_priority );
void draw_sprites( UINT8 *line_priority );
@@ -223,7 +223,7 @@ public:
emu_timer *m_scanline_timer; /* scanline timer */
const char *m_cpu_tag;
-
+
private:
static const device_timer_id TIMER_HBLANK = 0;
static const device_timer_id TIMER_NMI = 1;
@@ -231,6 +231,7 @@ private:
inline UINT8 readbyte(offs_t address);
inline void writebyte(offs_t address, UINT8 data);
+
};
class ppu2c02_device : public ppu2c0x_device {
diff --git a/src/mame/video/prehisle.c b/src/mame/video/prehisle.c
index 97008477724..feb38d0153e 100644
--- a/src/mame/video/prehisle.c
+++ b/src/mame/video/prehisle.c
@@ -147,7 +147,7 @@ void prehisle_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
if ((foreground && priority) || (!foreground && !priority))
{
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect, code, color, flipx, flipy, sx, sy, 15);
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy, sx, sy, 15);
}
}
}
diff --git a/src/mame/video/psikyo.c b/src/mame/video/psikyo.c
index b6bc5714551..8c5f336f040 100644
--- a/src/mame/video/psikyo.c
+++ b/src/mame/video/psikyo.c
@@ -343,7 +343,7 @@ void psikyo_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, co
int addr = (code * 2) & (TILES_LEN - 1);
if (zoomx == 32 && zoomy == 32)
- m_gfxdecode->gfx(0)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->prio_transpen(m_palette,bitmap,cliprect,
TILES[addr+1] * 256 + TILES[addr],
attr >> 8,
flipx, flipy,
@@ -351,7 +351,7 @@ void psikyo_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, co
screen.priority(),
pri[(attr & 0xc0) >> 6],trans_pen);
else
- m_gfxdecode->gfx(0)->prio_zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->prio_zoom_transpen(m_palette,bitmap,cliprect,
TILES[addr+1] * 256 + TILES[addr],
attr >> 8,
flipx, flipy,
@@ -462,7 +462,7 @@ void psikyo_state::draw_sprites_bootleg( screen_device &screen, bitmap_ind16 &bi
int addr = (code * 2) & (TILES_LEN-1);
if (zoomx == 32 && zoomy == 32)
- m_gfxdecode->gfx(0)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->prio_transpen(m_palette,bitmap,cliprect,
TILES[addr+1] * 256 + TILES[addr],
attr >> 8,
flipx, flipy,
@@ -470,7 +470,7 @@ void psikyo_state::draw_sprites_bootleg( screen_device &screen, bitmap_ind16 &bi
screen.priority(),
pri[(attr & 0xc0) >> 6],trans_pen);
else
- m_gfxdecode->gfx(0)->prio_zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->prio_zoom_transpen(m_palette,bitmap,cliprect,
TILES[addr+1] * 256 + TILES[addr],
attr >> 8,
flipx, flipy,
@@ -655,7 +655,7 @@ UINT32 psikyo_state::screen_update_psikyo(screen_device &screen, bitmap_ind16 &b
m_tilemap_1_size2->set_transparent_pen((layer1_ctrl & 8 ? 0 : 15));
m_tilemap_1_size3->set_transparent_pen((layer1_ctrl & 8 ? 0 : 15));
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
screen.priority().fill(0, cliprect);
@@ -828,7 +828,7 @@ UINT32 psikyo_state::screen_update_psikyo_bootleg(screen_device &screen, bitmap_
m_tilemap_1_size2->set_transparent_pen((layer1_ctrl & 8 ? 0 : 15));
m_tilemap_1_size3->set_transparent_pen((layer1_ctrl & 8 ? 0 : 15));
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
screen.priority().fill(0, cliprect);
diff --git a/src/mame/video/psikyo4.c b/src/mame/video/psikyo4.c
index 962fe0b2ac8..b4e13c32928 100644
--- a/src/mame/video/psikyo4.c
+++ b/src/mame/video/psikyo4.c
@@ -114,7 +114,7 @@ void psikyo4_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
{
for (i = xstart; i != xend; i += xinc)
{
- gfx->transpen(bitmap,cliprect, tnum + loopnum, colr, flipx, flipy, xpos + 16 * i, ypos + 16 * j, 0);
+ gfx->transpen(m_palette,bitmap,cliprect, tnum + loopnum, colr, flipx, flipy, xpos + 16 * i, ypos + 16 * j, 0);
loopnum++;
}
}
diff --git a/src/mame/video/psikyosh.c b/src/mame/video/psikyosh.c
index b31a130bfac..ebd9c2f1ae5 100644
--- a/src/mame/video/psikyosh.c
+++ b/src/mame/video/psikyosh.c
@@ -184,14 +184,14 @@ void psikyosh_state::draw_bglayer( int layer, bitmap_rgb32 &bitmap, const rectan
tileno = (m_bgram[(tilebank * 0x800) / 4 + offs - 0x4000 / 4] & 0x0007ffff); /* seems to take into account spriteram, hence -0x4000 */
colour = (m_bgram[(tilebank * 0x800) / 4 + offs - 0x4000 / 4] & 0xff000000) >> 24;
- gfx->alphatable(bitmap, cliprect, tileno, colour, 0, 0, (16 * sx + scrollx) & 0x1ff, ((16 * sy + scrolly) & (width - 1)), alpha, m_alphatable); /* normal */
+ gfx->alphatable(m_palette, bitmap, cliprect, tileno, colour, 0, 0, (16 * sx + scrollx) & 0x1ff, ((16 * sy + scrolly) & (width - 1)), alpha, m_alphatable); /* normal */
if (scrollx)
- gfx->alphatable(bitmap, cliprect, tileno, colour, 0, 0, ((16 * sx + scrollx) & 0x1ff) - 0x200, ((16 * sy + scrolly) & (width - 1)), alpha, m_alphatable); /* wrap x */
+ gfx->alphatable(m_palette, bitmap, cliprect, tileno, colour, 0, 0, ((16 * sx + scrollx) & 0x1ff) - 0x200, ((16 * sy + scrolly) & (width - 1)), alpha, m_alphatable); /* wrap x */
if (scrolly)
- gfx->alphatable(bitmap, cliprect, tileno, colour, 0, 0, (16 * sx + scrollx) & 0x1ff, ((16 * sy + scrolly) & (width - 1)) - width, alpha, m_alphatable); /* wrap y */
+ gfx->alphatable(m_palette, bitmap, cliprect, tileno, colour, 0, 0, (16 * sx + scrollx) & 0x1ff, ((16 * sy + scrolly) & (width - 1)) - width, alpha, m_alphatable); /* wrap y */
if (scrollx && scrolly)
- gfx->alphatable(bitmap, cliprect, tileno, colour, 0, 0, ((16 * sx + scrollx) & 0x1ff) - 0x200, ((16 * sy + scrolly) & (width - 1)) - width, alpha, m_alphatable); /* wrap xy */
+ gfx->alphatable(m_palette, bitmap, cliprect, tileno, colour, 0, 0, ((16 * sx + scrollx) & 0x1ff) - 0x200, ((16 * sy + scrolly) & (width - 1)) - width, alpha, m_alphatable); /* wrap xy */
offs++;
}
@@ -232,7 +232,7 @@ void psikyosh_state::cache_bitmap(int scanline, gfx_element *gfx, int size, int
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?
- gfx->alphastore(m_bg_bitmap, m_bg_bitmap.cliprect(), tileno, colour, 0, 0, (16 * sx) & 0x1ff, ((16 * sy) & (width - 1)), need_alpha, m_alphatable);
+ gfx->alphastore(m_palette, m_bg_bitmap, m_bg_bitmap.cliprect(), tileno, colour, 0, 0, (16 * sx) & 0x1ff, ((16 * sy) & (width - 1)), need_alpha, m_alphatable);
}
offs++;
@@ -424,7 +424,7 @@ void psikyosh_state:: psikyosh_drawgfxzoom( bitmap_rgb32 &dest_bmp,const rectang
{
for (xtile = xstart; xtile != xend; xtile += xinc)
{
- const pen_t *pal = &gfx->machine().pens[gfx->colorbase() + gfx->granularity() * (color % gfx->colors())];
+ const pen_t *pal = &m_palette->pen(gfx->colorbase() + gfx->granularity() * (color % gfx->colors()));
const UINT8 *code_base = gfx->get_data((code + code_offset++) % gfx->elements());
int x_index_base, y_index, sx, sy, ex, ey;
@@ -687,7 +687,7 @@ void psikyosh_state:: psikyosh_drawgfxzoom( bitmap_rgb32 &dest_bmp,const rectang
/* Start drawing */
if (gfx)
{
- const pen_t *pal = &gfx->machine().pens[gfx->colorbase() + gfx->granularity() * (color % gfx->colors())];
+ const pen_t *pal = &m_palette->pen(gfx->colorbase() + gfx->granularity() * (color % gfx->colors()));
int sprite_screen_height = ((high * gfx->height() * (0x400 * 0x400)) / zoomy + 0x200) >> 10; /* Round up to nearest pixel */
int sprite_screen_width = ((wide * gfx->width() * (0x400 * 0x400)) / zoomx + 0x200) >> 10;
diff --git a/src/mame/video/psychic5.c b/src/mame/video/psychic5.c
index 83be4f78a18..fcc77c687e2 100644
--- a/src/mame/video/psychic5.c
+++ b/src/mame/video/psychic5.c
@@ -28,7 +28,7 @@ void psychic5_state::psychic5_change_palette(int color, int offset)
UINT8 lo = m_ps5_palette_ram[offset & ~1];
UINT8 hi = m_ps5_palette_ram[offset | 1];
jal_blend_set(color, hi & 0x0f);
- palette_set_color_rgb(machine(), color, pal4bit(lo >> 4), pal4bit(lo), pal4bit(hi >> 4));
+ m_palette->set_pen_color(color, pal4bit(lo >> 4), pal4bit(lo), pal4bit(hi >> 4));
}
void psychic5_state::psychic5_change_bg_palette(int color, int lo_offs, int hi_offs)
@@ -57,7 +57,7 @@ void psychic5_state::psychic5_change_bg_palette(int color, int lo_offs, int hi_o
{
UINT8 val = (r + g + b) / 3; /* Grey */
/* Just leave plain grey */
- palette_set_color(machine(),color,jal_blend_func(rgb_t(val,val,val),irgb,ix));
+ m_palette->set_pen_color(color,jal_blend_func(rgb_t(val,val,val),irgb,ix));
}
else
{
@@ -65,7 +65,7 @@ void psychic5_state::psychic5_change_bg_palette(int color, int lo_offs, int hi_o
if (!(m_title_screen & 1))
{
/* Leave the world as-is */
- palette_set_color(machine(),color,jal_blend_func(rgb_t(r,g,b),irgb,ix));
+ m_palette->set_pen_color(color,jal_blend_func(rgb_t(r,g,b),irgb,ix));
}
}
}
@@ -293,7 +293,7 @@ VIDEO_RESET_MEMBER(psychic5_state,bombsa)
Screen refresh
***************************************************************************/
-#define DRAW_SPRITE(code, sx, sy) jal_blend_drawgfx(bitmap, cliprect, m_gfxdecode->gfx(0), code, color, flipx, flipy, sx, sy, 15);
+#define DRAW_SPRITE(code, sx, sy) jal_blend_drawgfx(m_palette, bitmap, cliprect, m_gfxdecode->gfx(0), code, color, flipx, flipy, sx, sy, 15);
void psychic5_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
@@ -406,7 +406,7 @@ void psychic5_state::draw_background(screen_device &screen, bitmap_rgb32 &bitmap
UINT32 psychic5_state::screen_update_psychic5(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
if (m_bg_status & 1) /* Backgound enable */
draw_background(screen, bitmap, cliprect);
if (!(m_title_screen & 1))
@@ -420,7 +420,7 @@ UINT32 psychic5_state::screen_update_bombsa(screen_device &screen, bitmap_rgb32
if (m_bg_status & 1) /* Backgound enable */
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
else
- bitmap.fill(machine().pens[0x0ff], cliprect);
+ bitmap.fill(m_palette->pen(0x0ff), cliprect);
draw_sprites(bitmap, cliprect);
m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
return 0;
diff --git a/src/mame/video/punchout.c b/src/mame/video/punchout.c
index 750ffa13816..92dd6182339 100644
--- a/src/mame/video/punchout.c
+++ b/src/mame/video/punchout.c
@@ -322,7 +322,7 @@ void punchout_state::punchout_copy_top_palette(int bank)
g = 255 - pal4bit(color_prom[i + 0x200 + base]);
b = 255 - pal4bit(color_prom[i + 0x400 + base]);
- palette_set_color(machine(), i ^ m_palette_reverse_top, rgb_t(r, g, b));
+ m_palette->set_pen_color(i ^ m_palette_reverse_top, rgb_t(r, g, b));
}
}
@@ -341,7 +341,7 @@ void punchout_state::punchout_copy_bot_palette(int bank)
g = 255 - pal4bit(color_prom[i + 0x200 + base]);
b = 255 - pal4bit(color_prom[i + 0x400 + base]);
- palette_set_color(machine(), (i ^ m_palette_reverse_bot) + 0x100, rgb_t(r, g, b));
+ m_palette->set_pen_color((i ^ m_palette_reverse_bot) + 0x100, rgb_t(r, g, b));
}
}
diff --git a/src/mame/video/pushman.c b/src/mame/video/pushman.c
index 92ac280e64f..893a7a86b7b 100644
--- a/src/mame/video/pushman.c
+++ b/src/mame/video/pushman.c
@@ -108,7 +108,7 @@ void pushman_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, sprite,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, sprite,
color, flipx, flipy, x, y, 15);
}
}
diff --git a/src/mame/video/qdrmfgp.c b/src/mame/video/qdrmfgp.c
index 226c6675bfc..132f7db207e 100644
--- a/src/mame/video/qdrmfgp.c
+++ b/src/mame/video/qdrmfgp.c
@@ -54,7 +54,7 @@ VIDEO_START_MEMBER(qdrmfgp_state,qdrmfgp2)
UINT32 qdrmfgp_state::screen_update_qdrmfgp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
m_k056832->tilemap_draw(screen, bitmap, cliprect, 3, 0, 1);
m_k056832->tilemap_draw(screen, bitmap, cliprect, 2, 0, 2);
diff --git a/src/mame/video/quasar.c b/src/mame/video/quasar.c
index bc64fa61133..3f9f0dd1d26 100644
--- a/src/mame/video/quasar.c
+++ b/src/mame/video/quasar.c
@@ -23,14 +23,11 @@ PALETTE_INIT_MEMBER(quasar_state,quasar)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x500);
-
/* standard 1 bit per color palette (background and sprites) */
for (i = 0; i < 8; i++)
{
rgb_t color = rgb_t(pal1bit(i >> 0), pal1bit(i >> 1), pal1bit(i >> 2));
- colortable_palette_set_color(machine().colortable, i, color);
+ palette.set_indirect_color(i, color);
}
/* effects color map */
@@ -58,35 +55,35 @@ PALETTE_INIT_MEMBER(quasar_state,quasar)
b = 0x4f * bit0 + 0xa8 * bit1;
/* intensity 0 */
- colortable_palette_set_color(machine().colortable, 0x100 + i, rgb_t::black);
+ palette.set_indirect_color(0x100 + i, rgb_t::black);
/* intensity 1 */
color = rgb_t(r >> 2, g >> 2, b >> 2);
- colortable_palette_set_color(machine().colortable, 0x200 + i, color);
+ palette.set_indirect_color(0x200 + i, color);
/* intensity 2 */
color = rgb_t((r >> 2) + (r >> 3), (g >> 2) + (g >> 3), (b >> 2) + (b >> 2));
- colortable_palette_set_color(machine().colortable, 0x300 + i, color);
+ palette.set_indirect_color(0x300 + i, color);
/* intensity 3 */
color = rgb_t(r >> 1, g >> 1, b >> 1);
- colortable_palette_set_color(machine().colortable, 0x400 + i, color);
+ palette.set_indirect_color(0x400 + i, color);
}
// Address 0-2 from graphic rom
// 3-5 from color ram
// 6-8 from sprite chips (Used for priority)
for (i = 0; i < 0x200; i++)
- colortable_entry_set_value(machine().colortable, i, color_prom[i] & 0x07);
+ palette.set_pen_indirect(i, color_prom[i] & 0x07);
/* background for collision */
for (i = 1; i < 8; i++)
- colortable_entry_set_value(machine().colortable, 0x200 + i, 7);
- colortable_entry_set_value(machine().colortable, 0x200, 0);
+ palette.set_pen_indirect(0x200 + i, 7);
+ palette.set_pen_indirect(0x200, 0);
/* effects */
for (i = 0; i < 0x400; i++)
- colortable_entry_set_value(machine().colortable, 0x208 + i, 0x100 + i);
+ palette.set_pen_indirect(0x208 + i, 0x100 + i);
}
@@ -124,7 +121,7 @@ UINT32 quasar_state::screen_update_quasar(screen_device &screen, bitmap_ind16 &b
bitmap.pix16(y + oy, x + ox) = forecolor;
/* Main Screen */
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
m_color_ram[offs] & 0x3f,
0,0,
@@ -134,7 +131,7 @@ UINT32 quasar_state::screen_update_quasar(screen_device &screen, bitmap_ind16 &b
/* background for Collision Detection (it can only hit certain items) */
if((m_color_ram[offs] & 7) == 0)
{
- m_gfxdecode->gfx(0)->opaque(m_collision_background,cliprect,
+ m_gfxdecode->gfx(0)->opaque(m_palette,m_collision_background,cliprect,
code,
64,
0,0,
@@ -188,7 +185,7 @@ UINT32 quasar_state::screen_update_quasar(screen_device &screen, bitmap_ind16 &b
bitmap.pix16(y, x) = S2636_PIXEL_COLOR(pixel);
/* S2636 vs. background collision detection */
- if (colortable_entry_get_value(machine().colortable, m_collision_background.pix16(y, x)))
+ if (m_palette->pen_indirect(m_collision_background.pix16(y, x)))
{
if (S2636_IS_PIXEL_DRAWN(pixel0)) m_collision_register |= 0x01;
if (S2636_IS_PIXEL_DRAWN(pixel2)) m_collision_register |= 0x02;
diff --git a/src/mame/video/quizdna.c b/src/mame/video/quizdna.c
index 7b370a09273..9fec119f474 100644
--- a/src/mame/video/quizdna.c
+++ b/src/mame/video/quizdna.c
@@ -127,7 +127,7 @@ WRITE8_MEMBER(quizdna_state::paletteram_xBGR_RRRR_GGGG_BBBB_w)
g = ((d0 >> 3) & 0x1e) | ((d1 >> 5) & 1);
b = ((d0 << 1) & 0x1e) | ((d1 >> 6) & 1);
- palette_set_color_rgb(machine(),offs/2,pal5bit(r),pal5bit(g),pal5bit(b));
+ m_palette->set_pen_color(offs/2,pal5bit(r),pal5bit(g),pal5bit(b));
}
void quizdna_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -172,7 +172,7 @@ void quizdna_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
{
y &= 0x1ff;
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code ^ i,
col,
fx,fy,
@@ -192,6 +192,6 @@ UINT32 quizdna_state::screen_update_quizdna(screen_device &screen, bitmap_ind16
m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
}
else
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
diff --git a/src/mame/video/raiden.c b/src/mame/video/raiden.c
index c2295a59169..d2c7d01121b 100644
--- a/src/mame/video/raiden.c
+++ b/src/mame/video/raiden.c
@@ -133,7 +133,7 @@ void raiden_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect,
flipx = !flipx;
}
- gfx->transpen(bitmap,cliprect, code, color, flipx, flipy, x, y, 15);
+ gfx->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy, x, y, 15);
}
}
@@ -145,7 +145,7 @@ UINT32 raiden_state::screen_update_common(screen_device &screen, bitmap_ind16 &b
m_fg_layer->set_scrollx(0, scrollregs[2]);
m_fg_layer->set_scrolly(0, scrollregs[3]);
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
// back layer
if (m_bg_layer_enabled)
diff --git a/src/mame/video/rainbow.c b/src/mame/video/rainbow.c
index d95c90cbdbd..76f943bbc9b 100644
--- a/src/mame/video/rainbow.c
+++ b/src/mame/video/rainbow.c
@@ -113,7 +113,7 @@ UINT32 rbisland_state::screen_update_jumping(screen_device &screen, bitmap_ind16
data1 = spriteram[offs + 3];
color = (spriteram[offs + 4] & 0x0f) | sprite_colbank;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
tile,
color,
data1 & 0x40, data1 & 0x80,
diff --git a/src/mame/video/rallyx.c b/src/mame/video/rallyx.c
index ceaf292729f..15b1f06d566 100644
--- a/src/mame/video/rallyx.c
+++ b/src/mame/video/rallyx.c
@@ -69,9 +69,6 @@ PALETTE_INIT_MEMBER(rallyx_state,rallyx)
3, &resistances_rg[0], gweights, 0, 0,
2, &resistances_b[0], bweights, 1000, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x20);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -95,7 +92,7 @@ PALETTE_INIT_MEMBER(rallyx_state,rallyx)
bit1 = (color_prom[i] >> 7) & 0x01;
b = combine_2_weights(bweights, bit0, bit1);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -105,12 +102,12 @@ PALETTE_INIT_MEMBER(rallyx_state,rallyx)
for (i = 0x000; i < 0x100; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* bullets use colors 0x10-0x13 */
for (i = 0x100; i < 0x104; i++)
- colortable_entry_set_value(machine().colortable, i, (i - 0x100) | 0x10);
+ palette.set_pen_indirect(i, (i - 0x100) | 0x10);
}
@@ -135,9 +132,6 @@ PALETTE_INIT_MEMBER(rallyx_state,jungler)
3, resistances_rg, gweights, 1000, 0,
2, resistances_b, bweights, 1000, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x60);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -161,7 +155,7 @@ PALETTE_INIT_MEMBER(rallyx_state,jungler)
bit1 = (color_prom[i] >> 7) & 0x01;
b = combine_2_weights(bweights, bit0, bit1);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* star pens */
@@ -185,7 +179,7 @@ PALETTE_INIT_MEMBER(rallyx_state,jungler)
bit1 = ((i - 0x20) >> 5) & 0x01;
b = combine_2_weights(bweights_star, bit0, bit1);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -195,16 +189,16 @@ PALETTE_INIT_MEMBER(rallyx_state,jungler)
for (i = 0x000; i < 0x100; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* bullets use colors 0x10-0x13 */
for (i = 0x100; i < 0x104; i++)
- colortable_entry_set_value(machine().colortable, i, (i - 0x100) | 0x10);
+ palette.set_pen_indirect(i, (i - 0x100) | 0x10);
/* stars */
for (i = 0x104; i < 0x144; i++)
- colortable_entry_set_value(machine().colortable, i, (i - 0x104) + 0x20);
+ palette.set_pen_indirect(i, (i - 0x104) + 0x20);
}
@@ -324,10 +318,10 @@ void rallyx_state::rallyx_video_start_common( )
m_radary = m_radarx + 0x800;
for (i = 0; i < 16; i++)
- machine().shadow_table[i] = i + 16;
+ m_palette->shadow_table()[i] = i + 16;
for (i = 16; i < 32; i++)
- machine().shadow_table[i] = i;
+ m_palette->shadow_table()[i] = i;
for (i = 0; i < 3; i++)
m_drawmode_table[i] = DRAWMODE_SHADOW;
@@ -428,7 +422,7 @@ void rallyx_state::plot_star( bitmap_ind16 &bitmap, const rectangle &cliprect, i
if (flip_screen_y())
y = 255 - y;
- if (colortable_entry_get_value(machine().colortable, bitmap.pix16(y, x) % 0x144) == 0)
+ if (m_palette->pen_indirect(bitmap.pix16(y, x) % 0x144) == 0)
bitmap.pix16(y, x) = STARS_COLOR_BASE + color;
}
@@ -463,13 +457,13 @@ void rallyx_state::rallyx_draw_sprites( screen_device &screen, bitmap_ind16 &bit
if (flip_screen())
sx -= 2 * displacement;
- m_gfxdecode->gfx(1)->prio_transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->prio_transmask(m_palette,bitmap,cliprect,
(spriteram[offs] & 0xfc) >> 2,
color,
flipx,flipy,
sx,sy,
screen.priority(),0x02,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, 0));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 0));
}
}
@@ -486,13 +480,13 @@ void rallyx_state::locomotn_draw_sprites( screen_device &screen, bitmap_ind16 &b
int color = spriteram_2[offs + 1] & 0x3f;
int flip = spriteram[offs] & 2;
- m_gfxdecode->gfx(1)->prio_transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->prio_transmask(m_palette,bitmap,cliprect,
((spriteram[offs] & 0x7c) >> 2) + 0x20*(spriteram[offs] & 0x01) + ((spriteram[offs] & 0x80) >> 1),
color,
flip,flip,
sx,sy,
screen.priority(),0x02,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, 0));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 0));
}
}
@@ -510,19 +504,19 @@ void rallyx_state::rallyx_draw_bullets( bitmap_ind16 &bitmap, const rectangle &c
x -= 3;
if (transpen)
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
((m_radarattr[offs & 0x0f] & 0x0e) >> 1) ^ 0x07,
0,
0,0,
x,y,
3);
else
- m_gfxdecode->gfx(2)->transtable(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transtable(m_palette,bitmap,cliprect,
((m_radarattr[offs & 0x0f] & 0x0e) >> 1) ^ 0x07,
0,
0,0,
x,y,
- m_drawmode_table,machine().shadow_table);
+ m_drawmode_table,m_palette->shadow_table());
}
}
@@ -538,19 +532,19 @@ void rallyx_state::jungler_draw_bullets( bitmap_ind16 &bitmap, const rectangle &
y = 253 - m_radary[offs];
if (transpen)
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
(m_radarattr[offs & 0x0f] & 0x07) ^ 0x07,
0,
0,0,
x,y,
3);
else
- m_gfxdecode->gfx(2)->transtable(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transtable(m_palette,bitmap,cliprect,
(m_radarattr[offs & 0x0f] & 0x07) ^ 0x07,
0,
0,0,
x,y,
- m_drawmode_table,machine().shadow_table);
+ m_drawmode_table,m_palette->shadow_table());
}
}
@@ -574,19 +568,19 @@ void rallyx_state::locomotn_draw_bullets( bitmap_ind16 &bitmap, const rectangle
y = 252 - m_radary[offs];
if (transpen)
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
(m_radarattr[offs & 0x0f] & 0x07) ^ 0x07,
0,
0,0,
x,y,
3);
else
- m_gfxdecode->gfx(2)->transtable(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transtable(m_palette,bitmap,cliprect,
(m_radarattr[offs & 0x0f] & 0x07) ^ 0x07,
0,
0,0,
x,y,
- m_drawmode_table,machine().shadow_table);
+ m_drawmode_table,m_palette->shadow_table());
}
}
diff --git a/src/mame/video/realbrk.c b/src/mame/video/realbrk.c
index cc35e7beef9..9b3d1b3b084 100644
--- a/src/mame/video/realbrk.c
+++ b/src/mame/video/realbrk.c
@@ -288,7 +288,7 @@ void realbrk_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
{
m_tmpbitmap0->fill(0, spritetile_clip );
m_tmpbitmap1->fill(0, spritetile_clip );
- m_gfxdecode->gfx(gfx)->zoom_transpen(*m_tmpbitmap0,spritetile_clip,
+ m_gfxdecode->gfx(gfx)->zoom_transpen(m_palette,*m_tmpbitmap0,spritetile_clip,
code++,
color,
flipx, flipy,
@@ -350,7 +350,7 @@ void realbrk_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
break;
default:
- m_gfxdecode->gfx(gfx)->zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(gfx)->zoom_transpen(m_palette,bitmap,cliprect,
code++,
color,
flipx, flipy,
@@ -431,7 +431,7 @@ void realbrk_state::dai2kaku_draw_sprites(bitmap_ind16 &bitmap,const rectangle &
int scalex = (sx + (x + 1) * xdim) / 0x10000 - currx;
int scaley = (sy + (y + 1) * ydim) / 0x10000 - curry;
- m_gfxdecode->gfx(gfx)->zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(gfx)->zoom_transpen(m_palette,bitmap,cliprect,
code++,
color,
flipx, flipy,
@@ -505,7 +505,7 @@ if ( machine().input().code_pressed(KEYCODE_Z) )
if (m_disable_video)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
else
@@ -575,7 +575,7 @@ if ( machine().input().code_pressed(KEYCODE_Z) )
if (m_disable_video)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
else
diff --git a/src/mame/video/redclash.c b/src/mame/video/redclash.c
index e5150efdb33..c6be1b74bc3 100644
--- a/src/mame/video/redclash.c
+++ b/src/mame/video/redclash.c
@@ -23,9 +23,6 @@ PALETTE_INIT_MEMBER(ladybug_state,redclash)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x40);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -47,7 +44,7 @@ PALETTE_INIT_MEMBER(ladybug_state,redclash)
bit1 = (color_prom[i] >> 7) & 0x01;
b = 0x47 * bit0 + 0x97 * bit1;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* star colors */
@@ -70,7 +67,7 @@ PALETTE_INIT_MEMBER(ladybug_state,redclash)
bit0 = ((i - 0x20) >> 0) & 0x01;
r = 0x47 * bit0;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -80,7 +77,7 @@ PALETTE_INIT_MEMBER(ladybug_state,redclash)
for (i = 0; i < 0x20; i++)
{
UINT8 ctabentry = ((i << 3) & 0x18) | ((i >> 2) & 0x07);
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* sprites */
@@ -89,15 +86,15 @@ PALETTE_INIT_MEMBER(ladybug_state,redclash)
UINT8 ctabentry = color_prom[(i - 0x20) >> 1];
ctabentry = BITSWAP8((color_prom[i - 0x20] >> 0) & 0x0f, 7,6,5,4,0,1,2,3);
- colortable_entry_set_value(machine().colortable, i + 0x00, ctabentry);
+ palette.set_pen_indirect(i + 0x00, ctabentry);
ctabentry = BITSWAP8((color_prom[i - 0x20] >> 4) & 0x0f, 7,6,5,4,0,1,2,3);
- colortable_entry_set_value(machine().colortable, i + 0x20, ctabentry);
+ palette.set_pen_indirect(i + 0x20, ctabentry);
}
/* stars */
for (i = 0x60; i < 0x80; i++)
- colortable_entry_set_value(machine().colortable, i, (i - 0x60) + 0x20);
+ palette.set_pen_indirect(i, (i - 0x60) + 0x20);
}
WRITE8_HANDLER( ladybug_state::redclash_videoram_w )
@@ -196,13 +193,13 @@ void ladybug_state::redclash_draw_sprites( bitmap_ind16 &bitmap, const rectangle
{
int code = ((spriteram[offs + i + 1] & 0xf0) >> 4) + ((m_gfxbank & 1) << 4);
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect,
code,
color,
0,0,
sx,sy - 16,0);
/* wraparound */
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect,
code,
color,
0,0,
@@ -216,7 +213,7 @@ void ladybug_state::redclash_draw_sprites( bitmap_ind16 &bitmap, const rectangle
int code = ((spriteram[offs + i + 1] & 0xf8) >> 3) + ((m_gfxbank & 1) << 5);
int bank = (spriteram[offs + i + 1] & 0x02) >> 1;
- m_gfxdecode->gfx(4+bank)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(4+bank)->transpen(m_palette,bitmap,cliprect,
code,
color,
0,0,
@@ -226,7 +223,7 @@ void ladybug_state::redclash_draw_sprites( bitmap_ind16 &bitmap, const rectangle
{
int code = ((spriteram[offs + i + 1] & 0xf0) >> 4) + ((m_gfxbank & 1) << 4);
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code,
color,
0,0,
@@ -235,7 +232,7 @@ void ladybug_state::redclash_draw_sprites( bitmap_ind16 &bitmap, const rectangle
break;
case 1: /* 8x8 */
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
spriteram[offs + i + 1],// + 4 * (spriteram[offs + i + 2] & 0x10),
color,
0,0,
@@ -405,7 +402,7 @@ void ladybug_state::screen_eof_redclash(screen_device &screen, bool state)
UINT32 ladybug_state::screen_update_redclash(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
redclash_draw_stars(bitmap, cliprect, 0x60, 0, 0x00, 0xff);
redclash_draw_sprites(bitmap, cliprect);
redclash_draw_bullets(bitmap, cliprect);
diff --git a/src/mame/video/renegade.c b/src/mame/video/renegade.c
index 67f231ff152..f302b4df36b 100644
--- a/src/mame/video/renegade.c
+++ b/src/mame/video/renegade.c
@@ -103,7 +103,7 @@ void renegade_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
if (attributes & 0x80) /* big sprite */
{
sprite_number &= ~1;
- m_gfxdecode->gfx(sprite_bank)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(sprite_bank)->transpen(m_palette,bitmap,cliprect,
sprite_number + 1,
color,
xflip, flip_screen(),
@@ -113,7 +113,7 @@ void renegade_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
{
sy += (flip_screen() ? -16 : 16);
}
- m_gfxdecode->gfx(sprite_bank)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(sprite_bank)->transpen(m_palette,bitmap,cliprect,
sprite_number,
color,
xflip, flip_screen(),
diff --git a/src/mame/video/retofinv.c b/src/mame/video/retofinv.c
index 25d7034ba58..0f2f90cec28 100644
--- a/src/mame/video/retofinv.c
+++ b/src/mame/video/retofinv.c
@@ -10,14 +10,11 @@
#include "includes/retofinv.h"
-void retofinv_state::palette_init()
+PALETTE_INIT_MEMBER(retofinv_state, retofinv)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
@@ -25,7 +22,7 @@ void retofinv_state::palette_init()
int g = pal4bit(color_prom[i + 0x100]);
int b = pal4bit(color_prom[i + 0x200]);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -42,14 +39,14 @@ void retofinv_state::palette_init()
else
ctabentry = 0;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* sprites and bg tiles */
for (i = 0; i < 0x800; i++)
{
UINT8 ctabentry = BITSWAP8(color_prom[i],4,5,6,7,3,2,1,0);
- colortable_entry_set_value(machine().colortable, i + 0x200, ctabentry);
+ palette.set_pen_indirect(i + 0x200, ctabentry);
}
}
@@ -107,7 +104,7 @@ void retofinv_state::video_start()
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(retofinv_state::bg_get_tile_info),this),tilemap_mapper_delegate(FUNC(retofinv_state::tilemap_scan),this),8,8,36,28);
m_fg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(retofinv_state::fg_get_tile_info),this),tilemap_mapper_delegate(FUNC(retofinv_state::tilemap_scan),this),8,8,36,28);
- colortable_configure_tilemap_groups(machine().colortable, m_fg_tilemap, m_gfxdecode->gfx(0), 0);
+ m_palette->configure_tilemap_groups(*m_fg_tilemap, *m_gfxdecode->gfx(0), 0);
}
@@ -206,12 +203,12 @@ void retofinv_state::draw_sprites(bitmap_ind16 &bitmap)
{
for (x = 0;x <= sizex;x++)
{
- m_gfxdecode->gfx(1)->transmask(bitmap,spritevisiblearea,
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,spritevisiblearea,
sprite + gfx_offs[y ^ (sizey * flipy)][x ^ (sizex * flipx)],
color,
flipx,flipy,
sx + 16*x,sy + 16*y,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, 0xff));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 0xff));
}
}
}
diff --git a/src/mame/video/rockrage.c b/src/mame/video/rockrage.c
index 88149888b67..bbc3ca90b3e 100644
--- a/src/mame/video/rockrage.c
+++ b/src/mame/video/rockrage.c
@@ -1,17 +1,14 @@
#include "emu.h"
#include "includes/rockrage.h"
-void rockrage_state::palette_init()
+PALETTE_INIT_MEMBER(rockrage_state, rockrage)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x40);
-
/* sprites */
for (i = 0x20; i < 0x40; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
/* characters */
for (i = 0x40; i < 0x140; i++)
@@ -19,10 +16,10 @@ void rockrage_state::palette_init()
UINT8 ctabentry;
ctabentry = (color_prom[(i - 0x40) + 0x000] & 0x0f) | 0x00;
- colortable_entry_set_value(machine().colortable, i + 0x000, ctabentry);
+ palette.set_pen_indirect(i + 0x000, ctabentry);
ctabentry = (color_prom[(i - 0x40) + 0x100] & 0x0f) | 0x10;
- colortable_entry_set_value(machine().colortable, i + 0x100, ctabentry);
+ palette.set_pen_indirect(i + 0x100, ctabentry);
}
}
@@ -38,7 +35,7 @@ static void set_pens( running_machine &machine )
rgb_t color = rgb_t(pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
- colortable_palette_set_color(machine.colortable, i >> 1, color);
+ state->m_palette->set_indirect_color(i >> 1, color);
}
}
diff --git a/src/mame/video/rocnrope.c b/src/mame/video/rocnrope.c
index 14040c01020..780908d10e2 100644
--- a/src/mame/video/rocnrope.c
+++ b/src/mame/video/rocnrope.c
@@ -29,7 +29,7 @@
***************************************************************************/
-void rocnrope_state::palette_init()
+PALETTE_INIT_MEMBER(rocnrope_state, rocnrope)
{
const UINT8 *color_prom = memregion("proms")->base();
static const int resistances_rg[3] = { 1000, 470, 220 };
@@ -43,9 +43,6 @@ void rocnrope_state::palette_init()
3, &resistances_rg[0], gweights, 1000, 0,
2, &resistances_b[0], bweights, 1000, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x20);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -69,7 +66,7 @@ void rocnrope_state::palette_init()
bit1 = (color_prom[i] >> 7) & 0x01;
b = combine_2_weights(bweights, bit0, bit1);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -79,7 +76,7 @@ void rocnrope_state::palette_init()
for (i = 0; i < 0x200; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -129,12 +126,12 @@ void rocnrope_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
{
int color = spriteram_2[offs] & 0x0f;
- m_gfxdecode->gfx(0)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transmask(m_palette,bitmap,cliprect,
spriteram[offs + 1],
color,
spriteram_2[offs] & 0x40,~spriteram_2[offs] & 0x80,
240 - spriteram[offs], spriteram_2[offs + 1],
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(0), color, 0));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(0), color, 0));
}
}
diff --git a/src/mame/video/rohga.c b/src/mame/video/rohga.c
index 66aa2bd309f..948a1df74d9 100644
--- a/src/mame/video/rohga.c
+++ b/src/mame/video/rohga.c
@@ -73,7 +73,7 @@ UINT32 rohga_state::screen_update_rohga(screen_device &screen, bitmap_ind16 &bit
/* Draw playfields */
screen.priority().fill(0, cliprect);
- bitmap.fill(machine().pens[768], cliprect);
+ bitmap.fill(m_palette->pen(768), cliprect);
switch (priority & 3)
{
@@ -121,7 +121,7 @@ VIDEO_START_MEMBER(rohga_state,wizdfire)
void rohga_state::mixwizdfirelayer(bitmap_rgb32 &bitmap, const rectangle &cliprect, int gfxregion, UINT16 pri, UINT16 primask)
{
int y, x;
- const pen_t *paldata = machine().pens;
+ const pen_t *paldata = m_palette->pens();
bitmap_ind16* sprite_bitmap;
int penbase;
@@ -179,7 +179,7 @@ UINT32 rohga_state::screen_update_wizdfire(screen_device &screen, bitmap_rgb32 &
m_deco_tilegen2->pf_update(m_pf3_rowscroll, m_pf4_rowscroll);
/* Draw playfields - Palette of 2nd playfield chip visible if playfields turned off */
- bitmap.fill(machine().pens[512], cliprect);
+ bitmap.fill(m_palette->pen(512), cliprect);
m_deco_tilegen2->tilemap_2_draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
m_sprgen1->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0600, 0x0600, 0x400, 0x1ff);
@@ -216,7 +216,7 @@ UINT32 rohga_state::screen_update_nitrobal(screen_device &screen, bitmap_rgb32 &
m_deco_tilegen2->pf_update(m_pf3_rowscroll, m_pf4_rowscroll);
/* Draw playfields - Palette of 2nd playfield chip visible if playfields turned off */
- bitmap.fill(machine().pens[512], cliprect);
+ bitmap.fill(m_palette->pen(512), cliprect);
screen.priority().fill(0);
/* pf3 and pf4 are combined into a single 8bpp bitmap */
diff --git a/src/mame/video/rollrace.c b/src/mame/video/rollrace.c
index e9176a90893..fb81695cc22 100644
--- a/src/mame/video/rollrace.c
+++ b/src/mame/video/rollrace.c
@@ -20,13 +20,13 @@
bit 0 -- 1 kohm resistor -- RED/GREEN/BLUE
***************************************************************************/
-void rollrace_state::palette_init()
+PALETTE_INIT_MEMBER(rollrace_state, rollrace)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int bit0,bit1,bit2,bit3,r,g,b;
@@ -36,18 +36,18 @@ void rollrace_state::palette_init()
bit2 = (color_prom[0] >> 2) & 0x01;
bit3 = (color_prom[0] >> 3) & 0x01;
r = 0x0e * bit0 + 0x1f * bit1 + 0x42 * bit2 + 0x90 * bit3;
- bit0 = (color_prom[machine().total_colors()] >> 0) & 0x01;
- bit1 = (color_prom[machine().total_colors()] >> 1) & 0x01;
- bit2 = (color_prom[machine().total_colors()] >> 2) & 0x01;
- bit3 = (color_prom[machine().total_colors()] >> 3) & 0x01;
+ bit0 = (color_prom[palette.entries()] >> 0) & 0x01;
+ bit1 = (color_prom[palette.entries()] >> 1) & 0x01;
+ bit2 = (color_prom[palette.entries()] >> 2) & 0x01;
+ bit3 = (color_prom[palette.entries()] >> 3) & 0x01;
g = 0x0e * bit0 + 0x1f * bit1 + 0x42 * bit2 + 0x90 * bit3;
- bit0 = (color_prom[2*machine().total_colors()] >> 0) & 0x01;
- bit1 = (color_prom[2*machine().total_colors()] >> 1) & 0x01;
- bit2 = (color_prom[2*machine().total_colors()] >> 2) & 0x01;
- bit3 = (color_prom[2*machine().total_colors()] >> 3) & 0x01;
+ bit0 = (color_prom[2*palette.entries()] >> 0) & 0x01;
+ bit1 = (color_prom[2*palette.entries()] >> 1) & 0x01;
+ bit2 = (color_prom[2*palette.entries()] >> 2) & 0x01;
+ bit3 = (color_prom[2*palette.entries()] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x42 * bit2 + 0x90 * bit3;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
color_prom++;
}
@@ -123,7 +123,7 @@ UINT32 rollrace_state::screen_update_rollrace(screen_device &screen, bitmap_ind1
if(m_ra_flipy)
sy = 31-sy ;
- m_gfxdecode->gfx(RA_BGCHAR_BASE)->transpen(bitmap,
+ m_gfxdecode->gfx(RA_BGCHAR_BASE)->transpen(m_palette,bitmap,
cliprect,
mem[offs + ( m_ra_bkgpage * 1024 )]
+ ((( mem[offs + 0x4000 + ( m_ra_bkgpage * 1024 )] & 0xc0 ) >> 6 ) * 256 ) ,
@@ -161,7 +161,7 @@ UINT32 rollrace_state::screen_update_rollrace(screen_device &screen, bitmap_ind1
if(bank)
bank += m_ra_spritebank;
- m_gfxdecode->gfx( RA_SP_BASE + bank )->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx( RA_SP_BASE + bank )->transpen(m_palette,bitmap,cliprect,
spriteram[offs+1] & 0x3f ,
spriteram[offs+2] & 0x1f,
m_ra_flipx,!(s_flipy^m_ra_flipy),
@@ -188,7 +188,7 @@ UINT32 rollrace_state::screen_update_rollrace(screen_device &screen, bitmap_ind1
if (m_ra_flipx) sx = 31 - sx;
- m_gfxdecode->gfx(RA_FGCHAR_BASE + m_ra_chrbank) ->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(RA_FGCHAR_BASE + m_ra_chrbank) ->transpen(m_palette,bitmap,cliprect,
m_videoram[ offs ] ,
col,
m_ra_flipx,m_ra_flipy,
diff --git a/src/mame/video/rpunch.c b/src/mame/video/rpunch.c
index 40735dd025e..d1728c2c38a 100644
--- a/src/mame/video/rpunch.c
+++ b/src/mame/video/rpunch.c
@@ -218,7 +218,7 @@ void rpunch_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect,
if (x >= BITMAP_WIDTH) x -= 512;
if (y >= BITMAP_HEIGHT) y -= 512;
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code, color + (m_sprite_palette / 16), xflip, yflip, x, y, 15);
}
}
diff --git a/src/mame/video/runaway.c b/src/mame/video/runaway.c
index b27913c7920..117fdc7512a 100644
--- a/src/mame/video/runaway.c
+++ b/src/mame/video/runaway.c
@@ -25,7 +25,7 @@ WRITE8_MEMBER(runaway_state::runaway_paletteram_w)
0x47 * ((~data >> 0) & 1) +
0x97 * ((~data >> 1) & 1);
- palette_set_color(machine(), offset, rgb_t(R, G, B));
+ m_palette->set_pen_color(offset, rgb_t(R, G, B));
}
@@ -101,13 +101,13 @@ UINT32 runaway_state::screen_update_runaway(screen_device &screen, bitmap_ind16
code |= (m_sprite_ram[i + 0x30] << 2) & 0x1c0;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
0,
flipx, flipy,
x, 240 - y, 0);
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
0,
flipx, flipy,
@@ -135,13 +135,13 @@ UINT32 runaway_state::screen_update_qwak(screen_device &screen, bitmap_ind16 &bi
code |= (m_sprite_ram[i + 0x30] << 2) & 0x1c0;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
0,
flipx, flipy,
x, 240 - y, 0);
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
0,
flipx, flipy,
diff --git a/src/mame/video/rungun.c b/src/mame/video/rungun.c
index d88bf904670..c2ae3151ca7 100644
--- a/src/mame/video/rungun.c
+++ b/src/mame/video/rungun.c
@@ -86,7 +86,7 @@ void rungun_state::video_start()
assert(gfx_index != MAX_GFX_ELEMENTS);
// decode the ttl layer's gfx
- m_gfxdecode->set_gfx(gfx_index, auto_alloc(machine(), gfx_element(machine(), charlayout, memregion("gfx3")->base(), machine().total_colors() / 16, 0)));
+ m_gfxdecode->set_gfx(gfx_index, auto_alloc(machine(), gfx_element(machine(), charlayout, memregion("gfx3")->base(), m_palette->entries() / 16, 0)));
m_ttl_gfx_index = gfx_index;
// create the tilemap
@@ -99,7 +99,7 @@ void rungun_state::video_start()
UINT32 rungun_state::screen_update_rng(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
screen.priority().fill(0, cliprect);
m_k053936->zoom_draw(screen, bitmap, cliprect, m_936_tilemap, 0, 0, 1);
diff --git a/src/mame/video/sauro.c b/src/mame/video/sauro.c
index 77b5170c640..583459d590d 100644
--- a/src/mame/video/sauro.c
+++ b/src/mame/video/sauro.c
@@ -128,7 +128,7 @@ void sauro_state::sauro_draw_sprites(bitmap_ind16 &bitmap, const rectangle &clip
sy = 240 - sy;
}
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx, flipy,
@@ -199,7 +199,7 @@ void sauro_state::trckydoc_draw_sprites(bitmap_ind16 &bitmap, const rectangle &c
sy = 240 - sy;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx, flipy,
diff --git a/src/mame/video/sbasketb.c b/src/mame/video/sbasketb.c
index 4f76cc1130b..6ce6343c8d3 100644
--- a/src/mame/video/sbasketb.c
+++ b/src/mame/video/sbasketb.c
@@ -26,7 +26,7 @@
***************************************************************************/
-void sbasketb_state::palette_init()
+PALETTE_INIT_MEMBER(sbasketb_state, sbasketb)
{
const UINT8 *color_prom = memregion("proms")->base();
static const int resistances[4] = { 2000, 1000, 470, 220 };
@@ -39,9 +39,6 @@ void sbasketb_state::palette_init()
4, resistances, gweights, 1000, 0,
4, resistances, bweights, 1000, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
@@ -69,7 +66,7 @@ void sbasketb_state::palette_init()
bit3 = (color_prom[i + 0x200] >> 3) & 0x01;
b = combine_4_weights(bweights, bit0, bit1, bit2, bit3);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table,*/
@@ -79,7 +76,7 @@ void sbasketb_state::palette_init()
for (i = 0; i < 0x100; i++)
{
UINT8 ctabentry = (color_prom[i] & 0x0f) | 0xf0;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* sprites use colors 0-256 (?) in 16 banks */
@@ -90,7 +87,7 @@ void sbasketb_state::palette_init()
for (j = 0; j < 0x10; j++)
{
UINT8 ctabentry = (j << 4) | (color_prom[i + 0x100] & 0x0f);
- colortable_entry_set_value(machine().colortable, 0x100 + ((j << 8) | i), ctabentry);
+ palette.set_pen_indirect(0x100 + ((j << 8) | i), ctabentry);
}
}
}
@@ -158,7 +155,7 @@ void sbasketb_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code, color,
flipx, flipy,
sx, sy, 0);
diff --git a/src/mame/video/sbugger.c b/src/mame/video/sbugger.c
index 517c28218c2..f4dab041379 100644
--- a/src/mame/video/sbugger.c
+++ b/src/mame/video/sbugger.c
@@ -37,7 +37,7 @@ UINT32 sbugger_state::screen_update_sbugger(screen_device &screen, bitmap_ind16
}
/* not right but so we can see things ok */
-void sbugger_state::palette_init()
+PALETTE_INIT_MEMBER(sbugger_state, sbugger)
{
/* just some random colours for now */
int i;
@@ -49,8 +49,8 @@ void sbugger_state::palette_init()
int b = machine().rand()|0x80;
if (i == 0) r = g = b = 0;
- palette_set_color(machine(),i*2+1,rgb_t(r,g,b));
- palette_set_color(machine(),i*2,rgb_t(0,0,0));
+ palette.set_pen_color(i*2+1,rgb_t(r,g,b));
+ palette.set_pen_color(i*2,rgb_t(0,0,0));
}
diff --git a/src/mame/video/scn2674.c b/src/mame/video/scn2674.c
index 3feacca80bf..68d05bd18b8 100644
--- a/src/mame/video/scn2674.c
+++ b/src/mame/video/scn2674.c
@@ -36,7 +36,8 @@ const device_type SCN2674_VIDEO = &device_creator<scn2674_device>;
scn2674_device::scn2674_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, SCN2674_VIDEO, "scn2674_device", tag, owner, clock, "scn2674_device", __FILE__),
m_interrupt_callback(*this),
- m_gfxdecode(*this)
+ m_gfxdecode(*this),
+ m_palette(*this)
{
}
@@ -50,6 +51,15 @@ void scn2674_device::static_set_gfxdecode_tag(device_t &device, const char *tag)
downcast<scn2674_device &>(device).m_gfxdecode.set_tag(tag);
}
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void scn2674_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<scn2674_device &>(device).m_palette.set_tag(tag);
+}
void scn2674_device::device_start()
{
@@ -730,7 +740,7 @@ void scn2674_device::scn2574_draw_common( running_machine &machine, _BitmapClass
attr = tiledat >>12;
if (attr)
- m_gfxdecode->gfx(gfxregion)->opaque(bitmap,cliprect,tiledat,0,0,0,(x*8),(y*8));
+ m_gfxdecode->gfx(gfxregion)->opaque(m_palette,bitmap,cliprect,tiledat,0,0,0,(x*8),(y*8));
}
if (dbl_size&2)
diff --git a/src/mame/video/scn2674.h b/src/mame/video/scn2674.h
index ab5529bd8cd..2a846e2ce76 100644
--- a/src/mame/video/scn2674.h
+++ b/src/mame/video/scn2674.h
@@ -10,6 +10,9 @@
#define MCFG_SCN2674_GFXDECODE(_gfxtag) \
scn2674_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+#define MCFG_SCN2674_PALETTE(_palette_tag) \
+ scn2674_device::static_set_palette_tag(*device, "^" _palette_tag);
+
typedef void (*s2574_interrupt_callback_func)(running_machine &machine);
static const UINT8 vsync_table[4] = {3,1,5,7}; //Video related
@@ -21,6 +24,7 @@ public:
// static configuration
static void static_set_gfxdecode_tag(device_t &device, const char *tag);
+ static void static_set_palette_tag(device_t &device, const char *tag);
template<class _irq> void set_callbacks(_irq irq) {
m_interrupt_callback.set_callback(irq);
@@ -116,6 +120,7 @@ protected:
private:
required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
};
diff --git a/src/mame/video/scotrsht.c b/src/mame/video/scotrsht.c
index 0ec1477d6be..bdf57b49c84 100644
--- a/src/mame/video/scotrsht.c
+++ b/src/mame/video/scotrsht.c
@@ -3,14 +3,11 @@
/* Similar as Iron Horse */
-void scotrsht_state::palette_init()
+PALETTE_INIT_MEMBER(scotrsht_state, scotrsht)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
@@ -18,7 +15,7 @@ void scotrsht_state::palette_init()
int g = pal4bit(color_prom[i + 0x100]);
int b = pal4bit(color_prom[i + 0x200]);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -32,7 +29,7 @@ void scotrsht_state::palette_init()
for (j = 0; j < 8; j++)
{
UINT8 ctabentry = ((~i & 0x100) >> 1) | (j << 4) | (color_prom[i] & 0x0f);
- colortable_entry_set_value(machine().colortable, ((i & 0x100) << 3) | (j << 8) | (i & 0xff), ctabentry);
+ palette.set_pen_indirect(((i & 0x100) << 3) | (j << 8) | (i & 0xff), ctabentry);
}
}
}
@@ -114,9 +111,9 @@ void scotrsht_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->transmask(bitmap,cliprect, code, color, flipx, flipy,
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,cliprect, code, color, flipx, flipy,
sx, sy,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, m_palette_bank * 16));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, m_palette_bank * 16));
}
}
diff --git a/src/mame/video/sderby.c b/src/mame/video/sderby.c
index e2977550386..9d43f66afc9 100644
--- a/src/mame/video/sderby.c
+++ b/src/mame/video/sderby.c
@@ -76,7 +76,7 @@ void sderby_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect,i
code = spriteram16[offs+2] >> codeshift;
color = (spriteram16[offs+1] & 0x3e00) >> 9;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
color/colordiv+48,
flipx,0,
diff --git a/src/mame/video/segag80r.c b/src/mame/video/segag80r.c
index 3e5ffc4a123..c8cb01dbe85 100644
--- a/src/mame/video/segag80r.c
+++ b/src/mame/video/segag80r.c
@@ -101,7 +101,7 @@ void segag80r_state::g80_set_palette_entry(int entry, UINT8 data)
bit1 = (b >> 1) & 0x01;
b = combine_2_weights(m_bweights, bit0, bit1);
- palette_set_color(machine(), entry, rgb_t(r, g, b));
+ m_palette->set_pen_color(entry, rgb_t(r, g, b));
}
@@ -143,7 +143,7 @@ void segag80r_state::spaceod_bg_init_palette()
bit1 = (b >> 1) & 0x01;
b = combine_2_weights(tbweights, bit0, bit1);
- palette_set_color(machine(), 64 + i, rgb_t(r, g, b));
+ m_palette->set_pen_color(64 + i, rgb_t(r, g, b));
}
}
@@ -644,7 +644,7 @@ void segag80r_state::draw_videoram(bitmap_ind16 &bitmap, const rectangle &clipre
UINT8 tile = videoram[offs];
/* draw the tile */
- m_gfxdecode->gfx(0)->transmask(bitmap,cliprect, tile, tile >> 4, m_video_flip, m_video_flip, x*8, y*8, transparent_pens[tile >> 4]);
+ m_gfxdecode->gfx(0)->transmask(m_palette,bitmap,cliprect, tile, tile >> 4, m_video_flip, m_video_flip, x*8, y*8, transparent_pens[tile >> 4]);
}
}
}
diff --git a/src/mame/video/segahang.c b/src/mame/video/segahang.c
index 638b48f8c81..f5728c9ce47 100644
--- a/src/mame/video/segahang.c
+++ b/src/mame/video/segahang.c
@@ -34,7 +34,7 @@ UINT32 segahang_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
// if no drawing is happening, fill with black and get out
if (!m_segaic16vid->segaic16_display_enable)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
diff --git a/src/mame/video/segaic24.c b/src/mame/video/segaic24.c
index a1f9b44e753..79516b085f8 100644
--- a/src/mame/video/segaic24.c
+++ b/src/mame/video/segaic24.c
@@ -23,7 +23,8 @@ const device_type S24MIXER = &device_creator<segas24_mixer>;
segas24_tile::segas24_tile(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, S24TILE, "S24TILE", tag, owner, clock, "segas24_tile", __FILE__),
- m_gfxdecode(*this)
+ m_gfxdecode(*this),
+ m_palette(*this)
{
}
@@ -37,6 +38,16 @@ void segas24_tile::static_set_gfxdecode_tag(device_t &device, const char *tag)
downcast<segas24_tile &>(device).m_gfxdecode.set_tag(tag);
}
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void segas24_tile::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<segas24_tile &>(device).m_palette.set_tag(tag);
+}
+
void segas24_tile::static_set_tile_mask(device_t &device, UINT16 _tile_mask)
{
@@ -106,7 +117,7 @@ void segas24_tile::device_start()
memset(char_ram, 0, 0x80000);
memset(tile_ram, 0, 0x10000);
- m_gfxdecode->set_gfx(char_gfx_index, auto_alloc(machine(), gfx_element(machine(), char_layout, (UINT8 *)char_ram, machine().total_colors() / 16, 0)));
+ m_gfxdecode->set_gfx(char_gfx_index, auto_alloc(machine(), gfx_element(machine(), char_layout, (UINT8 *)char_ram, m_palette->entries() / 16, 0)));
save_pointer(NAME(tile_ram), 0x10000/2);
save_pointer(NAME(char_ram), 0x80000/2);
@@ -253,7 +264,7 @@ void segas24_tile::draw_rect(screen_device &screen, bitmap_ind16 &bm, bitmap_ind
const UINT16 *source = &bm.pix16(sy, sx);
const UINT8 *trans = &tm.pix8(sy, sx);
UINT32 *dest = &dm.pix32(0);
- const pen_t *pens = machine().pens;
+ const pen_t *pens = m_palette->pens();
tpri |= TILEMAP_PIXEL_LAYER0;
diff --git a/src/mame/video/segaic24.h b/src/mame/video/segaic24.h
index feea2226337..70b4c37d2f8 100644
--- a/src/mame/video/segaic24.h
+++ b/src/mame/video/segaic24.h
@@ -15,6 +15,9 @@
#define MCFG_S24TILE_DEVICE_GFXDECODE(_gfxtag) \
segas24_tile::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+#define MCFG_S24TILE_DEVICE_PALETTE(_palette_tag) \
+ segas24_tile::static_set_palette_tag(*device, "^" _palette_tag);
+
class segas24_tile : public device_t
{
friend class segas24_tile_config;
@@ -24,6 +27,7 @@ public:
// static configuration
static void static_set_gfxdecode_tag(device_t &device, const char *tag);
+ static void static_set_palette_tag(device_t &device, const char *tag);
static void static_set_tile_mask(device_t &device, UINT16 tile_mask);
DECLARE_READ16_MEMBER(tile_r);
@@ -54,6 +58,7 @@ private:
static const gfx_layout char_layout;
required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
void tile_info(int offset, tile_data &tileinfo, tilemap_memory_index tile_index);
TILE_GET_INFO_MEMBER(tile_info_0s);
diff --git a/src/mame/video/segaorun.c b/src/mame/video/segaorun.c
index 25f1c3a8158..2faea0f5293 100644
--- a/src/mame/video/segaorun.c
+++ b/src/mame/video/segaorun.c
@@ -108,7 +108,7 @@ UINT32 segaorun_state::screen_update_outrun(screen_device &screen, bitmap_ind16
// if no drawing is happening, fill with black and get out
if (!m_segaic16vid->segaic16_display_enable)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
diff --git a/src/mame/video/segas16a.c b/src/mame/video/segas16a.c
index 131c165a380..755b69af3bf 100644
--- a/src/mame/video/segas16a.c
+++ b/src/mame/video/segas16a.c
@@ -31,7 +31,7 @@ UINT32 segas16a_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
// if no drawing is happening, fill with black and get out
if (!m_segaic16vid->segaic16_display_enable)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
diff --git a/src/mame/video/segas16b.c b/src/mame/video/segas16b.c
index be45eb9941b..e336f0df694 100644
--- a/src/mame/video/segas16b.c
+++ b/src/mame/video/segas16b.c
@@ -31,7 +31,7 @@ UINT32 segas16b_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
// if no drawing is happening, fill with black and get out
if (!m_segaic16vid->segaic16_display_enable)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
diff --git a/src/mame/video/segas18.c b/src/mame/video/segas18.c
index 0197384b726..07d459c567e 100644
--- a/src/mame/video/segas18.c
+++ b/src/mame/video/segas18.c
@@ -189,7 +189,7 @@ UINT32 segas18_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
// if no drawing is happening, fill with black and get out
if (!m_segaic16vid->segaic16_display_enable)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
@@ -252,7 +252,7 @@ UINT32 segas18_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
#if DEBUG_VDP
if (m_vdp_enable && machine().input().code_pressed(KEYCODE_V))
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
update_system18_vdp(bitmap, cliprect);
}
if (vdp_enable && machine().input().code_pressed(KEYCODE_B))
diff --git a/src/mame/video/segas24.c b/src/mame/video/segas24.c
index 6dd18f55ba7..cbc97850a3c 100644
--- a/src/mame/video/segas24.c
+++ b/src/mame/video/segas24.c
@@ -26,7 +26,7 @@ namespace {
UINT32 segas24_state::screen_update_system24(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
if(vmixer->get_reg(13) & 1) {
- bitmap.fill(get_black_pen(machine()));
+ bitmap.fill(m_palette->black_pen());
return 0;
}
diff --git a/src/mame/video/segas32.c b/src/mame/video/segas32.c
index 057f8e07664..ed89daf5a06 100644
--- a/src/mame/video/segas32.c
+++ b/src/mame/video/segas32.c
@@ -336,7 +336,7 @@ inline void segas32_state::update_color(int offset, UINT16 data)
/* nice display when you hit F4, which is useful for debugging */
/* set the color */
- palette_set_color_rgb(machine(), offset, pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
+ m_palette->set_pen_color(offset, pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
}
@@ -2377,7 +2377,7 @@ UINT32 segas32_state::screen_update_system32(screen_device &screen, bitmap_rgb32
/* if the display is off, punt */
if (!m_system32_displayenable[0])
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
@@ -2555,7 +2555,7 @@ UINT32 segas32_state::multi32_update(screen_device &screen, bitmap_rgb32 &bitmap
/* if the display is off, punt */
if (!m_system32_displayenable[index])
{
- bitmap.fill(get_black_pen(screen.machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
diff --git a/src/mame/video/segaxbd.c b/src/mame/video/segaxbd.c
index dced57c0ca9..ba9aead0c78 100644
--- a/src/mame/video/segaxbd.c
+++ b/src/mame/video/segaxbd.c
@@ -34,7 +34,7 @@ UINT32 segaxbd_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
// if no drawing is happening, fill with black and get out
if (!m_segaic16vid->segaic16_display_enable)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
diff --git a/src/mame/video/segaybd.c b/src/mame/video/segaybd.c
index 966355cd1ad..cf3eeeeb020 100644
--- a/src/mame/video/segaybd.c
+++ b/src/mame/video/segaybd.c
@@ -32,7 +32,7 @@ UINT32 segaybd_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
// if no drawing is happening, fill with black and get out
if (!m_segaic16vid->segaic16_display_enable)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
diff --git a/src/mame/video/seibuspi.c b/src/mame/video/seibuspi.c
index 350bca7e266..42cfe6debd1 100644
--- a/src/mame/video/seibuspi.c
+++ b/src/mame/video/seibuspi.c
@@ -199,8 +199,8 @@ WRITE32_MEMBER(seibuspi_state::palette_dma_start_w)
if (m_palette_ram[i] != color)
{
m_palette_ram[i] = color;
- palette_set_color_rgb(machine(), (i * 2), pal5bit(m_palette_ram[i] >> 0), pal5bit(m_palette_ram[i] >> 5), pal5bit(m_palette_ram[i] >> 10));
- palette_set_color_rgb(machine(), (i * 2) + 1, pal5bit(m_palette_ram[i] >> 16), pal5bit(m_palette_ram[i] >> 21), pal5bit(m_palette_ram[i] >> 26));
+ m_palette->set_pen_color((i * 2), pal5bit(m_palette_ram[i] >> 0), pal5bit(m_palette_ram[i] >> 5), pal5bit(m_palette_ram[i] >> 10));
+ m_palette->set_pen_color((i * 2) + 1, pal5bit(m_palette_ram[i] >> 16), pal5bit(m_palette_ram[i] >> 21), pal5bit(m_palette_ram[i] >> 26));
}
}
}
@@ -222,7 +222,7 @@ WRITE16_MEMBER(seibuspi_state::sprite_dma_start_w)
void seibuspi_state::drawgfx_blend(bitmap_rgb32 &bitmap, const rectangle &cliprect, gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, int sx, int sy)
{
- const pen_t *pens = &gfx->machine().pens[gfx->colorbase()];
+ const pen_t *pens = &m_palette->pen(gfx->colorbase());
const UINT8 *dp;
int i, j;
int x1, x2;
@@ -457,11 +457,11 @@ void seibuspi_state::combine_tilemap(bitmap_rgb32 &bitmap, const rectangle &clip
UINT8 alpha = m_alpha_table[pen];
if (alpha)
{
- *d = alpha_blend_r32(*d, machine().pens[pen], 0x7f);
+ *d = alpha_blend_r32(*d, m_palette->pen(pen), 0x7f);
}
else
{
- *d = machine().pens[pen];
+ *d = m_palette->pen(pen);
}
}
++d;
diff --git a/src/mame/video/seicross.c b/src/mame/video/seicross.c
index 9623e50996a..cebdd792dda 100644
--- a/src/mame/video/seicross.c
+++ b/src/mame/video/seicross.c
@@ -25,13 +25,13 @@
bit 0 -- 1 kohm resistor -- RED
***************************************************************************/
-void seicross_state::palette_init()
+PALETTE_INIT_MEMBER(seicross_state, seicross)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int bit0,bit1,bit2,r,g,b;
@@ -50,7 +50,7 @@ void seicross_state::palette_init()
bit1 = (color_prom[i] >> 7) & 0x01;
b = 0x4f * bit0 + 0xa8 * bit1;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
}
@@ -101,13 +101,13 @@ void seicross_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
for (offs = m_spriteram.bytes() - 4; offs >= 0; offs -= 4)
{
int x = spriteram[offs + 3];
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
(spriteram[offs] & 0x3f) + ((spriteram[offs + 1] & 0x10) << 2) + 128,
spriteram[offs + 1] & 0x0f,
spriteram[offs] & 0x40,spriteram[offs] & 0x80,
x,240-spriteram[offs + 2],0);
if(x>0xf0)
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
(spriteram[offs] & 0x3f) + ((spriteram[offs + 1] & 0x10) << 2) + 128,
spriteram[offs + 1] & 0x0f,
spriteram[offs] & 0x40,spriteram[offs] & 0x80,
@@ -117,13 +117,13 @@ void seicross_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
for (offs = m_spriteram2.bytes() - 4; offs >= 0; offs -= 4)
{
int x = spriteram_2[offs + 3];
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
(spriteram_2[offs] & 0x3f) + ((spriteram_2[offs + 1] & 0x10) << 2),
spriteram_2[offs + 1] & 0x0f,
spriteram_2[offs] & 0x40,spriteram_2[offs] & 0x80,
x,240-spriteram_2[offs + 2],0);
if(x>0xf0)
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
(spriteram_2[offs] & 0x3f) + ((spriteram_2[offs + 1] & 0x10) << 2),
spriteram_2[offs + 1] & 0x0f,
spriteram_2[offs] & 0x40,spriteram_2[offs] & 0x80,
diff --git a/src/mame/video/senjyo.c b/src/mame/video/senjyo.c
index 6b56ac5ddb1..32199addd1b 100644
--- a/src/mame/video/senjyo.c
+++ b/src/mame/video/senjyo.c
@@ -257,7 +257,7 @@ void senjyo_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect,i
}
- m_gfxdecode->gfx(big ? 5 : 4)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(big ? 5 : 4)->transpen(m_palette,bitmap,cliprect,
spriteram[offs],
spriteram[offs + 1] & 0x07,
flipx,flipy,
@@ -272,8 +272,8 @@ UINT32 senjyo_state::screen_update_senjyo(screen_device &screen, bitmap_ind16 &b
/* two colors for the radar dots (verified on the real board) */
- palette_set_color(machine(),512,rgb_t(0xff,0x00,0x00)); /* red for enemies */
- palette_set_color(machine(),513,rgb_t(0xff,0xff,0x00)); /* yellow for player */
+ m_palette->set_pen_color(512,rgb_t(0xff,0x00,0x00)); /* red for enemies */
+ m_palette->set_pen_color(513,rgb_t(0xff,0xff,0x00)); /* yellow for player */
{
int flip = flip_screen();
diff --git a/src/mame/video/seta.c b/src/mame/video/seta.c
index 776a30cc5f1..6e94510e2b2 100644
--- a/src/mame/video/seta.c
+++ b/src/mame/video/seta.c
@@ -575,20 +575,17 @@ PALETTE_INIT_MEMBER(seta_state,blandia)
{
int color, pen;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x600*2);
-
for (color = 0; color < 0x20; color++)
{
for (pen = 0; pen < 0x40; pen++)
{
// layer 2-3
- colortable_entry_set_value(machine().colortable, 0x0200 + ((color << 6) | pen), 0x200 + ((color << 4) | (pen & 0x0f)));
- colortable_entry_set_value(machine().colortable, 0x1200 + ((color << 6) | pen), 0x200 + pen);
+ palette.set_pen_indirect(0x0200 + ((color << 6) | pen), 0x200 + ((color << 4) | (pen & 0x0f)));
+ palette.set_pen_indirect(0x1200 + ((color << 6) | pen), 0x200 + pen);
// layer 0-1
- colortable_entry_set_value(machine().colortable, 0x0a00 + ((color << 6) | pen), 0x400 + ((color << 4) | (pen & 0x0f)));
- colortable_entry_set_value(machine().colortable, 0x1a00 + ((color << 6) | pen), 0x400 + pen);
+ palette.set_pen_indirect(0x0a00 + ((color << 6) | pen), 0x400 + ((color << 4) | (pen & 0x0f)));
+ palette.set_pen_indirect(0x1a00 + ((color << 6) | pen), 0x400 + pen);
}
}
@@ -596,7 +593,7 @@ PALETTE_INIT_MEMBER(seta_state,blandia)
// what are used for palette from 0x800 to 0xBFF?
for(int i = 0; i < 0x2200; i++)
{
- colortable_entry_set_value(machine().colortable, 0x2200 + i, 0x600 + (i & 0x1ff));
+ palette.set_pen_indirect(0x2200 + i, 0x600 + (i & 0x1ff));
}
}
@@ -608,17 +605,14 @@ PALETTE_INIT_MEMBER(seta_state,gundhara)
{
int color, pen;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x600);
-
for (color = 0; color < 0x20; color++)
for (pen = 0; pen < 0x40; pen++)
{
- colortable_entry_set_value(machine().colortable, 0x0200 + ((color << 6) | pen), 0x400 + ((((color & ~3) << 4) + pen) & 0x1ff)); // used?
- colortable_entry_set_value(machine().colortable, 0x1200 + ((color << 6) | pen), 0x400 + ((((color & ~3) << 4) + pen) & 0x1ff));
+ palette.set_pen_indirect(0x0200 + ((color << 6) | pen), 0x400 + ((((color & ~3) << 4) + pen) & 0x1ff)); // used?
+ palette.set_pen_indirect(0x1200 + ((color << 6) | pen), 0x400 + ((((color & ~3) << 4) + pen) & 0x1ff));
- colortable_entry_set_value(machine().colortable, 0x0a00 + ((color << 6) | pen), 0x200 + ((((color & ~3) << 4) + pen) & 0x1ff)); // used?
- colortable_entry_set_value(machine().colortable, 0x1a00 + ((color << 6) | pen), 0x200 + ((((color & ~3) << 4) + pen) & 0x1ff));
+ palette.set_pen_indirect(0x0a00 + ((color << 6) | pen), 0x200 + ((((color & ~3) << 4) + pen) & 0x1ff)); // used?
+ palette.set_pen_indirect(0x1a00 + ((color << 6) | pen), 0x200 + ((((color & ~3) << 4) + pen) & 0x1ff));
}
}
@@ -629,17 +623,14 @@ PALETTE_INIT_MEMBER(seta_state,jjsquawk)
{
int color, pen;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x600);
-
for (color = 0; color < 0x20; color++)
for (pen = 0; pen < 0x40; pen++)
{
- colortable_entry_set_value(machine().colortable, 0x0200 + ((color << 6) | pen), 0x400 + (((color << 4) + pen) & 0x1ff)); // used by madshark
- colortable_entry_set_value(machine().colortable, 0x1200 + ((color << 6) | pen), 0x400 + (((color << 4) + pen) & 0x1ff));
+ palette.set_pen_indirect(0x0200 + ((color << 6) | pen), 0x400 + (((color << 4) + pen) & 0x1ff)); // used by madshark
+ palette.set_pen_indirect(0x1200 + ((color << 6) | pen), 0x400 + (((color << 4) + pen) & 0x1ff));
- colortable_entry_set_value(machine().colortable, 0x0a00 + ((color << 6) | pen), 0x200 + (((color << 4) + pen) & 0x1ff)); // used by madshark
- colortable_entry_set_value(machine().colortable, 0x1a00 + ((color << 6) | pen), 0x200 + (((color << 4) + pen) & 0x1ff));
+ palette.set_pen_indirect(0x0a00 + ((color << 6) | pen), 0x200 + (((color << 4) + pen) & 0x1ff)); // used by madshark
+ palette.set_pen_indirect(0x1a00 + ((color << 6) | pen), 0x200 + (((color << 4) + pen) & 0x1ff));
}
}
@@ -649,14 +640,11 @@ PALETTE_INIT_MEMBER(seta_state,zingzip)
{
int color, pen;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x600);
-
for (color = 0; color < 0x20; color++)
for (pen = 0; pen < 0x40; pen++)
{
- colortable_entry_set_value(machine().colortable, 0x400 + ((color << 6) | pen), 0x400 + ((((color & ~3) << 4) + pen) & 0x1ff)); // used?
- colortable_entry_set_value(machine().colortable, 0xc00 + ((color << 6) | pen), 0x400 + ((((color & ~3) << 4) + pen) & 0x1ff));
+ palette.set_pen_indirect(0x400 + ((color << 6) | pen), 0x400 + ((((color & ~3) << 4) + pen) & 0x1ff)); // used?
+ palette.set_pen_indirect(0xc00 + ((color << 6) | pen), 0x400 + ((((color & ~3) << 4) + pen) & 0x1ff));
}
}
@@ -668,7 +656,7 @@ PALETTE_INIT_MEMBER(seta_state,inttoote)
for (x = 0; x < 0x200 ; x++)
{
int data = (color_prom[x*2] <<8) | color_prom[x*2+1];
- palette_set_color_rgb(machine(), x, pal5bit(data >> 10),pal5bit(data >> 5),pal5bit(data >> 0));
+ palette.set_pen_color(x, pal5bit(data >> 10),pal5bit(data >> 5),pal5bit(data >> 0));
}
}
@@ -677,7 +665,7 @@ PALETTE_INIT_MEMBER(seta_state,setaroul)
m_gfxdecode->gfx(0)->set_granularity(16);
m_gfxdecode->gfx(1)->set_granularity(16);
- PALETTE_INIT_CALL_MEMBER(inttoote);
+ PALETTE_INIT_NAME(inttoote)(palette);
}
PALETTE_INIT_MEMBER(seta_state,usclssic)
@@ -686,9 +674,6 @@ PALETTE_INIT_MEMBER(seta_state,usclssic)
int color, pen;
int x;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x400);
-
/* DECODE PROM */
for (x = 0; x < 0x200 ; x++)
{
@@ -697,16 +682,16 @@ PALETTE_INIT_MEMBER(seta_state,usclssic)
rgb_t color = rgb_t(pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
if (x >= 0x100)
- colortable_palette_set_color(machine().colortable, x + 0x000, color);
+ palette.set_indirect_color(x + 0x000, color);
else
- colortable_palette_set_color(machine().colortable, x + 0x300, color);
+ palette.set_indirect_color(x + 0x300, color);
}
for (color = 0; color < 0x20; color++)
for (pen = 0; pen < 0x40; pen++)
{
- colortable_entry_set_value(machine().colortable, 0x200 + ((color << 6) | pen), 0x200 + ((((color & ~3) << 4) + pen) & 0x1ff)); // used?
- colortable_entry_set_value(machine().colortable, 0xa00 + ((color << 6) | pen), 0x200 + ((((color & ~3) << 4) + pen) & 0x1ff));
+ palette.set_pen_indirect(0x200 + ((color << 6) | pen), 0x200 + ((((color & ~3) << 4) + pen) & 0x1ff)); // used?
+ palette.set_pen_indirect(0xa00 + ((color << 6) | pen), 0x200 + ((((color & ~3) << 4) + pen) & 0x1ff));
}
}
@@ -721,10 +706,10 @@ void seta_state::set_pens()
rgb_t color = rgb_t(pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
- if (machine().colortable != NULL)
- colortable_palette_set_color(machine().colortable, i, color);
+ if (m_palette->indirect_entries() != 0)
+ m_palette->set_indirect_color(i, color);
else
- palette_set_color(machine(), i, color);
+ m_palette->set_pen_color(i, color);
}
if(m_paletteram2 != NULL)
@@ -735,10 +720,10 @@ void seta_state::set_pens()
rgb_t color = rgb_t(pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
- if (machine().colortable != NULL)
- colortable_palette_set_color(machine().colortable, i + m_paletteram.bytes() / 2, color);
+ if (m_palette->indirect_entries() != 0)
+ m_palette->set_indirect_color(i + m_paletteram.bytes() / 2, color);
else
- palette_set_color(machine(), i + m_paletteram.bytes() / 2, color);
+ m_palette->set_pen_color(i + m_paletteram.bytes() / 2, color);
}
}
}
@@ -755,9 +740,9 @@ void seta_state::usclssic_set_pens()
rgb_t color = rgb_t(pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
if (i >= 0x100)
- colortable_palette_set_color(machine().colortable, i - 0x100, color);
+ m_palette->set_indirect_color(i - 0x100, color);
else
- colortable_palette_set_color(machine().colortable, i + 0x200, color);
+ m_palette->set_indirect_color(i + 0x200, color);
}
}
@@ -799,11 +784,11 @@ void seta_state::draw_tilemap_palette_effect(bitmap_ind16 &bitmap, const rectang
// pixels with the last color are not drawn and the 2nd palette is added to the current bitmap color
if((p & pixel_effect_mask) == pixel_effect_mask)
{
- dest[x] = machine().total_colors() / 2 + dest[x];
+ dest[x] = m_palette->entries() / 2 + dest[x];
}
else
{
- dest[x] = machine().pens[p];
+ dest[x] = m_palette->pen(p);
}
}
}
diff --git a/src/mame/video/seta001.c b/src/mame/video/seta001.c
index 8d41a6658db..df783f58aee 100644
--- a/src/mame/video/seta001.c
+++ b/src/mame/video/seta001.c
@@ -31,7 +31,8 @@ const device_type SETA001_SPRITE = &device_creator<seta001_device>;
seta001_device::seta001_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, SETA001_SPRITE, "seta001_device", tag, owner, clock, "seta001", __FILE__),
- m_gfxdecode(*this)
+ m_gfxdecode(*this),
+ m_palette(*this)
{
}
@@ -45,6 +46,15 @@ void seta001_device::static_set_gfxdecode_tag(device_t &device, const char *tag)
downcast<seta001_device &>(device).m_gfxdecode.set_tag(tag);
}
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void seta001_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<seta001_device &>(device).m_palette.set_tag(tag);
+}
void seta001_device::device_start()
{
@@ -288,28 +298,28 @@ void seta001_device::draw_background( bitmap_ind16 &bitmap, const rectangle &cli
color = ( color >> (16-5) ) % total_color_codes;
code &= 0x3fff;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
((sx) & 0x1ff),((sy) & 0x0ff),
transpen);
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
((sx) & 0x1ff)-512,((sy) & 0x0ff),
transpen);
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
((sx) & 0x1ff),((sy) & 0x0ff)-256,
transpen);
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -377,7 +387,7 @@ void seta001_device::draw_foreground( screen_device &screen, bitmap_ind16 &bitma
flipy = !flipy;
}
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -385,7 +395,7 @@ void seta001_device::draw_foreground( screen_device &screen, bitmap_ind16 &bitma
max_y - ((sy + yoffs) & 0x0ff),m_transpen);
/* wrap around x */
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -393,7 +403,7 @@ void seta001_device::draw_foreground( screen_device &screen, bitmap_ind16 &bitma
max_y - ((sy + yoffs) & 0x0ff),m_transpen);
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -401,7 +411,7 @@ void seta001_device::draw_foreground( screen_device &screen, bitmap_ind16 &bitma
max_y - ((sy + yoffs) & 0x0ff)-256,m_transpen);
/* wrap around x */
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/seta001.h b/src/mame/video/seta001.h
index 02d65abf4c0..dfa1e2c790b 100644
--- a/src/mame/video/seta001.h
+++ b/src/mame/video/seta001.h
@@ -8,6 +8,7 @@ public:
// static configuration
static void static_set_gfxdecode_tag(device_t &device, const char *tag);
+ static void static_set_palette_tag(device_t &device, const char *tag);
DECLARE_WRITE8_MEMBER( spritebgflag_w8 );
@@ -76,9 +77,13 @@ private:
void draw_background( bitmap_ind16 &bitmap, const rectangle &cliprect, int bank_size, int setac_type);
void draw_foreground( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int bank_size);
required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
};
extern const device_type SETA001_SPRITE;
#define MCFG_SETA001_SPRITE_GFXDECODE(_gfxtag) \
seta001_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+
+#define MCFG_SETA001_SPRITE_PALETTE(_palette_tag) \
+ seta001_device::static_set_palette_tag(*device, "^" _palette_tag);
diff --git a/src/mame/video/seta2.c b/src/mame/video/seta2.c
index ff4aa2642dd..229b01d81df 100644
--- a/src/mame/video/seta2.c
+++ b/src/mame/video/seta2.c
@@ -474,7 +474,7 @@ VIDEO_START_MEMBER(seta2_state,seta2_yoffset)
UINT32 seta2_state::screen_update_seta2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
// Black or pen 0?
- bitmap.fill(machine().pens[0], cliprect);
+ bitmap.fill(m_palette->pen(0), cliprect);
if ( (m_vregs[0x30/2] & 1) == 0 ) // 1 = BLANK SCREEN
draw_sprites(bitmap, cliprect);
diff --git a/src/mame/video/sf.c b/src/mame/video/sf.c
index 7e8212be0f6..c97e63c0f36 100644
--- a/src/mame/video/sf.c
+++ b/src/mame/video/sf.c
@@ -164,25 +164,25 @@ void sf_state::draw_sprites( bitmap_ind16 &bitmap,const rectangle &cliprect )
t = c2; c2 = c4; c4 = t;
}
- m_gfxdecode->gfx(2)->transpen(bitmap,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,
cliprect,
sf_invert(c1),
color,
flipx,flipy,
sx,sy, 15);
- m_gfxdecode->gfx(2)->transpen(bitmap,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,
cliprect,
sf_invert(c2),
color,
flipx,flipy,
sx+16,sy, 15);
- m_gfxdecode->gfx(2)->transpen(bitmap,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,
cliprect,
sf_invert(c3),
color,
flipx,flipy,
sx,sy+16, 15);
- m_gfxdecode->gfx(2)->transpen(bitmap,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,
cliprect,
sf_invert(c4),
color,
@@ -199,7 +199,7 @@ void sf_state::draw_sprites( bitmap_ind16 &bitmap,const rectangle &cliprect )
flipy = !flipy;
}
- m_gfxdecode->gfx(2)->transpen(bitmap,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,
cliprect,
sf_invert(c),
color,
diff --git a/src/mame/video/shadfrce.c b/src/mame/video/shadfrce.c
index e3cc7650e43..9bd2876a8b5 100644
--- a/src/mame/video/shadfrce.c
+++ b/src/mame/video/shadfrce.c
@@ -129,10 +129,10 @@ void shadfrce_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, c
height++;
if (enable) {
for (hcount=0;hcount<height;hcount++) {
- gfx->prio_transpen(bitmap,cliprect,tile+hcount,pal,flipx,flipy,xpos,ypos-hcount*16-16,screen.priority(),pri_mask,0);
- gfx->prio_transpen(bitmap,cliprect,tile+hcount,pal,flipx,flipy,xpos-0x200,ypos-hcount*16-16,screen.priority(),pri_mask,0);
- gfx->prio_transpen(bitmap,cliprect,tile+hcount,pal,flipx,flipy,xpos,ypos-hcount*16-16+0x200,screen.priority(),pri_mask,0);
- gfx->prio_transpen(bitmap,cliprect,tile+hcount,pal,flipx,flipy,xpos-0x200,ypos-hcount*16-16+0x200,screen.priority(),pri_mask,0);
+ gfx->prio_transpen(m_palette,bitmap,cliprect,tile+hcount,pal,flipx,flipy,xpos,ypos-hcount*16-16,screen.priority(),pri_mask,0);
+ gfx->prio_transpen(m_palette,bitmap,cliprect,tile+hcount,pal,flipx,flipy,xpos-0x200,ypos-hcount*16-16,screen.priority(),pri_mask,0);
+ gfx->prio_transpen(m_palette,bitmap,cliprect,tile+hcount,pal,flipx,flipy,xpos,ypos-hcount*16-16+0x200,screen.priority(),pri_mask,0);
+ gfx->prio_transpen(m_palette,bitmap,cliprect,tile+hcount,pal,flipx,flipy,xpos-0x200,ypos-hcount*16-16+0x200,screen.priority(),pri_mask,0);
}
}
source-=8;
@@ -152,7 +152,7 @@ UINT32 shadfrce_state::screen_update_shadfrce(screen_device &screen, bitmap_ind1
}
else
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
}
return 0;
diff --git a/src/mame/video/shangha3.c b/src/mame/video/shangha3.c
index ba192338591..27cb22a2777 100644
--- a/src/mame/video/shangha3.c
+++ b/src/mame/video/shangha3.c
@@ -78,7 +78,7 @@ void shangha3_state::video_start()
{
/* Prepare the shadow table */
for (i = 0;i < 128;i++)
- machine().shadow_table[i] = i+128;
+ m_palette->shadow_table()[i] = i+128;
}
}
@@ -206,7 +206,7 @@ WRITE16_MEMBER(shangha3_state::shangha3_blitter_go_w)
if (flipy) dy = sy + sizey-15 - dy;
else dy = sy + dy;
- m_gfxdecode->gfx(0)->transpen(rawbitmap,myclip,
+ m_gfxdecode->gfx(0)->transpen(m_palette,rawbitmap,myclip,
(tile & 0x0fff) | (code & 0xf000),
(tile >> 12) | (color & 0x70),
flipx,flipy,
@@ -219,26 +219,26 @@ WRITE16_MEMBER(shangha3_state::shangha3_blitter_go_w)
int w;
if (zoomx <= 1 && zoomy <= 1)
- m_gfxdecode->gfx(0)->zoom_transtable(rawbitmap,myclip,
+ m_gfxdecode->gfx(0)->zoom_transtable(m_palette,rawbitmap,myclip,
code,
color,
flipx,flipy,
sx,sy,
0x1000000,0x1000000,
- drawmode_table,machine().shadow_table);
+ drawmode_table,m_palette->shadow_table());
else
{
w = (sizex+15)/16;
for (x = 0;x < w;x++)
{
- m_gfxdecode->gfx(0)->zoom_transtable(rawbitmap,myclip,
+ m_gfxdecode->gfx(0)->zoom_transtable(m_palette,rawbitmap,myclip,
code,
color,
flipx,flipy,
sx + 16*x,sy,
(0x200-zoomx)*0x100,(0x200-zoomy)*0x100,
- drawmode_table,machine().shadow_table);
+ drawmode_table,m_palette->shadow_table());
if ((code & 0x000f) == 0x0f)
code = (code + 0x100) & 0xfff0;
diff --git a/src/mame/video/shangkid.c b/src/mame/video/shangkid.c
index 93e487599f5..c5a320b429e 100644
--- a/src/mame/video/shangkid.c
+++ b/src/mame/video/shangkid.c
@@ -144,7 +144,7 @@ void shangkid_state::draw_sprite(const UINT8 *source, bitmap_ind16 &bitmap, cons
sx = xpos+(c^xflip)*width;
sy = ypos+(r^yflip)*height;
- gfx->zoom_transpen(
+ gfx->zoom_transpen(m_palette,
bitmap,
cliprect,
tile+c*8+r,
@@ -155,7 +155,7 @@ void shangkid_state::draw_sprite(const UINT8 *source, bitmap_ind16 &bitmap, cons
// wrap around y
- gfx->zoom_transpen(
+ gfx->zoom_transpen(m_palette,
bitmap,
cliprect,
tile+c*8+r,
@@ -198,16 +198,13 @@ PALETTE_INIT_MEMBER(shangkid_state,dynamski)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x20);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
UINT16 data = (color_prom[i | 0x20] << 8) | color_prom[i];
rgb_t color = rgb_t(pal5bit(data >> 1), pal5bit(data >> 6), pal5bit(data >> 11));
- colortable_palette_set_color(machine().colortable, i, color);
+ palette.set_indirect_color(i, color);
}
/* color_prom now points to the beginning of the lookup table */
@@ -217,14 +214,14 @@ PALETTE_INIT_MEMBER(shangkid_state,dynamski)
for (i = 0; i < 0x40; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* sprites */
for (i = 0x40; i < 0x80; i++)
{
UINT8 ctabentry = (color_prom[(i - 0x40) + 0x100] & 0x0f) | 0x10;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -270,7 +267,7 @@ void shangkid_state::dynamski_draw_background(bitmap_ind16 &bitmap, const rectan
{
tile += ((attr>>5)&0x3)*256;
- m_gfxdecode->gfx(0)->transpen(
+ m_gfxdecode->gfx(0)->transpen(m_palette,
bitmap,
cliprect,
tile,
@@ -303,7 +300,7 @@ void shangkid_state::dynamski_draw_sprites(bitmap_ind16 &bitmap, const rectangle
if( attr&1 ) sx += 0x100;
- m_gfxdecode->gfx(1)->transpen(
+ m_gfxdecode->gfx(1)->transpen(m_palette,
bitmap,
cliprect,
bank*0x40 + (tile&0x3f),
diff --git a/src/mame/video/shaolins.c b/src/mame/video/shaolins.c
index 23bc097235c..a162fff3918 100644
--- a/src/mame/video/shaolins.c
+++ b/src/mame/video/shaolins.c
@@ -26,7 +26,7 @@
bit 0 -- 2.2kohm resistor -- RED/GREEN/BLUE
***************************************************************************/
-void shaolins_state::palette_init()
+PALETTE_INIT_MEMBER(shaolins_state, shaolins)
{
const UINT8 *color_prom = memregion("proms")->base();
static const int resistances[4] = { 2200, 1000, 470, 220 };
@@ -39,9 +39,6 @@ void shaolins_state::palette_init()
4, resistances, gweights, 470, 0,
4, resistances, bweights, 470, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
@@ -69,7 +66,7 @@ void shaolins_state::palette_init()
bit3 = (color_prom[i + 0x200] >> 3) & 0x01;
b = combine_4_weights(bweights, bit0, bit1, bit2, bit3);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table,*/
@@ -84,7 +81,7 @@ void shaolins_state::palette_init()
for (j = 0; j < 8; j++)
{
UINT8 ctabentry = (j << 5) | ((~i & 0x100) >> 4) | (color_prom[i] & 0x0f);
- colortable_entry_set_value(machine().colortable, ((i & 0x100) << 3) | (j << 8) | (i & 0xff), ctabentry);
+ palette.set_pen_indirect(((i & 0x100) << 3) | (j << 8) | (i & 0xff), ctabentry);
}
}
}
@@ -171,11 +168,11 @@ void shaolins_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,cliprect,
code, color,
flipx, flipy,
sx, sy,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, m_palettebank << 5));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, m_palettebank << 5));
}
}
}
diff --git a/src/mame/video/shisen.c b/src/mame/video/shisen.c
index 117315ac376..2578a39cfd7 100644
--- a/src/mame/video/shisen.c
+++ b/src/mame/video/shisen.c
@@ -37,7 +37,7 @@ WRITE8_MEMBER(shisen_state::sichuan2_paletteram_w)
offset &= 0xff;
- palette_set_color_rgb(machine(), offset, pal5bit(m_paletteram[offset + 0x000]), pal5bit(m_paletteram[offset + 0x100]), pal5bit(m_paletteram[offset + 0x200]));
+ m_palette->set_pen_color(offset, pal5bit(m_paletteram[offset + 0x000]), pal5bit(m_paletteram[offset + 0x100]), pal5bit(m_paletteram[offset + 0x200]));
}
TILE_GET_INFO_MEMBER(shisen_state::get_bg_tile_info)
diff --git a/src/mame/video/shootout.c b/src/mame/video/shootout.c
index 80a4853a6a3..e72fc32ce86 100644
--- a/src/mame/video/shootout.c
+++ b/src/mame/video/shootout.c
@@ -7,13 +7,13 @@
#include "includes/shootout.h"
-void shootout_state::palette_init()
+PALETTE_INIT_MEMBER(shootout_state, shootout)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int bit0,bit1,bit2,r,g,b;
@@ -33,7 +33,7 @@ void shootout_state::palette_init()
bit2 = (color_prom[i] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
}
@@ -131,7 +131,7 @@ void shootout_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, c
vy = 240 - vy;
}
- gfx->prio_transpen(bitmap,cliprect,
+ gfx->prio_transpen(m_palette,bitmap,cliprect,
number,
0 /*color*/,
flipx,flipy,
@@ -150,7 +150,7 @@ void shootout_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, c
vy = 240 - vy;
}
- gfx->prio_transpen(bitmap,cliprect,
+ gfx->prio_transpen(m_palette,bitmap,cliprect,
number,
0 /*color*/,
flipx,flipy,
diff --git a/src/mame/video/sidearms.c b/src/mame/video/sidearms.c
index b3b452374e1..5a3bae43475 100644
--- a/src/mame/video/sidearms.c
+++ b/src/mame/video/sidearms.c
@@ -186,7 +186,7 @@ void sidearms_state::draw_sprites_region(bitmap_ind16 &bitmap, const rectangle &
}
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
code, color,
flipx, flipy,
x, y, 15);
diff --git a/src/mame/video/sidepckt.c b/src/mame/video/sidepckt.c
index 6e04448829a..2fb73b3e8fa 100644
--- a/src/mame/video/sidepckt.c
+++ b/src/mame/video/sidepckt.c
@@ -10,12 +10,12 @@
#include "includes/sidepckt.h"
-void sidepckt_state::palette_init()
+PALETTE_INIT_MEMBER(sidepckt_state, sidepckt)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int bit0,bit1,bit2,bit3,r,g,b;
@@ -32,13 +32,13 @@ void sidepckt_state::palette_init()
bit3 = (color_prom[i] >> 3) & 0x01;
g = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
/* blue component */
- bit0 = (color_prom[i + machine().total_colors()] >> 0) & 0x01;
- bit1 = (color_prom[i + machine().total_colors()] >> 1) & 0x01;
- bit2 = (color_prom[i + machine().total_colors()] >> 2) & 0x01;
- bit3 = (color_prom[i + machine().total_colors()] >> 3) & 0x01;
+ bit0 = (color_prom[i + palette.entries()] >> 0) & 0x01;
+ bit1 = (color_prom[i + palette.entries()] >> 1) & 0x01;
+ bit2 = (color_prom[i + palette.entries()] >> 2) & 0x01;
+ bit3 = (color_prom[i + palette.entries()] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
}
@@ -130,13 +130,13 @@ void sidepckt_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect
flipx = spriteram[offs+1] & 0x08;
flipy = spriteram[offs+1] & 0x04;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
sx,sy,0);
/* wraparound */
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/silkroad.c b/src/mame/video/silkroad.c
index 6a731ced2c0..3f36a84fef4 100644
--- a/src/mame/video/silkroad.c
+++ b/src/mame/video/silkroad.c
@@ -36,14 +36,14 @@ void silkroad_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, c
{
for (wcount=0;wcount<width;wcount++)
{
- gfx->prio_transpen(bitmap,cliprect,tileno+wcount,color,0,0,xpos+wcount*16+8,ypos,screen.priority(),pri_mask,0);
+ gfx->prio_transpen(m_palette,bitmap,cliprect,tileno+wcount,color,0,0,xpos+wcount*16+8,ypos,screen.priority(),pri_mask,0);
}
}
else
{
for (wcount=width;wcount>0;wcount--)
{
- gfx->prio_transpen(bitmap,cliprect,tileno+(width-wcount),color,1,0,xpos+wcount*16-16+8,ypos,screen.priority(),pri_mask,0);
+ gfx->prio_transpen(m_palette,bitmap,cliprect,tileno+(width-wcount),color,1,0,xpos+wcount*16-16+8,ypos,screen.priority(),pri_mask,0);
}
}
diff --git a/src/mame/video/simpsons.c b/src/mame/video/simpsons.c
index 5e9cac5208a..5bf8e02f0b7 100644
--- a/src/mame/video/simpsons.c
+++ b/src/mame/video/simpsons.c
@@ -97,7 +97,7 @@ void simpsons_state::simpsons_video_banking( int bank )
if (bank & 1)
{
space.install_read_bank(0x0000, 0x0fff, "bank5");
- space.install_write_handler(0x0000, 0x0fff, write8_delegate(FUNC(simpsons_state::paletteram_xBBBBBGGGGGRRRRR_byte_be_w), this));
+ space.install_write_handler(0x0000, 0x0fff, write8_delegate(FUNC(palette_device::write), m_palette.target()));
membank("bank5")->set_base(m_generic_paletteram_8);
}
else
diff --git a/src/mame/video/skydiver.c b/src/mame/video/skydiver.c
index faf71b54463..8b92f4134df 100644
--- a/src/mame/video/skydiver.c
+++ b/src/mame/video/skydiver.c
@@ -190,7 +190,7 @@ void skydiver_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
sx -= 8;
}
- m_gfxdecode->gfx(1)->zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->zoom_transpen(m_palette,bitmap,cliprect,
charcode, color,
xflip,yflip,sx,sy,
wide ? 0x20000 : 0x10000, 0x10000,0);
diff --git a/src/mame/video/skyfox.c b/src/mame/video/skyfox.c
index 2b446bc9bb8..14f4672dbc4 100644
--- a/src/mame/video/skyfox.c
+++ b/src/mame/video/skyfox.c
@@ -86,7 +86,7 @@ WRITE8_MEMBER(skyfox_state::skyfox_vregs_w)
***************************************************************************/
-void skyfox_state::palette_init()
+PALETTE_INIT_MEMBER(skyfox_state, skyfox)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -114,13 +114,13 @@ void skyfox_state::palette_init()
bit3 = (color_prom[i + 2*256] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
/* Grey scale for the background??? */
for (i = 0; i < 256; i++)
{
- palette_set_color(machine(),i + 256, rgb_t(i, i, i));
+ palette.set_pen_color(i + 256, rgb_t(i, i, i));
}
}
@@ -191,7 +191,7 @@ void skyfox_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
}
#define DRAW_SPRITE(DX,DY,CODE) \
- m_gfxdecode->gfx(0)->transpen(bitmap,\
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,\
cliprect, \
(CODE), \
0, \
diff --git a/src/mame/video/skykid.c b/src/mame/video/skykid.c
index c9f27aa29a8..2c9deb38aee 100644
--- a/src/mame/video/skykid.c
+++ b/src/mame/video/skykid.c
@@ -15,14 +15,11 @@
***************************************************************************/
-void skykid_state::palette_init()
+PALETTE_INIT_MEMBER(skykid_state, skykid)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
@@ -30,7 +27,7 @@ void skykid_state::palette_init()
int g = pal4bit(color_prom[i + 0x100]);
int b = pal4bit(color_prom[i + 0x200]);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -38,13 +35,13 @@ void skykid_state::palette_init()
/* text palette */
for (i = 0; i < 0x100; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
/* tiles/sprites */
for (i = 0x100; i < 0x500; i++)
{
UINT8 ctabentry = color_prom[i - 0x100];
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -216,12 +213,12 @@ void skykid_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
{
for (x = 0;x <= sizex;x++)
{
- m_gfxdecode->gfx(2)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transmask(m_palette,bitmap,cliprect,
sprite + gfx_offs[y ^ (sizey * flipy)][x ^ (sizex * flipx)],
color,
flipx,flipy,
sx + 16*x,sy + 16*y,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(2), color, 0xff));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(2), color, 0xff));
}
}
}
diff --git a/src/mame/video/skyraid.c b/src/mame/video/skyraid.c
index 9824c586c48..69cdb10160a 100644
--- a/src/mame/video/skyraid.c
+++ b/src/mame/video/skyraid.c
@@ -28,7 +28,7 @@ void skyraid_state::draw_text(bitmap_ind16 &bitmap, const rectangle &cliprect)
y = 136 + 16 * (i ^ 1);
for (x = 0; x < bitmap.width(); x += 16)
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, *p++, 0, 0, 0, x, y, 0);
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect, *p++, 0, 0, 0, x, y, 0);
}
}
@@ -77,7 +77,7 @@ void skyraid_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
vert -= 31;
if (flag & 1)
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code ^ 15, code >> 3, 0, 0,
horz / 2, vert, 2);
}
@@ -99,7 +99,7 @@ void skyraid_state::draw_missiles(bitmap_ind16 &bitmap, const rectangle &cliprec
vert -= 15;
horz -= 31;
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code ^ 15, 0, 0, 0,
horz / 2, vert, 0);
}
diff --git a/src/mame/video/slapfght.c b/src/mame/video/slapfght.c
index f3370895d2e..d7a6bdb305b 100644
--- a/src/mame/video/slapfght.c
+++ b/src/mame/video/slapfght.c
@@ -163,7 +163,7 @@ void slapfght_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
sx = buffered_spriteram[offs+1] + 3;
sy = buffered_spriteram[offs+3] - 1;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
buffered_spriteram[offs],
((buffered_spriteram[offs+2] >> 1) & 3) |
((buffered_spriteram[offs+2] << 2) & 4) | (m_slapfight_palette_bank << 3),
@@ -220,13 +220,13 @@ UINT32 slapfght_state::screen_update_slapfight(screen_device &screen, bitmap_ind
for (offs = 0;offs < m_spriteram->bytes();offs += 4)
{
if (m_flipscreen)
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
buffered_spriteram[offs] + ((buffered_spriteram[offs+2] & 0xc0) << 2),
(buffered_spriteram[offs+2] & 0x1e) >> 1,
1,1,
288-(buffered_spriteram[offs+1] + ((buffered_spriteram[offs+2] & 0x01) << 8)) +18,240-buffered_spriteram[offs+3],0);
else
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
buffered_spriteram[offs] + ((buffered_spriteram[offs+2] & 0xc0) << 2),
(buffered_spriteram[offs+2] & 0x1e) >> 1,
0,0,
diff --git a/src/mame/video/slapshot.c b/src/mame/video/slapshot.c
index bbb48181383..b9a98bead7f 100644
--- a/src/mame/video/slapshot.c
+++ b/src/mame/video/slapshot.c
@@ -347,7 +347,7 @@ void slapshot_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap,
}
else
{
- m_gfxdecode->gfx(0)->zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->zoom_transpen(m_palette,bitmap,cliprect,
sprite_ptr->code,
sprite_ptr->color,
sprite_ptr->flipx,sprite_ptr->flipy,
@@ -363,7 +363,7 @@ void slapshot_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap,
{
sprite_ptr--;
- m_gfxdecode->gfx(0)->prio_zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->prio_zoom_transpen(m_palette,bitmap,cliprect,
sprite_ptr->code,
sprite_ptr->color,
sprite_ptr->flipx,sprite_ptr->flipy,
diff --git a/src/mame/video/snk.c b/src/mame/video/snk.c
index 9ce7a8d98d9..42f1cf458fa 100644
--- a/src/mame/video/snk.c
+++ b/src/mame/video/snk.c
@@ -53,7 +53,7 @@ PALETTE_INIT_MEMBER(snk_state,tnk3)
bit3 = (color_prom[i + num_colors] >> 1) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
}
@@ -185,23 +185,23 @@ VIDEO_START_MEMBER(snk_state,snk_3bpp_shadow)
{
int i;
- if(!(machine().config().m_video_attributes & VIDEO_HAS_SHADOWS))
+ if(!(m_palette->shadows_enabled()))
fatalerror("driver should use VIDEO_HAS_SHADOWS\n");
/* prepare shadow draw table */
for(i = 0; i <= 5; i++) m_drawmode_table[i] = DRAWMODE_SOURCE;
- m_drawmode_table[6] = (machine().config().m_video_attributes & VIDEO_HAS_SHADOWS) ? DRAWMODE_SHADOW : DRAWMODE_SOURCE;
+ m_drawmode_table[6] = (m_palette->shadows_enabled()) ? DRAWMODE_SHADOW : DRAWMODE_SOURCE;
m_drawmode_table[7] = DRAWMODE_NONE;
for (i = 0x000;i < 0x400;i++)
- machine().shadow_table[i] = i | 0x200;
+ m_palette->shadow_table()[i] = i | 0x200;
}
VIDEO_START_MEMBER(snk_state,snk_4bpp_shadow)
{
int i;
- if(!(machine().config().m_video_attributes & VIDEO_HAS_SHADOWS))
+ if(!(m_palette->shadows_enabled()))
fatalerror("driver should use VIDEO_HAS_SHADOWS\n");
/* prepare shadow draw table */
@@ -211,10 +211,10 @@ VIDEO_START_MEMBER(snk_state,snk_4bpp_shadow)
/* all palette entries are not affected by shadow sprites... */
for (i = 0x000;i < 0x400;i++)
- machine().shadow_table[i] = i;
+ m_palette->shadow_table()[i] = i;
/* ... except for tilemap colors */
for (i = 0x200;i < 0x300;i++)
- machine().shadow_table[i] = i + 0x100;
+ m_palette->shadow_table()[i] = i + 0x100;
}
@@ -691,12 +691,12 @@ static void marvins_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,
if (sx > 512-16) sx -= 512;
if (sy > 256-16) sy -= 256;
- gfx->transtable(bitmap,cliprect,
+ gfx->transtable(state->m_palette,bitmap,cliprect,
tile_number,
color,
flipx, flipy,
sx, sy,
- state->m_drawmode_table, machine.shadow_table);
+ state->m_drawmode_table, state->m_palette->shadow_table());
source+=4;
}
@@ -757,12 +757,12 @@ void snk_state::tnk3_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
if (sx > 512-size) sx -= 512;
if (sy > (m_yscroll_mask+1)-size) sy -= (m_yscroll_mask+1);
- gfx->transtable(bitmap,cliprect,
+ gfx->transtable(m_palette,bitmap,cliprect,
tile_number,
color,
xflip,yflip,
sx,sy,
- m_drawmode_table, machine().shadow_table);
+ m_drawmode_table, m_palette->shadow_table());
}
}
@@ -804,12 +804,12 @@ static void ikari_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, c
if (sx > 512-size) sx -= 512;
if (sy > 512-size) sy -= 512;
- gfx->transtable(bitmap,cliprect,
+ gfx->transtable(state->m_palette,bitmap,cliprect,
tile_number,
color,
0,0,
sx,sy,
- state->m_drawmode_table, machine.shadow_table);
+ state->m_drawmode_table, state->m_palette->shadow_table());
}
}
@@ -892,12 +892,12 @@ static void tdfever_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,
if (sx > 512-size) sx -= 512;
if (sy > 512-size) sy -= 512;
- gfx->transtable(bitmap,cliprect,
+ gfx->transtable(state->m_palette,bitmap,cliprect,
tile_number,
color,
flipx,flipy,
sx,sy,
- state->m_drawmode_table, machine.shadow_table);
+ state->m_drawmode_table, state->m_palette->shadow_table());
}
}
diff --git a/src/mame/video/snk6502.c b/src/mame/video/snk6502.c
index 725a4b379ef..096aa1debf2 100644
--- a/src/mame/video/snk6502.c
+++ b/src/mame/video/snk6502.c
@@ -27,7 +27,7 @@ PALETTE_INIT_MEMBER(snk6502_state,snk6502)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -55,7 +55,7 @@ PALETTE_INIT_MEMBER(snk6502_state,snk6502)
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- m_palette[i] = rgb_t(r, g, b);
+ m_palette_val[i] = rgb_t(r, g, b);
color_prom++;
}
@@ -63,14 +63,14 @@ PALETTE_INIT_MEMBER(snk6502_state,snk6502)
m_backcolor = 0; /* background color can be changed by the game */
for (i = 0; i < TOTAL_COLORS(0); i++)
- palette_set_color(machine(), COLOR(0, i), m_palette[i]);
+ palette.set_pen_color(COLOR(0, i), m_palette_val[i]);
for (i = 0; i < TOTAL_COLORS(1); i++)
{
if (i % 4 == 0)
- palette_set_color(machine(), COLOR(1, i), m_palette[4 * m_backcolor + 0x20]);
+ palette.set_pen_color(COLOR(1, i), m_palette_val[4 * m_backcolor + 0x20]);
else
- palette_set_color(machine(), COLOR(1, i), m_palette[i + 0x20]);
+ palette.set_pen_color(COLOR(1, i), m_palette_val[i + 0x20]);
}
}
@@ -116,7 +116,7 @@ WRITE8_MEMBER(snk6502_state::snk6502_flipscreen_w)
m_backcolor = data & 7;
for (i = 0;i < 32;i += 4)
- palette_set_color(machine(), COLOR(1, i), m_palette[4 * m_backcolor + 0x20]);
+ m_palette->set_pen_color(COLOR(1, i), m_palette_val[4 * m_backcolor + 0x20]);
}
/* bit 3 selects char bank */
@@ -198,7 +198,7 @@ PALETTE_INIT_MEMBER(snk6502_state,satansat)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -226,7 +226,7 @@ PALETTE_INIT_MEMBER(snk6502_state,satansat)
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- m_palette[i] = rgb_t(r, g, b);
+ m_palette_val[i] = rgb_t(r, g, b);
color_prom++;
}
@@ -234,14 +234,14 @@ PALETTE_INIT_MEMBER(snk6502_state,satansat)
m_backcolor = 0; /* background color can be changed by the game */
for (i = 0; i < TOTAL_COLORS(0); i++)
- palette_set_color(machine(), COLOR(0, i), m_palette[4 * (i % 4) + (i / 4)]);
+ palette.set_pen_color(COLOR(0, i), m_palette_val[4 * (i % 4) + (i / 4)]);
for (i = 0; i < TOTAL_COLORS(1); i++)
{
if (i % 4 == 0)
- palette_set_color(machine(), COLOR(1, i), m_palette[m_backcolor + 0x10]);
+ palette.set_pen_color(COLOR(1, i), m_palette_val[m_backcolor + 0x10]);
else
- palette_set_color(machine(), COLOR(1, i), m_palette[4 * (i % 4) + (i / 4) + 0x10]);
+ palette.set_pen_color(COLOR(1, i), m_palette_val[4 * (i % 4) + (i / 4) + 0x10]);
}
}
@@ -272,7 +272,7 @@ WRITE8_MEMBER(snk6502_state::satansat_backcolor_w)
m_backcolor = data & 0x03;
for (i = 0; i < 16; i += 4)
- palette_set_color(machine(), COLOR(1, i), m_palette[m_backcolor + 0x10]);
+ m_palette->set_pen_color(COLOR(1, i), m_palette_val[m_backcolor + 0x10]);
}
}
diff --git a/src/mame/video/snk68.c b/src/mame/video/snk68.c
index d33641c2199..5ae4445c971 100644
--- a/src/mame/video/snk68.c
+++ b/src/mame/video/snk68.c
@@ -168,7 +168,7 @@ WRITE16_MEMBER(snk68_state::pow_paletteram16_word_w)
g = ((newword >> 3) & 0x1e) | ((newword >> 13) & 0x01) ;
b = ((newword << 1) & 0x1e) | ((newword >> 12) & 0x01) ;
- palette_set_color_rgb(machine(),offset,pal5bit(r),pal5bit(g),pal5bit(b));
+ m_palette->set_pen_color(offset,pal5bit(r),pal5bit(g),pal5bit(b));
}
@@ -246,7 +246,7 @@ void snk68_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect,
fy = !fy;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
tile,
color,
fx, fy,
diff --git a/src/mame/video/snookr10.c b/src/mame/video/snookr10.c
index 11c8bd4374c..27114fd5d66 100644
--- a/src/mame/video/snookr10.c
+++ b/src/mame/video/snookr10.c
@@ -44,7 +44,7 @@ WRITE8_MEMBER(snookr10_state::snookr10_colorram_w)
}
-void snookr10_state::palette_init()
+PALETTE_INIT_MEMBER(snookr10_state, snookr10)
{
const UINT8 *color_prom = memregion("proms")->base();
/* GGBBBRRR */
@@ -60,7 +60,7 @@ void snookr10_state::palette_init()
2, resistances_g, weights_g, 100, 0);
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -81,7 +81,7 @@ void snookr10_state::palette_init()
bit1 = (color_prom[i] >> 7) & 0x01;
g = combine_2_weights(weights_g, bit0, bit1);
- palette_set_color(machine(), i, rgb_t(r,g,b));
+ palette.set_pen_color(i, rgb_t(r,g,b));
}
}
@@ -126,7 +126,7 @@ PALETTE_INIT_MEMBER(snookr10_state, apple10)
2, resistances_g, weights_g, 100, 0);
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -150,7 +150,7 @@ PALETTE_INIT_MEMBER(snookr10_state, apple10)
/* encrypted color matrix */
cn = BITSWAP8(i,4,5,6,7,2,3,0,1);
- palette_set_color(machine(), cn, rgb_t(r,g,b));
+ palette.set_pen_color(cn, rgb_t(r,g,b));
}
}
@@ -195,7 +195,7 @@ PALETTE_INIT_MEMBER(snookr10_state, crystalc)
2, resistances_g, weights_g, 100, 0);
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -219,7 +219,7 @@ PALETTE_INIT_MEMBER(snookr10_state, crystalc)
/* encrypted color matrix */
cn = BITSWAP8(i,7,5,6,4,3,2,1,0);
- palette_set_color(machine(), cn, rgb_t(r,g,b));
+ palette.set_pen_color(cn, rgb_t(r,g,b));
}
}
diff --git a/src/mame/video/solomon.c b/src/mame/video/solomon.c
index 06d129ebcd7..13d9ed38e6f 100644
--- a/src/mame/video/solomon.c
+++ b/src/mame/video/solomon.c
@@ -87,7 +87,7 @@ void solomon_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
}
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code, color,
flipx, flipy,
sx, sy, 0);
diff --git a/src/mame/video/sonson.c b/src/mame/video/sonson.c
index 7698705ea3c..fd239fecb71 100644
--- a/src/mame/video/sonson.c
+++ b/src/mame/video/sonson.c
@@ -39,14 +39,11 @@
***************************************************************************/
-void sonson_state::palette_init()
+PALETTE_INIT_MEMBER(sonson_state, sonson)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x20);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -74,7 +71,7 @@ void sonson_state::palette_init()
bit3 = (color_prom[i + 0x00] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -84,14 +81,14 @@ void sonson_state::palette_init()
for (i = 0; i < 0x100; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* sprites use colors 0x10-0x1f */
for (i = 0x100; i < 0x200; i++)
{
UINT8 ctabentry = (color_prom[i] & 0x0f) | 0x10;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -158,14 +155,14 @@ void sonson_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code, color,
flipx, flipy,
sx, sy, 0);
/* wrap-around */
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code, color, flipx, flipy, sx - 256, sy, 0);
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code, color, flipx, flipy, sx, sy - 256, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy, sx - 256, sy, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy, sx, sy - 256, 0);
}
}
diff --git a/src/mame/video/spbactn.c b/src/mame/video/spbactn.c
index 48e9fc3660f..b370589621e 100644
--- a/src/mame/video/spbactn.c
+++ b/src/mame/video/spbactn.c
@@ -3,12 +3,12 @@
#include "includes/spbactn.h"
-static void blendbitmaps(running_machine &machine,
+static void blendbitmaps(palette_device &palette,
bitmap_rgb32 &dest,bitmap_ind16 &src1,bitmap_ind16 &src2,
const rectangle &cliprect)
{
int y,x;
- const pen_t *paldata = machine.pens;
+ const pen_t *paldata = palette.pens();
for (y = cliprect.min_y; y <= cliprect.max_y; y++)
{
@@ -168,7 +168,7 @@ int spbactn_state::draw_video(screen_device &screen, bitmap_rgb32 &bitmap, const
spbactn_draw_sprites(screen, m_gfxdecode, m_tile_bitmap_fg, cliprect, 3, alt_sprites, m_spvideoram);
/* mix & blend the tilemaps and sprites into a 32-bit bitmap */
- blendbitmaps(machine(), bitmap, m_tile_bitmap_bg, m_tile_bitmap_fg, cliprect);
+ blendbitmaps(m_palette, bitmap, m_tile_bitmap_bg, m_tile_bitmap_fg, cliprect);
return 0;
}
diff --git a/src/mame/video/spcforce.c b/src/mame/video/spcforce.c
index 05f7c3e35db..229cf189f76 100644
--- a/src/mame/video/spcforce.c
+++ b/src/mame/video/spcforce.c
@@ -39,7 +39,7 @@ UINT32 spcforce_state::screen_update_spcforce(screen_device &screen, bitmap_ind1
sy = 248 - sy;
}
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code, col,
flip, flip,
sx, sy,0);
diff --git a/src/mame/video/spdodgeb.c b/src/mame/video/spdodgeb.c
index 1dc5d4b248c..9fc467814e5 100644
--- a/src/mame/video/spdodgeb.c
+++ b/src/mame/video/spdodgeb.c
@@ -3,13 +3,13 @@
#include "includes/spdodgeb.h"
-void spdodgeb_state::palette_init()
+PALETTE_INIT_MEMBER(spdodgeb_state, spdodgeb)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int bit0,bit1,bit2,bit3,r,g,b;
@@ -27,13 +27,13 @@ void spdodgeb_state::palette_init()
bit3 = (color_prom[0] >> 7) & 0x01;
g = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
/* blue component */
- bit0 = (color_prom[machine().total_colors()] >> 0) & 0x01;
- bit1 = (color_prom[machine().total_colors()] >> 1) & 0x01;
- bit2 = (color_prom[machine().total_colors()] >> 2) & 0x01;
- bit3 = (color_prom[machine().total_colors()] >> 3) & 0x01;
+ bit0 = (color_prom[palette.entries()] >> 0) & 0x01;
+ bit1 = (color_prom[palette.entries()] >> 1) & 0x01;
+ bit2 = (color_prom[palette.entries()] >> 2) & 0x01;
+ bit3 = (color_prom[palette.entries()] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
color_prom++;
}
}
@@ -141,7 +141,7 @@ WRITE8_MEMBER(spdodgeb_state::spdodgeb_videoram_w)
***************************************************************************/
-#define DRAW_SPRITE( order, sx, sy ) gfx->transpen(bitmap,\
+#define DRAW_SPRITE( order, sx, sy ) gfx->transpen(m_palette,bitmap,\
cliprect, \
(which+order),color+ 8 * m_sprite_palbank,flipx,flipy,sx,sy,0);
diff --git a/src/mame/video/speedatk.c b/src/mame/video/speedatk.c
index 7cd9b12d850..33a5272f122 100644
--- a/src/mame/video/speedatk.c
+++ b/src/mame/video/speedatk.c
@@ -8,14 +8,11 @@
#include "video/mc6845.h"
-void speedatk_state::palette_init()
+PALETTE_INIT_MEMBER(speedatk_state, speedatk)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x10);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x10; i++)
{
@@ -40,7 +37,7 @@ void speedatk_state::palette_init()
bit2 = (color_prom[i] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -49,7 +46,7 @@ void speedatk_state::palette_init()
for (i = 0; i < 0x100; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -102,7 +99,7 @@ UINT32 speedatk_state::screen_update_speedatk(screen_device &screen, bitmap_ind1
color = m_colorram[count] & 0x1f;
region = (m_colorram[count] & 0x10) >> 4;
- m_gfxdecode->gfx(region)->opaque(bitmap,cliprect,tile,color,m_flip_scr,m_flip_scr,x*8,y*8);
+ m_gfxdecode->gfx(region)->opaque(m_palette,bitmap,cliprect,tile,color,m_flip_scr,m_flip_scr,x*8,y*8);
count = (m_flip_scr) ? count-1 : count+1;
count&=0x3ff;
diff --git a/src/mame/video/speedbal.c b/src/mame/video/speedbal.c
index 29db8cdf9f0..b88219126dc 100644
--- a/src/mame/video/speedbal.c
+++ b/src/mame/video/speedbal.c
@@ -107,7 +107,7 @@ void speedbal_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
flipx = flipy = 1;
}
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/speedspn.c b/src/mame/video/speedspn.c
index 0d3b2eb9571..fc682c20bf4 100644
--- a/src/mame/video/speedspn.c
+++ b/src/mame/video/speedspn.c
@@ -74,7 +74,7 @@ void speedspn_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
tileno += ((attr & 0xe0) >> 5) * 0x100;
color = attr & 0x0f;
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
tileno,
color,
0,0,
@@ -89,7 +89,7 @@ UINT32 speedspn_state::screen_update_speedspn(screen_device &screen, bitmap_ind1
{
if (m_display_disable)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
diff --git a/src/mame/video/splash.c b/src/mame/video/splash.c
index 8f4609a4580..d678687befd 100644
--- a/src/mame/video/splash.c
+++ b/src/mame/video/splash.c
@@ -217,7 +217,7 @@ void splash_state::splash_draw_sprites(bitmap_ind16 &bitmap,const rectangle &cli
if (attr2 & 0x80) sx += 256;
- gfx->transpen(bitmap,cliprect,number,
+ gfx->transpen(m_palette,bitmap,cliprect,number,
0x10 + (attr2 & 0x0f),attr & 0x40,attr & 0x80,
sx-8,sy,0);
}
@@ -237,7 +237,7 @@ void splash_state::funystrp_draw_sprites(bitmap_ind16 &bitmap,const rectangle &c
if (attr2 & 0x80) sx += 256;
- gfx->transpen(bitmap,cliprect,number,
+ gfx->transpen(m_palette,bitmap,cliprect,number,
(attr2 & 0x7f),attr & 0x40,attr & 0x80,
sx-8,sy,0);
}
diff --git a/src/mame/video/sprcros2.c b/src/mame/video/sprcros2.c
index 0673608926a..26f53510ea3 100644
--- a/src/mame/video/sprcros2.c
+++ b/src/mame/video/sprcros2.c
@@ -7,14 +7,11 @@ Super Cross II (JPN Ver.)
#include "includes/sprcros2.h"
-void sprcros2_state::palette_init()
+PALETTE_INIT_MEMBER(sprcros2_state, sprcros2)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x20);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -37,9 +34,9 @@ void sprcros2_state::palette_init()
bit0 = (color_prom[i] >> 6) & 0x01;
bit1 = (color_prom[i] >> 7) & 0x01;
b = 0x47 * bit0 + 0xb8 * bit1;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -49,14 +46,14 @@ void sprcros2_state::palette_init()
for (i = 0; i < 0x100; i++)
{
UINT8 ctabentry = (color_prom[i] & 0x0f) | ((color_prom[i + 0x100] & 0x0f) << 4);
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* sprites & fg */
for (i = 0x100; i < 0x300; i++)
{
UINT8 ctabentry = color_prom[i + 0x100];
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -132,7 +129,7 @@ void sprcros2_state::video_start()
m_bgtilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(sprcros2_state::get_sprcros2_bgtile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
m_fgtilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(sprcros2_state::get_sprcros2_fgtile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
- colortable_configure_tilemap_groups(machine().colortable, m_fgtilemap, m_gfxdecode->gfx(2), 0);
+ m_palette->configure_tilemap_groups(*m_fgtilemap, *m_gfxdecode->gfx(2), 0);
}
void sprcros2_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
@@ -171,12 +168,12 @@ void sprcros2_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,cliprect,
m_spriteram[offs],
color,
flipx,flipy,
sx,sy,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, 0));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 0));
}
}
}
diff --git a/src/mame/video/sprint2.c b/src/mame/video/sprint2.c
index 794c53d41a3..2d7a9706616 100644
--- a/src/mame/video/sprint2.c
+++ b/src/mame/video/sprint2.c
@@ -8,29 +8,26 @@
#include "includes/sprint2.h"
-void sprint2_state::palette_init()
+PALETTE_INIT_MEMBER(sprint2_state, sprint2)
{
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 4);
-
- colortable_palette_set_color(machine().colortable, 0, rgb_t(0x00, 0x00, 0x00));
- colortable_palette_set_color(machine().colortable, 1, rgb_t(0x5b, 0x5b, 0x5b));
- colortable_palette_set_color(machine().colortable, 2, rgb_t(0xa4, 0xa4, 0xa4));
- colortable_palette_set_color(machine().colortable, 3, rgb_t(0xff, 0xff, 0xff));
-
- colortable_entry_set_value(machine().colortable, 0x0, 1); /* black playfield */
- colortable_entry_set_value(machine().colortable, 0x1, 0);
- colortable_entry_set_value(machine().colortable, 0x2, 1); /* white playfield */
- colortable_entry_set_value(machine().colortable, 0x3, 3);
-
- colortable_entry_set_value(machine().colortable, 0x4, 1); /* car #1 */
- colortable_entry_set_value(machine().colortable, 0x5, 3);
- colortable_entry_set_value(machine().colortable, 0x6, 1); /* car #2 */
- colortable_entry_set_value(machine().colortable, 0x7, 0);
- colortable_entry_set_value(machine().colortable, 0x8, 1); /* car #3 */
- colortable_entry_set_value(machine().colortable, 0x9, 2);
- colortable_entry_set_value(machine().colortable, 0xa, 1); /* car #4 */
- colortable_entry_set_value(machine().colortable, 0xb, 2);
+ palette.set_indirect_color(0, rgb_t(0x00, 0x00, 0x00));
+ palette.set_indirect_color(1, rgb_t(0x5b, 0x5b, 0x5b));
+ palette.set_indirect_color(2, rgb_t(0xa4, 0xa4, 0xa4));
+ palette.set_indirect_color(3, rgb_t(0xff, 0xff, 0xff));
+
+ palette.set_pen_indirect(0x0, 1); /* black playfield */
+ palette.set_pen_indirect(0x1, 0);
+ palette.set_pen_indirect(0x2, 1); /* white playfield */
+ palette.set_pen_indirect(0x3, 3);
+
+ palette.set_pen_indirect(0x4, 1); /* car #1 */
+ palette.set_pen_indirect(0x5, 3);
+ palette.set_pen_indirect(0x6, 1); /* car #2 */
+ palette.set_pen_indirect(0x7, 0);
+ palette.set_pen_indirect(0x8, 1); /* car #3 */
+ palette.set_pen_indirect(0x9, 2);
+ palette.set_pen_indirect(0xa, 1); /* car #4 */
+ palette.set_pen_indirect(0xb, 2);
}
@@ -77,7 +74,7 @@ WRITE8_MEMBER(sprint2_state::sprint2_video_ram_w)
}
-UINT8 sprint2_state::collision_check(colortable_t *colortable, rectangle& rect)
+UINT8 sprint2_state::collision_check(rectangle& rect)
{
UINT8 data = 0;
@@ -87,7 +84,7 @@ UINT8 sprint2_state::collision_check(colortable_t *colortable, 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(colortable, m_helper.pix16(y, x));
+ UINT16 a = m_palette->pen_indirect(m_helper.pix16(y, x));
if (a == 0)
data |= 0x40;
@@ -125,7 +122,7 @@ UINT32 sprint2_state::screen_update_sprint2(screen_device &screen, bitmap_ind16
for (i = 0; i < 4; i++)
{
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
get_sprite_code(video_ram, i),
i,
0, 0,
@@ -169,21 +166,21 @@ void sprint2_state::screen_eof_sprint2(screen_device &screen, bool state)
m_bg_tilemap->draw(screen, m_helper, rect, 0, 0);
- m_gfxdecode->gfx(1)->transpen(m_helper,rect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,m_helper,rect,
get_sprite_code(video_ram, i),
0,
0, 0,
get_sprite_x(video_ram, i),
get_sprite_y(video_ram, i), 1);
- m_collision[i] |= collision_check(machine().colortable, rect);
+ m_collision[i] |= collision_check(rect);
/* check for sprite-sprite collisions */
for (j = 0; j < 4; j++)
if (j != i)
{
- m_gfxdecode->gfx(1)->transpen(m_helper,rect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,m_helper,rect,
get_sprite_code(video_ram, j),
1,
0, 0,
@@ -191,14 +188,14 @@ void sprint2_state::screen_eof_sprint2(screen_device &screen, bool state)
get_sprite_y(video_ram, j), 0);
}
- m_gfxdecode->gfx(1)->transpen(m_helper,rect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,m_helper,rect,
get_sprite_code(video_ram, i),
0,
0, 0,
get_sprite_x(video_ram, i),
get_sprite_y(video_ram, i), 1);
- m_collision[i] |= collision_check(machine().colortable, rect);
+ m_collision[i] |= collision_check(rect);
}
}
}
diff --git a/src/mame/video/sprint4.c b/src/mame/video/sprint4.c
index 68eecae9767..c8e293db728 100644
--- a/src/mame/video/sprint4.c
+++ b/src/mame/video/sprint4.c
@@ -9,29 +9,26 @@ Atari Sprint 4 video emulation
#include "includes/sprint4.h"
-void sprint4_state::palette_init()
+PALETTE_INIT_MEMBER(sprint4_state, sprint4)
{
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 6);
-
- colortable_palette_set_color(machine().colortable, 0, rgb_t(0x00, 0x00, 0x00)); /* black */
- colortable_palette_set_color(machine().colortable, 1, rgb_t(0xfc, 0xdf, 0x80)); /* peach */
- colortable_palette_set_color(machine().colortable, 2, rgb_t(0xf0, 0x00, 0xf0)); /* violet */
- colortable_palette_set_color(machine().colortable, 3, rgb_t(0x00, 0xf0, 0x0f)); /* green */
- colortable_palette_set_color(machine().colortable, 4, rgb_t(0x30, 0x4f, 0xff)); /* blue */
- colortable_palette_set_color(machine().colortable, 5, rgb_t(0xff, 0xff, 0xff)); /* white */
-
- colortable_entry_set_value(machine().colortable, 0, 0);
- colortable_entry_set_value(machine().colortable, 2, 0);
- colortable_entry_set_value(machine().colortable, 4, 0);
- colortable_entry_set_value(machine().colortable, 6, 0);
- colortable_entry_set_value(machine().colortable, 8, 0);
-
- colortable_entry_set_value(machine().colortable, 1, 1);
- colortable_entry_set_value(machine().colortable, 3, 2);
- colortable_entry_set_value(machine().colortable, 5, 3);
- colortable_entry_set_value(machine().colortable, 7, 4);
- colortable_entry_set_value(machine().colortable, 9, 5);
+ palette.set_indirect_color(0, rgb_t(0x00, 0x00, 0x00)); /* black */
+ palette.set_indirect_color(1, rgb_t(0xfc, 0xdf, 0x80)); /* peach */
+ palette.set_indirect_color(2, rgb_t(0xf0, 0x00, 0xf0)); /* violet */
+ palette.set_indirect_color(3, rgb_t(0x00, 0xf0, 0x0f)); /* green */
+ palette.set_indirect_color(4, rgb_t(0x30, 0x4f, 0xff)); /* blue */
+ palette.set_indirect_color(5, rgb_t(0xff, 0xff, 0xff)); /* white */
+
+ palette.set_pen_indirect(0, 0);
+ palette.set_pen_indirect(2, 0);
+ palette.set_pen_indirect(4, 0);
+ palette.set_pen_indirect(6, 0);
+ palette.set_pen_indirect(8, 0);
+
+ palette.set_pen_indirect(1, 1);
+ palette.set_pen_indirect(3, 2);
+ palette.set_pen_indirect(5, 3);
+ palette.set_pen_indirect(7, 4);
+ palette.set_pen_indirect(9, 5);
}
@@ -74,7 +71,7 @@ UINT32 sprint4_state::screen_update_sprint4(screen_device &screen, bitmap_ind16
if (i & 1)
bank = 32;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
(code >> 3) | bank,
(attr & 0x80) ? 4 : i,
0, 0,
@@ -120,7 +117,7 @@ void sprint4_state::screen_eof_sprint4(screen_device &screen, bool state)
if (i & 1)
bank = 32;
- m_gfxdecode->gfx(1)->transpen(m_helper,rect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,m_helper,rect,
(code >> 3) | bank,
4,
0, 0,
@@ -129,7 +126,7 @@ void sprint4_state::screen_eof_sprint4(screen_device &screen, bool state)
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(machine().colortable, m_helper.pix16(y, x)) != 0)
+ if (m_palette->pen_indirect(m_helper.pix16(y, x)) != 0)
m_collision[i] = 1;
}
diff --git a/src/mame/video/sprint8.c b/src/mame/video/sprint8.c
index 546a940cfeb..3c4ff9db92c 100644
--- a/src/mame/video/sprint8.c
+++ b/src/mame/video/sprint8.c
@@ -8,27 +8,24 @@ Atari Sprint 8 video emulation
#include "includes/sprint8.h"
-void sprint8_state::palette_init()
+PALETTE_INIT_MEMBER(sprint8_state, sprint8)
{
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x12);
-
for (i = 0; i < 0x10; i++)
{
- colortable_entry_set_value(machine().colortable, 2 * i + 0, 0x10);
- colortable_entry_set_value(machine().colortable, 2 * i + 1, i);
+ palette.set_pen_indirect(2 * i + 0, 0x10);
+ palette.set_pen_indirect(2 * i + 1, i);
}
- colortable_entry_set_value(machine().colortable, 0x20, 0x10);
- colortable_entry_set_value(machine().colortable, 0x21, 0x10);
- colortable_entry_set_value(machine().colortable, 0x22, 0x10);
- colortable_entry_set_value(machine().colortable, 0x23, 0x11);
+ palette.set_pen_indirect(0x20, 0x10);
+ palette.set_pen_indirect(0x21, 0x10);
+ palette.set_pen_indirect(0x22, 0x10);
+ palette.set_pen_indirect(0x23, 0x11);
}
-void sprint8_state::set_pens(sprint8_state *state, colortable_t *colortable)
+void sprint8_state::set_pens()
{
int i;
@@ -36,30 +33,30 @@ void sprint8_state::set_pens(sprint8_state *state, colortable_t *colortable)
{
if (*m_team & 1)
{
- colortable_palette_set_color(colortable, i + 0, rgb_t(0xff, 0x00, 0x00)); /* red */
- colortable_palette_set_color(colortable, i + 1, rgb_t(0x00, 0x00, 0xff)); /* blue */
- colortable_palette_set_color(colortable, i + 2, rgb_t(0xff, 0xff, 0x00)); /* yellow */
- colortable_palette_set_color(colortable, i + 3, rgb_t(0x00, 0xff, 0x00)); /* green */
- colortable_palette_set_color(colortable, i + 4, rgb_t(0xff, 0x00, 0xff)); /* magenta */
- colortable_palette_set_color(colortable, i + 5, rgb_t(0xe0, 0xc0, 0x70)); /* puce */
- colortable_palette_set_color(colortable, i + 6, rgb_t(0x00, 0xff, 0xff)); /* cyan */
- colortable_palette_set_color(colortable, i + 7, rgb_t(0xff, 0xaa, 0xaa)); /* pink */
+ m_palette->set_indirect_color(i + 0, rgb_t(0xff, 0x00, 0x00)); /* red */
+ m_palette->set_indirect_color(i + 1, rgb_t(0x00, 0x00, 0xff)); /* blue */
+ m_palette->set_indirect_color(i + 2, rgb_t(0xff, 0xff, 0x00)); /* yellow */
+ m_palette->set_indirect_color(i + 3, rgb_t(0x00, 0xff, 0x00)); /* green */
+ m_palette->set_indirect_color(i + 4, rgb_t(0xff, 0x00, 0xff)); /* magenta */
+ m_palette->set_indirect_color(i + 5, rgb_t(0xe0, 0xc0, 0x70)); /* puce */
+ m_palette->set_indirect_color(i + 6, rgb_t(0x00, 0xff, 0xff)); /* cyan */
+ m_palette->set_indirect_color(i + 7, rgb_t(0xff, 0xaa, 0xaa)); /* pink */
}
else
{
- colortable_palette_set_color(colortable, i + 0, rgb_t(0xff, 0x00, 0x00)); /* red */
- colortable_palette_set_color(colortable, i + 1, rgb_t(0x00, 0x00, 0xff)); /* blue */
- colortable_palette_set_color(colortable, i + 2, rgb_t(0xff, 0x00, 0x00)); /* red */
- colortable_palette_set_color(colortable, i + 3, rgb_t(0x00, 0x00, 0xff)); /* blue */
- colortable_palette_set_color(colortable, i + 4, rgb_t(0xff, 0x00, 0x00)); /* red */
- colortable_palette_set_color(colortable, i + 5, rgb_t(0x00, 0x00, 0xff)); /* blue */
- colortable_palette_set_color(colortable, i + 6, rgb_t(0xff, 0x00, 0x00)); /* red */
- colortable_palette_set_color(colortable, i + 7, rgb_t(0x00, 0x00, 0xff)); /* blue */
+ m_palette->set_indirect_color(i + 0, rgb_t(0xff, 0x00, 0x00)); /* red */
+ m_palette->set_indirect_color(i + 1, rgb_t(0x00, 0x00, 0xff)); /* blue */
+ m_palette->set_indirect_color(i + 2, rgb_t(0xff, 0x00, 0x00)); /* red */
+ m_palette->set_indirect_color(i + 3, rgb_t(0x00, 0x00, 0xff)); /* blue */
+ m_palette->set_indirect_color(i + 4, rgb_t(0xff, 0x00, 0x00)); /* red */
+ m_palette->set_indirect_color(i + 5, rgb_t(0x00, 0x00, 0xff)); /* blue */
+ m_palette->set_indirect_color(i + 6, rgb_t(0xff, 0x00, 0x00)); /* red */
+ m_palette->set_indirect_color(i + 7, rgb_t(0x00, 0x00, 0xff)); /* blue */
}
}
- colortable_palette_set_color(colortable, 0x10, rgb_t(0x00, 0x00, 0x00));
- colortable_palette_set_color(colortable, 0x11, rgb_t(0xff, 0xff, 0xff));
+ m_palette->set_indirect_color(0x10, rgb_t(0x00, 0x00, 0x00));
+ m_palette->set_indirect_color(0x11, rgb_t(0xff, 0xff, 0xff));
}
@@ -138,7 +135,7 @@ void sprint8_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
if (code & 0x80)
x |= 0x100;
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code ^ 7,
i,
!(code & 0x10), !(code & 0x08),
@@ -155,7 +152,7 @@ TIMER_CALLBACK_MEMBER(sprint8_state::sprint8_collision_callback)
UINT32 sprint8_state::screen_update_sprint8(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- set_pens(this, machine().colortable);
+ set_pens();
m_tilemap1->draw(screen, bitmap, cliprect, 0, 0);
draw_sprites(bitmap, cliprect);
return 0;
@@ -186,7 +183,7 @@ void sprint8_state::screen_eof_sprint8(screen_device &screen, bool state)
if (p1[x] != 0x20 && p2[x] == 0x23)
machine().scheduler().timer_set(m_screen->time_until_pos(y + 24, x),
timer_expired_delegate(FUNC(sprint8_state::sprint8_collision_callback),this),
- colortable_entry_get_value(machine().colortable, p1[x]));
+ m_palette->pen_indirect(p1[x]));
}
}
}
diff --git a/src/mame/video/srmp2.c b/src/mame/video/srmp2.c
index 8bb0811c859..bd059fea2a0 100644
--- a/src/mame/video/srmp2.c
+++ b/src/mame/video/srmp2.c
@@ -13,12 +13,12 @@ PALETTE_INIT_MEMBER(srmp2_state,srmp2)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int col;
- col = (color_prom[i] << 8) + color_prom[i + machine().total_colors()];
- palette_set_color_rgb(machine(),i ^ 0x0f,pal5bit(col >> 10),pal5bit(col >> 5),pal5bit(col >> 0));
+ col = (color_prom[i] << 8) + color_prom[i + palette.entries()];
+ palette.set_pen_color(i ^ 0x0f,pal5bit(col >> 10),pal5bit(col >> 5),pal5bit(col >> 0));
}
}
@@ -28,12 +28,12 @@ PALETTE_INIT_MEMBER(srmp2_state,srmp3)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int col;
- col = (color_prom[i] << 8) + color_prom[i + machine().total_colors()];
- palette_set_color_rgb(machine(),i,pal5bit(col >> 10),pal5bit(col >> 5),pal5bit(col >> 0));
+ col = (color_prom[i] << 8) + color_prom[i + palette.entries()];
+ palette.set_pen_color(i,pal5bit(col >> 10),pal5bit(col >> 5),pal5bit(col >> 0));
}
}
diff --git a/src/mame/video/srumbler.c b/src/mame/video/srumbler.c
index a722cebd741..9b11ca5a9ee 100644
--- a/src/mame/video/srumbler.c
+++ b/src/mame/video/srumbler.c
@@ -144,7 +144,7 @@ void srumbler_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
flipy = !flipy;
}
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code,
colour,
flip_screen(),flipy,
diff --git a/src/mame/video/sshangha.c b/src/mame/video/sshangha.c
index 37f3c7b0dc5..ff8b84d54c1 100644
--- a/src/mame/video/sshangha.c
+++ b/src/mame/video/sshangha.c
@@ -38,7 +38,7 @@ UINT32 sshangha_state::screen_update_sshangha(screen_device &screen, bitmap_rgb3
machine().tilemap().set_flip_all(flip_screen_x() ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
m_deco_tilegen1->pf_update(m_pf1_rowscroll, m_pf2_rowscroll);
diff --git a/src/mame/video/sslam.c b/src/mame/video/sslam.c
index 5f450c00e8c..f0468f0e392 100644
--- a/src/mame/video/sslam.c
+++ b/src/mame/video/sslam.c
@@ -19,7 +19,7 @@ WRITE16_MEMBER(sslam_state::sslam_paletteram_w)
g |= ((val & 0x04) >> 2);
b |= ((val & 0x02) >> 1);
- palette_set_color_rgb(machine(), offset, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(offset, pal5bit(r), pal5bit(g), pal5bit(b));
}
void sslam_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -57,28 +57,28 @@ void sslam_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
{
if (flipx)
{
- gfx->transpen(bitmap,cliprect,number, colr,1,0,xpos+8,ypos,0);
- gfx->transpen(bitmap,cliprect,number+1,colr,1,0,xpos+8,ypos+8,0);
- gfx->transpen(bitmap,cliprect,number+2,colr,1,0,xpos, ypos,0);
- gfx->transpen(bitmap,cliprect,number+3,colr,1,0,xpos, ypos+8,0);
+ gfx->transpen(m_palette,bitmap,cliprect,number, colr,1,0,xpos+8,ypos,0);
+ gfx->transpen(m_palette,bitmap,cliprect,number+1,colr,1,0,xpos+8,ypos+8,0);
+ gfx->transpen(m_palette,bitmap,cliprect,number+2,colr,1,0,xpos, ypos,0);
+ gfx->transpen(m_palette,bitmap,cliprect,number+3,colr,1,0,xpos, ypos+8,0);
}
else
{
- gfx->transpen(bitmap,cliprect,number, colr,0,0,xpos, ypos,0);
- gfx->transpen(bitmap,cliprect,number+1,colr,0,0,xpos, ypos+8,0);
- gfx->transpen(bitmap,cliprect,number+2,colr,0,0,xpos+8,ypos,0);
- gfx->transpen(bitmap,cliprect,number+3,colr,0,0,xpos+8,ypos+8,0);
+ gfx->transpen(m_palette,bitmap,cliprect,number, colr,0,0,xpos, ypos,0);
+ gfx->transpen(m_palette,bitmap,cliprect,number+1,colr,0,0,xpos, ypos+8,0);
+ gfx->transpen(m_palette,bitmap,cliprect,number+2,colr,0,0,xpos+8,ypos,0);
+ gfx->transpen(m_palette,bitmap,cliprect,number+3,colr,0,0,xpos+8,ypos+8,0);
}
}
else
{
if (flipx)
{
- gfx->transpen(bitmap,cliprect,number ^ 2,colr,1,0,xpos,ypos,0);
+ gfx->transpen(m_palette,bitmap,cliprect,number ^ 2,colr,1,0,xpos,ypos,0);
}
else
{
- gfx->transpen(bitmap,cliprect,number,colr,0,0,xpos,ypos,0);
+ gfx->transpen(m_palette,bitmap,cliprect,number,colr,0,0,xpos,ypos,0);
}
}
@@ -178,7 +178,7 @@ UINT32 sslam_state::screen_update_sslam(screen_device &screen, bitmap_ind16 &bit
{
if (!(m_regs[6] & 1))
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
@@ -216,7 +216,7 @@ UINT32 sslam_state::screen_update_powerbls(screen_device &screen, bitmap_ind16 &
{
if (!(m_regs[6] & 1))
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
diff --git a/src/mame/video/ssozumo.c b/src/mame/video/ssozumo.c
index d3dfbb470b1..d818aa9ca8f 100644
--- a/src/mame/video/ssozumo.c
+++ b/src/mame/video/ssozumo.c
@@ -12,7 +12,7 @@ Driver by Takahiro Nogi (nogi@kt.rim.or.jp) 1999/10/04
/**************************************************************************/
-void ssozumo_state::palette_init()
+PALETTE_INIT_MEMBER(ssozumo_state, ssozumo)
{
const UINT8 *color_prom = memregion("proms")->base();
int bit0, bit1, bit2, bit3, r, g, b;
@@ -36,7 +36,7 @@ void ssozumo_state::palette_init()
bit3 = (color_prom[64] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
color_prom++;
}
}
@@ -95,7 +95,7 @@ WRITE8_MEMBER(ssozumo_state::ssozumo_paletteram_w)
bit3 = (val >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- palette_set_color(machine(), offs2 + 64, rgb_t(r, g, b));
+ m_palette->set_pen_color(offs2 + 64, rgb_t(r, g, b));
}
WRITE8_MEMBER(ssozumo_state::ssozumo_scroll_w)
@@ -161,7 +161,7 @@ void ssozumo_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
}
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code, color,
flipx, flipy,
sx, sy, 0);
diff --git a/src/mame/video/sspeedr.c b/src/mame/video/sspeedr.c
index cb80cb799b9..c2a7b41f4e5 100644
--- a/src/mame/video/sspeedr.c
+++ b/src/mame/video/sspeedr.c
@@ -197,7 +197,7 @@ void sspeedr_state::draw_drones(bitmap_ind16 &bitmap, const rectangle &cliprect)
y = 0xf0 - m_drones_vert[i >> 1];
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code[i] ^ m_toggle,
0,
0, 0,
@@ -227,7 +227,7 @@ void sspeedr_state::draw_driver(bitmap_ind16 &bitmap, const rectangle &cliprect)
y = 0xf0 - m_driver_vert;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
m_driver_pic,
0,
0, 0,
diff --git a/src/mame/video/ssrj.c b/src/mame/video/ssrj.c
index 686e748bb98..9561f75da86 100644
--- a/src/mame/video/ssrj.c
+++ b/src/mame/video/ssrj.c
@@ -249,7 +249,7 @@ void ssrj_state::draw_objects(bitmap_ind16 &bitmap, const rectangle &cliprect )
int offs = (i * 5 + k) * 64 + (31 - j) * 2;
code = m_vram3[offs] + 256 * m_vram3[offs + 1];
- m_gfxdecode->gfx(0)->transpen(bitmap,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,
cliprect,
code&1023,
((code>>12)&0x3)+8,
@@ -265,12 +265,12 @@ void ssrj_state::draw_objects(bitmap_ind16 &bitmap, const rectangle &cliprect )
}
-void ssrj_state::palette_init()
+PALETTE_INIT_MEMBER(ssrj_state, ssrj)
{
int i, j;
for(i=0; i<4*4; i++)
for(j=0; j<8; j++)
- palette_set_color_rgb(machine(), i*8+j, fakecols[i][j][0], fakecols[i][j][1], fakecols[i][j][2]);
+ palette.set_pen_color(i*8+j, fakecols[i][j][0], fakecols[i][j][1], fakecols[i][j][2]);
}
UINT32 ssrj_state::screen_update_ssrj(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
diff --git a/src/mame/video/ssv.c b/src/mame/video/ssv.c
index 12cbd39ff92..3ca102c9bea 100644
--- a/src/mame/video/ssv.c
+++ b/src/mame/video/ssv.c
@@ -402,7 +402,7 @@ WRITE16_MEMBER(ssv_state::paletteram16_xrgb_swap_word_w)
g = data1 >> 8;
b = data1 & 0xff;
- palette_set_color(machine(), offset>>1, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset>>1, rgb_t(r, g, b));
}
/***************************************************************************
diff --git a/src/mame/video/st0016.c b/src/mame/video/st0016.c
index 36a061ace38..747a65220f1 100644
--- a/src/mame/video/st0016.c
+++ b/src/mame/video/st0016.c
@@ -99,8 +99,8 @@ WRITE8_MEMBER(st0016_state::st0016_palette_ram_w)
st0016_paletteram[ST0016_PAL_BANK_SIZE*st0016_pal_bank+offset]=data;
val=st0016_paletteram[color*2]+(st0016_paletteram[color*2+1]<<8);
if(!color)
- palette_set_color_rgb(machine(),UNUSED_PEN,pal5bit(val >> 0),pal5bit(val >> 5),pal5bit(val >> 10)); /* same as color 0 - bg ? */
- palette_set_color_rgb(machine(),color,pal5bit(val >> 0),pal5bit(val >> 5),pal5bit(val >> 10));
+ m_palette->set_pen_color(UNUSED_PEN,pal5bit(val >> 0),pal5bit(val >> 5),pal5bit(val >> 10)); /* same as color 0 - bg ? */
+ m_palette->set_pen_color(color,pal5bit(val >> 0),pal5bit(val >> 5),pal5bit(val >> 10));
}
READ8_MEMBER(st0016_state::st0016_character_ram_r)
@@ -509,7 +509,7 @@ void st0016_state::draw_bgmap(bitmap_ind16 &bitmap,const rectangle &cliprect, in
if(priority)
{
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/st0020.c b/src/mame/video/st0020.c
index aadca0551c0..ae9adc13387 100644
--- a/src/mame/video/st0020.c
+++ b/src/mame/video/st0020.c
@@ -14,7 +14,8 @@ const device_type ST0020_SPRITES = &device_creator<st0020_device>;
st0020_device::st0020_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, ST0020_SPRITES, "st0020_device", tag, owner, clock, "st0020", __FILE__),
- m_gfxdecode(*this)
+ m_gfxdecode(*this),
+ m_palette(*this)
{
m_is_st0032 = 0;
m_is_jclub2 = 0;
@@ -30,6 +31,16 @@ void st0020_device::static_set_gfxdecode_tag(device_t &device, const char *tag)
downcast<st0020_device &>(device).m_gfxdecode.set_tag(tag);
}
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void st0020_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<st0020_device &>(device).m_palette.set_tag(tag);
+}
+
void st0020_device::set_is_st0032(device_t &device, int is_st0032)
{
st0020_device &dev = downcast<st0020_device &>(device);
@@ -67,7 +78,7 @@ void st0020_device::device_start()
if (m_gfxdecode->gfx(m_gfx_index) == 0)
break;
- m_gfxdecode->set_gfx(m_gfx_index, auto_alloc(machine(), gfx_element(machine(), layout_16x8x8_2, (UINT8 *)m_st0020_gfxram, machine().total_colors() / 64, 0)));
+ m_gfxdecode->set_gfx(m_gfx_index, auto_alloc(machine(), gfx_element(machine(), layout_16x8x8_2, (UINT8 *)m_st0020_gfxram, m_palette->entries() / 64, 0)));
m_gfxdecode->gfx(m_gfx_index)->set_granularity(64); /* 256 colour sprites with palette selectable on 64 colour boundaries */
@@ -382,7 +393,7 @@ void st0020_device::st0020_draw_zooming_sprites(running_machine &machine, bitmap
{
for (y = ystart; y != yend; y += yinc)
{
- m_gfxdecode->gfx(m_gfx_index)->zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_gfx_index)->zoom_transpen(m_palette,bitmap,cliprect,
code++,
color,
flipx, flipy,
diff --git a/src/mame/video/st0020.h b/src/mame/video/st0020.h
index f313441ec7b..2ba2c8c0ead 100644
--- a/src/mame/video/st0020.h
+++ b/src/mame/video/st0020.h
@@ -8,6 +8,7 @@ public:
// static configuration
static void static_set_gfxdecode_tag(device_t &device, const char *tag);
+ static void static_set_palette_tag(device_t &device, const char *tag);
static void set_is_st0032(device_t &device, int is_st0032);
static void set_is_jclub2o(device_t &device, int is_jclub2o);
@@ -43,6 +44,7 @@ private:
DECLARE_READ16_MEMBER(st0020_blit_r);
DECLARE_WRITE16_MEMBER(st0020_blit_w);
required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
};
#define ST0020_ST0032_BYTESWAP_DATA \
@@ -54,3 +56,5 @@ extern const device_type ST0020_SPRITES;
#define MCFG_ST0020_SPRITES_GFXDECODE(_gfxtag) \
st0020_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+#define MCFG_ST0020_SPRITES_PALETTE(_palette_tag) \
+ st0020_device::static_set_palette_tag(*device, "^" _palette_tag);
diff --git a/src/mame/video/stactics.c b/src/mame/video/stactics.c
index 42d7ad0404f..e71c076105a 100644
--- a/src/mame/video/stactics.c
+++ b/src/mame/video/stactics.c
@@ -78,7 +78,7 @@ PALETTE_INIT_MEMBER(stactics_state,stactics)
/* blue component */
int b = 0xff * bit2;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -403,8 +403,8 @@ MACHINE_CONFIG_FRAGMENT( stactics_video )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(stactics_state, screen_update_stactics)
- MCFG_PALETTE_LENGTH(0x400)
+ MCFG_PALETTE_ADD("palette", 0x400)
- MCFG_PALETTE_INIT_OVERRIDE(stactics_state,stactics)
+ MCFG_PALETTE_INIT_OWNER(stactics_state,stactics)
MCFG_VIDEO_START_OVERRIDE(stactics_state,stactics)
MACHINE_CONFIG_END
diff --git a/src/mame/video/starcrus.c b/src/mame/video/starcrus.c
index 39b5ffcb0dc..f886e9f21fe 100644
--- a/src/mame/video/starcrus.c
+++ b/src/mame/video/starcrus.c
@@ -165,7 +165,7 @@ int starcrus_state::collision_check_s1s2()
/* Draw ship 1 */
- m_gfxdecode->gfx(8+((m_s1_sprite&0x04)>>2))->opaque(*m_ship1_vid,
+ m_gfxdecode->gfx(8+((m_s1_sprite&0x04)>>2))->opaque(m_palette,*m_ship1_vid,
clip,
(m_s1_sprite&0x03)^0x03,
0,
@@ -174,7 +174,7 @@ int starcrus_state::collision_check_s1s2()
/* Draw ship 2 */
- m_gfxdecode->gfx(10+((m_s2_sprite&0x04)>>2))->opaque(*m_ship2_vid,
+ m_gfxdecode->gfx(10+((m_s2_sprite&0x04)>>2))->opaque(m_palette,*m_ship2_vid,
clip,
(m_s2_sprite&0x03)^0x03,
0,
@@ -216,7 +216,7 @@ int starcrus_state::collision_check_p1p2()
{
/* Draw score/projectile 1 */
- m_gfxdecode->gfx((m_p1_sprite&0x0c)>>2)->opaque(*m_proj1_vid,
+ m_gfxdecode->gfx((m_p1_sprite&0x0c)>>2)->opaque(m_palette,*m_proj1_vid,
clip,
(m_p1_sprite&0x03)^0x03,
0,
@@ -228,7 +228,7 @@ int starcrus_state::collision_check_p1p2()
{
/* Draw score/projectile 2 */
- m_gfxdecode->gfx(4+((m_p2_sprite&0x0c)>>2))->opaque(*m_proj2_vid,
+ m_gfxdecode->gfx(4+((m_p2_sprite&0x0c)>>2))->opaque(m_palette,*m_proj2_vid,
clip,
(m_p2_sprite&0x03)^0x03,
0,
@@ -270,7 +270,7 @@ int starcrus_state::collision_check_s1p1p2()
/* Draw ship 1 */
- m_gfxdecode->gfx(8+((m_s1_sprite&0x04)>>2))->opaque(*m_ship1_vid,
+ m_gfxdecode->gfx(8+((m_s1_sprite&0x04)>>2))->opaque(m_palette,*m_ship1_vid,
clip,
(m_s1_sprite&0x03)^0x03,
0,
@@ -281,7 +281,7 @@ int starcrus_state::collision_check_s1p1p2()
{
/* Draw projectile 1 */
- m_gfxdecode->gfx((m_p1_sprite&0x0c)>>2)->opaque(*m_proj1_vid,
+ m_gfxdecode->gfx((m_p1_sprite&0x0c)>>2)->opaque(m_palette,*m_proj1_vid,
clip,
(m_p1_sprite&0x03)^0x03,
0,
@@ -293,7 +293,7 @@ int starcrus_state::collision_check_s1p1p2()
{
/* Draw projectile 2 */
- m_gfxdecode->gfx(4+((m_p2_sprite&0x0c)>>2))->opaque(*m_proj2_vid,
+ m_gfxdecode->gfx(4+((m_p2_sprite&0x0c)>>2))->opaque(m_palette,*m_proj2_vid,
clip,
(m_p2_sprite&0x03)^0x03,
0,
@@ -341,7 +341,7 @@ int starcrus_state::collision_check_s2p1p2()
/* Draw ship 2 */
- m_gfxdecode->gfx(10+((m_s2_sprite&0x04)>>2))->opaque(*m_ship2_vid,
+ m_gfxdecode->gfx(10+((m_s2_sprite&0x04)>>2))->opaque(m_palette,*m_ship2_vid,
clip,
(m_s2_sprite&0x03)^0x03,
0,
@@ -352,7 +352,7 @@ int starcrus_state::collision_check_s2p1p2()
{
/* Draw projectile 1 */
- m_gfxdecode->gfx((m_p1_sprite&0x0c)>>2)->opaque(*m_proj1_vid,
+ m_gfxdecode->gfx((m_p1_sprite&0x0c)>>2)->opaque(m_palette,*m_proj1_vid,
clip,
(m_p1_sprite&0x03)^0x03,
0,
@@ -364,7 +364,7 @@ int starcrus_state::collision_check_s2p1p2()
{
/* Draw projectile 2 */
- m_gfxdecode->gfx(4+((m_p2_sprite&0x0c)>>2))->opaque(*m_proj2_vid,
+ m_gfxdecode->gfx(4+((m_p2_sprite&0x0c)>>2))->opaque(m_palette,*m_proj2_vid,
clip,
(m_p2_sprite&0x03)^0x03,
0,
@@ -394,7 +394,7 @@ UINT32 starcrus_state::screen_update_starcrus(screen_device &screen, bitmap_ind1
/* Draw ship 1 */
- m_gfxdecode->gfx(8+((m_s1_sprite&0x04)>>2))->transpen(bitmap,
+ m_gfxdecode->gfx(8+((m_s1_sprite&0x04)>>2))->transpen(m_palette,bitmap,
cliprect,
(m_s1_sprite&0x03)^0x03,
0,
@@ -404,7 +404,7 @@ UINT32 starcrus_state::screen_update_starcrus(screen_device &screen, bitmap_ind1
/* Draw ship 2 */
- m_gfxdecode->gfx(10+((m_s2_sprite&0x04)>>2))->transpen(bitmap,
+ m_gfxdecode->gfx(10+((m_s2_sprite&0x04)>>2))->transpen(m_palette,bitmap,
cliprect,
(m_s2_sprite&0x03)^0x03,
0,
@@ -414,7 +414,7 @@ UINT32 starcrus_state::screen_update_starcrus(screen_device &screen, bitmap_ind1
/* Draw score/projectile 1 */
- m_gfxdecode->gfx((m_p1_sprite&0x0c)>>2)->transpen(bitmap,
+ m_gfxdecode->gfx((m_p1_sprite&0x0c)>>2)->transpen(m_palette,bitmap,
cliprect,
(m_p1_sprite&0x03)^0x03,
0,
@@ -424,7 +424,7 @@ UINT32 starcrus_state::screen_update_starcrus(screen_device &screen, bitmap_ind1
/* Draw score/projectile 2 */
- m_gfxdecode->gfx(4+((m_p2_sprite&0x0c)>>2))->transpen(bitmap,
+ m_gfxdecode->gfx(4+((m_p2_sprite&0x0c)>>2))->transpen(m_palette,bitmap,
cliprect,
(m_p2_sprite&0x03)^0x03,
0,
diff --git a/src/mame/video/starshp1.c b/src/mame/video/starshp1.c
index b23d0e2053d..fdad6cb2400 100644
--- a/src/mame/video/starshp1.c
+++ b/src/mame/video/starshp1.c
@@ -8,20 +8,20 @@ Atari Starship 1 video emulation
#include "includes/starshp1.h"
-void starshp1_state::set_pens(colortable_t *colortable)
+void starshp1_state::set_pens()
{
- colortable_palette_set_color(colortable, m_inverse ? 7 : 0, rgb_t(0x00, 0x00, 0x00));
- colortable_palette_set_color(colortable, m_inverse ? 6 : 1, rgb_t(0x1e, 0x1e, 0x1e));
- colortable_palette_set_color(colortable, m_inverse ? 5 : 2, rgb_t(0x4e, 0x4e, 0x4e));
- colortable_palette_set_color(colortable, m_inverse ? 4 : 3, rgb_t(0x6c, 0x6c, 0x6c));
- colortable_palette_set_color(colortable, m_inverse ? 3 : 4, rgb_t(0x93, 0x93, 0x93));
- colortable_palette_set_color(colortable, m_inverse ? 2 : 5, rgb_t(0xb1, 0xb1, 0xb1));
- colortable_palette_set_color(colortable, m_inverse ? 1 : 6, rgb_t(0xe1, 0xe1, 0xe1));
- colortable_palette_set_color(colortable, m_inverse ? 0 : 7, rgb_t(0xff, 0xff, 0xff));
+ m_palette->set_indirect_color(m_inverse ? 7 : 0, rgb_t(0x00, 0x00, 0x00));
+ m_palette->set_indirect_color(m_inverse ? 6 : 1, rgb_t(0x1e, 0x1e, 0x1e));
+ m_palette->set_indirect_color(m_inverse ? 5 : 2, rgb_t(0x4e, 0x4e, 0x4e));
+ m_palette->set_indirect_color(m_inverse ? 4 : 3, rgb_t(0x6c, 0x6c, 0x6c));
+ m_palette->set_indirect_color(m_inverse ? 3 : 4, rgb_t(0x93, 0x93, 0x93));
+ m_palette->set_indirect_color(m_inverse ? 2 : 5, rgb_t(0xb1, 0xb1, 0xb1));
+ m_palette->set_indirect_color(m_inverse ? 1 : 6, rgb_t(0xe1, 0xe1, 0xe1));
+ m_palette->set_indirect_color(m_inverse ? 0 : 7, rgb_t(0xff, 0xff, 0xff));
}
-void starshp1_state::palette_init()
+PALETTE_INIT_MEMBER(starshp1_state, starshp1)
{
int i;
@@ -37,11 +37,8 @@ void starshp1_state::palette_init()
5, 7 /* 0x11 - circle */
};
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 8);
-
for (i = 0; i < sizeof(colortable_source) / sizeof(colortable_source[0]); i++)
- colortable_entry_set_value(machine().colortable, i, colortable_source[i]);
+ palette.set_pen_indirect(i, colortable_source[i]);
}
@@ -183,7 +180,7 @@ void starshp1_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
{
int code = (m_obj_ram[i] & 0xf) ^ 0xf;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code % 8,
code / 8,
0, 0,
@@ -209,7 +206,7 @@ void starshp1_state::draw_spaceship(bitmap_ind16 &bitmap, const rectangle &clipr
if (y <= 0)
y -= (yzoom * m_ship_voffset) >> 16;
- m_gfxdecode->gfx(2)->zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->zoom_transpen(m_palette,bitmap,cliprect,
m_ship_picture & 0x03,
m_ship_explode,
m_ship_picture & 0x80, 0,
@@ -347,7 +344,7 @@ int starshp1_state::circle_collision(const rectangle &rect)
UINT32 starshp1_state::screen_update_starshp1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- set_pens(machine().colortable);
+ set_pens();
bitmap.fill(0, cliprect);
diff --git a/src/mame/video/stfight.c b/src/mame/video/stfight.c
index 9798b5fc083..424bdcafa05 100644
--- a/src/mame/video/stfight.c
+++ b/src/mame/video/stfight.c
@@ -30,40 +30,37 @@
*/
-void stfight_state::palette_init()
+PALETTE_INIT_MEMBER(stfight_state, stfight)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
/* text uses colors 0xc0-0xcf */
for (i = 0; i < 0x40; i++)
{
UINT8 ctabentry = (color_prom[i] & 0x0f) | 0xc0;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* fg uses colors 0x40-0x7f */
for (i = 0x40; i < 0x140; i++)
{
UINT8 ctabentry = (color_prom[i + 0x1c0] & 0x0f) | ((color_prom[i + 0x0c0] & 0x03) << 4) | 0x40;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* bg uses colors 0-0x3f */
for (i = 0x140; i < 0x240; i++)
{
UINT8 ctabentry = (color_prom[i + 0x2c0] & 0x0f) | ((color_prom[i + 0x1c0] & 0x03) << 4);
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* bg uses colors 0x80-0xbf */
for (i = 0x240; i < 0x340; i++)
{
UINT8 ctabentry = (color_prom[i + 0x3c0] & 0x0f) | ((color_prom[i + 0x2c0] & 0x03) << 4) | 0x80;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -77,7 +74,7 @@ void stfight_state::set_pens()
UINT16 data = m_generic_paletteram_8[i] | (m_generic_paletteram2_8[i] << 8);
rgb_t color = rgb_t(pal4bit(data >> 4), pal4bit(data >> 0), pal4bit(data >> 8));
- colortable_palette_set_color(machine().colortable, i, color);
+ m_palette->set_indirect_color(i, color);
}
}
@@ -176,7 +173,7 @@ VIDEO_START_MEMBER(stfight_state,stfight)
m_tx_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(stfight_state::get_tx_tile_info),this),TILEMAP_SCAN_ROWS, 8,8,32,32);
m_fg_tilemap->set_transparent_pen(0x0f);
- colortable_configure_tilemap_groups(machine().colortable, m_tx_tilemap, m_gfxdecode->gfx(0), 0xcf);
+ m_palette->configure_tilemap_groups(*m_tx_tilemap, *m_gfxdecode->gfx(0), 0xcf);
}
VIDEO_START_MEMBER(stfight_state,cshooter)
@@ -186,7 +183,7 @@ VIDEO_START_MEMBER(stfight_state,cshooter)
m_tx_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(stfight_state::get_cshooter_tx_tile_info),this),TILEMAP_SCAN_ROWS, 8,8,32,32);
m_fg_tilemap->set_transparent_pen(0x0f);
- colortable_configure_tilemap_groups(machine().colortable, m_tx_tilemap, m_gfxdecode->gfx(0), 0xcf);
+ m_palette->configure_tilemap_groups(*m_tx_tilemap, *m_gfxdecode->gfx(0), 0xcf);
}
@@ -306,7 +303,7 @@ void stfight_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, co
code = m_sprite_base + m_sprite_ram[offs];
- m_gfxdecode->gfx(4)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(4)->prio_transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flip_screen(),
@@ -355,10 +352,10 @@ void stfight_state::cshooter_draw_sprites(screen_device &screen, bitmap_ind16 &b
tile_low += (tile_low > 0x9) ? 0x37 : 0x30;
tile_high += (tile_high > 0x9) ? 0x37 : 0x30;
- m_gfxdecode->gfx(0)->prio_transpen(bitmap,cliprect, tile_high << 1, color, flipx, 0, m_sprite_ram[i+3],m_sprite_ram[i+2],screen.priority(),pri ? 0x02 : 0,0x00);
- m_gfxdecode->gfx(0)->prio_transpen(bitmap,cliprect, tile_high << 1, color, flipx, 0, m_sprite_ram[i+3]+8,m_sprite_ram[i+2],screen.priority(),pri ? 0x02 : 0,0x00);
- m_gfxdecode->gfx(0)->prio_transpen(bitmap,cliprect, tile_low << 1, color, flipx, 0, m_sprite_ram[i+3]+8,m_sprite_ram[i+2]+8,screen.priority(),pri ? 0x02 : 0,0x00);
- m_gfxdecode->gfx(0)->prio_transpen(bitmap,cliprect, tile_low << 1, color, flipx, 0, m_sprite_ram[i+3],m_sprite_ram[i+2]+8,screen.priority(),pri ? 0x02 : 0,0x00);
+ m_gfxdecode->gfx(0)->prio_transpen(m_palette,bitmap,cliprect, tile_high << 1, color, flipx, 0, m_sprite_ram[i+3],m_sprite_ram[i+2],screen.priority(),pri ? 0x02 : 0,0x00);
+ m_gfxdecode->gfx(0)->prio_transpen(m_palette,bitmap,cliprect, tile_high << 1, color, flipx, 0, m_sprite_ram[i+3]+8,m_sprite_ram[i+2],screen.priority(),pri ? 0x02 : 0,0x00);
+ m_gfxdecode->gfx(0)->prio_transpen(m_palette,bitmap,cliprect, tile_low << 1, color, flipx, 0, m_sprite_ram[i+3]+8,m_sprite_ram[i+2]+8,screen.priority(),pri ? 0x02 : 0,0x00);
+ m_gfxdecode->gfx(0)->prio_transpen(m_palette,bitmap,cliprect, tile_low << 1, color, flipx, 0, m_sprite_ram[i+3],m_sprite_ram[i+2]+8,screen.priority(),pri ? 0x02 : 0,0x00);
}
}
diff --git a/src/mame/video/stlforce.c b/src/mame/video/stlforce.c
index cc56ad47871..7b23bff63d0 100644
--- a/src/mame/video/stlforce.c
+++ b/src/mame/video/stlforce.c
@@ -106,7 +106,7 @@ void stlforce_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
ypos = 512-ypos;
- gfx->transpen(bitmap,
+ gfx->transpen(m_palette,bitmap,
cliprect,
num,
64+attr,
diff --git a/src/mame/video/strnskil.c b/src/mame/video/strnskil.c
index 20f28d9bc9a..65e3cab2c2f 100644
--- a/src/mame/video/strnskil.c
+++ b/src/mame/video/strnskil.c
@@ -12,14 +12,11 @@ Video hardware driver by Uki
#include "includes/strnskil.h"
-void strnskil_state::palette_init()
+PALETTE_INIT_MEMBER(strnskil_state, strnskil)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
@@ -27,7 +24,7 @@ void strnskil_state::palette_init()
int g = pal4bit(color_prom[i + 0x100]);
int b = pal4bit(color_prom[i + 0x200]);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -37,7 +34,7 @@ void strnskil_state::palette_init()
for (i = 0; i < 0x400; i++)
{
UINT8 ctabentry = color_prom[i];
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -111,11 +108,11 @@ void strnskil_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
sx = sx - 256;
- m_gfxdecode->gfx(1)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,cliprect,
code, color,
flipx, flipy,
px, py,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, 0));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 0));
}
}
diff --git a/src/mame/video/subs.c b/src/mame/video/subs.c
index c05cd53b0c6..4b89649ff99 100644
--- a/src/mame/video/subs.c
+++ b/src/mame/video/subs.c
@@ -12,13 +12,13 @@ WRITE8_MEMBER(subs_state::subs_invert1_w)
{
if ((offset & 0x01) == 1)
{
- palette_set_color(machine(), 0, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), 1, rgb_t(0xFF, 0xFF, 0xFF));
+ m_palette->set_pen_color(0, rgb_t(0x00, 0x00, 0x00));
+ m_palette->set_pen_color(1, rgb_t(0xFF, 0xFF, 0xFF));
}
else
{
- palette_set_color(machine(), 1, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), 0, rgb_t(0xFF, 0xFF, 0xFF));
+ m_palette->set_pen_color(1, rgb_t(0x00, 0x00, 0x00));
+ m_palette->set_pen_color(0, rgb_t(0xFF, 0xFF, 0xFF));
}
}
@@ -26,13 +26,13 @@ WRITE8_MEMBER(subs_state::subs_invert2_w)
{
if ((offset & 0x01) == 1)
{
- palette_set_color(machine(), 2, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), 3, rgb_t(0xFF, 0xFF, 0xFF));
+ m_palette->set_pen_color(2, rgb_t(0x00, 0x00, 0x00));
+ m_palette->set_pen_color(3, rgb_t(0xFF, 0xFF, 0xFF));
}
else
{
- palette_set_color(machine(), 3, rgb_t(0x00, 0x00, 0x00));
- palette_set_color(machine(), 2, rgb_t(0xFF, 0xFF, 0xFF));
+ m_palette->set_pen_color(3, rgb_t(0x00, 0x00, 0x00));
+ m_palette->set_pen_color(2, rgb_t(0xFF, 0xFF, 0xFF));
}
}
@@ -74,11 +74,11 @@ UINT32 subs_state::screen_update_subs_left(screen_device &screen, bitmap_ind16 &
/* draw the left screen */
if ((left_enable || left_sonar_window) && (!right_sonar_window))
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect,
charcode, 1,
0,0,sx,sy);
else
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect,
0, 1,
0,0,sx,sy);
}
@@ -104,7 +104,7 @@ UINT32 subs_state::screen_update_subs_left(screen_device &screen, bitmap_ind16 &
/* left screen - special check for drawing right screen's sub */
if ((offs!=0) || (sub_enable))
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
charcode + 32 * prom_set,
0,
0,0,sx,sy,0);
@@ -154,11 +154,11 @@ UINT32 subs_state::screen_update_subs_right(screen_device &screen, bitmap_ind16
/* draw the right screen */
if ((right_enable || right_sonar_window) && (!left_sonar_window))
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect,
charcode, 0,
0,0,sx,sy);
else
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect,
0, 0,
0,0,sx,sy);
}
@@ -183,7 +183,7 @@ UINT32 subs_state::screen_update_subs_right(screen_device &screen, bitmap_ind16
charcode = (charcode >> 3) & 0x1F;
if ((offs!=1) || (sub_enable))
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
charcode + 32 * prom_set,
0,
0,0,sx,sy,0);
diff --git a/src/mame/video/suna16.c b/src/mame/video/suna16.c
index 481c3f2550a..c10c2a58963 100644
--- a/src/mame/video/suna16.c
+++ b/src/mame/video/suna16.c
@@ -91,7 +91,7 @@ WRITE16_MEMBER(suna16_state::bestbest_flipscreen_w)
void suna16_state::video_start()
{
- m_paletteram = auto_alloc_array(machine(), UINT16, machine().total_colors());
+ m_paletteram = auto_alloc_array(machine(), UINT16, m_palette->entries());
}
READ16_MEMBER(suna16_state::suna16_paletteram16_r)
@@ -103,7 +103,7 @@ WRITE16_MEMBER(suna16_state::suna16_paletteram16_w)
{
offset += m_color_bank * 256;
data = COMBINE_DATA(&m_paletteram[offset]);
- palette_set_color_rgb( machine(), offset, pal5bit(data >> 0),pal5bit(data >> 5),pal5bit(data >> 10));
+ m_palette->set_pen_color( offset, pal5bit(data >> 0),pal5bit(data >> 5),pal5bit(data >> 10));
}
@@ -188,7 +188,7 @@ void suna16_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect,
tile_flipy = !tile_flipy;
}
- m_gfxdecode->gfx(gfx)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(gfx)->transpen(m_palette,bitmap,cliprect,
(tile & 0x3fff) + bank*0x4000,
attr + (m_color_bank << 4),
tile_flipx, tile_flipy,
diff --git a/src/mame/video/suna8.c b/src/mame/video/suna8.c
index c08f3e2e146..84fa933863a 100644
--- a/src/mame/video/suna8.c
+++ b/src/mame/video/suna8.c
@@ -174,7 +174,7 @@ WRITE8_MEMBER( suna8_state::brickzn_banked_paletteram_w )
b = (rgb >> 4) & 0x0f;
}
- palette_set_color_rgb(machine(),offset/2,pal4bit(r),pal4bit(g),pal4bit(b));
+ m_palette->set_pen_color(offset/2,pal4bit(r),pal4bit(g),pal4bit(b));
}
@@ -378,7 +378,7 @@ void suna8_state::draw_normal_sprites(bitmap_ind16 &bitmap,const rectangle &clip
sy = max_y - sy; tile_flipy = !tile_flipy;
}
- m_gfxdecode->gfx(which)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(which)->transpen(m_palette,bitmap,cliprect,
tile + (attr & 0x3)*0x100 + gfxbank,
(((attr >> 2) & 0xf) | colorbank) + 0x10 * m_palettebank, // hardhea2 player2
tile_flipx, tile_flipy,
@@ -442,7 +442,7 @@ void suna8_state::draw_text_sprites(bitmap_ind16 &bitmap,const rectangle &clipre
sy = max_y - sy; flipy = !flipy;
}
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
tile + (attr & 0x3)*0x100 + bank,
(attr >> 2) & 0xf,
flipx, flipy,
diff --git a/src/mame/video/superchs.c b/src/mame/video/superchs.c
index e5c10618cac..f912056f785 100644
--- a/src/mame/video/superchs.c
+++ b/src/mame/video/superchs.c
@@ -162,7 +162,7 @@ void superchs_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,co
}
else
{
- m_gfxdecode->gfx(sprite_ptr->gfx)->zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(sprite_ptr->gfx)->zoom_transpen(m_palette,bitmap,cliprect,
sprite_ptr->code,
sprite_ptr->color,
sprite_ptr->flipx,sprite_ptr->flipy,
@@ -181,7 +181,7 @@ logerror("Sprite number %04x had %02x invalid chunks\n",tilenum,bad_chunks);
{
sprite_ptr--;
- m_gfxdecode->gfx(sprite_ptr->gfx)->prio_zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(sprite_ptr->gfx)->prio_zoom_transpen(m_palette,bitmap,cliprect,
sprite_ptr->code,
sprite_ptr->color,
sprite_ptr->flipx,sprite_ptr->flipy,
diff --git a/src/mame/video/superqix.c b/src/mame/video/superqix.c
index 00aa81dce3a..11ffb866385 100644
--- a/src/mame/video/superqix.c
+++ b/src/mame/video/superqix.c
@@ -175,7 +175,7 @@ void superqix_state::pbillian_draw_sprites(bitmap_ind16 &bitmap, const rectangle
sy = 240 - sy;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
color,
flip_screen(), flip_screen(),
@@ -206,7 +206,7 @@ void superqix_state::superqix_draw_sprites(bitmap_ind16 &bitmap,const rectangle
flipy = !flipy;
}
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx, flipy,
diff --git a/src/mame/video/suprloco.c b/src/mame/video/suprloco.c
index 92dd78f4669..acf2f78b119 100644
--- a/src/mame/video/suprloco.c
+++ b/src/mame/video/suprloco.c
@@ -28,7 +28,7 @@
I'm not sure about the resistor values, I'm using the Galaxian ones.
***************************************************************************/
-void suprloco_state::palette_init()
+PALETTE_INIT_MEMBER(suprloco_state, suprloco)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -54,15 +54,15 @@ void suprloco_state::palette_init()
bit2 = (color_prom[i] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
/* hack: generate a second bank of sprite palette with red changed to purple */
if (i >= 256)
{
if ((i & 0x0f) == 0x09)
- palette_set_color(machine(),i+256,rgb_t(r,g,0xff));
+ palette.set_pen_color(i+256,rgb_t(r,g,0xff));
else
- palette_set_color(machine(),i+256,rgb_t(r,g,b));
+ palette.set_pen_color(i+256,rgb_t(r,g,b));
}
}
}
diff --git a/src/mame/video/suprnova.c b/src/mame/video/suprnova.c
index baf80d49c94..534e9c6b160 100644
--- a/src/mame/video/suprnova.c
+++ b/src/mame/video/suprnova.c
@@ -213,7 +213,7 @@ WRITE32_MEMBER(skns_state::skns_palette_ram_w)
r <<= 3;
}
- palette_set_color(machine(),offset,rgb_t(r,g,b));
+ m_palette->set_pen_color(offset,rgb_t(r,g,b));
}
@@ -246,7 +246,7 @@ void skns_state::palette_set_rgb_brightness (int offset, UINT8 brightness_r, UIN
r <<= 3;
}
- palette_set_color(machine(),offset,rgb_t(r,g,b));
+ m_palette->set_pen_color(offset,rgb_t(r,g,b));
}
@@ -442,7 +442,7 @@ UINT32 skns_state::screen_update_skns(screen_device &screen, bitmap_rgb32 &bitma
{
palette_update();
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
m_tilemap_bitmap_lower.fill(0);
m_tilemap_bitmapflags_lower.fill(0);
m_tilemap_bitmap_higher.fill(0);
@@ -469,7 +469,7 @@ UINT32 skns_state::screen_update_skns(screen_device &screen, bitmap_rgb32 &bitma
UINT32* dst;
UINT16 pri, pri2, pri3;
UINT16 bgpri;
- const pen_t *clut = &machine().pens[0];
+ const pen_t *clut = &m_palette->pen(0);
// int drawpri;
diff --git a/src/mame/video/suprridr.c b/src/mame/video/suprridr.c
index 6acbe7ae7c8..86e5cd54e2e 100644
--- a/src/mame/video/suprridr.c
+++ b/src/mame/video/suprridr.c
@@ -54,7 +54,7 @@ void suprridr_state::video_start()
*
*************************************/
-void suprridr_state::palette_init()
+PALETTE_INIT_MEMBER(suprridr_state, suprridr)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -78,7 +78,7 @@ void suprridr_state::palette_init()
bit1 = (*color_prom >> 7) & 0x01;
b = 0x4f * bit0 + 0xa8 * bit1;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
color_prom++;
}
}
@@ -207,7 +207,7 @@ UINT32 suprridr_state::screen_update_suprridr(screen_device &screen, bitmap_ind1
fy = !fy;
y = 240 - y;
}
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect, code, color, fx, fy, x, y, 0);
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect, code, color, fx, fy, x, y, 0);
}
return 0;
}
diff --git a/src/mame/video/suprslam.c b/src/mame/video/suprslam.c
index 71aa969172c..d68f0b19b56 100644
--- a/src/mame/video/suprslam.c
+++ b/src/mame/video/suprslam.c
@@ -65,7 +65,7 @@ UINT32 suprslam_state::screen_update_suprslam(screen_device &screen, bitmap_ind1
{
m_screen_tilemap->set_scrollx(0, m_screen_vregs[0x04/2] );
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
m_k053936->zoom_draw(screen, bitmap, cliprect, m_bg_tilemap, 0, 0, 1);
if(!(m_spr_ctrl[0] & 8))
m_spr->draw_sprites(m_spriteram, m_spriteram.bytes(), screen, bitmap, cliprect);
diff --git a/src/mame/video/system1.c b/src/mame/video/system1.c
index 6aa34628ee1..80a9320b537 100644
--- a/src/mame/video/system1.c
+++ b/src/mame/video/system1.c
@@ -347,7 +347,7 @@ WRITE8_MEMBER(system1_state::system1_paletteram_w)
b = pal2bit(data >> 6);
}
- palette_set_color(machine(),offset,rgb_t(r,g,b));
+ m_palette->set_pen_color(offset,rgb_t(r,g,b));
}
diff --git a/src/mame/video/system16.c b/src/mame/video/system16.c
index e14ee57bb9e..8305374727f 100644
--- a/src/mame/video/system16.c
+++ b/src/mame/video/system16.c
@@ -150,9 +150,9 @@ WRITE16_MEMBER(segas1x_bootleg_state::sys16_paletteram_w)
//gh = combine_6_weights(m_weights[1][1], g0, g1, g2, g3, g4, 1);
//bh = combine_6_weights(m_weights[1][2], b0, b1, b2, b3, b4, 1);
- palette_set_color(machine(), offset, rgb_t(r, g, b) );
+ m_palette->set_pen_color(offset, rgb_t(r, g, b) );
- palette_set_color(machine(), offset + machine().total_colors()/2, rgb_t(rs,gs,bs));
+ m_palette->set_pen_color(offset + m_palette->entries()/2, rgb_t(rs,gs,bs));
}
}
#endif
@@ -606,7 +606,7 @@ UINT32 segas1x_bootleg_state::screen_update_s16a_bootleg(screen_device &screen,
int offset_bg0x = 187;
int offset_bg0y = 0;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
// start the sprites drawing
m_sprites->draw_async(cliprect);
@@ -668,7 +668,7 @@ UINT32 segas1x_bootleg_state::screen_update_s16a_bootleg(screen_device &screen,
{
// if the color is set to maximum, shadow pixels underneath us
if ((pix & 0x03f0) == 0x03f0)
- dest[x] += (m_paletteram[dest[x]] & 0x8000) ? machine().total_colors()*2 : machine().total_colors();
+ dest[x] += (m_paletteram[dest[x]] & 0x8000) ? m_palette->entries()*2 : m_palette->entries();
// otherwise, just add in sprite palette base
else
@@ -693,7 +693,7 @@ UINT32 segas1x_bootleg_state::screen_update_s16a_bootleg_passht4b(screen_device
int offset_bg0x = 5;
int offset_bg0y = 32;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
// start the sprites drawing
m_sprites->draw_async(cliprect);
@@ -738,7 +738,7 @@ UINT32 segas1x_bootleg_state::screen_update_s16a_bootleg_passht4b(screen_device
{
// if the color is set to maximum, shadow pixels underneath us
if ((pix & 0x03f0) == 0x03f0)
- dest[x] += (m_paletteram[dest[x]] & 0x8000) ? machine().total_colors()*2 : machine().total_colors();
+ dest[x] += (m_paletteram[dest[x]] & 0x8000) ? m_palette->entries()*2 : m_palette->entries();
// otherwise, just add in sprite palette base
else
@@ -817,7 +817,7 @@ UINT32 segas1x_bootleg_state::screen_update_system16(screen_device &screen, bitm
{
// if the color is set to maximum, shadow pixels underneath us
if ((pix & 0x03f0) == 0x03f0)
- dest[x] += (m_paletteram[dest[x]] & 0x8000) ? machine().total_colors()*2 : machine().total_colors();
+ dest[x] += (m_paletteram[dest[x]] & 0x8000) ? m_palette->entries()*2 : m_palette->entries();
// otherwise, just add in sprite palette base
else
@@ -835,7 +835,7 @@ UINT32 segas1x_bootleg_state::screen_update_system18old(screen_device &screen, b
{
if (!m_refreshenable)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
@@ -880,7 +880,7 @@ UINT32 segas1x_bootleg_state::screen_update_system18old(screen_device &screen, b
{
// if the color is set to maximum, shadow pixels underneath us
if ((pix & 0x03f0) == 0x03f0)
- dest[x] += (m_paletteram[dest[x]] & 0x8000) ? machine().total_colors()*2 : machine().total_colors();
+ dest[x] += (m_paletteram[dest[x]] & 0x8000) ? m_palette->entries()*2 : m_palette->entries();
// otherwise, just add in sprite palette base
else
diff --git a/src/mame/video/tagteam.c b/src/mame/video/tagteam.c
index f2395212737..f6814ae0596 100644
--- a/src/mame/video/tagteam.c
+++ b/src/mame/video/tagteam.c
@@ -32,13 +32,13 @@ static const res_net_decode_info tagteam_decode_info =
{ 0x07, 0x07, 0x03 } /* masks */
};
-void tagteam_state::palette_init()
+PALETTE_INIT_MEMBER(tagteam_state, tagteam)
{
const UINT8 *color_prom = memregion("proms")->base();
rgb_t *rgb;
rgb = compute_res_net_all(machine(), color_prom, &tagteam_decode_info, &tagteam_net_info);
- palette_set_colors(machine(), 0x00, rgb, 0x20);
+ palette.set_pen_colors(0x00, rgb, 0x20);
auto_free(machine(), rgb);
}
@@ -165,7 +165,7 @@ void tagteam_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code, color,
flipx, flipy,
sx, sy, 0);
@@ -177,7 +177,7 @@ void tagteam_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
sy += (flip_screen() ? -256 : 256);
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code, color,
flipx, flipy,
sx, sy, 0);
diff --git a/src/mame/video/tail2nos.c b/src/mame/video/tail2nos.c
index 4a3b062cdda..9843e13114c 100644
--- a/src/mame/video/tail2nos.c
+++ b/src/mame/video/tail2nos.c
@@ -156,7 +156,7 @@ void tail2nos_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
flipx = spriteram[offs + 2] & 0x1000;
flipy = spriteram[offs + 2] & 0x0800;
- m_gfxdecode->gfx(1)->transpen(bitmap,/* placement relative to zoom layer verified on the real thing */
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,/* placement relative to zoom layer verified on the real thing */
cliprect,
code,
40 + color,
diff --git a/src/mame/video/taito_b.c b/src/mame/video/taito_b.c
index 47c94432674..76765e61d79 100644
--- a/src/mame/video/taito_b.c
+++ b/src/mame/video/taito_b.c
@@ -396,7 +396,7 @@ UINT32 taitob_state::screen_update_taitob(screen_device &screen, bitmap_ind16 &b
UINT32 taitob_state::screen_update_realpunc(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
address_space &space = machine().driver_data()->generic_space();
- const rgb_t *palette = machine().palette->entry_list_adjusted();
+ const rgb_t *palette = m_palette->palette()->entry_list_adjusted();
UINT8 video_control = m_tc0180vcu->get_videoctrl(space, 0);
int x, y;
diff --git a/src/mame/video/taito_f2.c b/src/mame/video/taito_f2.c
index 6a3e843a620..0a26f5103c1 100644
--- a/src/mame/video/taito_f2.c
+++ b/src/mame/video/taito_f2.c
@@ -761,7 +761,7 @@ void taitof2_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, c
}
else
{
- m_gfxdecode->gfx(0)->zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->zoom_transpen(m_palette,bitmap,cliprect,
sprite_ptr->code,
sprite_ptr->color,
sprite_ptr->flipx,sprite_ptr->flipy,
@@ -778,7 +778,7 @@ void taitof2_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, c
sprite_ptr--;
if (!uses_tc360_mixer)
- m_gfxdecode->gfx(0)->prio_zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->prio_zoom_transpen(m_palette,bitmap,cliprect,
sprite_ptr->code,
sprite_ptr->color,
sprite_ptr->flipx,sprite_ptr->flipy,
diff --git a/src/mame/video/taito_f3.c b/src/mame/video/taito_f3.c
index 16bbd188d3e..de62e09282c 100644
--- a/src/mame/video/taito_f3.c
+++ b/src/mame/video/taito_f3.c
@@ -886,7 +886,7 @@ WRITE32_MEMBER(taito_f3_state::f3_palette_24bit_w)
b = (m_generic_paletteram_32[offset] >> 0) & 0xff;
}
- palette_set_color(machine(),offset,rgb_t(r,g,b));
+ m_palette->set_pen_color(offset,rgb_t(r,g,b));
}
/******************************************************************************/
@@ -1417,7 +1417,7 @@ INLINE void draw_scanlines(running_machine &machine,
int skip_layer_num)
{
taito_f3_state *state = machine.driver_data<taito_f3_state>();
- const pen_t *clut = &machine.pens[0];
+ const pen_t *clut = &state->m_palette->pen(0);
UINT32 bgcolor=clut[0];
int length;
@@ -2586,7 +2586,7 @@ INLINE void f3_drawgfx(
if( gfx )
{
- const pen_t *pal = &gfx->machine().pens[gfx->colorbase() + gfx->granularity() * (color % gfx->colors())];
+ const pen_t *pal = &state->m_palette->pen(gfx->colorbase() + gfx->granularity() * (color % gfx->colors()));
const UINT8 *code_base = gfx->get_data(code % gfx->elements());
{
@@ -2737,7 +2737,7 @@ INLINE void f3_drawgfxzoom(
if( gfx )
{
- const pen_t *pal = &gfx->machine().pens[gfx->colorbase() + gfx->granularity() * (color % gfx->colors())];
+ const pen_t *pal = &state->m_palette->pen(gfx->colorbase() + gfx->granularity() * (color % gfx->colors()));
const UINT8 *code_base = gfx->get_data(code % gfx->elements());
{
diff --git a/src/mame/video/taito_h.c b/src/mame/video/taito_h.c
index 451e336f112..39af1b4ed0b 100644
--- a/src/mame/video/taito_h.c
+++ b/src/mame/video/taito_h.c
@@ -145,7 +145,7 @@ void taitoh_state::syvalion_draw_sprites( bitmap_ind16 &bitmap, const rectangle
}
- m_gfxdecode->gfx(0)->zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->zoom_transpen(m_palette,bitmap,cliprect,
tile,
color,
flipx, flipy,
@@ -257,7 +257,7 @@ void taitoh_state::recordbr_draw_sprites( bitmap_ind16 &bitmap, const rectangle
}
- m_gfxdecode->gfx(0)->zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->zoom_transpen(m_palette,bitmap,cliprect,
tile,
color,
flipx, flipy,
@@ -359,7 +359,7 @@ void taitoh_state::dleague_draw_sprites( bitmap_ind16 &bitmap, const rectangle &
}
- m_gfxdecode->gfx(0)->zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->zoom_transpen(m_palette,bitmap,cliprect,
tile,
color,
flipx, flipy,
diff --git a/src/mame/video/taito_l.c b/src/mame/video/taito_l.c
index 2c8723050e3..42b3881a451 100644
--- a/src/mame/video/taito_l.c
+++ b/src/mame/video/taito_l.c
@@ -69,7 +69,7 @@ VIDEO_START_MEMBER(taitol_state,taitol)
m_ch1a_tilemap->set_transparent_pen(0);
for (i = 0; i < 256; i++)
- palette_set_color(machine(), i, rgb_t(0, 0, 0));
+ m_palette->set_pen_color(i, rgb_t(0, 0, 0));
m_ch1a_tilemap->set_scrolldx(-8, -8);
m_bg18_tilemap->set_scrolldx(28, -11);
@@ -256,7 +256,7 @@ void taitol_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, co
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->prio_transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -303,7 +303,7 @@ UINT32 taitol_state::screen_update_taitol(screen_device &screen, bitmap_ind16 &b
m_ch1a_tilemap->draw(screen, bitmap, cliprect, 0, 0);
}
else
- bitmap.fill(machine().pens[0], cliprect);
+ bitmap.fill(m_palette->pen(0), cliprect);
return 0;
}
diff --git a/src/mame/video/taito_o.c b/src/mame/video/taito_o.c
index 4b085b800cb..96d13a831ad 100644
--- a/src/mame/video/taito_o.c
+++ b/src/mame/video/taito_o.c
@@ -119,7 +119,7 @@ void taitoo_state::parentj_draw_sprites( bitmap_ind16 &bitmap, const rectangle &
}
- m_gfxdecode->gfx(0)->zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->zoom_transpen(m_palette,bitmap,cliprect,
tile,
color,
flipx, flipy,
diff --git a/src/mame/video/taito_z.c b/src/mame/video/taito_z.c
index 0bb9f7eea2b..1eeaa2823ab 100644
--- a/src/mame/video/taito_z.c
+++ b/src/mame/video/taito_z.c
@@ -221,7 +221,7 @@ void taitoz_state::contcirc_draw_sprites_16x8( screen_device &screen, bitmap_ind
flipy = !flipy;
}
- m_gfxdecode->gfx(0)->prio_zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->prio_zoom_transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -318,7 +318,7 @@ void taitoz_state::chasehq_draw_sprites_16x16( screen_device &screen, bitmap_ind
flipy = !flipy;
}
- m_gfxdecode->gfx(0)->prio_zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->prio_zoom_transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -361,7 +361,7 @@ void taitoz_state::chasehq_draw_sprites_16x16( screen_device &screen, bitmap_ind
flipy = !flipy;
}
- m_gfxdecode->gfx(2)->prio_zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->prio_zoom_transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -404,7 +404,7 @@ void taitoz_state::chasehq_draw_sprites_16x16( screen_device &screen, bitmap_ind
flipy = !flipy;
}
- m_gfxdecode->gfx(2)->prio_zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->prio_zoom_transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -500,7 +500,7 @@ void taitoz_state::bshark_draw_sprites_16x8( screen_device &screen, bitmap_ind16
flipy = !flipy;
}
- m_gfxdecode->gfx(0)->prio_zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->prio_zoom_transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -604,7 +604,7 @@ void taitoz_state::sci_draw_sprites_16x8( screen_device &screen, bitmap_ind16 &b
flipy = !flipy;
}
- m_gfxdecode->gfx(0)->prio_zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->prio_zoom_transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -698,7 +698,7 @@ void taitoz_state::aquajack_draw_sprites_16x8(screen_device &screen, bitmap_ind1
flipy = !flipy;
}
- m_gfxdecode->gfx(0)->prio_zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->prio_zoom_transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
@@ -792,7 +792,7 @@ void taitoz_state::spacegun_draw_sprites_16x8(screen_device &screen, bitmap_ind1
flipy = !flipy;
}
- m_gfxdecode->gfx(0)->prio_zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->prio_zoom_transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/taitoair.c b/src/mame/video/taitoair.c
index d03105d6190..1663429e604 100644
--- a/src/mame/video/taitoair.c
+++ b/src/mame/video/taitoair.c
@@ -164,7 +164,7 @@ void taitoair_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
}
- m_gfxdecode->gfx(0)->zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->zoom_transpen(m_palette,bitmap,cliprect,
tile,
color,
flipx, flipy,
diff --git a/src/mame/video/taitojc.c b/src/mame/video/taitojc.c
index cdb3921e66e..e70b66140e8 100644
--- a/src/mame/video/taitojc.c
+++ b/src/mame/video/taitojc.c
@@ -46,7 +46,7 @@ WRITE32_MEMBER(taitojc_state::taitojc_palette_w)
g = (color >> 16) & 0xff;
b = (color >> 0) & 0xff;
- palette_set_color(machine(),offset, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset, rgb_t(r, g, b));
}
READ32_MEMBER(taitojc_state::taitojc_tile_r)
@@ -315,7 +315,7 @@ void taitojc_state::video_start()
m_tile_ram = auto_alloc_array_clear(machine(), UINT32, 0x4000/4);
/* create the char set (gfx will then be updated dynamically from RAM) */
- m_gfxdecode->set_gfx(m_gfx_index, auto_alloc(machine(), gfx_element(machine(), taitojc_char_layout, (UINT8 *)m_char_ram, machine().total_colors() / 16, 0)));
+ m_gfxdecode->set_gfx(m_gfx_index, auto_alloc(machine(), gfx_element(machine(), taitojc_char_layout, (UINT8 *)m_char_ram, m_palette->entries() / 16, 0)));
m_texture = auto_alloc_array(machine(), UINT8, 0x400000);
diff --git a/src/mame/video/taitosj.c b/src/mame/video/taitosj.c
index af3bebec73d..b3931a0ecd9 100644
--- a/src/mame/video/taitosj.c
+++ b/src/mame/video/taitosj.c
@@ -126,7 +126,7 @@ void taitosj_state::set_pens()
bit2 = (~val >> 2) & 0x01;
b = combine_3_weights(bweights, bit0, bit1, bit2);
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ m_palette->set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -301,7 +301,7 @@ int taitosj_state::check_sprite_sprite_bitpattern(int sx1, int sy1, int which1,i
/* draw the sprites into separate bitmaps and check overlapping region */
m_sprite_layer_collbitmap1.fill(TRANSPARENT_PEN);
- get_sprite_gfx_element(which1)->transpen(m_sprite_sprite_collbitmap1,m_sprite_sprite_collbitmap1.cliprect(),
+ get_sprite_gfx_element(which1)->transpen(m_palette,m_sprite_sprite_collbitmap1,m_sprite_sprite_collbitmap1.cliprect(),
m_spriteram[SPRITE_RAM_PAGE_OFFSET + offs1 + 3] & 0x3f,
0,
m_spriteram[SPRITE_RAM_PAGE_OFFSET + offs1 + 2] & 0x01,
@@ -309,7 +309,7 @@ int taitosj_state::check_sprite_sprite_bitpattern(int sx1, int sy1, int which1,i
sx1, sy1, 0);
m_sprite_sprite_collbitmap2.fill(TRANSPARENT_PEN);
- get_sprite_gfx_element(which2)->transpen(m_sprite_sprite_collbitmap2,m_sprite_sprite_collbitmap2.cliprect(),
+ get_sprite_gfx_element(which2)->transpen(m_palette,m_sprite_sprite_collbitmap2,m_sprite_sprite_collbitmap2.cliprect(),
m_spriteram[SPRITE_RAM_PAGE_OFFSET + offs2 + 3] & 0x3f,
0,
m_spriteram[SPRITE_RAM_PAGE_OFFSET + offs2 + 2] & 0x01,
@@ -455,7 +455,7 @@ int taitosj_state::check_sprite_layer_bitpattern(int which, rectangle *sprite_ar
/* draw sprite into a bitmap and check if layers collide */
m_sprite_layer_collbitmap1.fill(TRANSPARENT_PEN);
- get_sprite_gfx_element(which)->transpen(m_sprite_layer_collbitmap1,m_sprite_layer_collbitmap1.cliprect(),
+ get_sprite_gfx_element(which)->transpen(m_palette,m_sprite_layer_collbitmap1,m_sprite_layer_collbitmap1.cliprect(),
m_spriteram[SPRITE_RAM_PAGE_OFFSET + offs + 3] & 0x3f,
0,
flip_x, flip_y,
@@ -513,19 +513,19 @@ void taitosj_state::draw_layers()
if (GLOBAL_FLIP_X) sx = 31 - sx;
if (GLOBAL_FLIP_Y) sy = 31 - sy;
- m_gfxdecode->gfx(m_colorbank[0] & 0x08 ? 2 : 0)->transpen(m_layer_bitmap[0],m_layer_bitmap[0].cliprect(),
+ m_gfxdecode->gfx(m_colorbank[0] & 0x08 ? 2 : 0)->transpen(m_palette,m_layer_bitmap[0],m_layer_bitmap[0].cliprect(),
m_videoram_1[offs],
m_colorbank[0] & 0x07,
GLOBAL_FLIP_X,GLOBAL_FLIP_Y,
8*sx,8*sy,0);
- m_gfxdecode->gfx(m_colorbank[0] & 0x80 ? 2 : 0)->transpen(m_layer_bitmap[1],m_layer_bitmap[1].cliprect(),
+ m_gfxdecode->gfx(m_colorbank[0] & 0x80 ? 2 : 0)->transpen(m_palette,m_layer_bitmap[1],m_layer_bitmap[1].cliprect(),
m_videoram_2[offs],
(m_colorbank[0] >> 4) & 0x07,
GLOBAL_FLIP_X,GLOBAL_FLIP_Y,
8*sx,8*sy,0);
- m_gfxdecode->gfx(m_colorbank[1] & 0x08 ? 2 : 0)->transpen(m_layer_bitmap[2],m_layer_bitmap[2].cliprect(),
+ m_gfxdecode->gfx(m_colorbank[1] & 0x08 ? 2 : 0)->transpen(m_palette,m_layer_bitmap[2],m_layer_bitmap[2].cliprect(),
m_videoram_3[offs],
m_colorbank[1] & 0x07,
GLOBAL_FLIP_X,GLOBAL_FLIP_Y,
@@ -578,11 +578,11 @@ void taitosj_state::draw_sprites(bitmap_ind16 &bitmap)
flip_y = !flip_y;
}
- get_sprite_gfx_element(which)->transpen(bitmap,GLOBAL_FLIP_X ? spritevisibleareaflip : spritevisiblearea, code, color,
+ get_sprite_gfx_element(which)->transpen(m_palette,bitmap,GLOBAL_FLIP_X ? spritevisibleareaflip : spritevisiblearea, code, color,
flip_x, flip_y, sx, sy,0);
/* draw with wrap around. The horizontal games (eg. sfposeid) need this */
- get_sprite_gfx_element(which)->transpen(bitmap,GLOBAL_FLIP_X ? spritevisibleareaflip : spritevisiblearea, code, color,
+ get_sprite_gfx_element(which)->transpen(m_palette,bitmap,GLOBAL_FLIP_X ? spritevisibleareaflip : spritevisiblearea, code, color,
flip_x, flip_y, sx - 0x100, sy,0);
}
}
diff --git a/src/mame/video/tank8.c b/src/mame/video/tank8.c
index 5aa697d1405..bb7861b1d78 100644
--- a/src/mame/video/tank8.c
+++ b/src/mame/video/tank8.c
@@ -8,55 +8,52 @@ Atari Tank 8 video emulation
#include "includes/tank8.h"
-void tank8_state::palette_init()
+PALETTE_INIT_MEMBER(tank8_state, tank8)
{
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x0a);
-
- colortable_palette_set_color(machine().colortable, 8, rgb_t(0x00, 0x00, 0x00));
- colortable_palette_set_color(machine().colortable, 9, rgb_t(0xff, 0xff, 0xff));
+ palette.set_indirect_color(8, rgb_t(0x00, 0x00, 0x00));
+ palette.set_indirect_color(9, rgb_t(0xff, 0xff, 0xff));
for (i = 0; i < 8; i++)
{
- colortable_entry_set_value(machine().colortable, 2 * i + 0, 8);
- colortable_entry_set_value(machine().colortable, 2 * i + 1, i);
+ palette.set_pen_indirect(2 * i + 0, 8);
+ palette.set_pen_indirect(2 * i + 1, i);
}
/* walls */
- colortable_entry_set_value(machine().colortable, 0x10, 8);
- colortable_entry_set_value(machine().colortable, 0x11, 9);
+ palette.set_pen_indirect(0x10, 8);
+ palette.set_pen_indirect(0x11, 9);
/* mines */
- colortable_entry_set_value(machine().colortable, 0x12, 8);
- colortable_entry_set_value(machine().colortable, 0x13, 9);
+ palette.set_pen_indirect(0x12, 8);
+ palette.set_pen_indirect(0x13, 9);
}
-void tank8_state::set_pens(colortable_t *colortable)
+void tank8_state::set_pens()
{
if (*m_team & 0x01)
{
- colortable_palette_set_color(colortable, 0, rgb_t(0xff, 0x00, 0x00)); /* red */
- colortable_palette_set_color(colortable, 1, rgb_t(0x00, 0x00, 0xff)); /* blue */
- colortable_palette_set_color(colortable, 2, rgb_t(0xff, 0xff, 0x00)); /* yellow */
- colortable_palette_set_color(colortable, 3, rgb_t(0x00, 0xff, 0x00)); /* green */
- colortable_palette_set_color(colortable, 4, rgb_t(0xff, 0x00, 0xff)); /* magenta */
- colortable_palette_set_color(colortable, 5, rgb_t(0xe0, 0xc0, 0x70)); /* puce */
- colortable_palette_set_color(colortable, 6, rgb_t(0x00, 0xff, 0xff)); /* cyan */
- colortable_palette_set_color(colortable, 7, rgb_t(0xff, 0xaa, 0xaa)); /* pink */
+ m_palette->set_indirect_color(0, rgb_t(0xff, 0x00, 0x00)); /* red */
+ m_palette->set_indirect_color(1, rgb_t(0x00, 0x00, 0xff)); /* blue */
+ m_palette->set_indirect_color(2, rgb_t(0xff, 0xff, 0x00)); /* yellow */
+ m_palette->set_indirect_color(3, rgb_t(0x00, 0xff, 0x00)); /* green */
+ m_palette->set_indirect_color(4, rgb_t(0xff, 0x00, 0xff)); /* magenta */
+ m_palette->set_indirect_color(5, rgb_t(0xe0, 0xc0, 0x70)); /* puce */
+ m_palette->set_indirect_color(6, rgb_t(0x00, 0xff, 0xff)); /* cyan */
+ m_palette->set_indirect_color(7, rgb_t(0xff, 0xaa, 0xaa)); /* pink */
}
else
{
- colortable_palette_set_color(colortable, 0, rgb_t(0xff, 0x00, 0x00)); /* red */
- colortable_palette_set_color(colortable, 2, rgb_t(0xff, 0x00, 0x00)); /* red */
- colortable_palette_set_color(colortable, 4, rgb_t(0xff, 0x00, 0x00)); /* red */
- colortable_palette_set_color(colortable, 6, rgb_t(0xff, 0x00, 0x00)); /* red */
- colortable_palette_set_color(colortable, 1, rgb_t(0x00, 0x00, 0xff)); /* blue */
- colortable_palette_set_color(colortable, 3, rgb_t(0x00, 0x00, 0xff)); /* blue */
- colortable_palette_set_color(colortable, 5, rgb_t(0x00, 0x00, 0xff)); /* blue */
- colortable_palette_set_color(colortable, 7, rgb_t(0x00, 0x00, 0xff)); /* blue */
+ m_palette->set_indirect_color(0, rgb_t(0xff, 0x00, 0x00)); /* red */
+ m_palette->set_indirect_color(2, rgb_t(0xff, 0x00, 0x00)); /* red */
+ m_palette->set_indirect_color(4, rgb_t(0xff, 0x00, 0x00)); /* red */
+ m_palette->set_indirect_color(6, rgb_t(0xff, 0x00, 0x00)); /* red */
+ m_palette->set_indirect_color(1, rgb_t(0x00, 0x00, 0xff)); /* blue */
+ m_palette->set_indirect_color(3, rgb_t(0x00, 0x00, 0xff)); /* blue */
+ m_palette->set_indirect_color(5, rgb_t(0x00, 0x00, 0xff)); /* blue */
+ m_palette->set_indirect_color(7, rgb_t(0x00, 0x00, 0xff)); /* blue */
}
}
@@ -136,7 +133,7 @@ void tank8_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
int x = get_x_pos(i);
int y = get_y_pos(i);
- m_gfxdecode->gfx((code & 0x04) ? 2 : 3)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx((code & 0x04) ? 2 : 3)->transpen(m_palette,bitmap,cliprect,
code & 0x03,
i,
code & 0x10,
@@ -181,7 +178,7 @@ void tank8_state::device_timer(emu_timer &timer, device_timer_id id, int param,
UINT32 tank8_state::screen_update_tank8(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- set_pens(machine().colortable);
+ set_pens();
m_tilemap->draw(screen, bitmap, cliprect, 0, 0);
draw_sprites(bitmap, cliprect);
diff --git a/src/mame/video/tankbatt.c b/src/mame/video/tankbatt.c
index 0f62f3b8e2a..3a6a91c740f 100644
--- a/src/mame/video/tankbatt.c
+++ b/src/mame/video/tankbatt.c
@@ -15,7 +15,7 @@
Convert the color PROMs into a more useable format.
***************************************************************************/
-void tankbatt_state::palette_init()
+PALETTE_INIT_MEMBER(tankbatt_state, tankbatt)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -23,9 +23,6 @@ void tankbatt_state::palette_init()
#define RES_1 0xc0 /* this is a guess */
#define RES_2 0x3f /* this is a guess */
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
@@ -49,13 +46,13 @@ void tankbatt_state::palette_init()
b = RES_1 * bit3;
if (bit3) b += RES_2 * bit0;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
for (i = 0; i < 0x200; i += 2)
{
- colortable_entry_set_value(machine().colortable, i + 0, 0);
- colortable_entry_set_value(machine().colortable, i + 1, i >> 1);
+ palette.set_pen_indirect(i + 0, 0);
+ palette.set_pen_indirect(i + 1, i >> 1);
}
}
@@ -90,7 +87,7 @@ void tankbatt_state::draw_bullets(bitmap_ind16 &bitmap, const rectangle &cliprec
int x = m_bulletsram[offs + 1];
int y = 255 - m_bulletsram[offs] - 2;
- m_gfxdecode->gfx(1)->opaque(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->opaque(m_palette,bitmap,cliprect,
0, /* this is just a square, generated by the hardware */
color,
0,0,
diff --git a/src/mame/video/tankbust.c b/src/mame/video/tankbust.c
index 8391fc3834d..5a782b2ad5e 100644
--- a/src/mame/video/tankbust.c
+++ b/src/mame/video/tankbust.c
@@ -210,7 +210,7 @@ void tankbust_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
if ((spriteram[offs+1]!=4)) //otherwise - ghost sprites
{
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code, color,
flipx,flipy,
sx,sy,0);
diff --git a/src/mame/video/targeth.c b/src/mame/video/targeth.c
index 81af82f5968..e5214389467 100644
--- a/src/mame/video/targeth.c
+++ b/src/mame/video/targeth.c
@@ -116,7 +116,7 @@ void targeth_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
int xflip = attr & 0x20;
int yflip = attr & 0x40;
- gfx->transpen(bitmap,cliprect,number,
+ gfx->transpen(m_palette,bitmap,cliprect,number,
0x20 + color,xflip,yflip,
sx - 0x0f,sy,0);
}
diff --git a/src/mame/video/tatsumi.c b/src/mame/video/tatsumi.c
index e4f304b8e4f..8e92f02113f 100644
--- a/src/mame/video/tatsumi.c
+++ b/src/mame/video/tatsumi.c
@@ -75,7 +75,7 @@ bit 0: 3.9kOhm resistor
offset&=~1;
word = ((m_generic_paletteram_16[offset] & 0xff)<<8) | (m_generic_paletteram_16[offset+1] & 0xff);
- palette_set_color_rgb(machine(),offset/2,pal5bit(word >> 10),pal5bit(word >> 5),pal5bit(word >> 0));
+ m_palette->set_pen_color(offset/2,pal5bit(word >> 10),pal5bit(word >> 5),pal5bit(word >> 0));
}
@@ -105,7 +105,7 @@ bit 0: 3.9kOhm resistor
// logerror("PAL: %04x %02x\n",offset,data);
data = m_generic_paletteram_16[offset];
- palette_set_color_rgb(machine(),offset,pal5bit(data >> 10),pal5bit(data >> 5),pal5bit(data >> 0));
+ m_palette->set_pen_color(offset,pal5bit(data >> 10),pal5bit(data >> 5),pal5bit(data >> 0));
}
@@ -254,7 +254,7 @@ INLINE void roundupt_drawgfxzoomrotate(tatsumi_state *state,
{
if( gfx )
{
- const pen_t *pal = &gfx->machine().pens[gfx->colorbase() + gfx->granularity() * (color % gfx->colors())];
+ const pen_t *pal = &state->m_palette->pen(gfx->colorbase() + gfx->granularity() * (color % gfx->colors()));
const UINT8 *shadow_pens = state->m_shadow_pen_array + (gfx->granularity() * (color % gfx->colors()));
const UINT8 *code_base = gfx->get_data(code % gfx->elements());
@@ -684,6 +684,7 @@ static void draw_sprites(running_machine &machine, _BitmapClass &bitmap, const r
static void draw_sky(running_machine &machine, bitmap_rgb32 &bitmap,const rectangle &cliprect, int palette_base, int start_offset)
{
+ tatsumi_state *state = machine.driver_data<tatsumi_state>();
// all todo
int x,y;
@@ -699,7 +700,7 @@ start_offset-=48;
if (col<palette_base) col=palette_base;
if (col>palette_base+127) col=palette_base+127;
- bitmap.pix32(y, x) = machine.pens[col];
+ bitmap.pix32(y, x) = state->m_palette->pen(col);
}
}
}
@@ -831,9 +832,9 @@ offset is from last pixel of first road segment?
int col = linedata[0]&0xf;
UINT8 shadow=shadow_bitmap.pix8(y, x);
if (shadow)
- bitmap.pix32(y, x) = machine.pens[768 + pal*16 + col];
+ bitmap.pix32(y, x) = state->m_palette->pen(768 + pal*16 + col);
else
- bitmap.pix32(y, x) = machine.pens[256 + pal*16 + col];
+ bitmap.pix32(y, x) = state->m_palette->pen(256 + pal*16 + col);
}
/* If startpos is negative, clip it and adjust the sampling position accordingly */
@@ -855,9 +856,9 @@ offset is from last pixel of first road segment?
// col=linedata[0x7f]&0xf;
if (shadow)
- bitmap.pix32(y, x) = machine.pens[768 + pal*16 + col];
+ bitmap.pix32(y, x) = state->m_palette->pen(768 + pal*16 + col);
else
- bitmap.pix32(y, x) = machine.pens[256 + pal*16 + col];
+ bitmap.pix32(y, x) = state->m_palette->pen(256 + pal*16 + col);
samplePos+=step;
}
@@ -886,9 +887,9 @@ offset is from last pixel of first road segment?
// col=linedata[0x7f]&0xf;
if (shadow)
- bitmap.pix32(y, x) = machine.pens[768 + pal*16 + col + 32];
+ bitmap.pix32(y, x) = state->m_palette->pen(768 + pal*16 + col + 32);
else
- bitmap.pix32(y, x) = machine.pens[256 + pal*16 + col + 32];
+ bitmap.pix32(y, x) = state->m_palette->pen(256 + pal*16 + col + 32);
}
if (endPos<0) {
@@ -910,9 +911,9 @@ offset is from last pixel of first road segment?
col=linedata[0x7f + 0x200]&0xf;
if (shadow)
- bitmap.pix32(y, x) = machine.pens[768 + pal*16 + col + 32];
+ bitmap.pix32(y, x) = state->m_palette->pen(768 + pal*16 + col + 32);
else
- bitmap.pix32(y, x) = machine.pens[256 + pal*16 + col + 32];
+ bitmap.pix32(y, x) = state->m_palette->pen(256 + pal*16 + col + 32);
samplePos+=step;
}
@@ -932,22 +933,22 @@ static void update_cluts(running_machine &machine, int fake_palette_offset, int
const UINT8* bank1=state->m_rom_clut0;
const UINT8* bank2=state->m_rom_clut1;
for (i=0; i<length; i+=8) {
- palette_set_color(machine,fake_palette_offset+i+0,palette_get_color(machine,bank1[1]+object_base));
+ state->m_palette->set_pen_color(fake_palette_offset+i+0,state->m_palette->pen_color(bank1[1]+object_base));
state->m_shadow_pen_array[i+0]=(bank1[1]==255);
- palette_set_color(machine,fake_palette_offset+i+1,palette_get_color(machine,bank1[0]+object_base));
+ state->m_palette->set_pen_color(fake_palette_offset+i+1,state->m_palette->pen_color(bank1[0]+object_base));
state->m_shadow_pen_array[i+1]=(bank1[0]==255);
- palette_set_color(machine,fake_palette_offset+i+2,palette_get_color(machine,bank1[3]+object_base));
+ state->m_palette->set_pen_color(fake_palette_offset+i+2,state->m_palette->pen_color(bank1[3]+object_base));
state->m_shadow_pen_array[i+2]=(bank1[3]==255);
- palette_set_color(machine,fake_palette_offset+i+3,palette_get_color(machine,bank1[2]+object_base));
+ state->m_palette->set_pen_color(fake_palette_offset+i+3,state->m_palette->pen_color(bank1[2]+object_base));
state->m_shadow_pen_array[i+3]=(bank1[2]==255);
- palette_set_color(machine,fake_palette_offset+i+4,palette_get_color(machine,bank2[1]+object_base));
+ state->m_palette->set_pen_color(fake_palette_offset+i+4,state->m_palette->pen_color(bank2[1]+object_base));
state->m_shadow_pen_array[i+4]=(bank2[1]==255);
- palette_set_color(machine,fake_palette_offset+i+5,palette_get_color(machine,bank2[0]+object_base));
+ state->m_palette->set_pen_color(fake_palette_offset+i+5,state->m_palette->pen_color(bank2[0]+object_base));
state->m_shadow_pen_array[i+5]=(bank2[0]==255);
- palette_set_color(machine,fake_palette_offset+i+6,palette_get_color(machine,bank2[3]+object_base));
+ state->m_palette->set_pen_color(fake_palette_offset+i+6,state->m_palette->pen_color(bank2[3]+object_base));
state->m_shadow_pen_array[i+6]=(bank2[3]==255);
- palette_set_color(machine,fake_palette_offset+i+7,palette_get_color(machine,bank2[2]+object_base));
+ state->m_palette->set_pen_color(fake_palette_offset+i+7,state->m_palette->pen_color(bank2[2]+object_base));
state->m_shadow_pen_array[i+7]=(bank2[2]==255);
bank1+=4;
@@ -963,6 +964,7 @@ static void draw_bg(running_machine &machine, bitmap_rgb32 &dst, tilemap_t *src,
Each tile (0x4000 of them) has a lookup table in ROM to build an individual 3-bit palette
from sets of 8 bit palettes!
*/
+ tatsumi_state *state = machine.driver_data<tatsumi_state>();
const UINT8* tile_cluts = machine.root_device().memregion("gfx4")->base();
const bitmap_ind16 &src_bitmap = src->pixmap();
int src_y_mask=ysize-1;
@@ -987,7 +989,7 @@ static void draw_bg(running_machine &machine, bitmap_rgb32 &dst, tilemap_t *src,
ppp=pp + ((p&0x78)<<5);
if ((p&0x7)!=0 || ((p&0x7)==0 && (pp&0x7)!=0)) // Transparent pixels are set by both the tile pixel data==0 AND colour palette==0
- dst.pix32(y, x) = machine.pens[ppp];
+ dst.pix32(y, x) = state->m_palette->pen(ppp);
}
}
}
@@ -1065,7 +1067,7 @@ UINT32 tatsumi_state::screen_update_apache3(screen_device &screen, bitmap_rgb32
m_tx_layer->set_scrollx(0,24);
- bitmap.fill(machine().pens[0], cliprect);
+ bitmap.fill(m_palette->pen(0), cliprect);
draw_sky(machine(), bitmap, cliprect, 256, m_apache3_rotate_ctrl[1]);
// draw_ground(machine(), bitmap, cliprect);
draw_sprites(machine(), bitmap,cliprect,0, (m_sprite_control_ram[0x20]&0x1000) ? 0x1000 : 0);
@@ -1083,7 +1085,7 @@ UINT32 tatsumi_state::screen_update_roundup5(screen_device &screen, bitmap_rgb32
m_tx_layer->set_scrollx(0,24);
m_tx_layer->set_scrolly(0,0); //(((m_roundupt_crt_reg[0xe]<<8)|m_roundupt_crt_reg[0xf])>>5) + 96);
- bitmap.fill(machine().pens[384], cliprect); // todo
+ bitmap.fill(m_palette->pen(384), cliprect); // todo
screen.priority().fill(0, cliprect);
draw_sprites(machine(), screen.priority(),cliprect,1,(m_sprite_control_ram[0xe0]&0x1000) ? 0x1000 : 0); // Alpha pass only
@@ -1105,7 +1107,7 @@ UINT32 tatsumi_state::screen_update_cyclwarr(screen_device &screen, bitmap_rgb32
m_bigfight_last_bank=m_bigfight_bank;
}
- bitmap.fill(machine().pens[0], cliprect);
+ bitmap.fill(m_palette->pen(0), cliprect);
draw_bg(machine(), bitmap, m_layer3, &m_cyclwarr_videoram1[0x000], &m_cyclwarr_videoram1[0x100], m_cyclwarr_videoram1, m_bigfight_a40000[0], 8, -0x80, 512, 4096);
draw_bg(machine(), bitmap, m_layer2, &m_cyclwarr_videoram1[0x200], &m_cyclwarr_videoram1[0x300], m_cyclwarr_videoram1, m_bigfight_a40000[0], 8, -0x80, 512, 4096);
@@ -1129,7 +1131,7 @@ UINT32 tatsumi_state::screen_update_bigfight(screen_device &screen, bitmap_rgb32
m_bigfight_last_bank=m_bigfight_bank;
}
- bitmap.fill(machine().pens[0], cliprect);
+ bitmap.fill(m_palette->pen(0), cliprect);
draw_bg(machine(), bitmap, m_layer3, &m_cyclwarr_videoram1[0x000], &m_cyclwarr_videoram1[0x100], m_cyclwarr_videoram1, m_bigfight_a40000[0], 8, -0x40, 1024, 2048);
draw_bg(machine(), bitmap, m_layer2, &m_cyclwarr_videoram1[0x200], &m_cyclwarr_videoram1[0x300], m_cyclwarr_videoram1, m_bigfight_a40000[0], 8, -0x40, 1024, 2048);
draw_bg(machine(), bitmap, m_layer1, &m_cyclwarr_videoram0[0x000], &m_cyclwarr_videoram0[0x100], m_cyclwarr_videoram0, m_bigfight_a40000[0], 8, -0x40, 1024, 2048);
diff --git a/src/mame/video/taxidriv.c b/src/mame/video/taxidriv.c
index 619e74e25db..dd7ca3b6fdf 100644
--- a/src/mame/video/taxidriv.c
+++ b/src/mame/video/taxidriv.c
@@ -31,7 +31,7 @@ UINT32 taxidriv_state::screen_update_taxidriv(screen_device &screen, bitmap_ind1
sx = offs % 32;
sy = offs / 32;
- m_gfxdecode->gfx(3)->opaque(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->opaque(m_palette,bitmap,cliprect,
m_vram3[offs],
0,
0,0,
@@ -43,7 +43,7 @@ UINT32 taxidriv_state::screen_update_taxidriv(screen_device &screen, bitmap_ind1
sx = offs % 32;
sy = offs / 32;
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
m_vram2[offs]+256*m_vram2[offs+0x400],
0,
0,0,
@@ -109,7 +109,7 @@ UINT32 taxidriv_state::screen_update_taxidriv(screen_device &screen, bitmap_ind1
sx = offs % 32;
sy = offs / 32;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
m_vram1[offs],
0,
0,0,
@@ -136,7 +136,7 @@ UINT32 taxidriv_state::screen_update_taxidriv(screen_device &screen, bitmap_ind1
sx = offs % 32;
sy = offs / 32;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
m_vram0[offs],
0,
0,0,
diff --git a/src/mame/video/tbowl.c b/src/mame/video/tbowl.c
index 5ff1c030cb5..2036875fa5d 100644
--- a/src/mame/video/tbowl.c
+++ b/src/mame/video/tbowl.c
@@ -162,28 +162,28 @@ void tbowl_state::tbowl_draw_sprites(bitmap_ind16 &bitmap,const rectangle &clipr
sx -= xscroll;
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect,
code + layout[y][x],
color,
flipx,flipy,
sx,sy,0 );
/* wraparound */
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect,
code + layout[y][x],
color,
flipx,flipy,
sx,sy-0x200,0 );
/* wraparound */
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect,
code + layout[y][x],
color,
flipx,flipy,
sx-0x400,sy,0 );
/* wraparound */
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect,
code + layout[y][x],
color,
flipx,flipy,
diff --git a/src/mame/video/tc0110pcr.c b/src/mame/video/tc0110pcr.c
index 9dadaae5c48..88c9c67d84a 100644
--- a/src/mame/video/tc0110pcr.c
+++ b/src/mame/video/tc0110pcr.c
@@ -23,11 +23,22 @@ tc0110pcr_device::tc0110pcr_device(const machine_config &mconfig, const char *ta
: device_t(mconfig, TC0110PCR, "Taito TC0110PCR", tag, owner, clock, "tc0110pcr", __FILE__),
m_ram(NULL),
m_type(0),
- m_addr(0)
+ m_addr(0),
+ m_palette(*this)
{
}
//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void tc0110pcr_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<tc0110pcr_device &>(device).m_palette.set_tag(tag);
+}
+
+//-------------------------------------------------
// device_config_complete - perform any
// operations now that the configuration is
// complete
@@ -108,7 +119,7 @@ void tc0110pcr_device::restore_colors()
}
}
- palette_set_color(machine(), i + (m_pal_offs << 12), rgb_t(r, g, b));
+ m_palette->set_pen_color(i + (m_pal_offs << 12), rgb_t(r, g, b));
}
}
@@ -139,7 +150,7 @@ WRITE16_MEMBER(tc0110pcr_device::word_w )
case 1:
m_ram[m_addr] = data & 0xffff;
- palette_set_color_rgb(space.machine(), m_addr, pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
+ m_palette->set_pen_color(m_addr, pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
break;
default:
@@ -160,7 +171,7 @@ WRITE16_MEMBER(tc0110pcr_device::step1_word_w )
case 1:
m_ram[m_addr] = data & 0xffff;
- palette_set_color_rgb(space.machine(), m_addr + (m_pal_offs << 12), pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
+ m_palette->set_pen_color(m_addr + (m_pal_offs << 12), pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
break;
default:
@@ -183,7 +194,7 @@ WRITE16_MEMBER(tc0110pcr_device::step1_rbswap_word_w )
case 1:
m_ram[m_addr] = data & 0xffff;
- palette_set_color_rgb(space.machine(), m_addr, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
+ m_palette->set_pen_color(m_addr, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
break;
default:
@@ -206,7 +217,7 @@ WRITE16_MEMBER(tc0110pcr_device::step1_4bpg_word_w )
case 1:
m_ram[m_addr] = data & 0xffff;
- palette_set_color_rgb(space.machine(), m_addr, pal4bit(data >> 0), pal4bit(data >> 4), pal4bit(data >> 8));
+ m_palette->set_pen_color(m_addr, pal4bit(data >> 0), pal4bit(data >> 4), pal4bit(data >> 8));
break;
default:
diff --git a/src/mame/video/tc0110pcr.h b/src/mame/video/tc0110pcr.h
index 4b652996698..4dcc07b532f 100644
--- a/src/mame/video/tc0110pcr.h
+++ b/src/mame/video/tc0110pcr.h
@@ -20,7 +20,9 @@ public:
DECLARE_WRITE16_MEMBER( step1_4bpg_word_w ); /* only 4 bits per color gun */
void restore_colors();
-
+
+ static void static_set_palette_tag(device_t &device, const char *tag);
+
protected:
// device-level overrides
virtual void device_config_complete();
@@ -31,6 +33,7 @@ private:
UINT16 * m_ram;
int m_type;
int m_addr;
+ required_device<palette_device> m_palette;
};
extern const device_type TC0110PCR;
@@ -39,4 +42,7 @@ extern const device_type TC0110PCR;
MCFG_DEVICE_ADD(_tag, TC0110PCR, 0) \
MCFG_DEVICE_CONFIG(_interface)
+#define MCFG_TC0110PCR_PALETTE(_palette_tag) \
+ tc0110pcr_device::static_set_palette_tag(*device, "^" _palette_tag);
+
#endif
diff --git a/src/mame/video/tceptor.c b/src/mame/video/tceptor.c
index f95c3f0699a..55e341dc33a 100644
--- a/src/mame/video/tceptor.c
+++ b/src/mame/video/tceptor.c
@@ -18,14 +18,11 @@
/*******************************************************************/
-void tceptor_state::palette_init()
+PALETTE_INIT_MEMBER(tceptor_state, tceptor)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x400);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x400; i++)
{
@@ -33,7 +30,7 @@ void tceptor_state::palette_init()
int g = pal4bit(color_prom[i + 0x400]);
int b = pal4bit(color_prom[i + 0x800]);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -52,35 +49,35 @@ void tceptor_state::palette_init()
for (i = 0; i < 0x0400; i++)
{
int ctabentry = color_prom[i];
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* sprites lookup table (1024 colors) */
for (i = 0x0400; i < 0x0800; i++)
{
int ctabentry = color_prom[i] | 0x300;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* background: no lookup PROM, use directly (512 colors) */
for (i = 0x0a00; i < 0x0c00; i++)
{
int ctabentry = i & 0x1ff;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* road lookup table (256 colors) */
for (i = 0x0f00; i < 0x1000; i++)
{
int ctabentry = color_prom[i - 0x700] | 0x200;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* setup sprite mask color map */
/* tceptor2: only 0x23 */
memset(m_is_mask_spr, 0, sizeof m_is_mask_spr);
for (i = 0; i < 0x400; i++)
- if (colortable_entry_get_value(machine().colortable, i | 0x400) == SPR_MASK_COLOR)
+ if (m_palette->pen_indirect(i | 0x400) == SPR_MASK_COLOR)
m_is_mask_spr[i >> 4] = 1;
}
@@ -385,13 +382,13 @@ void tceptor_state::video_start()
/* allocate temp bitmaps */
m_2dscreen->register_screen_bitmap(m_temp_bitmap);
- m_c45_road->set_transparent_color(colortable_entry_get_value(machine().colortable, 0xfff));
+ m_c45_road->set_transparent_color(m_palette->pen_indirect(0xfff));
m_tx_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(tceptor_state::get_tx_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 34, 28);
m_tx_tilemap->set_scrollx(0, -2*8);
m_tx_tilemap->set_scrolly(0, 0);
- colortable_configure_tilemap_groups(machine().colortable, m_tx_tilemap, m_gfxdecode->gfx(0), 7);
+ m_palette->configure_tilemap_groups(*m_tx_tilemap, *m_gfxdecode->gfx(0), 7);
m_bg1_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(tceptor_state::get_bg1_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
m_bg2_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(tceptor_state::get_bg2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
@@ -480,7 +477,7 @@ void tceptor_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
y -= 78;
- m_gfxdecode->gfx(gfx)->zoom_transmask(bitmap,
+ m_gfxdecode->gfx(gfx)->zoom_transmask(m_palette,bitmap,
cliprect,
code,
color,
@@ -488,7 +485,7 @@ void tceptor_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
x, y,
scalex,
scaley,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(gfx), color, SPR_TRANS_COLOR));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(gfx), color, SPR_TRANS_COLOR));
}
}
@@ -499,7 +496,7 @@ void tceptor_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
for (x = cliprect.min_x; x <= cliprect.max_x; x++)
for (y = cliprect.min_y; y <= cliprect.max_y; y++)
- if (colortable_entry_get_value(machine().colortable, bitmap.pix16(y, x)) == SPR_MASK_COLOR)
+ if (m_palette->pen_indirect(bitmap.pix16(y, x)) == SPR_MASK_COLOR)
// restore pixel
bitmap.pix16(y, x) = m_temp_bitmap.pix16(y, x);
}
diff --git a/src/mame/video/tecmo.c b/src/mame/video/tecmo.c
index 7d8d98b397f..4eb8f9e1cfa 100644
--- a/src/mame/video/tecmo.c
+++ b/src/mame/video/tecmo.c
@@ -220,7 +220,7 @@ void tecmo_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,const
{
int sx = xpos + 8*(flipx?(size-1-x):x);
int sy = ypos + 8*(flipy?(size-1-y):y);
- m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->prio_transpen(m_palette,bitmap,cliprect,
code + layout[y][x],
flags & 0xf,
flipx,flipy,
diff --git a/src/mame/video/tecmo16.c b/src/mame/video/tecmo16.c
index bd86525a03b..fe7793ca4ba 100644
--- a/src/mame/video/tecmo16.c
+++ b/src/mame/video/tecmo16.c
@@ -196,7 +196,7 @@ WRITE16_MEMBER(tecmo16_state::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,
+static void blendbitmaps(palette_device &palette,
bitmap_rgb32 &dest,bitmap_ind16 &src1,bitmap_ind16 &src2,bitmap_ind16 &src3,
int sx,int sy,const rectangle &clip)
{
@@ -224,7 +224,7 @@ static void blendbitmaps(running_machine &machine,
if (sy > ey) return;
{
- const pen_t *paldata = machine.pens;
+ const pen_t *paldata = palette.pens();
UINT32 *end;
UINT16 *sd1 = &src1.pix16(0);
@@ -326,6 +326,6 @@ UINT32 tecmo16_state::screen_update_tecmo16(screen_device &screen, bitmap_rgb32
tecmo16_draw_sprites(screen, m_gfxdecode, m_tile_bitmap_bg, m_tile_bitmap_fg, m_sprite_bitmap, cliprect, m_spriteram, m_spriteram.bytes(), m_game_is_riot, m_flipscreen);
/* mix & blend the tilemaps and sprites into a 32-bit bitmap */
- blendbitmaps(machine(), bitmap, m_tile_bitmap_bg, m_tile_bitmap_fg, m_sprite_bitmap, 0, 0, cliprect);
+ blendbitmaps(m_palette, bitmap, m_tile_bitmap_bg, m_tile_bitmap_fg, m_sprite_bitmap, 0, 0, cliprect);
return 0;
}
diff --git a/src/mame/video/tecmo_spr.c b/src/mame/video/tecmo_spr.c
index 3170692612d..40918b24e38 100644
--- a/src/mame/video/tecmo_spr.c
+++ b/src/mame/video/tecmo_spr.c
@@ -138,7 +138,7 @@ int spbactn_draw_sprites(screen_device &screen, gfxdecode_device *gfxdecode, bit
// comad bootleg of spbactn
-void galspnbl_draw_sprites( screen_device &screen, gfxdecode_device *gfxdecode, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority, UINT16* spriteram, int spriteram_bytes )
+void galspnbl_draw_sprites( screen_device &screen, gfxdecode_device *gfxdecode, palette_device &palette, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority, UINT16* spriteram, int spriteram_bytes )
{
int offs;
@@ -169,7 +169,7 @@ void galspnbl_draw_sprites( screen_device &screen, gfxdecode_device *gfxdecode,
{
int x = sx + 8 * (flipx ? (size - 1 - col) : col);
int y = sy + 8 * (flipy ? (size - 1 - row) : row);
- gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ gfxdecode->gfx(1)->transpen(palette,bitmap,cliprect,
code + layout[row][col],
color,
flipx,flipy,
diff --git a/src/mame/video/tecmo_spr.h b/src/mame/video/tecmo_spr.h
index e591ef2b2b9..48b62e06a52 100644
--- a/src/mame/video/tecmo_spr.h
+++ b/src/mame/video/tecmo_spr.h
@@ -1,6 +1,6 @@
/* Tecmo Sprites */
-void galspnbl_draw_sprites( screen_device &screen, gfxdecode_device *gfxdecode, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority, UINT16* spriteram, int spriteram_bytes );
+void galspnbl_draw_sprites( screen_device &screen, gfxdecode_device *gfxdecode, palette_device &palette, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority, UINT16* spriteram, int spriteram_bytes );
void tecmo16_draw_sprites(screen_device &screen, gfxdecode_device *gfxdecode, bitmap_ind16 &bitmap_bg, bitmap_ind16 &bitmap_fg, bitmap_ind16 &bitmap_sp, const rectangle &cliprect, UINT16* spriteram, UINT16 spriteram16_bytes, int game_is_riot, int flipscreen );
void gaiden_draw_sprites( screen_device &screen, gfxdecode_device *gfxdecode, bitmap_ind16 &bitmap_bg, bitmap_ind16 &bitmap_fg, bitmap_ind16 &bitmap_sp, const rectangle &cliprect, UINT16* spriteram, int sprite_sizey, int spr_offset_y, int flipscreen );
void raiga_draw_sprites( screen_device &screen, gfxdecode_device *gfxdecode, bitmap_ind16 &bitmap_bg, bitmap_ind16 &bitmap_fg, bitmap_ind16 &bitmap_sp, const rectangle &cliprect, UINT16* spriteram, int sprite_sizey, int spr_offset_y, int flipscreen );
diff --git a/src/mame/video/tecmosys.c b/src/mame/video/tecmosys.c
index e342fd34406..275e2fb45c2 100644
--- a/src/mame/video/tecmosys.c
+++ b/src/mame/video/tecmosys.c
@@ -72,7 +72,7 @@ WRITE16_MEMBER(tecmosys_state::fg_tilemap_w)
inline void tecmosys_state::set_color_555_tecmo(pen_t color, int rshift, int gshift, int bshift, UINT16 data)
{
- palette_set_color_rgb(machine(), color, pal5bit(data >> rshift), pal5bit(data >> gshift), pal5bit(data >> bshift));
+ m_palette->set_pen_color(color, pal5bit(data >> rshift), pal5bit(data >> gshift), pal5bit(data >> bshift));
}
WRITE16_MEMBER(tecmosys_state::tilemap_paletteram16_xGGGGGRRRRRBBBBB_word_w)
@@ -211,7 +211,7 @@ void tecmosys_state::tecmosys_tilemap_copy_to_compose(UINT16 pri)
void tecmosys_state::tecmosys_do_final_mix(bitmap_rgb32 &bitmap)
{
- const pen_t *paldata = machine().pens;
+ const pen_t *paldata = m_palette->pens();
int y,x;
UINT16 *srcptr;
UINT16 *srcptr2;
@@ -281,7 +281,7 @@ void tecmosys_state::tecmosys_do_final_mix(bitmap_rgb32 &bitmap)
UINT32 tecmosys_state::screen_update_tecmosys(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(machine().pens[0x4000], cliprect);
+ bitmap.fill(m_palette->pen(0x4000), cliprect);
m_bg0tilemap->set_scrolly(0, m_c80000regs[1]+16);
diff --git a/src/mame/video/tehkanwc.c b/src/mame/video/tehkanwc.c
index 4aa46fe7623..54fa3fdfdd8 100644
--- a/src/mame/video/tehkanwc.c
+++ b/src/mame/video/tehkanwc.c
@@ -148,7 +148,7 @@ void tehkanwc_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code, color, flipx, flipy, sx, sy, 0);
}
}
diff --git a/src/mame/video/terracre.c b/src/mame/video/terracre.c
index 24ffb694bfe..e4536f62af6 100644
--- a/src/mame/video/terracre.c
+++ b/src/mame/video/terracre.c
@@ -81,21 +81,18 @@ void terracre_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
flipy = !flipy;
}
- pGfx->transpen(
+ pGfx->transpen(m_palette,
bitmap,cliprect,tile, color,flipx,flipy,sx,sy,transparent_pen );
pSource += 4;
}
}
-void terracre_state::palette_init()
+PALETTE_INIT_MEMBER(terracre_state, terracre)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
@@ -103,7 +100,7 @@ void terracre_state::palette_init()
int g = pal4bit(color_prom[i + 0x100]);
int b = pal4bit(color_prom[i + 0x200]);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -111,7 +108,7 @@ void terracre_state::palette_init()
/* characters use colors 0-0x0f */
for (i = 0; i < 0x10; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
/* background tiles use colors 0xc0-0xff in four banks */
/* the bottom two bits of the color code select the palette bank for */
@@ -125,7 +122,7 @@ void terracre_state::palette_init()
else
ctabentry = 0xc0 | (i & 0x0f) | ((i & 0x30) >> 0);
- colortable_entry_set_value(machine().colortable, 0x10 + i, ctabentry);
+ palette.set_pen_indirect(0x10 + i, ctabentry);
}
/* sprites use colors 128-191 in four banks */
@@ -143,7 +140,7 @@ void terracre_state::palette_init()
else
ctabentry = 0x80 | ((i & 0x03) << 4) | (color_prom[i >> 4] & 0x0f);
- colortable_entry_set_value(machine().colortable, 0x110 + i_swapped, ctabentry);
+ palette.set_pen_indirect(0x110 + i_swapped, ctabentry);
}
}
@@ -196,7 +193,7 @@ void terracre_state::video_start()
UINT32 terracre_state::screen_update_amazon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
if( m_xscroll&0x2000 )
- bitmap.fill(get_black_pen(machine()), cliprect );
+ bitmap.fill(m_palette->black_pen(), cliprect );
else
m_background->draw(screen, bitmap, cliprect, 0, 0 );
diff --git a/src/mame/video/tetrisp2.c b/src/mame/video/tetrisp2.c
index 08ea00fcbc8..e6d99b400e4 100644
--- a/src/mame/video/tetrisp2.c
+++ b/src/mame/video/tetrisp2.c
@@ -48,14 +48,14 @@ WRITE16_MEMBER(tetrisp2_state::tetrisp2_palette_w)
{
data = COMBINE_DATA(&m_generic_paletteram_16[offset]);
if ((offset & 1) == 0)
- palette_set_color_rgb(machine(),offset/2,pal5bit(data >> 1),pal5bit(data >> 6),pal5bit(data >> 11));
+ m_palette->set_pen_color(offset/2,pal5bit(data >> 1),pal5bit(data >> 6),pal5bit(data >> 11));
}
WRITE16_MEMBER(tetrisp2_state::rocknms_sub_palette_w)
{
data = COMBINE_DATA(&m_generic_paletteram2_16[offset]);
if ((offset & 1) == 0)
- palette_set_color_rgb(machine(),(0x8000 + (offset/2)),pal5bit(data >> 1),pal5bit(data >> 6),pal5bit(data >> 11));
+ m_palette->set_pen_color((0x8000 + (offset/2)),pal5bit(data >> 1),pal5bit(data >> 6),pal5bit(data >> 11));
}
@@ -383,7 +383,7 @@ static void tetrisp2_draw_sprites( tetrisp2_state *state, _BitmapClass &bitmap,
if (priority_ram[(pri | 0x0a00 | 0x0000) / 2] & 0x38) primask |= 1 << 7;
- gfx->prio_zoom_transpen(bitmap,cliprect,
+ gfx->prio_zoom_transpen(state->m_palette,bitmap,cliprect,
code,
color,
flipx, flipy,
@@ -591,7 +591,7 @@ UINT32 tetrisp2_state::screen_update_rocknms_left(screen_device &screen, bitmap_
m_tilemap_sub_rot->set_scrollx(0, m_rocknms_sub_rotregs[ 0 ] + 0x400);
m_tilemap_sub_rot->set_scrolly(0, m_rocknms_sub_rotregs[ 2 ] + 0x400);
- bitmap.fill(machine().pens[0x0000], cliprect);
+ bitmap.fill(m_palette->pen(0x0000), cliprect);
screen.priority().fill(0, cliprect);
asc_pri = scr_pri = rot_pri = 0;
@@ -652,7 +652,7 @@ UINT32 tetrisp2_state::screen_update_rocknms_right(screen_device &screen, bitmap
m_tilemap_rot->set_scrolly(0, m_rotregs[ 2 ] + 0x400);
/* Black background color */
- bitmap.fill(machine().pens[0x0000], cliprect);
+ bitmap.fill(m_palette->pen(0x0000), cliprect);
screen.priority().fill(0, cliprect);
asc_pri = scr_pri = rot_pri = 0;
@@ -788,7 +788,7 @@ WRITE16_MEMBER(stepstag_state::stepstag_palette_w)
{
data = COMBINE_DATA(&m_generic_paletteram_16[offset]);
// if ((offset & 1) == 0)
- palette_set_color_rgb(machine(),offset/4,
+ m_palette->set_pen_color(offset/4,
mypal(m_generic_paletteram_16[offset/4*4+0] & 0xff),
mypal(m_generic_paletteram_16[offset/4*4+1] & 0xff),
mypal(m_generic_paletteram_16[offset/4*4+2] & 0xff)
diff --git a/src/mame/video/thedeep.c b/src/mame/video/thedeep.c
index 345e28834ec..486b24df476 100644
--- a/src/mame/video/thedeep.c
+++ b/src/mame/video/thedeep.c
@@ -84,12 +84,12 @@ WRITE8_MEMBER(thedeep_state::thedeep_vram_1_w)
***************************************************************************/
-void thedeep_state::palette_init()
+PALETTE_INIT_MEMBER(thedeep_state, thedeep)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
for (i = 0;i < 512;i++)
- palette_set_color_rgb(machine(),i,pal4bit(color_prom[0x400 + i] >> 0),pal4bit(color_prom[0x400 + i] >> 4),pal4bit(color_prom[0x200 + i] >> 0));
+ palette.set_pen_color(i,pal4bit(color_prom[0x400 + i] >> 0),pal4bit(color_prom[0x400 + i] >> 4),pal4bit(color_prom[0x200 + i] >> 0));
}
/***************************************************************************
@@ -187,7 +187,7 @@ void thedeep_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
for (y = 0; y < ny; y++)
{
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
code + (flipy ? (ny - y - 1) : y),
color,
flipx,flipy,
@@ -218,7 +218,7 @@ UINT32 thedeep_state::screen_update_thedeep(screen_device &screen, bitmap_ind16
m_tilemap_0->set_scrolly(x, y + scrolly);
}
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
m_tilemap_0->draw(screen, bitmap, cliprect, 0,0);
draw_sprites(bitmap,cliprect);
diff --git a/src/mame/video/thepit.c b/src/mame/video/thepit.c
index 3d7829fc300..52133a42b3e 100644
--- a/src/mame/video/thepit.c
+++ b/src/mame/video/thepit.c
@@ -29,7 +29,7 @@
***************************************************************************/
-void thepit_state::palette_init()
+PALETTE_INIT_MEMBER(thepit_state, thepit)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
@@ -53,13 +53,13 @@ void thepit_state::palette_init()
bit2 = (color_prom[i] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
/* allocate primary colors for the background and foreground
this is wrong, but I don't know where to pick the colors from */
for (i = 0; i < 8; i++)
- palette_set_color_rgb(machine(), i + 32, pal1bit(i >> 2), pal1bit(i >> 1), pal1bit(i >> 0));
+ palette.set_pen_color(i + 32, pal1bit(i >> 2), pal1bit(i >> 1), pal1bit(i >> 0));
}
@@ -81,13 +81,13 @@ PALETTE_INIT_MEMBER(thepit_state,suprmous)
UINT8 g = BITSWAP8(color_prom[i + 0x20], 0, 1, 2, 3, 4, 5, 6, 7);
UINT8 r = (b>>5&7)<<2 | (g>>6&3);
- palette_set_color_rgb(machine(), i, pal5bit(r), pal5bit(g), pal4bit(b));
+ palette.set_pen_color(i, pal5bit(r), pal5bit(g), pal4bit(b));
}
/* allocate primary colors for the background and foreground
this is wrong, but I don't know where to pick the colors from */
for (i = 0; i < 8; i++)
- palette_set_color_rgb(machine(), i + 32, pal1bit(i >> 2), pal1bit(i >> 1), pal1bit(i >> 0));
+ palette.set_pen_color(i + 32, pal1bit(i >> 2), pal1bit(i >> 1), pal1bit(i >> 0));
}
@@ -267,13 +267,13 @@ static void draw_sprites(running_machine &machine,
if (offs < 16) y++;
- state->m_gfxdecode->gfx(2 * state->m_graphics_bank + 1)->transpen(bitmap,cliprect,
+ state->m_gfxdecode->gfx(2 * state->m_graphics_bank + 1)->transpen(state->m_palette,bitmap,cliprect,
state->m_spriteram[offs + 1] & 0x3f,
state->m_spriteram[offs + 2],
flipx, flipy, x, y, 0);
- state->m_gfxdecode->gfx(2 * state->m_graphics_bank + 1)->transpen(bitmap,cliprect,
+ state->m_gfxdecode->gfx(2 * state->m_graphics_bank + 1)->transpen(state->m_palette,bitmap,cliprect,
state->m_spriteram[offs + 1] & 0x3f,
state->m_spriteram[offs + 2],
flipx, flipy, x-256, y, 0);
diff --git a/src/mame/video/thief.c b/src/mame/video/thief.c
index ae18202e3ca..7c2428a23d8 100644
--- a/src/mame/video/thief.c
+++ b/src/mame/video/thief.c
@@ -55,7 +55,7 @@ WRITE8_MEMBER(thief_state::thief_color_map_w){
int r = intensity[(data & 0x03) >> 0];
int g = intensity[(data & 0x0C) >> 2];
int b = intensity[(data & 0x30) >> 4];
- palette_set_color( machine(),offset,rgb_t(r,g,b) );
+ m_palette->set_pen_color( offset,rgb_t(r,g,b) );
}
/***************************************************************************/
@@ -106,7 +106,7 @@ UINT32 thief_state::screen_update_thief(screen_device &screen, bitmap_ind16 &bit
if (m_tms->screen_reset())
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
diff --git a/src/mame/video/thoop2.c b/src/mame/video/thoop2.c
index 5700e56f37e..45130e73ea5 100644
--- a/src/mame/video/thoop2.c
+++ b/src/mame/video/thoop2.c
@@ -178,7 +178,7 @@ void thoop2_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect,
ex = xflip ? (spr_size-1-x) : x;
ey = yflip ? (spr_size-1-y) : y;
- gfx->transpen(bitmap,cliprect,number + x_offset[ex] + y_offset[ey],
+ gfx->transpen(m_palette,bitmap,cliprect,number + x_offset[ex] + y_offset[ey],
color,xflip,yflip,
sx-0x0f+x*8,sy+y*8,0);
}
diff --git a/src/mame/video/thunderx.c b/src/mame/video/thunderx.c
index 4e5fb94d543..09fd42eca47 100644
--- a/src/mame/video/thunderx.c
+++ b/src/mame/video/thunderx.c
@@ -55,7 +55,7 @@ void thunderx_state::video_start()
m_layer_colorbase[2] = 16;
m_sprite_colorbase = 32;
- palette_set_shadow_factor(machine(),7.0/8.0);
+ m_palette->set_shadow_factor(7.0/8.0);
}
diff --git a/src/mame/video/tia.c b/src/mame/video/tia.c
index a94eb17432a..f63d55c2ea1 100644
--- a/src/mame/video/tia.c
+++ b/src/mame/video/tia.c
@@ -20,24 +20,24 @@ static const int nusiz[8][3] =
{ 1, 4, 0 }
};
-static void extend_palette(running_machine &machine) {
+static void extend_palette(palette_device &palette) {
int i,j;
for( i = 0; i < 128; i ++ )
{
- rgb_t new_rgb = palette_get_color( machine, i );
+ rgb_t new_rgb = palette.pen_color( i );
UINT8 new_r = new_rgb .r();
UINT8 new_g = new_rgb .g();
UINT8 new_b = new_rgb .b();
for ( j = 0; j < 128; j++ )
{
- rgb_t old_rgb = palette_get_color( machine, j );
+ rgb_t old_rgb = palette.pen_color( j );
UINT8 old_r = old_rgb .r();
UINT8 old_g = old_rgb .g();
UINT8 old_b = old_rgb .b();
- palette_set_color_rgb(machine, ( ( i + 1 ) << 7 ) | j,
+ palette.set_pen_color(( ( i + 1 ) << 7 ) | j,
( new_r + old_r ) / 2,
( new_g + old_g ) / 2,
( new_b + old_b ) / 2 );
@@ -281,13 +281,13 @@ Phase Shift 26.2
if (G > 1) G = 1;
if (B > 1) B = 1;
- palette_set_color_rgb(machine(),8 * i + j,
+ palette.set_pen_color(8 * i + j,
(UINT8) (255 * R + 0.5),
(UINT8) (255 * G + 0.5),
(UINT8) (255 * B + 0.5));
}
}
- extend_palette( machine() );
+ extend_palette( palette );
}
@@ -340,13 +340,13 @@ PALETTE_INIT_MEMBER(tia_pal_video_device, tia_pal)
if (G > 1) G = 1;
if (B > 1) B = 1;
- palette_set_color_rgb(machine(),8 * i + j,
+ palette.set_pen_color(8 * i + j,
(UINT8) (255 * R + 0.5),
(UINT8) (255 * G + 0.5),
(UINT8) (255 * B + 0.5));
}
}
- extend_palette( machine() );
+ extend_palette( palette );
}
tia_video_device::tia_video_device(const machine_config &mconfig, device_type type, const char *name, const char *shortname, const char *tag, device_t *owner, UINT32 clock)
@@ -368,7 +368,8 @@ tia_pal_video_device::tia_pal_video_device(const machine_config &mconfig, const
}
static MACHINE_CONFIG_FRAGMENT( tia_pal )
- MCFG_PALETTE_INIT_OVERRIDE(tia_pal_video_device, tia_pal)
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(tia_pal_video_device, tia_pal)
MACHINE_CONFIG_END
//-------------------------------------------------
@@ -394,7 +395,8 @@ tia_ntsc_video_device::tia_ntsc_video_device(const machine_config &mconfig, cons
}
static MACHINE_CONFIG_FRAGMENT( tia_ntsc )
- MCFG_PALETTE_INIT_OVERRIDE(tia_ntsc_video_device, tia_ntsc)
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(tia_ntsc_video_device, tia_ntsc)
MACHINE_CONFIG_END
//-------------------------------------------------
diff --git a/src/mame/video/tiamc1.c b/src/mame/video/tiamc1.c
index eba5b914089..2a5c1e2325e 100644
--- a/src/mame/video/tiamc1.c
+++ b/src/mame/video/tiamc1.c
@@ -74,10 +74,10 @@ WRITE8_MEMBER(tiamc1_state::tiamc1_bg_hshift_w)
WRITE8_MEMBER(tiamc1_state::tiamc1_palette_w)
{
- palette_set_color(machine(), offset, m_palette[data]);
+ m_palette->set_pen_color(offset, m_palette_ptr[data]);
}
-void tiamc1_state::palette_init()
+PALETTE_INIT_MEMBER(tiamc1_state, tiamc1)
{
// Voltage computed by Proteus
//static const float g_v[8]={1.05f,0.87f,0.81f,0.62f,0.44f,0.25f,0.19f,0.00f};
@@ -93,7 +93,7 @@ void tiamc1_state::palette_init()
int r, g, b, ir, ig, ib;
float tcol;
- m_palette = auto_alloc_array(machine(), rgb_t, 256);
+ m_palette_ptr = auto_alloc_array(machine(), rgb_t, 256);
for (col = 0; col < 256; col++) {
ir = (col >> 3) & 7;
@@ -106,7 +106,7 @@ void tiamc1_state::palette_init()
tcol = 255.0f * b_v[ib] / b_v[0];
b = 255 - (((int)tcol) & 255);
- m_palette[col] = rgb_t(r,g,b);
+ m_palette_ptr[col] = rgb_t(r,g,b);
}
}
@@ -167,7 +167,7 @@ void tiamc1_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
spritecode = m_spriteram_n[offs] ^ 0xff;
if (!(m_spriteram_a[offs] & 0x01))
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
spritecode,
0,
flipx, flipy,
diff --git a/src/mame/video/tigeroad.c b/src/mame/video/tigeroad.c
index dcb10b17e03..f76d9aed1cd 100644
--- a/src/mame/video/tigeroad.c
+++ b/src/mame/video/tigeroad.c
@@ -97,7 +97,7 @@ void tigeroad_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
}
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
tile_number,
color,
flipx, flipy,
diff --git a/src/mame/video/timelimt.c b/src/mame/video/timelimt.c
index a791ce2b179..7c7fd65ac5c 100644
--- a/src/mame/video/timelimt.c
+++ b/src/mame/video/timelimt.c
@@ -20,11 +20,11 @@
***************************************************************************/
-void timelimt_state::palette_init(){
+PALETTE_INIT_MEMBER(timelimt_state, timelimt){
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int bit0,bit1,bit2,r,g,b;
@@ -43,7 +43,7 @@ void timelimt_state::palette_init(){
bit1 = (*color_prom >> 7) & 0x01;
b = 0x4f * bit0 + 0xa8 * bit1;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
color_prom++;
}
}
@@ -126,7 +126,7 @@ void timelimt_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
code += ( attr & 0x80 ) ? 0x40 : 0x00;
code += ( attr & 0x40 ) ? 0x80 : 0x00;
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code,
attr & 7,
flipx,flipy,
diff --git a/src/mame/video/timeplt.c b/src/mame/video/timeplt.c
index 60323a2655d..4a7cebe50ef 100644
--- a/src/mame/video/timeplt.c
+++ b/src/mame/video/timeplt.c
@@ -37,10 +37,10 @@
***************************************************************************/
-void timeplt_state::palette_init()
+PALETTE_INIT_MEMBER(timeplt_state, timeplt)
{
const UINT8 *color_prom = memregion("proms")->base();
- rgb_t palette[32];
+ rgb_t palette_val[32];
int i;
for (i = 0; i < 32; i++)
@@ -66,7 +66,7 @@ void timeplt_state::palette_init()
bit4 = (color_prom[i + 0 * 32] >> 7) & 0x01;
b = 0x19 * bit0 + 0x24 * bit1 + 0x35 * bit2 + 0x40 * bit3 + 0x4d * bit4;
- palette[i] = rgb_t(r, g, b);
+ palette_val[i] = rgb_t(r, g, b);
}
color_prom += 2*32;
@@ -75,11 +75,11 @@ void timeplt_state::palette_init()
/* sprites */
for (i = 0; i < 64 * 4; i++)
- palette_set_color(machine(), 32 * 4 + i, palette[*color_prom++ & 0x0f]);
+ palette.set_pen_color(32 * 4 + i, palette_val[*color_prom++ & 0x0f]);
/* characters */
for (i = 0; i < 32 * 4; i++)
- palette_set_color(machine(), i, palette[(*color_prom++ & 0x0f) + 0x10]);
+ palette.set_pen_color(i, palette_val[(*color_prom++ & 0x0f) + 0x10]);
}
@@ -187,7 +187,7 @@ void timeplt_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
int flipx = ~spriteram_2[offs] & 0x40;
int flipy = spriteram_2[offs] & 0x80;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/tmnt.c b/src/mame/video/tmnt.c
index 041416c7c38..64ce1171d65 100644
--- a/src/mame/video/tmnt.c
+++ b/src/mame/video/tmnt.c
@@ -249,7 +249,7 @@ VIDEO_START_MEMBER(tmnt_state,tmnt)
m_tmnt_priorityflag = 0;
save_item(NAME(m_tmnt_priorityflag));
- palette_set_shadow_factor(machine(),0.75);
+ m_palette->set_shadow_factor(0.75);
}
VIDEO_START_MEMBER(tmnt_state,lgtnfght)/* also tmnt2, ssriders */
@@ -307,7 +307,7 @@ WRITE16_MEMBER(tmnt_state::tmnt_paletteram_word_w)
offset &= ~1;
data = (m_generic_paletteram_16[offset] << 8) | m_generic_paletteram_16[offset + 1];
- palette_set_color_rgb(machine(), offset / 2, pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
+ m_palette->set_pen_color(offset / 2, pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
}
@@ -724,21 +724,21 @@ UINT32 tmnt_state::screen_update_tmnt2(screen_device &screen, bitmap_ind16 &bitm
// dim all colors before it
for (i = 0; i < cb; i++)
- palette_set_pen_contrast(machine(), i, brt);
+ m_palette->set_pen_contrast(i, brt);
// reset all colors in range
for (i = cb; i < ce; i++)
- palette_set_pen_contrast(machine(), i, 1.0);
+ m_palette->set_pen_contrast(i, 1.0);
// dim all colors after it
for (i = ce; i < 2048; i++)
- palette_set_pen_contrast(machine(), i, brt);
+ m_palette->set_pen_contrast(i, brt);
// toggle shadow/highlight
if (~m_dim_c & 0x10)
- palette_set_shadow_mode(machine(), 1);
+ m_palette->set_shadow_mode(1);
else
- palette_set_shadow_mode(machine(), 0);
+ m_palette->set_shadow_mode(0);
}
screen_update_lgtnfght(screen, bitmap, cliprect);
diff --git a/src/mame/video/tnzs.c b/src/mame/video/tnzs.c
index 2303f4b5787..ce7c3ac2704 100644
--- a/src/mame/video/tnzs.c
+++ b/src/mame/video/tnzs.c
@@ -34,10 +34,10 @@ PALETTE_INIT_MEMBER(tnzs_state,arknoid2)
const UINT8 *color_prom = memregion("proms")->base();
int i, col;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
col = (color_prom[i] << 8) + color_prom[i + 512];
- palette_set_color_rgb(machine(), i, pal5bit(col >> 10), pal5bit(col >> 5), pal5bit(col >> 0));
+ palette.set_pen_color(i, pal5bit(col >> 10), pal5bit(col >> 5), pal5bit(col >> 0));
}
}
diff --git a/src/mame/video/toaplan1.c b/src/mame/video/toaplan1.c
index e0516ac6a0c..9dd49d15ca8 100644
--- a/src/mame/video/toaplan1.c
+++ b/src/mame/video/toaplan1.c
@@ -412,7 +412,7 @@ READ16_MEMBER(toaplan1_state::toaplan1_colorram1_r)
WRITE16_MEMBER(toaplan1_state::toaplan1_colorram1_w)
{
COMBINE_DATA(&m_colorram1[offset]);
- paletteram_xBBBBBGGGGGRRRRR_word_w(space, offset, data, mem_mask);
+ m_palette->write(space, offset, data, mem_mask);
}
/* sprite palette */
@@ -424,7 +424,7 @@ READ16_MEMBER(toaplan1_state::toaplan1_colorram2_r)
WRITE16_MEMBER(toaplan1_state::toaplan1_colorram2_w)
{
COMBINE_DATA(&m_colorram2[offset]);
- paletteram_xBBBBBGGGGGRRRRR_word_w(space, offset+(m_colorram1.bytes()/2), data, mem_mask);
+ m_palette->write(space, offset+(m_colorram1.bytes()/2), data, mem_mask);
}
READ16_MEMBER(toaplan1_state::toaplan1_spriteram16_r)
diff --git a/src/mame/video/toki.c b/src/mame/video/toki.c
index 1b4beca98a0..51a97405ec8 100644
--- a/src/mame/video/toki.c
+++ b/src/mame/video/toki.c
@@ -196,7 +196,7 @@ void toki_state::toki_draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprec
flipy=1;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
tile,
color,
flipx,flipy,
@@ -233,7 +233,7 @@ void toki_state::tokib_draw_sprites(bitmap_ind16 &bitmap,const rectangle &clipre
tile = sprite_word[1] & 0x1fff;
color = sprite_word[2] >> 12;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
tile,
color,
flipx,0,
diff --git a/src/mame/video/toobin.c b/src/mame/video/toobin.c
index d450dd3a50f..8451f5427d5 100644
--- a/src/mame/video/toobin.c
+++ b/src/mame/video/toobin.c
@@ -110,11 +110,11 @@ WRITE16_MEMBER( toobin_state::toobin_paletteram_w )
if (green) green += 38;
if (blue) blue += 38;
- palette_set_color(machine(), offset & 0x3ff, rgb_t(red, green, blue));
+ m_palette->set_pen_color(offset & 0x3ff, rgb_t(red, green, blue));
if (!(newword & 0x8000))
- palette_set_pen_contrast(machine(), offset & 0x3ff, m_brightness);
+ m_palette->set_pen_contrast(offset & 0x3ff, m_brightness);
else
- palette_set_pen_contrast(machine(), offset & 0x3ff, 1.0);
+ m_palette->set_pen_contrast(offset & 0x3ff, 1.0);
}
}
@@ -129,7 +129,7 @@ WRITE16_MEMBER( toobin_state::toobin_intensity_w )
for (i = 0; i < 0x400; i++)
if (!(m_generic_paletteram_16[i] & 0x8000))
- palette_set_pen_contrast(machine(), i, m_brightness);
+ m_palette->set_pen_contrast(i, m_brightness);
}
}
@@ -223,7 +223,7 @@ UINT32 toobin_state::screen_update_toobin(screen_device &screen, bitmap_rgb32 &b
/* draw and merge the MO */
bitmap_ind16 &mobitmap = m_mob->bitmap();
- const rgb_t *palette = machine().palette->entry_list_adjusted();
+ const rgb_t *palette = m_palette->palette()->entry_list_adjusted();
for (int y = cliprect.min_y; y <= cliprect.max_y; y++)
{
UINT32 *dest = &bitmap.pix32(y);
diff --git a/src/mame/video/topspeed.c b/src/mame/video/topspeed.c
index db85d5e6470..dd149a8d17e 100644
--- a/src/mame/video/topspeed.c
+++ b/src/mame/video/topspeed.c
@@ -193,7 +193,7 @@ void topspeed_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap,
zx = x + (((k + 1) * zoomx) / 8) - curx;
zy = y + (((j + 1) * zoomy) / 16) - cury;
- m_gfxdecode->gfx(0)->prio_zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->prio_zoom_transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/toypop.c b/src/mame/video/toypop.c
index 18cbeb48127..129f289891a 100644
--- a/src/mame/video/toypop.c
+++ b/src/mame/video/toypop.c
@@ -18,11 +18,9 @@
***************************************************************************/
-void toypop_state::palette_init()
+PALETTE_INIT_MEMBER(toypop_state, toypop)
{
const UINT8 *color_prom = memregion("proms")->base();
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 256);
for (int i = 0;i < 256;i++)
{
@@ -47,7 +45,7 @@ void toypop_state::palette_init()
bit3 = (color_prom[i+0x200] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r,g,b));
+ palette.set_indirect_color(i, rgb_t(r,g,b));
}
for (int i = 0;i < 256;i++)
@@ -55,17 +53,17 @@ void toypop_state::palette_init()
UINT8 entry;
// characters
- colortable_entry_set_value(machine().colortable, i + 0*256, (color_prom[i + 0x300] & 0x0f) | 0x70);
- colortable_entry_set_value(machine().colortable, i + 1*256, (color_prom[i + 0x300] & 0x0f) | 0xf0);
+ palette.set_pen_indirect(i + 0*256, (color_prom[i + 0x300] & 0x0f) | 0x70);
+ palette.set_pen_indirect(i + 1*256, (color_prom[i + 0x300] & 0x0f) | 0xf0);
// sprites
entry = color_prom[i + 0x500];
- colortable_entry_set_value(machine().colortable, i + 2*256, entry);
+ palette.set_pen_indirect(i + 2*256, entry);
}
for (int i = 0;i < 16;i++)
{
// background
- colortable_entry_set_value(machine().colortable, i + 3*256 + 0*16, 0x60 + i);
- colortable_entry_set_value(machine().colortable, i + 3*256 + 1*16, 0xe0 + i);
+ palette.set_pen_indirect(i + 3*256 + 0*16, 0x60 + i);
+ palette.set_pen_indirect(i + 3*256 + 1*16, 0xe0 + i);
}
}
@@ -254,12 +252,12 @@ void toypop_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect,
{
for (int x = 0;x <= sizex;x++)
{
- m_gfxdecode->gfx(1)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,cliprect,
sprite + gfx_offs[y ^ (sizey & flipy)][x ^ (sizex & flipx)],
color,
flipx,flipy,
sx + 16*x,sy + 16*y,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, 0xff));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 0xff));
}
}
}
diff --git a/src/mame/video/tp84.c b/src/mame/video/tp84.c
index fd6a99e1e8f..0557df7568e 100644
--- a/src/mame/video/tp84.c
+++ b/src/mame/video/tp84.c
@@ -41,7 +41,7 @@
220 ohm
100 ohm
*/
-void tp84_state::palette_init()
+PALETTE_INIT_MEMBER(tp84_state, tp84)
{
const UINT8 *color_prom = memregion("proms")->base();
static const int resistances[4] = { 1000, 470, 220, 100 };
@@ -54,9 +54,6 @@ void tp84_state::palette_init()
0, 0, 0, 0, 0,
0, 0, 0, 0, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x100);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x100; i++)
{
@@ -84,7 +81,7 @@ void tp84_state::palette_init()
bit3 = (color_prom[i + 0x200] >> 3) & 0x01;
b = combine_4_weights(weights, bit0, bit1, bit2, bit3);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -98,7 +95,7 @@ void tp84_state::palette_init()
for (j = 0; j < 8; j++)
{
UINT8 ctabentry = ((~i & 0x100) >> 1) | (j << 4) | (color_prom[i] & 0x0f);
- colortable_entry_set_value(machine().colortable, ((i & 0x100) << 3) | (j << 8) | (i & 0xff), ctabentry);
+ palette.set_pen_indirect(((i & 0x100) << 3) | (j << 8) | (i & 0xff), ctabentry);
}
}
}
@@ -164,8 +161,8 @@ void tp84_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
int flip_x = ~m_spriteram[offs + 2] & 0x40;
int flip_y = m_spriteram[offs + 2] & 0x80;
- m_gfxdecode->gfx(1)->transmask(bitmap,cliprect, code, color, flip_x, flip_y, x, y,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, palette_base));
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,cliprect, code, color, flip_x, flip_y, x, y,
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, palette_base));
}
}
diff --git a/src/mame/video/trackfld.c b/src/mame/video/trackfld.c
index fef6ac92851..7ec3afb0160 100644
--- a/src/mame/video/trackfld.c
+++ b/src/mame/video/trackfld.c
@@ -43,9 +43,6 @@ PALETTE_INIT_MEMBER(trackfld_state,trackfld)
3, &resistances_rg[0], gweights, 1000, 0,
2, &resistances_b[0], bweights, 1000, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x20);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -69,7 +66,7 @@ PALETTE_INIT_MEMBER(trackfld_state,trackfld)
bit1 = (color_prom[i] >> 7) & 0x01;
b = combine_2_weights(bweights, bit0, bit1);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -79,14 +76,14 @@ PALETTE_INIT_MEMBER(trackfld_state,trackfld)
for (i = 0; i < 0x100; i++)
{
UINT8 ctabentry = color_prom[i] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* characters */
for (i = 0x100; i < 0x200; i++)
{
UINT8 ctabentry = (color_prom[i] & 0x0f) | 0x10;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -224,19 +221,19 @@ void trackfld_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
- m_gfxdecode->gfx(0)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transmask(m_palette,bitmap,cliprect,
code + m_sprite_bank1 + m_sprite_bank2, color,
flipx, flipy,
sx, sy,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(0), color, 0));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(0), color, 0));
/* redraw with wraparound */
- m_gfxdecode->gfx(0)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transmask(m_palette,bitmap,cliprect,
code + m_sprite_bank1 + m_sprite_bank2, color,
flipx, flipy,
sx - 256, sy,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(0), color, 0));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(0), color, 0));
}
}
diff --git a/src/mame/video/travrusa.c b/src/mame/video/travrusa.c
index 804b35b98ff..2980338a487 100644
--- a/src/mame/video/travrusa.c
+++ b/src/mame/video/travrusa.c
@@ -37,14 +37,11 @@ J Clegg
***************************************************************************/
-void travrusa_state::palette_init()
+PALETTE_INIT_MEMBER(travrusa_state, travrusa)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x90);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x80; i++)
{
@@ -69,7 +66,7 @@ void travrusa_state::palette_init()
bit2 = (color_prom[i] >> 2) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
for (i = 0x80; i < 0x90; i++)
@@ -95,7 +92,7 @@ void travrusa_state::palette_init()
bit2 = (color_prom[(i - 0x80) + 0x200] >> 2) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -103,13 +100,13 @@ void travrusa_state::palette_init()
/* characters */
for (i = 0; i < 0x80; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
/* sprites */
for (i = 0x80; i < 0x100; i++)
{
UINT8 ctabentry = (color_prom[i - 0x80] & 0x0f) | 0x80;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -118,9 +115,6 @@ PALETTE_INIT_MEMBER(travrusa_state,shtrider)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x90);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x80; i++)
{
@@ -145,7 +139,7 @@ PALETTE_INIT_MEMBER(travrusa_state,shtrider)
bit2 = (color_prom[i + 0x100] >> 2) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
for (i = 0x80; i < 0x90; i++)
@@ -171,7 +165,7 @@ PALETTE_INIT_MEMBER(travrusa_state,shtrider)
bit2 = (color_prom[(i - 0x80) + 0x200] >> 2) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -179,13 +173,13 @@ PALETTE_INIT_MEMBER(travrusa_state,shtrider)
/* characters */
for (i = 0; i < 0x80; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
/* sprites */
for (i = 0x80; i < 0x100; i++)
{
UINT8 ctabentry = (color_prom[i - 0x80] & 0x0f) | 0x80;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -317,7 +311,7 @@ void travrusa_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,clip,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,clip,
code,
attr & 0x0f,
flipx, flipy,
diff --git a/src/mame/video/triplhnt.c b/src/mame/video/triplhnt.c
index 59af52ac3f3..05e6b94c03a 100644
--- a/src/mame/video/triplhnt.c
+++ b/src/mame/video/triplhnt.c
@@ -72,7 +72,7 @@ void triplhnt_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
/* render sprite to auxiliary bitmap */
- m_gfxdecode->gfx(m_sprite_zoom)->opaque(m_helper,cliprect,
+ m_gfxdecode->gfx(m_sprite_zoom)->opaque(m_palette,m_helper,cliprect,
2 * code + m_sprite_bank, 0, code & 8, 0,
rect.min_x, rect.min_y);
diff --git a/src/mame/video/truco.c b/src/mame/video/truco.c
index f7949e8e3dd..4f6ae6a108d 100644
--- a/src/mame/video/truco.c
+++ b/src/mame/video/truco.c
@@ -9,11 +9,11 @@
#include "emu.h"
#include "includes/truco.h"
-void truco_state::palette_init()
+PALETTE_INIT_MEMBER(truco_state, truco)
{
int i;
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int r = ( i & 0x8 ) ? 0xff : 0x00;
int g = ( i & 0x4 ) ? 0xff : 0x00;
@@ -27,7 +27,7 @@ void truco_state::palette_init()
b >>= 1;
}
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
}
diff --git a/src/mame/video/trucocl.c b/src/mame/video/trucocl.c
index 9f439559e78..423711a801c 100644
--- a/src/mame/video/trucocl.c
+++ b/src/mame/video/trucocl.c
@@ -36,13 +36,13 @@ Daughterboard: Custom made, plugged in the 2 roms and Z80 mainboard sockets.
#include "includes/trucocl.h"
-void trucocl_state::palette_init()
+PALETTE_INIT_MEMBER(trucocl_state, trucocl)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
for (i = 0;i < 32;i++)
- palette_set_color_rgb(machine(),i,pal4bit(color_prom[i] >> 0),pal4bit(color_prom[i+32] >> 0),pal4bit(color_prom[i+32] >> 4));
+ palette.set_pen_color(i,pal4bit(color_prom[i] >> 0),pal4bit(color_prom[i+32] >> 0),pal4bit(color_prom[i+32] >> 4));
}
WRITE8_MEMBER(trucocl_state::trucocl_videoram_w)
diff --git a/src/mame/video/tryout.c b/src/mame/video/tryout.c
index f624be53a3c..66677122d07 100644
--- a/src/mame/video/tryout.c
+++ b/src/mame/video/tryout.c
@@ -9,12 +9,12 @@
#include "includes/tryout.h"
-void tryout_state::palette_init()
+PALETTE_INIT_MEMBER(tryout_state, tryout)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int bit0,bit1,bit2,r,g,b;
@@ -34,7 +34,7 @@ void tryout_state::palette_init()
bit2 = (color_prom[i] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
}
@@ -209,17 +209,17 @@ void tryout_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
/* Double Height */
if(spriteram[offs] & 0x10)
{
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
sprite,
color,fx,fy,x,y + inc,0);
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
sprite+1,
color,fx,fy,x,y,0);
}
else
{
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
sprite,
color,fx,fy,x,y,0);
}
@@ -246,7 +246,7 @@ UINT32 tryout_state::screen_update_tryout(screen_device &screen, bitmap_ind16 &b
if(!(m_gfx_control[0] & 0x8)) // screen disable
{
/* TODO: Color might be different, needs a video from an original pcb. */
- bitmap.fill(machine().pens[0x10], cliprect);
+ bitmap.fill(m_palette->pen(0x10), cliprect);
}
else
{
diff --git a/src/mame/video/tsamurai.c b/src/mame/video/tsamurai.c
index 0bd1836ca39..27db9fa87d8 100644
--- a/src/mame/video/tsamurai.c
+++ b/src/mame/video/tsamurai.c
@@ -166,7 +166,7 @@ void tsamurai_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
if( flip_screen() )
{
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
sprite_number&0x7f,
color,
1,(sprite_number&0x80)?0:1,
@@ -174,7 +174,7 @@ void tsamurai_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
}
else
{
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
sprite_number&0x7f,
color,
0,sprite_number&0x80,
diff --git a/src/mame/video/tubep.c b/src/mame/video/tubep.c
index 52fe6865497..a3db488ff0a 100644
--- a/src/mame/video/tubep.c
+++ b/src/mame/video/tubep.c
@@ -189,7 +189,7 @@ PALETTE_INIT_MEMBER(tubep_state,tubep)
bit1 = (*color_prom >> 7) & 0x01;
b = combine_2_weights(weights_txt_b, bit0, bit1);
- palette_set_color(machine(),i, rgb_t(r,g,b));
+ palette.set_pen_color(i, rgb_t(r,g,b));
color_prom++;
}
@@ -330,7 +330,7 @@ PALETTE_INIT_MEMBER(tubep_state,tubep)
/*logerror("Calculate [%x:%x] (active resistors:r=%i g=%i b=%i) = ", i, shade, active_r, active_g, active_b);*/
/*logerror("r:%3i g:%3i b:%3i\n",r,g,b );*/
- palette_set_color(machine(),32+i*0x40+sh, rgb_t(r,g,b));
+ palette.set_pen_color(32+i*0x40+sh, rgb_t(r,g,b));
}
}
}
@@ -687,7 +687,7 @@ PALETTE_INIT_MEMBER(tubep_state,rjammer)
2, resistors_b, weights_b, 470, 0,
0, 0, 0, 0, 0 );
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int bit0,bit1,bit2,r,g,b;
@@ -706,7 +706,7 @@ PALETTE_INIT_MEMBER(tubep_state,rjammer)
bit1 = (*color_prom >> 7) & 0x01;
b = combine_2_weights(weights_b, bit0, bit1);
- palette_set_color(machine(),i, rgb_t(r,g,b));
+ palette.set_pen_color(i, rgb_t(r,g,b));
color_prom++;
}
diff --git a/src/mame/video/tunhunt.c b/src/mame/video/tunhunt.c
index 68f0886e490..2a22bbd562c 100644
--- a/src/mame/video/tunhunt.c
+++ b/src/mame/video/tunhunt.c
@@ -80,7 +80,7 @@ void tunhunt_state::video_start()
m_fg_tilemap->set_scrollx(0, 64);
}
-void tunhunt_state::palette_init()
+PALETTE_INIT_MEMBER(tunhunt_state, tunhunt)
{
int i;
@@ -89,12 +89,9 @@ void tunhunt_state::palette_init()
* graphics, which are unpacked ahead of time and drawn using MAME's drawgfx primitives.
*/
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x10);
-
/* motion objects/box */
for (i = 0; i < 0x10; i++)
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
/* AlphaNumerics (1bpp)
* 2 bits of hilite select from 4 different background colors
@@ -103,26 +100,26 @@ void tunhunt_state::palette_init()
*/
/* alpha hilite#0 */
- colortable_entry_set_value(machine().colortable, 0x10, 0x0); /* background color#0 (transparent) */
- colortable_entry_set_value(machine().colortable, 0x11, 0x4); /* foreground color */
+ palette.set_pen_indirect(0x10, 0x0); /* background color#0 (transparent) */
+ palette.set_pen_indirect(0x11, 0x4); /* foreground color */
/* alpha hilite#1 */
- colortable_entry_set_value(machine().colortable, 0x12, 0x5); /* background color#1 */
- colortable_entry_set_value(machine().colortable, 0x13, 0x4); /* foreground color */
+ palette.set_pen_indirect(0x12, 0x5); /* background color#1 */
+ palette.set_pen_indirect(0x13, 0x4); /* foreground color */
/* alpha hilite#2 */
- colortable_entry_set_value(machine().colortable, 0x14, 0x6); /* background color#2 */
- colortable_entry_set_value(machine().colortable, 0x15, 0x4); /* foreground color */
+ palette.set_pen_indirect(0x14, 0x6); /* background color#2 */
+ palette.set_pen_indirect(0x15, 0x4); /* foreground color */
/* alpha hilite#3 */
- colortable_entry_set_value(machine().colortable, 0x16, 0xf); /* background color#3 */
- colortable_entry_set_value(machine().colortable, 0x17, 0x4); /* foreground color */
+ palette.set_pen_indirect(0x16, 0xf); /* background color#3 */
+ palette.set_pen_indirect(0x17, 0x4); /* foreground color */
/* shell graphics; these are either 1bpp (2 banks) or 2bpp. It isn't clear which.
* In any event, the following pens are associated with the shell graphics:
*/
- colortable_entry_set_value(machine().colortable, 0x18, 0);
- colortable_entry_set_value(machine().colortable, 0x19, 4);//1;
+ palette.set_pen_indirect(0x18, 0);
+ palette.set_pen_indirect(0x19, 4);//1;
}
/*
@@ -192,7 +189,7 @@ void tunhunt_state::set_pens()
green = APPLY_SHADE(green,shade);
blue = APPLY_SHADE(blue,shade);
- colortable_palette_set_color( machine().colortable,i,rgb_t(red,green,blue) );
+ m_palette->set_indirect_color( i,rgb_t(red,green,blue) );
}
}
@@ -337,7 +334,7 @@ void tunhunt_state::draw_shell(bitmap_ind16 &bitmap,
for( sy=0; sy<256; sy+=16 )
{
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
picture_code,
0, /* color */
0,0, /* flip */
@@ -362,7 +359,7 @@ void tunhunt_state::draw_shell(bitmap_ind16 &bitmap,
*/
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
picture_code,
0, /* color */
0,0, /* flip */
diff --git a/src/mame/video/turbo.c b/src/mame/video/turbo.c
index 6546da2d4ce..ebf44a6a5e0 100644
--- a/src/mame/video/turbo.c
+++ b/src/mame/video/turbo.c
@@ -59,7 +59,7 @@ PALETTE_INIT_MEMBER(turbo_state,turbo)
bit1 = (i >> 7) & 1;
b = combine_2_weights(bweights, bit0, bit1);
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -98,7 +98,7 @@ PALETTE_INIT_MEMBER(turbo_state,subroc3d)
bit1 = (i >> 7) & 1;
b = combine_2_weights(bweights, bit0, bit1);
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -139,7 +139,7 @@ PALETTE_INIT_MEMBER(turbo_state,buckrog)
bit3 = (i >> 7) & 1;
b = combine_4_weights(bweights, bit0, bit1, bit2, bit3);
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
diff --git a/src/mame/video/twin16.c b/src/mame/video/twin16.c
index 50819df18c8..42dae620e54 100644
--- a/src/mame/video/twin16.c
+++ b/src/mame/video/twin16.c
@@ -52,7 +52,7 @@ WRITE16_MEMBER(twin16_state::twin16_paletteram_word_w)
offset &= ~1;
data = ((m_generic_paletteram_16[offset] & 0xff) << 8) | (m_generic_paletteram_16[offset + 1] & 0xff);
- palette_set_color_rgb(machine(), offset / 2, pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
+ m_palette->set_pen_color(offset / 2, pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
}
WRITE16_MEMBER(twin16_state::fround_gfx_bank_w)
@@ -311,7 +311,7 @@ void twin16_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap )
if (pdest[sx]<priority) {
if (shadow) {
- dest[sx] = machine().shadow_table[dest[sx]];
+ dest[sx] = m_palette->shadow_table()[dest[sx]];
pdest[sx]|=TWIN16_SPRITE_CAST_SHADOW;
}
else {
@@ -320,7 +320,7 @@ void twin16_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap )
}
else if (!shadow && pdest[sx]&TWIN16_SPRITE_CAST_SHADOW && (pdest[sx]&0xf)<priority) {
// shadow cast onto sprite below, evident in devilw lava level
- dest[sx] = machine().shadow_table[pal_base + pen];
+ dest[sx] = m_palette->shadow_table()[pal_base + pen];
pdest[sx]^=TWIN16_SPRITE_CAST_SHADOW;
}
@@ -493,7 +493,7 @@ VIDEO_START_MEMBER(twin16_state,twin16)
m_text_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(twin16_state::get_text_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
m_text_tilemap->set_transparent_pen(0);
- palette_set_shadow_factor(machine(),0.4); // screenshots estimate
+ m_palette->set_shadow_factor(0.4); // screenshots estimate
memset(m_sprite_buffer,0xff,0x800*sizeof(UINT16));
m_sprite_busy = 0;
diff --git a/src/mame/video/tx1.c b/src/mame/video/tx1.c
index 4346f40bae0..9ee16fb6ff6 100644
--- a/src/mame/video/tx1.c
+++ b/src/mame/video/tx1.c
@@ -134,7 +134,7 @@ PALETTE_INIT_MEMBER(tx1_state,tx1)
g = compute_res_net(color_prom[i + 0x400] & 0xf, 1, &tx1_net_info);
b = compute_res_net(color_prom[i + 0x500] & 0xf, 2, &tx1_net_info);
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
@@ -1285,7 +1285,7 @@ PALETTE_INIT_MEMBER(tx1_state,buggyboy)
bit4 = BIT(color_prom[i + 0x300], 0);
b = 0x06 * bit4 + 0x0d * bit0 + 0x1e * bit1 + 0x41 * bit2 + 0x8a * bit3;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
diff --git a/src/mame/video/ultratnk.c b/src/mame/video/ultratnk.c
index 9421cfdd822..8c88adaa816 100644
--- a/src/mame/video/ultratnk.c
+++ b/src/mame/video/ultratnk.c
@@ -9,28 +9,26 @@ Atari Ultra Tank video emulation
#include "audio/sprint4.h"
-void ultratnk_state::palette_init()
+PALETTE_INIT_MEMBER(ultratnk_state, ultratnk)
{
const UINT8 *color_prom = memregion("proms")->base();
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 4);
-
- colortable_palette_set_color(machine().colortable, 0, rgb_t(0x00, 0x00, 0x00));
- colortable_palette_set_color(machine().colortable, 1, rgb_t(0xa4, 0xa4, 0xa4));
- colortable_palette_set_color(machine().colortable, 2, rgb_t(0x5b, 0x5b, 0x5b));
- colortable_palette_set_color(machine().colortable, 3, rgb_t(0xff, 0xff, 0xff));
-
- colortable_entry_set_value(machine().colortable, 0, color_prom[0x00] & 3);
- colortable_entry_set_value(machine().colortable, 2, color_prom[0x00] & 3);
- colortable_entry_set_value(machine().colortable, 4, color_prom[0x00] & 3);
- colortable_entry_set_value(machine().colortable, 6, color_prom[0x00] & 3);
- colortable_entry_set_value(machine().colortable, 8, color_prom[0x00] & 3);
-
- colortable_entry_set_value(machine().colortable, 1, color_prom[0x01] & 3);
- colortable_entry_set_value(machine().colortable, 3, color_prom[0x02] & 3);
- colortable_entry_set_value(machine().colortable, 5, color_prom[0x04] & 3);
- colortable_entry_set_value(machine().colortable, 7, color_prom[0x08] & 3);
- colortable_entry_set_value(machine().colortable, 9, color_prom[0x10] & 3);
+
+ palette.set_indirect_color(0, rgb_t(0x00, 0x00, 0x00));
+ palette.set_indirect_color(1, rgb_t(0xa4, 0xa4, 0xa4));
+ palette.set_indirect_color(2, rgb_t(0x5b, 0x5b, 0x5b));
+ palette.set_indirect_color(3, rgb_t(0xff, 0xff, 0xff));
+
+ palette.set_pen_indirect(0, color_prom[0x00] & 3);
+ palette.set_pen_indirect(2, color_prom[0x00] & 3);
+ palette.set_pen_indirect(4, color_prom[0x00] & 3);
+ palette.set_pen_indirect(6, color_prom[0x00] & 3);
+ palette.set_pen_indirect(8, color_prom[0x00] & 3);
+
+ palette.set_pen_indirect(1, color_prom[0x01] & 3);
+ palette.set_pen_indirect(3, color_prom[0x02] & 3);
+ palette.set_pen_indirect(5, color_prom[0x04] & 3);
+ palette.set_pen_indirect(7, color_prom[0x08] & 3);
+ palette.set_pen_indirect(9, color_prom[0x10] & 3);
}
@@ -75,7 +73,7 @@ UINT32 ultratnk_state::screen_update_ultratnk(screen_device &screen, bitmap_ind1
if (!(attr & 0x80))
{
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
(code >> 3) | bank,
i,
0, 0,
@@ -94,7 +92,7 @@ void ultratnk_state::screen_eof_ultratnk(screen_device &screen, bool state)
if (state)
{
int i;
- UINT16 BG = colortable_entry_get_value(machine().colortable, 0);
+ UINT16 BG = m_palette->pen_indirect(0);
UINT8 *videoram = m_videoram;
/* check for sprite-playfield collisions */
@@ -124,7 +122,7 @@ void ultratnk_state::screen_eof_ultratnk(screen_device &screen, bool state)
if (code & 4)
bank = 32;
- m_gfxdecode->gfx(1)->transpen(m_helper,rect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,m_helper,rect,
(code >> 3) | bank,
4,
0, 0,
@@ -133,7 +131,7 @@ void ultratnk_state::screen_eof_ultratnk(screen_device &screen, bool state)
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(machine().colortable, m_helper.pix16(y, x)) != BG)
+ if (m_palette->pen_indirect(m_helper.pix16(y, x)) != BG)
m_collision[i] = 1;
}
diff --git a/src/mame/video/undrfire.c b/src/mame/video/undrfire.c
index df8e5d4b362..526ff24708b 100644
--- a/src/mame/video/undrfire.c
+++ b/src/mame/video/undrfire.c
@@ -12,7 +12,7 @@ void undrfire_state::video_start()
m_spritelist = auto_alloc_array(machine(), struct tempsprite, 0x4000);
for (i = 0; i < 16384; i++) /* Fix later - some weird colours in places */
- palette_set_color(machine(), i, rgb_t(0,0,0));
+ m_palette->set_pen_color(i, rgb_t(0,0,0));
}
/***************************************************************
@@ -175,7 +175,7 @@ void undrfire_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,co
}
else
{
- m_gfxdecode->gfx(sprite_ptr->gfx)->zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(sprite_ptr->gfx)->zoom_transpen(m_palette,bitmap,cliprect,
sprite_ptr->code,
sprite_ptr->color,
sprite_ptr->flipx,sprite_ptr->flipy,
@@ -194,7 +194,7 @@ logerror("Sprite number %04x had %02x invalid chunks\n",tilenum,bad_chunks);
{
sprite_ptr--;
- m_gfxdecode->gfx(sprite_ptr->gfx)->prio_zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(sprite_ptr->gfx)->prio_zoom_transpen(m_palette,bitmap,cliprect,
sprite_ptr->code,
sprite_ptr->color,
sprite_ptr->flipx,sprite_ptr->flipy,
@@ -313,7 +313,7 @@ void undrfire_state::draw_sprites_cbombers(screen_device &screen, bitmap_ind16 &
}
else
{
- m_gfxdecode->gfx(sprite_ptr->gfx)->zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(sprite_ptr->gfx)->zoom_transpen(m_palette,bitmap,cliprect,
sprite_ptr->code,
sprite_ptr->color,
sprite_ptr->flipx,sprite_ptr->flipy,
@@ -328,7 +328,7 @@ void undrfire_state::draw_sprites_cbombers(screen_device &screen, bitmap_ind16 &
{
sprite_ptr--;
- m_gfxdecode->gfx(sprite_ptr->gfx)->prio_zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(sprite_ptr->gfx)->prio_zoom_transpen(m_palette,bitmap,cliprect,
sprite_ptr->code,
sprite_ptr->color,
sprite_ptr->flipx,sprite_ptr->flipy,
diff --git a/src/mame/video/unico.c b/src/mame/video/unico.c
index 12b6a27299b..0bb94c52c45 100644
--- a/src/mame/video/unico.c
+++ b/src/mame/video/unico.c
@@ -57,7 +57,7 @@ WRITE16_MEMBER(unico_state::unico_palette_w)
COMBINE_DATA(&m_generic_paletteram_16[offset]);
data1 = m_generic_paletteram_16[offset & ~1];
data2 = m_generic_paletteram_16[offset | 1];
- palette_set_color_rgb( machine(),offset/2,
+ m_palette->set_pen_color( offset/2,
(data1 >> 8) & 0xFC,
(data1 >> 0) & 0xFC,
(data2 >> 8) & 0xFC );
@@ -66,7 +66,7 @@ WRITE16_MEMBER(unico_state::unico_palette_w)
WRITE32_MEMBER(unico_state::unico_palette32_w)
{
UINT32 rgb0 = COMBINE_DATA(&m_generic_paletteram_32[offset]);
- palette_set_color_rgb( machine(),offset,
+ m_palette->set_pen_color( offset,
(rgb0 >> 24) & 0xFC,
(rgb0 >> 16) & 0xFC,
(rgb0 >> 8) & 0xFC );
@@ -230,7 +230,7 @@ void unico_state::unico_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap
for (x = startx ; x != endx ; x += incx)
{
- m_gfxdecode->gfx(0)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->prio_transpen(m_palette,bitmap,cliprect,
code++,
attr & 0x1f,
flipx, flipy,
diff --git a/src/mame/video/usgames.c b/src/mame/video/usgames.c
index 4303b9d9891..622606e1705 100644
--- a/src/mame/video/usgames.c
+++ b/src/mame/video/usgames.c
@@ -2,7 +2,7 @@
#include "includes/usgames.h"
-void usgames_state::palette_init()
+PALETTE_INIT_MEMBER(usgames_state, usgames)
{
int j;
@@ -25,7 +25,7 @@ void usgames_state::palette_init()
g = 0x7f * g * (i + 1);
b = 0x7f * b * (i + 1);
- palette_set_color(machine(),j,rgb_t(r, g, b));
+ palette.set_pen_color(j,rgb_t(r, g, b));
}
}
diff --git a/src/mame/video/vaportra.c b/src/mame/video/vaportra.c
index 680e4c63ca0..b25d30f3a1a 100644
--- a/src/mame/video/vaportra.c
+++ b/src/mame/video/vaportra.c
@@ -29,7 +29,7 @@ void vaportra_state::update_24bitcol( int offset )
g = (m_generic_paletteram_16[offset] >> 8) & 0xff;
b = (m_generic_paletteram2_16[offset] >> 0) & 0xff;
- palette_set_color(machine(), offset, rgb_t(r,g,b));
+ m_palette->set_pen_color(offset, rgb_t(r,g,b));
}
WRITE16_MEMBER(vaportra_state::vaportra_palette_24bit_rg_w)
diff --git a/src/mame/video/vastar.c b/src/mame/video/vastar.c
index d06dd52755d..2d5dc52a1c7 100644
--- a/src/mame/video/vastar.c
+++ b/src/mame/video/vastar.c
@@ -155,13 +155,13 @@ void vastar_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
if (!flip_screen())
sy = 224 - sy;
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code/2,
color,
flipx,flipy,
sx,sy,0);
/* redraw with wraparound */
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code/2,
color,
flipx,flipy,
@@ -172,7 +172,7 @@ void vastar_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
if (!flip_screen())
sy = 240 - sy;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code,
color,
flipx,flipy,
diff --git a/src/mame/video/vball.c b/src/mame/video/vball.c
index 67a720b1b10..f619ab6e5d3 100644
--- a/src/mame/video/vball.c
+++ b/src/mame/video/vball.c
@@ -75,7 +75,7 @@ void vball_state::vb_bgprombank_w( int bank )
color_prom = memregion("proms")->base() + bank*0x80;
for (i=0;i<128;i++, color_prom++) {
- palette_set_color_rgb(machine(),i,pal4bit(color_prom[0] >> 0),pal4bit(color_prom[0] >> 4),
+ m_palette->set_pen_color(i,pal4bit(color_prom[0] >> 0),pal4bit(color_prom[0] >> 4),
pal4bit(color_prom[0x800] >> 0));
}
m_vb_bgprombank=bank;
@@ -90,7 +90,7 @@ void vball_state::vb_spprombank_w( int bank )
color_prom = memregion("proms")->base()+0x400 + bank*0x80;
for (i=128;i<256;i++,color_prom++) {
- palette_set_color_rgb(machine(),i,pal4bit(color_prom[0] >> 0),pal4bit(color_prom[0] >> 4),
+ m_palette->set_pen_color(i,pal4bit(color_prom[0] >> 0),pal4bit(color_prom[0] >> 4),
pal4bit(color_prom[0x800] >> 0));
}
m_vb_spprombank=bank;
@@ -101,7 +101,7 @@ void vball_state::vb_mark_all_dirty( )
m_bg_tilemap->mark_all_dirty();
}
-#define DRAW_SPRITE( order, sx, sy ) gfx->transpen(bitmap,\
+#define DRAW_SPRITE( order, sx, sy ) gfx->transpen(m_palette,bitmap,\
cliprect, \
(which+order),color,flipx,flipy,sx,sy,0);
diff --git a/src/mame/video/vdc.c b/src/mame/video/vdc.c
index 22455df9a0c..967018b4ca6 100644
--- a/src/mame/video/vdc.c
+++ b/src/mame/video/vdc.c
@@ -440,13 +440,14 @@ SCREEN_UPDATE_IND16( pce )
static void draw_black_line(running_machine &machine, int line)
{
+ driver_device *state = machine.driver_data<driver_device>();
int i;
/* our line buffer */
UINT16 *line_buffer = &vce.bmp->pix16(line);
for( i=0; i< VDC_WPF; i++ )
- line_buffer[i] = get_black_pen( machine );
+ line_buffer[i] = state->m_palette->black_pen();
}
static void draw_overscan_line(int line)
@@ -636,8 +637,8 @@ PALETTE_INIT( vce )
int g = (( i >> 6) & 7) << 5;
int b = (( i ) & 7) << 5;
int y = ( ( 66 * r + 129 * g + 25 * b + 128) >> 8) + 16;
- palette_set_color_rgb(machine, i, r, g, b);
- palette_set_color_rgb(machine, 512+i, y, y, y);
+ palette.set_pen_color(i, r, g, b);
+ palette.set_pen_color(512+i, y, y, y);
}
}
diff --git a/src/mame/video/victory.c b/src/mame/video/victory.c
index 6bfcfdeb9c1..8038a844651 100644
--- a/src/mame/video/victory.c
+++ b/src/mame/video/victory.c
@@ -99,7 +99,7 @@ void victory_state::set_palette()
{
UINT16 data = m_paletteram[offs];
- palette_set_color_rgb(machine(), offs, pal3bit(data >> 6), pal3bit(data >> 0), pal3bit(data >> 3));
+ m_palette->set_pen_color(offs, pal3bit(data >> 6), pal3bit(data >> 0), pal3bit(data >> 3));
}
}
diff --git a/src/mame/video/videopin.c b/src/mame/video/videopin.c
index cad45eebab3..e90ef24f875 100644
--- a/src/mame/video/videopin.c
+++ b/src/mame/video/videopin.c
@@ -68,7 +68,7 @@ UINT32 videopin_state::screen_update_videopin(screen_device &screen, bitmap_ind1
{
for (j = 0; j < 2; j++)
{
- m_gfxdecode->gfx(1)->transpen(bitmap,rect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,rect,
0, 0,
0, 0,
x + 16 * i,
diff --git a/src/mame/video/vigilant.c b/src/mame/video/vigilant.c
index 1ca39de1199..a7a74bb2c2c 100644
--- a/src/mame/video/vigilant.c
+++ b/src/mame/video/vigilant.c
@@ -56,7 +56,7 @@ void vigilant_state::update_background()
{
for( col=0; col<512; col+=32 )
{
- m_gfxdecode->gfx(2)->opaque(*m_bg_bitmap,
+ m_gfxdecode->gfx(2)->opaque(m_palette,*m_bg_bitmap,
m_bg_bitmap->cliprect(),
charcode,
row < 128 ? 0 : 1,
@@ -98,7 +98,7 @@ WRITE8_MEMBER(vigilant_state::vigilant_paletteram_w)
g = (m_generic_paletteram_8[bank + offset + 0x100] << 3) & 0xFF;
b = (m_generic_paletteram_8[bank + offset + 0x200] << 3) & 0xFF;
- palette_set_color(machine(), (bank >> 2) + offset,rgb_t(r,g,b));
+ m_palette->set_pen_color((bank >> 2) + offset,rgb_t(r,g,b));
}
@@ -181,7 +181,7 @@ void vigilant_state::draw_foreground(bitmap_ind16 &bitmap, const rectangle &clip
{
sx = (sx + scroll) & 0x1ff;
- m_gfxdecode->gfx(0)->transmask(bitmap,bottomvisiblearea,
+ m_gfxdecode->gfx(0)->transmask(m_palette,bitmap,bottomvisiblearea,
tile_number,
color,
0,0,
@@ -194,7 +194,7 @@ void vigilant_state::draw_foreground(bitmap_ind16 &bitmap, const rectangle &clip
if (sy >= 48)
sx = (sx + scroll) & 0x1ff;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
tile_number,
color,
0,0,
@@ -248,7 +248,7 @@ void vigilant_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect
if (flipy) c += h-1-y;
else c += y;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
c,
color,
flipx,flipy,
@@ -270,7 +270,7 @@ UINT32 vigilant_state::screen_update_kikcubic(screen_device &screen, bitmap_ind1
int color = (attributes & 0xF0) >> 4;
int tile_number = videoram[offs] | ((attributes & 0x0F) << 8);
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect,
tile_number,
color,
0,0,
@@ -295,13 +295,13 @@ UINT32 vigilant_state::screen_update_vigilant(screen_device &screen, bitmap_ind1
g = (m_generic_paletteram_8[0x500 + 16 * m_rear_color + i] << 3) & 0xFF;
b = (m_generic_paletteram_8[0x600 + 16 * m_rear_color + i] << 3) & 0xFF;
- palette_set_color(machine(),512 + i,rgb_t(r,g,b));
+ m_palette->set_pen_color(512 + i,rgb_t(r,g,b));
r = (m_generic_paletteram_8[0x400 + 16 * m_rear_color + 32 + i] << 3) & 0xFF;
g = (m_generic_paletteram_8[0x500 + 16 * m_rear_color + 32 + i] << 3) & 0xFF;
b = (m_generic_paletteram_8[0x600 + 16 * m_rear_color + 32 + i] << 3) & 0xFF;
- palette_set_color(machine(),512 + 16 + i,rgb_t(r,g,b));
+ m_palette->set_pen_color(512 + 16 + i,rgb_t(r,g,b));
}
if (m_rear_disable) /* opaque foreground */
diff --git a/src/mame/video/vindictr.c b/src/mame/video/vindictr.c
index 1672a18eefc..f1f816eb6e4 100644
--- a/src/mame/video/vindictr.c
+++ b/src/mame/video/vindictr.c
@@ -111,7 +111,7 @@ WRITE16_MEMBER( vindictr_state::vindictr_paletteram_w )
int g = ((data >> 4) & 15) * i;
int b = ((data >> 0) & 15) * i;
- palette_set_color(machine(),offset + c*2048,rgb_t(r,g,b));
+ m_palette->set_pen_color(offset + c*2048,rgb_t(r,g,b));
}
}
diff --git a/src/mame/video/vsnes.c b/src/mame/video/vsnes.c
index 6dbd6927978..e71c80705b7 100644
--- a/src/mame/video/vsnes.c
+++ b/src/mame/video/vsnes.c
@@ -6,15 +6,15 @@
PALETTE_INIT_MEMBER(vsnes_state,vsnes)
{
ppu2c0x_device *ppu = machine().device<ppu2c0x_device>("ppu1");
- ppu->init_palette_rgb(machine(), 0 );
+ ppu->init_palette_rgb(palette, 0 );
}
PALETTE_INIT_MEMBER(vsnes_state,vsdual)
{
ppu2c0x_device *ppu1 = machine().device<ppu2c0x_device>("ppu1");
ppu2c0x_device *ppu2 = machine().device<ppu2c0x_device>("ppu2");
- ppu1->init_palette_rgb(machine(), 0 );
- ppu2->init_palette_rgb(machine(), 8*4*16 );
+ ppu1->init_palette_rgb(palette, 0 );
+ ppu2->init_palette_rgb(palette, 8*4*16 );
}
void vsnes_state::ppu_irq_1(int *ppu_regs)
diff --git a/src/mame/video/vsystem_spr.c b/src/mame/video/vsystem_spr.c
index 50ab1ad059a..26a7db055d9 100644
--- a/src/mame/video/vsystem_spr.c
+++ b/src/mame/video/vsystem_spr.c
@@ -71,7 +71,8 @@ const device_type VSYSTEM_SPR = &device_creator<vsystem_spr_device>;
vsystem_spr_device::vsystem_spr_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, VSYSTEM_SPR, "vsystem_spr_device", tag, owner, clock, "vsystem_spr", __FILE__),
- m_gfxdecode(*this)
+ m_gfxdecode(*this),
+ m_palette(*this)
{
m_transpen = 15;
m_pal_base = 0;
@@ -94,6 +95,15 @@ void vsystem_spr_device::static_set_gfxdecode_tag(device_t &device, const char *
downcast<vsystem_spr_device &>(device).m_gfxdecode.set_tag(tag);
}
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void vsystem_spr_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<vsystem_spr_device &>(device).m_palette.set_tag(tag);
+}
UINT32 vsystem_spr_device::tile_callback_noindirect(UINT32 tile)
{
@@ -247,17 +257,17 @@ void vsystem_spr_device::common_sprite_drawgfx( running_machine &machine, bitmap
int startno = m_newtilecb(curr_sprite.map++);
if (m_pdraw)
{
- gfx->prio_zoom_transpen(bitmap,cliprect, startno, curr_sprite.color + m_pal_base, curr_sprite.flipx, curr_sprite.flipy, curr_sprite.ox + xcnt * curr_sprite.zoomx/2, curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, priority_bitmap, priority_mask, m_transpen);
- gfx->prio_zoom_transpen(bitmap,cliprect, startno, curr_sprite.color + m_pal_base, curr_sprite.flipx, curr_sprite.flipy, -0x200+curr_sprite.ox + xcnt * curr_sprite.zoomx/2, curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, priority_bitmap, priority_mask, m_transpen);
- gfx->prio_zoom_transpen(bitmap,cliprect, startno, curr_sprite.color + m_pal_base, curr_sprite.flipx, curr_sprite.flipy, curr_sprite.ox + xcnt * curr_sprite.zoomx/2, -0x200+curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, priority_bitmap, priority_mask, m_transpen);
- gfx->prio_zoom_transpen(bitmap,cliprect, startno, curr_sprite.color + m_pal_base, curr_sprite.flipx, curr_sprite.flipy, -0x200+curr_sprite.ox + xcnt * curr_sprite.zoomx/2, -0x200+curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, priority_bitmap, priority_mask, m_transpen);
+ gfx->prio_zoom_transpen(m_palette,bitmap,cliprect, startno, curr_sprite.color + m_pal_base, curr_sprite.flipx, curr_sprite.flipy, curr_sprite.ox + xcnt * curr_sprite.zoomx/2, curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, priority_bitmap, priority_mask, m_transpen);
+ gfx->prio_zoom_transpen(m_palette,bitmap,cliprect, startno, curr_sprite.color + m_pal_base, curr_sprite.flipx, curr_sprite.flipy, -0x200+curr_sprite.ox + xcnt * curr_sprite.zoomx/2, curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, priority_bitmap, priority_mask, m_transpen);
+ gfx->prio_zoom_transpen(m_palette,bitmap,cliprect, startno, curr_sprite.color + m_pal_base, curr_sprite.flipx, curr_sprite.flipy, curr_sprite.ox + xcnt * curr_sprite.zoomx/2, -0x200+curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, priority_bitmap, priority_mask, m_transpen);
+ gfx->prio_zoom_transpen(m_palette,bitmap,cliprect, startno, curr_sprite.color + m_pal_base, curr_sprite.flipx, curr_sprite.flipy, -0x200+curr_sprite.ox + xcnt * curr_sprite.zoomx/2, -0x200+curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, priority_bitmap, priority_mask, m_transpen);
}
else
{
- gfx->zoom_transpen(bitmap,cliprect, startno, curr_sprite.color + m_pal_base, curr_sprite.flipx, curr_sprite.flipy, curr_sprite.ox + xcnt * curr_sprite.zoomx/2, curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, m_transpen);
- gfx->zoom_transpen(bitmap,cliprect, startno, curr_sprite.color + m_pal_base, curr_sprite.flipx, curr_sprite.flipy, -0x200+curr_sprite.ox + xcnt * curr_sprite.zoomx/2, curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, m_transpen);
- gfx->zoom_transpen(bitmap,cliprect, startno, curr_sprite.color + m_pal_base, curr_sprite.flipx, curr_sprite.flipy, curr_sprite.ox + xcnt * curr_sprite.zoomx/2, -0x200+curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, m_transpen);
- gfx->zoom_transpen(bitmap,cliprect, startno, curr_sprite.color + m_pal_base, curr_sprite.flipx, curr_sprite.flipy, -0x200+curr_sprite.ox + xcnt * curr_sprite.zoomx/2, -0x200+curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, m_transpen);
+ gfx->zoom_transpen(m_palette,bitmap,cliprect, startno, curr_sprite.color + m_pal_base, curr_sprite.flipx, curr_sprite.flipy, curr_sprite.ox + xcnt * curr_sprite.zoomx/2, curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, m_transpen);
+ gfx->zoom_transpen(m_palette,bitmap,cliprect, startno, curr_sprite.color + m_pal_base, curr_sprite.flipx, curr_sprite.flipy, -0x200+curr_sprite.ox + xcnt * curr_sprite.zoomx/2, curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, m_transpen);
+ gfx->zoom_transpen(m_palette,bitmap,cliprect, startno, curr_sprite.color + m_pal_base, curr_sprite.flipx, curr_sprite.flipy, curr_sprite.ox + xcnt * curr_sprite.zoomx/2, -0x200+curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, m_transpen);
+ gfx->zoom_transpen(m_palette,bitmap,cliprect, startno, curr_sprite.color + m_pal_base, curr_sprite.flipx, curr_sprite.flipy, -0x200+curr_sprite.ox + xcnt * curr_sprite.zoomx/2, -0x200+curr_sprite.oy + ycnt * curr_sprite.zoomy/2, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, m_transpen);
}
xcnt+=xinc;
}
diff --git a/src/mame/video/vsystem_spr.h b/src/mame/video/vsystem_spr.h
index 71c0c4cd7f0..802a844540d 100644
--- a/src/mame/video/vsystem_spr.h
+++ b/src/mame/video/vsystem_spr.h
@@ -15,6 +15,8 @@ typedef device_delegate<UINT32 (UINT32)> vsystem_tile_indirection_delegate;
vsystem_spr_device::CG10103_set_transpen(*device, _transpen);
#define MCFG_VSYSTEM_SPR_GFXDECODE(_gfxtag) \
vsystem_spr_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+#define MCFG_VSYSTEM_SPR_PALETTE(_palette_tag) \
+ vsystem_spr_device::static_set_palette_tag(*device, "^" _palette_tag);
/*** CG10103 **********************************************/
@@ -25,6 +27,7 @@ public:
// static configuration
static void static_set_gfxdecode_tag(device_t &device, const char *tag);
+ static void static_set_palette_tag(device_t &device, const char *tag);
static void set_offsets(device_t &device, int xoffs, int yoffs);
static void set_pdraw(device_t &device, bool pdraw);
static void set_tile_indirect_cb(device_t &device,vsystem_tile_indirection_delegate newtilecb);
@@ -71,8 +74,8 @@ protected:
virtual void device_reset();
private:
-
required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
};
diff --git a/src/mame/video/vsystem_spr2.c b/src/mame/video/vsystem_spr2.c
index 5cbe70b9b82..b4bf6a0dddb 100644
--- a/src/mame/video/vsystem_spr2.c
+++ b/src/mame/video/vsystem_spr2.c
@@ -29,7 +29,8 @@ const device_type VSYSTEM_SPR2 = &device_creator<vsystem_spr2_device>;
vsystem_spr2_device::vsystem_spr2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, VSYSTEM_SPR2, "vsystem_spr2_device", tag, owner, clock, "vsystem_spr2", __FILE__),
- m_gfxdecode(*this)
+ m_gfxdecode(*this),
+ m_palette(*this)
{
m_newtilecb = vsystem_tile2_indirection_delegate(FUNC(vsystem_spr2_device::tile_callback_noindirect), this);
m_pritype = 0; // hack until we have better handling
@@ -48,6 +49,17 @@ void vsystem_spr2_device::static_set_gfxdecode_tag(device_t &device, const char
downcast<vsystem_spr2_device &>(device).m_gfxdecode.set_tag(tag);
}
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void vsystem_spr2_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<vsystem_spr2_device &>(device).m_palette.set_tag(tag);
+}
+
+
void vsystem_spr2_device::set_tile_indirect_cb(device_t &device,vsystem_tile2_indirection_delegate newtilecb)
{
vsystem_spr2_device &dev = downcast<vsystem_spr2_device &>(device);
@@ -213,17 +225,17 @@ void vsystem_spr2_device::turbofrc_draw_sprites_common( UINT16* spriteram3, int
if (m_pritype == 0 || m_pritype == 1 || m_pritype == 2) // pdrawgfx cases
{
- m_gfxdecode->gfx(m_gfx_region)->prio_zoom_transpen(bitmap,cliprect, curr, curr_sprite.color, curr_sprite.flipx,curr_sprite.flipy, sx-0x000,sy-0x000, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, priority_bitmap,usepri,15);
- m_gfxdecode->gfx(m_gfx_region)->prio_zoom_transpen(bitmap,cliprect, curr, curr_sprite.color, curr_sprite.flipx,curr_sprite.flipy, sx-0x200,sy-0x000, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, priority_bitmap,usepri,15);
- m_gfxdecode->gfx(m_gfx_region)->prio_zoom_transpen(bitmap,cliprect, curr, curr_sprite.color, curr_sprite.flipx,curr_sprite.flipy, sx-0x000,sy-0x200, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, priority_bitmap,usepri,15);
- m_gfxdecode->gfx(m_gfx_region)->prio_zoom_transpen(bitmap,cliprect, curr, curr_sprite.color, curr_sprite.flipx,curr_sprite.flipy, sx-0x200,sy-0x200, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, priority_bitmap,usepri,15);
+ m_gfxdecode->gfx(m_gfx_region)->prio_zoom_transpen(m_palette,bitmap,cliprect, curr, curr_sprite.color, curr_sprite.flipx,curr_sprite.flipy, sx-0x000,sy-0x000, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, priority_bitmap,usepri,15);
+ m_gfxdecode->gfx(m_gfx_region)->prio_zoom_transpen(m_palette,bitmap,cliprect, curr, curr_sprite.color, curr_sprite.flipx,curr_sprite.flipy, sx-0x200,sy-0x000, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, priority_bitmap,usepri,15);
+ m_gfxdecode->gfx(m_gfx_region)->prio_zoom_transpen(m_palette,bitmap,cliprect, curr, curr_sprite.color, curr_sprite.flipx,curr_sprite.flipy, sx-0x000,sy-0x200, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, priority_bitmap,usepri,15);
+ m_gfxdecode->gfx(m_gfx_region)->prio_zoom_transpen(m_palette,bitmap,cliprect, curr, curr_sprite.color, curr_sprite.flipx,curr_sprite.flipy, sx-0x200,sy-0x200, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, priority_bitmap,usepri,15);
}
else // drawgfx cases (welltris, pipedrm)
{
- m_gfxdecode->gfx(m_gfx_region)->zoom_transpen(bitmap,cliprect, curr, curr_sprite.color, curr_sprite.flipx,curr_sprite.flipy, sx-0x000,sy-0x000, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11,15);
- m_gfxdecode->gfx(m_gfx_region)->zoom_transpen(bitmap,cliprect, curr, curr_sprite.color, curr_sprite.flipx,curr_sprite.flipy, sx-0x200,sy-0x000, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11,15);
- m_gfxdecode->gfx(m_gfx_region)->zoom_transpen(bitmap,cliprect, curr, curr_sprite.color, curr_sprite.flipx,curr_sprite.flipy, sx-0x000,sy-0x200, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11,15);
- m_gfxdecode->gfx(m_gfx_region)->zoom_transpen(bitmap,cliprect, curr, curr_sprite.color, curr_sprite.flipx,curr_sprite.flipy, sx-0x200,sy-0x200, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11,15);
+ m_gfxdecode->gfx(m_gfx_region)->zoom_transpen(m_palette,bitmap,cliprect, curr, curr_sprite.color, curr_sprite.flipx,curr_sprite.flipy, sx-0x000,sy-0x000, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11,15);
+ m_gfxdecode->gfx(m_gfx_region)->zoom_transpen(m_palette,bitmap,cliprect, curr, curr_sprite.color, curr_sprite.flipx,curr_sprite.flipy, sx-0x200,sy-0x000, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11,15);
+ m_gfxdecode->gfx(m_gfx_region)->zoom_transpen(m_palette,bitmap,cliprect, curr, curr_sprite.color, curr_sprite.flipx,curr_sprite.flipy, sx-0x000,sy-0x200, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11,15);
+ m_gfxdecode->gfx(m_gfx_region)->zoom_transpen(m_palette,bitmap,cliprect, curr, curr_sprite.color, curr_sprite.flipx,curr_sprite.flipy, sx-0x200,sy-0x200, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11,15);
}
}
diff --git a/src/mame/video/vsystem_spr2.h b/src/mame/video/vsystem_spr2.h
index 519dc53cd0f..643aae4c722 100644
--- a/src/mame/video/vsystem_spr2.h
+++ b/src/mame/video/vsystem_spr2.h
@@ -12,6 +12,8 @@ typedef device_delegate<UINT32 (UINT32)> vsystem_tile2_indirection_delegate;
vsystem_spr2_device::set_offsets(*device, _xoffs,_yoffs);
#define MCFG_VSYSTEM_SPR2_GFXDECODE(_gfxtag) \
vsystem_spr2_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+#define MCFG_VSYSTEM_SPR2_PALETTE(_palette_tag) \
+ vsystem_spr2_device::static_set_palette_tag(*device, "^" _palette_tag);
class vsystem_spr2_device : public device_t
{
@@ -20,6 +22,7 @@ public:
// static configuration
static void static_set_gfxdecode_tag(device_t &device, const char *tag);
+ static void static_set_palette_tag(device_t &device, const char *tag);
static void set_tile_indirect_cb(device_t &device,vsystem_tile2_indirection_delegate newtilecb);
static void set_pritype(device_t &device, int pritype);
static void set_gfx_region(device_t &device, int gfx_region);
@@ -63,7 +66,7 @@ protected:
private:
required_device<gfxdecode_device> m_gfxdecode;
-
+ required_device<palette_device> m_palette;
};
diff --git a/src/mame/video/vulgus.c b/src/mame/video/vulgus.c
index b26a290e5a8..3848b55fca7 100644
--- a/src/mame/video/vulgus.c
+++ b/src/mame/video/vulgus.c
@@ -16,13 +16,11 @@
***************************************************************************/
-void vulgus_state::palette_init()
+PALETTE_INIT_MEMBER(vulgus_state, vulgus)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- machine().colortable = colortable_alloc(machine(), 256);
-
for (i = 0;i < 256;i++)
{
int bit0,bit1,bit2,bit3,r,g,b;
@@ -43,7 +41,7 @@ void vulgus_state::palette_init()
bit3 = (color_prom[2*256] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- colortable_palette_set_color(machine().colortable,i,rgb_t(r,g,b));
+ palette.set_indirect_color(i,rgb_t(r,g,b));
color_prom++;
}
@@ -53,19 +51,19 @@ void vulgus_state::palette_init()
/* characters use colors 32-47 (?) */
for (i = 0;i < m_gfxdecode->gfx(0)->colors() * m_gfxdecode->gfx(0)->granularity();i++)
- colortable_entry_set_value(machine().colortable, m_gfxdecode->gfx(0)->colorbase() + i, 32 + *color_prom++);
+ palette.set_pen_indirect(m_gfxdecode->gfx(0)->colorbase() + i, 32 + *color_prom++);
/* sprites use colors 16-31 */
for (i = 0;i < m_gfxdecode->gfx(2)->colors() * m_gfxdecode->gfx(2)->granularity();i++)
- colortable_entry_set_value(machine().colortable, m_gfxdecode->gfx(2)->colorbase() + i, 16 + *color_prom++);
+ palette.set_pen_indirect(m_gfxdecode->gfx(2)->colorbase() + i, 16 + *color_prom++);
/* background tiles use colors 0-15, 64-79, 128-143, 192-207 in four banks */
for (i = 0;i < m_gfxdecode->gfx(1)->colors() * m_gfxdecode->gfx(1)->granularity() / 4;i++)
{
- colortable_entry_set_value(machine().colortable, m_gfxdecode->gfx(1)->colorbase() + 0*32*8 + i, *color_prom);
- colortable_entry_set_value(machine().colortable, m_gfxdecode->gfx(1)->colorbase() + 1*32*8 + i, *color_prom + 64);
- colortable_entry_set_value(machine().colortable, m_gfxdecode->gfx(1)->colorbase() + 2*32*8 + i, *color_prom + 128);
- colortable_entry_set_value(machine().colortable, m_gfxdecode->gfx(1)->colorbase() + 3*32*8 + i, *color_prom + 192);
+ palette.set_pen_indirect(m_gfxdecode->gfx(1)->colorbase() + 0*32*8 + i, *color_prom);
+ palette.set_pen_indirect(m_gfxdecode->gfx(1)->colorbase() + 1*32*8 + i, *color_prom + 64);
+ palette.set_pen_indirect(m_gfxdecode->gfx(1)->colorbase() + 2*32*8 + i, *color_prom + 128);
+ palette.set_pen_indirect(m_gfxdecode->gfx(1)->colorbase() + 3*32*8 + i, *color_prom + 192);
color_prom++;
}
}
@@ -116,7 +114,7 @@ void vulgus_state::video_start()
m_fg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(vulgus_state::get_fg_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8,32,32);
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(vulgus_state::get_bg_tile_info),this),TILEMAP_SCAN_COLS,16,16,32,32);
- colortable_configure_tilemap_groups(machine().colortable, m_fg_tilemap, m_gfxdecode->gfx(0), 47);
+ m_palette->configure_tilemap_groups(*m_fg_tilemap, *m_gfxdecode->gfx(0), 47);
}
@@ -194,14 +192,14 @@ void vulgus_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
do
{
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code + i,
col,
flip_screen(),flip_screen(),
sx, sy + 16 * i * dir,15);
/* draw again with wraparound */
- m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,cliprect,
code + i,
col,
flip_screen(),flip_screen(),
diff --git a/src/mame/video/warpwarp.c b/src/mame/video/warpwarp.c
index c6b639e6a5d..836644d2c7a 100644
--- a/src/mame/video/warpwarp.c
+++ b/src/mame/video/warpwarp.c
@@ -20,22 +20,22 @@ static const rgb_t geebee_palette[] =
PALETTE_INIT_MEMBER(warpwarp_state,geebee)
{
- palette_set_color(machine(), 0, geebee_palette[0]);
- palette_set_color(machine(), 1, geebee_palette[1]);
- palette_set_color(machine(), 2, geebee_palette[1]);
- palette_set_color(machine(), 3, geebee_palette[0]);
- palette_set_color(machine(), 4, geebee_palette[0]);
- palette_set_color(machine(), 5, geebee_palette[2]);
- palette_set_color(machine(), 6, geebee_palette[2]);
- palette_set_color(machine(), 7, geebee_palette[0]);
+ palette.set_pen_color(0, geebee_palette[0]);
+ palette.set_pen_color(1, geebee_palette[1]);
+ palette.set_pen_color(2, geebee_palette[1]);
+ palette.set_pen_color(3, geebee_palette[0]);
+ palette.set_pen_color(4, geebee_palette[0]);
+ palette.set_pen_color(5, geebee_palette[2]);
+ palette.set_pen_color(6, geebee_palette[2]);
+ palette.set_pen_color(7, geebee_palette[0]);
}
PALETTE_INIT_MEMBER(warpwarp_state,navarone)
{
- palette_set_color(machine(), 0, geebee_palette[0]);
- palette_set_color(machine(), 1, geebee_palette[1]);
- palette_set_color(machine(), 2, geebee_palette[1]);
- palette_set_color(machine(), 3, geebee_palette[0]);
+ palette.set_pen_color(0, geebee_palette[0]);
+ palette.set_pen_color(1, geebee_palette[1]);
+ palette.set_pen_color(2, geebee_palette[1]);
+ palette.set_pen_color(3, geebee_palette[0]);
}
@@ -95,11 +95,11 @@ PALETTE_INIT_MEMBER(warpwarp_state,warpwarp)
bit1 = (i >> 7) & 0x01;
b = combine_2_weights(weights_tiles_b, bit0, bit1);
- palette_set_color(machine(), (i * 2) + 0, rgb_t::black);
- palette_set_color(machine(), (i * 2) + 1, rgb_t(r, g, b));
+ palette.set_pen_color((i * 2) + 0, rgb_t::black);
+ palette.set_pen_color((i * 2) + 1, rgb_t(r, g, b));
}
- palette_set_color(machine(), 0x200, rgb_t(weight_ball[0], weight_ball[0], weight_ball[0]));
+ palette.set_pen_color(0x200, rgb_t(weight_ball[0], weight_ball[0], weight_ball[0]));
}
diff --git a/src/mame/video/warriorb.c b/src/mame/video/warriorb.c
index 1a34942668a..47b71f7a3df 100644
--- a/src/mame/video/warriorb.c
+++ b/src/mame/video/warriorb.c
@@ -61,7 +61,7 @@ void warriorb_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap,
if (x > 0x3c0) x -= 0x400;
if (y > 0x180) y -= 0x200;
- m_gfxdecode->gfx(0)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->prio_transpen(m_palette,bitmap,cliprect,
tilenum,
color,
flipx,flipy,
@@ -99,7 +99,7 @@ UINT32 warriorb_state::update_screen(screen_device &screen, bitmap_ind16 &bitmap
/* Ensure screen blanked even when bottom layers not drawn due to disable bit */
if (nodraw)
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
// draw middle layer
tc0100scn->tilemap_draw(screen, bitmap, cliprect, layer[1], 0, 1);
diff --git a/src/mame/video/wc90.c b/src/mame/video/wc90.c
index 259663228cb..0ecdbc1ca81 100644
--- a/src/mame/video/wc90.c
+++ b/src/mame/video/wc90.c
@@ -126,7 +126,7 @@ WRITE8_MEMBER(wc90_state::wc90_txvideoram_w)
***************************************************************************/
#define WC90_DRAW_SPRITE( code, sx, sy ) \
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect, code, flags >> 4, \
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect, code, flags >> 4, \
bank&1, bank&2, sx, sy, 0 )
static const char p32x32[4][4] = {
diff --git a/src/mame/video/wc90b.c b/src/mame/video/wc90b.c
index d7af209f59d..a7681899839 100644
--- a/src/mame/video/wc90b.c
+++ b/src/mame/video/wc90b.c
@@ -114,7 +114,7 @@ void wc90b_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect,
sy = 240 - spriteram[offs + 1];
- m_gfxdecode->gfx(17)->transpen(bitmap,cliprect, code,
+ m_gfxdecode->gfx(17)->transpen(m_palette,bitmap,cliprect, code,
flags >> 4, /* color */
bank & 1, /* flipx */
bank & 2, /* flipy */
diff --git a/src/mame/video/wecleman.c b/src/mame/video/wecleman.c
index ac54d97d306..5d9eb0cd0ad 100644
--- a/src/mame/video/wecleman.c
+++ b/src/mame/video/wecleman.c
@@ -75,7 +75,7 @@ struct sprite
static void get_sprite_info(running_machine &machine)
{
wecleman_state *state = machine.driver_data<wecleman_state>();
- const pen_t *base_pal = machine.pens;
+ const pen_t *base_pal = state->m_palette->pens();
UINT8 *base_gfx = state->memregion("gfx1")->base();
int gfx_max = state->memregion("gfx1")->bytes();
@@ -565,7 +565,7 @@ static void wecleman_draw_road(running_machine &machine, bitmap_rgb32 &bitmap, c
int scrollx, sy, sx;
int mdy, tdy, i;
- rgb_ptr = machine.pens;
+ rgb_ptr = state->m_palette->pens();
if (priority == 0x02)
{
@@ -689,7 +689,7 @@ static void draw_cloud(bitmap_rgb32 &bitmap,
dst_base = &bitmap.pix32(y0+dy, x0+dx);
- pal_base = gfx->machine().pens + pal_offset * gfx->granularity();
+ pal_base = state->m_palette->pens() + pal_offset * gfx->granularity();
alpha <<= 6;
@@ -810,7 +810,7 @@ static void hotchase_draw_road(running_machine &machine, bitmap_ind16 &bitmap, c
for (sx=0; sx<2*XSIZE; sx+=64)
{
- state->m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ state->m_gfxdecode->gfx(0)->transpen(state->m_palette,bitmap,cliprect,
code++,
color,
0,0,
@@ -858,9 +858,9 @@ WRITE16_MEMBER(wecleman_state::hotchase_paletteram16_SBGRBBBBGGGGRRRR_word_w)
g = ((newword >> 3) & 0x1E ) | ((newword >> 13) & 0x01);
b = ((newword >> 7) & 0x1E ) | ((newword >> 14) & 0x01);
- palette_set_color_rgb(machine(), offset, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(offset, pal5bit(r), pal5bit(g), pal5bit(b));
r>>=1; g>>=1; b>>=1;
- palette_set_color_rgb(machine(), offset+0x800, pal5bit(r)/2, pal5bit(g)/2, pal5bit(b)/2);
+ m_palette->set_pen_color(offset+0x800, pal5bit(r)/2, pal5bit(g)/2, pal5bit(b)/2);
}
WRITE16_MEMBER(wecleman_state::wecleman_paletteram16_SSSSBBBBGGGGRRRR_word_w)
@@ -869,7 +869,7 @@ WRITE16_MEMBER(wecleman_state::wecleman_paletteram16_SSSSBBBBGGGGRRRR_word_w)
// the highest nibble has some unknown functions
// if (newword & 0xf000) logerror("MSN set on color %03x: %1x\n", offset, newword>>12);
- palette_set_color_rgb(machine(), offset, pal4bit(newword >> 0), pal4bit(newword >> 4), pal4bit(newword >> 8));
+ m_palette->set_pen_color(offset, pal4bit(newword >> 0), pal4bit(newword >> 4), pal4bit(newword >> 8));
}
@@ -904,7 +904,7 @@ VIDEO_START_MEMBER(wecleman_state,wecleman)
m_cloud_blend = BLEND_MAX;
m_cloud_ds = 0;
m_cloud_visible = 0;
- m_black_pen = get_black_pen(machine());
+ m_black_pen = m_palette->black_pen();
m_rgb_half = (UINT16*)(buffer + 0x00000);
m_t32x32pm = (int*)(buffer + 0x10020);
@@ -1001,7 +1001,7 @@ VIDEO_START_MEMBER(wecleman_state,hotchase)
m_gfx_bank = bank;
m_spr_offsx = -0xc0;
m_spr_offsy = 0;
- m_black_pen = get_black_pen(machine());
+ m_black_pen = m_palette->black_pen();
m_spr_ptr_list = (struct sprite **)buffer;
@@ -1021,7 +1021,7 @@ UINT32 wecleman_state::screen_update_wecleman(screen_device &screen, bitmap_rgb3
int cloud_sx, cloud_sy;
int i, j, k;
- mrct = machine().pens;
+ mrct = m_palette->pens();
video_on = m_irqctrl & 0x40;
diff --git a/src/mame/video/wgp.c b/src/mame/video/wgp.c
index 9791c57af7d..56edd041eea 100644
--- a/src/mame/video/wgp.c
+++ b/src/mame/video/wgp.c
@@ -418,7 +418,7 @@ void wgp_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const
zx = x + (((k + 1) * zoomx) / 2) - curx;
zy = y + (((j + 1) * zoomy) / 2) - cury;
- m_gfxdecode->gfx(0)->prio_zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->prio_zoom_transpen(m_palette,bitmap,cliprect,
code,
col,
flipx, flipy,
@@ -449,7 +449,7 @@ void wgp_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const
zx = x + (((k + 1) * zoomx) / 4) - curx;
zy = y + (((j + 1) * zoomy) / 4) - cury;
- m_gfxdecode->gfx(0)->prio_zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->prio_zoom_transpen(m_palette,bitmap,cliprect,
code,
col,
flipx, flipy,
diff --git a/src/mame/video/williams.c b/src/mame/video/williams.c
index bdee5c963e7..53fce1145ec 100644
--- a/src/mame/video/williams.c
+++ b/src/mame/video/williams.c
@@ -231,7 +231,7 @@ UINT32 williams_state::screen_update_williams2(screen_device &screen, bitmap_rgb
/* fetch the relevant pens */
for (x = 1; x < 16; x++)
- pens[x] = palette_get_color(machine(), m_williams2_fg_color * 16 + x);
+ pens[x] = m_palette->pen_color(m_williams2_fg_color * 16 + x);
/* loop over rows */
for (y = cliprect.min_y; y <= cliprect.max_y; y++)
@@ -310,7 +310,7 @@ WRITE8_MEMBER(williams_state::williams2_paletteram_w)
b = ((entry_hi >> 0) & 15) * i;
g = ((entry_lo >> 4) & 15) * i;
r = ((entry_lo >> 0) & 15) * i;
- palette_set_color(machine(), offset / 2, rgb_t(r, g, b));
+ m_palette->set_pen_color(offset / 2, rgb_t(r, g, b));
}
diff --git a/src/mame/video/wiping.c b/src/mame/video/wiping.c
index 574828ede0b..dcfd4f35479 100644
--- a/src/mame/video/wiping.c
+++ b/src/mame/video/wiping.c
@@ -17,7 +17,7 @@
***************************************************************************/
-void wiping_state::palette_init()
+PALETTE_INIT_MEMBER(wiping_state, wiping)
{
const UINT8 *color_prom = memregion("proms")->base();
static const int resistances_rg[3] = { 1000, 470, 220 };
@@ -31,9 +31,6 @@ void wiping_state::palette_init()
3, &resistances_rg[0], gweights, 470, 0,
2, &resistances_b[0], bweights, 470, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x20);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x20; i++)
{
@@ -57,7 +54,7 @@ void wiping_state::palette_init()
bit1 = (color_prom[i] >> 7) & 0x01;
b = combine_2_weights(bweights, bit0, bit1);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
@@ -67,14 +64,14 @@ void wiping_state::palette_init()
for (i = 0; i < 0x100; i++)
{
UINT8 ctabentry = color_prom[i ^ 0x03] & 0x0f;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
/* sprites use colors 16-31 */
for (i = 0x100; i < 0x200; i++)
{
UINT8 ctabentry = (color_prom[i ^ 0x03] & 0x0f) | 0x10;
- colortable_entry_set_value(machine().colortable, i, ctabentry);
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -120,7 +117,7 @@ UINT32 wiping_state::screen_update_wiping(screen_device &screen, bitmap_ind16 &b
sy = 27 - sy;
}
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect,
m_videoram[offs],
m_colorram[offs] & 0x3f,
m_flipscreen,m_flipscreen,
@@ -148,12 +145,12 @@ UINT32 wiping_state::screen_update_wiping(screen_device &screen, bitmap_ind16 &b
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transmask(m_palette,bitmap,cliprect,
(spriteram[offs] & 0x3f) + 64 * otherbank,
color,
flipx,flipy,
sx,sy,
- colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(1), color, 0x1f));
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 0x1f));
}
/* redraw high priority chars */
@@ -188,7 +185,7 @@ UINT32 wiping_state::screen_update_wiping(screen_device &screen, bitmap_ind16 &b
sy = 27 - sy;
}
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect,
m_videoram[offs],
m_colorram[offs] & 0x3f,
m_flipscreen,m_flipscreen,
diff --git a/src/mame/video/wiz.c b/src/mame/video/wiz.c
index a75d0180e00..bfa35371f78 100644
--- a/src/mame/video/wiz.c
+++ b/src/mame/video/wiz.c
@@ -32,13 +32,13 @@ void wiz_state::video_start()
bit 0 -- 1 kohm resistor -- RED/GREEN/BLUE
***************************************************************************/
-void wiz_state::palette_init()
+PALETTE_INIT_MEMBER(wiz_state, wiz)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int bit0,bit1,bit2,bit3,r,g,b;
@@ -48,18 +48,18 @@ void wiz_state::palette_init()
bit2 = (color_prom[0] >> 2) & 0x01;
bit3 = (color_prom[0] >> 3) & 0x01;
r = 0x0e * bit0 + 0x1f * bit1 + 0x42 * bit2 + 0x90 * bit3;
- bit0 = (color_prom[machine().total_colors()] >> 0) & 0x01;
- bit1 = (color_prom[machine().total_colors()] >> 1) & 0x01;
- bit2 = (color_prom[machine().total_colors()] >> 2) & 0x01;
- bit3 = (color_prom[machine().total_colors()] >> 3) & 0x01;
+ bit0 = (color_prom[palette.entries()] >> 0) & 0x01;
+ bit1 = (color_prom[palette.entries()] >> 1) & 0x01;
+ bit2 = (color_prom[palette.entries()] >> 2) & 0x01;
+ bit3 = (color_prom[palette.entries()] >> 3) & 0x01;
g = 0x0e * bit0 + 0x1f * bit1 + 0x42 * bit2 + 0x90 * bit3;
- bit0 = (color_prom[2*machine().total_colors()] >> 0) & 0x01;
- bit1 = (color_prom[2*machine().total_colors()] >> 1) & 0x01;
- bit2 = (color_prom[2*machine().total_colors()] >> 2) & 0x01;
- bit3 = (color_prom[2*machine().total_colors()] >> 3) & 0x01;
+ bit0 = (color_prom[2*palette.entries()] >> 0) & 0x01;
+ bit1 = (color_prom[2*palette.entries()] >> 1) & 0x01;
+ bit2 = (color_prom[2*palette.entries()] >> 2) & 0x01;
+ bit3 = (color_prom[2*palette.entries()] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x42 * bit2 + 0x90 * bit3;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
color_prom++;
}
@@ -124,7 +124,7 @@ void wiz_state::draw_background(bitmap_ind16 &bitmap, const rectangle &cliprect,
if (m_flipx) sx = 31 - sx;
- m_gfxdecode->gfx(bank)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(bank)->transpen(m_palette,bitmap,cliprect,
videoram[offs],
col + 8 * m_palette_bank,
m_flipx,m_flipy,
@@ -162,7 +162,7 @@ void wiz_state::draw_foreground(bitmap_ind16 &bitmap, const rectangle &cliprect,
if (m_flipx) sx = 31 - sx;
- m_gfxdecode->gfx(m_char_bank[1])->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(m_char_bank[1])->transpen(m_palette,bitmap,cliprect,
m_videoram2[offs],
col + 8 * m_palette_bank,
m_flipx,m_flipy,
@@ -187,7 +187,7 @@ void wiz_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect, UIN
if ( m_flipx) sx = 240 - sx;
if (!m_flipy) sy = 240 - sy;
- m_gfxdecode->gfx(bank)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(bank)->transpen(m_palette,bitmap,cliprect,
sprite_ram[offs + 1],
(sprite_ram[offs + 2] & 0x07) + 8 * m_palette_bank,
m_flipx,m_flipy,
diff --git a/src/mame/video/wolfpack.c b/src/mame/video/wolfpack.c
index 4c6cc2a71bc..5622328492f 100644
--- a/src/mame/video/wolfpack.c
+++ b/src/mame/video/wolfpack.c
@@ -8,40 +8,37 @@ Atari Wolf Pack (prototype) video emulation
#include "includes/wolfpack.h"
-void wolfpack_state::palette_init()
+PALETTE_INIT_MEMBER(wolfpack_state, wolfpack)
{
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 8);
-
- colortable_palette_set_color(machine().colortable, 0, rgb_t(0x00, 0x00, 0x00));
- colortable_palette_set_color(machine().colortable, 1, rgb_t(0xc1, 0xc1, 0xc1));
- colortable_palette_set_color(machine().colortable, 2, rgb_t(0x81, 0x81, 0x81));
- colortable_palette_set_color(machine().colortable, 3, rgb_t(0x48, 0x48, 0x48));
+ palette.set_indirect_color(0, rgb_t(0x00, 0x00, 0x00));
+ palette.set_indirect_color(1, rgb_t(0xc1, 0xc1, 0xc1));
+ palette.set_indirect_color(2, rgb_t(0x81, 0x81, 0x81));
+ palette.set_indirect_color(3, rgb_t(0x48, 0x48, 0x48));
for (i = 0; i < 4; i++)
{
- rgb_t color = colortable_palette_get_color(machine().colortable, i);
+ rgb_t color = palette.indirect_color(i);
- colortable_palette_set_color(machine().colortable, 4 + i,
+ palette.set_indirect_color(4 + i,
rgb_t(color.r() < 0xb8 ? color.r() + 0x48 : 0xff,
- color.g() < 0xb8 ? color.g() + 0x48 : 0xff,
+ color.g() < 0xb8 ? color.g() + 0x48 : 0xff,
color.b() < 0xb8 ? color.b() + 0x48 : 0xff));
}
- colortable_entry_set_value(machine().colortable, 0x00, 0);
- colortable_entry_set_value(machine().colortable, 0x01, 1);
- colortable_entry_set_value(machine().colortable, 0x02, 1);
- colortable_entry_set_value(machine().colortable, 0x03, 0);
- colortable_entry_set_value(machine().colortable, 0x04, 0);
- colortable_entry_set_value(machine().colortable, 0x05, 2);
- colortable_entry_set_value(machine().colortable, 0x06, 0);
- colortable_entry_set_value(machine().colortable, 0x07, 3);
- colortable_entry_set_value(machine().colortable, 0x08, 4);
- colortable_entry_set_value(machine().colortable, 0x09, 5);
- colortable_entry_set_value(machine().colortable, 0x0a, 6);
- colortable_entry_set_value(machine().colortable, 0x0b, 7);
+ palette.set_pen_indirect(0x00, 0);
+ palette.set_pen_indirect(0x01, 1);
+ palette.set_pen_indirect(0x02, 1);
+ palette.set_pen_indirect(0x03, 0);
+ palette.set_pen_indirect(0x04, 0);
+ palette.set_pen_indirect(0x05, 2);
+ palette.set_pen_indirect(0x06, 0);
+ palette.set_pen_indirect(0x07, 3);
+ palette.set_pen_indirect(0x08, 4);
+ palette.set_pen_indirect(0x09, 5);
+ palette.set_pen_indirect(0x0a, 6);
+ palette.set_pen_indirect(0x0b, 7);
}
@@ -143,7 +140,7 @@ void wolfpack_state::draw_ship(bitmap_ind16 &bitmap, const rectangle &cliprect)
int chop = (scaler[m_ship_size >> 2] * m_ship_h_precess) >> 16;
- m_gfxdecode->gfx(1)->zoom_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->zoom_transpen(m_palette,bitmap,cliprect,
m_ship_pic,
0,
m_ship_reflect, 0,
@@ -161,7 +158,7 @@ void wolfpack_state::draw_torpedo(bitmap_ind16 &bitmap, const rectangle &cliprec
int y;
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect,
m_torpedo_pic,
0,
0, 0,
@@ -197,7 +194,7 @@ void wolfpack_state::draw_pt(bitmap_ind16 &bitmap, const rectangle &cliprect)
rect.max_x = 255;
- m_gfxdecode->gfx(2)->transpen(bitmap,rect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,rect,
m_pt_pic,
0,
0, 0,
@@ -205,7 +202,7 @@ void wolfpack_state::draw_pt(bitmap_ind16 &bitmap, const rectangle &cliprect)
m_pt_pos_select ? 0x70 : 0xA0, 0);
- m_gfxdecode->gfx(2)->transpen(bitmap,rect,
+ m_gfxdecode->gfx(2)->transpen(m_palette,bitmap,rect,
m_pt_pic,
0,
0, 0,
@@ -214,7 +211,7 @@ void wolfpack_state::draw_pt(bitmap_ind16 &bitmap, const rectangle &cliprect)
}
-void wolfpack_state::draw_water(colortable_t *colortable, bitmap_ind16 &bitmap, const rectangle &cliprect)
+void wolfpack_state::draw_water(palette_device &palette, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
rectangle rect = cliprect;
@@ -229,7 +226,7 @@ void wolfpack_state::draw_water(colortable_t *colortable, bitmap_ind16 &bitmap,
UINT16* p = &bitmap.pix16(y);
for (x = rect.min_x; x <= rect.max_x; x++)
- p[x] = colortable_entry_get_value(colortable, p[x]) | 0x08;
+ p[x] = palette.pen_indirect(p[x]) | 0x08;
}
}
@@ -245,8 +242,8 @@ UINT32 wolfpack_state::screen_update_wolfpack(screen_device &screen, bitmap_ind1
if (m_ship_size & 0x40) color += 0x3a;
if (m_ship_size & 0x80) color += 0x48;
- colortable_palette_set_color(machine().colortable, 3, rgb_t(color,color,color));
- colortable_palette_set_color(machine().colortable, 7, rgb_t(color < 0xb8 ? color + 0x48 : 0xff,
+ m_palette->set_indirect_color(3, rgb_t(color,color,color));
+ m_palette->set_indirect_color(7, rgb_t(color < 0xb8 ? color + 0x48 : 0xff,
color < 0xb8 ? color + 0x48 : 0xff,
color < 0xb8 ? color + 0x48 : 0xff));
@@ -258,7 +255,7 @@ UINT32 wolfpack_state::screen_update_wolfpack(screen_device &screen, bitmap_ind1
int code = m_alpha_num_ram[32 * i + j];
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect,
code,
m_video_invert,
0, 0,
@@ -269,7 +266,7 @@ UINT32 wolfpack_state::screen_update_wolfpack(screen_device &screen, bitmap_ind1
draw_pt(bitmap, cliprect);
draw_ship(bitmap, cliprect);
draw_torpedo(bitmap, cliprect);
- draw_water(machine().colortable, bitmap, cliprect);
+ draw_water(*m_palette, bitmap, cliprect);
return 0;
}
diff --git a/src/mame/video/wrally.c b/src/mame/video/wrally.c
index ca21b585b19..806342fe5b7 100644
--- a/src/mame/video/wrally.c
+++ b/src/mame/video/wrally.c
@@ -126,7 +126,7 @@ void wrally_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect,
}
if (!color_effect) {
- gfx->transpen(bitmap,cliprect,number,
+ gfx->transpen(m_palette,bitmap,cliprect,number,
0x20 + color,xflip,yflip,
sx - 0x0f,sy,0);
} else {
diff --git a/src/mame/video/wwfsstar.c b/src/mame/video/wwfsstar.c
index f31d4a251ac..9276e62c050 100644
--- a/src/mame/video/wwfsstar.c
+++ b/src/mame/video/wwfsstar.c
@@ -167,22 +167,22 @@ void wwfsstar_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
{
if (!flipy)
{
- gfx->transpen(bitmap,cliprect,number+count,colourbank,flipx,flipy,xpos,ypos+16*count,0);
+ gfx->transpen(m_palette,bitmap,cliprect,number+count,colourbank,flipx,flipy,xpos,ypos+16*count,0);
}
else
{
- gfx->transpen(bitmap,cliprect,number+count,colourbank,flipx,flipy,xpos,ypos+(16*(chain-1))-(16*count),0);
+ gfx->transpen(m_palette,bitmap,cliprect,number+count,colourbank,flipx,flipy,xpos,ypos+(16*(chain-1))-(16*count),0);
}
}
else
{
if (!flipy)
{
- gfx->transpen(bitmap,cliprect,number+count,colourbank,flipx,flipy,xpos,ypos-(16*(chain-1))+(16*count),0);
+ gfx->transpen(m_palette,bitmap,cliprect,number+count,colourbank,flipx,flipy,xpos,ypos-(16*(chain-1))+(16*count),0);
}
else
{
- gfx->transpen(bitmap,cliprect,number+count,colourbank,flipx,flipy,xpos,ypos-16*count,0);
+ gfx->transpen(m_palette,bitmap,cliprect,number+count,colourbank,flipx,flipy,xpos,ypos-16*count,0);
}
}
}
diff --git a/src/mame/video/xain.c b/src/mame/video/xain.c
index e141d21f143..f7287b3e158 100644
--- a/src/mame/video/xain.c
+++ b/src/mame/video/xain.c
@@ -185,12 +185,12 @@ void xain_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
if (attr & 0x80) /* double height */
{
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect,
numtile,
color,
flipx,flipy,
sx,flipy ? sy+16:sy-16,0);
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect,
numtile+1,
color,
flipx,flipy,
@@ -198,7 +198,7 @@ void xain_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
}
else
{
- m_gfxdecode->gfx(3)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(3)->transpen(m_palette,bitmap,cliprect,
numtile,
color,
flipx,flipy,
diff --git a/src/mame/video/xevious.c b/src/mame/video/xevious.c
index 095f4aabe1b..3817313b5d5 100644
--- a/src/mame/video/xevious.c
+++ b/src/mame/video/xevious.c
@@ -30,8 +30,6 @@ PALETTE_INIT_MEMBER(xevious_state,xevious)
int i;
#define TOTAL_COLORS(gfxn) (m_gfxdecode->gfx(gfxn)->colors() *m_gfxdecode->gfx(gfxn)->granularity())
- machine().colortable = colortable_alloc(machine(), 128+1);
-
for (i = 0;i < 128;i++)
{
int bit0,bit1,bit2,bit3,r,g,b;
@@ -55,12 +53,12 @@ PALETTE_INIT_MEMBER(xevious_state,xevious)
bit3 = (color_prom[2*256] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- colortable_palette_set_color(machine().colortable,i,rgb_t(r,g,b));
+ palette.set_indirect_color(i,rgb_t(r,g,b));
color_prom++;
}
/* color 0x80 is used by sprites to mark transparency */
- colortable_palette_set_color(machine().colortable,0x80,rgb_t(0,0,0));
+ palette.set_indirect_color(0x80,rgb_t(0,0,0));
color_prom += 128; /* the bottom part of the PROM is unused */
color_prom += 2*256;
@@ -69,7 +67,7 @@ PALETTE_INIT_MEMBER(xevious_state,xevious)
/* background tiles */
for (i = 0;i < TOTAL_COLORS(1);i++)
{
- colortable_entry_set_value(machine().colortable, m_gfxdecode->gfx(1)->colorbase() + i,
+ palette.set_pen_indirect(m_gfxdecode->gfx(1)->colorbase() + i,
(color_prom[0] & 0x0f) | ((color_prom[TOTAL_COLORS(1)] & 0x0f) << 4));
color_prom++;
@@ -81,7 +79,7 @@ PALETTE_INIT_MEMBER(xevious_state,xevious)
{
int c = (color_prom[0] & 0x0f) | ((color_prom[TOTAL_COLORS(2)] & 0x0f) << 4);
- colortable_entry_set_value(machine().colortable, m_gfxdecode->gfx(2)->colorbase() + i,
+ palette.set_pen_indirect(m_gfxdecode->gfx(2)->colorbase() + i,
(c & 0x80) ? (c & 0x7f) : 0x80);
color_prom++;
@@ -91,7 +89,7 @@ PALETTE_INIT_MEMBER(xevious_state,xevious)
/* foreground characters */
for (i = 0;i < TOTAL_COLORS(0);i++)
{
- colortable_entry_set_value(machine().colortable, m_gfxdecode->gfx(0)->colorbase() + i,
+ palette.set_pen_indirect(m_gfxdecode->gfx(0)->colorbase() + i,
(i % 2 != 0) ? (i / 2) : 0x80);
}
}
@@ -103,8 +101,6 @@ PALETTE_INIT_MEMBER(xevious_state,battles)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- machine().colortable = colortable_alloc(machine(), 128+1);
-
for (i = 0;i < 128;i++)
{
int bit0,bit1,bit2,bit3,r,g,b;
@@ -128,12 +124,12 @@ PALETTE_INIT_MEMBER(xevious_state,battles)
bit3 = (color_prom[2*256] >> 3) & 0x01;
b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
- colortable_palette_set_color(machine().colortable,i,rgb_t(r,g,b));
+ palette.set_indirect_color(i,rgb_t(r,g,b));
color_prom++;
}
/* color 0x80 is used by sprites to mark transparency */
- colortable_palette_set_color(machine().colortable,0x80,rgb_t(0,0,0));
+ palette.set_indirect_color(0x80,rgb_t(0,0,0));
color_prom += 128; /* the bottom part of the PROM is unused */
color_prom += 2*256;
@@ -142,7 +138,7 @@ PALETTE_INIT_MEMBER(xevious_state,battles)
/* background tiles */
for (i = 0;i < TOTAL_COLORS(1);i++)
{
- colortable_entry_set_value(machine().colortable, m_gfxdecode->gfx(1)->colorbase() + i,
+ palette.set_pen_indirect(m_gfxdecode->gfx(1)->colorbase() + i,
(color_prom[0] & 0x0f) | ((color_prom[0x400] & 0x0f) << 4));
color_prom++;
@@ -154,7 +150,7 @@ PALETTE_INIT_MEMBER(xevious_state,battles)
{
int c = (color_prom[0] & 0x0f) | ((color_prom[0x400] & 0x0f) << 4);
- colortable_entry_set_value(machine().colortable, m_gfxdecode->gfx(2)->colorbase() + i,
+ palette.set_pen_indirect(m_gfxdecode->gfx(2)->colorbase() + i,
(c & 0x80) ? (c & 0x7f) : 0x80);
color_prom++;
@@ -163,7 +159,7 @@ PALETTE_INIT_MEMBER(xevious_state,battles)
/* foreground characters */
for (i = 0;i < TOTAL_COLORS(0);i++)
{
- colortable_entry_set_value(machine().colortable, m_gfxdecode->gfx(0)->colorbase() + i,
+ palette.set_pen_indirect(m_gfxdecode->gfx(0)->colorbase() + i,
(i % 2 != 0) ? (i / 2) : 0x80);
}
}
@@ -434,41 +430,41 @@ void xevious_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
flipy = !flipy;
}
- transmask = colortable_get_transpen_mask(machine().colortable, m_gfxdecode->gfx(bank), color, 0x80);
+ transmask = m_palette->transpen_mask(*m_gfxdecode->gfx(bank), color, 0x80);
if (spriteram_3[offs] & 2) /* double height (?) */
{
if (spriteram_3[offs] & 1) /* double width, double height */
{
code &= ~3;
- m_gfxdecode->gfx(bank)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(bank)->transmask(m_palette,bitmap,cliprect,
code+3,color,flipx,flipy,
flipx ? sx : sx+16,flipy ? sy-16 : sy,transmask);
- m_gfxdecode->gfx(bank)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(bank)->transmask(m_palette,bitmap,cliprect,
code+1,color,flipx,flipy,
flipx ? sx : sx+16,flipy ? sy : sy-16,transmask);
}
code &= ~2;
- m_gfxdecode->gfx(bank)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(bank)->transmask(m_palette,bitmap,cliprect,
code+2,color,flipx,flipy,
flipx ? sx+16 : sx,flipy ? sy-16 : sy,transmask);
- m_gfxdecode->gfx(bank)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(bank)->transmask(m_palette,bitmap,cliprect,
code,color,flipx,flipy,
flipx ? sx+16 : sx,flipy ? sy : sy-16,transmask);
}
else if (spriteram_3[offs] & 1) /* double width */
{
code &= ~1;
- m_gfxdecode->gfx(bank)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(bank)->transmask(m_palette,bitmap,cliprect,
code,color,flipx,flipy,
flipx ? sx+16 : sx,flipy ? sy-16 : sy,transmask);
- m_gfxdecode->gfx(bank)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(bank)->transmask(m_palette,bitmap,cliprect,
code+1,color,flipx,flipy,
flipx ? sx : sx+16,flipy ? sy-16 : sy,transmask);
}
else /* normal */
{
- m_gfxdecode->gfx(bank)->transmask(bitmap,cliprect,
+ m_gfxdecode->gfx(bank)->transmask(m_palette,bitmap,cliprect,
code,color,flipx,flipy,sx,sy,transmask);
}
}
diff --git a/src/mame/video/xorworld.c b/src/mame/video/xorworld.c
index d6049bea801..a7af8dc9648 100644
--- a/src/mame/video/xorworld.c
+++ b/src/mame/video/xorworld.c
@@ -16,12 +16,12 @@
***************************************************************************/
-void xorworld_state::palette_init()
+PALETTE_INIT_MEMBER(xorworld_state, xorworld)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0;i < machine().total_colors();i++){
+ for (i = 0;i < palette.entries();i++){
int bit0,bit1,bit2,bit3;
int r,g,b;
@@ -32,18 +32,18 @@ void xorworld_state::palette_init()
bit3 = (color_prom[0] >> 3) & 0x01;
r = 0x0e*bit0 + 0x1e*bit1 + 0x44*bit2 + 0x8f*bit3;
/* green component */
- bit0 = (color_prom[machine().total_colors()] >> 0) & 0x01;
- bit1 = (color_prom[machine().total_colors()] >> 1) & 0x01;
- bit2 = (color_prom[machine().total_colors()] >> 2) & 0x01;
- bit3 = (color_prom[machine().total_colors()] >> 3) & 0x01;
+ bit0 = (color_prom[palette.entries()] >> 0) & 0x01;
+ bit1 = (color_prom[palette.entries()] >> 1) & 0x01;
+ bit2 = (color_prom[palette.entries()] >> 2) & 0x01;
+ bit3 = (color_prom[palette.entries()] >> 3) & 0x01;
g = 0x0e*bit0 + 0x1e*bit1 + 0x44*bit2 + 0x8f*bit3;
/* blue component */
- bit0 = (color_prom[2*machine().total_colors()] >> 0) & 0x01;
- bit1 = (color_prom[2*machine().total_colors()] >> 1) & 0x01;
- bit2 = (color_prom[2*machine().total_colors()] >> 2) & 0x01;
- bit3 = (color_prom[2*machine().total_colors()] >> 3) & 0x01;
+ bit0 = (color_prom[2*palette.entries()] >> 0) & 0x01;
+ bit1 = (color_prom[2*palette.entries()] >> 1) & 0x01;
+ bit2 = (color_prom[2*palette.entries()] >> 2) & 0x01;
+ bit3 = (color_prom[2*palette.entries()] >> 3) & 0x01;
b = 0x0e*bit0 + 0x1e * bit1 + 0x44*bit2 + 0x8f*bit3;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
color_prom++;
}
@@ -106,7 +106,7 @@ void xorworld_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
int code = (spriteram16[i+1] & 0x0ffc) >> 2;
int color = (spriteram16[i+1] & 0xf000) >> 12;
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code, color, 0, 0, sx, sy, 0);
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect, code, color, 0, 0, sx, sy, 0);
}
}
diff --git a/src/mame/video/xxmissio.c b/src/mame/video/xxmissio.c
index fdf58538c35..0ac6eeef1d1 100644
--- a/src/mame/video/xxmissio.c
+++ b/src/mame/video/xxmissio.c
@@ -43,7 +43,7 @@ READ8_MEMBER(xxmissio_state::xxmissio_bgram_r)
WRITE8_MEMBER(xxmissio_state::xxmissio_paletteram_w)
{
- paletteram_BBGGRRII_byte_w(space,offset,data);
+ m_palette->write(space,offset,data);
}
/****************************************************************************/
@@ -110,14 +110,14 @@ void xxmissio_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
px &= 0x1ff;
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
chr,
col,
fx,fy,
px,py,0);
if (px>0x1e0)
- gfx->transpen(bitmap,cliprect,
+ gfx->transpen(m_palette,bitmap,cliprect,
chr,
col,
fx,fy,
diff --git a/src/mame/video/xyonix.c b/src/mame/video/xyonix.c
index 7e80a68ab8d..a723ef2a296 100644
--- a/src/mame/video/xyonix.c
+++ b/src/mame/video/xyonix.c
@@ -1,13 +1,13 @@
#include "emu.h"
#include "includes/xyonix.h"
-void xyonix_state::palette_init()
+PALETTE_INIT_MEMBER(xyonix_state, xyonix)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0;i < machine().total_colors();i++)
+ for (i = 0;i < palette.entries();i++)
{
int bit0,bit1,bit2,r,g,b;
@@ -26,7 +26,7 @@ void xyonix_state::palette_init()
bit1 = (color_prom[i] >> 4) & 0x01;
b = 0x4f * bit0 + 0xa8 * bit1;
- palette_set_color(machine(),i,rgb_t(r,g,b));
+ palette.set_pen_color(i,rgb_t(r,g,b));
}
}
diff --git a/src/mame/video/ygv608.c b/src/mame/video/ygv608.c
index fcab3a59c09..7357ff50d80 100644
--- a/src/mame/video/ygv608.c
+++ b/src/mame/video/ygv608.c
@@ -51,7 +51,8 @@ const device_type YGV608 = &device_creator<ygv608_device>;
ygv608_device::ygv608_device( const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock )
: device_t(mconfig, YGV608, "YGV608", tag, owner, clock, "ygv608", __FILE__),
- m_gfxdecode(*this)
+ m_gfxdecode(*this),
+ m_palette(*this)
{
}
@@ -60,6 +61,16 @@ void ygv608_device::static_set_gfxdecode_tag(device_t &device, const char *tag)
downcast<ygv608_device &>(device).m_gfxdecode.set_tag(tag);
}
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void ygv608_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<ygv608_device &>(device).m_palette.set_tag(tag);
+}
+
void ygv608_device::set_gfxbank(UINT8 gfxbank)
{
m_namcond1_gfxbank = gfxbank;
@@ -606,20 +617,20 @@ void ygv608_device::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
logerror( "SZ_8X8: sprite=%d\n", code );
code = 0;
}
- m_gfxdecode->gfx(GFX_8X8_4BIT)->transpen(bitmap,spriteClip,
+ m_gfxdecode->gfx(GFX_8X8_4BIT)->transpen(m_palette,bitmap,spriteClip,
code+m_namcond1_gfxbank*0x10000,
color,
flipx,flipy,
sx,sy,0x00);
// redraw with wrap-around
if( sx > 512-8 )
- m_gfxdecode->gfx(GFX_8X8_4BIT)->transpen(bitmap,spriteClip,
+ m_gfxdecode->gfx(GFX_8X8_4BIT)->transpen(m_palette,bitmap,spriteClip,
code+m_namcond1_gfxbank*0x10000,
color,
flipx,flipy,
sx-512,sy,0x00);
if( sy > 512-8 )
- m_gfxdecode->gfx(GFX_8X8_4BIT)->transpen(bitmap,spriteClip,
+ m_gfxdecode->gfx(GFX_8X8_4BIT)->transpen(m_palette,bitmap,spriteClip,
code+m_namcond1_gfxbank*0x10000,
color,
flipx,flipy,
@@ -636,20 +647,20 @@ void ygv608_device::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
logerror( "SZ_8X8: sprite=%d\n", code );
code = 0;
}
- m_gfxdecode->gfx(GFX_16X16_4BIT)->transpen(bitmap,spriteClip,
+ m_gfxdecode->gfx(GFX_16X16_4BIT)->transpen(m_palette,bitmap,spriteClip,
code+m_namcond1_gfxbank*0x4000,
color,
flipx,flipy,
sx,sy,0x00);
// redraw with wrap-around
if( sx > 512-16 )
- m_gfxdecode->gfx(GFX_16X16_4BIT)->transpen(bitmap,spriteClip,
+ m_gfxdecode->gfx(GFX_16X16_4BIT)->transpen(m_palette,bitmap,spriteClip,
code+m_namcond1_gfxbank*0x4000,
color,
flipx,flipy,
sx-512,sy,0x00);
if( sy > 512-16 )
- m_gfxdecode->gfx(GFX_16X16_4BIT)->transpen(bitmap,spriteClip,
+ m_gfxdecode->gfx(GFX_16X16_4BIT)->transpen(m_palette,bitmap,spriteClip,
code+m_namcond1_gfxbank*0x4000,
color,
flipx,flipy,
@@ -666,20 +677,20 @@ void ygv608_device::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
logerror( "SZ_32X32: sprite=%d\n", code );
code = 0;
}
- m_gfxdecode->gfx(GFX_32X32_4BIT)->transpen(bitmap,spriteClip,
+ m_gfxdecode->gfx(GFX_32X32_4BIT)->transpen(m_palette,bitmap,spriteClip,
code+m_namcond1_gfxbank*0x1000,
color,
flipx,flipy,
sx,sy,0x00);
// redraw with wrap-around
if( sx > 512-32 )
- m_gfxdecode->gfx(GFX_32X32_4BIT)->transpen(bitmap,spriteClip,
+ m_gfxdecode->gfx(GFX_32X32_4BIT)->transpen(m_palette,bitmap,spriteClip,
code+m_namcond1_gfxbank*0x1000,
color,
flipx,flipy,
sx-512,sy,0x00);
if( sy > 512-32 )
- m_gfxdecode->gfx(GFX_32X32_4BIT)->transpen(bitmap,spriteClip,
+ m_gfxdecode->gfx(GFX_32X32_4BIT)->transpen(m_palette,bitmap,spriteClip,
code+m_namcond1_gfxbank*0x1000,
color,
flipx,flipy,
@@ -696,20 +707,20 @@ void ygv608_device::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
logerror( "SZ_64X64: sprite=%d\n", code );
code = 0;
}
- m_gfxdecode->gfx(GFX_64X64_4BIT)->transpen(bitmap,spriteClip,
+ m_gfxdecode->gfx(GFX_64X64_4BIT)->transpen(m_palette,bitmap,spriteClip,
code+m_namcond1_gfxbank*0x400,
color,
flipx,flipy,
sx,sy,0x00);
// redraw with wrap-around
if( sx > 512-64 )
- m_gfxdecode->gfx(GFX_64X64_4BIT)->transpen(bitmap,spriteClip,
+ m_gfxdecode->gfx(GFX_64X64_4BIT)->transpen(m_palette,bitmap,spriteClip,
code+m_namcond1_gfxbank*0x400,
color,
flipx,flipy,
sx-512,sy,0x00);
if( sy > 512-64 )
- m_gfxdecode->gfx(GFX_64X64_4BIT)->transpen(bitmap,spriteClip,
+ m_gfxdecode->gfx(GFX_64X64_4BIT)->transpen(m_palette,bitmap,spriteClip,
code+m_namcond1_gfxbank*0x400,
color,
flipx,flipy,
@@ -1217,7 +1228,7 @@ WRITE16_MEMBER( ygv608_device::write )
if (++p3_state == 3)
{
p3_state = 0;
- palette_set_color_rgb(machine(),m_regs.s.cc,
+ m_palette->set_pen_color(m_regs.s.cc,
pal6bit(m_colour_palette[m_regs.s.cc][0]),
pal6bit(m_colour_palette[m_regs.s.cc][1]),
pal6bit(m_colour_palette[m_regs.s.cc][2]) );
diff --git a/src/mame/video/ygv608.h b/src/mame/video/ygv608.h
index 417534dca34..aee4c5793b9 100644
--- a/src/mame/video/ygv608.h
+++ b/src/mame/video/ygv608.h
@@ -288,6 +288,7 @@ public:
// static configuration
static void static_set_gfxdecode_tag(device_t &device, const char *tag);
+ static void static_set_palette_tag(device_t &device, const char *tag);
DECLARE_WRITE16_MEMBER( write );
DECLARE_READ16_MEMBER( read );
@@ -374,6 +375,7 @@ private:
UINT8 m_screen_resize; // screen requires resize
UINT8 m_tilemap_resize; // tilemap requires resize
required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
};
// device type definition
@@ -390,4 +392,7 @@ extern const device_type YGV608;
#define MCFG_YGV608_GFXDECODE(_gfxtag) \
ygv608_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
+#define MCFG_YGV608_PALETTE(_palette_tag) \
+ ygv608_device::static_set_palette_tag(*device, "^" _palette_tag);
+
#endif
diff --git a/src/mame/video/yiear.c b/src/mame/video/yiear.c
index 23853aeed9f..5fa008e3cc7 100644
--- a/src/mame/video/yiear.c
+++ b/src/mame/video/yiear.c
@@ -28,12 +28,12 @@
***************************************************************************/
-void yiear_state::palette_init()
+PALETTE_INIT_MEMBER(yiear_state, yiear)
{
const UINT8 *color_prom = memregion("proms")->base();
int i;
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -55,7 +55,7 @@ void yiear_state::palette_init()
bit2 = (*color_prom >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- palette_set_color(machine(), i, rgb_t(r,g,b));
+ palette.set_pen_color(i, rgb_t(r,g,b));
color_prom++;
}
}
@@ -130,7 +130,7 @@ void yiear_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
code, color,
flipx, flipy,
sx, sy, 0);
diff --git a/src/mame/video/yunsun16.c b/src/mame/video/yunsun16.c
index a3d252ba661..69ce9cf4081 100644
--- a/src/mame/video/yunsun16.c
+++ b/src/mame/video/yunsun16.c
@@ -171,7 +171,7 @@ void yunsun16_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap,
flipy = !flipy; y = max_y - y - 16;
}
- m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->prio_transpen(m_palette,bitmap,cliprect,
code,
attr & 0x1f,
flipx, flipy,
diff --git a/src/mame/video/yunsung8.c b/src/mame/video/yunsung8.c
index bfbc0f7d059..51b9aa6e132 100644
--- a/src/mame/video/yunsung8.c
+++ b/src/mame/video/yunsung8.c
@@ -79,7 +79,7 @@ WRITE8_MEMBER(yunsung8_state::yunsung8_videoram_w)
color = RAM[offset & ~1] | (RAM[offset | 1] << 8);
/* BBBBBGGGGGRRRRRx */
- palette_set_color_rgb(machine(), offset / 2 + (bank ? 0x400 : 0), pal5bit(color >> 0), pal5bit(color >> 5), pal5bit(color >> 10));
+ m_palette->set_pen_color(offset / 2 + (bank ? 0x400 : 0), pal5bit(color >> 0), pal5bit(color >> 5), pal5bit(color >> 10));
}
else
{
diff --git a/src/mame/video/zac2650.c b/src/mame/video/zac2650.c
index 52461ebe674..1d687f3e393 100644
--- a/src/mame/video/zac2650.c
+++ b/src/mame/video/zac2650.c
@@ -61,7 +61,7 @@ int zac2650_state::SpriteCollision(int first,int second)
/* Draw first sprite */
- m_gfxdecode->gfx(expand)->opaque(m_spritebitmap,m_spritebitmap.cliprect(),
+ m_gfxdecode->gfx(expand)->opaque(m_palette,m_spritebitmap,m_spritebitmap.cliprect(),
first * 2,
0,
0,0,
@@ -80,7 +80,7 @@ int zac2650_state::SpriteCollision(int first,int second)
/* Blackout second sprite */
- m_gfxdecode->gfx(1)->transpen(m_spritebitmap,m_spritebitmap.cliprect(),
+ m_gfxdecode->gfx(1)->transpen(m_palette,m_spritebitmap,m_spritebitmap.cliprect(),
second * 2,
1,
0,0,
@@ -99,7 +99,7 @@ int zac2650_state::SpriteCollision(int first,int second)
/* Zero bitmap */
- m_gfxdecode->gfx(expand)->opaque(m_spritebitmap,m_spritebitmap.cliprect(),
+ m_gfxdecode->gfx(expand)->opaque(m_palette,m_spritebitmap,m_spritebitmap.cliprect(),
first * 2,
1,
0,0,
@@ -161,7 +161,7 @@ void zac2650_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
int x,y;
/* Sprite->Background collision detection */
- m_gfxdecode->gfx(expand)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(expand)->transpen(m_palette,bitmap,cliprect,
spriteno,
1,
0,0,
@@ -180,7 +180,7 @@ void zac2650_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
}
}
- m_gfxdecode->gfx(expand)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(expand)->transpen(m_palette,bitmap,cliprect,
spriteno,
0,
0,0,
diff --git a/src/mame/video/zaccaria.c b/src/mame/video/zaccaria.c
index bd2a1383d07..c7a87df7b0b 100644
--- a/src/mame/video/zaccaria.c
+++ b/src/mame/video/zaccaria.c
@@ -33,7 +33,7 @@ Here's the hookup from the proms (82s131) to the r-g-b-outputs
***************************************************************************/
-void zaccaria_state::palette_init()
+PALETTE_INIT_MEMBER(zaccaria_state, zaccaria)
{
const UINT8 *color_prom = memregion("proms")->base();
int i, j, k;
@@ -47,9 +47,6 @@ void zaccaria_state::palette_init()
2, resistances_b, weights_b, 470, 0,
0, 0, 0, 0, 0);
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x200);
-
for (i = 0; i < 0x200; i++)
{
/*
@@ -61,7 +58,7 @@ void zaccaria_state::palette_init()
black anyway.
*/
if (((i % 64) / 8) == 0)
- colortable_palette_set_color(machine().colortable, i, rgb_t::black);
+ palette.set_indirect_color(i, rgb_t::black);
else
{
int bit0, bit1, bit2;
@@ -84,7 +81,7 @@ void zaccaria_state::palette_init()
bit1 = (color_prom[i + 0x200] >> 0) & 0x01;
b = combine_2_weights(weights_b, bit0, bit1);
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
}
@@ -96,13 +93,13 @@ void zaccaria_state::palette_init()
for (j = 0;j < 4;j++)
for (k = 0;k < 8;k++)
/* swap j and k to make the colors sequential */
- colortable_entry_set_value(machine().colortable, 0 + 32 * i + 8 * j + k, 64 * i + 8 * k + 2*j);
+ palette.set_pen_indirect(0 + 32 * i + 8 * j + k, 64 * i + 8 * k + 2*j);
for (i = 0;i < 8;i++)
for (j = 0;j < 4;j++)
for (k = 0;k < 8;k++)
/* swap j and k to make the colors sequential */
- colortable_entry_set_value(machine().colortable, 256 + 32 * i + 8 * j + k, 64 * i + 8 * k + 2*j+1);
+ palette.set_pen_indirect(256 + 32 * i + 8 * j + k, 64 * i + 8 * k + 2*j+1);
}
@@ -233,7 +230,7 @@ void zaccaria_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
(spriteram[offs + o1] & 0x3f) + (spriteram[offs + o2] & 0xc0),
((spriteram[offs + o2] & 0x07) << 2) | color,
flipx,flipy,sx,sy,0);
diff --git a/src/mame/video/zaxxon.c b/src/mame/video/zaxxon.c
index b473ba8617c..f3067707ac4 100644
--- a/src/mame/video/zaxxon.c
+++ b/src/mame/video/zaxxon.c
@@ -15,7 +15,7 @@
*
*************************************/
-void zaxxon_state::palette_init()
+PALETTE_INIT_MEMBER(zaxxon_state, zaxxon)
{
const UINT8 *color_prom = memregion("proms")->base();
static const int resistances[3] = { 1000, 470, 220 };
@@ -29,7 +29,7 @@ void zaxxon_state::palette_init()
2, &resistances[1], bweights, 470, 0);
/* initialize the palette with these colors */
- for (i = 0; i < machine().total_colors(); i++)
+ for (i = 0; i < palette.entries(); i++)
{
int bit0, bit1, bit2;
int r, g, b;
@@ -51,7 +51,7 @@ void zaxxon_state::palette_init()
bit1 = (color_prom[i] >> 7) & 0x01;
b = combine_2_weights(bweights, bit0, bit1);
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
/* color_prom now points to the beginning of the character color codes */
@@ -353,7 +353,7 @@ void zaxxon_state::draw_background(bitmap_ind16 &bitmap, const rectangle &clipre
/* if not enabled, fill the background with black */
else
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
}
@@ -428,10 +428,10 @@ void zaxxon_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect,
int sx = find_minimum_x(spriteram[offs + 3], flip);
/* draw with 256 pixel offsets to ensure we wrap properly */
- gfx->transpen(bitmap,cliprect, code, color, flipx, flipy, sx, sy, 0);
- gfx->transpen(bitmap,cliprect, code, color, flipx, flipy, sx, sy - 0x100, 0);
- gfx->transpen(bitmap,cliprect, code, color, flipx, flipy, sx - 0x100, sy, 0);
- gfx->transpen(bitmap,cliprect, code, color, flipx, flipy, sx - 0x100, sy - 0x100, 0);
+ gfx->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy, sx, sy, 0);
+ gfx->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy, sx, sy - 0x100, 0);
+ gfx->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy, sx - 0x100, sy, 0);
+ gfx->transpen(m_palette,bitmap,cliprect, code, color, flipx, flipy, sx - 0x100, sy - 0x100, 0);
}
}
diff --git a/src/mame/video/zodiack.c b/src/mame/video/zodiack.c
index e4a5197b0fd..64d0b923531 100644
--- a/src/mame/video/zodiack.c
+++ b/src/mame/video/zodiack.c
@@ -47,9 +47,6 @@ PALETTE_INIT_MEMBER(zodiack_state,zodiack)
const UINT8 *color_prom = memregion("proms")->base();
int i;
- /* allocate the colortable */
- machine().colortable = colortable_alloc(machine(), 0x31);
-
/* create a lookup table for the palette */
for (i = 0; i < 0x30; i++)
{
@@ -74,25 +71,25 @@ PALETTE_INIT_MEMBER(zodiack_state,zodiack)
bit2 = (color_prom[i] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
/* white for bullets */
- colortable_palette_set_color(machine().colortable, 0x30, rgb_t::white);
+ palette.set_indirect_color(0x30, rgb_t::white);
for (i = 0; i < 0x20; i++)
if ((i & 3) == 0)
- colortable_entry_set_value(machine().colortable, i, 0);
+ palette.set_pen_indirect(i, 0);
for (i = 0; i < 0x10; i += 2)
{
- colortable_entry_set_value(machine().colortable, 0x20 + i, 32 + (i / 2));
- colortable_entry_set_value(machine().colortable, 0x21 + i, 40 + (i / 2));
+ palette.set_pen_indirect(0x20 + i, 32 + (i / 2));
+ palette.set_pen_indirect(0x21 + i, 40 + (i / 2));
}
/* bullet */
- colortable_entry_set_value(machine().colortable, 0x30, 0);
- colortable_entry_set_value(machine().colortable, 0x31, 0x30);
+ palette.set_pen_indirect(0x30, 0);
+ palette.set_pen_indirect(0x31, 0x30);
}
TILE_GET_INFO_MEMBER(zodiack_state::get_bg_tile_info)
@@ -130,7 +127,7 @@ void zodiack_state::draw_bullets( bitmap_ind16 &bitmap, const rectangle &cliprec
if (!(flip_screen() && m_percuss_hardware))
sy = 255 - sy;
- m_gfxdecode->gfx(2)->transpen(
+ m_gfxdecode->gfx(2)->transpen(m_palette,
bitmap,
cliprect,
0, /* this is just a dot, generated by the hardware */
@@ -156,7 +153,7 @@ void zodiack_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
flipy = !flipy;
}
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(1)->transpen(m_palette,bitmap,cliprect,
spritecode,
m_spriteram[offs + 2] & 0x07,
flipx, flipy,
diff --git a/src/mess/drivers/a2600.c b/src/mess/drivers/a2600.c
index 21039fe0c09..d55e3a67214 100644
--- a/src/mess/drivers/a2600.c
+++ b/src/mess/drivers/a2600.c
@@ -1954,7 +1954,7 @@ static MACHINE_CONFIG_START( a2600, a2600_state )
MCFG_SCREEN_RAW_PARAMS( MASTER_CLOCK_NTSC, 228, 26, 26 + 160 + 16, 262, 24 , 24 + 192 + 31 )
MCFG_SCREEN_UPDATE_DEVICE("tia_video", tia_video_device, screen_update)
- MCFG_PALETTE_LENGTH( TIA_PALETTE_LENGTH )
+ MCFG_PALETTE_ADD( "palette", TIA_PALETTE_LENGTH )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1990,7 +1990,7 @@ static MACHINE_CONFIG_START( a2600p, a2600_state )
MCFG_SCREEN_RAW_PARAMS( MASTER_CLOCK_PAL, 228, 26, 26 + 160 + 16, 312, 32, 32 + 228 + 31 )
MCFG_SCREEN_UPDATE_DEVICE("tia_video", tia_video_device, screen_update)
- MCFG_PALETTE_LENGTH( TIA_PALETTE_LENGTH )
+ MCFG_PALETTE_ADD( "palette", TIA_PALETTE_LENGTH )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/a310.c b/src/mess/drivers/a310.c
index 35cb1ce2c15..e1c8dd93e3d 100644
--- a/src/mess/drivers/a310.c
+++ b/src/mess/drivers/a310.c
@@ -309,7 +309,7 @@ static MACHINE_CONFIG_START( a310, a310_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 1280 - 1, 0*16, 1024 - 1)
MCFG_SCREEN_UPDATE_DRIVER(archimedes_state, screen_update)
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD("palette", 32768)
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("2M")
diff --git a/src/mess/drivers/a5105.c b/src/mess/drivers/a5105.c
index d3c2fd94ba1..eaba3721917 100644
--- a/src/mess/drivers/a5105.c
+++ b/src/mess/drivers/a5105.c
@@ -82,7 +82,7 @@ public:
UINT8 m_memsel[4];
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(a5105);
DECLARE_FLOPPY_FORMATS( floppy_formats );
required_device<ram_device> m_ram;
required_device<gfxdecode_device> m_gfxdecode;
@@ -516,7 +516,7 @@ static GFXDECODE_START( a5105 )
GFXDECODE_END
-void a5105_state::palette_init()
+PALETTE_INIT_MEMBER(a5105_state, a5105)
{
int i;
int r,g,b;
@@ -527,7 +527,7 @@ void a5105_state::palette_init()
g = i & 2 ? ((i & 8) ? 0xaa : 0xff) : 0x00;
b = i & 1 ? ((i & 8) ? 0xaa : 0xff) : 0x00;
- palette_set_color(machine(), i, rgb_t(r,g,b));
+ palette.set_pen_color(i, rgb_t(r,g,b));
}
}
@@ -600,7 +600,8 @@ static MACHINE_CONFIG_START( a5105, a5105_state )
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 0, 25*8-1)
MCFG_GFXDECODE_ADD("gfxdecode", a5105)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(a5105_state, a5105)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/a51xx.c b/src/mess/drivers/a51xx.c
index b9520aca27f..cc597df63f6 100644
--- a/src/mess/drivers/a51xx.c
+++ b/src/mess/drivers/a51xx.c
@@ -124,8 +124,8 @@ static MACHINE_CONFIG_START( a5120, a51xx_state )
MCFG_SCREEN_UPDATE_DRIVER(a51xx_state, screen_update_a5120)
MCFG_GFXDECODE_ADD("gfxdecode", a51xx)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/a6809.c b/src/mess/drivers/a6809.c
index f24e3775718..059dc72e8a8 100644
--- a/src/mess/drivers/a6809.c
+++ b/src/mess/drivers/a6809.c
@@ -258,7 +258,7 @@ static MACHINE_CONFIG_START( a6809, a6809_state )
MCFG_SCREEN_SIZE(40 * 12, 25 * 20)
MCFG_SCREEN_VISIBLE_AREA(0, 40 * 12 - 1, 0, 25 * 20 - 1)
MCFG_SCREEN_UPDATE_DEVICE("saa5050", saa5050_device, screen_update)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/a7000.c b/src/mess/drivers/a7000.c
index 7d3f92c79af..a145ab87a3c 100644
--- a/src/mess/drivers/a7000.c
+++ b/src/mess/drivers/a7000.c
@@ -204,7 +204,7 @@ WRITE32_MEMBER( a7000_state::a7000_vidc20_w )
g = (data & 0x00ff00) >> 8;
b = (data & 0xff0000) >> 16;
- palette_set_color_rgb(machine(),m_vidc20_pal_index & 0xff,r,g,b);
+ m_palette->set_pen_color(m_vidc20_pal_index & 0xff,r,g,b);
/* auto-increment & wrap-around */
m_vidc20_pal_index++;
@@ -225,7 +225,7 @@ WRITE32_MEMBER( a7000_state::a7000_vidc20_w )
g = (data & 0x00ff00) >> 8;
b = (data & 0xff0000) >> 16;
- palette_set_color_rgb(machine(),0x100,r,g,b);
+ m_palette->set_pen_color(0x100,r,g,b);
break;
case 5: // Cursor Palette Logical Colour n
case 6:
@@ -236,7 +236,7 @@ WRITE32_MEMBER( a7000_state::a7000_vidc20_w )
g = (data & 0x00ff00) >> 8;
b = (data & 0xff0000) >> 16;
- palette_set_color_rgb(machine(),cursor_index,r,g,b);
+ m_palette->set_pen_color(cursor_index,r,g,b);
break;
case 8: // Horizontal
horz_reg = (data >> 24) & 0xf;
@@ -277,7 +277,7 @@ UINT32 a7000_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, c
UINT32 count;
UINT8 *vram = memregion("vram")->base();
- bitmap.fill(machine().pens[0x100], cliprect);
+ bitmap.fill(m_palette->pen(0x100), cliprect);
x_size = (m_vidc20_horz_reg[HDER]-m_vidc20_horz_reg[HDSR]);
y_size = (m_vidc20_vert_reg[VDER]-m_vidc20_vert_reg[VDSR]);
@@ -301,7 +301,7 @@ UINT32 a7000_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, c
for(x=0;x<x_size;x+=8)
{
for(xi=0;xi<8;xi++)
- bitmap.pix32(y+y_start, x+xi+x_start) = machine().pens[(vram[count]>>(xi))&1];
+ bitmap.pix32(y+y_start, x+xi+x_start) = m_palette->pen((vram[count]>>(xi))&1);
count++;
}
@@ -315,7 +315,7 @@ UINT32 a7000_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, c
for(x=0;x<x_size;x+=4)
{
for(xi=0;xi<4;xi++)
- bitmap.pix32(y+y_start, x+xi+x_start) = machine().pens[(vram[count]>>(xi*2))&3];
+ bitmap.pix32(y+y_start, x+xi+x_start) = m_palette->pen((vram[count]>>(xi*2))&3);
count++;
}
@@ -329,7 +329,7 @@ UINT32 a7000_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, c
for(x=0;x<x_size;x+=2)
{
for(xi=0;xi<2;xi++)
- bitmap.pix32(y+y_start, x+xi+x_start) = machine().pens[(vram[count]>>(xi*4))&0xf];
+ bitmap.pix32(y+y_start, x+xi+x_start) = m_palette->pen((vram[count]>>(xi*4))&0xf);
count++;
}
@@ -342,7 +342,7 @@ UINT32 a7000_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, c
{
for(x=0;x<x_size;x++)
{
- bitmap.pix32(y+y_start, x+x_start) = machine().pens[(vram[count])&0xff];
+ bitmap.pix32(y+y_start, x+x_start) = m_palette->pen((vram[count])&0xff);
count++;
}
@@ -807,7 +807,7 @@ static MACHINE_CONFIG_START( a7000, a7000_state )
MCFG_SCREEN_SIZE(1900, 1080) //max available size
MCFG_SCREEN_VISIBLE_AREA(0, 1900-1, 0, 1080-1)
MCFG_SCREEN_UPDATE_DRIVER(a7000_state, screen_update)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( a7000p, a7000 )
diff --git a/src/mess/drivers/a7150.c b/src/mess/drivers/a7150.c
index 53d01cbd2ad..13009999317 100644
--- a/src/mess/drivers/a7150.c
+++ b/src/mess/drivers/a7150.c
@@ -64,8 +64,7 @@ static MACHINE_CONFIG_START( a7150, a7150_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(a7150_state, screen_update_a7150)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/a7800.c b/src/mess/drivers/a7800.c
index fb0e10244d4..1920c1df209 100644
--- a/src/mess/drivers/a7800.c
+++ b/src/mess/drivers/a7800.c
@@ -1006,15 +1006,15 @@ define NTSC_LIGHT_ORANGE
***************************************************************************/
/* Initialise the palette */
-void a7800_state::palette_init()
+PALETTE_INIT_MEMBER(a7800_state, a7800)
{
- palette_set_colors(machine(), 0, a7800_palette, ARRAY_LENGTH(a7800_palette));
+ palette.set_pen_colors(0, a7800_palette, ARRAY_LENGTH(a7800_palette));
}
PALETTE_INIT_MEMBER(a7800_state,a7800p)
{
- palette_set_colors(machine(), 0, a7800p_palette, ARRAY_LENGTH(a7800p_palette));
+ palette.set_pen_colors(0, a7800p_palette, ARRAY_LENGTH(a7800p_palette));
}
@@ -1034,7 +1034,8 @@ static MACHINE_CONFIG_START( a7800_ntsc, a7800_state )
MCFG_SCREEN_RAW_PARAMS( 7159090, 456, 0, 320, 262, 26, 26 + 192 + 30 )
MCFG_SCREEN_UPDATE_DRIVER(a7800_state, screen_update_a7800)
- MCFG_PALETTE_LENGTH(ARRAY_LENGTH(a7800_palette))
+ MCFG_PALETTE_ADD("palette", ARRAY_LENGTH(a7800_palette))
+ MCFG_PALETTE_INIT_OWNER(a7800_state, a7800)
/* sound hardware */
@@ -1069,7 +1070,9 @@ static MACHINE_CONFIG_DERIVED( a7800_pal, a7800_ntsc )
MCFG_SCREEN_MODIFY( "screen" )
MCFG_SCREEN_RAW_PARAMS( 7093788, 456, 0, 320, 312, 34, 34 + 228 + 30 )
- MCFG_PALETTE_INIT_OVERRIDE(a7800_state, a7800p )
+
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(a7800_state, a7800p )
/* sound hardware */
MCFG_DEVICE_REMOVE("pokey")
diff --git a/src/mess/drivers/ac1.c b/src/mess/drivers/ac1.c
index 204525d379f..ff1354e1725 100644
--- a/src/mess/drivers/ac1.c
+++ b/src/mess/drivers/ac1.c
@@ -136,10 +136,9 @@ static MACHINE_CONFIG_START( ac1, ac1_state )
MCFG_SCREEN_VISIBLE_AREA(0, 64*6-1, 0, 16*8-1)
MCFG_SCREEN_UPDATE_DRIVER(ac1_state, screen_update_ac1)
- MCFG_GFXDECODE_ADD("gfxdecode", ac1 )
+ MCFG_GFXDECODE_ADD("gfxdecode", ac1 )
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/ace.c b/src/mess/drivers/ace.c
index 49d6b5dd063..19c42b1fce6 100644
--- a/src/mess/drivers/ace.c
+++ b/src/mess/drivers/ace.c
@@ -739,8 +739,7 @@ static MACHINE_CONFIG_START( ace, ace_state )
MCFG_TIMER_DRIVER_ADD_SCANLINE("set_irq", ace_state, set_irq, SCREEN_TAG, 31*8, 264)
MCFG_TIMER_DRIVER_ADD_SCANLINE("clear_irq", ace_state, clear_irq, SCREEN_TAG, 32*8, 264)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", ace)
diff --git a/src/mess/drivers/advision.c b/src/mess/drivers/advision.c
index 2a069a4365d..b1cb11f3358 100644
--- a/src/mess/drivers/advision.c
+++ b/src/mess/drivers/advision.c
@@ -79,7 +79,8 @@ static MACHINE_CONFIG_START( advision, advision_state )
MCFG_SCREEN_UPDATE_DRIVER(advision_state, screen_update)
MCFG_SCREEN_SIZE(320, 200)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(advision_state, advision)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/alesis.c b/src/mess/drivers/alesis.c
index dd3b8253d13..87808e78308 100644
--- a/src/mess/drivers/alesis.c
+++ b/src/mess/drivers/alesis.c
@@ -220,10 +220,10 @@ static INPUT_PORTS_START( sr16 )
INPUT_PORTS_END
-void alesis_state::palette_init()
+PALETTE_INIT_MEMBER(alesis_state, alesis)
{
- palette_set_color(machine(), 0, rgb_t(138, 146, 148));
- palette_set_color(machine(), 1, rgb_t(92, 83, 88));
+ palette.set_pen_color(0, rgb_t(138, 146, 148));
+ palette.set_pen_color(1, rgb_t(92, 83, 88));
}
void alesis_state::machine_reset()
@@ -267,7 +267,8 @@ static MACHINE_CONFIG_START( hr16, alesis_state )
MCFG_DEFAULT_LAYOUT(layout_lcd)
MCFG_SCREEN_UPDATE_DEVICE("hd44780", hd44780_device, screen_update)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
+ MCFG_PALETTE_INIT_OWNER(alesis_state, alesis)
MCFG_CASSETTE_ADD( "cassette", hr16_cassette_interface )
@@ -292,8 +293,6 @@ static MACHINE_CONFIG_DERIVED( sr16, hr16 )
MCFG_SCREEN_VISIBLE_AREA(0, 6*8-1, 0, 9*2-1)
MCFG_DEFAULT_LAYOUT(layout_sr16)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
-
MCFG_DEVICE_MODIFY("hd44780")
MCFG_HD44780_LCD_SIZE(2, 8)
MCFG_HD44780_PIXEL_UPDATE_CB(sr16_pixel_update)
diff --git a/src/mess/drivers/alphasma.c b/src/mess/drivers/alphasma.c
index 600ca7be2cd..036eda171f9 100644
--- a/src/mess/drivers/alphasma.c
+++ b/src/mess/drivers/alphasma.c
@@ -72,7 +72,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(alphasmart);
virtual UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_INPUT_CHANGED_MEMBER(kb_irq);
@@ -345,10 +345,10 @@ static INPUT_PORTS_START( alphasmart )
PORT_CONFSETTING (0x01, DEF_STR(Normal))
INPUT_PORTS_END
-void alphasmart_state::palette_init()
+PALETTE_INIT_MEMBER(alphasmart_state, alphasmart)
{
- palette_set_color(machine(), 0, rgb_t(138, 146, 148));
- palette_set_color(machine(), 1, rgb_t(92, 83, 88));
+ palette.set_pen_color(0, rgb_t(138, 146, 148));
+ palette.set_pen_color(1, rgb_t(92, 83, 88));
}
UINT32 alphasmart_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -397,7 +397,8 @@ static MACHINE_CONFIG_START( alphasmart, alphasmart_state )
MCFG_SCREEN_UPDATE_DRIVER(alphasmart_state, screen_update)
MCFG_SCREEN_SIZE(6*40, 9*4)
MCFG_SCREEN_VISIBLE_AREA(0, (6*40)-1, 0, (9*4)-1)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(alphasmart_state, alphasmart)
MCFG_DEFAULT_LAYOUT(layout_lcd)
MCFG_NVRAM_ADD_0FILL("nvram")
diff --git a/src/mess/drivers/alphatro.c b/src/mess/drivers/alphatro.c
index 8a668f7c8f3..a2b68cc39f2 100644
--- a/src/mess/drivers/alphatro.c
+++ b/src/mess/drivers/alphatro.c
@@ -80,12 +80,11 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
-
+ DECLARE_PALETTE_INIT(alphatro);
private:
UINT8 m_timer_bit;
UINT8 m_cass_data[4];
- bool m_cass_state;
- virtual void palette_init();
+ bool m_cass_state;
};
READ8_MEMBER( alphatro_state::port10_r )
@@ -379,19 +378,19 @@ void alphatro_state::machine_reset()
m_beep->set_frequency(950); /* piezo-device needs to be measured */
}
-void alphatro_state::palette_init()
+PALETTE_INIT_MEMBER(alphatro_state, alphatro)
{
// RGB colours
- palette_set_color_rgb(machine(), 0, 0x00, 0x00, 0x00);
- palette_set_color_rgb(machine(), 1, 0x00, 0x00, 0xff);
- palette_set_color_rgb(machine(), 2, 0xff, 0x00, 0x00);
- palette_set_color_rgb(machine(), 3, 0xff, 0x00, 0xff);
- palette_set_color_rgb(machine(), 4, 0x00, 0xff, 0x00);
- palette_set_color_rgb(machine(), 5, 0x00, 0xff, 0xff);
- palette_set_color_rgb(machine(), 6, 0xff, 0xff, 0x00);
- palette_set_color_rgb(machine(), 7, 0xff, 0xff, 0xff);
+ palette.set_pen_color(0, 0x00, 0x00, 0x00);
+ palette.set_pen_color(1, 0x00, 0x00, 0xff);
+ palette.set_pen_color(2, 0xff, 0x00, 0x00);
+ palette.set_pen_color(3, 0xff, 0x00, 0xff);
+ palette.set_pen_color(4, 0x00, 0xff, 0x00);
+ palette.set_pen_color(5, 0x00, 0xff, 0xff);
+ palette.set_pen_color(6, 0xff, 0xff, 0x00);
+ palette.set_pen_color(7, 0xff, 0xff, 0xff);
// Amber
- palette_set_color_rgb(machine(), 8, 0xf7, 0xaa, 0x00);
+ palette.set_pen_color(8, 0xf7, 0xaa, 0x00);
}
@@ -458,7 +457,8 @@ static MACHINE_CONFIG_START( alphatro, alphatro_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_GFXDECODE_ADD("gfxdecode", alphatro)
- MCFG_PALETTE_LENGTH(9) // 8 colours + amber
+ MCFG_PALETTE_ADD("palette", 9) // 8 colours + amber
+ MCFG_PALETTE_INIT_OWNER(alphatro_state, alphatro)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/amiga.c b/src/mess/drivers/amiga.c
index d8f03086723..ccdb27876e8 100644
--- a/src/mess/drivers/amiga.c
+++ b/src/mess/drivers/amiga.c
@@ -658,8 +658,8 @@ static MACHINE_CONFIG_START( ntsc, amiga_state )
MCFG_SCREEN_RAW_PARAMS(AMIGA_68000_NTSC_CLOCK*2,228*4,214,228*4,262,34,262)
MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga)
- MCFG_PALETTE_LENGTH(4096)
- MCFG_PALETTE_INIT_OVERRIDE(amiga_state, amiga )
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_INIT_OWNER(amiga_state, amiga )
MCFG_VIDEO_START_OVERRIDE(amiga_state,amiga)
@@ -865,8 +865,8 @@ static MACHINE_CONFIG_START( a1200n, a1200_state )
MCFG_DEFAULT_LAYOUT(layout_amiga)
- MCFG_PALETTE_LENGTH(4096)
- MCFG_PALETTE_INIT_OVERRIDE(amiga_state, amiga )
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_INIT_OWNER(amiga_state, amiga )
MCFG_VIDEO_START_OVERRIDE(amiga_state,amiga)
@@ -972,8 +972,8 @@ static MACHINE_CONFIG_START( a3000n, amiga_state )
// MCFG_SCREEN_VISIBLE_AREA(214, (228*4)-1, 34, 262-1)
MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga)
- MCFG_PALETTE_LENGTH(4096)
- MCFG_PALETTE_INIT_OVERRIDE(amiga_state, amiga )
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_INIT_OWNER(amiga_state, amiga )
MCFG_VIDEO_START_OVERRIDE(amiga_state,amiga)
diff --git a/src/mess/drivers/amstrad.c b/src/mess/drivers/amstrad.c
index 6f9d7b8fd29..2df7a2b579d 100644
--- a/src/mess/drivers/amstrad.c
+++ b/src/mess/drivers/amstrad.c
@@ -295,11 +295,11 @@ INPUT_CHANGED_MEMBER(amstrad_state::cpc_monitor_changed)
{
if ( (m_io_green_display->read()) & 0x01 )
{
- PALETTE_INIT_CALL_MEMBER( amstrad_cpc_green );
+ PALETTE_INIT_NAME( amstrad_cpc_green )(m_palette);
}
else
{
- PALETTE_INIT_CALL_MEMBER( amstrad_cpc );
+ PALETTE_INIT_NAME( amstrad_cpc )(m_palette);
}
}
@@ -893,8 +893,8 @@ static MACHINE_CONFIG_START( amstrad_nofdc, amstrad_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
- MCFG_PALETTE_LENGTH(32)
- MCFG_PALETTE_INIT_OVERRIDE(amstrad_state,amstrad_cpc)
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(amstrad_state,amstrad_cpc)
MCFG_MC6845_ADD( "mc6845", MC6845, NULL, XTAL_16MHz / 16, amstrad_mc6845_intf )
@@ -943,7 +943,8 @@ static MACHINE_CONFIG_DERIVED( kccomp, amstrad )
MCFG_MACHINE_START_OVERRIDE(amstrad_state,kccomp)
MCFG_MACHINE_RESET_OVERRIDE(amstrad_state,kccomp)
- MCFG_PALETTE_INIT_OVERRIDE(amstrad_state,kccomp)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(amstrad_state,kccomp)
MACHINE_CONFIG_END
@@ -968,8 +969,8 @@ static MACHINE_CONFIG_START( cpcplus, amstrad_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
- MCFG_PALETTE_LENGTH(4096)
- MCFG_PALETTE_INIT_OVERRIDE(amstrad_state,amstrad_plus)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_INIT_OWNER(amstrad_state,amstrad_plus)
MCFG_MC6845_ADD( "mc6845", MC6845, NULL, XTAL_40MHz / 40, amstrad_plus_mc6845_intf )
@@ -1028,8 +1029,8 @@ static MACHINE_CONFIG_START( gx4000, amstrad_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
- MCFG_PALETTE_LENGTH(4096)
- MCFG_PALETTE_INIT_OVERRIDE(amstrad_state,amstrad_plus)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_INIT_OWNER(amstrad_state,amstrad_plus)
MCFG_MC6845_ADD( "mc6845", MC6845, NULL, XTAL_40MHz / 40, amstrad_plus_mc6845_intf )
@@ -1056,8 +1057,10 @@ static MACHINE_CONFIG_DERIVED( aleste, amstrad )
MCFG_SOUND_REPLACE("ay", AY8912, XTAL_16MHz / 16)
MCFG_SOUND_CONFIG(ay8912_interface)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
- MCFG_PALETTE_LENGTH(32+64)
- MCFG_PALETTE_INIT_OVERRIDE(amstrad_state,aleste)
+
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 32+64)
+ MCFG_PALETTE_INIT_OWNER(amstrad_state,aleste)
MCFG_MC146818_ADD( "rtc", XTAL_4_194304Mhz )
MCFG_DEVICE_REMOVE("upd765")
diff --git a/src/mess/drivers/apc.c b/src/mess/drivers/apc.c
index 68110b82301..5a4fc6dd69c 100644
--- a/src/mess/drivers/apc.c
+++ b/src/mess/drivers/apc.c
@@ -160,7 +160,6 @@ protected:
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
inline void set_dma_channel(int channel, int state);
};
@@ -172,7 +171,7 @@ void apc_state::video_start()
UINT32 apc_state::screen_update( screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect )
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
/* graphics */
m_hgdc2->screen_update(screen, bitmap, cliprect);
@@ -776,10 +775,6 @@ void apc_state::machine_reset()
}
-void apc_state::palette_init()
-{
-}
-
static UPD7220_INTERFACE( hgdc_1_intf )
{
NULL,
@@ -979,9 +974,9 @@ PALETTE_INIT_MEMBER(apc_state,apc)
int i;
for(i=0;i<8;i++)
- palette_set_color_rgb(machine(), i, pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 0));
- for(i=8;i<machine().total_colors();i++)
- palette_set_color_rgb(machine(), i, pal1bit(0), pal1bit(0), pal1bit(0));
+ palette.set_pen_color(i, pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 0));
+ for(i=8;i<palette.entries();i++)
+ palette.set_pen_color(i, pal1bit(0), pal1bit(0), pal1bit(0));
}
static const upd1771_interface upd1771c_config = { DEVCB_NULL };
@@ -1024,8 +1019,8 @@ static MACHINE_CONFIG_START( apc, apc_state )
MCFG_UPD7220_ADD("upd7220_chr", XTAL_3_579545MHz, hgdc_1_intf, upd7220_1_map) // unk clock
MCFG_UPD7220_ADD("upd7220_btm", XTAL_3_579545MHz, hgdc_2_intf, upd7220_2_map) // unk clock
- MCFG_PALETTE_LENGTH(16)
- MCFG_PALETTE_INIT_OVERRIDE(apc_state,apc)
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(apc_state,apc)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/apexc.c b/src/mess/drivers/apexc.c
index 10fe4111ace..14038a8a858 100644
--- a/src/mess/drivers/apexc.c
+++ b/src/mess/drivers/apexc.c
@@ -34,7 +34,7 @@ public:
DECLARE_DRIVER_INIT(apexc);
virtual void machine_start();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(apexc);
UINT32 screen_update_apexc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(apexc_interrupt);
DECLARE_READ8_MEMBER(tape_read);
@@ -560,9 +560,9 @@ static const rectangle teletyper_scroll_clear_window(
);
//static const int var_teletyper_scroll_step = - teletyper_scroll_step;
-void apexc_state::palette_init()
+PALETTE_INIT_MEMBER(apexc_state, apexc)
{
- palette_set_colors(machine(), 0, apexc_palette, APEXC_PALETTE_SIZE);
+ palette.set_pen_colors(0, apexc_palette, APEXC_PALETTE_SIZE);
}
void apexc_state::video_start()
@@ -588,7 +588,7 @@ void apexc_state::apexc_draw_led(bitmap_ind16 &bitmap, int x, int y, int state)
/* write a single char on screen */
void apexc_state::apexc_draw_char(bitmap_ind16 &bitmap, char character, int x, int y, int color)
{
- m_gfxdecode->gfx(0)->transpen(bitmap,bitmap.cliprect(), character-32, color, 0, 0,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,bitmap.cliprect(), character-32, color, 0, 0,
x+1, y, 0);
}
@@ -650,7 +650,7 @@ void apexc_state::apexc_teletyper_linefeed()
for (y=teletyper_window_offset_y; y<teletyper_window_offset_y+teletyper_window_height-teletyper_scroll_step; y++)
{
extract_scanline8(*m_bitmap, teletyper_window_offset_x, y+teletyper_scroll_step, teletyper_window_width, buf);
- draw_scanline8(*m_bitmap, teletyper_window_offset_x, y, teletyper_window_width, buf, machine().pens);
+ draw_scanline8(*m_bitmap, teletyper_window_offset_x, y, teletyper_window_width, buf, m_palette->pens());
}
m_bitmap->fill(0, teletyper_scroll_clear_window);
@@ -890,7 +890,8 @@ static MACHINE_CONFIG_START( apexc, apexc_state )
MCFG_SCREEN_UPDATE_DRIVER(apexc_state, screen_update_apexc)
MCFG_GFXDECODE_ADD("gfxdecode", apexc)
- MCFG_PALETTE_LENGTH(APEXC_PALETTE_SIZE)
+ MCFG_PALETTE_ADD("palette", APEXC_PALETTE_SIZE)
+ MCFG_PALETTE_INIT_OWNER(apexc_state, apexc)
MCFG_APEXC_CYLINDER_ADD("cylinder")
diff --git a/src/mess/drivers/apogee.c b/src/mess/drivers/apogee.c
index 23cd7d88798..1a56fa06d35 100644
--- a/src/mess/drivers/apogee.c
+++ b/src/mess/drivers/apogee.c
@@ -227,8 +227,8 @@ static MACHINE_CONFIG_START( apogee, apogee_state )
MCFG_SCREEN_VISIBLE_AREA(0, 78*6-1, 0, 30*10-1)
MCFG_GFXDECODE_ADD("gfxdecode", apogee)
- MCFG_PALETTE_LENGTH(3)
- MCFG_PALETTE_INIT_OVERRIDE(apogee_state,radio86)
+ MCFG_PALETTE_ADD("palette", 3)
+ MCFG_PALETTE_INIT_OWNER(apogee_state,radio86)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
diff --git a/src/mess/drivers/apple1.c b/src/mess/drivers/apple1.c
index 3aa7d9d0811..feeaa3a96cb 100644
--- a/src/mess/drivers/apple1.c
+++ b/src/mess/drivers/apple1.c
@@ -301,9 +301,8 @@ static MACHINE_CONFIG_START( apple1, apple1_state )
MCFG_GFXDECODE_ADD("gfxdecode", apple1)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MCFG_DEVICE_ADD( "pia", PIA6821, 0)
MCFG_PIA_READPA_HANDLER(READ8(apple1_state,apple1_pia0_kbdin))
diff --git a/src/mess/drivers/apple2.c b/src/mess/drivers/apple2.c
index a58be69b7db..3c10714f51f 100644
--- a/src/mess/drivers/apple2.c
+++ b/src/mess/drivers/apple2.c
@@ -933,7 +933,7 @@ static const rgb_t apple2_palette[] =
/* Initialize the palette */
PALETTE_INIT_MEMBER(apple2_state,apple2)
{
- palette_set_colors(machine(), 0, apple2_palette, ARRAY_LENGTH(apple2_palette));
+ palette.set_pen_colors(0, apple2_palette, ARRAY_LENGTH(apple2_palette));
}
static const cassette_interface apple2_cassette_interface =
@@ -1019,8 +1019,8 @@ static MACHINE_CONFIG_START( apple2_common, apple2_state )
MCFG_SCREEN_VISIBLE_AREA(0, (280*2)-1,0,192-1)
MCFG_SCREEN_UPDATE_DRIVER(apple2_state, screen_update_apple2)
- MCFG_PALETTE_LENGTH(ARRAY_LENGTH(apple2_palette))
- MCFG_PALETTE_INIT_OVERRIDE(apple2_state,apple2)
+ MCFG_PALETTE_ADD("palette", ARRAY_LENGTH(apple2_palette))
+ MCFG_PALETTE_INIT_OWNER(apple2_state,apple2)
MCFG_VIDEO_START_OVERRIDE(apple2_state,apple2)
diff --git a/src/mess/drivers/apple2gs.c b/src/mess/drivers/apple2gs.c
index 787fe122da3..c08b2593373 100644
--- a/src/mess/drivers/apple2gs.c
+++ b/src/mess/drivers/apple2gs.c
@@ -143,11 +143,11 @@ PALETTE_INIT_MEMBER(apple2gs_state,apple2gs)
{
int i;
- PALETTE_INIT_CALL_MEMBER(apple2);
+ PALETTE_INIT_NAME(apple2)(palette);
for (i = 0; i < 16; i++)
{
- palette_set_color_rgb(machine(), i,
+ palette.set_pen_color(i,
apple2gs_palette[(3*i)]*17,
apple2gs_palette[(3*i)+1]*17,
apple2gs_palette[(3*i)+2]*17);
@@ -344,13 +344,13 @@ static MACHINE_CONFIG_START( apple2gs, apple2gs_state )
MCFG_SCREEN_VISIBLE_AREA(0,703,0,230)
MCFG_SCREEN_UPDATE_DRIVER(apple2gs_state, screen_update_apple2gs)
- MCFG_PALETTE_LENGTH( 16+256 )
- MCFG_GFXDECODE_ADD("gfxdecode", apple2gs )
+ MCFG_PALETTE_ADD( "palette", 16+256 )
+ MCFG_PALETTE_INIT_OWNER(apple2gs_state, apple2gs )
+ MCFG_GFXDECODE_ADD("gfxdecode", apple2gs )
MCFG_MACHINE_START_OVERRIDE(apple2gs_state, apple2gs )
MCFG_MACHINE_RESET_OVERRIDE(apple2gs_state, apple2gs )
- MCFG_PALETTE_INIT_OVERRIDE(apple2gs_state, apple2gs )
MCFG_VIDEO_START_OVERRIDE(apple2gs_state, apple2gs )
/* keyboard controller */
diff --git a/src/mess/drivers/apple3.c b/src/mess/drivers/apple3.c
index 57586f3e637..fc4f9492cc0 100644
--- a/src/mess/drivers/apple3.c
+++ b/src/mess/drivers/apple3.c
@@ -72,8 +72,8 @@ static MACHINE_CONFIG_START( apple3, apple3_state )
MCFG_SCREEN_VISIBLE_AREA(0, (280*2)-1,0,192-1)
MCFG_SCREEN_UPDATE_DRIVER(apple3_state, screen_update_apple3)
- MCFG_PALETTE_LENGTH(32)
- MCFG_PALETTE_INIT_OVERRIDE(apple3_state, apple3 )
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(apple3_state, apple3 )
MCFG_VIDEO_START_OVERRIDE(apple3_state, apple3 )
diff --git a/src/mess/drivers/applix.c b/src/mess/drivers/applix.c
index af159a354da..bec43f0dbf8 100644
--- a/src/mess/drivers/applix.c
+++ b/src/mess/drivers/applix.c
@@ -135,7 +135,7 @@ public:
UINT8 m_pa;
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(applix);
UINT8 m_palette_latch[4];
required_shared_ptr<UINT16> m_base;
private:
@@ -734,7 +734,7 @@ static SLOT_INTERFACE_START( applix_floppies )
SLOT_INTERFACE_END
-void applix_state::palette_init()
+PALETTE_INIT_MEMBER(applix_state, applix)
{ // shades need to be verified - the names on the right are from the manual
const UINT8 colors[16*3] = {
0x00, 0x00, 0x00, // 0 Black
@@ -759,7 +759,7 @@ void applix_state::palette_init()
for (i = 0; i < 48; color_count++)
{
r = colors[i++]; g = colors[i++]; b = colors[i++];
- palette_set_color(machine(), color_count, rgb_t(r, g, b));
+ palette.set_pen_color(color_count, rgb_t(r, g, b));
}
}
@@ -870,7 +870,8 @@ static MACHINE_CONFIG_START( applix, applix_state )
MCFG_SCREEN_SIZE(640, 200)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(applix_state, applix)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mess/drivers/apricotf.c b/src/mess/drivers/apricotf.c
index 52f8f44d116..41f87c0ab26 100644
--- a/src/mess/drivers/apricotf.c
+++ b/src/mess/drivers/apricotf.c
@@ -93,7 +93,7 @@ WRITE16_MEMBER( f1_state::palette_w )
g = ((m_p_paletteram[offset] & 4)>>1) | i;
b = ((m_p_paletteram[offset] & 8)>>2) | i;
- palette_set_color_rgb(machine(), offset, pal2bit(r), pal2bit(g), pal2bit(b));
+ m_palette->set_pen_color(offset, pal2bit(r), pal2bit(g), pal2bit(b));
}
}
@@ -332,7 +332,7 @@ static MACHINE_CONFIG_START( act_f1, f1_state )
MCFG_SCREEN_UPDATE_DRIVER(f1_state, screen_update)
MCFG_SCREEN_SIZE(640, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 256-1)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
MCFG_GFXDECODE_ADD("gfxdecode", act_f1)
/* Devices */
diff --git a/src/mess/drivers/apricotp.c b/src/mess/drivers/apricotp.c
index 673835326ec..fd1f641dbff 100644
--- a/src/mess/drivers/apricotp.c
+++ b/src/mess/drivers/apricotp.c
@@ -602,7 +602,7 @@ static MACHINE_CONFIG_START( fp, fp_state )
MCFG_SCREEN_SIZE(640, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 256-1)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
MCFG_GFXDECODE_ADD("gfxdecode", act_f1)
MCFG_MC6845_ADD(MC6845_TAG, MC6845, SCREEN_CRT_TAG, 4000000, crtc_intf)
diff --git a/src/mess/drivers/aquarius.c b/src/mess/drivers/aquarius.c
index 0322786cc5d..7d3727a5a2f 100644
--- a/src/mess/drivers/aquarius.c
+++ b/src/mess/drivers/aquarius.c
@@ -371,9 +371,9 @@ static MACHINE_CONFIG_START( aquarius, aquarius_state )
MCFG_SCREEN_VISIBLE_AREA(0, 40 * 8 - 1, 0 * 8, 25 * 8 - 1)
MCFG_SCREEN_UPDATE_DRIVER(aquarius_state, screen_update_aquarius)
- MCFG_GFXDECODE_ADD("gfxdecode", aquarius )
- MCFG_PALETTE_LENGTH(512)
-
+ MCFG_GFXDECODE_ADD("gfxdecode", aquarius )
+ MCFG_PALETTE_ADD("palette", 512)
+ MCFG_PALETTE_INIT_OWNER(aquarius_state, aquarius)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/arcadia.c b/src/mess/drivers/arcadia.c
index 8f433f1e446..fd62afac9ee 100644
--- a/src/mess/drivers/arcadia.c
+++ b/src/mess/drivers/arcadia.c
@@ -438,17 +438,15 @@ static const unsigned short arcadia_palette[128+8] = /* bgnd, fgnd */
7,0, 7,1, 7,2, 7,3, 7,4, 7,5, 7,6, 7,7
};
-void arcadia_state::palette_init()
+PALETTE_INIT_MEMBER(arcadia_state, arcadia)
{
int i;
- machine().colortable = colortable_alloc(machine(), 8);
-
for (i = 0; i < 8; i++)
- colortable_palette_set_color(machine().colortable, i, arcadia_colors[i]);
+ palette.set_indirect_color(i, arcadia_colors[i]);
for (i = 0; i < 128+8; i++)
- colortable_entry_set_value(machine().colortable, i, arcadia_palette[i]);
+ palette.set_pen_indirect(i, arcadia_palette[i]);
}
DEVICE_IMAGE_LOAD_MEMBER( arcadia_state, arcadia_cart )
@@ -541,8 +539,9 @@ static MACHINE_CONFIG_START( arcadia, arcadia_state )
MCFG_SCREEN_VISIBLE_AREA(0, 2*XPOS+128-1, 0, 262-1)
MCFG_SCREEN_UPDATE_DRIVER(arcadia_state, screen_update_arcadia)
- MCFG_GFXDECODE_ADD("gfxdecode", arcadia )
- MCFG_PALETTE_LENGTH(ARRAY_LENGTH(arcadia_palette))
+ MCFG_GFXDECODE_ADD("gfxdecode", arcadia )
+ MCFG_PALETTE_ADD("palette", ARRAY_LENGTH(arcadia_palette))
+ MCFG_PALETTE_INIT_OWNER(arcadia_state, arcadia)
/* sound hardware */
diff --git a/src/mess/drivers/argo.c b/src/mess/drivers/argo.c
index 3dc26395aeb..f69030b6b54 100644
--- a/src/mess/drivers/argo.c
+++ b/src/mess/drivers/argo.c
@@ -358,8 +358,7 @@ static MACHINE_CONFIG_START( argo, argo_state )
MCFG_SCREEN_UPDATE_DRIVER(argo_state, screen_update)
MCFG_SCREEN_SIZE(640, 250)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 249)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mess/drivers/astrocde.c b/src/mess/drivers/astrocde.c
index e31abe09ffd..a8aa03c4db7 100644
--- a/src/mess/drivers/astrocde.c
+++ b/src/mess/drivers/astrocde.c
@@ -260,7 +260,7 @@ static MACHINE_CONFIG_START( astrocde, astrocde_mess_state )
MCFG_SCREEN_RAW_PARAMS(ASTROCADE_CLOCK, 455, 0, 352, 262, 0, 240)
MCFG_SCREEN_UPDATE_DRIVER(astrocde_state, screen_update_astrocde)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
/* sound hardware */
diff --git a/src/mess/drivers/at.c b/src/mess/drivers/at.c
index 1f7a1f1d291..53ab2059c9c 100644
--- a/src/mess/drivers/at.c
+++ b/src/mess/drivers/at.c
@@ -360,9 +360,6 @@ static MACHINE_CONFIG_FRAGMENT( at_motherboard )
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
-
- /* video hardware */
- MCFG_PALETTE_LENGTH( 256 )
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( ibm5170, at_state )
diff --git a/src/mess/drivers/atari400.c b/src/mess/drivers/atari400.c
index f18a546319d..1e483cb2dfa 100644
--- a/src/mess/drivers/atari400.c
+++ b/src/mess/drivers/atari400.c
@@ -298,7 +298,7 @@ public:
DECLARE_MACHINE_START(a800);
DECLARE_MACHINE_START(a800xl);
DECLARE_MACHINE_START(a5200);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(a400);
DECLARE_WRITE8_MEMBER(a1200xl_pia_pb_w);
DECLARE_WRITE8_MEMBER(a800xl_pia_pb_w);
DECLARE_WRITE8_MEMBER(xegs_pia_pb_w);
@@ -922,13 +922,13 @@ static const UINT8 atari_palette[256*3] =
/* Initialise the palette */
-void a400_state::palette_init()
+PALETTE_INIT_MEMBER(a400_state, a400)
{
int i;
for ( i = 0; i < sizeof(atari_palette) / 3; i++ )
{
- palette_set_color_rgb(machine(), i, atari_palette[i*3], atari_palette[i*3+1], atari_palette[i*3+2]);
+ palette.set_pen_color(i, atari_palette[i*3], atari_palette[i*3+1], atari_palette[i*3+2]);
}
}
/******************************************************************
@@ -2481,9 +2481,11 @@ static MACHINE_CONFIG_START( atari_common_nodac, a400_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1))
MCFG_SCREEN_VISIBLE_AREA(MIN_X, MAX_X, MIN_Y, MAX_Y)
- MCFG_PALETTE_LENGTH(sizeof(atari_palette) / 3)
MCFG_SCREEN_UPDATE_STATIC(atari)
+ MCFG_PALETTE_ADD("palette", sizeof(atari_palette) / 3)
+ MCFG_PALETTE_INIT_OWNER(a400_state, a400)
+
MCFG_VIDEO_START(atari)
MCFG_DEVICE_ADD("pia", PIA6821, 0)
diff --git a/src/mess/drivers/atarist.c b/src/mess/drivers/atarist.c
index 885684d5f41..a5dd77b69cf 100644
--- a/src/mess/drivers/atarist.c
+++ b/src/mess/drivers/atarist.c
@@ -2190,7 +2190,7 @@ static MACHINE_CONFIG_START( st, st_state )
MCFG_SCREEN_UPDATE_DRIVER(st_state, screen_update)
MCFG_SCREEN_RAW_PARAMS(Y2/2, ATARIST_HTOT_PAL*2, ATARIST_HBEND_PAL*2, ATARIST_HBSTART_PAL*2, ATARIST_VTOT_PAL, ATARIST_VBEND_PAL, ATARIST_VBSTART_PAL)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -2268,7 +2268,7 @@ static MACHINE_CONFIG_START( megast, megast_state )
MCFG_SCREEN_UPDATE_DRIVER(megast_state, screen_update)
MCFG_SCREEN_RAW_PARAMS(Y2/4, ATARIST_HTOT_PAL, ATARIST_HBEND_PAL, ATARIST_HBSTART_PAL, ATARIST_VTOT_PAL, ATARIST_VBEND_PAL, ATARIST_VBSTART_PAL)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -2347,7 +2347,7 @@ static MACHINE_CONFIG_START( ste, ste_state )
MCFG_SCREEN_UPDATE_DRIVER(ste_state, screen_update)
MCFG_SCREEN_RAW_PARAMS(Y2/4, ATARIST_HTOT_PAL, ATARIST_HBEND_PAL, ATARIST_HBSTART_PAL, ATARIST_VTOT_PAL, ATARIST_VBEND_PAL, ATARIST_VBSTART_PAL)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
// sound hardware
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -2450,9 +2450,7 @@ static MACHINE_CONFIG_START( stbook, stbook_state )
MCFG_SCREEN_SIZE(640, 400)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 399)
- MCFG_PALETTE_LENGTH(2)
-
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/avigo.c b/src/mess/drivers/avigo.c
index ae242a404ac..7fec9b8cbf8 100644
--- a/src/mess/drivers/avigo.c
+++ b/src/mess/drivers/avigo.c
@@ -902,7 +902,8 @@ static MACHINE_CONFIG_START( avigo, avigo_state )
MCFG_DEFAULT_LAYOUT(layout_avigo)
MCFG_GFXDECODE_ADD("gfxdecode", avigo)
- MCFG_PALETTE_LENGTH(AVIGO_NUM_COLOURS)
+ MCFG_PALETTE_ADD("palette", AVIGO_NUM_COLOURS)
+ MCFG_PALETTE_INIT_OWNER(avigo_state, avigo)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/ax20.c b/src/mess/drivers/ax20.c
index 4e5eb7e2bbf..4ade8f729a8 100644
--- a/src/mess/drivers/ax20.c
+++ b/src/mess/drivers/ax20.c
@@ -48,7 +48,7 @@ UINT32 ax20_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, co
{
UINT16 tile = m_p_vram[24 + y * 128 + x ] & 0x7f;
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, tile, 0, 0, 0, x*8, y*12);
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, tile, 0, 0, 0, x*8, y*12);
}
}
@@ -119,8 +119,7 @@ static MACHINE_CONFIG_START( ax20, ax20_state )
MCFG_SCREEN_SIZE(80*8, 24*12)
MCFG_SCREEN_VISIBLE_AREA(0, 80*8-1, 0, 24*12-1)
MCFG_GFXDECODE_ADD("gfxdecode", ax20)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, monochrome_green)
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
/* Devices */
MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, ax20_floppy_interface)
diff --git a/src/mess/drivers/b16.c b/src/mess/drivers/b16.c
index 6ad72618c3c..d30d417aa76 100644
--- a/src/mess/drivers/b16.c
+++ b/src/mess/drivers/b16.c
@@ -101,7 +101,7 @@ UINT32 b16_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, con
pen = (gfx_rom[tile*16+yi] >> (7-xi) & 1) ? color : 0;
if(y*mc6845_tile_height < 400 && x*8+xi < 640) /* TODO: safety check */
- bitmap.pix16(y*mc6845_tile_height+yi, x*8+xi) = machine().pens[pen];
+ bitmap.pix16(y*mc6845_tile_height+yi, x*8+xi) = m_palette->pen(pen);
}
}
}
@@ -313,8 +313,8 @@ static MACHINE_CONFIG_START( b16, b16_state )
MCFG_I8237_ADD("8237dma", XTAL_14_31818MHz/2, b16_dma8237_interface)
MCFG_GFXDECODE_ADD("gfxdecode", b16)
- MCFG_PALETTE_LENGTH(8)
-// MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white) // TODO
+ MCFG_PALETTE_ADD("palette", 8)
+// MCFG_PALETTE_INIT_STANDARD(black_and_white) // TODO
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/b2m.c b/src/mess/drivers/b2m.c
index d09bb1a4df3..c29c06dbfae 100644
--- a/src/mess/drivers/b2m.c
+++ b/src/mess/drivers/b2m.c
@@ -196,7 +196,8 @@ static MACHINE_CONFIG_START( b2m, b2m_state )
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(b2m_state, screen_update_b2m)
- MCFG_PALETTE_LENGTH(4)
+ MCFG_PALETTE_ADD("palette", 4)
+ MCFG_PALETTE_INIT_OWNER(b2m_state, b2m)
MCFG_DEVICE_ADD("pit8253", PIT8253, 0)
MCFG_PIT8253_CLK0(0)
diff --git a/src/mess/drivers/bbc.c b/src/mess/drivers/bbc.c
index 373e04a69df..10c1fc3e242 100644
--- a/src/mess/drivers/bbc.c
+++ b/src/mess/drivers/bbc.c
@@ -300,7 +300,7 @@ static const rgb_t bbc_palette[8]=
PALETTE_INIT_MEMBER(bbc_state, bbc)
{
- palette_set_colors(machine(), 0, bbc_palette, ARRAY_LENGTH(bbc_palette));
+ palette.set_pen_colors(0, bbc_palette, ARRAY_LENGTH(bbc_palette));
}
@@ -699,9 +699,9 @@ static MACHINE_CONFIG_START( bbca, bbc_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(128))
MCFG_SCREEN_UPDATE_DEVICE("mc6845", mc6845_device, screen_update)
- MCFG_PALETTE_LENGTH(16)
- MCFG_PALETTE_INIT_OVERRIDE(bbc_state, bbc)
- MCFG_SAA5050_ADD("saa5050", XTAL_12MHz/2, trom_intf)
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(bbc_state,bbc)
+ MCFG_SAA5050_ADD("saa505x", XTAL_12MHz/2, trom_intf)
/* crtc */
MCFG_MC6845_ADD("mc6845", MC6845, "screen", 2000000, bbc_mc6845_intf)
@@ -909,9 +909,9 @@ static MACHINE_CONFIG_START( bbcm, bbc_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(128))
MCFG_SCREEN_SIZE(640, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 256-1)
- MCFG_PALETTE_LENGTH(16)
- MCFG_PALETTE_INIT_OVERRIDE(bbc_state, bbc)
MCFG_SCREEN_UPDATE_DEVICE("mc6845", mc6845_device, screen_update)
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(bbc_state,bbc)
MCFG_SAA5050_ADD("saa5050", XTAL_12MHz/2, trom_intf)
diff --git a/src/mess/drivers/bcs3.c b/src/mess/drivers/bcs3.c
index 1785c120ea8..d449598a5bc 100644
--- a/src/mess/drivers/bcs3.c
+++ b/src/mess/drivers/bcs3.c
@@ -427,8 +427,7 @@ static MACHINE_CONFIG_START( bcs3, bcs3_state )
MCFG_SCREEN_VISIBLE_AREA(0,28*8-1,0,12*10-1)
MCFG_SCREEN_UPDATE_DRIVER(bcs3_state, screen_update_bcs3)
MCFG_GFXDECODE_ADD("gfxdecode", bcs3)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( bcs3a, bcs3 )
diff --git a/src/mess/drivers/beehive.c b/src/mess/drivers/beehive.c
index 3bbfd7f0a05..14dbc4b90b6 100644
--- a/src/mess/drivers/beehive.c
+++ b/src/mess/drivers/beehive.c
@@ -299,8 +299,7 @@ static MACHINE_CONFIG_START( beehive, beehive_state )
MCFG_SCREEN_UPDATE_DRIVER(beehive_state, screen_update)
MCFG_SCREEN_SIZE(640, 250)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 249)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, monochrome_green)
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mess/drivers/bigbord2.c b/src/mess/drivers/bigbord2.c
index b52156ddc2b..bc7c379bc41 100644
--- a/src/mess/drivers/bigbord2.c
+++ b/src/mess/drivers/bigbord2.c
@@ -652,8 +652,7 @@ static MACHINE_CONFIG_START( bigbord2, bigbord2_state )
MCFG_SCREEN_RAW_PARAMS(XTAL_10_69425MHz, 700, 0, 560, 260, 0, 240)
MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
MCFG_GFXDECODE_ADD("gfxdecode", bigbord2)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* keyboard */
MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc", bigbord2_state, ctc_tick, attotime::from_hz(MAIN_CLOCK))
diff --git a/src/mess/drivers/binbug.c b/src/mess/drivers/binbug.c
index 856a98cda4b..5b08d098690 100644
--- a/src/mess/drivers/binbug.c
+++ b/src/mess/drivers/binbug.c
@@ -311,8 +311,7 @@ static MACHINE_CONFIG_START( binbug, binbug_state )
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 255)
MCFG_GFXDECODE_ADD("gfxdecode", dg640)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, monochrome_amber)
+ MCFG_PALETTE_ADD_MONOCHROME_AMBER("palette")
/* Keyboard */
MCFG_SERIAL_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf, 300)
@@ -570,8 +569,7 @@ static MACHINE_CONFIG_START( dg680, dg680_state )
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 255)
MCFG_GFXDECODE_ADD("gfxdecode", dg640)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, monochrome_amber)
+ MCFG_PALETTE_ADD_MONOCHROME_AMBER("palette")
/* Keyboard */
MCFG_ASCII_KEYBOARD_ADD("keyb", dg680_keyboard_intf)
diff --git a/src/mess/drivers/bk.c b/src/mess/drivers/bk.c
index 9154994eadc..6018ba0275a 100644
--- a/src/mess/drivers/bk.c
+++ b/src/mess/drivers/bk.c
@@ -181,8 +181,7 @@ static MACHINE_CONFIG_START( bk0010, bk_state )
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(bk_state, screen_update_bk0010)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/bmjr.c b/src/mess/drivers/bmjr.c
index 646f067f625..58b9f636cfd 100644
--- a/src/mess/drivers/bmjr.c
+++ b/src/mess/drivers/bmjr.c
@@ -53,7 +53,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(bmjr);
UINT32 screen_update_bmjr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -324,12 +324,12 @@ static GFXDECODE_START( bmjr )
GFXDECODE_ENTRY( "chargen", 0x0000, bmjr_charlayout, 0, 4 )
GFXDECODE_END
-void bmjr_state::palette_init()
+PALETTE_INIT_MEMBER(bmjr_state, bmjr)
{
int i;
for(i=0;i<8;i++)
- palette_set_color_rgb(machine(), i, pal1bit(i >> 1),pal1bit(i >> 2),pal1bit(i >> 0));
+ palette.set_pen_color(i, pal1bit(i >> 1),pal1bit(i >> 2),pal1bit(i >> 0));
}
@@ -359,7 +359,8 @@ static MACHINE_CONFIG_START( bmjr, bmjr_state )
MCFG_SCREEN_SIZE(256, 192)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 192-1)
MCFG_SCREEN_UPDATE_DRIVER(bmjr_state, screen_update_bmjr)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(bmjr_state, bmjr)
MCFG_GFXDECODE_ADD("gfxdecode", bmjr)
/* Audio */
diff --git a/src/mess/drivers/bml3.c b/src/mess/drivers/bml3.c
index 5a3cd4814e2..c54d37008da 100644
--- a/src/mess/drivers/bml3.c
+++ b/src/mess/drivers/bml3.c
@@ -122,6 +122,7 @@ public:
TIMER_DEVICE_CALLBACK_MEMBER(keyboard_callback);
DECLARE_READ8_MEMBER(bml3_ym2203_r);
DECLARE_WRITE8_MEMBER(bml3_ym2203_w);
+ DECLARE_PALETTE_INIT(bml3);
private:
UINT8 m_psg_latch;
UINT8 m_attr_latch;
@@ -139,7 +140,6 @@ private:
UINT8 m_cass_data[4];
virtual void machine_reset();
virtual void machine_start();
- virtual void palette_init();
void m6845_change_clock(UINT8 setting);
UINT8 m_crtc_index;
UINT8 *m_extram;
@@ -770,12 +770,12 @@ INTERRUPT_GEN_MEMBER(bml3_state::bml3_timer_firq)
}
}
-void bml3_state::palette_init()
+PALETTE_INIT_MEMBER(bml3_state, bml3)
{
int i;
for(i=0;i<8;i++)
- palette_set_color_rgb(machine(), i, pal1bit(i >> 1),pal1bit(i >> 2),pal1bit(i >> 0));
+ palette.set_pen_color(i, pal1bit(i >> 1),pal1bit(i >> 2),pal1bit(i >> 0));
}
void bml3_state::machine_start()
@@ -1000,7 +1000,8 @@ static MACHINE_CONFIG_START( bml3_common, bml3_state )
MCFG_SCREEN_SIZE(640, 400)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(bml3_state, bml3)
/* Devices */
// CRTC clock should be synchronous with the CPU clock.
diff --git a/src/mess/drivers/busicom.c b/src/mess/drivers/busicom.c
index 2786412bd4b..ff79db2d429 100644
--- a/src/mess/drivers/busicom.c
+++ b/src/mess/drivers/busicom.c
@@ -224,8 +224,8 @@ static MACHINE_CONFIG_START( busicom, busicom_state )
MCFG_SCREEN_VISIBLE_AREA(0, 40*17-1, 0, 44*11-1)
MCFG_SCREEN_UPDATE_DRIVER(busicom_state, screen_update_busicom)
- MCFG_PALETTE_LENGTH(16)
-
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(busicom_state, busicom)
MCFG_TIMER_DRIVER_ADD_PERIODIC("busicom_timer", busicom_state, timer_callback, attotime::from_msec(28*2))
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/bw2.c b/src/mess/drivers/bw2.c
index b8f163f9db5..a44d5c3136e 100644
--- a/src/mess/drivers/bw2.c
+++ b/src/mess/drivers/bw2.c
@@ -567,10 +567,10 @@ SLOT_INTERFACE_END
//**************************************************************************
-void bw2_state::palette_init()
+PALETTE_INIT_MEMBER(bw2_state, bw2)
{
- palette_set_color_rgb(machine(), 0, 0xa5, 0xad, 0xa5);
- palette_set_color_rgb(machine(), 1, 0x31, 0x39, 0x10);
+ palette.set_pen_color(0, 0xa5, 0xad, 0xa5);
+ palette.set_pen_color(1, 0x31, 0x39, 0x10);
}
@@ -615,7 +615,8 @@ static MACHINE_CONFIG_START( bw2, bw2_state )
MCFG_SCREEN_UPDATE_DEVICE( MSM6255_TAG, msm6255_device, screen_update )
MCFG_SCREEN_SIZE(640, 200)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(bw2_state, bw2)
// devices
MCFG_DEVICE_ADD(I8253_TAG, PIT8253, 0)
diff --git a/src/mess/drivers/c10.c b/src/mess/drivers/c10.c
index 7ab9ac1ea54..21266f6cb50 100644
--- a/src/mess/drivers/c10.c
+++ b/src/mess/drivers/c10.c
@@ -164,8 +164,7 @@ static MACHINE_CONFIG_START( c10, c10_state )
MCFG_SCREEN_SIZE(640, 250)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 249)
MCFG_GFXDECODE_ADD("gfxdecode", c10)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
DRIVER_INIT_MEMBER(c10_state,c10)
diff --git a/src/mess/drivers/c128.c b/src/mess/drivers/c128.c
index b02c23e88e9..c3b01256388 100644
--- a/src/mess/drivers/c128.c
+++ b/src/mess/drivers/c128.c
@@ -1466,6 +1466,7 @@ static MACHINE_CONFIG_START( ntsc, c128_state )
// video hardware
MCFG_MOS8563_ADD(MOS8563_TAG, SCREEN_VDC_TAG, VIC6567_CLOCK*2, vdc_intf, vdc_videoram_map)
MCFG_MOS8564_ADD(MOS8564_TAG, SCREEN_VIC_TAG, M8502_TAG, VIC6567_CLOCK, vic_videoram_map, vic_colorram_map, WRITELINE(c128_state, vic_irq_w), WRITE8(c128_state, vic_k_w))
+
MCFG_GFXDECODE_ADD("gfxdecode", c128)
// sound hardware
@@ -1598,6 +1599,7 @@ static MACHINE_CONFIG_START( pal, c128_state )
// video hardware
MCFG_MOS8563_ADD(MOS8563_TAG, SCREEN_VDC_TAG, VIC6569_CLOCK*2, vdc_intf, vdc_videoram_map)
MCFG_MOS8566_ADD(MOS8564_TAG, SCREEN_VIC_TAG, M8502_TAG, VIC6569_CLOCK, vic_videoram_map, vic_colorram_map, WRITELINE(c128_state, vic_irq_w), WRITE8(c128_state, vic_k_w))
+
MCFG_GFXDECODE_ADD("gfxdecode", c128)
// sound hardware
diff --git a/src/mess/drivers/c65.c b/src/mess/drivers/c65.c
index 310b7b1e735..d6ad1585751 100644
--- a/src/mess/drivers/c65.c
+++ b/src/mess/drivers/c65.c
@@ -347,23 +347,6 @@ INPUT_PORTS_END
/*************************************
*
- * Graphics definitions
- *
- *************************************/
-
-PALETTE_INIT_MEMBER(c65_state,c65)
-{
- int i;
-
- for ( i = 0; i < 0x100; i++ )
- {
- palette_set_color_rgb(machine(), i, 0, 0, 0);
- }
-}
-
-
-/*************************************
- *
* Sound definitions
*
*************************************/
@@ -582,9 +565,6 @@ static MACHINE_CONFIG_START( c65, c65_state )
MCFG_SCREEN_VISIBLE_AREA(VIC6567_STARTVISIBLECOLUMNS ,(VIC6567_STARTVISIBLECOLUMNS + VIC6567_VISIBLECOLUMNS - 1) * 2, VIC6567_STARTVISIBLELINES, VIC6567_STARTVISIBLELINES + VIC6567_VISIBLELINES - 1)
MCFG_SCREEN_UPDATE_DRIVER(c65_state, screen_update_c65)
- MCFG_PALETTE_LENGTH(0x100)
- MCFG_PALETTE_INIT_OVERRIDE(c65_state, c65 )
-
MCFG_VIC3_ADD("vic3", c65_vic3_ntsc_intf)
/* sound hardware */
diff --git a/src/mess/drivers/c900.c b/src/mess/drivers/c900.c
index 0ac5821a501..10a5d03880b 100644
--- a/src/mess/drivers/c900.c
+++ b/src/mess/drivers/c900.c
@@ -116,8 +116,7 @@ static MACHINE_CONFIG_START( c900, c900_state )
MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
MCFG_GFXDECODE_ADD("gfxdecode", c900)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
ROM_START( c900 )
diff --git a/src/mess/drivers/camplynx.c b/src/mess/drivers/camplynx.c
index fdb33da528f..89331ba2904 100644
--- a/src/mess/drivers/camplynx.c
+++ b/src/mess/drivers/camplynx.c
@@ -107,7 +107,7 @@ public:
DECLARE_WRITE8_MEMBER(lynx128k_irq);
DECLARE_DRIVER_INIT(lynx48k);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(camplynx);
DECLARE_MACHINE_RESET(lynx128k);
};
@@ -370,14 +370,14 @@ static const UINT8 lynx48k_palette[8*3] =
0xff, 0xff, 0xff, /* 7 White */
};
-void camplynx_state::palette_init()
+PALETTE_INIT_MEMBER(camplynx_state, camplynx)
{
UINT8 r, b, g, i=0, color_count = 8;
while (color_count--)
{
r = lynx48k_palette[i++]; g = lynx48k_palette[i++]; b = lynx48k_palette[i++];
- palette_set_color(machine(), 7-color_count, rgb_t(r, g, b));
+ palette.set_pen_color(7-color_count, rgb_t(r, g, b));
}
}
@@ -479,7 +479,8 @@ static MACHINE_CONFIG_START( lynx48k, camplynx_state )
MCFG_SCREEN_SIZE(512, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 479)
MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(camplynx_state, camplynx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -506,7 +507,8 @@ static MACHINE_CONFIG_START( lynx128k, camplynx_state )
MCFG_SCREEN_SIZE(512, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 479)
MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(camplynx_state, camplynx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/casloopy.c b/src/mess/drivers/casloopy.c
index 1685d134c05..e17001ae6be 100644
--- a/src/mess/drivers/casloopy.c
+++ b/src/mess/drivers/casloopy.c
@@ -252,7 +252,7 @@ UINT32 casloopy_state::screen_update_casloopy(screen_device &screen, bitmap_ind1
r = pal5bit((m_vregs[0x4/4] >> 10) & 0x1f);
g = pal5bit((m_vregs[0x4/4] >> 5) & 0x1f);
b = pal5bit((m_vregs[0x4/4] >> 0) & 0x1f);
- palette_set_color(machine(),0x100,rgb_t(r^0xff,g^0xff,b^0xff));
+ m_palette->set_pen_color(0x100,rgb_t(r^0xff,g^0xff,b^0xff));
bitmap.fill( 0x100 ,cliprect);
#endif
@@ -265,7 +265,7 @@ UINT32 casloopy_state::screen_update_casloopy(screen_device &screen, bitmap_ind1
tile &= 0x7ff; //???
- gfx->transpen(bitmap,cliprect,tile,7,0,0,x*8,y*8,0xffffffff);
+ gfx->transpen(m_palette,bitmap,cliprect,tile,7,0,0,x*8,y*8,0xffffffff);
count+=2;
}
@@ -328,7 +328,7 @@ WRITE16_MEMBER(casloopy_state::casloopy_pal_w)
g = ((m_paletteram[offset])&0x03e0)>>5;
r = ((m_paletteram[offset])&0x7c00)>>10;
- palette_set_color_rgb(machine(), offset, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(offset, pal5bit(r), pal5bit(g), pal5bit(b));
}
READ8_MEMBER(casloopy_state::casloopy_vram_r)
@@ -493,7 +493,7 @@ static MACHINE_CONFIG_START( casloopy, casloopy_state )
// MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(casloopy_state, screen_update_casloopy)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
diff --git a/src/mess/drivers/cat.c b/src/mess/drivers/cat.c
index 445d0bfdb3c..f50bfe596b1 100644
--- a/src/mess/drivers/cat.c
+++ b/src/mess/drivers/cat.c
@@ -1126,8 +1126,7 @@ static MACHINE_CONFIG_START( cat, cat_state )
MCFG_SCREEN_VISIBLE_AREA(0, 672-1, 0, 344-1)
MCFG_SCREEN_UPDATE_DRIVER(cat_state, screen_update_cat)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MCFG_VIDEO_START_OVERRIDE(cat_state,cat)
@@ -1463,8 +1462,7 @@ static MACHINE_CONFIG_START( swyft, cat_state )
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 242-1)
MCFG_SCREEN_UPDATE_DRIVER(cat_state, screen_update_swyft)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MCFG_VIDEO_START_OVERRIDE(cat_state,swyft)
diff --git a/src/mess/drivers/cd2650.c b/src/mess/drivers/cd2650.c
index 54993cb7996..176cb6ded7f 100644
--- a/src/mess/drivers/cd2650.c
+++ b/src/mess/drivers/cd2650.c
@@ -292,8 +292,7 @@ static MACHINE_CONFIG_START( cd2650, cd2650_state )
MCFG_SCREEN_SIZE(640, 160)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 159)
MCFG_GFXDECODE_ADD("gfxdecode", cd2650)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* quickload */
MCFG_QUICKLOAD_ADD("quickload", cd2650_state, cd2650, "pgm", 1)
diff --git a/src/mess/drivers/cdc721.c b/src/mess/drivers/cdc721.c
index 1f87fe4f981..128833b80af 100644
--- a/src/mess/drivers/cdc721.c
+++ b/src/mess/drivers/cdc721.c
@@ -22,7 +22,7 @@ public:
public:
virtual void machine_reset();
- void palette_init_cdc721();
+ DECLARE_PALETTE_INIT(cdc721);
const UINT8 *m_p_chargen;
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_shared_ptr<const UINT8> m_p_videoram;
@@ -71,9 +71,9 @@ GFXDECODE_END
PALETTE_INIT_MEMBER( cdc721_state, cdc721 )
{
- palette_set_color_rgb( machine(), 0, 0, 0, 0 ); /* Black */
- palette_set_color_rgb( machine(), 1, 0, 255, 0 ); /* Full */
- palette_set_color_rgb( machine(), 2, 0, 128, 0 ); /* Dimmed */
+ palette.set_pen_color(0, 0, 0, 0 ); /* Black */
+ palette.set_pen_color(1, 0, 255, 0 ); /* Full */
+ palette.set_pen_color(2, 0, 128, 0 ); /* Dimmed */
}
UINT32 cdc721_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -122,8 +122,8 @@ static MACHINE_CONFIG_START( cdc721, cdc721_state )
MCFG_SCREEN_UPDATE_DRIVER(cdc721_state, screen_update)
MCFG_SCREEN_SIZE(640, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 239)
- MCFG_PALETTE_LENGTH(3)
- MCFG_PALETTE_INIT_OVERRIDE(cdc721_state, cdc721)
+ MCFG_PALETTE_ADD("palette", 3)
+ MCFG_PALETTE_INIT_OWNER(cdc721_state, cdc721)
MCFG_GFXDECODE_ADD("gfxdecode", cdc721)
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/cfx9850.c b/src/mess/drivers/cfx9850.c
index accdb6f0b09..756de4b8e49 100644
--- a/src/mess/drivers/cfx9850.c
+++ b/src/mess/drivers/cfx9850.c
@@ -49,7 +49,7 @@ public:
required_shared_ptr<UINT8> m_video_ram;
required_shared_ptr<UINT8> m_display_ram;
UINT16 m_ko; /* KO lines KO1 - KO14 */
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(cfx9850);
UINT32 screen_update_cfx9850(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
protected:
@@ -218,12 +218,12 @@ static INPUT_PORTS_START( cfx9850 )
INPUT_PORTS_END
-void cfx9850_state::palette_init()
+PALETTE_INIT_MEMBER(cfx9850_state, cfx9850)
{
- palette_set_color_rgb( machine(), 0, 0xff, 0xff, 0xff );
- palette_set_color_rgb( machine(), 1, 0x00, 0x00, 0xff );
- palette_set_color_rgb( machine(), 2, 0x00, 0xff, 0x00 );
- palette_set_color_rgb( machine(), 3, 0xff, 0x00, 0x00 );
+ palette.set_pen_color( 0, 0xff, 0xff, 0xff );
+ palette.set_pen_color( 1, 0x00, 0x00, 0xff );
+ palette.set_pen_color( 2, 0x00, 0xff, 0x00 );
+ palette.set_pen_color( 3, 0xff, 0x00, 0x00 );
}
@@ -269,7 +269,8 @@ static MACHINE_CONFIG_START( cfx9850, cfx9850_state )
MCFG_DEFAULT_LAYOUT(layout_lcd)
/* TODO: It uses a color display, but I'm being lazy here. 3 colour lcd */
- MCFG_PALETTE_LENGTH( 4 )
+ MCFG_PALETTE_ADD( "palette", 4 )
+ MCFG_PALETTE_INIT_OWNER(cfx9850_state, cfx9850)
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/cgenie.c b/src/mess/drivers/cgenie.c
index 15ae711bc7b..90674403b05 100644
--- a/src/mess/drivers/cgenie.c
+++ b/src/mess/drivers/cgenie.c
@@ -447,32 +447,28 @@ PALETTE_INIT_MEMBER(cgenie_state,cgenie)
{
UINT8 i, r, g, b;
- machine().colortable = colortable_alloc(machine(), 49);
-
for ( i = 0; i < 49; i++ )
{
r = cgenie_colors[i*3]; g = cgenie_colors[i*3+1]; b = cgenie_colors[i*3+2];
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
for(i=0; i<108; i++)
- colortable_entry_set_value(machine().colortable, i, cgenie_palette[i]);
+ palette.set_pen_indirect(i, cgenie_palette[i]);
}
PALETTE_INIT_MEMBER(cgenie_state,cgenienz)
{
UINT8 i, r, g, b;
- machine().colortable = colortable_alloc(machine(), 49);
-
for ( i = 0; i < 49; i++ )
{
r = cgenienz_colors[i*3]; g = cgenienz_colors[i*3+1]; b = cgenienz_colors[i*3+2];
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
for(i=0; i<108; i++)
- colortable_entry_set_value(machine().colortable, i, cgenie_palette[i]);
+ palette.set_pen_indirect(i, cgenie_palette[i]);
}
static const ay8910_interface cgenie_ay8910_interface =
@@ -536,8 +532,8 @@ static MACHINE_CONFIG_START( cgenie_common, cgenie_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1,0*8,32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(cgenie_state, screen_update_cgenie)
- MCFG_GFXDECODE_ADD("gfxdecode", cgenie )
- MCFG_PALETTE_LENGTH(108)
+ MCFG_GFXDECODE_ADD("gfxdecode", cgenie )
+ MCFG_PALETTE_ADD("palette", 108)
// Actually the video is driven by an HD46505 clocked at XTAL_17_73447MHz/16
@@ -566,13 +562,13 @@ static MACHINE_CONFIG_START( cgenie_common, cgenie_state )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( cgenie, cgenie_common )
-
- MCFG_PALETTE_INIT_OVERRIDE(cgenie_state, cgenie )
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(cgenie_state, cgenie )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( cgenienz, cgenie_common )
-
- MCFG_PALETTE_INIT_OVERRIDE(cgenie_state, cgenienz )
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(cgenie_state, cgenienz )
MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mess/drivers/channelf.c b/src/mess/drivers/channelf.c
index 4545ec38f84..22d87263264 100644
--- a/src/mess/drivers/channelf.c
+++ b/src/mess/drivers/channelf.c
@@ -272,8 +272,8 @@ static MACHINE_CONFIG_START( channelf, channelf_state )
MCFG_SCREEN_VISIBLE_AREA(4, 112 - 7, 4, 64 - 3)
MCFG_SCREEN_UPDATE_DRIVER(channelf_state, screen_update_channelf)
- MCFG_PALETTE_LENGTH(8)
-
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(channelf_state, channelf)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -298,8 +298,8 @@ static MACHINE_CONFIG_START( sabavdpl, channelf_state )
MCFG_SCREEN_VISIBLE_AREA(4, 112 - 7, 4, 64 - 3)
MCFG_SCREEN_UPDATE_DRIVER(channelf_state, screen_update_channelf)
- MCFG_PALETTE_LENGTH(8)
-
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(channelf_state, channelf)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -325,8 +325,8 @@ static MACHINE_CONFIG_START( channlf2, channelf_state )
MCFG_SCREEN_VISIBLE_AREA(4, 112 - 7, 4, 64 - 3)
MCFG_SCREEN_UPDATE_DRIVER(channelf_state, screen_update_channelf)
- MCFG_PALETTE_LENGTH(8)
-
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(channelf_state, channelf)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -352,8 +352,8 @@ static MACHINE_CONFIG_START( sabavpl2, channelf_state )
MCFG_SCREEN_VISIBLE_AREA(4, 112 - 7, 4, 64 - 3)
MCFG_SCREEN_UPDATE_DRIVER(channelf_state, screen_update_channelf)
- MCFG_PALETTE_LENGTH(8)
-
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(channelf_state, channelf)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/clcd.c b/src/mess/drivers/clcd.c
index ab747f01a3a..2e7e60db612 100644
--- a/src/mess/drivers/clcd.c
+++ b/src/mess/drivers/clcd.c
@@ -89,10 +89,10 @@ public:
m_rtc->cs1_w(1);
}
- void palette_init()
+ DECLARE_PALETTE_INIT(hprot1)
{
- palette_set_color(machine(), 0, rgb_t(36,72,36));
- palette_set_color(machine(), 1, rgb_t(2,4,2));
+ palette.set_pen_color(0, rgb_t(36,72,36));
+ palette.set_pen_color(1, rgb_t(2,4,2));
}
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -782,7 +782,7 @@ static MACHINE_CONFIG_START(clcd, clcd_state)
MCFG_SCREEN_VISIBLE_AREA(0, 480-1, 0, 128-1)
MCFG_DEFAULT_LAYOUT(layout_lcd)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/compucolor.c b/src/mess/drivers/compucolor.c
index 4c89bfa05a5..e554a13bfc3 100644
--- a/src/mess/drivers/compucolor.c
+++ b/src/mess/drivers/compucolor.c
@@ -92,7 +92,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(compucolor2);
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
@@ -442,7 +442,7 @@ void compucolor2_state::machine_reset()
m_rs232->write_dtr(1);
}
-void compucolor2_state::palette_init()
+PALETTE_INIT_MEMBER(compucolor2_state, compucolor2)
{
for (int i = 0; i < 8; i++)
{
@@ -456,6 +456,9 @@ static MACHINE_CONFIG_START( compucolor2, compucolor2_state )
MCFG_CPU_PROGRAM_MAP(compucolor2_mem)
MCFG_CPU_IO_MAP(compucolor2_io)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(compucolor2_state, compucolor2)
+
// video hardware
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
diff --git a/src/mess/drivers/comquest.c b/src/mess/drivers/comquest.c
index 0d12cdfc0c2..e57291e4c8a 100644
--- a/src/mess/drivers/comquest.c
+++ b/src/mess/drivers/comquest.c
@@ -254,9 +254,8 @@ static MACHINE_CONFIG_START( comquest, comquest_state )
MCFG_SCREEN_VISIBLE_AREA(0, 64*4-1, 0, 128-1)
MCFG_SCREEN_UPDATE_DRIVER(comquest_state, screen_update_comquest)
- MCFG_GFXDECODE_ADD("gfxdecode", comquest )
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_GFXDECODE_ADD("gfxdecode", comquest )
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
diff --git a/src/mess/drivers/concept.c b/src/mess/drivers/concept.c
index 576b1a0a03f..2e15cdfc2b7 100644
--- a/src/mess/drivers/concept.c
+++ b/src/mess/drivers/concept.c
@@ -221,8 +221,7 @@ static MACHINE_CONFIG_START( concept, concept_state )
MCFG_SCREEN_VISIBLE_AREA(0, 720-1, 0, 560-1)
MCFG_SCREEN_UPDATE_DRIVER(concept_state, screen_update_concept)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* no sound? */
diff --git a/src/mess/drivers/craft.c b/src/mess/drivers/craft.c
index 59111ffceb9..5bddd6cc8cf 100644
--- a/src/mess/drivers/craft.c
+++ b/src/mess/drivers/craft.c
@@ -255,7 +255,7 @@ static MACHINE_CONFIG_START( craft, craft_state )
MCFG_SCREEN_SIZE(635, 525)
MCFG_SCREEN_VISIBLE_AREA(47, 526, 36, 515)
MCFG_SCREEN_UPDATE_DRIVER(craft_state, screen_update_craft)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("avr8")
diff --git a/src/mess/drivers/ct486.c b/src/mess/drivers/ct486.c
index e5441149387..6d78b01b19a 100644
--- a/src/mess/drivers/ct486.c
+++ b/src/mess/drivers/ct486.c
@@ -185,7 +185,7 @@ static MACHINE_CONFIG_START( ct486, ct486_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
// video hardware
- MCFG_PALETTE_LENGTH(256) // todo: really needed?
+ MCFG_PALETTE_ADD("palette", 256) // todo: really needed?
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/cxhumax.c b/src/mess/drivers/cxhumax.c
index 63bbad9847d..13852bc7c2b 100644
--- a/src/mess/drivers/cxhumax.c
+++ b/src/mess/drivers/cxhumax.c
@@ -1070,8 +1070,7 @@ static MACHINE_CONFIG_START( cxhumax, cxhumax_state )
MCFG_SCREEN_VISIBLE_AREA(0, 1920-1, 0, 1080-1)
MCFG_SCREEN_UPDATE_DRIVER(cxhumax_state, screen_update_cxhumax)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
diff --git a/src/mess/drivers/cybiko.c b/src/mess/drivers/cybiko.c
index 17844d56355..b7483644c65 100644
--- a/src/mess/drivers/cybiko.c
+++ b/src/mess/drivers/cybiko.c
@@ -281,22 +281,6 @@ static INPUT_PORTS_START( cybikoxt )
INPUT_PORTS_END
////////////////////
-// PALETTE INIT //
-////////////////////
-
-void cybiko_state::palette_init()
-{
- // init palette
- for (int i = 0; i < 4; i++)
- {
- palette_set_color(machine(), i, rgb_t::white);
-#ifndef HD66421_BRIGHTNESS_DOES_NOT_WORK
- palette_set_pen_contrast(machine(), i, 1.0 * i / (4 - 1));
-#endif
- }
-}
-
-////////////////////
// MACHINE DRIVER //
////////////////////
@@ -311,10 +295,9 @@ static MACHINE_CONFIG_START( cybikov1, cybiko_state )
MCFG_SCREEN_SIZE( HD66421_WIDTH, HD66421_HEIGHT )
MCFG_SCREEN_VISIBLE_AREA( 0, HD66421_WIDTH - 1, 0, HD66421_HEIGHT - 1 )
MCFG_SCREEN_UPDATE_DEVICE("hd66421", hd66421_device, update_screen)
-
+ MCFG_SCREEN_PALETTE("hd66421:palette")
// video
MCFG_HD66421_ADD("hd66421")
- MCFG_PALETTE_LENGTH(4)
MCFG_DEFAULT_LAYOUT(layout_lcd)
// sound
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/d6800.c b/src/mess/drivers/d6800.c
index cfc69bf562b..aa201dd7128 100644
--- a/src/mess/drivers/d6800.c
+++ b/src/mess/drivers/d6800.c
@@ -401,8 +401,7 @@ static MACHINE_CONFIG_START( d6800, d6800_state )
MCFG_SCREEN_VISIBLE_AREA(0, 63, 0, 31)
MCFG_SCREEN_UPDATE_DRIVER(d6800_state, screen_update_d6800)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(25))
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/dai.c b/src/mess/drivers/dai.c
index 338e7efc9b8..1ddb2b86c6c 100644
--- a/src/mess/drivers/dai.c
+++ b/src/mess/drivers/dai.c
@@ -221,7 +221,8 @@ static MACHINE_CONFIG_START( dai, dai_state )
MCFG_SCREEN_UPDATE_DRIVER(dai_state, screen_update_dai)
MCFG_GFXDECODE_ADD("gfxdecode", dai)
- MCFG_PALETTE_LENGTH(sizeof (dai_palette) / 3)
+ MCFG_PALETTE_ADD("palette", sizeof (dai_palette) / 3)
+ MCFG_PALETTE_INIT_OWNER(dai_state, dai)
/* sound hardware */
diff --git a/src/mess/drivers/dccons.c b/src/mess/drivers/dccons.c
index b9bc51292e6..e2673fb4e12 100644
--- a/src/mess/drivers/dccons.c
+++ b/src/mess/drivers/dccons.c
@@ -637,7 +637,7 @@ static MACHINE_CONFIG_START( dc, dc_cons_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(13458568*2, 857, 0, 640, 524, 0, 480) /* TODO: where pclk actually comes? */
MCFG_SCREEN_UPDATE_DEVICE("powervr2", powervr2_device, screen_update)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
MCFG_POWERVR2_ADD("powervr2", WRITE8(dc_state, pvr_irq))
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mess/drivers/dct11em.c b/src/mess/drivers/dct11em.c
index 235a2f3e52e..8da94a6ab21 100644
--- a/src/mess/drivers/dct11em.c
+++ b/src/mess/drivers/dct11em.c
@@ -61,8 +61,7 @@ static MACHINE_CONFIG_START( dct11em, dct11em_state )
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(dct11em_state, screen_update_dct11em)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mess/drivers/dgn_beta.c b/src/mess/drivers/dgn_beta.c
index 48edd4d9e39..fa2295634b9 100644
--- a/src/mess/drivers/dgn_beta.c
+++ b/src/mess/drivers/dgn_beta.c
@@ -277,12 +277,12 @@ static INPUT_PORTS_START( dgnbeta )
INPUT_PORTS_END
-void dgn_beta_state::palette_init()
+PALETTE_INIT_MEMBER(dgn_beta_state, dgn)
{
int i;
for ( i = 0; i < sizeof(dgnbeta_palette) / 3; i++ ) {
- palette_set_color_rgb(machine(), i, dgnbeta_palette[i*3], dgnbeta_palette[i*3+1], dgnbeta_palette[i*3+2]);
+ palette.set_pen_color(i, dgnbeta_palette[i*3], dgnbeta_palette[i*3+1], dgnbeta_palette[i*3+2]);
}
}
@@ -337,7 +337,8 @@ static MACHINE_CONFIG_START( dgnbeta, dgn_beta_state )
MCFG_SCREEN_UPDATE_DEVICE( "crtc", hd6845_device, screen_update )
MCFG_GFXDECODE_ADD("gfxdecode", dgnbeta)
- MCFG_PALETTE_LENGTH(ARRAY_LENGTH(dgnbeta_palette) / 3)
+ MCFG_PALETTE_ADD("palette", ARRAY_LENGTH(dgnbeta_palette) / 3)
+ MCFG_PALETTE_INIT_OWNER(dgn_beta_state, dgn)
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
/* PIA 0 at $FC20-$FC23 I46 */
diff --git a/src/mess/drivers/dim68k.c b/src/mess/drivers/dim68k.c
index 5d83e3d38bd..9a9be08ac49 100644
--- a/src/mess/drivers/dim68k.c
+++ b/src/mess/drivers/dim68k.c
@@ -333,8 +333,7 @@ static MACHINE_CONFIG_START( dim68k, dim68k_state )
MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 250-1)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", dim68k)
/* sound hardware */
diff --git a/src/mess/drivers/dm7000.c b/src/mess/drivers/dm7000.c
index 64072937dc2..ddf8d66c083 100644
--- a/src/mess/drivers/dm7000.c
+++ b/src/mess/drivers/dm7000.c
@@ -324,8 +324,7 @@ static MACHINE_CONFIG_START( dm7000, dm7000_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(dm7000_state, screen_update_dm7000)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
diff --git a/src/mess/drivers/dms5000.c b/src/mess/drivers/dms5000.c
index 928ab01776e..d4e13922a3c 100644
--- a/src/mess/drivers/dms5000.c
+++ b/src/mess/drivers/dms5000.c
@@ -66,8 +66,7 @@ static MACHINE_CONFIG_START( dms5000, dms5000_state )
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(dms5000_state, screen_update_dms5000)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mess/drivers/dmv.c b/src/mess/drivers/dmv.c
index 7d42154522b..c15f1caa286 100644
--- a/src/mess/drivers/dmv.c
+++ b/src/mess/drivers/dmv.c
@@ -332,8 +332,7 @@ static MACHINE_CONFIG_START( dmv, dmv_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_GFXDECODE_ADD("gfxdecode", dmv)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MCFG_DEFAULT_LAYOUT(layout_dmv)
// devices
diff --git a/src/mess/drivers/ec65.c b/src/mess/drivers/ec65.c
index 84a2b4b5241..d9803fba140 100644
--- a/src/mess/drivers/ec65.c
+++ b/src/mess/drivers/ec65.c
@@ -202,8 +202,7 @@ static MACHINE_CONFIG_START( ec65, ec65_state )
MCFG_SCREEN_UPDATE_DEVICE(MC6845_TAG, mc6845_device, screen_update)
MCFG_GFXDECODE_ADD("gfxdecode", ec65)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MCFG_MC6845_ADD(MC6845_TAG, MC6845, "screen", XTAL_16MHz / 8, ec65_crtc6845_interface)
@@ -237,8 +236,7 @@ static MACHINE_CONFIG_START( ec65k, ec65k_state )
MCFG_SCREEN_UPDATE_DEVICE(MC6845_TAG, mc6845_device, screen_update)
MCFG_GFXDECODE_ADD("gfxdecode", ec65)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MCFG_MC6845_ADD(MC6845_TAG, MC6845, "screen", XTAL_16MHz / 8, ec65_crtc6845_interface)
diff --git a/src/mess/drivers/einstein.c b/src/mess/drivers/einstein.c
index 4ae807aac1a..b3d283bc9b5 100644
--- a/src/mess/drivers/einstein.c
+++ b/src/mess/drivers/einstein.c
@@ -445,8 +445,8 @@ MACHINE_RESET_MEMBER(einstein_state,einstein2)
einstein_state::machine_reset();
/* 80 column card palette */
- palette_set_color(machine(), TMS9928A_PALETTE_SIZE, rgb_t::black);
- palette_set_color(machine(), TMS9928A_PALETTE_SIZE + 1, rgb_t(0, 224, 0));
+ m_palette->set_pen_color(TMS9928A_PALETTE_SIZE, rgb_t::black);
+ m_palette->set_pen_color(TMS9928A_PALETTE_SIZE + 1, rgb_t(0, 224, 0));
}
MACHINE_START_MEMBER(einstein_state,einstein2)
@@ -823,7 +823,7 @@ static MACHINE_CONFIG_DERIVED( einstei2, einstein )
MCFG_GFXDECODE_ADD("gfxdecode", einstei2)
/* 2 additional colors for the 80 column screen */
- MCFG_PALETTE_LENGTH(TMS9928A_PALETTE_SIZE + 2)
+ MCFG_PALETTE_ADD("palette", TMS9928A_PALETTE_SIZE + 2)
MCFG_MC6845_ADD("crtc", MC6845, "80column", XTAL_X002 / 4, einstein_crtc6845_interface)
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/electron.c b/src/mess/drivers/electron.c
index 8f8ee523237..a0884842ede 100644
--- a/src/mess/drivers/electron.c
+++ b/src/mess/drivers/electron.c
@@ -44,9 +44,9 @@ static const rgb_t electron_palette[8]=
rgb_t(0x000,0x000,0x000)
};
-void electron_state::palette_init()
+PALETTE_INIT_MEMBER(electron_state, electron)
{
- palette_set_colors(machine(), 0, electron_palette, ARRAY_LENGTH(electron_palette));
+ palette.set_pen_colors(0, electron_palette, ARRAY_LENGTH(electron_palette));
}
static ADDRESS_MAP_START(electron_mem, AS_PROGRAM, 8, electron_state )
@@ -190,7 +190,8 @@ static MACHINE_CONFIG_START( electron, electron_state )
MCFG_SCREEN_VISIBLE_AREA( 0, 640-1, 0, 256-1 )
MCFG_SCREEN_UPDATE_DRIVER(electron_state, screen_update_electron)
- MCFG_PALETTE_LENGTH( 16 )
+ MCFG_PALETTE_ADD( "palette", 16 )
+ MCFG_PALETTE_INIT_OWNER(electron_state, electron)
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_SCANLINE)
diff --git a/src/mess/drivers/elwro800.c b/src/mess/drivers/elwro800.c
index 1cb8170a40c..96dd15fb39d 100644
--- a/src/mess/drivers/elwro800.c
+++ b/src/mess/drivers/elwro800.c
@@ -575,8 +575,8 @@ static MACHINE_CONFIG_START( elwro800, elwro800_state )
MCFG_SCREEN_UPDATE_DRIVER(elwro800_state, screen_update_spectrum )
MCFG_SCREEN_VBLANK_DRIVER(elwro800_state, screen_eof_spectrum)
- MCFG_PALETTE_LENGTH(16)
- MCFG_PALETTE_INIT_OVERRIDE(elwro800_state, spectrum )
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(elwro800_state, spectrum )
MCFG_GFXDECODE_ADD("gfxdecode", elwro800)
MCFG_VIDEO_START_OVERRIDE(elwro800_state, spectrum )
diff --git a/src/mess/drivers/exelv.c b/src/mess/drivers/exelv.c
index 565e7dad8a2..d4f553c923b 100644
--- a/src/mess/drivers/exelv.c
+++ b/src/mess/drivers/exelv.c
@@ -103,7 +103,7 @@ public:
/* mailbox data */
UINT8 m_wx318; /* data of 74ls374 labeled wx318 */
UINT8 m_wx319; /* data of 74sl374 labeled wx319 */
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(exelv);
TIMER_DEVICE_CALLBACK_MEMBER(exelv_hblank_interrupt);
};
@@ -474,7 +474,7 @@ static INPUT_PORTS_START(exelv)
INPUT_PORTS_END
-void exelv_state::palette_init()
+PALETTE_INIT_MEMBER(exelv_state, exelv)
{
int i, red, green, blue;
@@ -484,7 +484,7 @@ void exelv_state::palette_init()
red = (i & 1) ? 255 : 0; /* red */
green = (i & 2) ? 255 : 0; /* green */
blue = (i & 4) ? 255 : 0; /* blue */
- palette_set_color_rgb(machine(), i, red, green, blue);
+ palette.set_pen_color(i, red, green, blue);
}
}
@@ -535,11 +535,12 @@ static MACHINE_CONFIG_START( exl100, exelv_state )
MCFG_SCREEN_SIZE(TMS3556_TOTAL_WIDTH, TMS3556_TOTAL_HEIGHT*2)
MCFG_SCREEN_VISIBLE_AREA(0, TMS3556_TOTAL_WIDTH-1, 0, TMS3556_TOTAL_HEIGHT*2-1)
#endif
- MCFG_PALETTE_LENGTH(8)
-
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(exelv_state, exelv)
+
MCFG_DEVICE_ADD("vsm", SPEECHROM, 0)
/* sound */
@@ -577,11 +578,12 @@ static MACHINE_CONFIG_START( exeltel, exelv_state )
MCFG_SCREEN_SIZE(TMS3556_TOTAL_WIDTH, TMS3556_TOTAL_HEIGHT*2)
MCFG_SCREEN_VISIBLE_AREA(0, TMS3556_TOTAL_WIDTH-1, 0, TMS3556_TOTAL_HEIGHT*2-1)
#endif
- MCFG_PALETTE_LENGTH(8)
-
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(exelv_state, exelv)
+
MCFG_DEVICE_ADD("vsm", SPEECHROM, 0)
/* sound */
diff --git a/src/mess/drivers/fk1.c b/src/mess/drivers/fk1.c
index d09ae273d18..84f9b6aa398 100644
--- a/src/mess/drivers/fk1.c
+++ b/src/mess/drivers/fk1.c
@@ -446,8 +446,7 @@ static MACHINE_CONFIG_START( fk1, fk1_state )
MCFG_SCREEN_UPDATE_DRIVER(fk1_state, screen_update)
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, monochrome_green)
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
MCFG_DEVICE_ADD("pit8253", PIT8253, 0)
MCFG_PIT8253_CLK0(50)
diff --git a/src/mess/drivers/fm7.c b/src/mess/drivers/fm7.c
index 6a40b688f97..efbdbd5a880 100644
--- a/src/mess/drivers/fm7.c
+++ b/src/mess/drivers/fm7.c
@@ -2049,8 +2049,8 @@ static MACHINE_CONFIG_START( fm7, fm7_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
- MCFG_PALETTE_LENGTH(8)
-
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(fm7_state, fm7)
MCFG_CASSETTE_ADD("cassette", fm7_cassette_interface)
@@ -2098,8 +2098,8 @@ static MACHINE_CONFIG_START( fm8, fm7_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
- MCFG_PALETTE_LENGTH(8)
-
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(fm7_state, fm7)
MCFG_CASSETTE_ADD("cassette", fm7_cassette_interface)
@@ -2147,8 +2147,8 @@ static MACHINE_CONFIG_START( fm77av, fm7_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
- MCFG_PALETTE_LENGTH(8 + 4096)
-
+ MCFG_PALETTE_ADD("palette", 8 + 4096)
+ MCFG_PALETTE_INIT_OWNER(fm7_state, fm7)
MCFG_CASSETTE_ADD("cassette", fm7_cassette_interface)
@@ -2200,8 +2200,8 @@ static MACHINE_CONFIG_START( fm11, fm7_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
- MCFG_PALETTE_LENGTH(8)
-
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(fm7_state, fm7)
MCFG_CASSETTE_ADD("cassette", fm7_cassette_interface)
@@ -2247,8 +2247,8 @@ static MACHINE_CONFIG_START( fm16beta, fm7_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
- MCFG_PALETTE_LENGTH(8)
-
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(fm7_state, fm7)
MCFG_CASSETTE_ADD("cassette", fm7_cassette_interface)
diff --git a/src/mess/drivers/fp1100.c b/src/mess/drivers/fp1100.c
index e56008faaac..7e04b3489c2 100644
--- a/src/mess/drivers/fp1100.c
+++ b/src/mess/drivers/fp1100.c
@@ -360,7 +360,7 @@ static MACHINE_CONFIG_START( fp1100, fp1100_state )
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DEVICE("crtc", h46505_device, screen_update)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
MCFG_GFXDECODE_ADD("gfxdecode", fp1100)
/* Devices */
diff --git a/src/mess/drivers/fp200.c b/src/mess/drivers/fp200.c
index 0862db8b5e1..b4ac4f97aab 100644
--- a/src/mess/drivers/fp200.c
+++ b/src/mess/drivers/fp200.c
@@ -65,13 +65,13 @@ public:
DECLARE_WRITE_LINE_MEMBER(sod_w);
DECLARE_READ_LINE_MEMBER(sid_r);
+ DECLARE_PALETTE_INIT(fp200);
protected:
// driver_device overrides
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
};
void fp200_state::video_start()
@@ -561,10 +561,10 @@ void fp200_state::machine_reset()
}
-void fp200_state::palette_init()
+PALETTE_INIT_MEMBER(fp200_state, fp200)
{
- palette_set_color_rgb(machine(), 0, 0xa0, 0xa8, 0xa0);
- palette_set_color_rgb(machine(), 1, 0x30, 0x38, 0x10);
+ palette.set_pen_color(0, 0xa0, 0xa8, 0xa0);
+ palette.set_pen_color(1, 0x30, 0x38, 0x10);
}
WRITE_LINE_MEMBER( fp200_state::sod_w )
@@ -596,7 +596,8 @@ static MACHINE_CONFIG_START( fp200, fp200_state )
MCFG_GFXDECODE_ADD("gfxdecode", fp200)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(fp200_state, fp200)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/fp6000.c b/src/mess/drivers/fp6000.c
index 22f96cb34f8..095c1e3d9e5 100644
--- a/src/mess/drivers/fp6000.c
+++ b/src/mess/drivers/fp6000.c
@@ -101,7 +101,7 @@ UINT32 fp6000_state::screen_update_fp6000(screen_device &screen, bitmap_ind16 &b
int dot = (m_gvram[count] >> (12-xi*4)) & 0xf;
if(y < 400 && x*4+xi < 640) /* TODO: safety check */
- bitmap.pix16(y, x*4+xi) = machine().pens[dot];
+ bitmap.pix16(y, x*4+xi) = m_palette->pen(dot);
}
count++;
@@ -124,7 +124,7 @@ UINT32 fp6000_state::screen_update_fp6000(screen_device &screen, bitmap_ind16 &b
if(pen != -1)
if(y*mc6845_tile_height < 400 && x*8+xi < 640) /* TODO: safety check */
- bitmap.pix16(y*mc6845_tile_height+yi, x*8+xi) = machine().pens[pen];
+ bitmap.pix16(y*mc6845_tile_height+yi, x*8+xi) = m_palette->pen(pen);
}
}
}
@@ -139,7 +139,7 @@ UINT32 fp6000_state::screen_update_fp6000(screen_device &screen, bitmap_ind16 &b
{
x = mc6845_cursor_addr % mc6845_h_display;
y = mc6845_cursor_addr / mc6845_h_display;
- bitmap.pix16(y*mc6845_tile_height+yi, x*8+xi) = machine().pens[7];
+ bitmap.pix16(y*mc6845_tile_height+yi, x*8+xi) = m_palette->pen(7);
}
}
}
@@ -318,8 +318,8 @@ static MACHINE_CONFIG_START( fp6000, fp6000_state )
MCFG_MC6845_ADD("crtc", H46505, "screen", 16000000/5, mc6845_intf) /* unknown clock, hand tuned to get ~60 fps */
- MCFG_PALETTE_LENGTH(8)
-// MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD("palette", 8)
+// MCFG_PALETTE_INIT(black_and_white)
MCFG_GFXDECODE_ADD("gfxdecode", fp6000)
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/galaxy.c b/src/mess/drivers/galaxy.c
index 2da489c4f45..fe0b506baf3 100644
--- a/src/mess/drivers/galaxy.c
+++ b/src/mess/drivers/galaxy.c
@@ -199,8 +199,7 @@ static MACHINE_CONFIG_START( galaxy, galaxy_state )
MCFG_SCREEN_UPDATE_DRIVER(galaxy_state, screen_update_galaxy)
MCFG_GFXDECODE_ADD("gfxdecode", galaxy)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* snapshot */
@@ -235,8 +234,7 @@ static MACHINE_CONFIG_START( galaxyp, galaxy_state )
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 208-1)
MCFG_SCREEN_UPDATE_DRIVER(galaxy_state, screen_update_galaxy)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* snapshot */
diff --git a/src/mess/drivers/galeb.c b/src/mess/drivers/galeb.c
index 5bf38fb623c..a55917cc292 100644
--- a/src/mess/drivers/galeb.c
+++ b/src/mess/drivers/galeb.c
@@ -138,10 +138,9 @@ static MACHINE_CONFIG_START( galeb, galeb_state )
MCFG_SCREEN_VISIBLE_AREA(0, 48*8-1, 0, 16*8-1)
MCFG_SCREEN_UPDATE_DRIVER(galeb_state, screen_update_galeb)
- MCFG_GFXDECODE_ADD("gfxdecode", galeb )
+ MCFG_GFXDECODE_ADD("gfxdecode", galeb )
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* audio hardware */
diff --git a/src/mess/drivers/gamecom.c b/src/mess/drivers/gamecom.c
index d59a131c0fd..b9b723ae6f0 100644
--- a/src/mess/drivers/gamecom.c
+++ b/src/mess/drivers/gamecom.c
@@ -62,7 +62,7 @@ static INPUT_PORTS_START( gamecom )
PORT_BIT( 0xff, 80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1, 0, 0) PORT_MINMAX(0,159) PORT_SENSITIVITY(50) PORT_KEYDELTA(8)
INPUT_PORTS_END
-static const unsigned char palette[] =
+static const unsigned char palette_gamecom[] =
{
0xDF, 0xFF, 0x8F, /* White */
0x8F, 0xCF, 0x8F, /* Gray 3 */
@@ -71,12 +71,12 @@ static const unsigned char palette[] =
0x00, 0x00, 0x00, /* Black */
};
-void gamecom_state::palette_init()
+PALETTE_INIT_MEMBER(gamecom_state, gamecom)
{
int index;
for ( index = 0; index < 5; index++ )
{
- palette_set_color_rgb(machine(), 4-index, palette[index*3+0], palette[index*3+1], palette[index*3+2] );
+ palette.set_pen_color(4-index, palette_gamecom[index*3+0], palette_gamecom[index*3+1], palette_gamecom[index*3+2] );
}
}
@@ -114,7 +114,8 @@ static MACHINE_CONFIG_START( gamecom, gamecom_state )
MCFG_SCREEN_VISIBLE_AREA( 0, 199, 0, 159 )
MCFG_DEFAULT_LAYOUT(layout_lcd)
- MCFG_PALETTE_LENGTH(5)
+ MCFG_PALETTE_ADD("palette", 5)
+ MCFG_PALETTE_INIT_OWNER(gamecom_state, gamecom)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO( "lspeaker", "rspeaker" )
diff --git a/src/mess/drivers/gamepock.c b/src/mess/drivers/gamepock.c
index bc46104ba99..1674ba44de7 100644
--- a/src/mess/drivers/gamepock.c
+++ b/src/mess/drivers/gamepock.c
@@ -76,8 +76,7 @@ static MACHINE_CONFIG_START( gamepock, gamepock_state )
MCFG_DEFAULT_LAYOUT(layout_lcd)
- MCFG_PALETTE_LENGTH( 2 )
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/gb.c b/src/mess/drivers/gb.c
index d6103681379..fede93f4132 100644
--- a/src/mess/drivers/gb.c
+++ b/src/mess/drivers/gb.c
@@ -667,7 +667,7 @@ SLOT_INTERFACE_END
-static const unsigned char palette[] =
+static const unsigned char palette_gb[] =
{
/* Simple black and white palette */
/* 0xFF,0xFF,0xFF,
@@ -696,13 +696,13 @@ static const unsigned char palette_megaduck[] = {
PALETTE_INIT_MEMBER(gb_state, gb)
{
for (int i = 0; i < 4; i++)
- palette_set_color_rgb(machine(), i, palette[i * 3 + 0], palette[i * 3 + 1], palette[i * 3 + 2]);
+ palette.set_pen_color(i, palette_gb[i * 3 + 0], palette_gb[i * 3 + 1], palette_gb[i * 3 + 2]);
}
PALETTE_INIT_MEMBER(gb_state, gbp)
{
for (int i = 0; i < 4; i++)
- palette_set_color_rgb(machine(), i, palette[(i + 4) * 3 + 0], palette[(i + 4) * 3 + 1], palette[(i + 4) * 3 + 2]);
+ palette.set_pen_color(i, palette_gb[(i + 4) * 3 + 0], palette_gb[(i + 4) * 3 + 1], palette_gb[(i + 4) * 3 + 2]);
}
PALETTE_INIT_MEMBER(gb_state, sgb)
@@ -714,7 +714,7 @@ PALETTE_INIT_MEMBER(gb_state, sgb)
r = (i & 0x1F) << 3;
g = ((i >> 5) & 0x1F) << 3;
b = ((i >> 10) & 0x1F) << 3;
- palette_set_color_rgb(machine(), i, r, g, b);
+ palette.set_pen_color(i, r, g, b);
}
}
@@ -727,14 +727,14 @@ PALETTE_INIT_MEMBER(gb_state, gbc)
r = (i & 0x1F) << 3;
g = ((i >> 5) & 0x1F) << 3;
b = ((i >> 10) & 0x1F) << 3;
- palette_set_color_rgb(machine(), i, r, g, b);
+ palette.set_pen_color(i, r, g, b);
}
}
PALETTE_INIT_MEMBER(megaduck_state, megaduck)
{
for (int i = 0; i < 4; i++)
- palette_set_color_rgb(machine(), i, palette_megaduck[i * 3 + 0], palette_megaduck[i * 3 + 1], palette_megaduck[i * 3 + 2]);
+ palette.set_pen_color(i, palette_megaduck[i * 3 + 0], palette_megaduck[i * 3 + 1], palette_megaduck[i * 3 + 2]);
}
@@ -761,8 +761,8 @@ static MACHINE_CONFIG_START( gameboy, gb_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 20*8-1, 0*8, 18*8-1)
MCFG_GFXDECODE_ADD("gfxdecode", gb)
- MCFG_PALETTE_LENGTH(4)
- MCFG_PALETTE_INIT_OVERRIDE(gb_state,gb)
+ MCFG_PALETTE_ADD("palette", 4)
+ MCFG_PALETTE_INIT_OWNER(gb_state,gb)
MCFG_GB_LCD_DMG_ADD( "lcd" )
@@ -795,8 +795,10 @@ static MACHINE_CONFIG_DERIVED( supergb, gameboy )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_SIZE(32*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
- MCFG_PALETTE_LENGTH(32768)
- MCFG_PALETTE_INIT_OVERRIDE(gb_state,sgb)
+
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 32768)
+ MCFG_PALETTE_INIT_OWNER(gb_state,sgb)
MCFG_DEVICE_REMOVE("lcd")
MCFG_GB_LCD_SGB_ADD( "lcd" )
@@ -810,7 +812,9 @@ static MACHINE_CONFIG_DERIVED( gbpocket, gameboy )
MCFG_MACHINE_START_OVERRIDE(gb_state, gbpocket)
MCFG_MACHINE_RESET_OVERRIDE(gb_state, gbpocket)
- MCFG_PALETTE_INIT_OVERRIDE(gb_state,gbp)
+
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(gb_state,gbp)
MCFG_DEVICE_REMOVE("lcd")
MCFG_GB_LCD_MGB_ADD( "lcd" )
@@ -824,8 +828,9 @@ static MACHINE_CONFIG_DERIVED( gbcolor, gameboy )
MCFG_MACHINE_START_OVERRIDE(gb_state,gbc)
MCFG_MACHINE_RESET_OVERRIDE(gb_state,gbc)
- MCFG_PALETTE_LENGTH(32768)
- MCFG_PALETTE_INIT_OVERRIDE(gb_state,gbc)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 32768)
+ MCFG_PALETTE_INIT_OWNER(gb_state,gbc)
MCFG_DEVICE_REMOVE("lcd")
MCFG_GB_LCD_CGB_ADD( "lcd" )
@@ -863,8 +868,9 @@ static MACHINE_CONFIG_START( megaduck, megaduck_state )
MCFG_DEFAULT_LAYOUT(layout_lcd)
MCFG_GFXDECODE_ADD("gfxdecode", gb)
- MCFG_PALETTE_LENGTH(4)
- MCFG_PALETTE_INIT_OVERRIDE(megaduck_state,megaduck)
+
+ MCFG_PALETTE_ADD("palette", 4)
+ MCFG_PALETTE_INIT_OWNER(megaduck_state,megaduck)
MCFG_GB_LCD_DMG_ADD( "lcd" )
diff --git a/src/mess/drivers/gba.c b/src/mess/drivers/gba.c
index 3255528d980..3212939bbff 100644
--- a/src/mess/drivers/gba.c
+++ b/src/mess/drivers/gba.c
@@ -43,7 +43,7 @@ INLINE void ATTR_PRINTF(3,4) verboselog(running_machine &machine, int n_level, c
static const UINT32 timer_clks[4] = { 16777216, 16777216/64, 16777216/256, 16777216/1024 };
-void gba_state::palette_init()
+PALETTE_INIT_MEMBER(gba_state, gba)
{
UINT8 r, g, b;
for( b = 0; b < 32; b++ )
@@ -52,7 +52,7 @@ void gba_state::palette_init()
{
for( r = 0; r < 32; r++ )
{
- palette_set_color_rgb( machine(), ( b << 10 ) | ( g << 5 ) | r, pal5bit(r), pal5bit(g), pal5bit(b) );
+ palette.set_pen_color( ( b << 10 ) | ( g << 5 ) | r, pal5bit(r), pal5bit(g), pal5bit(b) );
}
}
}
@@ -2257,7 +2257,8 @@ static MACHINE_CONFIG_START( gbadv, gba_state )
MCFG_SCREEN_UPDATE_DRIVER(gba_state, screen_update)
MCFG_DEFAULT_LAYOUT(layout_lcd)
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD("palette", 32768)
+ MCFG_PALETTE_INIT_OWNER(gba_state, gba)
MCFG_SPEAKER_STANDARD_STEREO("spkleft", "spkright")
MCFG_SOUND_ADD("custom", GAMEBOY, 0)
diff --git a/src/mess/drivers/geniusiq.c b/src/mess/drivers/geniusiq.c
index 88e5efcb216..7d60282ea57 100644
--- a/src/mess/drivers/geniusiq.c
+++ b/src/mess/drivers/geniusiq.c
@@ -265,7 +265,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(geniusiq);
virtual UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_READ16_MEMBER(input_r);
@@ -316,10 +316,10 @@ public:
virtual UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
-void geniusiq_state::palette_init()
+PALETTE_INIT_MEMBER(geniusiq_state, geniusiq)
{
// shades need to be verified
- const UINT8 palette[] =
+ const UINT8 palette_val[] =
{
0x00, 0x00, 0x00, // Black?? (used in the cursor for transparency)
0xff, 0xff, 0xff, // White
@@ -339,8 +339,8 @@ void geniusiq_state::palette_init()
0xff, 0x00, 0xff // Pink
};
- for (int i=0; i<ARRAY_LENGTH(palette)/3; i++)
- palette_set_color_rgb(machine(), i, palette[i*3], palette[i*3+1], palette[i*3+2]);
+ for (int i=0; i<ARRAY_LENGTH(palette_val)/3; i++)
+ palette.set_pen_color(i, palette_val[i*3], palette_val[i*3+1], palette_val[i*3+2]);
}
UINT32 gl8008cx_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
@@ -810,7 +810,8 @@ static MACHINE_CONFIG_START( iq128, geniusiq_state )
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
MCFG_SCREEN_UPDATE_DRIVER( geniusiq_state, screen_update )
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(geniusiq_state, geniusiq)
/* internal flash */
MCFG_AMD_29F010_ADD("flash")
diff --git a/src/mess/drivers/gizmondo.c b/src/mess/drivers/gizmondo.c
index d91049458e7..b57975838e9 100644
--- a/src/mess/drivers/gizmondo.c
+++ b/src/mess/drivers/gizmondo.c
@@ -202,7 +202,7 @@ static MACHINE_CONFIG_START( gizmondo, gizmondo_state )
MCFG_CPU_ADD("maincpu", ARM9, 40000000)
MCFG_CPU_PROGRAM_MAP(gizmondo_map)
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD("palette", 32768)
MCFG_SCREEN_ADD("screen", LCD)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -215,7 +215,7 @@ static MACHINE_CONFIG_START( gizmondo, gizmondo_state )
MCFG_GF4500_ADD("gf4500")
- MCFG_S3C2440_ADD("s3c2440", 12000000, gizmondo_s3c2440_intf)
+ MCFG_S3C2440_ADD("s3c2440", 12000000, gizmondo_s3c2440_intf, "palette")
MCFG_DISKONCHIP_G3_ADD("diskonchip", 64)
diff --git a/src/mess/drivers/gmaster.c b/src/mess/drivers/gmaster.c
index 5f261c53053..08cc5a7e6d0 100644
--- a/src/mess/drivers/gmaster.c
+++ b/src/mess/drivers/gmaster.c
@@ -20,7 +20,7 @@ public:
{ }
virtual void machine_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(gmaster);
DECLARE_READ8_MEMBER(gmaster_io_r);
DECLARE_WRITE8_MEMBER(gmaster_io_w);
@@ -215,13 +215,13 @@ static const unsigned char gmaster_palette[2][3] =
};
-void gmaster_state::palette_init()
+PALETTE_INIT_MEMBER(gmaster_state, gmaster)
{
int i;
for (i = 0; i < 2; i++)
{
- palette_set_color_rgb(machine(), i, gmaster_palette[i][0], gmaster_palette[i][1], gmaster_palette[i][2]);
+ palette.set_pen_color(i, gmaster_palette[i][0], gmaster_palette[i][1], gmaster_palette[i][2]);
}
}
@@ -299,7 +299,8 @@ static MACHINE_CONFIG_START( gmaster, gmaster_state )
MCFG_SCREEN_VISIBLE_AREA(0, 64-1-3, 0, 64-1)
MCFG_SCREEN_UPDATE_DRIVER(gmaster_state, screen_update_gmaster)
- MCFG_PALETTE_LENGTH(sizeof(gmaster_palette)/sizeof(gmaster_palette[0]))
+ MCFG_PALETTE_ADD("palette", sizeof(gmaster_palette)/sizeof(gmaster_palette[0]))
+ MCFG_PALETTE_INIT_OWNER(gmaster_state, gmaster)
MCFG_DEFAULT_LAYOUT(layout_lcd)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/gp2x.c b/src/mess/drivers/gp2x.c
index 1183cf74aa4..fbe006e999e 100644
--- a/src/mess/drivers/gp2x.c
+++ b/src/mess/drivers/gp2x.c
@@ -356,7 +356,7 @@ static MACHINE_CONFIG_START( gp2x, gp2x_state )
MCFG_CPU_ADD("maincpu", ARM9, 80000000)
MCFG_CPU_PROGRAM_MAP(gp2x_map)
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD("palette", 32768)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
diff --git a/src/mess/drivers/gp32.c b/src/mess/drivers/gp32.c
index 0751275f634..9e6be05a5c3 100644
--- a/src/mess/drivers/gp32.c
+++ b/src/mess/drivers/gp32.c
@@ -134,7 +134,7 @@ void gp32_state::s3c240x_lcd_render_01( )
UINT32 data = s3c240x_lcd_dma_read();
for (j = 0; j < 32; j++)
{
- *scanline++ = palette_get_color( machine(), (data >> 31) & 0x01);
+ *scanline++ = m_palette->pen_color((data >> 31) & 0x01);
data = data << 1;
m_s3c240x_lcd.hpos++;
if (m_s3c240x_lcd.hpos >= (m_s3c240x_lcd.pagewidth_max << 4))
@@ -157,7 +157,7 @@ void gp32_state::s3c240x_lcd_render_02( )
UINT32 data = s3c240x_lcd_dma_read();
for (j = 0; j < 16; j++)
{
- *scanline++ = palette_get_color( machine(), (data >> 30) & 0x03);
+ *scanline++ = m_palette->pen_color((data >> 30) & 0x03);
data = data << 2;
m_s3c240x_lcd.hpos++;
if (m_s3c240x_lcd.hpos >= (m_s3c240x_lcd.pagewidth_max << 3))
@@ -180,7 +180,7 @@ void gp32_state::s3c240x_lcd_render_04( )
UINT32 data = s3c240x_lcd_dma_read( );
for (j = 0; j < 8; j++)
{
- *scanline++ = palette_get_color( machine(), (data >> 28) & 0x0F);
+ *scanline++ = m_palette->pen_color((data >> 28) & 0x0F);
data = data << 4;
m_s3c240x_lcd.hpos++;
if (m_s3c240x_lcd.hpos >= (m_s3c240x_lcd.pagewidth_max << 2))
@@ -203,7 +203,7 @@ void gp32_state::s3c240x_lcd_render_08( )
UINT32 data = s3c240x_lcd_dma_read();
for (j = 0; j < 4; j++)
{
- *scanline++ = palette_get_color( machine(), (data >> 24) & 0xFF);
+ *scanline++ = m_palette->pen_color((data >> 24) & 0xFF);
data = data << 8;
m_s3c240x_lcd.hpos++;
if (m_s3c240x_lcd.hpos >= (m_s3c240x_lcd.pagewidth_max << 1))
@@ -387,7 +387,7 @@ WRITE32_MEMBER(gp32_state::s3c240x_lcd_palette_w)
{
verboselog( machine(), 0, "s3c240x_lcd_palette_w: unknown mask %08x\n", mem_mask);
}
- palette_set_color( machine(), offset, s3c240x_get_color_5551( data & 0xFFFF));
+ m_palette->set_pen_color( offset, s3c240x_get_color_5551( data & 0xFFFF));
}
// CLOCK & POWER MANAGEMENT
@@ -1678,7 +1678,7 @@ static MACHINE_CONFIG_START( gp32, gp32_state )
MCFG_CPU_ADD("maincpu", ARM9, 40000000)
MCFG_CPU_PROGRAM_MAP(gp32_map)
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD("palette", 32768)
MCFG_SCREEN_ADD("screen", LCD)
MCFG_SCREEN_REFRESH_RATE(60)
diff --git a/src/mess/drivers/grfd2301.c b/src/mess/drivers/grfd2301.c
index 232b5fa8e34..517b03e8227 100644
--- a/src/mess/drivers/grfd2301.c
+++ b/src/mess/drivers/grfd2301.c
@@ -122,8 +122,7 @@ static MACHINE_CONFIG_START( grfd2301, grfd2301_state )
MCFG_SCREEN_UPDATE_DRIVER(grfd2301_state, screen_update)
MCFG_SCREEN_SIZE(640, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 239)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
ROM_START( grfd2301 )
diff --git a/src/mess/drivers/h19.c b/src/mess/drivers/h19.c
index 6c833bf2973..a5dfff50c7d 100644
--- a/src/mess/drivers/h19.c
+++ b/src/mess/drivers/h19.c
@@ -429,8 +429,7 @@ static MACHINE_CONFIG_START( h19, h19_state )
MCFG_SCREEN_SIZE(640, 200)
MCFG_SCREEN_VISIBLE_AREA(0, 640 - 1, 0, 200 - 1)
MCFG_GFXDECODE_ADD("gfxdecode", h19)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, monochrome_green)
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
MCFG_MC6845_ADD("crtc", MC6845, "screen", XTAL_12_288MHz / 8, h19_crtc6845_interface) // clk taken from schematics
MCFG_INS8250_ADD( "ins8250", h19_ace_interface, XTAL_12_288MHz / 4) // 3.072mhz clock which gets divided down for the various baud rates
diff --git a/src/mess/drivers/h89.c b/src/mess/drivers/h89.c
index 506b3c3f95e..f29c1ec9c98 100644
--- a/src/mess/drivers/h89.c
+++ b/src/mess/drivers/h89.c
@@ -143,8 +143,7 @@ static MACHINE_CONFIG_START( h89, h89_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_STATIC(h89)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
#endif
MCFG_INS8250_ADD( "ins8250", h89_ins8250_interface, XTAL_1_8432MHz )
diff --git a/src/mess/drivers/harriet.c b/src/mess/drivers/harriet.c
index 6d462ca60fe..5e128f9788d 100644
--- a/src/mess/drivers/harriet.c
+++ b/src/mess/drivers/harriet.c
@@ -43,14 +43,12 @@ public:
DECLARE_READ8_MEMBER(unk3_r);
DECLARE_READ8_MEMBER(keyboard_status_r);
DECLARE_WRITE8_MEMBER( kbd_put );
-
protected:
// driver_device overrides
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
};
void harriet_state::video_start()
@@ -196,12 +194,6 @@ void harriet_state::machine_reset()
}
-void harriet_state::palette_init()
-{
-}
-
-
-
static MACHINE_CONFIG_START( harriet, harriet_state )
/* basic machine hardware */
@@ -211,7 +203,7 @@ static MACHINE_CONFIG_START( harriet, harriet_state )
/* video hardware */
MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/hec2hrp.c b/src/mess/drivers/hec2hrp.c
index 168ae7c62da..f560c0d8b33 100644
--- a/src/mess/drivers/hec2hrp.c
+++ b/src/mess/drivers/hec2hrp.c
@@ -446,7 +446,7 @@ static MACHINE_CONFIG_START( hec2hr, hec2hrp_state )
MCFG_SCREEN_VISIBLE_AREA(0, 243, 0, 227)
MCFG_SCREEN_UPDATE_DRIVER(hec2hrp_state, screen_update_hec2hrp)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
MCFG_VIDEO_START_OVERRIDE(hec2hrp_state,hec2hrp)
/* sound hardware */
@@ -489,7 +489,7 @@ static MACHINE_CONFIG_START( hec2hrp, hec2hrp_state )
MCFG_SCREEN_VISIBLE_AREA(0, 243, 0, 227)
MCFG_SCREEN_UPDATE_DRIVER(hec2hrp_state, screen_update_hec2hrp)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
MCFG_VIDEO_START_OVERRIDE(hec2hrp_state,hec2hrp)
/* sound hardware */
@@ -544,7 +544,7 @@ static MACHINE_CONFIG_START( hec2mx40, hec2hrp_state )
MCFG_SCREEN_VISIBLE_AREA(0, 243, 0, 227)
MCFG_SCREEN_UPDATE_DRIVER(hec2hrp_state, screen_update_hec2hrp)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
MCFG_VIDEO_START_OVERRIDE(hec2hrp_state,hec2hrp)
/* sound hardware */
@@ -594,7 +594,7 @@ static MACHINE_CONFIG_START( hec2hrx, hec2hrp_state )
MCFG_SCREEN_VISIBLE_AREA(0, 243, 0, 227)
MCFG_SCREEN_UPDATE_DRIVER(hec2hrp_state, screen_update_hec2hrp)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
MCFG_VIDEO_START_OVERRIDE(hec2hrp_state,hec2hrp)
/* sound hardware */
@@ -641,8 +641,7 @@ static MACHINE_CONFIG_START( hec2mdhrx, hec2hrp_state )
MCFG_SCREEN_VISIBLE_AREA(0, 243, 0, 227)
MCFG_SCREEN_UPDATE_DRIVER(hec2hrp_state, screen_update_hec2hrp)
- MCFG_PALETTE_LENGTH(16)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MCFG_VIDEO_START_OVERRIDE(hec2hrp_state,hec2hrp)
/* sound hardware */
@@ -693,7 +692,7 @@ static MACHINE_CONFIG_START( hec2mx80, hec2hrp_state )
MCFG_SCREEN_VISIBLE_AREA(0, 243, 0, 227)
MCFG_SCREEN_UPDATE_DRIVER(hec2hrp_state, screen_update_hec2hrp)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
MCFG_VIDEO_START_OVERRIDE(hec2hrp_state,hec2hrp)
/* sound hardware */
diff --git a/src/mess/drivers/homelab.c b/src/mess/drivers/homelab.c
index c18e2d4395c..7f5decce481 100644
--- a/src/mess/drivers/homelab.c
+++ b/src/mess/drivers/homelab.c
@@ -761,8 +761,7 @@ static MACHINE_CONFIG_START( homelab, homelab_state )
MCFG_VIDEO_START_OVERRIDE(homelab_state,homelab2)
MCFG_SCREEN_UPDATE_DRIVER(homelab_state, screen_update_homelab2)
MCFG_GFXDECODE_ADD("gfxdecode", homelab)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, monochrome_green)
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -791,8 +790,7 @@ static MACHINE_CONFIG_START( homelab3, homelab_state )
MCFG_VIDEO_START_OVERRIDE(homelab_state,homelab3)
MCFG_SCREEN_UPDATE_DRIVER(homelab_state, screen_update_homelab3)
MCFG_GFXDECODE_ADD("gfxdecode", homelab)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, monochrome_green)
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -821,8 +819,7 @@ static MACHINE_CONFIG_START( brailab4, homelab_state )
MCFG_VIDEO_START_OVERRIDE(homelab_state,brailab4)
MCFG_SCREEN_UPDATE_DRIVER(homelab_state, screen_update_homelab3)
MCFG_GFXDECODE_ADD("gfxdecode", homelab)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, monochrome_green)
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/homez80.c b/src/mess/drivers/homez80.c
index c2f481e4d3e..6937b35964e 100644
--- a/src/mess/drivers/homez80.c
+++ b/src/mess/drivers/homez80.c
@@ -292,9 +292,8 @@ static MACHINE_CONFIG_START( homez80, homez80_state )
MCFG_SCREEN_UPDATE_DRIVER(homez80_state, screen_update)
MCFG_SCREEN_SIZE(344, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 344-1, 0, 32*8-1)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
- MCFG_GFXDECODE_ADD("gfxdecode", homez80 )
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
+ MCFG_GFXDECODE_ADD("gfxdecode", homez80 )
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mess/drivers/hp16500.c b/src/mess/drivers/hp16500.c
index 43f13323a9d..e0c23ed96f6 100644
--- a/src/mess/drivers/hp16500.c
+++ b/src/mess/drivers/hp16500.c
@@ -63,7 +63,7 @@ static MACHINE_CONFIG_START( hp16500, hp16500_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(hp16500_state, screen_update_hp16500)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mess/drivers/hp48.c b/src/mess/drivers/hp48.c
index eadda806c14..1f72e352016 100644
--- a/src/mess/drivers/hp48.c
+++ b/src/mess/drivers/hp48.c
@@ -947,7 +947,8 @@ static MACHINE_CONFIG_START( hp48_common, hp48_state )
MCFG_SCREEN_VISIBLE_AREA( 0, 130, 0, 63 )
MCFG_SCREEN_UPDATE_DRIVER(hp48_state, screen_update_hp48)
- MCFG_PALETTE_LENGTH( 256 ) /* monochrome, but with varying contrast and grayscale */
+ MCFG_PALETTE_ADD( "palette", 256 ) /* monochrome, but with varying contrast and grayscale */
+ MCFG_PALETTE_INIT_OWNER(hp48_state, hp48)
/* sound */
MCFG_SPEAKER_STANDARD_MONO( "mono" )
diff --git a/src/mess/drivers/hp49gp.c b/src/mess/drivers/hp49gp.c
index b6e17c26722..55599a3184f 100644
--- a/src/mess/drivers/hp49gp.c
+++ b/src/mess/drivers/hp49gp.c
@@ -298,7 +298,7 @@ static MACHINE_CONFIG_START( hp49gp, hp49gp_state )
MCFG_CPU_ADD("maincpu", ARM9, 400000000)
MCFG_CPU_PROGRAM_MAP(hp49gp_map)
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD("palette", 32768)
MCFG_SCREEN_ADD("screen", LCD)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -310,7 +310,7 @@ static MACHINE_CONFIG_START( hp49gp, hp49gp_state )
MCFG_DEFAULT_LAYOUT(layout_lcd)
- MCFG_S3C2410_ADD("s3c2410", 12000000, hp49gp_s3c2410_intf)
+ MCFG_S3C2410_ADD("s3c2410", 12000000, hp49gp_s3c2410_intf, "palette")
MACHINE_CONFIG_END
static INPUT_PORTS_START( hp49gp )
diff --git a/src/mess/drivers/hp9k.c b/src/mess/drivers/hp9k.c
index 1721e8b50c7..6467d946ef6 100644
--- a/src/mess/drivers/hp9k.c
+++ b/src/mess/drivers/hp9k.c
@@ -420,8 +420,7 @@ static MACHINE_CONFIG_START( hp9k, hp9k_state )
MCFG_SCREEN_UPDATE_DRIVER(hp9k_state, screen_update)
MCFG_GFXDECODE_ADD("gfxdecode", hp9k)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MCFG_MC6845_ADD( "mc6845", MC6845, "screen", XTAL_16MHz / 16, hp9k_mc6845_intf )
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/hprot1.c b/src/mess/drivers/hprot1.c
index 0eacb71d004..724c5fcfe71 100644
--- a/src/mess/drivers/hprot1.c
+++ b/src/mess/drivers/hprot1.c
@@ -63,10 +63,10 @@ public:
//DECLARE_WRITE8_MEMBER(henry_io_w);
DECLARE_READ8_MEMBER(henry_io_r);
DECLARE_DRIVER_INIT(hprot1);
+ DECLARE_PALETTE_INIT(hprot1);
private:
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
required_device<cpu_device> m_maincpu;
required_device<hd44780_device> m_lcdc;
};
@@ -210,10 +210,10 @@ WRITE8_MEMBER(hprot1_state::henry_io_w)
}
*/
-void hprot1_state::palette_init()
+PALETTE_INIT_MEMBER(hprot1_state, hprot1)
{
- palette_set_color(machine(), 0, rgb_t(138, 146, 148));
- palette_set_color(machine(), 1, rgb_t(92, 83, 88));
+ palette.set_pen_color(0, rgb_t(138, 146, 148));
+ palette.set_pen_color(1, rgb_t(92, 83, 88));
}
static const gfx_layout henry_prot_charlayout =
@@ -245,7 +245,8 @@ static MACHINE_CONFIG_START( hprot1, hprot1_state )
MCFG_SCREEN_SIZE(6*16, 9*2)
MCFG_SCREEN_VISIBLE_AREA(0, 6*16-1, 0, 9*2-1)
MCFG_DEFAULT_LAYOUT(layout_lcd)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(hprot1_state, hprot1)
MCFG_GFXDECODE_ADD("gfxdecode", hprot1)
MCFG_HD44780_ADD("hd44780")
diff --git a/src/mess/drivers/hx20.c b/src/mess/drivers/hx20.c
index 25adeaa0d2c..56ee88c4fc8 100644
--- a/src/mess/drivers/hx20.c
+++ b/src/mess/drivers/hx20.c
@@ -760,10 +760,10 @@ WRITE_LINE_MEMBER( hx20_state::rtc_irq_w )
// VIDEO
//**************************************************************************
-void hx20_state::palette_init()
+PALETTE_INIT_MEMBER(hx20_state, hx20)
{
- palette_set_color_rgb(machine(), 0, 0xa5, 0xad, 0xa5);
- palette_set_color_rgb(machine(), 1, 0x31, 0x39, 0x10);
+ palette.set_pen_color(0, 0xa5, 0xad, 0xa5);
+ palette.set_pen_color(1, 0x31, 0x39, 0x10);
}
@@ -832,7 +832,8 @@ static MACHINE_CONFIG_START( hx20, hx20_state )
MCFG_SCREEN_SIZE(120, 32)
MCFG_SCREEN_VISIBLE_AREA(0, 120-1, 0, 32-1)
MCFG_SCREEN_UPDATE_DRIVER(hx20_state, screen_update)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(hx20_state, hx20)
MCFG_UPD7227_ADD(UPD7227_0_TAG, 0, 0)
MCFG_UPD7227_ADD(UPD7227_1_TAG, 40, 0)
MCFG_UPD7227_ADD(UPD7227_2_TAG, 80, 0)
diff --git a/src/mess/drivers/ibm6580.c b/src/mess/drivers/ibm6580.c
index e614af7610e..c77b74573b5 100644
--- a/src/mess/drivers/ibm6580.c
+++ b/src/mess/drivers/ibm6580.c
@@ -28,7 +28,7 @@ public:
{ }
const UINT8 *m_p_chargen;
- void palette_init_ibm6580();
+ DECLARE_PALETTE_INIT(ibm6580);
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
private:
virtual void machine_reset();
@@ -59,9 +59,9 @@ UINT32 ibm6580_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
PALETTE_INIT_MEMBER( ibm6580_state, ibm6580 )
{
- palette_set_color_rgb( machine(), 0, 0, 0, 0 ); /* Black */
- palette_set_color_rgb( machine(), 1, 0, 255, 0 ); /* Full */
- palette_set_color_rgb( machine(), 2, 0, 128, 0 ); /* Dimmed */
+ palette.set_pen_color(0, 0, 0, 0 ); /* Black */
+ palette.set_pen_color(1, 0, 255, 0 ); /* Full */
+ palette.set_pen_color(2, 0, 128, 0 ); /* Dimmed */
}
void ibm6580_state::machine_reset()
@@ -82,8 +82,8 @@ static MACHINE_CONFIG_START( ibm6580, ibm6580_state )
MCFG_SCREEN_UPDATE_DRIVER(ibm6580_state, screen_update)
MCFG_SCREEN_SIZE(640, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 239)
- MCFG_PALETTE_LENGTH(3)
- MCFG_PALETTE_INIT_OVERRIDE(ibm6580_state, ibm6580)
+ MCFG_PALETTE_ADD("palette", 3)
+ MCFG_PALETTE_INIT_OWNER(ibm6580_state, ibm6580)
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mess/drivers/ie15.c b/src/mess/drivers/ie15.c
index d9a894c0296..8215a532880 100644
--- a/src/mess/drivers/ie15.c
+++ b/src/mess/drivers/ie15.c
@@ -66,7 +66,7 @@ public:
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(ie15);
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_hle(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(scanline_callback);
@@ -613,10 +613,10 @@ static GFXDECODE_START( ie15 )
GFXDECODE_ENTRY( "chargen", 0x0000, ie15_charlayout, 0, 1 )
GFXDECODE_END
-void ie15_state::palette_init()
+PALETTE_INIT_MEMBER(ie15_state, ie15)
{
- palette_set_color(machine(), 0, rgb_t::black); // black
- palette_set_color_rgb(machine(), 1, 0x00, 0xc0, 0x00); // green
+ palette.set_pen_color(0, rgb_t::black); // black
+ palette.set_pen_color(1, 0x00, 0xc0, 0x00); // green
}
static MACHINE_CONFIG_START( ie15, ie15_state )
@@ -634,7 +634,8 @@ static MACHINE_CONFIG_START( ie15, ie15_state )
IE15_HORZ_START+IE15_DISP_HORZ,IE15_TOTAL_VERT,IE15_VERT_START,
IE15_VERT_START+IE15_DISP_VERT);
MCFG_GFXDECODE_ADD("gfxdecode", ie15)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(ie15_state, ie15)
/* Devices */
MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
diff --git a/src/mess/drivers/if800.c b/src/mess/drivers/if800.c
index 4eab0039d7b..60393ba3cca 100644
--- a/src/mess/drivers/if800.c
+++ b/src/mess/drivers/if800.c
@@ -103,8 +103,8 @@ static MACHINE_CONFIG_START( if800, if800_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DEVICE("upd7220", upd7220_device, screen_update)
- MCFG_PALETTE_LENGTH(8)
-// MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD("palette", 8)
+// MCFG_PALETTE_INIT(black_and_white)
// MCFG_VIDEO_START_OVERRIDE(if800_state,if800)
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/interact.c b/src/mess/drivers/interact.c
index e6bac8e2d8b..40d39fe8c0e 100644
--- a/src/mess/drivers/interact.c
+++ b/src/mess/drivers/interact.c
@@ -155,7 +155,7 @@ static MACHINE_CONFIG_START( interact, interact_state )
MCFG_SCREEN_VISIBLE_AREA(0, 112, 0, 77)
MCFG_SCREEN_UPDATE_DRIVER(interact_state, screen_update_interact)
- MCFG_PALETTE_LENGTH(16) /* 8 colours, but only 4 at a time*/
+ MCFG_PALETTE_ADD("palette", 16) /* 8 colours, but only 4 at a time*/
MCFG_VIDEO_START_OVERRIDE(interact_state,hec2hrp)
/* sound hardware */
@@ -197,7 +197,7 @@ static MACHINE_CONFIG_START( hector1, interact_state )
MCFG_SCREEN_VISIBLE_AREA(0, 112, 0, 77)
MCFG_SCREEN_UPDATE_DRIVER(interact_state, screen_update_interact)
- MCFG_PALETTE_LENGTH(16) /* 8 colours, but only 4 at a time*/
+ MCFG_PALETTE_ADD("palette", 16) /* 8 colours, but only 4 at a time*/
MCFG_VIDEO_START_OVERRIDE(interact_state,hec2hrp)
/* sound hardware */
diff --git a/src/mess/drivers/intv.c b/src/mess/drivers/intv.c
index 02ff6b182b7..cd9df0cf431 100644
--- a/src/mess/drivers/intv.c
+++ b/src/mess/drivers/intv.c
@@ -84,29 +84,27 @@ static const unsigned char intv_colors[] =
0xB5, 0x1A, 0x58 /* PURPLE */
};
-void intv_state::palette_init()
+PALETTE_INIT_MEMBER(intv_state, intv)
{
int k = 0;
UINT8 r, g, b;
/* Two copies of everything (why?) */
- machine().colortable = colortable_alloc(machine(), 32);
-
for (int i = 0; i < 16; i++)
{
r = intv_colors[i * 3 + 0];
g = intv_colors[i * 3 + 1];
b = intv_colors[i * 3 + 2];
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
- colortable_palette_set_color(machine().colortable, i + 16, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
+ palette.set_indirect_color(i + 16, rgb_t(r, g, b));
}
for (int i = 0; i < 16; i++)
{
for (int j = 0; j < 16; j++)
{
- colortable_entry_set_value(machine().colortable, k++, i);
- colortable_entry_set_value(machine().colortable, k++, j);
+ palette.set_pen_indirect(k++, i);
+ palette.set_pen_indirect(k++, j);
}
}
@@ -114,8 +112,8 @@ void intv_state::palette_init()
{
for (int j = 16; j < 32; j++)
{
- colortable_entry_set_value(machine().colortable, k++, i);
- colortable_entry_set_value(machine().colortable, k++, j);
+ palette.set_pen_indirect(k++, i);
+ palette.set_pen_indirect(k++, j);
}
}
}
@@ -826,7 +824,8 @@ static MACHINE_CONFIG_START( intv, intv_state )
MCFG_SCREEN_SIZE((STIC_OVERSCAN_LEFT_WIDTH+STIC_BACKTAB_WIDTH*STIC_CARD_WIDTH-1+STIC_OVERSCAN_RIGHT_WIDTH)*STIC_X_SCALE*INTV_X_SCALE, (STIC_OVERSCAN_TOP_HEIGHT+STIC_BACKTAB_HEIGHT*STIC_CARD_HEIGHT+STIC_OVERSCAN_BOTTOM_HEIGHT)*STIC_Y_SCALE*INTV_Y_SCALE)
MCFG_SCREEN_VISIBLE_AREA(0, (STIC_OVERSCAN_LEFT_WIDTH+STIC_BACKTAB_WIDTH*STIC_CARD_WIDTH-1+STIC_OVERSCAN_RIGHT_WIDTH)*STIC_X_SCALE*INTV_X_SCALE-1, 0, (STIC_OVERSCAN_TOP_HEIGHT+STIC_BACKTAB_HEIGHT*STIC_CARD_HEIGHT+STIC_OVERSCAN_BOTTOM_HEIGHT)*STIC_Y_SCALE*INTV_Y_SCALE-1)
- MCFG_PALETTE_LENGTH(0x400)
+ MCFG_PALETTE_ADD("palette", 0x400)
+ MCFG_PALETTE_INIT_OWNER(intv_state, intv)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -879,6 +878,9 @@ static MACHINE_CONFIG_DERIVED( intvkbd, intv )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", intvkbd)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(intv_state, intv)
+
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_SIZE((STIC_OVERSCAN_LEFT_WIDTH+STIC_BACKTAB_WIDTH*STIC_CARD_WIDTH-1+STIC_OVERSCAN_RIGHT_WIDTH)*STIC_X_SCALE*INTVKBD_X_SCALE, (STIC_OVERSCAN_TOP_HEIGHT+STIC_BACKTAB_HEIGHT*STIC_CARD_HEIGHT+STIC_OVERSCAN_BOTTOM_HEIGHT)*STIC_Y_SCALE*INTVKBD_Y_SCALE)
MCFG_SCREEN_VISIBLE_AREA(0, (STIC_OVERSCAN_LEFT_WIDTH+STIC_BACKTAB_WIDTH*STIC_CARD_WIDTH-1+STIC_OVERSCAN_RIGHT_WIDTH)*STIC_X_SCALE*INTVKBD_X_SCALE-1, 0, (STIC_OVERSCAN_TOP_HEIGHT+STIC_BACKTAB_HEIGHT*STIC_CARD_HEIGHT+STIC_OVERSCAN_BOTTOM_HEIGHT)*STIC_Y_SCALE*INTVKBD_Y_SCALE-1)
diff --git a/src/mess/drivers/ip20.c b/src/mess/drivers/ip20.c
index 376fbc56db8..04a6770f4b8 100644
--- a/src/mess/drivers/ip20.c
+++ b/src/mess/drivers/ip20.c
@@ -603,7 +603,7 @@ static MACHINE_CONFIG_START( ip204415, ip20_state )
MCFG_SCREEN_VISIBLE_AREA(0, 799, 0, 599)
MCFG_SCREEN_UPDATE_DRIVER(ip20_state, screen_update_ip204415)
- MCFG_PALETTE_LENGTH(65536)
+ MCFG_PALETTE_ADD("palette", 65536)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/ip22.c b/src/mess/drivers/ip22.c
index 51d5c9615a0..82a50e08c24 100644
--- a/src/mess/drivers/ip22.c
+++ b/src/mess/drivers/ip22.c
@@ -1624,7 +1624,7 @@ static MACHINE_CONFIG_START( ip225015, ip22_state )
MCFG_SCREEN_VISIBLE_AREA(0, 1279, 0, 1023)
MCFG_SCREEN_UPDATE_DEVICE("newport", newport_video_device, screen_update)
- MCFG_PALETTE_LENGTH(65536)
+ MCFG_PALETTE_ADD("palette", 65536)
MCFG_NEWPORT_ADD("newport")
diff --git a/src/mess/drivers/ipds.c b/src/mess/drivers/ipds.c
index 7ef475023ba..1ec7b32140e 100644
--- a/src/mess/drivers/ipds.c
+++ b/src/mess/drivers/ipds.c
@@ -153,8 +153,7 @@ static MACHINE_CONFIG_START( ipds, ipds_state )
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_GFXDECODE_ADD("gfxdecode", ipds)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, monochrome_green)
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
MCFG_I8275_ADD ( "i8275", ipds_i8275_interface)
MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
diff --git a/src/mess/drivers/iq151.c b/src/mess/drivers/iq151.c
index ed90ef1d707..ff53a8ca15d 100644
--- a/src/mess/drivers/iq151.c
+++ b/src/mess/drivers/iq151.c
@@ -433,8 +433,7 @@ static MACHINE_CONFIG_START( iq151, iq151_state )
MCFG_SCREEN_UPDATE_DRIVER(iq151_state, screen_update)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 0, 32*8-1)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, monochrome_green)
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/irisha.c b/src/mess/drivers/irisha.c
index a8c46fc1203..469be379702 100644
--- a/src/mess/drivers/irisha.c
+++ b/src/mess/drivers/irisha.c
@@ -407,8 +407,7 @@ static MACHINE_CONFIG_START( irisha, irisha_state )
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
MCFG_SCREEN_UPDATE_DRIVER(irisha_state, screen_update_irisha)
MCFG_GFXDECODE_ADD("gfxdecode", irisha)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/itt3030.c b/src/mess/drivers/itt3030.c
index f7d05bfcff6..3012adab916 100644
--- a/src/mess/drivers/itt3030.c
+++ b/src/mess/drivers/itt3030.c
@@ -360,7 +360,7 @@ UINT32 itt3030_state::screen_update( screen_device &screen, bitmap_ind16 &bitmap
for(int x = 0; x < 80; x++ )
{
UINT8 code = m_vram[x + y*128];
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, code , 0, 0,0, x*8,y*16);
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, code , 0, 0,0, x*8,y*16);
}
}
@@ -626,8 +626,7 @@ static MACHINE_CONFIG_START( itt3030, itt3030_state )
MCFG_GFXDECODE_ADD("gfxdecode", itt3030)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* internal ram */
MCFG_RAM_ADD("mainram")
diff --git a/src/mess/drivers/jonos.c b/src/mess/drivers/jonos.c
index 61722e9b53d..1721d470f45 100644
--- a/src/mess/drivers/jonos.c
+++ b/src/mess/drivers/jonos.c
@@ -131,8 +131,7 @@ static MACHINE_CONFIG_START( jonos, jonos_state )
MCFG_SCREEN_SIZE(640, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 299)
MCFG_GFXDECODE_ADD("gfxdecode", jonos)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
DRIVER_INIT_MEMBER(jonos_state,jonos)
diff --git a/src/mess/drivers/jr100.c b/src/mess/drivers/jr100.c
index 4b85f7a806c..d7d1f424866 100644
--- a/src/mess/drivers/jr100.c
+++ b/src/mess/drivers/jr100.c
@@ -385,8 +385,7 @@ static MACHINE_CONFIG_START( jr100, jr100_state )
MCFG_SCREEN_UPDATE_DRIVER(jr100_state, screen_update_jr100)
MCFG_GFXDECODE_ADD("gfxdecode", jr100)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MCFG_DEVICE_ADD("via", VIA6522, XTAL_14_31818MHz / 16)
MCFG_VIA6522_READPB_HANDLER(READ8(jr100_state,jr100_via_read_b))
diff --git a/src/mess/drivers/jr200.c b/src/mess/drivers/jr200.c
index 09e567842ea..cd84eea4767 100644
--- a/src/mess/drivers/jr200.c
+++ b/src/mess/drivers/jr200.c
@@ -69,7 +69,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(jr200);
UINT32 screen_update_jr200(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(timer_d_callback);
@@ -200,7 +200,7 @@ UINT32 jr200_state::screen_update_jr200(screen_device &screen, bitmap_ind16 &bit
pen = (gfx_data[(tile*8)+yi]>>(7-xi) & 1) ? (attr & 0x7) : ((attr & 0x38) >> 3);
}
- bitmap.pix16(y*8+yi+16, x*8+xi+16) = machine().pens[pen];
+ bitmap.pix16(y*8+yi+16, x*8+xi+16) = m_palette->pen(pen);
}
}
}
@@ -493,12 +493,12 @@ static INPUT_PORTS_START( jr200 )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("RIGHT CTRL") PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_MAMEKEY(RCONTROL))
INPUT_PORTS_END
-void jr200_state::palette_init()
+PALETTE_INIT_MEMBER(jr200_state, jr200)
{
int i;
for (i = 0; i < 8; i++)
- palette_set_color_rgb(machine(), i, pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 0));
+ palette.set_pen_color(i, pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 0));
}
static const gfx_layout tiles8x8_layout =
@@ -556,7 +556,8 @@ static MACHINE_CONFIG_START( jr200, jr200_state )
MCFG_SCREEN_UPDATE_DRIVER(jr200_state, screen_update_jr200)
MCFG_GFXDECODE_ADD("gfxdecode", jr200)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(jr200_state, jr200)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/jtc.c b/src/mess/drivers/jtc.c
index 9d980a79515..4d6486d4056 100644
--- a/src/mess/drivers/jtc.c
+++ b/src/mess/drivers/jtc.c
@@ -756,8 +756,7 @@ static MACHINE_CONFIG_DERIVED( jtc, basic )
MCFG_SCREEN_SIZE(64, 64)
MCFG_SCREEN_VISIBLE_AREA(0, 64-1, 0, 64-1)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
@@ -788,8 +787,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( jtces23, basic, jtces23_state )
MCFG_SCREEN_VISIBLE_AREA(0, 128-1, 0, 128-1)
MCFG_GFXDECODE_ADD("gfxdecode", jtces23)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
@@ -810,8 +808,8 @@ static MACHINE_CONFIG_DERIVED_CLASS( jtces40, basic, jtces40_state )
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 192-1)
MCFG_GFXDECODE_ADD("gfxdecode", jtces40)
- MCFG_PALETTE_LENGTH(16)
- MCFG_PALETTE_INIT_OVERRIDE(jtc_state,jtc_es40)
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(jtc_state,jtc_es40)
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
diff --git a/src/mess/drivers/juicebox.c b/src/mess/drivers/juicebox.c
index e4109406d5c..a47d106ab98 100644
--- a/src/mess/drivers/juicebox.c
+++ b/src/mess/drivers/juicebox.c
@@ -319,7 +319,7 @@ static MACHINE_CONFIG_START( juicebox, juicebox_state )
MCFG_CPU_ADD("maincpu", ARM7, 66000000)
MCFG_CPU_PROGRAM_MAP(juicebox_map)
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD("palette", 32768)
MCFG_SCREEN_ADD("screen", LCD)
MCFG_SCREEN_REFRESH_RATE(60)
diff --git a/src/mess/drivers/jupiter.c b/src/mess/drivers/jupiter.c
index 47fb5f0d241..6601c56edcc 100644
--- a/src/mess/drivers/jupiter.c
+++ b/src/mess/drivers/jupiter.c
@@ -289,8 +289,7 @@ static MACHINE_CONFIG_START( jupiter3, jupiter3_state )
MCFG_SCREEN_UPDATE_DRIVER(jupiter3_state, screen_update)
MCFG_SCREEN_SIZE(512, 320)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 320-1)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
// devices
MCFG_FD1771_ADD(INS1771N1_TAG, fdc_intf)
diff --git a/src/mess/drivers/k8915.c b/src/mess/drivers/k8915.c
index bba54b0e1b3..55d405d5205 100644
--- a/src/mess/drivers/k8915.c
+++ b/src/mess/drivers/k8915.c
@@ -167,8 +167,7 @@ static MACHINE_CONFIG_START( k8915, k8915_state )
MCFG_SCREEN_UPDATE_DRIVER(k8915_state, screen_update)
MCFG_SCREEN_SIZE(640, 250)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 249)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, monochrome_green)
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/kaypro.c b/src/mess/drivers/kaypro.c
index 40d03eb17cd..fc7899bcc31 100644
--- a/src/mess/drivers/kaypro.c
+++ b/src/mess/drivers/kaypro.c
@@ -210,8 +210,7 @@ static MACHINE_CONFIG_START( kayproii, kaypro_state )
MCFG_VIDEO_START_OVERRIDE(kaypro_state, kaypro )
MCFG_SCREEN_UPDATE_DRIVER(kaypro_state, screen_update_kayproii)
MCFG_GFXDECODE_ADD("gfxdecode", kayproii)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, monochrome_green)
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -265,8 +264,8 @@ static MACHINE_CONFIG_START( kaypro2x, kaypro_state )
MCFG_VIDEO_START_OVERRIDE(kaypro_state, kaypro )
MCFG_SCREEN_UPDATE_DRIVER(kaypro_state, screen_update_kaypro2x)
MCFG_GFXDECODE_ADD("gfxdecode", kaypro2x)
- MCFG_PALETTE_LENGTH(3)
- MCFG_PALETTE_INIT_OVERRIDE(kaypro_state,kaypro)
+ MCFG_PALETTE_ADD("palette", 3)
+ MCFG_PALETTE_INIT_OWNER(kaypro_state,kaypro)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/kc.c b/src/mess/drivers/kc.c
index bd5c333d67d..3201cfffdad 100644
--- a/src/mess/drivers/kc.c
+++ b/src/mess/drivers/kc.c
@@ -144,8 +144,8 @@ static MACHINE_CONFIG_START( kc85_3, kc_state )
MCFG_SCREEN_UPDATE_DRIVER(kc_state, screen_update)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kc_state, kc_scanline, "screen", 0, 1)
- MCFG_PALETTE_LENGTH(KC85_PALETTE_SIZE)
- MCFG_PALETTE_INIT_OVERRIDE(kc_state, kc85 )
+ MCFG_PALETTE_ADD("palette", KC85_PALETTE_SIZE)
+ MCFG_PALETTE_INIT_OWNER(kc_state, kc85 )
MCFG_KC_KEYBOARD_ADD("keyboard", XTAL_4MHz, kc85_keyboard_interface)
@@ -196,8 +196,8 @@ static MACHINE_CONFIG_START( kc85_4, kc85_4_state )
MCFG_SCREEN_UPDATE_DRIVER(kc85_4_state, screen_update)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kc85_4_state, kc_scanline, "screen", 0, 1)
- MCFG_PALETTE_LENGTH(KC85_PALETTE_SIZE)
- MCFG_PALETTE_INIT_OVERRIDE(kc85_4_state, kc85 )
+ MCFG_PALETTE_ADD("palette", KC85_PALETTE_SIZE)
+ MCFG_PALETTE_INIT_OWNER(kc85_4_state, kc85 )
MCFG_KC_KEYBOARD_ADD("keyboard", XTAL_4MHz, kc85_keyboard_interface)
diff --git a/src/mess/drivers/konin.c b/src/mess/drivers/konin.c
index cef7bb4dc02..a47a2158161 100644
--- a/src/mess/drivers/konin.c
+++ b/src/mess/drivers/konin.c
@@ -89,8 +89,7 @@ static MACHINE_CONFIG_START( konin, konin_state )
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(konin_state, screen_update_konin)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mess/drivers/korgm1.c b/src/mess/drivers/korgm1.c
index b0145389798..00c96dfcb5d 100644
--- a/src/mess/drivers/korgm1.c
+++ b/src/mess/drivers/korgm1.c
@@ -157,7 +157,7 @@ void korgm1_state::machine_reset()
}
-void korgm1_state::palette_init()
+PALETTE_INIT_MEMBER(korgm1_state, korgm1)
{
}
@@ -179,7 +179,7 @@ static MACHINE_CONFIG_START( korgm1, korgm1_state )
MCFG_GFXDECODE_ADD("gfxdecode", korgm1)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/kramermc.c b/src/mess/drivers/kramermc.c
index ba8a0fa19de..10c3d39b818 100644
--- a/src/mess/drivers/kramermc.c
+++ b/src/mess/drivers/kramermc.c
@@ -120,10 +120,9 @@ static MACHINE_CONFIG_START( kramermc, kramermc_state )
MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 16*8-1)
MCFG_SCREEN_UPDATE_DRIVER(kramermc_state, screen_update_kramermc)
- MCFG_GFXDECODE_ADD("gfxdecode", kramermc )
+ MCFG_GFXDECODE_ADD("gfxdecode", kramermc )
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/lcmate2.c b/src/mess/drivers/lcmate2.c
index 0f9cf9a9b01..d53bced8526 100644
--- a/src/mess/drivers/lcmate2.c
+++ b/src/mess/drivers/lcmate2.c
@@ -59,7 +59,7 @@ public:
DECLARE_READ8_MEMBER( key_r );
DECLARE_WRITE8_MEMBER( speaker_w );
DECLARE_WRITE8_MEMBER( bankswitch_w );
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(lcmate2);
};
WRITE8_MEMBER( lcmate2_state::speaker_w )
@@ -194,10 +194,10 @@ static INPUT_PORTS_START( lcmate2 )
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_UNUSED
INPUT_PORTS_END
-void lcmate2_state::palette_init()
+PALETTE_INIT_MEMBER(lcmate2_state, lcmate2)
{
- palette_set_color(machine(), 0, rgb_t(138, 146, 148));
- palette_set_color(machine(), 1, rgb_t(92, 83, 88));
+ palette.set_pen_color(0, rgb_t(138, 146, 148));
+ palette.set_pen_color(1, rgb_t(92, 83, 88));
}
void lcmate2_state::machine_start()
@@ -240,7 +240,8 @@ static MACHINE_CONFIG_START( lcmate2, lcmate2_state )
MCFG_SCREEN_UPDATE_DEVICE("hd44780", hd44780_device, screen_update)
MCFG_SCREEN_SIZE(120, 18)
MCFG_SCREEN_VISIBLE_AREA(0, 120-1, 0, 18-1)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(lcmate2_state, lcmate2)
MCFG_DEFAULT_LAYOUT(layout_lcd)
MCFG_GFXDECODE_ADD("gfxdecode", lcmate2)
diff --git a/src/mess/drivers/lisa.c b/src/mess/drivers/lisa.c
index 3f08c546c6b..eeb116acc64 100644
--- a/src/mess/drivers/lisa.c
+++ b/src/mess/drivers/lisa.c
@@ -152,8 +152,7 @@ static MACHINE_CONFIG_START( lisa, lisa_state )
MCFG_SCREEN_VISIBLE_AREA(0, 720-1, 0, 364-1)
MCFG_SCREEN_UPDATE_DRIVER(lisa_state, screen_update_lisa)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
diff --git a/src/mess/drivers/llc.c b/src/mess/drivers/llc.c
index 39573968c98..f6475f15514 100644
--- a/src/mess/drivers/llc.c
+++ b/src/mess/drivers/llc.c
@@ -217,8 +217,7 @@ static MACHINE_CONFIG_START( llc1, llc_state )
MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 16*8-1)
MCFG_SCREEN_UPDATE_DRIVER(llc_state, screen_update_llc1)
MCFG_GFXDECODE_ADD("gfxdecode", llc1)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MCFG_DEFAULT_LAYOUT(layout_llc1)
MCFG_Z80PIO_ADD( "z80pio1", XTAL_3MHz, llc1_z80pio1_intf )
@@ -244,8 +243,7 @@ static MACHINE_CONFIG_START( llc2, llc_state )
MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(llc_state, screen_update_llc2)
MCFG_GFXDECODE_ADD("gfxdecode", llc2)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/lola8a.c b/src/mess/drivers/lola8a.c
index 6ad1b371811..8a35a4a6ecb 100644
--- a/src/mess/drivers/lola8a.c
+++ b/src/mess/drivers/lola8a.c
@@ -41,7 +41,7 @@ public:
required_device<cpu_device> m_maincpu;
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(lola8a);
virtual void machine_reset() { m_maincpu->set_pc(0x8000); }
DECLARE_READ8_MEMBER(lola8a_port_a_r);
@@ -184,12 +184,12 @@ static INPUT_PORTS_START( lola8a )
INPUT_PORTS_END
-void lola8a_state::palette_init()
+PALETTE_INIT_MEMBER(lola8a_state, lola8a)
{
int i;
for(i=0;i<8;i++) {
- palette_set_color_rgb(machine(), i, pal1bit(i >> 1),pal1bit(i >> 2),pal1bit(i >> 0));
+ palette.set_pen_color(i, pal1bit(i >> 1),pal1bit(i >> 2),pal1bit(i >> 0));
}
}
@@ -300,7 +300,8 @@ static MACHINE_CONFIG_START( lola8a, lola8a_state )
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_MC6845_ADD(HD46505SP_TAG, HD6845, "screen", XTAL_8MHz / 8, hd46505sp_intf) // HD6845 == HD46505S
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(lola8a_state, lola8a)
/* Cassette */
MCFG_CASSETTE_ADD( "cassette", default_cassette_interface )
diff --git a/src/mess/drivers/lviv.c b/src/mess/drivers/lviv.c
index e1ba77fed25..b88fc17a612 100644
--- a/src/mess/drivers/lviv.c
+++ b/src/mess/drivers/lviv.c
@@ -447,7 +447,8 @@ static MACHINE_CONFIG_START( lviv, lviv_state )
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(lviv_state, screen_update_lviv)
- MCFG_PALETTE_LENGTH(sizeof (lviv_palette) / 3)
+ MCFG_PALETTE_ADD("palette", sizeof (lviv_palette) / 3)
+ MCFG_PALETTE_INIT_OWNER(lviv_state, lviv)
/* sound hardware */
diff --git a/src/mess/drivers/lynx.c b/src/mess/drivers/lynx.c
index cf70ecd2c10..2ed2030acae 100644
--- a/src/mess/drivers/lynx.c
+++ b/src/mess/drivers/lynx.c
@@ -40,13 +40,13 @@ static INPUT_PORTS_START( lynx )
// power on and power off buttons
INPUT_PORTS_END
-void lynx_state::palette_init()
+PALETTE_INIT_MEMBER(lynx_state, lynx)
{
int i;
for (i=0; i< 0x1000; i++)
{
- palette_set_color_rgb(machine(), i,
+ palette.set_pen_color(i,
((i >> 0) & 0x0f) * 0x11,
((i >> 4) & 0x0f) * 0x11,
((i >> 8) & 0x0f) * 0x11);
@@ -87,7 +87,8 @@ static MACHINE_CONFIG_START( lynx, lynx_state )
MCFG_SCREEN_VISIBLE_AREA(0, 160-1, 0, 102-1)
MCFG_DEFAULT_LAYOUT(layout_lynx)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_INIT_OWNER(lynx_state, lynx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/m20.c b/src/mess/drivers/m20.c
index ea27d08506a..4b3229caa8c 100644
--- a/src/mess/drivers/m20.c
+++ b/src/mess/drivers/m20.c
@@ -129,7 +129,7 @@ UINT32 m20_state::screen_update_m20(screen_device &screen, bitmap_rgb32 &bitmap,
UINT8 pen;
UINT32 count;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
count = (0);
@@ -142,7 +142,7 @@ UINT32 m20_state::screen_update_m20(screen_device &screen, bitmap_rgb32 &bitmap,
pen = (m_p_videoram[count]) >> (15 - i) & 1;
if (screen.visible_area().contains(x + i, y))
- bitmap.pix32(y, x + i) = machine().pens[pen];
+ bitmap.pix32(y, x + i) = m_palette->pen(pen);
}
count++;
@@ -935,8 +935,7 @@ static MACHINE_CONFIG_START( m20, m20_state )
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(m20_state, screen_update_m20)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* Devices */
MCFG_FD1797x_ADD("fd1797", 1000000)
diff --git a/src/mess/drivers/m79152pc.c b/src/mess/drivers/m79152pc.c
index d738d4b5d82..c54629b210d 100644
--- a/src/mess/drivers/m79152pc.c
+++ b/src/mess/drivers/m79152pc.c
@@ -123,8 +123,7 @@ static MACHINE_CONFIG_START( m79152pc, m79152pc_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 300-1)
MCFG_SCREEN_UPDATE_DRIVER(m79152pc_state, screen_update_m79152pc)
MCFG_GFXDECODE_ADD("gfxdecode", m79152pc)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mess/drivers/mac.c b/src/mess/drivers/mac.c
index de2cb1c7c61..d225011faf8 100644
--- a/src/mess/drivers/mac.c
+++ b/src/mess/drivers/mac.c
@@ -135,14 +135,14 @@ WRITE32_MEMBER( mac_state::rbv_ramdac_w )
// Color Classic has no MONTYPE so the default gets us 512x384, which is right
if ((m_montype ? m_montype->read() : 2) == 1)
{
- palette_set_color(space.machine(), m_rbv_clutoffs, rgb_t(m_rbv_colors[2], m_rbv_colors[2], m_rbv_colors[2]));
+ m_palette->set_pen_color(m_rbv_clutoffs, rgb_t(m_rbv_colors[2], m_rbv_colors[2], m_rbv_colors[2]));
m_rbv_palette[m_rbv_clutoffs] = rgb_t(m_rbv_colors[2], m_rbv_colors[2], m_rbv_colors[2]);
m_rbv_clutoffs++;
m_rbv_count = 0;
}
else
{
- palette_set_color(space.machine(), m_rbv_clutoffs, rgb_t(m_rbv_colors[0], m_rbv_colors[1], m_rbv_colors[2]));
+ m_palette->set_pen_color(m_rbv_clutoffs, rgb_t(m_rbv_colors[0], m_rbv_colors[1], m_rbv_colors[2]));
m_rbv_palette[m_rbv_clutoffs] = rgb_t(m_rbv_colors[0], m_rbv_colors[1], m_rbv_colors[2]);
m_rbv_clutoffs++;
m_rbv_count = 0;
@@ -171,14 +171,14 @@ WRITE32_MEMBER( mac_state::ariel_ramdac_w ) // this is for the "Ariel" style RAM
// Color Classic has no MONTYPE so the default gets us 512x384, which is right
if ((m_montype ? m_montype->read() : 2) == 1)
{
- palette_set_color(space.machine(), m_rbv_clutoffs, rgb_t(m_rbv_colors[2], m_rbv_colors[2], m_rbv_colors[2]));
+ m_palette->set_pen_color(m_rbv_clutoffs, rgb_t(m_rbv_colors[2], m_rbv_colors[2], m_rbv_colors[2]));
m_rbv_palette[m_rbv_clutoffs] = rgb_t(m_rbv_colors[2], m_rbv_colors[2], m_rbv_colors[2]);
m_rbv_clutoffs++;
m_rbv_count = 0;
}
else
{
- palette_set_color(space.machine(), m_rbv_clutoffs, rgb_t(m_rbv_colors[0], m_rbv_colors[1], m_rbv_colors[2]));
+ m_palette->set_pen_color(m_rbv_clutoffs, rgb_t(m_rbv_colors[0], m_rbv_colors[1], m_rbv_colors[2]));
m_rbv_palette[m_rbv_clutoffs] = rgb_t(m_rbv_colors[0], m_rbv_colors[1], m_rbv_colors[2]);
m_rbv_clutoffs++;
m_rbv_count = 0;
@@ -934,8 +934,8 @@ static MACHINE_CONFIG_START( mac512ke, mac_state )
MCFG_SCREEN_VISIBLE_AREA(0, MAC_H_VIS-1, 0, MAC_V_VIS-1)
MCFG_SCREEN_UPDATE_DRIVER(mac_state, screen_update_mac)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(mac_state,mac)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(mac_state,mac)
MCFG_VIDEO_START_OVERRIDE(mac_state,mac)
@@ -1059,8 +1059,8 @@ static MACHINE_CONFIG_START( macprtb, mac_state )
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 399)
MCFG_SCREEN_UPDATE_DRIVER(mac_state, screen_update_macprtb)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(mac_state,mac)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(mac_state,mac)
MCFG_VIDEO_START_OVERRIDE(mac_state,macprtb)
@@ -1104,7 +1104,7 @@ static MACHINE_CONFIG_START( macii, mac_state )
MCFG_CPU_ADD("maincpu", M68020PMMU, C15M)
MCFG_CPU_PROGRAM_MAP(macii_map)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -1219,7 +1219,8 @@ static MACHINE_CONFIG_DERIVED( maclc, macii )
MCFG_CPU_PROGRAM_MAP(maclc_map)
MCFG_CPU_VBLANK_INT_DRIVER(MAC_SCREEN_NAME, mac_state, mac_rbv_vbl)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_VIDEO_START_OVERRIDE(mac_state,macv8)
MCFG_VIDEO_RESET_OVERRIDE(mac_state,macrbv)
@@ -1411,8 +1412,8 @@ static MACHINE_CONFIG_START( macse30, mac_state )
MCFG_SCREEN_VISIBLE_AREA(0, MAC_H_VIS-1, 0, MAC_V_VIS-1)
MCFG_SCREEN_UPDATE_DRIVER(mac_state, screen_update_macse30)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(mac_state,mac)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(mac_state,mac)
MCFG_VIDEO_START_OVERRIDE(mac_state,mac)
@@ -1475,8 +1476,8 @@ static MACHINE_CONFIG_START( macpb140, mac_state )
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 399)
MCFG_SCREEN_UPDATE_DRIVER(mac_state, screen_update_macpb140)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(mac_state,mac)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(mac_state,mac)
MCFG_VIDEO_START_OVERRIDE(mac_state,macprtb)
@@ -1555,8 +1556,8 @@ static MACHINE_CONFIG_START( macpb160, mac_state )
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 399)
MCFG_SCREEN_UPDATE_DRIVER(mac_state, screen_update_macpb160)
- MCFG_PALETTE_LENGTH(16)
- MCFG_PALETTE_INIT_OVERRIDE(mac_state,macgsc)
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(mac_state,macgsc)
MCFG_VIDEO_START_OVERRIDE(mac_state,macprtb)
@@ -1667,7 +1668,8 @@ static MACHINE_CONFIG_DERIVED( maciici, macii )
MCFG_CPU_PROGRAM_MAP(maciici_map)
MCFG_CPU_VBLANK_INT_DRIVER(MAC_SCREEN_NAME, mac_state, mac_rbv_vbl)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 256)
// IIci only has slots c/d/e
MCFG_NUBUS_SLOT_REMOVE("nb9")
@@ -1696,7 +1698,8 @@ static MACHINE_CONFIG_DERIVED( maciisi, macii )
MCFG_CPU_PROGRAM_MAP(maciici_map)
MCFG_CPU_VBLANK_INT_DRIVER(MAC_SCREEN_NAME, mac_state, mac_rbv_vbl)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_NUBUS_SLOT_REMOVE("nb9")
MCFG_NUBUS_SLOT_REMOVE("nba")
@@ -1747,7 +1750,7 @@ static MACHINE_CONFIG_START( pwrmac, mac_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(mac_state, screen_update_macrbv)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
MCFG_VIDEO_START_OVERRIDE(mac_state,macsonora)
MCFG_VIDEO_RESET_OVERRIDE(mac_state,macrbv)
@@ -1811,7 +1814,7 @@ static MACHINE_CONFIG_START( macqd700, mac_state )
MCFG_VIDEO_START_OVERRIDE(mac_state,macdafb)
MCFG_VIDEO_RESET_OVERRIDE(mac_state,macdafb)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mess/drivers/macpci.c b/src/mess/drivers/macpci.c
index 94f5edd49dd..af1e2e10ba1 100644
--- a/src/mess/drivers/macpci.c
+++ b/src/mess/drivers/macpci.c
@@ -105,8 +105,7 @@ static MACHINE_CONFIG_START( pippin, macpci_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(macpci_state, screen_update_pippin)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mess/drivers/mbc200.c b/src/mess/drivers/mbc200.c
index 1cd82c5958a..95f12ffb90f 100644
--- a/src/mess/drivers/mbc200.c
+++ b/src/mess/drivers/mbc200.c
@@ -175,7 +175,7 @@ UINT32 mbc200_state::screen_update_mbc200(screen_device &screen, bitmap_ind16 &b
dot = (m_vram[count] >> (7-xi)) & 1;
if(y*4+yi < 400 && x*8+xi < 640) /* TODO: safety check */
- bitmap.pix16(y*4+yi, x*8+xi) = machine().pens[dot];
+ bitmap.pix16(y*4+yi, x*8+xi) = m_palette->pen(dot);
}
count++;
@@ -270,8 +270,7 @@ static MACHINE_CONFIG_START( mbc200, mbc200_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 400-1)
MCFG_SCREEN_UPDATE_DRIVER(mbc200_state, screen_update_mbc200)
MCFG_GFXDECODE_ADD("gfxdecode", mbc200)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MCFG_MC6845_ADD("crtc", H46505, "screen", XTAL_8MHz / 4, mbc200_crtc) // HD46505SP
diff --git a/src/mess/drivers/mbc55x.c b/src/mess/drivers/mbc55x.c
index c274b2e9978..0d1ccfe1312 100644
--- a/src/mess/drivers/mbc55x.c
+++ b/src/mess/drivers/mbc55x.c
@@ -217,14 +217,14 @@ static INPUT_PORTS_START( mbc55x )
INPUT_PORTS_END
-void mbc55x_state::palette_init()
+PALETTE_INIT_MEMBER(mbc55x_state, mbc55x)
{
int colourno;
logerror("initializing palette\n");
for ( colourno = 0; colourno < SCREEN_NO_COLOURS; colourno++ )
- palette_set_color_rgb(machine(), colourno, mbc55x_palette[colourno][RED], mbc55x_palette[colourno][GREEN], mbc55x_palette[colourno][BLUE]);
+ palette.set_pen_color(colourno, mbc55x_palette[colourno][RED], mbc55x_palette[colourno][GREEN], mbc55x_palette[colourno][BLUE]);
}
@@ -241,8 +241,8 @@ static MACHINE_CONFIG_START( mbc55x, mbc55x_state )
MCFG_SCREEN_UPDATE_DEVICE(VID_MC6845_NAME, mc6845_device, screen_update)
MCFG_SCREEN_VBLANK_DRIVER(mbc55x_state, screen_eof_mbc55x)
- MCFG_PALETTE_LENGTH(SCREEN_NO_COLOURS * 3)
-
+ MCFG_PALETTE_ADD("palette", SCREEN_NO_COLOURS * 3)
+ MCFG_PALETTE_INIT_OWNER(mbc55x_state, mbc55x)
// MCFG_SCREEN_SIZE(650, 260)
// MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 249)
diff --git a/src/mess/drivers/mbee.c b/src/mess/drivers/mbee.c
index d41975bfbad..decf02c7f55 100644
--- a/src/mess/drivers/mbee.c
+++ b/src/mess/drivers/mbee.c
@@ -749,8 +749,7 @@ static MACHINE_CONFIG_START( mbee, mbee_state )
MCFG_SCREEN_UPDATE_DRIVER(mbee_state, screen_update_mbee)
MCFG_GFXDECODE_ADD("gfxdecode", mbee)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, monochrome_amber) // usually sold with amber or green monitor
+ MCFG_PALETTE_ADD_MONOCHROME_AMBER("palette") // usually sold with amber or green monitor
MCFG_VIDEO_START_OVERRIDE(mbee_state,mbee)
@@ -794,8 +793,9 @@ static MACHINE_CONFIG_START( mbeeic, mbee_state )
MCFG_SCREEN_UPDATE_DRIVER(mbee_state, screen_update_mbee)
MCFG_GFXDECODE_ADD("gfxdecode", mbeeic)
- MCFG_PALETTE_LENGTH(96)
- MCFG_PALETTE_INIT_OVERRIDE(mbee_state,mbeeic)
+
+ MCFG_PALETTE_ADD("palette", 96)
+ MCFG_PALETTE_INIT_OWNER(mbee_state,mbeeic)
MCFG_VIDEO_START_OVERRIDE(mbee_state,mbeeic)
@@ -831,7 +831,8 @@ static MACHINE_CONFIG_DERIVED( mbeepc85, mbeeic )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( mbeepc85b, mbeepc85 )
- MCFG_PALETTE_INIT_OVERRIDE(mbee_state,mbeepc85b)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(mbee_state,mbeepc85b)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( mbeeppc, mbeeic )
@@ -840,8 +841,9 @@ static MACHINE_CONFIG_DERIVED( mbeeppc, mbeeic )
MCFG_CPU_IO_MAP(mbeeppc_io)
MCFG_VIDEO_START_OVERRIDE(mbee_state,mbeeppc)
MCFG_GFXDECODE_MODIFY("gfxdecode", mbeeppc)
- MCFG_PALETTE_LENGTH(16)
- MCFG_PALETTE_INIT_OVERRIDE(mbee_state,mbeeppc)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(mbee_state,mbeeppc)
MCFG_DEVICE_REMOVE("crtc")
MCFG_MC6845_ADD("crtc", SY6545_1, "screen", XTAL_13_5MHz / 8, mbeeppc_crtc)
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/mc10.c b/src/mess/drivers/mc10.c
index 548e5261d6d..8881f623a6c 100644
--- a/src/mess/drivers/mc10.c
+++ b/src/mess/drivers/mc10.c
@@ -541,7 +541,7 @@ static MACHINE_CONFIG_START( alice32, mc10_state )
MCFG_SCREEN_UPDATE_DEVICE("ef9345", ef9345_device, screen_update)
MCFG_SCREEN_SIZE(336, 270)
MCFG_SCREEN_VISIBLE_AREA(00, 336-1, 00, 270-1)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
MCFG_EF9345_ADD("ef9345", "screen")
MCFG_TIMER_DRIVER_ADD_SCANLINE("alice32_sl", mc10_state, alice32_scanline, "screen", 0, 10)
diff --git a/src/mess/drivers/mc80.c b/src/mess/drivers/mc80.c
index fbcd9d464ef..f0ffa655137 100644
--- a/src/mess/drivers/mc80.c
+++ b/src/mess/drivers/mc80.c
@@ -173,8 +173,7 @@ static MACHINE_CONFIG_START( mc8020, mc80_state )
MCFG_SCREEN_VISIBLE_AREA(0, 32*6-1, 0, 16*8-1)
MCFG_VIDEO_START_OVERRIDE(mc80_state,mc8020)
MCFG_SCREEN_UPDATE_DRIVER(mc80_state, screen_update_mc8020)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* Devices */
MCFG_Z80PIO_ADD( "z80pio", XTAL_2_4576MHz, mc8020_z80pio_intf )
@@ -199,8 +198,7 @@ static MACHINE_CONFIG_START( mc8030, mc80_state )
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
MCFG_VIDEO_START_OVERRIDE(mc80_state,mc8030)
MCFG_SCREEN_UPDATE_DRIVER(mc80_state, screen_update_mc8030)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* Devices */
MCFG_Z80PIO_ADD( "zve_pio", XTAL_2_4576MHz, mc8030_zve_z80pio_intf )
diff --git a/src/mess/drivers/megadriv.c b/src/mess/drivers/megadriv.c
index 4d1aeda9726..3d8c2ad4a9c 100644
--- a/src/mess/drivers/megadriv.c
+++ b/src/mess/drivers/megadriv.c
@@ -504,6 +504,7 @@ static MACHINE_CONFIG_START( genesis_32x, md_cons_state )
MCFG_MACHINE_RESET_OVERRIDE( md_cons_state, ms_megadriv )
MCFG_DEVICE_ADD("sega32x", SEGA_32X_NTSC, 0)
+ MCFG_SEGA_32X_PALETTE("gen_vdp:palette")
// we need to remove and re-add the sound system because the balance is different
// due to MAME / MESS having severe issues if the dac output is > 0.40? (sound is corrupted even if DAC is slient?!)
@@ -537,6 +538,7 @@ static MACHINE_CONFIG_START( mdj_32x, md_cons_state )
MCFG_MACHINE_RESET_OVERRIDE( md_cons_state, ms_megadriv )
MCFG_DEVICE_ADD("sega32x", SEGA_32X_NTSC, 0)
+ MCFG_SEGA_32X_PALETTE("gen_vdp:palette")
// we need to remove and re-add the sound system because the balance is different
// due to MAME / MESS having severe issues if the dac output is > 0.40? (sound is corrupted even if DAC is slient?!)
@@ -570,6 +572,7 @@ static MACHINE_CONFIG_START( md_32x, md_cons_state )
MCFG_MACHINE_RESET_OVERRIDE( md_cons_state, ms_megadriv )
MCFG_DEVICE_ADD("sega32x", SEGA_32X_PAL, 0)
+ MCFG_SEGA_32X_PALETTE("gen_vdp:palette")
// we need to remove and re-add the sound system because the balance is different
// due to MAME / MESS having severe issues if the dac output is > 0.40? (sound is corrupted even if DAC is slient?!)
@@ -645,6 +648,7 @@ static MACHINE_CONFIG_START( genesis_scd, md_cons_state )
MCFG_SEGACD_GFXDECODE("gfxdecode")
MCFG_GFXDECODE_ADD("gfxdecode", empty)
+
MCFG_CDROM_ADD( "cdrom",scd_cdrom )
MCFG_SOFTWARE_LIST_ADD("cd_list","segacd")
diff --git a/src/mess/drivers/mes.c b/src/mess/drivers/mes.c
index e89e1bc8f63..5a9586eea84 100644
--- a/src/mess/drivers/mes.c
+++ b/src/mess/drivers/mes.c
@@ -116,8 +116,7 @@ static MACHINE_CONFIG_START( mes, mes_state )
MCFG_SCREEN_UPDATE_DRIVER(mes_state, screen_update)
MCFG_SCREEN_SIZE(640, 250)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 249)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/micronic.c b/src/mess/drivers/micronic.c
index d8bc980a50d..0c2807ec451 100644
--- a/src/mess/drivers/micronic.c
+++ b/src/mess/drivers/micronic.c
@@ -324,10 +324,10 @@ static NVRAM_HANDLER( micronic )
}
}
-void micronic_state::palette_init()
+PALETTE_INIT_MEMBER(micronic_state, micronic)
{
- palette_set_color(machine(), 0, rgb_t(138, 146, 148));
- palette_set_color(machine(), 1, rgb_t(92, 83, 88));
+ palette.set_pen_color(0, rgb_t(138, 146, 148));
+ palette.set_pen_color(1, rgb_t(92, 83, 88));
}
static HD61830_INTERFACE( lcdc_intf )
@@ -376,7 +376,8 @@ static MACHINE_CONFIG_START( micronic, micronic_state )
MCFG_DEFAULT_LAYOUT(layout_lcd)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(micronic_state, micronic)
MCFG_HD61830_ADD(HD61830_TAG, XTAL_4_9152MHz/2/2, lcdc_intf)
diff --git a/src/mess/drivers/microtan.c b/src/mess/drivers/microtan.c
index b49e18154d8..421b0c9ac75 100644
--- a/src/mess/drivers/microtan.c
+++ b/src/mess/drivers/microtan.c
@@ -230,9 +230,8 @@ static MACHINE_CONFIG_START( microtan, microtan_state )
MCFG_SCREEN_UPDATE_DRIVER(microtan_state, screen_update_microtan)
MCFG_GFXDECODE_ADD("gfxdecode", microtan)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/microvsn.c b/src/mess/drivers/microvsn.c
index 62b5cf71e40..ac56206472a 100644
--- a/src/mess/drivers/microvsn.c
+++ b/src/mess/drivers/microvsn.c
@@ -115,22 +115,22 @@ protected:
PALETTE_INIT_MEMBER(microvision_state,microvision)
{
- palette_set_color_rgb( machine(), 15, 0x00, 0x00, 0x00 );
- palette_set_color_rgb( machine(), 14, 0x11, 0x11, 0x11 );
- palette_set_color_rgb( machine(), 13, 0x22, 0x22, 0x22 );
- palette_set_color_rgb( machine(), 12, 0x33, 0x33, 0x33 );
- palette_set_color_rgb( machine(), 11, 0x44, 0x44, 0x44 );
- palette_set_color_rgb( machine(), 10, 0x55, 0x55, 0x55 );
- palette_set_color_rgb( machine(), 9, 0x66, 0x66, 0x66 );
- palette_set_color_rgb( machine(), 8, 0x77, 0x77, 0x77 );
- palette_set_color_rgb( machine(), 7, 0x88, 0x88, 0x88 );
- palette_set_color_rgb( machine(), 6, 0x99, 0x99, 0x99 );
- palette_set_color_rgb( machine(), 5, 0xaa, 0xaa, 0xaa );
- palette_set_color_rgb( machine(), 4, 0xbb, 0xbb, 0xbb );
- palette_set_color_rgb( machine(), 3, 0xcc, 0xcc, 0xcc );
- palette_set_color_rgb( machine(), 2, 0xdd, 0xdd, 0xdd );
- palette_set_color_rgb( machine(), 1, 0xee, 0xee, 0xee );
- palette_set_color_rgb( machine(), 0, 0xff, 0xff, 0xff );
+ palette.set_pen_color( 15, 0x00, 0x00, 0x00 );
+ palette.set_pen_color( 14, 0x11, 0x11, 0x11 );
+ palette.set_pen_color( 13, 0x22, 0x22, 0x22 );
+ palette.set_pen_color( 12, 0x33, 0x33, 0x33 );
+ palette.set_pen_color( 11, 0x44, 0x44, 0x44 );
+ palette.set_pen_color( 10, 0x55, 0x55, 0x55 );
+ palette.set_pen_color( 9, 0x66, 0x66, 0x66 );
+ palette.set_pen_color( 8, 0x77, 0x77, 0x77 );
+ palette.set_pen_color( 7, 0x88, 0x88, 0x88 );
+ palette.set_pen_color( 6, 0x99, 0x99, 0x99 );
+ palette.set_pen_color( 5, 0xaa, 0xaa, 0xaa );
+ palette.set_pen_color( 4, 0xbb, 0xbb, 0xbb );
+ palette.set_pen_color( 3, 0xcc, 0xcc, 0xcc );
+ palette.set_pen_color( 2, 0xdd, 0xdd, 0xdd );
+ palette.set_pen_color( 1, 0xee, 0xee, 0xee );
+ palette.set_pen_color( 0, 0xff, 0xff, 0xff );
}
@@ -655,8 +655,8 @@ static MACHINE_CONFIG_START( microvision, microvision_state )
MCFG_SCREEN_SIZE(16, 16)
MCFG_SCREEN_VISIBLE_AREA(0, 15, 0, 15)
- MCFG_PALETTE_LENGTH(16)
- MCFG_PALETTE_INIT_OVERRIDE(microvision_state,microvision)
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(microvision_state,microvision)
MCFG_DEFAULT_LAYOUT(layout_lcd)
diff --git a/src/mess/drivers/mikro80.c b/src/mess/drivers/mikro80.c
index 0e3282fcbad..9a2a2850308 100644
--- a/src/mess/drivers/mikro80.c
+++ b/src/mess/drivers/mikro80.c
@@ -184,8 +184,7 @@ static MACHINE_CONFIG_START( mikro80, mikro80_state )
MCFG_SCREEN_UPDATE_DRIVER(mikro80_state, screen_update_mikro80)
MCFG_GFXDECODE_ADD("gfxdecode", mikro80)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/mikrosha.c b/src/mess/drivers/mikrosha.c
index ea5faea7473..cd073eebab1 100644
--- a/src/mess/drivers/mikrosha.c
+++ b/src/mess/drivers/mikrosha.c
@@ -202,8 +202,8 @@ static MACHINE_CONFIG_START( mikrosha, mikrosha_state )
MCFG_SCREEN_VISIBLE_AREA(0, 78*6-1, 0, 30*10-1)
MCFG_GFXDECODE_ADD("gfxdecode", mikrosha)
- MCFG_PALETTE_LENGTH(3)
- MCFG_PALETTE_INIT_OVERRIDE(mikrosha_state,radio86)
+ MCFG_PALETTE_ADD("palette", 3)
+ MCFG_PALETTE_INIT_OWNER(mikrosha_state,radio86)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
diff --git a/src/mess/drivers/mini2440.c b/src/mess/drivers/mini2440.c
index 5925590f9d1..74df2b7a05f 100644
--- a/src/mess/drivers/mini2440.c
+++ b/src/mess/drivers/mini2440.c
@@ -235,7 +235,7 @@ static MACHINE_CONFIG_START( mini2440, mini2440_state )
MCFG_CPU_ADD("maincpu", ARM920T, 400000000)
MCFG_CPU_PROGRAM_MAP(mini2440_map)
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD("palette", 32768)
MCFG_SCREEN_ADD("screen", LCD)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -253,7 +253,7 @@ static MACHINE_CONFIG_START( mini2440, mini2440_state )
MCFG_SOUND_ADD("dac2", DAC, 0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
- MCFG_S3C2440_ADD("s3c2440", 12000000, mini2440_s3c2440_intf)
+ MCFG_S3C2440_ADD("s3c2440", 12000000, mini2440_s3c2440_intf, "palette")
MCFG_NAND_ADD("nand", mini2440_nand_intf)
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/mk85.c b/src/mess/drivers/mk85.c
index 904bf54af63..dc5ffa142da 100644
--- a/src/mess/drivers/mk85.c
+++ b/src/mess/drivers/mk85.c
@@ -73,8 +73,7 @@ static MACHINE_CONFIG_START( mk85, mk85_state )
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(mk85_state, screen_update_mk85)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mess/drivers/mk90.c b/src/mess/drivers/mk90.c
index 6725d67c670..875588140fc 100644
--- a/src/mess/drivers/mk90.c
+++ b/src/mess/drivers/mk90.c
@@ -78,8 +78,7 @@ static MACHINE_CONFIG_START( mk90, mk90_state )
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(mk90_state, screen_update_mk90)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mess/drivers/mmodular.c b/src/mess/drivers/mmodular.c
index b4a13af50b8..20f3169922c 100644
--- a/src/mess/drivers/mmodular.c
+++ b/src/mess/drivers/mmodular.c
@@ -1077,9 +1077,9 @@ MACHINE_RESET_MEMBER(polgar_state,academy)
PALETTE_INIT_MEMBER(polgar_state,chess_lcd)
{
- // palette_set_color(machine(), 0, rgb_t(138, 146, 148)); // some think this is closer, but slightly less readable
- palette_set_color(machine(), 0, rgb_t(255, 255, 255));
- palette_set_color(machine(), 1, rgb_t(0, 0, 0));
+ // palette.set_pen_color(0, rgb_t(138, 146, 148)); // some think this is closer, but slightly less readable
+ palette.set_pen_color(0, rgb_t(255, 255, 255));
+ palette.set_pen_color(1, rgb_t(0, 0, 0));
}
static const gfx_layout chess_charlayout =
@@ -1521,8 +1521,8 @@ static MACHINE_CONFIG_FRAGMENT ( chess_common )
MCFG_SCREEN_SIZE(100, 22)
MCFG_SCREEN_VISIBLE_AREA(0, 100-1, 0, 22-3)
MCFG_SCREEN_UPDATE_DEVICE("hd44780", hd44780_device, screen_update)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(polgar_state,chess_lcd)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(polgar_state,chess_lcd)
MCFG_QUANTUM_TIME(attotime::from_hz(60))
MCFG_GFXDECODE_ADD("gfxdecode", chess_lcd)
diff --git a/src/mess/drivers/modellot.c b/src/mess/drivers/modellot.c
index 8b282b2dc39..e6a146926c9 100644
--- a/src/mess/drivers/modellot.c
+++ b/src/mess/drivers/modellot.c
@@ -166,10 +166,9 @@ static MACHINE_CONFIG_START( modellot, modellot_state )
MCFG_SCREEN_SIZE(64*8, 16*16)
MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 16*16-1)
MCFG_SCREEN_UPDATE_DRIVER(modellot_state, screen_update_modellot)
- MCFG_GFXDECODE_ADD("gfxdecode", modellot )
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, monochrome_green)
-
+ MCFG_GFXDECODE_ADD("gfxdecode", modellot )
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
+
/* Devices */
MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/molecular.c b/src/mess/drivers/molecular.c
index 3b567c88803..0f85ab67416 100644
--- a/src/mess/drivers/molecular.c
+++ b/src/mess/drivers/molecular.c
@@ -88,6 +88,8 @@ public:
UINT8 app_ram_enable;
UINT8 file_ram_enable;
+
+ DECLARE_PALETTE_INIT(molecula);
protected:
// driver_device overrides
@@ -95,7 +97,6 @@ protected:
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
};
void molecula_state::video_start()
@@ -277,7 +278,7 @@ void molecula_state::machine_reset()
}
-void molecula_state::palette_init()
+PALETTE_INIT_MEMBER(molecula_state, molecula)
{
}
@@ -308,7 +309,8 @@ static MACHINE_CONFIG_START( molecula, molecula_state )
MCFG_GFXDECODE_ADD("gfxdecode", molecula)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(molecula_state, molecula)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/ms0515.c b/src/mess/drivers/ms0515.c
index f6d2cf9e846..67dea5d0316 100644
--- a/src/mess/drivers/ms0515.c
+++ b/src/mess/drivers/ms0515.c
@@ -34,7 +34,7 @@ public:
UINT8 *m_video_ram;
UINT8 m_sysreg;
int m_blink;
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(ms0515);
UINT32 screen_update_ms0515(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE8_MEMBER(ms0515_portc_w);
};
@@ -212,25 +212,25 @@ UINT32 ms0515_state::screen_update_ms0515(screen_device &screen, bitmap_ind16 &b
return 0;
}
-void ms0515_state::palette_init()
+PALETTE_INIT_MEMBER(ms0515_state, ms0515)
{
- palette_set_color(machine(), 0, rgb_t(0, 0, 0));
- palette_set_color(machine(), 1, rgb_t(0, 0, 127));
- palette_set_color(machine(), 2, rgb_t(127, 0, 0));
- palette_set_color(machine(), 3, rgb_t(127, 0, 127));
- palette_set_color(machine(), 4, rgb_t(0, 127, 0));
- palette_set_color(machine(), 5, rgb_t(0, 127, 127));
- palette_set_color(machine(), 6, rgb_t(127, 127, 0));
- palette_set_color(machine(), 7, rgb_t(127, 127, 127));
-
- palette_set_color(machine(), 8, rgb_t(127, 127, 127));
- palette_set_color(machine(), 9, rgb_t(127, 127, 255));
- palette_set_color(machine(), 10, rgb_t(255, 127, 127));
- palette_set_color(machine(), 11, rgb_t(255, 127, 255));
- palette_set_color(machine(), 12, rgb_t(127, 255, 127));
- palette_set_color(machine(), 13, rgb_t(127, 255, 255));
- palette_set_color(machine(), 14, rgb_t(255, 255, 127));
- palette_set_color(machine(), 15, rgb_t(255, 255, 255));
+ palette.set_pen_color(0, rgb_t(0, 0, 0));
+ palette.set_pen_color(1, rgb_t(0, 0, 127));
+ palette.set_pen_color(2, rgb_t(127, 0, 0));
+ palette.set_pen_color(3, rgb_t(127, 0, 127));
+ palette.set_pen_color(4, rgb_t(0, 127, 0));
+ palette.set_pen_color(5, rgb_t(0, 127, 127));
+ palette.set_pen_color(6, rgb_t(127, 127, 0));
+ palette.set_pen_color(7, rgb_t(127, 127, 127));
+
+ palette.set_pen_color(8, rgb_t(127, 127, 127));
+ palette.set_pen_color(9, rgb_t(127, 127, 255));
+ palette.set_pen_color(10, rgb_t(255, 127, 127));
+ palette.set_pen_color(11, rgb_t(255, 127, 255));
+ palette.set_pen_color(12, rgb_t(127, 255, 127));
+ palette.set_pen_color(13, rgb_t(127, 255, 255));
+ palette.set_pen_color(14, rgb_t(255, 255, 127));
+ palette.set_pen_color(15, rgb_t(255, 255, 255));
}
WRITE8_MEMBER(ms0515_state::ms0515_portc_w)
@@ -265,7 +265,8 @@ static MACHINE_CONFIG_START( ms0515, ms0515_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
MCFG_SCREEN_UPDATE_DRIVER(ms0515_state, screen_update_ms0515)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(ms0515_state, ms0515)
MCFG_I8255_ADD( "ppi8255_1", ms0515_ppi8255_interface_1 )
//MCFG_I8255_ADD( "ppi8255_2", ms0515_ppi8255_interface_2 )
diff --git a/src/mess/drivers/mstation.c b/src/mess/drivers/mstation.c
index 422955977e2..11fd04ee215 100644
--- a/src/mess/drivers/mstation.c
+++ b/src/mess/drivers/mstation.c
@@ -92,7 +92,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(mstation);
TIMER_DEVICE_CALLBACK_MEMBER(mstation_1hz_timer);
TIMER_DEVICE_CALLBACK_MEMBER(mstation_kb_timer);
};
@@ -502,10 +502,10 @@ TIMER_DEVICE_CALLBACK_MEMBER(mstation_state::mstation_kb_timer)
refresh_ints();
}
-void mstation_state::palette_init()
+PALETTE_INIT_MEMBER(mstation_state, mstation)
{
- palette_set_color(machine(), 0, rgb_t(138, 146, 148));
- palette_set_color(machine(), 1, rgb_t(92, 83, 88));
+ palette.set_pen_color(0, rgb_t(138, 146, 148));
+ palette.set_pen_color(1, rgb_t(92, 83, 88));
}
static RP5C01_INTERFACE( rtc_intf )
@@ -527,7 +527,8 @@ static MACHINE_CONFIG_START( mstation, mstation_state )
MCFG_SCREEN_SIZE(320, 128)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 128-1)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(mstation_state, mstation)
MCFG_DEFAULT_LAYOUT(layout_lcd)
MCFG_AMD_29F080_ADD("flash0")
diff --git a/src/mess/drivers/msx.c b/src/mess/drivers/msx.c
index 5a93105e689..ed57cf5b10a 100644
--- a/src/mess/drivers/msx.c
+++ b/src/mess/drivers/msx.c
@@ -1197,7 +1197,7 @@ static MACHINE_CONFIG_START( msx2, msx_state )
MCFG_SCREEN_SIZE(MSX2_TOTAL_XRES_PIXELS, 262*2)
MCFG_SCREEN_VISIBLE_AREA(MSX2_XBORDER_PIXELS - MSX2_VISIBLE_XBORDER_PIXELS, MSX2_TOTAL_XRES_PIXELS - MSX2_XBORDER_PIXELS + MSX2_VISIBLE_XBORDER_PIXELS - 1, MSX2_YBORDER_PIXELS - MSX2_VISIBLE_YBORDER_PIXELS, MSX2_TOTAL_YRES_PIXELS - MSX2_YBORDER_PIXELS + MSX2_VISIBLE_YBORDER_PIXELS - 1)
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1268,8 +1268,6 @@ static MACHINE_CONFIG_START( msx2p, msx_state )
MCFG_SCREEN_SIZE(MSX2_TOTAL_XRES_PIXELS, 262*2)
MCFG_SCREEN_VISIBLE_AREA(MSX2_XBORDER_PIXELS - MSX2_VISIBLE_XBORDER_PIXELS, MSX2_TOTAL_XRES_PIXELS - MSX2_XBORDER_PIXELS + MSX2_VISIBLE_XBORDER_PIXELS - 1, MSX2_YBORDER_PIXELS - MSX2_VISIBLE_YBORDER_PIXELS, MSX2_TOTAL_YRES_PIXELS - MSX2_YBORDER_PIXELS + MSX2_VISIBLE_YBORDER_PIXELS - 1)
- MCFG_PALETTE_LENGTH(19780)
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("dac", DAC, 0)
diff --git a/src/mess/drivers/multi16.c b/src/mess/drivers/multi16.c
index 8df82838295..577c017f3a2 100644
--- a/src/mess/drivers/multi16.c
+++ b/src/mess/drivers/multi16.c
@@ -76,7 +76,7 @@ UINT32 multi16_state::screen_update_multi16(screen_device &screen, bitmap_ind16
int dot = (BITSWAP16(m_p_vram[count],7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8) >> (15-xi)) & 0x1;
if(screen.visible_area().contains(x*16+xi, y))
- bitmap.pix16(y, x*16+xi) = machine().pens[dot];
+ bitmap.pix16(y, x*16+xi) = m_palette->pen(dot);
}
count++;
@@ -168,7 +168,7 @@ static MACHINE_CONFIG_START( multi16, multi16_state )
MCFG_SCREEN_SIZE(640, 200)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
MCFG_SCREEN_UPDATE_DRIVER(multi16_state, screen_update_multi16)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
/* Devices */
MCFG_MC6845_ADD("crtc", H46505, "screen", 16000000/5, mc6845_intf) /* unknown clock, hand tuned to get ~60 fps */
diff --git a/src/mess/drivers/multi8.c b/src/mess/drivers/multi8.c
index 5dbc43732db..d0e93261cbf 100644
--- a/src/mess/drivers/multi8.c
+++ b/src/mess/drivers/multi8.c
@@ -69,7 +69,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(multi8);
UINT32 screen_update_multi8(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(keyboard_callback);
void multi8_draw_pixel(bitmap_ind16 &bitmap,int y,int x,UINT8 pen,UINT8 width);
@@ -183,7 +183,7 @@ UINT32 multi8_state::screen_update_multi8(screen_device &screen, bitmap_ind16 &b
}
}
- // m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, tile,color >> 5, 0, 0, x*8, y*8);
+ // m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, tile,color >> 5, 0, 0, x*8, y*8);
// draw cursor
if(mc6845_cursor_addr+0xc000 == count)
@@ -575,12 +575,12 @@ static MC6845_INTERFACE( mc6845_intf )
NULL /* update address callback */
};
-void multi8_state::palette_init()
+PALETTE_INIT_MEMBER(multi8_state, multi8)
{
UINT8 i;
for(i=0; i<8; i++)
- palette_set_color_rgb(machine(), i, pal1bit(i >> 1),pal1bit(i >> 2),pal1bit(i >> 0));
+ palette.set_pen_color(i, pal1bit(i >> 1),pal1bit(i >> 2),pal1bit(i >> 0));
}
READ8_MEMBER( multi8_state::porta_r )
@@ -673,7 +673,8 @@ static MACHINE_CONFIG_START( multi8, multi8_state )
MCFG_SCREEN_SIZE(640, 200)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
MCFG_SCREEN_UPDATE_DRIVER(multi8_state, screen_update_multi8)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(multi8_state, multi8)
MCFG_GFXDECODE_ADD("gfxdecode", multi8)
/* Audio */
diff --git a/src/mess/drivers/mx2178.c b/src/mess/drivers/mx2178.c
index 621029285b0..f37a5302629 100644
--- a/src/mess/drivers/mx2178.c
+++ b/src/mess/drivers/mx2178.c
@@ -184,8 +184,7 @@ static MACHINE_CONFIG_START( mx2178, mx2178_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_GFXDECODE_ADD("gfxdecode", mx2178)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, monochrome_green)
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
/* Devices */
MCFG_MC6845_ADD("crtc", MC6845, "screen", 18869600 / 8, crtc_interface) // clk unknown
diff --git a/src/mess/drivers/myb3k.c b/src/mess/drivers/myb3k.c
index 7e1384fdd22..98ec51e562e 100644
--- a/src/mess/drivers/myb3k.c
+++ b/src/mess/drivers/myb3k.c
@@ -92,7 +92,7 @@ UINT32 myb3k_state::screen_update_myb3k(screen_device &screen, bitmap_ind16 &bit
dot = 0;
if(y*mc6845_tile_height+yi < 200 && x*8+xi < 320) /* TODO: safety check */
- bitmap.pix16(y*mc6845_tile_height+yi, x*8+xi) = machine().pens[dot];
+ bitmap.pix16(y*mc6845_tile_height+yi, x*8+xi) = m_palette->pen(dot);
}
}
}
@@ -284,8 +284,7 @@ static MACHINE_CONFIG_START( myb3k, myb3k_state )
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
MCFG_SCREEN_UPDATE_DRIVER(myb3k_state, screen_update_myb3k)
MCFG_GFXDECODE_ADD("gfxdecode", myb3k)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* Devices */
MCFG_MC6845_ADD("crtc", H46505, "screen", XTAL_3_579545MHz/4, mc6845_intf) /* unknown clock, hand tuned to get ~60 fps */
diff --git a/src/mess/drivers/mycom.c b/src/mess/drivers/mycom.c
index c286ce74754..2534f2bde7e 100644
--- a/src/mess/drivers/mycom.c
+++ b/src/mess/drivers/mycom.c
@@ -560,8 +560,7 @@ static MACHINE_CONFIG_START( mycom, mycom_state )
MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 192-1)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", mycom)
/* Manual states clock is 1.008mhz for 40 cols, and 2.016 mhz for 80 cols.
diff --git a/src/mess/drivers/mz2000.c b/src/mess/drivers/mz2000.c
index caa4dbd3564..0333ab4e6ae 100644
--- a/src/mess/drivers/mz2000.c
+++ b/src/mess/drivers/mz2000.c
@@ -172,8 +172,8 @@ UINT32 mz2000_state::screen_update_mz2000(screen_device &screen, bitmap_ind16 &b
pen |= ((gvram[count+0xc000] >> (xi)) & 1) ? 4 : 0; //G
pen &= m_gvram_mask;
- bitmap.pix16(y*2+0, x+xi) = machine().pens[pen];
- bitmap.pix16(y*2+1, x+xi) = machine().pens[pen];
+ bitmap.pix16(y*2+0, x+xi) = m_palette->pen(pen);
+ bitmap.pix16(y*2+1, x+xi) = m_palette->pen(pen);
}
count++;
}
@@ -213,27 +213,27 @@ UINT32 mz2000_state::screen_update_mz2000(screen_device &screen, bitmap_ind16 &b
{
if(m_width80 == 0)
{
- bitmap.pix16(res_y, res_x*2+0) = machine().pens[pen];
- bitmap.pix16(res_y, res_x*2+1) = machine().pens[pen];
+ bitmap.pix16(res_y, res_x*2+0) = m_palette->pen(pen);
+ bitmap.pix16(res_y, res_x*2+1) = m_palette->pen(pen);
}
else
{
- bitmap.pix16(res_y, res_x) = machine().pens[pen];
+ bitmap.pix16(res_y, res_x) = m_palette->pen(pen);
}
}
else
{
if(m_width80 == 0)
{
- bitmap.pix16(res_y*2+0, res_x*2+0) = machine().pens[pen];
- bitmap.pix16(res_y*2+0, res_x*2+1) = machine().pens[pen];
- bitmap.pix16(res_y*2+1, res_x*2+0) = machine().pens[pen];
- bitmap.pix16(res_y*2+1, res_x*2+1) = machine().pens[pen];
+ bitmap.pix16(res_y*2+0, res_x*2+0) = m_palette->pen(pen);
+ bitmap.pix16(res_y*2+0, res_x*2+1) = m_palette->pen(pen);
+ bitmap.pix16(res_y*2+1, res_x*2+0) = m_palette->pen(pen);
+ bitmap.pix16(res_y*2+1, res_x*2+1) = m_palette->pen(pen);
}
else
{
- bitmap.pix16(res_y*2+0, res_x) = machine().pens[pen];
- bitmap.pix16(res_y*2+1, res_x) = machine().pens[pen];
+ bitmap.pix16(res_y*2+0, res_x) = m_palette->pen(pen);
+ bitmap.pix16(res_y*2+1, res_x) = m_palette->pen(pen);
}
}
}
@@ -573,7 +573,7 @@ void mz2000_state::machine_reset()
g = (m_color_mode) ? (i & 4)>>2 : ((i) ? 1 : 0);
b = (m_color_mode) ? (i & 1)>>0 : 0;
- palette_set_color_rgb(machine(), i,pal1bit(r),pal1bit(g),pal1bit(b));
+ m_palette->set_pen_color(i,pal1bit(r),pal1bit(g),pal1bit(b));
}
}
}
@@ -868,7 +868,7 @@ static MACHINE_CONFIG_START( mz2000, mz2000_state )
MCFG_SCREEN_UPDATE_DRIVER(mz2000_state, screen_update_mz2000)
MCFG_GFXDECODE_ADD("gfxdecode", mz2000)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/mz2500.c b/src/mess/drivers/mz2500.c
index 1522cc4eb56..2519adc3c0b 100644
--- a/src/mess/drivers/mz2500.c
+++ b/src/mess/drivers/mz2500.c
@@ -185,7 +185,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(mz2500);
UINT32 screen_update_mz2500(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(mz2500_vbl);
DECLARE_READ8_MEMBER(mz2500_wd17xx_r);
@@ -251,23 +251,23 @@ void mz2500_state::mz2500_draw_pixel(bitmap_ind16 &bitmap,int x,int y,UINT16 pe
{
if(width && height)
{
- bitmap.pix16(y*2+0, x*2+0) = machine().pens[pen];
- bitmap.pix16(y*2+0, x*2+1) = machine().pens[pen];
- bitmap.pix16(y*2+1, x*2+0) = machine().pens[pen];
- bitmap.pix16(y*2+1, x*2+1) = machine().pens[pen];
+ bitmap.pix16(y*2+0, x*2+0) = m_palette->pen(pen);
+ bitmap.pix16(y*2+0, x*2+1) = m_palette->pen(pen);
+ bitmap.pix16(y*2+1, x*2+0) = m_palette->pen(pen);
+ bitmap.pix16(y*2+1, x*2+1) = m_palette->pen(pen);
}
else if(width)
{
- bitmap.pix16(y, x*2+0) = machine().pens[pen];
- bitmap.pix16(y, x*2+1) = machine().pens[pen];
+ bitmap.pix16(y, x*2+0) = m_palette->pen(pen);
+ bitmap.pix16(y, x*2+1) = m_palette->pen(pen);
}
else if(height)
{
- bitmap.pix16(y*2+0, x) = machine().pens[pen];
- bitmap.pix16(y*2+1, x) = machine().pens[pen];
+ bitmap.pix16(y*2+0, x) = m_palette->pen(pen);
+ bitmap.pix16(y*2+1, x) = m_palette->pen(pen);
}
else
- bitmap.pix16(y, x) = machine().pens[pen];
+ bitmap.pix16(y, x) = m_palette->pen(pen);
}
void mz2500_state::draw_80x25(bitmap_ind16 &bitmap,const rectangle &cliprect,UINT16 map_addr)
@@ -677,7 +677,7 @@ void mz2500_state::draw_cg_screen(bitmap_ind16 &bitmap,const rectangle &cliprect
UINT32 mz2500_state::screen_update_mz2500(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(machine().pens[0], cliprect); //TODO: correct?
+ bitmap.fill(m_palette->pen(0), cliprect); //TODO: correct?
if(m_screen_enable)
return 0;
@@ -1122,7 +1122,7 @@ WRITE8_MEMBER(mz2500_state::mz2500_tv_crtc_w)
bit2 = i & 0x40 ? 4 : 0;
g = bit0|bit1|bit2;
- palette_set_color_rgb(machine(), i+0x100,pal3bit(r),pal3bit(g),pal3bit(b));
+ m_palette->set_pen_color(i+0x100,pal3bit(r),pal3bit(g),pal3bit(b));
}
}
if(m_text_reg_index >= 0x80 && m_text_reg_index <= 0x8f) //Bitmap 16 clut registers
@@ -1275,7 +1275,7 @@ WRITE8_MEMBER(mz2500_state::palette4096_io_w)
m_pal[pal_entry].b = data & 0x0f;
}
- palette_set_color_rgb(machine(), pal_entry+0x10, pal4bit(m_pal[pal_entry].r), pal4bit(m_pal[pal_entry].g), pal4bit(m_pal[pal_entry].b));
+ m_palette->set_pen_color(pal_entry+0x10, pal4bit(m_pal[pal_entry].r), pal4bit(m_pal[pal_entry].g), pal4bit(m_pal[pal_entry].b));
}
READ8_MEMBER(mz2500_state::mz2500_wd17xx_r)
@@ -2034,16 +2034,16 @@ static const ay8910_interface ay8910_config =
DEVCB_NULL // write B
};
-void mz2500_state::palette_init()
+PALETTE_INIT_MEMBER(mz2500_state, mz2500)
{
int i;
for(i=0;i<0x200;i++)
- palette_set_color_rgb(machine(), i,pal1bit(0),pal1bit(0),pal1bit(0));
+ palette.set_pen_color(i,pal1bit(0),pal1bit(0),pal1bit(0));
/* set up 8 colors (PCG) */
for(i=0;i<8;i++)
- palette_set_color_rgb(machine(), i+8,pal1bit((i & 2)>>1),pal1bit((i & 4)>>2),pal1bit((i & 1)>>0));
+ m_palette->set_pen_color(i+8,pal1bit((i & 2)>>1),pal1bit((i & 4)>>2),pal1bit((i & 1)>>0));
/* set up 16 colors (PCG / CG) */
@@ -2068,7 +2068,7 @@ void mz2500_state::palette_init()
bit2 = i & 0x40 ? 4 : 0;
g = bit0|bit1|bit2;
- palette_set_color_rgb(machine(), i+0x100,pal3bit(r),pal3bit(g),pal3bit(b));
+ m_palette->set_pen_color(i+0x100,pal3bit(r),pal3bit(g),pal3bit(b));
}
}
}
@@ -2147,7 +2147,8 @@ static MACHINE_CONFIG_START( mz2500, mz2500_state )
MCFG_SCREEN_RAW_PARAMS(XTAL_21_4772MHz, 640+108, 0, 640, 480, 0, 200) //unknown clock / divider
MCFG_SCREEN_UPDATE_DRIVER(mz2500_state, screen_update_mz2500)
- MCFG_PALETTE_LENGTH(0x200)
+ MCFG_PALETTE_ADD("palette", 0x200)
+ MCFG_PALETTE_INIT_OWNER(mz2500_state, mz2500)
MCFG_GFXDECODE_ADD("gfxdecode", mz2500)
diff --git a/src/mess/drivers/mz3500.c b/src/mess/drivers/mz3500.c
index 6e4e3d93531..44e4b5e9b12 100644
--- a/src/mess/drivers/mz3500.c
+++ b/src/mess/drivers/mz3500.c
@@ -97,14 +97,13 @@ public:
// screen updates
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-
+ DECLARE_PALETTE_INIT(mz3500);
protected:
// driver_device overrides
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
};
void mz3500_state::video_start()
@@ -228,7 +227,7 @@ static UPD7220_DRAW_TEXT_LINE( hgdc_draw_text )
UINT32 mz3500_state::screen_update( screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect )
{
- bitmap.fill(machine().pens[(m_crtc[4] & 2) ? m_crtc[3] & 7 : 0], cliprect);
+ bitmap.fill(m_palette->pen((m_crtc[4] & 2) ? m_crtc[3] & 7 : 0), cliprect);
/* graphics */
m_hgdc2->screen_update(screen, bitmap, cliprect);
@@ -824,12 +823,12 @@ void mz3500_state::machine_reset()
-void mz3500_state::palette_init()
+PALETTE_INIT_MEMBER(mz3500_state, mz3500)
{
int i;
for(i=0;i<8;i++)
- palette_set_color_rgb(machine(), i,pal1bit((i >> 1) & 1),pal1bit(i >> 2),pal1bit((i >> 0) & 1));
+ palette.set_pen_color(i,pal1bit((i >> 1) & 1),pal1bit(i >> 2),pal1bit((i >> 0) & 1));
}
@@ -881,7 +880,8 @@ static MACHINE_CONFIG_START( mz3500, mz3500_state )
MCFG_GFXDECODE_ADD("gfxdecode", mz3500)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(mz3500_state, mz3500)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/mz6500.c b/src/mess/drivers/mz6500.c
index b2c9b63de7a..d3c7d8e8b69 100644
--- a/src/mess/drivers/mz6500.c
+++ b/src/mess/drivers/mz6500.c
@@ -153,7 +153,7 @@ static MACHINE_CONFIG_START( mz6500, mz6500_state )
MCFG_SCREEN_UPDATE_DEVICE("upd7220", upd7220_device, screen_update)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
/* Devices */
MCFG_UPD7220_ADD("upd7220", 8000000/6, hgdc_intf, upd7220_map) // unk clock
diff --git a/src/mess/drivers/mz700.c b/src/mess/drivers/mz700.c
index 6fff599683b..c399a7492d4 100644
--- a/src/mess/drivers/mz700.c
+++ b/src/mess/drivers/mz700.c
@@ -340,7 +340,8 @@ static MACHINE_CONFIG_START( mz700, mz_state )
MCFG_SCREEN_UPDATE_DRIVER(mz_state, screen_update_mz700)
MCFG_GFXDECODE_ADD("gfxdecode", mz700)
- MCFG_PALETTE_LENGTH(256*2)
+ MCFG_PALETTE_ADD("palette", 256*2)
+ MCFG_PALETTE_INIT_OWNER(mz_state, mz)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/mz80.c b/src/mess/drivers/mz80.c
index c5899c07c45..3f3d4b1f9ee 100644
--- a/src/mess/drivers/mz80.c
+++ b/src/mess/drivers/mz80.c
@@ -290,8 +290,7 @@ static MACHINE_CONFIG_START( mz80k, mz80_state )
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 199)
MCFG_SCREEN_UPDATE_DRIVER(mz80_state, screen_update_mz80k)
MCFG_GFXDECODE_ADD("gfxdecode", mz80k)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* Audio */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/n64.c b/src/mess/drivers/n64.c
index 5f3bf95e77e..c232512346d 100644
--- a/src/mess/drivers/n64.c
+++ b/src/mess/drivers/n64.c
@@ -298,7 +298,7 @@ static MACHINE_CONFIG_START( n64, n64_mess_state )
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 239)
MCFG_SCREEN_UPDATE_DRIVER(n64_state, screen_update_n64)
- MCFG_PALETTE_LENGTH(0x1000)
+ MCFG_PALETTE_ADD("palette", 0x1000)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mess/drivers/nakajies.c b/src/mess/drivers/nakajies.c
index 49dec58a812..c6695842159 100644
--- a/src/mess/drivers/nakajies.c
+++ b/src/mess/drivers/nakajies.c
@@ -335,7 +335,7 @@ public:
/* Banking */
UINT8 m_bank[8];
UINT8 *m_bank_base[8];
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(nakajies);
DECLARE_INPUT_CHANGED_MEMBER(trigger_irq);
TIMER_DEVICE_CALLBACK_MEMBER(kb_timer);
};
@@ -697,10 +697,10 @@ TIMER_DEVICE_CALLBACK_MEMBER(nakajies_state::kb_timer)
}
-void nakajies_state::palette_init()
+PALETTE_INIT_MEMBER(nakajies_state, nakajies)
{
- palette_set_color(machine(), 0, rgb_t(138, 146, 148));
- palette_set_color(machine(), 1, rgb_t(92, 83, 88));
+ palette.set_pen_color(0, rgb_t(138, 146, 148));
+ palette.set_pen_color(1, rgb_t(92, 83, 88));
}
@@ -750,7 +750,8 @@ static MACHINE_CONFIG_START( nakajies210, nakajies_state )
MCFG_SCREEN_SIZE( 80 * 6, 8 * 8 )
MCFG_SCREEN_VISIBLE_AREA( 0, 6 * 80 - 1, 0, 8 * 8 - 1 )
MCFG_GFXDECODE_ADD("gfxdecode", wales210)
- MCFG_PALETTE_LENGTH( 2 )
+ MCFG_PALETTE_ADD( "palette", 2 )
+ MCFG_PALETTE_INIT_OWNER(nakajies_state, nakajies)
MCFG_DEFAULT_LAYOUT(layout_lcd)
/* sound */
diff --git a/src/mess/drivers/nanos.c b/src/mess/drivers/nanos.c
index c714d17c3e4..adb5ce1120d 100644
--- a/src/mess/drivers/nanos.c
+++ b/src/mess/drivers/nanos.c
@@ -570,8 +570,7 @@ static MACHINE_CONFIG_START( nanos, nanos_state )
MCFG_SCREEN_SIZE(80*8, 25*10)
MCFG_SCREEN_VISIBLE_AREA(0,80*8-1,0,25*10-1)
MCFG_GFXDECODE_ADD("gfxdecode", nanos)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* devices */
MCFG_Z80CTC_ADD( "z80ctc_0", XTAL_4MHz, ctc_intf)
diff --git a/src/mess/drivers/nascom1.c b/src/mess/drivers/nascom1.c
index d21e10bb3ed..acd67335b3d 100644
--- a/src/mess/drivers/nascom1.c
+++ b/src/mess/drivers/nascom1.c
@@ -296,8 +296,7 @@ static MACHINE_CONFIG_START( nascom1, nascom1_state )
MCFG_SCREEN_UPDATE_DRIVER(nascom1_state, screen_update_nascom1)
MCFG_GFXDECODE_ADD("gfxdecode", nascom1)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MCFG_AY31015_ADD( "hd6402", nascom1_ay31015_config )
diff --git a/src/mess/drivers/nc.c b/src/mess/drivers/nc.c
index 612e6da176b..db6c8ac4c67 100644
--- a/src/mess/drivers/nc.c
+++ b/src/mess/drivers/nc.c
@@ -1439,7 +1439,9 @@ static MACHINE_CONFIG_START( nc100, nc_state )
MCFG_SCREEN_VISIBLE_AREA(0, 480-1, 0, 64-1)
MCFG_SCREEN_UPDATE_DRIVER(nc_state, screen_update_nc)
- MCFG_PALETTE_LENGTH(NC_NUM_COLOURS)
+ MCFG_PALETTE_ADD("palette", NC_NUM_COLOURS)
+ MCFG_PALETTE_INIT_OWNER(nc_state, nc)
+
MCFG_DEFAULT_LAYOUT(layout_lcd)
/* sound hardware */
@@ -1505,7 +1507,10 @@ static MACHINE_CONFIG_DERIVED( nc200, nc100 )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_SIZE(NC200_SCREEN_WIDTH, NC200_SCREEN_HEIGHT)
MCFG_SCREEN_VISIBLE_AREA(0, NC200_SCREEN_WIDTH-1, 0, NC200_SCREEN_HEIGHT-1)
- MCFG_PALETTE_LENGTH(NC200_NUM_COLOURS)
+
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", NC200_NUM_COLOURS)
+ MCFG_PALETTE_INIT_OWNER(nc_state, nc)
/* printer */
MCFG_DEVICE_MODIFY("centronics")
diff --git a/src/mess/drivers/nes.c b/src/mess/drivers/nes.c
index 3c60574bfb0..50de0c6058a 100644
--- a/src/mess/drivers/nes.c
+++ b/src/mess/drivers/nes.c
@@ -1058,7 +1058,8 @@ static MACHINE_CONFIG_START( nes, nes_state )
MCFG_SCREEN_UPDATE_DRIVER(nes_state, screen_update_nes)
- MCFG_PALETTE_LENGTH(4*16*8)
+ MCFG_PALETTE_ADD("palette", 4*16*8)
+ MCFG_PALETTE_INIT_OWNER(nes_state, nes)
MCFG_PPU2C02_ADD("ppu", nes_ppu_interface)
MCFG_PPU2C0X_SET_NMI(nes_state, ppu_nmi)
diff --git a/src/mess/drivers/ngp.c b/src/mess/drivers/ngp.c
index 8232e96e395..efe6d61abe3 100644
--- a/src/mess/drivers/ngp.c
+++ b/src/mess/drivers/ngp.c
@@ -837,8 +837,6 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( ngp, ngp_common )
- MCFG_PALETTE_LENGTH( 8 )
-
MCFG_K1GE_ADD( "k1ge", XTAL_6_144MHz, "screen", WRITELINE( ngp_state, ngp_vblank_pin_w ), WRITELINE( ngp_state, ngp_hblank_pin_w ) )
MCFG_CARTSLOT_ADD("cart")
@@ -855,9 +853,6 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( ngpc, ngp_common )
-
- MCFG_PALETTE_LENGTH( 4096 )
-
MCFG_K2GE_ADD( "k1ge", XTAL_6_144MHz, "screen", WRITELINE( ngp_state, ngp_vblank_pin_w ), WRITELINE( ngp_state, ngp_hblank_pin_w ) )
MCFG_CARTSLOT_ADD("cart")
diff --git a/src/mess/drivers/octopus.c b/src/mess/drivers/octopus.c
index 131645795d9..99cd6989e41 100644
--- a/src/mess/drivers/octopus.c
+++ b/src/mess/drivers/octopus.c
@@ -177,8 +177,7 @@ static MACHINE_CONFIG_START( octopus, octopus_state )
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(octopus_state, screen_update_octopus)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mess/drivers/odyssey2.c b/src/mess/drivers/odyssey2.c
index a6a02b895cf..329b39772c1 100644
--- a/src/mess/drivers/odyssey2.c
+++ b/src/mess/drivers/odyssey2.c
@@ -64,7 +64,7 @@ public:
DECLARE_DRIVER_INIT(odyssey2);
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(odyssey2);
UINT32 screen_update_odyssey2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE_LINE_MEMBER(the_voice_lrq_callback);
DECLARE_WRITE_LINE_MEMBER(irq_callback);
@@ -111,7 +111,7 @@ public:
required_device<i8243_device> m_i8243;
required_device<ef9340_1_device> m_ef9340_1;
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(g7400);
virtual void machine_start();
virtual void machine_reset();
DECLARE_WRITE8_MEMBER(p2_write);
@@ -264,16 +264,16 @@ const UINT8 odyssey2_colors[] =
};
-void odyssey2_state::palette_init()
+PALETTE_INIT_MEMBER(odyssey2_state, odyssey2)
{
for ( int i = 0; i < 16; i++ )
{
- palette_set_color_rgb( machine(), i, odyssey2_colors[i*3], odyssey2_colors[i*3+1], odyssey2_colors[i*3+2] );
+ palette.set_pen_color( i, odyssey2_colors[i*3], odyssey2_colors[i*3+1], odyssey2_colors[i*3+2] );
}
}
-void g7400_state::palette_init()
+PALETTE_INIT_MEMBER(g7400_state, g7400)
{
const UINT8 g7400_colors[] =
{
@@ -299,7 +299,7 @@ void g7400_state::palette_init()
for ( int i = 0; i < 16; i++ )
{
- palette_set_color_rgb( machine(), i, g7400_colors[i*3], g7400_colors[i*3+1], g7400_colors[i*3+2] );
+ palette.set_pen_color( i, g7400_colors[i*3], g7400_colors[i*3+1], g7400_colors[i*3+2] );
}
}
@@ -776,8 +776,9 @@ static MACHINE_CONFIG_START( odyssey2, odyssey2_state )
MCFG_SCREEN_RAW_PARAMS( XTAL_7_15909MHz/2 * 2, i8244_device::LINE_CLOCKS, i8244_device::START_ACTIVE_SCAN, i8244_device::END_ACTIVE_SCAN, i8244_device::LINES, i8244_device::START_Y, i8244_device::START_Y + i8244_device::SCREEN_HEIGHT )
MCFG_SCREEN_UPDATE_DRIVER(odyssey2_state, screen_update_odyssey2)
- MCFG_GFXDECODE_ADD("gfxdecode", odyssey2 )
- MCFG_PALETTE_LENGTH(32)
+ MCFG_GFXDECODE_ADD("gfxdecode", odyssey2 )
+ MCFG_PALETTE_ADD("palette", 32)
+ MCFG_PALETTE_INIT_OWNER(odyssey2_state, odyssey2)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -805,8 +806,9 @@ static MACHINE_CONFIG_START( videopac, odyssey2_state )
MCFG_SCREEN_RAW_PARAMS( XTAL_17_73447MHz/5 * 2, i8244_device::LINE_CLOCKS, i8244_device::START_ACTIVE_SCAN, i8244_device::END_ACTIVE_SCAN, i8245_device::LINES, i8244_device::START_Y, i8244_device::START_Y + i8244_device::SCREEN_HEIGHT )
MCFG_SCREEN_UPDATE_DRIVER(odyssey2_state, screen_update_odyssey2)
- MCFG_GFXDECODE_ADD("gfxdecode", odyssey2 )
- MCFG_PALETTE_LENGTH(16)
+ MCFG_GFXDECODE_ADD("gfxdecode", odyssey2 )
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(odyssey2_state, odyssey2)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -833,8 +835,9 @@ static MACHINE_CONFIG_START( g7400, g7400_state )
MCFG_SCREEN_RAW_PARAMS( 3540000 * 2, i8244_device::LINE_CLOCKS, i8244_device::START_ACTIVE_SCAN, i8244_device::END_ACTIVE_SCAN, i8245_device::LINES, i8244_device::START_Y, i8244_device::START_Y + i8244_device::SCREEN_HEIGHT )
MCFG_SCREEN_UPDATE_DRIVER(odyssey2_state, screen_update_odyssey2)
- MCFG_GFXDECODE_ADD("gfxdecode", odyssey2 )
- MCFG_PALETTE_LENGTH(16)
+ MCFG_GFXDECODE_ADD("gfxdecode", odyssey2 )
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(g7400_state, g7400)
MCFG_I8243_ADD( "i8243", NOOP, WRITE8(g7400_state,i8243_port_w))
@@ -867,8 +870,9 @@ static MACHINE_CONFIG_START( odyssey3, g7400_state )
MCFG_SCREEN_RAW_PARAMS( 3540000 * 2, i8244_device::LINE_CLOCKS, i8244_device::START_ACTIVE_SCAN, i8244_device::END_ACTIVE_SCAN, i8244_device::LINES, i8244_device::START_Y, i8244_device::START_Y + i8244_device::SCREEN_HEIGHT )
MCFG_SCREEN_UPDATE_DRIVER(odyssey2_state, screen_update_odyssey2)
- MCFG_GFXDECODE_ADD("gfxdecode", odyssey2 )
- MCFG_PALETTE_LENGTH(16)
+ MCFG_GFXDECODE_ADD("gfxdecode", odyssey2 )
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(g7400_state, g7400)
MCFG_I8243_ADD( "i8243", NOOP, WRITE8(g7400_state,i8243_port_w))
diff --git a/src/mess/drivers/okean240.c b/src/mess/drivers/okean240.c
index 5209e568d58..f02e8b70259 100644
--- a/src/mess/drivers/okean240.c
+++ b/src/mess/drivers/okean240.c
@@ -490,10 +490,10 @@ static MACHINE_CONFIG_START( okean240t, okean240_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 255)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
MCFG_SCREEN_UPDATE_DRIVER(okean240_state, screen_update_okean240)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
+
MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/ondra.c b/src/mess/drivers/ondra.c
index 5552a564609..f1fd37d35fb 100644
--- a/src/mess/drivers/ondra.c
+++ b/src/mess/drivers/ondra.c
@@ -136,8 +136,7 @@ static MACHINE_CONFIG_START( ondra, ondra_state )
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(ondra_state, screen_update_ondra)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
// sound hardware
diff --git a/src/mess/drivers/orao.c b/src/mess/drivers/orao.c
index e5d3ca2f972..f62fbc9e8e7 100644
--- a/src/mess/drivers/orao.c
+++ b/src/mess/drivers/orao.c
@@ -185,8 +185,7 @@ static MACHINE_CONFIG_START( orao, orao_state )
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(orao_state, screen_update_orao)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* audio hardware */
diff --git a/src/mess/drivers/oric.c b/src/mess/drivers/oric.c
index 0b8edad8488..e3e9c8e05c5 100644
--- a/src/mess/drivers/oric.c
+++ b/src/mess/drivers/oric.c
@@ -309,12 +309,12 @@ static const unsigned char oric_palette[8*3] =
};
/* Initialise the palette */
-void oric_state::palette_init()
+PALETTE_INIT_MEMBER(oric_state, oric)
{
int i;
for ( i = 0; i < sizeof(oric_palette) / 3; i++ ) {
- palette_set_color_rgb(machine(), i, oric_palette[i*3], oric_palette[i*3+1], oric_palette[i*3+2]);
+ palette.set_pen_color(i, oric_palette[i*3], oric_palette[i*3+1], oric_palette[i*3+2]);
}
}
@@ -381,7 +381,8 @@ static MACHINE_CONFIG_START( oric, oric_state )
MCFG_SCREEN_VISIBLE_AREA(0, 40*6-1, 0, 28*8-1)
MCFG_SCREEN_UPDATE_DRIVER(oric_state, screen_update_oric)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(oric_state, oric)
/* sound hardware */
diff --git a/src/mess/drivers/orion.c b/src/mess/drivers/orion.c
index 9383b60b5e4..b4bc1a26293 100644
--- a/src/mess/drivers/orion.c
+++ b/src/mess/drivers/orion.c
@@ -111,8 +111,8 @@ static MACHINE_CONFIG_START( orion128, orion_state )
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(orion_state, screen_update_orion128)
- MCFG_PALETTE_LENGTH(18)
- MCFG_PALETTE_INIT_OVERRIDE(orion_state, orion128 )
+ MCFG_PALETTE_ADD("palette", 18)
+ MCFG_PALETTE_INIT_OWNER(orion_state, orion128 )
MCFG_VIDEO_START_OVERRIDE(orion_state,orion128)
@@ -174,8 +174,8 @@ static MACHINE_CONFIG_START( orionz80, orion_state )
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(orion_state, screen_update_orion128)
- MCFG_PALETTE_LENGTH(18)
- MCFG_PALETTE_INIT_OVERRIDE(orion_state, orion128 )
+ MCFG_PALETTE_ADD("palette", 18)
+ MCFG_PALETTE_INIT_OWNER(orion_state, orion128 )
MCFG_VIDEO_START_OVERRIDE(orion_state,orion128)
@@ -236,8 +236,8 @@ static MACHINE_CONFIG_START( orionpro, orion_state )
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(orion_state, screen_update_orion128)
- MCFG_PALETTE_LENGTH(18)
- MCFG_PALETTE_INIT_OVERRIDE(orion_state, orion128 )
+ MCFG_PALETTE_ADD("palette", 18)
+ MCFG_PALETTE_INIT_OWNER(orion_state, orion128 )
MCFG_VIDEO_START_OVERRIDE(orion_state,orion128)
diff --git a/src/mess/drivers/osbexec.c b/src/mess/drivers/osbexec.c
index 70704128193..7a232d1aea0 100644
--- a/src/mess/drivers/osbexec.c
+++ b/src/mess/drivers/osbexec.c
@@ -109,7 +109,7 @@ public:
DECLARE_READ8_MEMBER(osbexec_rtc_r);
DECLARE_DRIVER_INIT(osbexec);
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(osbexec);
TIMER_CALLBACK_MEMBER(osbexec_video_callback);
DECLARE_READ8_MEMBER(osbexec_pia0_a_r);
DECLARE_WRITE8_MEMBER(osbexec_pia0_a_w);
@@ -307,11 +307,11 @@ static INPUT_PORTS_START( osbexec )
INPUT_PORTS_END
-void osbexec_state::palette_init()
+PALETTE_INIT_MEMBER(osbexec_state, osbexec)
{
- palette_set_color_rgb( machine(), 0, 0, 0, 0 ); /* Black */
- palette_set_color_rgb( machine(), 1, 0, 255, 0 ); /* Full */
- palette_set_color_rgb( machine(), 2, 0, 128, 0 ); /* Dimmed */
+ palette.set_pen_color( 0, 0, 0, 0 ); /* Black */
+ palette.set_pen_color( 1, 0, 255, 0 ); /* Full */
+ palette.set_pen_color( 2, 0, 128, 0 ); /* Dimmed */
}
void osbexec_state::video_start()
@@ -611,7 +611,8 @@ static MACHINE_CONFIG_START( osbexec, osbexec_state )
MCFG_SCREEN_UPDATE_DRIVER(osbexec_state, screen_update)
MCFG_SCREEN_RAW_PARAMS( MAIN_CLOCK/2, 768, 0, 640, 260, 0, 240 ) /* May not be correct */
- MCFG_PALETTE_LENGTH( 3 )
+ MCFG_PALETTE_ADD( "palette", 3 )
+ MCFG_PALETTE_INIT_OWNER(osbexec_state, osbexec)
MCFG_SPEAKER_STANDARD_MONO( "mono" )
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
diff --git a/src/mess/drivers/osborne1.c b/src/mess/drivers/osborne1.c
index dd1bb6a8436..ce73cd56640 100644
--- a/src/mess/drivers/osborne1.c
+++ b/src/mess/drivers/osborne1.c
@@ -142,11 +142,11 @@ static INPUT_PORTS_START( osborne1 )
INPUT_PORTS_END
-void osborne1_state::palette_init()
+PALETTE_INIT_MEMBER(osborne1_state, osborne1)
{
- palette_set_color_rgb( machine(), 0, 0, 0, 0 ); /* Black */
- palette_set_color_rgb( machine(), 1, 0, 255, 0 ); /* Full */
- palette_set_color_rgb( machine(), 2, 0, 128, 0 ); /* Dimmed */
+ palette.set_pen_color( 0, 0, 0, 0 ); /* Black */
+ palette.set_pen_color( 1, 0, 255, 0 ); /* Full */
+ palette.set_pen_color( 2, 0, 128, 0 ); /* Dimmed */
}
@@ -243,7 +243,8 @@ static MACHINE_CONFIG_START( osborne1, osborne1_state )
MCFG_SCREEN_UPDATE_DRIVER(osborne1_state, screen_update)
MCFG_SCREEN_RAW_PARAMS( MAIN_CLOCK/2, 512, 0, 416, 260, 0, 240 )
MCFG_GFXDECODE_ADD("gfxdecode", osborne1)
- MCFG_PALETTE_LENGTH( 3 )
+ MCFG_PALETTE_ADD( "palette", 3 )
+ MCFG_PALETTE_INIT_OWNER(osborne1_state, osborne1)
MCFG_SPEAKER_STANDARD_MONO( "mono" )
MCFG_SOUND_ADD( "beeper", BEEP, 0 )
diff --git a/src/mess/drivers/p112.c b/src/mess/drivers/p112.c
index f5d0635cdc8..fa744747a8f 100644
--- a/src/mess/drivers/p112.c
+++ b/src/mess/drivers/p112.c
@@ -95,8 +95,7 @@ static MACHINE_CONFIG_START( p112, p112_state )
MCFG_SCREEN_VISIBLE_AREA(0, 240-1, 0, 320-1)
MCFG_SCREEN_UPDATE_DRIVER(p112_state, screen_update_p112)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/p2000t.c b/src/mess/drivers/p2000t.c
index c4b9f48fdb5..f6d99182931 100644
--- a/src/mess/drivers/p2000t.c
+++ b/src/mess/drivers/p2000t.c
@@ -76,10 +76,10 @@ static const gfx_layout p2000m_charlayout =
PALETTE_INIT_MEMBER(p2000t_state,p2000m)
{
- palette_set_color(machine(),0,rgb_t::white); /* white */
- palette_set_color(machine(),1,rgb_t::black); /* black */
- palette_set_color(machine(),2,rgb_t::black); /* black */
- palette_set_color(machine(),3,rgb_t::white); /* white */
+ palette.set_pen_color(0,rgb_t::white); /* white */
+ palette.set_pen_color(1,rgb_t::black); /* black */
+ palette.set_pen_color(2,rgb_t::black); /* black */
+ palette.set_pen_color(3,rgb_t::white); /* white */
}
static GFXDECODE_START( p2000m )
@@ -260,9 +260,9 @@ static MACHINE_CONFIG_START( p2000m, p2000t_state )
MCFG_SCREEN_VISIBLE_AREA(0, 80 * 12 - 1, 0, 24 * 20 - 1)
MCFG_VIDEO_START_OVERRIDE(p2000t_state,p2000m)
MCFG_SCREEN_UPDATE_DRIVER(p2000t_state, screen_update_p2000m)
- MCFG_GFXDECODE_ADD("gfxdecode", p2000m )
- MCFG_PALETTE_LENGTH(4)
- MCFG_PALETTE_INIT_OVERRIDE(p2000t_state,p2000m)
+ MCFG_GFXDECODE_ADD("gfxdecode", p2000m )
+ MCFG_PALETTE_ADD("palette", 4)
+ MCFG_PALETTE_INIT_OWNER(p2000t_state,p2000m)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/palm.c b/src/mess/drivers/palm.c
index a3d9f6739cd..c6eef79abf5 100644
--- a/src/mess/drivers/palm.c
+++ b/src/mess/drivers/palm.c
@@ -156,8 +156,8 @@ void palm_state::machine_reset()
/* THIS IS PRETTY MUCH TOTALLY WRONG AND DOESN'T REFLECT THE MC68328'S INTERNAL FUNCTIONALITY AT ALL! */
PALETTE_INIT_MEMBER(palm_state, palm)
{
- palette_set_color_rgb(machine(), 0, 0x7b, 0x8c, 0x5a);
- palette_set_color_rgb(machine(), 1, 0x00, 0x00, 0x00);
+ palette.set_pen_color(0, 0x7b, 0x8c, 0x5a);
+ palette.set_pen_color(1, 0x00, 0x00, 0x00);
}
@@ -234,8 +234,8 @@ static MACHINE_CONFIG_START( palm, palm_state )
MCFG_SCREEN_SIZE( 160, 220 )
MCFG_SCREEN_VISIBLE_AREA( 0, 159, 0, 219 )
MCFG_SCREEN_UPDATE_DEVICE(MC68328_TAG, mc68328_device, screen_update)
- MCFG_PALETTE_LENGTH( 2 )
- MCFG_PALETTE_INIT_OVERRIDE(palm_state, palm)
+ MCFG_PALETTE_ADD( "palette", 2 )
+ MCFG_PALETTE_INIT_OWNER(palm_state, palm)
MCFG_DEFAULT_LAYOUT(layout_lcd)
/* audio hardware */
diff --git a/src/mess/drivers/palmz22.c b/src/mess/drivers/palmz22.c
index 0fbe1e57948..8c4cfa77239 100644
--- a/src/mess/drivers/palmz22.c
+++ b/src/mess/drivers/palmz22.c
@@ -303,7 +303,7 @@ static MACHINE_CONFIG_START( palmz22, palmz22_state )
MCFG_CPU_ADD("maincpu", ARM920T, 266000000)
MCFG_CPU_PROGRAM_MAP(palmz22_map)
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD("palette", 32768)
MCFG_SCREEN_ADD("screen", LCD)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -315,7 +315,7 @@ static MACHINE_CONFIG_START( palmz22, palmz22_state )
MCFG_SCREEN_UPDATE_DEVICE("s3c2410", s3c2410_device, screen_update)
- MCFG_S3C2410_ADD("s3c2410", 12000000, palmz22_s3c2410_intf)
+ MCFG_S3C2410_ADD("s3c2410", 12000000, palmz22_s3c2410_intf, "palette")
MCFG_NAND_ADD("nand", palmz22_nand_intf)
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/partner.c b/src/mess/drivers/partner.c
index 7097d7b6eef..855f63f9702 100644
--- a/src/mess/drivers/partner.c
+++ b/src/mess/drivers/partner.c
@@ -208,8 +208,8 @@ static MACHINE_CONFIG_START( partner, partner_state )
MCFG_SCREEN_VISIBLE_AREA(0, 78*6-1, 0, 30*10-1)
MCFG_GFXDECODE_ADD("gfxdecode", partner)
- MCFG_PALETTE_LENGTH(3)
- MCFG_PALETTE_INIT_OVERRIDE(partner_state,radio86)
+ MCFG_PALETTE_ADD("palette", 3)
+ MCFG_PALETTE_INIT_OWNER(partner_state,radio86)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
diff --git a/src/mess/drivers/paso1600.c b/src/mess/drivers/paso1600.c
index 54a62d5c498..43419bb255d 100644
--- a/src/mess/drivers/paso1600.c
+++ b/src/mess/drivers/paso1600.c
@@ -115,7 +115,7 @@ UINT32 paso1600_state::screen_update_paso1600(screen_device &screen, bitmap_ind1
int pen = (m_p_gvram[count] >> xi) & 1;
if(y < 475 && x*16+xi < 640) /* TODO: safety check */
- bitmap.pix16(y, x*16+xi) = machine().pens[pen];
+ bitmap.pix16(y, x*16+xi) = m_palette->pen(pen);
}
count++;
@@ -144,7 +144,7 @@ UINT32 paso1600_state::screen_update_paso1600(screen_device &screen, bitmap_ind1
if(pen != -1)
if(y*19 < 475 && x*8+xi < 640) /* TODO: safety check */
- bitmap.pix16(y*19+yi, x*8+xi) = machine().pens[pen];
+ bitmap.pix16(y*19+yi, x*8+xi) = m_palette->pen(pen);
}
}
}
@@ -160,7 +160,7 @@ UINT32 paso1600_state::screen_update_paso1600(screen_device &screen, bitmap_ind1
{
x = mc6845_cursor_addr % mc6845_h_display;
y = mc6845_cursor_addr / mc6845_h_display;
- bitmap.pix16(y*mc6845_tile_height+yi, x*8+xi) = machine().pens[7];
+ bitmap.pix16(y*mc6845_tile_height+yi, x*8+xi) = m_palette->pen(7);
}
}
}
@@ -351,8 +351,8 @@ static MACHINE_CONFIG_START( paso1600, paso1600_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(paso1600_state, screen_update_paso1600)
MCFG_GFXDECODE_ADD("gfxdecode", paso1600)
- MCFG_PALETTE_LENGTH(8)
-// MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD("palette", 8)
+// MCFG_PALETTE_INIT(black_and_white)
/* Devices */
MCFG_MC6845_ADD("crtc", H46505, "screen", 16000000/4, mc6845_intf) /* unknown clock, hand tuned to get ~60 fps */
diff --git a/src/mess/drivers/pasogo.c b/src/mess/drivers/pasogo.c
index 07895abb85b..cdcf270781b 100644
--- a/src/mess/drivers/pasogo.c
+++ b/src/mess/drivers/pasogo.c
@@ -172,7 +172,7 @@ public:
ems_t m_ems;
DECLARE_DRIVER_INIT(pasogo);
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(pasogo);
UINT32 screen_update_pasogo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(pasogo_interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(vg230_timer);
@@ -598,13 +598,13 @@ static const unsigned char pasogo_palette[][3] =
};
-void pasogo_state::palette_init()
+PALETTE_INIT_MEMBER(pasogo_state, pasogo)
{
int i;
for ( i = 0; i < ARRAY_LENGTH(pasogo_palette); i++ )
{
- palette_set_color_rgb(machine(), i, pasogo_palette[i][0], pasogo_palette[i][1], pasogo_palette[i][2]);
+ palette.set_pen_color(i, pasogo_palette[i][0], pasogo_palette[i][1], pasogo_palette[i][2]);
}
}
@@ -979,7 +979,8 @@ static MACHINE_CONFIG_START( pasogo, pasogo_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 400-1)
MCFG_SCREEN_UPDATE_DRIVER(pasogo_state, screen_update_pasogo)
- MCFG_PALETTE_LENGTH(ARRAY_LENGTH(pasogo_palette))
+ MCFG_PALETTE_ADD("palette", ARRAY_LENGTH(pasogo_palette))
+ MCFG_PALETTE_INIT_OWNER(pasogo_state, pasogo)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
diff --git a/src/mess/drivers/pasopia.c b/src/mess/drivers/pasopia.c
index 318d99004d1..59cdc0b7f6d 100644
--- a/src/mess/drivers/pasopia.c
+++ b/src/mess/drivers/pasopia.c
@@ -369,7 +369,7 @@ static MACHINE_CONFIG_START( pasopia, pasopia_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DEVICE("crtc", h46505_device, screen_update)
MCFG_GFXDECODE_ADD("gfxdecode", pasopia)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
/* Devices */
MCFG_MC6845_ADD("crtc", H46505, "screen", XTAL_4MHz/4, mc6845_intf) /* unknown clock, hand tuned to get ~60 fps */
diff --git a/src/mess/drivers/pasopia7.c b/src/mess/drivers/pasopia7.c
index a9c78d6640c..23ce3d4dae1 100644
--- a/src/mess/drivers/pasopia7.c
+++ b/src/mess/drivers/pasopia7.c
@@ -160,7 +160,7 @@ void pasopia7_state::draw_cg4_screen(bitmap_ind16 &bitmap,const rectangle &clipr
color = pen_g<<2 | pen_r<<1 | pen_b<<0;
- bitmap.pix16(y+yi, x+xi) = machine().pens[color];
+ bitmap.pix16(y+yi, x+xi) = m_palette->pen(color);
}
count+=8;
}
@@ -192,7 +192,7 @@ void pasopia7_state::draw_tv_screen(bitmap_ind16 &bitmap,const rectangle &clipre
int pen;
pen = ((gfx_data[tile*8+yi]>>(7-xi)) & 1) ? color : 0;
- bitmap.pix16(y*8+yi, x*8+xi) = machine().pens[pen];
+ bitmap.pix16(y*8+yi, x*8+xi) = m_palette->pen(pen);
}
}
@@ -216,7 +216,7 @@ void pasopia7_state::draw_tv_screen(bitmap_ind16 &bitmap,const rectangle &clipre
{
for(xc=0;xc<8;xc++)
{
- bitmap.pix16(y*8-yc+7, x*8+xc) = machine().pens[7];
+ bitmap.pix16(y*8-yc+7, x*8+xc) = m_palette->pen(7);
}
}
}
@@ -257,7 +257,7 @@ void pasopia7_state::draw_mixed_screen(bitmap_ind16 &bitmap,const rectangle &cli
pen = pen_g<<2 | pen_r<<1 | pen_b<<0;
- bitmap.pix16(y*8+yi, x*8+xi) = machine().pens[pen];
+ bitmap.pix16(y*8+yi, x*8+xi) = m_palette->pen(pen);
}
}
else
@@ -269,7 +269,7 @@ void pasopia7_state::draw_mixed_screen(bitmap_ind16 &bitmap,const rectangle &cli
int pen;
pen = ((gfx_data[tile*8+yi]>>(7-xi)) & 1) ? color : 0;
- bitmap.pix16(y*8+yi, x*8+xi) = machine().pens[pen];
+ bitmap.pix16(y*8+yi, x*8+xi) = m_palette->pen(pen);
}
}
}
@@ -294,7 +294,7 @@ void pasopia7_state::draw_mixed_screen(bitmap_ind16 &bitmap,const rectangle &cli
{
for(xc=0;xc<8;xc++)
{
- bitmap.pix16(y*8-yc+7, x*8+xc) = machine().pens[7];
+ bitmap.pix16(y*8-yc+7, x*8+xc) = m_palette->pen(7);
}
}
}
@@ -309,7 +309,7 @@ UINT32 pasopia7_state::screen_update_pasopia7(screen_device &screen, bitmap_ind1
{
int width;
- bitmap.fill(machine().pens[0], cliprect);
+ bitmap.fill(m_palette->pen(0), cliprect);
width = m_x_width ? 80 : 40;
@@ -956,7 +956,7 @@ PALETTE_INIT_MEMBER(pasopia7_state,p7_raster)
int i;
for( i = 0; i < 8; i++)
- palette_set_color_rgb(machine(), i, pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 0));
+ palette.set_pen_color(i, pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 0));
}
/* TODO: palette values are mostly likely to be wrong in there */
@@ -964,10 +964,10 @@ PALETTE_INIT_MEMBER(pasopia7_state,p7_lcd)
{
int i;
- palette_set_color_rgb(machine(), 0, 0xa0, 0xa8, 0xa0);
+ palette.set_pen_color(0, 0xa0, 0xa8, 0xa0);
for( i = 1; i < 8; i++)
- palette_set_color_rgb(machine(), i, 0x30, 0x38, 0x10);
+ palette.set_pen_color(i, 0x30, 0x38, 0x10);
}
void pasopia7_state::fdc_irq(bool state)
@@ -1015,9 +1015,9 @@ static MACHINE_CONFIG_DERIVED( p7_raster, p7_base )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 32-1)
MCFG_VIDEO_START_OVERRIDE(pasopia7_state,pasopia7)
MCFG_SCREEN_UPDATE_DRIVER(pasopia7_state, screen_update_pasopia7)
- MCFG_PALETTE_LENGTH(8)
- MCFG_PALETTE_INIT_OVERRIDE(pasopia7_state,p7_raster)
- MCFG_GFXDECODE_ADD("gfxdecode", pasopia7 )
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(pasopia7_state,p7_raster)
+ MCFG_GFXDECODE_ADD("gfxdecode", pasopia7 )
MCFG_MC6845_ADD("crtc", H46505, "screen", VDP_CLOCK, mc6845_intf) /* unknown clock, hand tuned to get ~60 fps */
MACHINE_CONFIG_END
@@ -1031,9 +1031,9 @@ static MACHINE_CONFIG_DERIVED( p7_lcd, p7_base )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
MCFG_VIDEO_START_OVERRIDE(pasopia7_state,pasopia7)
MCFG_SCREEN_UPDATE_DRIVER(pasopia7_state, screen_update_pasopia7)
- MCFG_PALETTE_LENGTH(8)
- MCFG_PALETTE_INIT_OVERRIDE(pasopia7_state,p7_lcd)
- MCFG_GFXDECODE_ADD("gfxdecode", pasopia7 )
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(pasopia7_state,p7_lcd)
+ MCFG_GFXDECODE_ADD("gfxdecode", pasopia7 )
MCFG_MC6845_ADD("crtc", H46505, "screen", LCD_CLOCK, mc6845_intf) /* unknown clock, hand tuned to get ~60 fps */
MCFG_DEFAULT_LAYOUT( layout_lcd )
diff --git a/src/mess/drivers/pb1000.c b/src/mess/drivers/pb1000.c
index 1cbc5c24aa5..7ba27db5b46 100644
--- a/src/mess/drivers/pb1000.c
+++ b/src/mess/drivers/pb1000.c
@@ -52,7 +52,7 @@ public:
UINT16 pb1000_kb_r(running_machine &machine);
void kb_matrix_w(running_machine &machine, UINT8 matrix);
UINT16 read_touchscreen(running_machine &machine, UINT8 line);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(pb1000);
TIMER_CALLBACK_MEMBER(keyboard_timer);
};
@@ -280,10 +280,10 @@ static INPUT_PORTS_START( pb2000c )
PORT_BIT(0xffff, IP_ACTIVE_HIGH, IPT_UNUSED)
INPUT_PORTS_END
-void pb1000_state::palette_init()
+PALETTE_INIT_MEMBER(pb1000_state, pb1000)
{
- palette_set_color(machine(), 0, rgb_t(138, 146, 148));
- palette_set_color(machine(), 1, rgb_t(92, 83, 88));
+ palette.set_pen_color(0, rgb_t(138, 146, 148));
+ palette.set_pen_color(1, rgb_t(92, 83, 88));
}
@@ -519,8 +519,9 @@ static MACHINE_CONFIG_START( pb1000, pb1000_state )
MCFG_SCREEN_SIZE(192, 32)
MCFG_SCREEN_VISIBLE_AREA(0, 192-1, 0, 32-1)
MCFG_DEFAULT_LAYOUT(layout_lcd)
- MCFG_PALETTE_LENGTH(2)
- MCFG_GFXDECODE_ADD("gfxdecode", pb1000 )
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(pb1000_state, pb1000)
+ MCFG_GFXDECODE_ADD("gfxdecode", pb1000 )
MCFG_HD44352_ADD("hd44352", 910000, hd44352_pb1000_conf)
diff --git a/src/mess/drivers/pc.c b/src/mess/drivers/pc.c
index 8952e08a195..f78b916c662 100644
--- a/src/mess/drivers/pc.c
+++ b/src/mess/drivers/pc.c
@@ -837,6 +837,7 @@ static MACHINE_CONFIG_START( pccga, pc_state )
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("ins8250_1", ins8250_uart_device, cts_w))
MCFG_FRAGMENT_ADD( pcvideo_cga )
+
MCFG_GFXDECODE_ADD("gfxdecode", ibm5150)
/* sound hardware */
@@ -961,6 +962,7 @@ static MACHINE_CONFIG_START( europc, europc_pc_state )
/* video hardware */
MCFG_FRAGMENT_ADD( pcvideo_aga )
+
MCFG_GFXDECODE_ADD("gfxdecode", europc)
/* sound hardware */
@@ -1045,6 +1047,7 @@ static MACHINE_CONFIG_START( t1000hx, tandy_pc_state )
/* video hardware */
MCFG_PCVIDEO_T1000_ADD("pcvideo_t1000")
+
MCFG_GFXDECODE_ADD("gfxdecode", t1000)
/* sound hardware */
@@ -1120,6 +1123,7 @@ static MACHINE_CONFIG_START( t1000_16, tandy_pc_state )
/* video hardware */
MCFG_PCVIDEO_T1000_ADD("pcvideo_t1000")
+
MCFG_GFXDECODE_ADD("gfxdecode", t1000)
/* sound hardware */
@@ -1196,6 +1200,7 @@ static MACHINE_CONFIG_START( t1000_286, tandy_pc_state )
/* video hardware */
MCFG_PCVIDEO_T1000_ADD("pcvideo_t1000")
+
MCFG_GFXDECODE_ADD("gfxdecode", t1000)
/* sound hardware */
@@ -1281,6 +1286,7 @@ static MACHINE_CONFIG_START( ibmpcjr, tandy_pc_state )
/* video hardware */
MCFG_PCVIDEO_PCJR_ADD("pcvideo_pcjr")
+
MCFG_GFXDECODE_ADD("gfxdecode", ibmpcjr)
/* sound hardware */
@@ -1372,6 +1378,7 @@ static MACHINE_CONFIG_START( asst128, pc_state )
/* video hardware */
MCFG_FRAGMENT_ADD( pcvideo_mc1502 )
+
MCFG_GFXDECODE_ADD("gfxdecode", ibmpcjr)
/* sound hardware */
@@ -1527,6 +1534,7 @@ static MACHINE_CONFIG_START( poisk2, pc_state )
/* video hardware */
MCFG_FRAGMENT_ADD( pcvideo_poisk2 )
+
MCFG_GFXDECODE_ADD("gfxdecode", ibm5150)
/* sound hardware */
@@ -1596,6 +1604,7 @@ static MACHINE_CONFIG_START( zenith, pc_state )
/* video hardware */
MCFG_FRAGMENT_ADD( pcvideo_cga )
+
MCFG_GFXDECODE_ADD("gfxdecode", ibm5150)
/* sound hardware */
@@ -1665,6 +1674,7 @@ static MACHINE_CONFIG_START( olivetti, pc_state )
/* video hardware */
MCFG_FRAGMENT_ADD( pcvideo_cga )
+
MCFG_GFXDECODE_ADD("gfxdecode", ibm5150)
/* sound hardware */
@@ -1734,6 +1744,7 @@ static MACHINE_CONFIG_START( ibm5550, pc_state )
/* video hardware */
MCFG_FRAGMENT_ADD( pcvideo_cga )
+
MCFG_GFXDECODE_ADD("gfxdecode", ibm5150)
/* sound hardware */
diff --git a/src/mess/drivers/pc100.c b/src/mess/drivers/pc100.c
index 15a08b73736..e66545ef6ec 100644
--- a/src/mess/drivers/pc100.c
+++ b/src/mess/drivers/pc100.c
@@ -164,7 +164,7 @@ UINT32 pc100_state::screen_update_pc100(screen_device &screen, bitmap_ind16 &bit
dot |= pen[pen_i]<<pen_i;
if(y < 512 && x*16+xi < 768) /* TODO: safety check */
- bitmap.pix16(y, x*16+xi) = machine().pens[dot];
+ bitmap.pix16(y, x*16+xi) = m_palette->pen(dot);
}
count++;
@@ -254,7 +254,7 @@ WRITE16_MEMBER( pc100_state::pc100_paletteram_w )
g = (m_palram[offset] >> 3) & 7;
b = (m_palram[offset] >> 6) & 7;
- palette_set_color_rgb(machine(), offset, pal3bit(r),pal3bit(g),pal3bit(b));
+ m_palette->set_pen_color(offset, pal3bit(r),pal3bit(g),pal3bit(b));
}
}
@@ -532,8 +532,8 @@ static MACHINE_CONFIG_START( pc100, pc100_state )
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK*4, 1024, 0, 768, 264*2, 0, 512)
MCFG_SCREEN_UPDATE_DRIVER(pc100_state, screen_update_pc100)
MCFG_GFXDECODE_ADD("gfxdecode", pc100)
- MCFG_PALETTE_LENGTH(16)
-// MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD("palette", 16)
+// MCFG_PALETTE_INIT(black_and_white)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/pc1500.c b/src/mess/drivers/pc1500.c
index 819e8ead110..8c84a58ef1a 100644
--- a/src/mess/drivers/pc1500.c
+++ b/src/mess/drivers/pc1500.c
@@ -43,7 +43,7 @@ public:
DECLARE_WRITE8_MEMBER( port_c_w );
DECLARE_READ8_MEMBER( pc1500_kb_r );
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(pc1500);
};
static ADDRESS_MAP_START( pc1500_mem , AS_PROGRAM, 8, pc1500_state)
@@ -258,10 +258,10 @@ READ8_MEMBER( pc1500_state::port_a_r )
return 0xff;
}
-void pc1500_state::palette_init()
+PALETTE_INIT_MEMBER(pc1500_state, pc1500)
{
- palette_set_color(machine(), 0, rgb_t(138, 146, 148));
- palette_set_color(machine(), 1, rgb_t(92, 83, 88));
+ palette.set_pen_color(0, rgb_t(138, 146, 148));
+ palette.set_pen_color(1, rgb_t(92, 83, 88));
}
static const lh5810_interface lh5810_pc1500_config =
@@ -287,7 +287,8 @@ static MACHINE_CONFIG_START( pc1500, pc1500_state )
MCFG_SCREEN_SIZE(156, 8)
MCFG_SCREEN_VISIBLE_AREA(0, 156-1, 0, 7-1)
MCFG_DEFAULT_LAYOUT(layout_pc1500)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(pc1500_state, pc1500)
MCFG_LH5810_ADD("lh5810", lh5810_pc1500_config)
diff --git a/src/mess/drivers/pc2000.c b/src/mess/drivers/pc2000.c
index dd0166f2193..7522f33b338 100644
--- a/src/mess/drivers/pc2000.c
+++ b/src/mess/drivers/pc2000.c
@@ -58,7 +58,7 @@ public:
DECLARE_WRITE8_MEMBER( rombank2_w );
DECLARE_READ8_MEMBER( beep_r );
DECLARE_WRITE8_MEMBER( beep_w );
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(pc2000);
};
class gl3000s_state : public pc2000_state
@@ -803,10 +803,10 @@ void pc1000_state::machine_reset()
m_bank1->set_entry(0);
}
-void pc2000_state::palette_init()
+PALETTE_INIT_MEMBER(pc2000_state, pc2000)
{
- palette_set_color(machine(), 0, rgb_t(138, 146, 148));
- palette_set_color(machine(), 1, rgb_t(92, 83, 88));
+ palette.set_pen_color(0, rgb_t(138, 146, 148));
+ palette.set_pen_color(1, rgb_t(92, 83, 88));
}
static const gfx_layout hd44780_charlayout =
@@ -842,7 +842,8 @@ static MACHINE_CONFIG_START( pc2000, pc2000_state )
MCFG_SCREEN_SIZE(120, 18) //2x20 chars
MCFG_SCREEN_VISIBLE_AREA(0, 120-1, 0, 18-1)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(pc2000_state, pc2000)
MCFG_GFXDECODE_ADD("gfxdecode", pc2000)
MCFG_DEFAULT_LAYOUT(layout_lcd)
diff --git a/src/mess/drivers/pc4.c b/src/mess/drivers/pc4.c
index a9d9b683701..b1669919ad7 100644
--- a/src/mess/drivers/pc4.c
+++ b/src/mess/drivers/pc4.c
@@ -161,10 +161,10 @@ static INPUT_PORTS_START( pc4 )
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_UNUSED
INPUT_PORTS_END
-void pc4_state::palette_init()
+PALETTE_INIT_MEMBER(pc4_state, pc4)
{
- palette_set_color(machine(), 0, rgb_t(138, 146, 148));
- palette_set_color(machine(), 1, rgb_t(92, 83, 88));
+ palette.set_pen_color(0, rgb_t(138, 146, 148));
+ palette.set_pen_color(1, rgb_t(92, 83, 88));
}
static const gfx_layout pc4_charlayout =
@@ -230,7 +230,8 @@ static MACHINE_CONFIG_START( pc4, pc4_state )
MCFG_SCREEN_SIZE(240, 36)
MCFG_SCREEN_VISIBLE_AREA(0, 240-1, 0, 36-1)
MCFG_DEFAULT_LAYOUT(layout_lcd)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(pc4_state, pc4)
MCFG_GFXDECODE_ADD("gfxdecode", pc4)
/* sound hardware */
diff --git a/src/mess/drivers/pc6001.c b/src/mess/drivers/pc6001.c
index 53225f5c27e..b318707d3b2 100644
--- a/src/mess/drivers/pc6001.c
+++ b/src/mess/drivers/pc6001.c
@@ -247,7 +247,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(pc6001);
DECLARE_MACHINE_RESET(pc6001m2);
DECLARE_PALETTE_INIT(pc6001m2);
DECLARE_MACHINE_RESET(pc6001sr);
@@ -362,7 +362,7 @@ void pc6001_state::draw_gfx_mode4(bitmap_ind16 &bitmap,const rectangle &cliprect
color = ((tile)>>(7-xi) & 1) ? fgcol : 0;
- bitmap.pix16((y+24), (x*8+xi)+32) = machine().pens[color];
+ bitmap.pix16((y+24), (x*8+xi)+32) = m_palette->pen(color);
}
}
else
@@ -373,8 +373,8 @@ void pc6001_state::draw_gfx_mode4(bitmap_ind16 &bitmap,const rectangle &cliprect
color = (attr & 2) ? (pen_wattr[col_setting-1][fgcol]) : (pen_gattr[col_setting-1][fgcol]);
- bitmap.pix16((y+24), ((x*8+xi*2)+0)+32) = machine().pens[color];
- bitmap.pix16((y+24), ((x*8+xi*2)+1)+32) = machine().pens[color];
+ bitmap.pix16((y+24), ((x*8+xi*2)+0)+32) = m_palette->pen(color);
+ bitmap.pix16((y+24), ((x*8+xi*2)+1)+32) = m_palette->pen(color);
}
}
}
@@ -407,7 +407,7 @@ void pc6001_state::draw_bitmap_2bpp(bitmap_ind16 &bitmap,const rectangle &clipre
color = ((tile >> i) & 3)+8;
color+= col_bank;
- bitmap.pix16(((y*shrink_y+yi)+24), (x*shrink_x+((shrink_x-1)-xi))+32) = machine().pens[color];
+ bitmap.pix16(((y*shrink_y+yi)+24), (x*shrink_x+((shrink_x-1)-xi))+32) = m_palette->pen(color);
}
}
}
@@ -430,9 +430,9 @@ void pc6001_state::draw_bitmap_2bpp(bitmap_ind16 &bitmap,const rectangle &clipre
color = ((tile >> i) & 3)+8;
color+= col_bank;
- bitmap.pix16((((y+0)*shrink_y+yi)+24), (x*shrink_x+((shrink_x-1)-xi))+32) = machine().pens[color];
- bitmap.pix16((((y+1)*shrink_y+yi)+24), (x*shrink_x+((shrink_x-1)-xi))+32) = machine().pens[color];
- bitmap.pix16((((y+2)*shrink_y+yi)+24), (x*shrink_x+((shrink_x-1)-xi))+32) = machine().pens[color];
+ bitmap.pix16((((y+0)*shrink_y+yi)+24), (x*shrink_x+((shrink_x-1)-xi))+32) = m_palette->pen(color);
+ bitmap.pix16((((y+1)*shrink_y+yi)+24), (x*shrink_x+((shrink_x-1)-xi))+32) = m_palette->pen(color);
+ bitmap.pix16((((y+2)*shrink_y+yi)+24), (x*shrink_x+((shrink_x-1)-xi))+32) = m_palette->pen(color);
}
}
}
@@ -467,7 +467,7 @@ void pc6001_state::draw_tile_3bpp(bitmap_ind16 &bitmap,const rectangle &cliprect
color = ((tile >> i) & 1) ? pen+8 : 0;
- bitmap.pix16(((y*12+(11-yi))+24), (x*8+(7-xi))+32) = machine().pens[color];
+ bitmap.pix16(((y*12+(11-yi))+24), (x*8+(7-xi))+32) = m_palette->pen(color);
}
}
}
@@ -503,7 +503,7 @@ void pc6001_state::draw_tile_text(bitmap_ind16 &bitmap,const rectangle &cliprect
color = pen ? fgcol : 0;
}
- bitmap.pix16(((y*12+yi)+24), (x*8+xi)+32) = machine().pens[color];
+ bitmap.pix16(((y*12+yi)+24), (x*8+xi)+32) = m_palette->pen(color);
}
}
}
@@ -525,7 +525,7 @@ void pc6001_state::draw_border(bitmap_ind16 &bitmap,const rectangle &cliprect,in
else
color = 0; //FIXME: other modes not yet checked
- bitmap.pix16(y, x) = machine().pens[color];
+ bitmap.pix16(y, x) = m_palette->pen(color);
}
}
}
@@ -617,9 +617,9 @@ UINT32 pc6001_state::screen_update_pc6001m2(screen_device &screen, bitmap_ind16
color |= ((pen[1] & 2) << 2);
if (cliprect.contains((x+i)*2+0, y))
- bitmap.pix16(y, (x+i)*2+0) = machine().pens[color];
+ bitmap.pix16(y, (x+i)*2+0) = m_palette->pen(color);
if (cliprect.contains((x+i)*2+1, y))
- bitmap.pix16(y, (x+i)*2+1) = machine().pens[color];
+ bitmap.pix16(y, (x+i)*2+1) = m_palette->pen(color);
}
count++;
@@ -665,7 +665,7 @@ UINT32 pc6001_state::screen_update_pc6001m2(screen_device &screen, bitmap_ind16
}
if (cliprect.contains(x+i, y))
- bitmap.pix16(y, (x+i)) = machine().pens[color];
+ bitmap.pix16(y, (x+i)) = m_palette->pen(color);
}
count++;
@@ -705,7 +705,7 @@ UINT32 pc6001_state::screen_update_pc6001m2(screen_device &screen, bitmap_ind16
color = pen ? fgcol : bgcol;
if (cliprect.contains(x*8+xi, y*12+yi))
- bitmap.pix16(((y*12+yi)), (x*8+xi)) = machine().pens[color];
+ bitmap.pix16(((y*12+yi)), (x*8+xi)) = m_palette->pen(color);
}
}
}
@@ -749,7 +749,7 @@ UINT32 pc6001_state::screen_update_pc6001sr(screen_device &screen, bitmap_ind16
color = pen ? fgcol : bgcol;
if (cliprect.contains(x*8+xi, y*12+yi))
- bitmap.pix16(((y*12+yi)), (x*8+xi)) = machine().pens[color];
+ bitmap.pix16(((y*12+yi)), (x*8+xi)) = m_palette->pen(color);
}
}
}
@@ -768,42 +768,42 @@ UINT32 pc6001_state::screen_update_pc6001sr(screen_device &screen, bitmap_ind16
color = m_video_ram[count] & 0x0f;
if (cliprect.contains(x+0, y+0))
- bitmap.pix16((y+0), (x+0)) = machine().pens[color+0x10];
+ bitmap.pix16((y+0), (x+0)) = m_palette->pen(color+0x10);
color = (m_video_ram[count] & 0xf0) >> 4;
if (cliprect.contains(x+1, y+0))
- bitmap.pix16((y+0), (x+1)) = machine().pens[color+0x10];
+ bitmap.pix16((y+0), (x+1)) = m_palette->pen(color+0x10);
color = m_video_ram[count+1] & 0x0f;
if (cliprect.contains(x+2, y+0))
- bitmap.pix16((y+0), (x+2)) = machine().pens[color+0x10];
+ bitmap.pix16((y+0), (x+2)) = m_palette->pen(color+0x10);
color = (m_video_ram[count+1] & 0xf0) >> 4;
if (cliprect.contains(x+3, y+0))
- bitmap.pix16((y+0), (x+3)) = machine().pens[color+0x10];
+ bitmap.pix16((y+0), (x+3)) = m_palette->pen(color+0x10);
color = m_video_ram[count+2] & 0x0f;
if (cliprect.contains(x+0, y+1))
- bitmap.pix16((y+1), (x+0)) = machine().pens[color+0x10];
+ bitmap.pix16((y+1), (x+0)) = m_palette->pen(color+0x10);
color = (m_video_ram[count+2] & 0xf0) >> 4;
if (cliprect.contains(x+1, y+1))
- bitmap.pix16((y+1), (x+1)) = machine().pens[color+0x10];
+ bitmap.pix16((y+1), (x+1)) = m_palette->pen(color+0x10);
color = m_video_ram[count+3] & 0x0f;
if (cliprect.contains(x+2, y+1))
- bitmap.pix16((y+1), (x+2)) = machine().pens[color+0x10];
+ bitmap.pix16((y+1), (x+2)) = m_palette->pen(color+0x10);
color = (m_video_ram[count+3] & 0xf0) >> 4;
if (cliprect.contains(x+3, y+1))
- bitmap.pix16((y+1), (x+3)) = machine().pens[color+0x10];
+ bitmap.pix16((y+1), (x+3)) = m_palette->pen(color+0x10);
count+=4;
@@ -2229,12 +2229,12 @@ static const rgb_t mk2_defcolors[] =
rgb_t(0xff, 0xff, 0xff) /* WHITE */
};
-void pc6001_state::palette_init()
+PALETTE_INIT_MEMBER(pc6001_state, pc6001)
{
int i;
for(i=0;i<8+4;i++)
- palette_set_color(machine(), i+8,defcolors[i]);
+ palette.set_pen_color(i+8,defcolors[i]);
}
PALETTE_INIT_MEMBER(pc6001_state,pc6001m2)
@@ -2242,10 +2242,10 @@ PALETTE_INIT_MEMBER(pc6001_state,pc6001m2)
int i;
for(i=0;i<8;i++)
- palette_set_color(machine(), i+8,defcolors[i]);
+ palette.set_pen_color(i+8,defcolors[i]);
for(i=0x10;i<0x20;i++)
- palette_set_color(machine(), i,mk2_defcolors[i-0x10]);
+ palette.set_pen_color(i,mk2_defcolors[i-0x10]);
}
#if 0
@@ -2329,7 +2329,8 @@ static MACHINE_CONFIG_START( pc6001, pc6001_state )
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
- MCFG_PALETTE_LENGTH(16+4)
+ MCFG_PALETTE_ADD("palette", 16+4)
+ MCFG_PALETTE_INIT_OWNER(pc6001_state, pc6001)
MCFG_I8255_ADD( "ppi8255", pc6001_ppi8255_interface )
/* uart */
@@ -2366,8 +2367,10 @@ static MACHINE_CONFIG_DERIVED( pc6001m2, pc6001 )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(pc6001_state, screen_update_pc6001m2)
- MCFG_PALETTE_LENGTH(16+16)
- MCFG_PALETTE_INIT_OVERRIDE(pc6001_state,pc6001m2)
+
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 16+16)
+ MCFG_PALETTE_INIT_OWNER(pc6001_state,pc6001m2)
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
diff --git a/src/mess/drivers/pc8001.c b/src/mess/drivers/pc8001.c
index eeb44ddcdcf..11f235882a8 100644
--- a/src/mess/drivers/pc8001.c
+++ b/src/mess/drivers/pc8001.c
@@ -352,7 +352,7 @@ INPUT_PORTS_END
/* uPD3301 Interface */
-static const rgb_t PALETTE[] =
+static const rgb_t PALETTE_PC8001[] =
{
rgb_t::black,
rgb_t(0x00, 0x00, 0xff),
@@ -380,7 +380,7 @@ static UPD3301_DISPLAY_PIXELS( pc8001_display_pixels )
{
int color = BIT(data, 7) ^ rvv;
- bitmap.pix32(y, (sx * 8) + i) = PALETTE[color ? 7 : 0];
+ bitmap.pix32(y, (sx * 8) + i) = PALETTE_PC8001[color ? 7 : 0];
data <<= 1;
}
@@ -393,8 +393,8 @@ static UPD3301_DISPLAY_PIXELS( pc8001_display_pixels )
{
int color = BIT(data, 7) ^ rvv;
- bitmap.pix32(y, (sx/2 * 16) + (i * 2)) = PALETTE[color ? 7 : 0];
- bitmap.pix32(y, (sx/2 * 16) + (i * 2) + 1) = PALETTE[color ? 7 : 0];
+ bitmap.pix32(y, (sx/2 * 16) + (i * 2)) = PALETTE_PC8001[color ? 7 : 0];
+ bitmap.pix32(y, (sx/2 * 16) + (i * 2) + 1) = PALETTE_PC8001[color ? 7 : 0];
data <<= 1;
}
diff --git a/src/mess/drivers/pc8801.c b/src/mess/drivers/pc8801.c
index 4d0ea411bdf..664109e2829 100644
--- a/src/mess/drivers/pc8801.c
+++ b/src/mess/drivers/pc8801.c
@@ -468,13 +468,12 @@ public:
void fdc_irq_w(bool state);
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
-
+ DECLARE_PALETTE_INIT(pc8801);
protected:
virtual void video_start();
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
public:
DECLARE_MACHINE_RESET(pc8801_clock_speed);
DECLARE_MACHINE_RESET(pc8801_dic);
@@ -567,15 +566,15 @@ void pc8801_state::draw_bitmap_3bpp(bitmap_ind16 &bitmap,const rectangle &clipre
if(y_double)
{
if(cliprect.contains(x+xi, y+0))
- bitmap.pix16(y+0, x+xi) = machine().pens[pen & 7];
+ bitmap.pix16(y+0, x+xi) = m_palette->pen(pen & 7);
if(cliprect.contains(x+xi, y+1))
- bitmap.pix16(y+1, x+xi) = machine().pens[pen & 7];
+ bitmap.pix16(y+1, x+xi) = m_palette->pen(pen & 7);
}
else
{
if(cliprect.contains(x+xi, y+0))
- bitmap.pix16(y, x+xi) = machine().pens[pen & 7];
+ bitmap.pix16(y, x+xi) = m_palette->pen(pen & 7);
}
}
@@ -613,15 +612,15 @@ void pc8801_state::draw_bitmap_1bpp(bitmap_ind16 &bitmap,const rectangle &clipre
if((m_gfx_ctrl & 1))
{
if(cliprect.contains(x+xi, y*2+0))
- bitmap.pix16(y*2+0, x+xi) = machine().pens[pen ? color : 0];
+ bitmap.pix16(y*2+0, x+xi) = m_palette->pen(pen ? color : 0);
if(cliprect.contains(x+xi, y*2+1))
- bitmap.pix16(y*2+1, x+xi) = machine().pens[pen ? color : 0];
+ bitmap.pix16(y*2+1, x+xi) = m_palette->pen(pen ? color : 0);
}
else
{
if(cliprect.contains(x+xi, y))
- bitmap.pix16(y, x+xi) = machine().pens[pen ? color : 0];
+ bitmap.pix16(y, x+xi) = m_palette->pen(pen ? color : 0);
}
}
@@ -649,7 +648,7 @@ void pc8801_state::draw_bitmap_1bpp(bitmap_ind16 &bitmap,const rectangle &clipre
pen^=1;
if(cliprect.contains(x+xi, y))
- bitmap.pix16(y, x+xi) = machine().pens[pen ? 7 : 0];
+ bitmap.pix16(y, x+xi) = m_palette->pen(pen ? 7 : 0);
}
count++;
@@ -794,13 +793,13 @@ void pc8801_state::pc8801_draw_char(bitmap_ind16 &bitmap,int x,int y,int pal,UIN
if(color != -1)
{
- bitmap.pix16(res_y, res_x) = machine().pens[color];
+ bitmap.pix16(res_y, res_x) = m_palette->pen(color);
if(width)
{
if(!machine().primary_screen->visible_area().contains(res_x+1, res_y))
continue;
- bitmap.pix16(res_y, res_x+1) = machine().pens[color];
+ bitmap.pix16(res_y, res_x+1) = m_palette->pen(color);
}
}
}
@@ -865,7 +864,7 @@ void pc8801_state::draw_text(bitmap_ind16 &bitmap,int y_size, UINT8 width)
UINT32 pc8801_state::screen_update( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(machine().pens[0], cliprect);
+ bitmap.fill(m_palette->pen(0), cliprect);
// popmessage("%04x %04x %02x",m_dma_address[2],m_dma_counter[2],m_dmac_mode);
@@ -1424,7 +1423,7 @@ WRITE8_MEMBER(pc8801_state::pc8801_palram_w)
m_palram[offset].g = data & 4 ? 7 : 0;
}
- palette_set_color_rgb(machine(), offset, pal3bit(m_palram[offset].r), pal3bit(m_palram[offset].g), pal3bit(m_palram[offset].b));
+ m_palette->set_pen_color(offset, pal3bit(m_palram[offset].r), pal3bit(m_palram[offset].g), pal3bit(m_palram[offset].b));
}
WRITE8_MEMBER(pc8801_state::pc8801_layer_masking_w)
@@ -2511,7 +2510,7 @@ void pc8801_state::machine_reset()
int i;
for(i=0;i<0x10;i++) //text + bitmap
- palette_set_color_rgb(machine(), i, pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 0));
+ m_palette->set_pen_color(i, pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 0));
}
m_has_clock_speed = 0;
@@ -2554,12 +2553,12 @@ MACHINE_RESET_MEMBER(pc8801_state,pc8801_cdrom)
}
}
-void pc8801_state::palette_init()
+PALETTE_INIT_MEMBER(pc8801_state, pc8801)
{
int i;
for(i=0;i<0x10;i++) //text + bitmap
- palette_set_color_rgb(machine(), i, pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 0));
+ palette.set_pen_color(i, pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 0));
}
void pc8801_state::fdc_irq_w(bool state)
@@ -2669,8 +2668,9 @@ static MACHINE_CONFIG_START( pc8801, pc8801_state )
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK_24KHz,848,0,640,448,0,400)
MCFG_SCREEN_UPDATE_DRIVER(pc8801_state, screen_update)
- MCFG_GFXDECODE_ADD("gfxdecode", pc8801 )
- MCFG_PALETTE_LENGTH(0x10)
+ MCFG_GFXDECODE_ADD("gfxdecode", pc8801 )
+ MCFG_PALETTE_ADD("palette", 0x10)
+ MCFG_PALETTE_INIT_OWNER(pc8801_state, pc8801)
// MCFG_VIDEO_START_OVERRIDE(pc8801_state,pc8801)
diff --git a/src/mess/drivers/pc88va.c b/src/mess/drivers/pc88va.c
index 0ffd89d2b3d..b713e444d85 100644
--- a/src/mess/drivers/pc88va.c
+++ b/src/mess/drivers/pc88va.c
@@ -251,7 +251,7 @@ void pc88va_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect)
pen = pen & 1 ? fg_col : (bc) ? 8 : -1;
if(pen != -1) //transparent pen
- bitmap.pix32(yp+y_i, xp+x_i+(x_s)) = machine().pens[pen];
+ bitmap.pix32(yp+y_i, xp+x_i+(x_s)) = m_palette->pen(pen);
}
spr_count+=2;
}
@@ -276,7 +276,7 @@ void pc88va_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect)
pen = (BITSWAP16(tvram[(spda+spr_count) / 2],7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8)) >> (16-(x_s*8)) & 0xf;
//if(bc != -1) //transparent pen
- bitmap.pix32(yp+y_i, xp+x_i+(x_s)) = machine().pens[pen];
+ bitmap.pix32(yp+y_i, xp+x_i+(x_s)) = m_palette->pen(pen);
}
spr_count+=2;
}
@@ -471,7 +471,7 @@ void pc88va_state::draw_text(bitmap_rgb32 &bitmap, const rectangle &cliprect)
if(secret) { pen = 0; } //hide text
if(pen != -1) //transparent
- bitmap.pix32(res_y, res_x) = machine().pens[pen];
+ bitmap.pix32(res_y, res_x) = m_palette->pen(pen);
}
}
@@ -949,7 +949,7 @@ WRITE16_MEMBER(pc88va_state::palette_ram_w)
r = (m_palram[offset] & 0x03c0) >> 6;
g = (m_palram[offset] & 0x7800) >> 11;
- palette_set_color_rgb(machine(),offset,pal4bit(r),pal4bit(g),pal4bit(b));
+ m_palette->set_pen_color(offset,pal4bit(r),pal4bit(g),pal4bit(b));
}
READ16_MEMBER(pc88va_state::sys_port4_r)
@@ -1716,7 +1716,7 @@ void pc88va_state::machine_reset()
{
UINT8 i;
for(i=0;i<32;i++)
- palette_set_color_rgb(machine(),i,pal1bit((i & 2) >> 1),pal1bit((i & 4) >> 2),pal1bit(i & 1));
+ m_palette->set_pen_color(i,pal1bit((i & 2) >> 1),pal1bit((i & 4) >> 2),pal1bit(i & 1));
}
m_tsp.tvram_vreg_offset = 0;
@@ -1850,9 +1850,9 @@ static MACHINE_CONFIG_START( pc88va, pc88va_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
MCFG_SCREEN_UPDATE_DRIVER(pc88va_state, screen_update_pc88va)
- MCFG_PALETTE_LENGTH(32)
-// MCFG_PALETTE_INIT_OVERRIDE(pc88va_state, pc8801 )
- MCFG_GFXDECODE_ADD("gfxdecode", pc88va )
+ MCFG_PALETTE_ADD("palette", 32)
+// MCFG_PALETTE_INIT_OWNER(pc88va_state, pc8801 )
+ MCFG_GFXDECODE_ADD("gfxdecode", pc88va )
MCFG_I8255_ADD( "d8255_2", master_fdd_intf )
MCFG_I8255_ADD( "d8255_3", r232c_ctrl_intf )
diff --git a/src/mess/drivers/pc9801.c b/src/mess/drivers/pc9801.c
index dcf28f1cbdd..adcf61d67e5 100644
--- a/src/mess/drivers/pc9801.c
+++ b/src/mess/drivers/pc9801.c
@@ -781,7 +781,7 @@ void pc9801_state::video_start()
UINT32 pc9801_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
/* graphics */
m_hgdc2->screen_update(screen, bitmap, cliprect);
@@ -1462,8 +1462,8 @@ WRITE8_MEMBER(pc9801_state::pc9801_a0_w)
pal_entry = (((offset & 4) >> 1) | ((offset & 2) << 1)) >> 1;
pal_entry ^= 3;
- palette_set_color_rgb(machine(), (pal_entry)|4|8, pal1bit((data & 0x2) >> 1), pal1bit((data & 4) >> 2), pal1bit((data & 1) >> 0));
- palette_set_color_rgb(machine(), (pal_entry)|8, pal1bit((data & 0x20) >> 5), pal1bit((data & 0x40) >> 6), pal1bit((data & 0x10) >> 4));
+ m_palette->set_pen_color((pal_entry)|4|8, pal1bit((data & 0x2) >> 1), pal1bit((data & 4) >> 2), pal1bit((data & 1) >> 0));
+ m_palette->set_pen_color((pal_entry)|8, pal1bit((data & 0x20) >> 5), pal1bit((data & 0x40) >> 6), pal1bit((data & 0x10) >> 4));
return;
}
default:
@@ -2213,7 +2213,7 @@ WRITE8_MEMBER(pc9801_state::pc9801rs_a0_w)
case 0x0e: m_analog16.b[m_analog16.pal_entry] = data & 0xf; break;
}
- palette_set_color_rgb(machine(), (m_analog16.pal_entry)+0x10,
+ m_palette->set_pen_color((m_analog16.pal_entry)+0x10,
pal4bit(m_analog16.r[m_analog16.pal_entry]),
pal4bit(m_analog16.g[m_analog16.pal_entry]),
pal4bit(m_analog16.b[m_analog16.pal_entry]));
@@ -2598,7 +2598,7 @@ WRITE8_MEMBER(pc9801_state::pc9821_a0_w)
case 0x0e: m_analog256.b[m_analog256.pal_entry] = data & 0xff; break;
}
- palette_set_color_rgb(machine(), (m_analog256.pal_entry)+0x20,
+ m_palette->set_pen_color((m_analog256.pal_entry)+0x20,
m_analog256.r[m_analog256.pal_entry],
m_analog256.g[m_analog256.pal_entry],
m_analog256.b[m_analog256.pal_entry]);
@@ -3403,9 +3403,9 @@ PALETTE_INIT_MEMBER(pc9801_state,pc9801)
int i;
for(i=0;i<8;i++)
- palette_set_color_rgb(machine(), i, pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 0));
- for(i=8;i<machine().total_colors();i++)
- palette_set_color_rgb(machine(), i, pal1bit(0), pal1bit(0), pal1bit(0));
+ palette.set_pen_color(i, pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 0));
+ for(i=8;i<palette.entries();i++)
+ palette.set_pen_color(i, pal1bit(0), pal1bit(0), pal1bit(0));
}
IRQ_CALLBACK_MEMBER(pc9801_state::irq_callback)
@@ -3715,8 +3715,8 @@ static MACHINE_CONFIG_START( pc9801, pc9801_state )
MCFG_UPD7220_ADD("upd7220_chr", 5000000/2, hgdc_1_intf, upd7220_1_map)
MCFG_UPD7220_ADD("upd7220_btm", 5000000/2, hgdc_2_intf, upd7220_2_map)
- MCFG_PALETTE_LENGTH(16)
- MCFG_PALETTE_INIT_OVERRIDE(pc9801_state,pc9801)
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(pc9801_state,pc9801)
MCFG_GFXDECODE_ADD("gfxdecode", pc9801)
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -3785,8 +3785,8 @@ static MACHINE_CONFIG_START( pc9801rs, pc9801_state )
MCFG_UPD7220_ADD("upd7220_chr", 5000000/2, hgdc_1_intf, upd7220_1_map)
MCFG_UPD7220_ADD("upd7220_btm", 5000000/2, hgdc_2_intf, upd7220_2_map)
- MCFG_PALETTE_LENGTH(16+16)
- MCFG_PALETTE_INIT_OVERRIDE(pc9801_state,pc9801)
+ MCFG_PALETTE_ADD("palette", 16+16)
+ MCFG_PALETTE_INIT_OWNER(pc9801_state,pc9801)
MCFG_GFXDECODE_ADD("gfxdecode", pc9801)
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -3869,8 +3869,8 @@ static MACHINE_CONFIG_START( pc9821, pc9801_state )
MCFG_UPD7220_ADD("upd7220_chr", 5000000/2, hgdc_1_intf, upd7220_1_map)
MCFG_UPD7220_ADD("upd7220_btm", 5000000/2, hgdc_2_intf, upd7220_2_map)
- MCFG_PALETTE_LENGTH(16+16+256)
- MCFG_PALETTE_INIT_OVERRIDE(pc9801_state,pc9801)
+ MCFG_PALETTE_ADD("palette", 16+16+256)
+ MCFG_PALETTE_INIT_OWNER(pc9801_state,pc9801)
MCFG_GFXDECODE_ADD("gfxdecode", pc9801)
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/pce.c b/src/mess/drivers/pce.c
index 89d7dc190ba..29b5892a011 100644
--- a/src/mess/drivers/pce.c
+++ b/src/mess/drivers/pce.c
@@ -381,8 +381,6 @@ static MACHINE_CONFIG_START( pce_common, pce_state )
MCFG_SCREEN_RAW_PARAMS(MAIN_CLOCK, HUC6260_WPF, 64, 64 + 1024 + 64, HUC6260_LPF, 18, 18 + 242)
MCFG_SCREEN_UPDATE_DRIVER( pce_state, screen_update )
- MCFG_PALETTE_LENGTH( HUC6260_PALETTE_SIZE )
-
MCFG_HUC6260_ADD( "huc6260", MAIN_CLOCK, pce_huc6260_config )
MCFG_HUC6270_ADD( "huc6270", pce_huc6270_config )
@@ -425,8 +423,6 @@ static MACHINE_CONFIG_START( sgx, pce_state )
MCFG_SCREEN_RAW_PARAMS(MAIN_CLOCK, HUC6260_WPF, 64, 64 + 1024 + 64, HUC6260_LPF, 18, 18 + 242)
MCFG_SCREEN_UPDATE_DRIVER( pce_state, screen_update )
- MCFG_PALETTE_LENGTH( HUC6260_PALETTE_SIZE )
-
MCFG_HUC6260_ADD( "huc6260", MAIN_CLOCK, sgx_huc6260_config )
MCFG_HUC6270_ADD( "huc6270_0", sgx_huc6270_0_config )
MCFG_HUC6270_ADD( "huc6270_1", sgx_huc6270_1_config )
diff --git a/src/mess/drivers/pce220.c b/src/mess/drivers/pce220.c
index abbc13d3ec5..49676c1f5b1 100644
--- a/src/mess/drivers/pce220.c
+++ b/src/mess/drivers/pce220.c
@@ -915,8 +915,8 @@ TIMER_DEVICE_CALLBACK_MEMBER(pce220_state::pce220_timer_callback)
PALETTE_INIT_MEMBER(pce220_state,pce220)
{
- palette_set_color(machine(), 0, rgb_t(138, 146, 148));
- palette_set_color(machine(), 1, rgb_t(92, 83, 88));
+ palette.set_pen_color(0, rgb_t(138, 146, 148));
+ palette.set_pen_color(1, rgb_t(92, 83, 88));
}
@@ -935,8 +935,8 @@ static MACHINE_CONFIG_START( pce220, pce220_state )
MCFG_SCREEN_SIZE(24*6, 4*8)
MCFG_SCREEN_VISIBLE_AREA(0, 24*6-1, 0, 4*8-1)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(pce220_state,pce220)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(pce220_state,pce220)
MCFG_DEFAULT_LAYOUT(layout_lcd)
/* sound hardware */
@@ -970,8 +970,8 @@ static MACHINE_CONFIG_START( pcg850v, pcg850v_state )
MCFG_SCREEN_SIZE(144, 48)
MCFG_SCREEN_VISIBLE_AREA(0, 144-1, 0, 48-1)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(pce220_state,pce220)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(pce220_state,pce220)
MCFG_DEFAULT_LAYOUT(layout_lcd)
/* sound hardware */
diff --git a/src/mess/drivers/pcm.c b/src/mess/drivers/pcm.c
index f5b32d8fcd5..24e51879c36 100644
--- a/src/mess/drivers/pcm.c
+++ b/src/mess/drivers/pcm.c
@@ -327,8 +327,7 @@ static MACHINE_CONFIG_START( pcm, pcm_state )
MCFG_SCREEN_SIZE(64*8, 16*8)
MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 16*8-1)
MCFG_GFXDECODE_ADD("gfxdecode", pcm)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* Sound */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/pcw.c b/src/mess/drivers/pcw.c
index 79439db7460..79d09673eda 100644
--- a/src/mess/drivers/pcw.c
+++ b/src/mess/drivers/pcw.c
@@ -1284,8 +1284,8 @@ static MACHINE_CONFIG_START( pcw, pcw_state )
MCFG_SCREEN_VISIBLE_AREA(0, PCW_SCREEN_WIDTH-1, 0, PCW_SCREEN_HEIGHT-1)
MCFG_SCREEN_UPDATE_DRIVER(pcw_state, screen_update_pcw)
- MCFG_PALETTE_LENGTH(PCW_NUM_COLOURS)
-
+ MCFG_PALETTE_ADD("palette", PCW_NUM_COLOURS)
+ MCFG_PALETTE_INIT_OWNER(pcw_state, pcw)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/pcw16.c b/src/mess/drivers/pcw16.c
index 01bd47aa633..fe9b6bac082 100644
--- a/src/mess/drivers/pcw16.c
+++ b/src/mess/drivers/pcw16.c
@@ -1051,8 +1051,8 @@ static MACHINE_CONFIG_START( pcw16, pcw16_state )
MCFG_SCREEN_VISIBLE_AREA(0, PCW16_SCREEN_WIDTH-1, 0, PCW16_SCREEN_HEIGHT-1)
MCFG_SCREEN_UPDATE_DRIVER(pcw16_state, screen_update_pcw16)
- MCFG_PALETTE_LENGTH(PCW16_NUM_COLOURS)
-
+ MCFG_PALETTE_ADD("palette", PCW16_NUM_COLOURS)
+ MCFG_PALETTE_INIT_OWNER(pcw16_state, pcw16)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/pda600.c b/src/mess/drivers/pda600.c
index 39037c89937..6ce7eeb6dee 100644
--- a/src/mess/drivers/pda600.c
+++ b/src/mess/drivers/pda600.c
@@ -215,8 +215,7 @@ static MACHINE_CONFIG_START( pda600, pda600_state )
MCFG_SCREEN_UPDATE_DRIVER( pda600_state, screen_update )
MCFG_GFXDECODE_ADD("gfxdecode", pda600)
MCFG_DEFAULT_LAYOUT(layout_lcd)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
// NVRAM needs to be filled with random data to fail the checksum and be initialized correctly
MCFG_NVRAM_ADD_RANDOM_FILL("nvram")
diff --git a/src/mess/drivers/pdp1.c b/src/mess/drivers/pdp1.c
index 3dc7c0a306d..c30d5aeb650 100644
--- a/src/mess/drivers/pdp1.c
+++ b/src/mess/drivers/pdp1.c
@@ -299,7 +299,7 @@ static GFXDECODE_START( pdp1 )
GFXDECODE_END
/* Initialise the palette */
-void pdp1_state::palette_init()
+PALETTE_INIT_MEMBER(pdp1_state, pdp1)
{
/* rgb components for the two color emissions */
const double r1 = .1, g1 = .1, b1 = .924, r2 = .7, g2 = .7, b2 = .076;
@@ -311,8 +311,6 @@ void pdp1_state::palette_init()
double cur_level_1, cur_level_2;
UINT8 i, r, g, b;
- machine().colortable = colortable_alloc(machine(), total_colors_needed);
-
/* initialize CRT palette */
/* compute the decay factor per refresh frame */
@@ -328,28 +326,28 @@ void pdp1_state::palette_init()
g = (int) ((g1*cur_level_1 + g2*cur_level_2) + .5);
b = (int) ((b1*cur_level_1 + b2*cur_level_2) + .5);
/* write color in palette */
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ m_palette->set_indirect_color(i, rgb_t(r, g, b));
/* apply decay for next iteration */
cur_level_1 *= decay_1;
cur_level_2 *= decay_2;
}
- colortable_palette_set_color(machine().colortable, 0, rgb_t(0, 0, 0));
+ m_palette->set_indirect_color(0, rgb_t(0, 0, 0));
/* load static palette */
for ( i = 0; i < 6; i++ )
{
r = pdp1_colors[i*3]; g = pdp1_colors[i*3+1]; b = pdp1_colors[i*3+2];
- colortable_palette_set_color(machine().colortable, pen_crt_num_levels + i, rgb_t(r, g, b));
+ m_palette->set_indirect_color(pen_crt_num_levels + i, rgb_t(r, g, b));
}
/* copy colortable to palette */
for( i = 0; i < total_colors_needed; i++ )
- colortable_entry_set_value(machine().colortable, i, i);
+ m_palette->set_pen_indirect(i, i);
/* set up palette for text */
for( i = 0; i < 6; i++ )
- colortable_entry_set_value(machine().colortable, total_colors_needed + i, pdp1_palette[i]);
+ m_palette->set_pen_indirect(total_colors_needed + i, pdp1_palette[i]);
}
@@ -1964,8 +1962,8 @@ static MACHINE_CONFIG_START( pdp1, pdp1_state )
MCFG_DEVICE_ADD("drum", PDP1_CYLINDER, 0)
MCFG_GFXDECODE_ADD("gfxdecode", pdp1)
- MCFG_PALETTE_LENGTH(pen_crt_num_levels + sizeof(pdp1_colors) / 3 + sizeof(pdp1_palette))
-
+ MCFG_PALETTE_ADD("palette", pen_crt_num_levels + sizeof(pdp1_colors) / 3 + sizeof(pdp1_palette))
+ MCFG_PALETTE_INIT_OWNER(pdp1_state, pdp1)
MACHINE_CONFIG_END
/*
diff --git a/src/mess/drivers/pegasus.c b/src/mess/drivers/pegasus.c
index 762acfb75c0..3357c25e8d1 100644
--- a/src/mess/drivers/pegasus.c
+++ b/src/mess/drivers/pegasus.c
@@ -478,8 +478,7 @@ static MACHINE_CONFIG_START( pegasus, pegasus_state )
MCFG_SCREEN_SIZE(32*8, 16*16)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 0, 16*16-1)
MCFG_GFXDECODE_ADD("gfxdecode", pegasus)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/phunsy.c b/src/mess/drivers/phunsy.c
index 5958f95729b..ab41e317263 100644
--- a/src/mess/drivers/phunsy.c
+++ b/src/mess/drivers/phunsy.c
@@ -57,6 +57,7 @@ public:
DECLARE_READ8_MEMBER(cass_r);
DECLARE_WRITE_LINE_MEMBER(cass_w);
DECLARE_QUICKLOAD_LOAD_MEMBER(phunsy);
+ DECLARE_PALETTE_INIT(phunsy);
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
private:
const UINT8 *m_p_chargen;
@@ -68,7 +69,6 @@ private:
required_device<speaker_sound_device> m_speaker;
required_device<cassette_image_device> m_cass;
required_shared_ptr<UINT8> m_p_videoram;
- virtual void palette_init();
};
@@ -199,13 +199,13 @@ void phunsy_state::machine_reset()
}
-void phunsy_state::palette_init()
+PALETTE_INIT_MEMBER(phunsy_state, phunsy)
{
for ( int i = 0; i < 8; i++ )
{
int j = ( i << 5 ) | ( i << 2 ) | ( i >> 1 );
- palette_set_color_rgb( machine(), i, j, j, j );
+ palette.set_pen_color( i, j, j, j );
}
}
@@ -364,7 +364,8 @@ static MACHINE_CONFIG_START( phunsy, phunsy_state )
MCFG_SCREEN_RAW_PARAMS(XTAL_8MHz, 480, 0, 64*6, 313, 0, 256)
MCFG_SCREEN_UPDATE_DRIVER(phunsy_state, screen_update)
MCFG_GFXDECODE_ADD("gfxdecode", phunsy)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(phunsy_state, phunsy)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/pitagjr.c b/src/mess/drivers/pitagjr.c
index 0ac8a308b32..962920fb4bb 100644
--- a/src/mess/drivers/pitagjr.c
+++ b/src/mess/drivers/pitagjr.c
@@ -165,7 +165,7 @@ public:
required_memory_bank m_rombank;
virtual void machine_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(pitagjr);
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -186,10 +186,10 @@ void pitagjr_state::machine_start()
m_rombank->set_entry(1);
}
-void pitagjr_state::palette_init()
+PALETTE_INIT_MEMBER(pitagjr_state, pitagjr)
{
- palette_set_color(machine(), 0, rgb_t(138, 146, 148));
- palette_set_color(machine(), 1, rgb_t(92, 83, 88));
+ palette.set_pen_color(0, rgb_t(138, 146, 148));
+ palette.set_pen_color(1, rgb_t(92, 83, 88));
}
UINT32 pitagjr_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -212,7 +212,8 @@ static MACHINE_CONFIG_START( pitajr, pitagjr_state )
MCFG_DEFAULT_LAYOUT(layout_lcd)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(pitagjr_state, pitagjr)
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mess/drivers/pk8000.c b/src/mess/drivers/pk8000.c
index b395bf892ac..e84a87444fd 100644
--- a/src/mess/drivers/pk8000.c
+++ b/src/mess/drivers/pk8000.c
@@ -390,8 +390,8 @@ static MACHINE_CONFIG_START( pk8000, pk8000_state )
MCFG_SCREEN_VISIBLE_AREA(0, 256+32-1, 0, 192+32-1)
MCFG_SCREEN_UPDATE_DRIVER(pk8000_state, screen_update_pk8000)
- MCFG_PALETTE_LENGTH(16)
-
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(pk8000_base_state, pk8000)
MCFG_I8255_ADD( "ppi8255_1", pk8000_ppi8255_interface_1 )
MCFG_I8255_ADD( "ppi8255_2", pk8000_ppi8255_interface_2 )
diff --git a/src/mess/drivers/pk8020.c b/src/mess/drivers/pk8020.c
index 53bca287568..cc94ac9e415 100644
--- a/src/mess/drivers/pk8020.c
+++ b/src/mess/drivers/pk8020.c
@@ -217,7 +217,8 @@ static MACHINE_CONFIG_START( pk8020, pk8020_state )
MCFG_SCREEN_UPDATE_DRIVER(pk8020_state, screen_update_pk8020)
MCFG_GFXDECODE_ADD("gfxdecode", pk8020)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(pk8020_state, pk8020)
MCFG_I8255_ADD( "ppi8255_1", pk8020_ppi8255_interface_1 )
diff --git a/src/mess/drivers/plan80.c b/src/mess/drivers/plan80.c
index 445baab9b15..f495bab29b1 100644
--- a/src/mess/drivers/plan80.c
+++ b/src/mess/drivers/plan80.c
@@ -242,8 +242,7 @@ static MACHINE_CONFIG_START( plan80, plan80_state )
MCFG_SCREEN_SIZE(48*6, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 48*6-1, 0, 32*8-1)
MCFG_GFXDECODE_ADD("gfxdecode", plan80)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, monochrome_green)
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mess/drivers/pmd85.c b/src/mess/drivers/pmd85.c
index bf3b43a91db..48d6326d9f7 100644
--- a/src/mess/drivers/pmd85.c
+++ b/src/mess/drivers/pmd85.c
@@ -585,8 +585,8 @@ static MACHINE_CONFIG_START( pmd85, pmd85_state )
MCFG_SCREEN_VISIBLE_AREA(0, 288-1, 0, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(pmd85_state, screen_update_pmd85)
- MCFG_PALETTE_LENGTH(sizeof (pmd85_palette) / 3)
-
+ MCFG_PALETTE_ADD("palette", sizeof (pmd85_palette) / 3)
+ MCFG_PALETTE_INIT_OWNER(pmd85_state, pmd85)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/pocketc.c b/src/mess/drivers/pocketc.c
index 6e00f7ce0b5..67c56f8432f 100644
--- a/src/mess/drivers/pocketc.c
+++ b/src/mess/drivers/pocketc.c
@@ -727,9 +727,9 @@ static MACHINE_CONFIG_FRAGMENT( pocketc )
MCFG_SCREEN_VISIBLE_AREA(0, 594-1, 0, 273-1)
// MCFG_SCREEN_SIZE(640, 273)
// MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 273-1)
- MCFG_GFXDECODE_ADD("gfxdecode", pc1401 )
- MCFG_PALETTE_LENGTH(8*2)
- MCFG_PALETTE_INIT( pocketc )
+ MCFG_GFXDECODE_ADD("gfxdecode", pc1401 )
+ MCFG_PALETTE_ADD("palette", 8*2)
+ MCFG_PALETTE_INIT_LEGACY( pocketc )
/* sound hardware */
/*MCFG_SOUND_ADD("dac", DAC, pocketc_sound_interface)*/
diff --git a/src/mess/drivers/pockstat.c b/src/mess/drivers/pockstat.c
index efb933e05f0..cc4ce551a17 100644
--- a/src/mess/drivers/pockstat.c
+++ b/src/mess/drivers/pockstat.c
@@ -984,8 +984,7 @@ static MACHINE_CONFIG_START( pockstat, pockstat_state )
MCFG_SCREEN_VISIBLE_AREA(0, 32-1, 0, 32-1)
MCFG_SCREEN_UPDATE_DRIVER(pockstat_state, screen_update_pockstat)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("dac", DAC, 0)
diff --git a/src/mess/drivers/poisk1.c b/src/mess/drivers/poisk1.c
index 71759f4aed2..2f1942a7c78 100644
--- a/src/mess/drivers/poisk1.c
+++ b/src/mess/drivers/poisk1.c
@@ -312,7 +312,8 @@ static MACHINE_CONFIG_START( poisk1, p1_state )
MCFG_SCREEN_UPDATE_DRIVER( p1_state, screen_update )
/* XXX verify palette */
- MCFG_PALETTE_LENGTH( CGA_PALETTE_SETS * 16 )
+ MCFG_PALETTE_ADD("palette", CGA_PALETTE_SETS * 16 )
+ MCFG_PALETTE_INIT_OWNER(p1_state, p1)
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
diff --git a/src/mess/drivers/pokemini.c b/src/mess/drivers/pokemini.c
index d790518e3d1..cbd6fa16e23 100644
--- a/src/mess/drivers/pokemini.c
+++ b/src/mess/drivers/pokemini.c
@@ -66,7 +66,7 @@ public:
virtual void machine_start();
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(pokemini);
TIMER_CALLBACK_MEMBER(pokemini_seconds_timer_callback);
TIMER_CALLBACK_MEMBER(pokemini_256hz_timer_callback);
TIMER_CALLBACK_MEMBER(pokemini_timer1_callback);
@@ -136,12 +136,12 @@ static INPUT_PORTS_START( pokemini )
INPUT_PORTS_END
-void pokemini_state::palette_init()
+PALETTE_INIT_MEMBER(pokemini_state, pokemini)
{
- palette_set_color(machine(), 0, rgb_t(0xff, 0xfb, 0x87));
- palette_set_color(machine(), 1, rgb_t(0xb1, 0xae, 0x4e));
- palette_set_color(machine(), 2, rgb_t(0x84, 0x80, 0x4e));
- palette_set_color(machine(), 3, rgb_t(0x4e, 0x4e, 0x4e));
+ palette.set_pen_color(0, rgb_t(0xff, 0xfb, 0x87));
+ palette.set_pen_color(1, rgb_t(0xb1, 0xae, 0x4e));
+ palette.set_pen_color(2, rgb_t(0x84, 0x80, 0x4e));
+ palette.set_pen_color(3, rgb_t(0x4e, 0x4e, 0x4e));
}
@@ -1790,7 +1790,8 @@ static MACHINE_CONFIG_START( pokemini, pokemini_state )
MCFG_DEFAULT_LAYOUT(layout_lcd)
- MCFG_PALETTE_LENGTH( 4 )
+ MCFG_PALETTE_ADD( "palette", 4 )
+ MCFG_PALETTE_INIT_OWNER(pokemini_state, pokemini)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/poly88.c b/src/mess/drivers/poly88.c
index 92db0a1050b..93b3469d78d 100644
--- a/src/mess/drivers/poly88.c
+++ b/src/mess/drivers/poly88.c
@@ -183,8 +183,7 @@ static MACHINE_CONFIG_START( poly88, poly88_state )
MCFG_SCREEN_UPDATE_DRIVER(poly88_state, screen_update_poly88)
MCFG_GFXDECODE_ADD("gfxdecode", poly88)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* audio hardware */
diff --git a/src/mess/drivers/portfoli.c b/src/mess/drivers/portfoli.c
index 146171e7555..14cc9a98226 100644
--- a/src/mess/drivers/portfoli.c
+++ b/src/mess/drivers/portfoli.c
@@ -651,10 +651,10 @@ INPUT_PORTS_END
// VIDEO
//**************************************************************************
-void portfolio_state::palette_init()
+PALETTE_INIT_MEMBER(portfolio_state, portfolio)
{
- palette_set_color(machine(), 0, rgb_t(138, 146, 148));
- palette_set_color(machine(), 1, rgb_t(92, 83, 88));
+ palette.set_pen_color(0, rgb_t(138, 146, 148));
+ palette.set_pen_color(1, rgb_t(92, 83, 88));
}
@@ -851,7 +851,8 @@ static MACHINE_CONFIG_START( portfolio, portfolio_state )
MCFG_DEFAULT_LAYOUT(layout_lcd)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(portfolio_state, portfolio)
MCFG_GFXDECODE_ADD("gfxdecode", portfolio)
diff --git a/src/mess/drivers/pp01.c b/src/mess/drivers/pp01.c
index 46b626cb512..1fdedbec344 100644
--- a/src/mess/drivers/pp01.c
+++ b/src/mess/drivers/pp01.c
@@ -208,7 +208,8 @@ static MACHINE_CONFIG_START( pp01, pp01_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(pp01_state, screen_update_pp01)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(pp01_state, pp01)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/prestige.c b/src/mess/drivers/prestige.c
index ec213338526..ce94cb2da05 100644
--- a/src/mess/drivers/prestige.c
+++ b/src/mess/drivers/prestige.c
@@ -112,7 +112,7 @@ public:
DECLARE_WRITE8_MEMBER( kb_w );
DECLARE_READ8_MEMBER( mouse_r );
DECLARE_WRITE8_MEMBER( mouse_w );
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(prestige);
TIMER_DEVICE_CALLBACK_MEMBER(irq_timer);
IRQ_CALLBACK_MEMBER(prestige_int_ack);
};
@@ -442,10 +442,10 @@ void prestige_state::machine_start()
m_vram = ram;
}
-void prestige_state::palette_init()
+PALETTE_INIT_MEMBER(prestige_state, prestige)
{
- palette_set_color(machine(), 0, rgb_t(39, 108, 51));
- palette_set_color(machine(), 1, rgb_t(16, 37, 84));
+ palette.set_pen_color(0, rgb_t(39, 108, 51));
+ palette.set_pen_color(1, rgb_t(16, 37, 84));
}
UINT32 prestige_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -495,7 +495,8 @@ static MACHINE_CONFIG_START( prestige, prestige_state )
MCFG_DEFAULT_LAYOUT( layout_lcd )
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(prestige_state, prestige)
/* cartridge */
MCFG_CARTSLOT_ADD("cart")
diff --git a/src/mess/drivers/primo.c b/src/mess/drivers/primo.c
index 32e22401f7c..3d08e32999b 100644
--- a/src/mess/drivers/primo.c
+++ b/src/mess/drivers/primo.c
@@ -263,8 +263,7 @@ static MACHINE_CONFIG_START( primoa32, primo_state )
MCFG_SCREEN_VISIBLE_AREA( 0, 256-1, 0, 192-1 )
MCFG_SCREEN_UPDATE_DRIVER(primo_state, screen_update_primo)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/psion.c b/src/mess/drivers/psion.c
index 32439dc3ae7..c4bb185a606 100644
--- a/src/mess/drivers/psion.c
+++ b/src/mess/drivers/psion.c
@@ -451,10 +451,10 @@ HD44780_PIXEL_UPDATE(psion_state::lz_pixel_update)
}
}
-void psion_state::palette_init()
+PALETTE_INIT_MEMBER(psion_state, psion)
{
- palette_set_color(machine(), 0, rgb_t(138, 146, 148));
- palette_set_color(machine(), 1, rgb_t(92, 83, 88));
+ palette.set_pen_color(0, rgb_t(138, 146, 148));
+ palette.set_pen_color(1, rgb_t(92, 83, 88));
}
static const gfx_layout psion_charlayout =
@@ -485,7 +485,8 @@ static MACHINE_CONFIG_START( psion_2lines, psion_state )
MCFG_SCREEN_SIZE(6*16, 9*2)
MCFG_SCREEN_VISIBLE_AREA(0, 6*16-1, 0, 9*2-1)
MCFG_DEFAULT_LAYOUT(layout_lcd)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(psion_state, psion)
MCFG_GFXDECODE_ADD("gfxdecode", psion)
MCFG_HD44780_ADD("hd44780")
diff --git a/src/mess/drivers/ptcsol.c b/src/mess/drivers/ptcsol.c
index b7c4ec101d7..d9b5f7588e1 100644
--- a/src/mess/drivers/ptcsol.c
+++ b/src/mess/drivers/ptcsol.c
@@ -763,8 +763,7 @@ static MACHINE_CONFIG_START( sol20, sol20_state )
MCFG_SCREEN_SIZE(576, 208)
MCFG_SCREEN_VISIBLE_AREA(0, 575, 0, 207)
MCFG_GFXDECODE_ADD("gfxdecode", sol20)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/pv1000.c b/src/mess/drivers/pv1000.c
index 4e18f66166e..36252a2f146 100644
--- a/src/mess/drivers/pv1000.c
+++ b/src/mess/drivers/pv1000.c
@@ -168,7 +168,7 @@ public:
required_shared_ptr<UINT8> m_p_videoram;
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(pv1000);
UINT32 screen_update_pv1000(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(d65010_irq_on_cb);
TIMER_CALLBACK_MEMBER(d65010_irq_off_cb);
@@ -295,10 +295,10 @@ static INPUT_PORTS_START( pv1000 )
INPUT_PORTS_END
-void pv1000_state::palette_init()
+PALETTE_INIT_MEMBER(pv1000_state, pv1000)
{
for (int i = 0; i < 8; i++)
- palette_set_color_rgb(machine(), i, pal1bit(i >> 2), pal1bit(i >> 1), pal1bit(i >> 0));
+ palette.set_pen_color(i, pal1bit(i >> 2), pal1bit(i >> 1), pal1bit(i >> 0));
}
@@ -354,12 +354,12 @@ UINT32 pv1000_state::screen_update_pv1000(screen_device &screen, bitmap_ind16 &b
if ( tile < 0xe0 || m_force_pattern )
{
tile += ( m_pcg_bank << 8);
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, tile, 0, 0, 0, x*8, y*8 );
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, tile, 0, 0, 0, x*8, y*8 );
}
else
{
tile -= 0xe0;
- m_gfxdecode->gfx(1)->opaque(bitmap,cliprect, tile, 0, 0, 0, x*8, y*8 );
+ m_gfxdecode->gfx(1)->opaque(m_palette,bitmap,cliprect, tile, 0, 0, 0, x*8, y*8 );
}
}
}
@@ -463,8 +463,10 @@ static MACHINE_CONFIG_START( pv1000, pv1000_state )
MCFG_SCREEN_RAW_PARAMS( 17897725/3, 380, 0, 256, 262, 0, 192 )
MCFG_SCREEN_UPDATE_DRIVER(pv1000_state, screen_update_pv1000)
- MCFG_PALETTE_LENGTH( 8 )
- MCFG_GFXDECODE_ADD("gfxdecode", pv1000 )
+ MCFG_PALETTE_ADD( "palette", 8 )
+ MCFG_PALETTE_INIT_OWNER(pv1000_state, pv1000)
+
+ MCFG_GFXDECODE_ADD("gfxdecode", pv1000 )
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD( "pv1000_sound", PV1000, 17897725 )
diff --git a/src/mess/drivers/pv9234.c b/src/mess/drivers/pv9234.c
index a38a47050cf..62378f31e57 100644
--- a/src/mess/drivers/pv9234.c
+++ b/src/mess/drivers/pv9234.c
@@ -148,8 +148,7 @@ static MACHINE_CONFIG_START( pv9234, pv9234_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(pv9234_state, screen_update_pv9234)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/px4.c b/src/mess/drivers/px4.c
index 8d2fc20dbc6..b19f008687c 100644
--- a/src/mess/drivers/px4.c
+++ b/src/mess/drivers/px4.c
@@ -201,7 +201,7 @@ public:
DECLARE_DRIVER_INIT(px4);
DECLARE_DRIVER_INIT(px4p);
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(px4);
DECLARE_MACHINE_START(px4_ramdisk);
DECLARE_PALETTE_INIT(px4p);
UINT32 screen_update_px4(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@@ -1342,16 +1342,16 @@ INPUT_PORTS_END
// PALETTE
//**************************************************************************
-void px4_state::palette_init()
+PALETTE_INIT_MEMBER(px4_state, px4)
{
- palette_set_color(machine(), 0, rgb_t(138, 146, 148));
- palette_set_color(machine(), 1, rgb_t(92, 83, 88));
+ palette.set_pen_color(0, rgb_t(138, 146, 148));
+ palette.set_pen_color(1, rgb_t(92, 83, 88));
}
PALETTE_INIT_MEMBER(px4_state, px4p)
{
- palette_set_color(machine(), 0, rgb_t(149, 157, 130));
- palette_set_color(machine(), 1, rgb_t(92, 83, 88));
+ palette.set_pen_color(0, rgb_t(149, 157, 130));
+ palette.set_pen_color(1, rgb_t(92, 83, 88));
}
@@ -1383,7 +1383,8 @@ static MACHINE_CONFIG_START( px4, px4_state )
MCFG_DEFAULT_LAYOUT(layout_px4)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(px4_state, px4)
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1442,7 +1443,8 @@ static MACHINE_CONFIG_DERIVED( px4p, px4 )
MCFG_MACHINE_START_OVERRIDE(px4_state, px4_ramdisk)
MCFG_NVRAM_ADD_0FILL("nvram")
- MCFG_PALETTE_INIT_OVERRIDE(px4_state, px4p)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(px4_state, px4p)
MCFG_CARTSLOT_ADD("ramdisk")
MCFG_CARTSLOT_NOT_MANDATORY
diff --git a/src/mess/drivers/px8.c b/src/mess/drivers/px8.c
index 93a925e36e0..6a35b38de7e 100644
--- a/src/mess/drivers/px8.c
+++ b/src/mess/drivers/px8.c
@@ -682,10 +682,10 @@ INPUT_PORTS_END
VIDEO
***************************************************************************/
-void px8_state::palette_init()
+PALETTE_INIT_MEMBER(px8_state, px8)
{
- palette_set_color_rgb(machine(), 0, 0xa5, 0xad, 0xa5);
- palette_set_color_rgb(machine(), 1, 0x31, 0x39, 0x10);
+ palette.set_pen_color(0, 0xa5, 0xad, 0xa5);
+ palette.set_pen_color(1, 0x31, 0x39, 0x10);
}
UINT32 px8_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -793,7 +793,8 @@ static MACHINE_CONFIG_START( px8, px8_state )
MCFG_SCREEN_VISIBLE_AREA(0, 479, 0, 63)
MCFG_GFXDECODE_ADD("gfxdecode", px8)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(px8_state, px8)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/pyl601.c b/src/mess/drivers/pyl601.c
index b1edae25d4e..aeb9d95bf16 100644
--- a/src/mess/drivers/pyl601.c
+++ b/src/mess/drivers/pyl601.c
@@ -567,8 +567,7 @@ static MACHINE_CONFIG_START( pyl601, pyl601_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640 - 1, 0, 200 - 1)
MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
MCFG_GFXDECODE_ADD("gfxdecode", pyl601)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, monochrome_green)
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/qx10.c b/src/mess/drivers/qx10.c
index 29e9c4ecc47..c5525ace07a 100644
--- a/src/mess/drivers/qx10.c
+++ b/src/mess/drivers/qx10.c
@@ -141,7 +141,7 @@ public:
UINT8 rx;
}m_rs232c;
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(qx10);
DECLARE_INPUT_CHANGED_MEMBER(key_stroke);
DECLARE_WRITE_LINE_MEMBER(dma_hrq_changed);
IRQ_CALLBACK_MEMBER(irq_callback);
@@ -235,7 +235,7 @@ static UPD7220_DRAW_TEXT_LINE( hgdc_draw_text )
UINT32 qx10_state::screen_update( screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect )
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
m_hgdc->screen_update(screen, bitmap, cliprect);
@@ -731,15 +731,15 @@ void qx10_state::machine_reset()
if(m_color_mode) //color
{
for ( i = 0; i < 8; i++ )
- palette_set_color_rgb(machine(), i, pal1bit((i >> 2) & 1), pal1bit((i >> 1) & 1), pal1bit((i >> 0) & 1));
+ m_palette->set_pen_color(i, pal1bit((i >> 2) & 1), pal1bit((i >> 1) & 1), pal1bit((i >> 0) & 1));
}
else //monochrome
{
for ( i = 0; i < 8; i++ )
- palette_set_color_rgb(machine(), i, pal1bit(0), pal1bit(0), pal1bit(0));
+ m_palette->set_pen_color(i, pal1bit(0), pal1bit(0), pal1bit(0));
- palette_set_color_rgb(machine(), 1, 0x00, 0x9f, 0x00);
- palette_set_color_rgb(machine(), 2, 0x00, 0xff, 0x00);
+ m_palette->set_pen_color(1, 0x00, 0x9f, 0x00);
+ m_palette->set_pen_color(2, 0x00, 0xff, 0x00);
m_vram_bank = 0;
}
}
@@ -781,7 +781,7 @@ static UPD7220_INTERFACE( hgdc_intf )
DEVCB_NULL
};
-void qx10_state::palette_init()
+PALETTE_INIT_MEMBER(qx10_state, qx10)
{
// ...
}
@@ -826,7 +826,8 @@ static MACHINE_CONFIG_START( qx10, qx10_state )
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_GFXDECODE_ADD("gfxdecode", qx10)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(qx10_state, qx10)
/* Devices */
diff --git a/src/mess/drivers/radio86.c b/src/mess/drivers/radio86.c
index eb8127b5506..0cacc04f838 100644
--- a/src/mess/drivers/radio86.c
+++ b/src/mess/drivers/radio86.c
@@ -365,8 +365,8 @@ static MACHINE_CONFIG_START( radio86, radio86_state )
MCFG_SCREEN_SIZE(78*6, 30*10)
MCFG_SCREEN_VISIBLE_AREA(0, 78*6-1, 0, 30*10-1)
MCFG_GFXDECODE_ADD("gfxdecode", radio86)
- MCFG_PALETTE_LENGTH(3)
- MCFG_PALETTE_INIT_OVERRIDE(radio86_state,radio86)
+ MCFG_PALETTE_ADD("palette", 3)
+ MCFG_PALETTE_INIT_OWNER(radio86_state,radio86)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
diff --git a/src/mess/drivers/rainbow.c b/src/mess/drivers/rainbow.c
index a05bfdbf1db..d96f0a9cff2 100644
--- a/src/mess/drivers/rainbow.c
+++ b/src/mess/drivers/rainbow.c
@@ -1195,9 +1195,9 @@ static MACHINE_CONFIG_START( rainbow, rainbow_state )
MCFG_SCREEN_SIZE(132*10, 49*10)
MCFG_SCREEN_VISIBLE_AREA(0, 80 * 10-1, 0, 24 * 10-1)
MCFG_SCREEN_UPDATE_DRIVER(rainbow_state, screen_update_rainbow)
+ MCFG_SCREEN_PALETTE("vt100_video:palette")
MCFG_GFXDECODE_ADD("gfxdecode", rainbow)
- MCFG_PALETTE_LENGTH(4)
-
+
MCFG_RAINBOW_VIDEO_ADD("vt100_video", video_interface)
MCFG_FD1793_ADD("wd1793", rainbow_wd17xx_interface )
diff --git a/src/mess/drivers/rd110.c b/src/mess/drivers/rd110.c
index 1515917f0a2..90a49b72142 100644
--- a/src/mess/drivers/rd110.c
+++ b/src/mess/drivers/rd110.c
@@ -58,7 +58,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(d110);
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@@ -195,10 +195,10 @@ WRITE8_MEMBER(d110_state::so_w)
// logerror("so: rw=%d bank=%d led=%d\n", (data >> 3) & 1, (data >> 1) & 3, data & 1);
}
-void d110_state::palette_init()
+PALETTE_INIT_MEMBER(d110_state, d110)
{
- palette_set_color(machine(), 0, rgb_t(0, 255, 0));
- palette_set_color(machine(), 1, rgb_t(0, 0, 0));
+ palette.set_pen_color(0, rgb_t(0, 255, 0));
+ palette.set_pen_color(1, rgb_t(0, 0, 0));
}
static ADDRESS_MAP_START( d110_map, AS_PROGRAM, 8, d110_state )
@@ -240,7 +240,8 @@ static MACHINE_CONFIG_START( d110, d110_state )
// MCFG_SCREEN_SIZE(20*6-1, 2*9-1)
MCFG_SCREEN_SIZE(16*6-1, (16*6-1)*3/4)
MCFG_SCREEN_VISIBLE_AREA(0, 16*6-2, 0, (16*6-1)*3/4-1)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(d110_state, d110)
MCFG_MSM6222B_01_ADD( "lcd" )
diff --git a/src/mess/drivers/replicator.c b/src/mess/drivers/replicator.c
index c51c41dbedc..9bac9135673 100644
--- a/src/mess/drivers/replicator.c
+++ b/src/mess/drivers/replicator.c
@@ -187,7 +187,7 @@ public:
DECLARE_WRITE8_MEMBER(port_w);
DECLARE_DRIVER_INIT(replicator);
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(replicator);
};
void replicator_state::machine_start()
@@ -622,11 +622,11 @@ const avr8_config atmega1280_config =
"eeprom"
};
-void replicator_state::palette_init()
+PALETTE_INIT_MEMBER(replicator_state, replicator)
{
//These colors were picked with the color picker in Inkscape, based on a photo of the LCD used in the Replicator 1 3d printer:
- palette_set_color(machine(), 0, rgb_t(0xCA, 0xE7, 0xEB));
- palette_set_color(machine(), 1, rgb_t(0x78, 0xAB, 0xA8));
+ palette.set_pen_color(0, rgb_t(0xCA, 0xE7, 0xEB));
+ palette.set_pen_color(1, rgb_t(0x78, 0xAB, 0xA8));
}
static const gfx_layout hd44780_charlayout =
@@ -667,7 +667,8 @@ static MACHINE_CONFIG_START( replicator, replicator_state )
MCFG_SCREEN_SIZE(120, 18*2) //4x20 chars
MCFG_SCREEN_VISIBLE_AREA(0, 120-1, 0, 18*2-1)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(replicator_state, replicator)
MCFG_GFXDECODE_ADD("gfxdecode", replicator)
MCFG_DEFAULT_LAYOUT(layout_lcd)
diff --git a/src/mess/drivers/rex6000.c b/src/mess/drivers/rex6000.c
index 67c4f301e9f..40156b2c283 100644
--- a/src/mess/drivers/rex6000.c
+++ b/src/mess/drivers/rex6000.c
@@ -116,7 +116,7 @@ public:
DECLARE_WRITE8_MEMBER( flash_0xa000_w );
UINT8 identify_bank_type(UINT32 bank);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(rex6000);
DECLARE_INPUT_CHANGED_MEMBER(trigger_irq);
TIMER_DEVICE_CALLBACK_MEMBER(irq_timer1);
TIMER_DEVICE_CALLBACK_MEMBER(irq_timer2);
@@ -558,10 +558,10 @@ WRITE_LINE_MEMBER( rex6000_state::alarm_irq )
}
-void rex6000_state::palette_init()
+PALETTE_INIT_MEMBER(rex6000_state, rex6000)
{
- palette_set_color(machine(), 0, rgb_t(138, 146, 148));
- palette_set_color(machine(), 1, rgb_t(92, 83, 88));
+ palette.set_pen_color(0, rgb_t(138, 146, 148));
+ palette.set_pen_color(1, rgb_t(92, 83, 88));
}
QUICKLOAD_LOAD_MEMBER( rex6000_state,rex6000)
@@ -660,7 +660,8 @@ static MACHINE_CONFIG_START( rex6000, rex6000_state )
MCFG_SCREEN_SIZE(240, 120)
MCFG_SCREEN_VISIBLE_AREA(0, 240-1, 0, 120-1)
MCFG_DEFAULT_LAYOUT(layout_lcd)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(rex6000_state, rex6000)
MCFG_GFXDECODE_ADD("gfxdecode", rex6000)
/* quickload */
diff --git a/src/mess/drivers/rm380z.c b/src/mess/drivers/rm380z.c
index ec44eb109cf..38a21af4814 100644
--- a/src/mess/drivers/rm380z.c
+++ b/src/mess/drivers/rm380z.c
@@ -158,8 +158,7 @@ static MACHINE_CONFIG_START( rm380z, rm380z_state )
MCFG_SCREEN_VISIBLE_AREA(0, (RM380Z_SCREENCOLS*(RM380Z_CHDIMX+1))-1, 0, (RM380Z_SCREENROWS*(RM380Z_CHDIMY+1))-1)
MCFG_SCREEN_UPDATE_DRIVER(rm380z_state, screen_update_rm380z)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* RAM configurations */
MCFG_RAM_ADD(RAM_TAG)
diff --git a/src/mess/drivers/rmnimbus.c b/src/mess/drivers/rmnimbus.c
index 67bee16a053..97e03f50650 100644
--- a/src/mess/drivers/rmnimbus.c
+++ b/src/mess/drivers/rmnimbus.c
@@ -262,13 +262,13 @@ static ADDRESS_MAP_START( nimbus_iocpu_io , AS_IO, 8, rmnimbus_state )
ADDRESS_MAP_END
-void rmnimbus_state::palette_init()
+PALETTE_INIT_MEMBER(rmnimbus_state, rmnimbus)
{
int colourno;
for ( colourno = 0; colourno < SCREEN_NO_COLOURS; colourno++ )
{
- palette_set_color_rgb(machine(), colourno, nimbus_palette[colourno][RED], nimbus_palette[colourno][GREEN], nimbus_palette[colourno][BLUE]);
+ palette.set_pen_color(colourno, nimbus_palette[colourno][RED], nimbus_palette[colourno][GREEN], nimbus_palette[colourno][BLUE]);
}
}
@@ -294,7 +294,8 @@ static MACHINE_CONFIG_START( nimbus, rmnimbus_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_SCANLINE)
- MCFG_PALETTE_LENGTH(SCREEN_NO_COLOURS)
+ MCFG_PALETTE_ADD("palette", SCREEN_NO_COLOURS)
+ MCFG_PALETTE_INIT_OWNER(rmnimbus_state, rmnimbus)
// MCFG_SCREEN_SIZE(650, 260)
// MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 249)
diff --git a/src/mess/drivers/rmt32.c b/src/mess/drivers/rmt32.c
index f1ecfd3f928..dab0fa2d545 100644
--- a/src/mess/drivers/rmt32.c
+++ b/src/mess/drivers/rmt32.c
@@ -196,7 +196,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(mt32);
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@@ -321,10 +321,10 @@ WRITE8_MEMBER(mt32_state::so_w)
// logerror("so: x1=%d bank=%d led=%d\n", (data >> 5) & 1, (data >> 1) & 3, data & 1);
}
-void mt32_state::palette_init()
+PALETTE_INIT_MEMBER(mt32_state, mt32)
{
- palette_set_color(machine(), 0, rgb_t(0, 0, 0));
- palette_set_color(machine(), 1, rgb_t(0, 255, 0));
+ palette.set_pen_color(0, rgb_t(0, 0, 0));
+ palette.set_pen_color(1, rgb_t(0, 255, 0));
}
static ADDRESS_MAP_START( mt32_map, AS_PROGRAM, 8, mt32_state )
@@ -359,7 +359,8 @@ static MACHINE_CONFIG_START( mt32, mt32_state )
// MCFG_SCREEN_SIZE(20*6-1, 9)
MCFG_SCREEN_SIZE(20*6-1, (20*6-1)*3/4)
MCFG_SCREEN_VISIBLE_AREA(0, 20*6-2, 0, (20*6-1)*3/4-1)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(mt32_state, mt32)
MCFG_SED1200D0A_ADD( "lcd" )
diff --git a/src/mess/drivers/rt1715.c b/src/mess/drivers/rt1715.c
index b2362db437f..1700d0bba40 100644
--- a/src/mess/drivers/rt1715.c
+++ b/src/mess/drivers/rt1715.c
@@ -40,7 +40,7 @@ public:
DECLARE_WRITE8_MEMBER(rt1715_rom_disable);
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(rt1715);
required_device<cpu_device> m_maincpu;
required_device<ram_device> m_ram;
};
@@ -172,11 +172,11 @@ static const i8275_interface rt1715_i8275_intf =
PALETTE
***************************************************************************/
-void rt1715_state::palette_init()
+PALETTE_INIT_MEMBER(rt1715_state, rt1715)
{
- palette_set_color(machine(), 0, rgb_t(0x00, 0x00, 0x00)); /* black */
- palette_set_color(machine(), 1, rgb_t(0x00, 0x7f, 0x00)); /* low intensity */
- palette_set_color(machine(), 2, rgb_t(0x00, 0xff, 0x00)); /* high intensitiy */
+ palette.set_pen_color(0, rgb_t(0x00, 0x00, 0x00)); /* black */
+ palette.set_pen_color(1, rgb_t(0x00, 0x7f, 0x00)); /* low intensity */
+ palette.set_pen_color(2, rgb_t(0x00, 0xff, 0x00)); /* high intensitiy */
}
@@ -348,7 +348,8 @@ static MACHINE_CONFIG_START( rt1715, rt1715_state )
MCFG_SCREEN_VISIBLE_AREA(0, 78*6-1, 0, 30*10-1)
MCFG_GFXDECODE_ADD("gfxdecode", rt1715)
- MCFG_PALETTE_LENGTH(3)
+ MCFG_PALETTE_ADD("palette", 3)
+ MCFG_PALETTE_INIT_OWNER(rt1715_state, rt1715)
MCFG_I8275_ADD("a26", rt1715_i8275_intf)
MCFG_Z80CTC_ADD("a30", XTAL_10MHz/4 /* ? */, rt1715_ctc_intf)
diff --git a/src/mess/drivers/rx78.c b/src/mess/drivers/rx78.c
index dfac3a73f5b..92d04dd10ec 100644
--- a/src/mess/drivers/rx78.c
+++ b/src/mess/drivers/rx78.c
@@ -230,7 +230,7 @@ WRITE8_MEMBER( rx78_state::vdp_reg_w )
g = (res & 0x22) == 0x22 ? 0xff : ((res & 0x22) == 0x02 ? 0x7f : 0x00);
b = (res & 0x44) == 0x44 ? 0xff : ((res & 0x44) == 0x04 ? 0x7f : 0x00);
- palette_set_color(machine(), i, rgb_t(r,g,b));
+ m_palette->set_pen_color(i, rgb_t(r,g,b));
}
}
@@ -242,7 +242,7 @@ WRITE8_MEMBER( rx78_state::vdp_bg_reg_w )
g = (data & 0x22) == 0x22 ? 0xff : ((data & 0x22) == 0x02 ? 0x7f : 0x00);
b = (data & 0x44) == 0x44 ? 0xff : ((data & 0x44) == 0x04 ? 0x7f : 0x00);
- palette_set_color(machine(), 0x10, rgb_t(r,g,b));
+ m_palette->set_pen_color(0x10, rgb_t(r,g,b));
}
WRITE8_MEMBER( rx78_state::vdp_pri_mask_w )
@@ -469,7 +469,7 @@ static MACHINE_CONFIG_START( rx78, rx78_state )
MCFG_SCREEN_UPDATE_DRIVER(rx78_state, screen_update)
MCFG_SCREEN_SIZE(192, 184)
MCFG_SCREEN_VISIBLE_AREA(0, 192-1, 0, 184-1)
- MCFG_PALETTE_LENGTH(16+1) //+1 for the background color
+ MCFG_PALETTE_ADD("palette", 16+1) //+1 for the background color
MCFG_GFXDECODE_ADD("gfxdecode", rx78)
MCFG_CARTSLOT_ADD("cart")
diff --git a/src/mess/drivers/samcoupe.c b/src/mess/drivers/samcoupe.c
index e0761a82c04..6bd032a85d0 100644
--- a/src/mess/drivers/samcoupe.c
+++ b/src/mess/drivers/samcoupe.c
@@ -493,7 +493,7 @@ INPUT_PORTS_END
nothing G+4 R+4 B+4 ALL+1 G+2 R+2 B+2
*/
-void samcoupe_state::palette_init()
+PALETTE_INIT_MEMBER(samcoupe_state, samcoupe)
{
for (int i = 0; i < 128; i++)
{
@@ -505,10 +505,10 @@ void samcoupe_state::palette_init()
g <<= 5;
b <<= 5;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
- machine().palette->normalize_range(0, 127);
+ palette.palette()->normalize_range(0, 127);
}
@@ -551,7 +551,8 @@ static MACHINE_CONFIG_START( samcoupe, samcoupe_state )
MCFG_SCREEN_RAW_PARAMS(SAMCOUPE_XTAL_X1/2, SAM_TOTAL_WIDTH, 0, SAM_BORDER_LEFT + SAM_SCREEN_WIDTH + SAM_BORDER_RIGHT, SAM_TOTAL_HEIGHT, 0, SAM_BORDER_TOP + SAM_SCREEN_HEIGHT + SAM_BORDER_BOTTOM)
MCFG_SCREEN_UPDATE_DRIVER(samcoupe_state, screen_update)
- MCFG_PALETTE_LENGTH(128)
+ MCFG_PALETTE_ADD("palette", 128)
+ MCFG_PALETTE_INIT_OWNER(samcoupe_state, samcoupe)
/* devices */
MCFG_CENTRONICS_ADD("lpt1", centronics_printers, "image")
diff --git a/src/mess/drivers/sapi1.c b/src/mess/drivers/sapi1.c
index 40a7f8e528e..f68ec32d47e 100644
--- a/src/mess/drivers/sapi1.c
+++ b/src/mess/drivers/sapi1.c
@@ -568,8 +568,7 @@ static MACHINE_CONFIG_START( sapi1, sapi1_state )
MCFG_SCREEN_SIZE(40*6, 24*9)
MCFG_SCREEN_VISIBLE_AREA(0, 40*6-1, 0, 24*9-1)
MCFG_SCREEN_UPDATE_DRIVER(sapi1_state, screen_update_sapi1)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
diff --git a/src/mess/drivers/saturn.c b/src/mess/drivers/saturn.c
index 92b733d27f2..5fc497ba172 100644
--- a/src/mess/drivers/saturn.c
+++ b/src/mess/drivers/saturn.c
@@ -780,7 +780,7 @@ static MACHINE_CONFIG_START( saturn, sat_console_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK_320/8, 427, 0, 320, 263, 0, 224)
MCFG_SCREEN_UPDATE_DRIVER(sat_console_state, screen_update_stv_vdp2)
- MCFG_PALETTE_LENGTH(2048+(2048*2))//standard palette + extra memory for rgb brightness.
+ MCFG_PALETTE_ADD("palette", 2048+(2048*2))//standard palette + extra memory for rgb brightness.
MCFG_GFXDECODE_ADD("gfxdecode", stv)
diff --git a/src/mess/drivers/sbrain.c b/src/mess/drivers/sbrain.c
index 32d51d1358a..19c6c91860d 100644
--- a/src/mess/drivers/sbrain.c
+++ b/src/mess/drivers/sbrain.c
@@ -339,8 +339,7 @@ static MACHINE_CONFIG_START( sbrain, sbrain_state )
MCFG_SCREEN_UPDATE_DRIVER(sbrain_state, screen_update)
MCFG_SCREEN_SIZE(640, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 239)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, monochrome_amber)
+ MCFG_PALETTE_ADD_MONOCHROME_AMBER("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/scv.c b/src/mess/drivers/scv.c
index 439f657f2a3..3b19a957cab 100644
--- a/src/mess/drivers/scv.c
+++ b/src/mess/drivers/scv.c
@@ -48,7 +48,7 @@ public:
bool m_cart_ram_enabled;
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(scv);
void scv_postload();
UINT32 screen_update_scv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_DEVICE_IMAGE_LOAD_MEMBER( scv_cart );
@@ -362,7 +362,7 @@ DEVICE_IMAGE_LOAD_MEMBER( scv_state, scv_cart )
}
-void scv_state::palette_init()
+PALETTE_INIT_MEMBER(scv_state, scv)
{
/*
SCV Epoch-1A chip RGB voltage readouts from paused Bios color test:
@@ -395,22 +395,22 @@ void scv_state::palette_init()
Quamtizing/scaling/rounding between 0 and 255 we thus get:
*/
- palette_set_color_rgb( machine(), 0, 0, 0, 155);
- palette_set_color_rgb( machine(), 1, 0, 0, 0);
- palette_set_color_rgb( machine(), 2, 0, 0, 255);
- palette_set_color_rgb( machine(), 3, 161, 0, 255);
- palette_set_color_rgb( machine(), 4, 0, 255, 0);
- palette_set_color_rgb( machine(), 5, 160, 255, 157);
- palette_set_color_rgb( machine(), 6, 0, 255, 255);
- palette_set_color_rgb( machine(), 7, 0, 161, 0);
- palette_set_color_rgb( machine(), 8, 255, 0, 0);
- palette_set_color_rgb( machine(), 9, 255, 161, 0);
- palette_set_color_rgb( machine(), 10, 255, 0, 255);
- palette_set_color_rgb( machine(), 11, 255, 160, 159);
- palette_set_color_rgb( machine(), 12, 255, 255, 0);
- palette_set_color_rgb( machine(), 13, 163, 160, 0);
- palette_set_color_rgb( machine(), 14, 161, 160, 157);
- palette_set_color_rgb( machine(), 15, 255, 255, 255);
+ palette.set_pen_color( 0, 0, 0, 155);
+ palette.set_pen_color( 1, 0, 0, 0);
+ palette.set_pen_color( 2, 0, 0, 255);
+ palette.set_pen_color( 3, 161, 0, 255);
+ palette.set_pen_color( 4, 0, 255, 0);
+ palette.set_pen_color( 5, 160, 255, 157);
+ palette.set_pen_color( 6, 0, 255, 255);
+ palette.set_pen_color( 7, 0, 161, 0);
+ palette.set_pen_color( 8, 255, 0, 0);
+ palette.set_pen_color( 9, 255, 161, 0);
+ palette.set_pen_color( 10, 255, 0, 255);
+ palette.set_pen_color( 11, 255, 160, 159);
+ palette.set_pen_color( 12, 255, 255, 0);
+ palette.set_pen_color( 13, 163, 160, 0);
+ palette.set_pen_color( 14, 161, 160, 157);
+ palette.set_pen_color( 15, 255, 255, 255);
}
@@ -831,7 +831,8 @@ static MACHINE_CONFIG_START( scv, scv_state )
MCFG_SCREEN_UPDATE_DRIVER(scv_state, screen_update_scv)
MCFG_GFXDECODE_ADD("gfxdecode", scv)
- MCFG_PALETTE_LENGTH( 16 )
+ MCFG_PALETTE_ADD( "palette", 16 )
+ MCFG_PALETTE_INIT_OWNER(scv_state, scv)
/* Sound is generated by UPD1771C clocked at XTAL_6MHz */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/sm1800.c b/src/mess/drivers/sm1800.c
index 457417017bc..a26d3875669 100644
--- a/src/mess/drivers/sm1800.c
+++ b/src/mess/drivers/sm1800.c
@@ -41,7 +41,7 @@ public:
DECLARE_READ8_MEMBER(sm1800_8255_portc_r);
UINT8 m_irq_state;
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(sm1800);
INTERRUPT_GEN_MEMBER(sm1800_vblank_interrupt);
IRQ_CALLBACK_MEMBER(sm1800_irq_callback);
};
@@ -143,11 +143,11 @@ I8255A_INTERFACE( sm1800_ppi8255_interface )
DEVCB_DRIVER_MEMBER(sm1800_state, sm1800_8255_portc_w)
};
-void sm1800_state::palette_init()
+PALETTE_INIT_MEMBER(sm1800_state, sm1800)
{
- palette_set_color(machine(), 0, rgb_t::black); // black
- palette_set_color_rgb(machine(), 1, 0xa0, 0xa0, 0xa0); // white
- palette_set_color(machine(), 2, rgb_t::white); // highlight
+ palette.set_pen_color(0, rgb_t::black); // black
+ palette.set_pen_color(1, 0xa0, 0xa0, 0xa0); // white
+ palette.set_pen_color(2, rgb_t::white); // highlight
}
@@ -184,9 +184,10 @@ static MACHINE_CONFIG_START( sm1800, sm1800_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_PALETTE_ADD("palette", 3)
+ MCFG_PALETTE_INIT_OWNER(sm1800_state, sm1800)
- MCFG_GFXDECODE_ADD("gfxdecode", sm1800)
- MCFG_PALETTE_LENGTH(3)
+ MCFG_GFXDECODE_ADD("gfxdecode", sm1800)
/* Devices */
MCFG_I8255_ADD ("i8255", sm1800_ppi8255_interface )
diff --git a/src/mess/drivers/smc777.c b/src/mess/drivers/smc777.c
index fd9c0d4a10c..b8cd1304633 100644
--- a/src/mess/drivers/smc777.c
+++ b/src/mess/drivers/smc777.c
@@ -119,7 +119,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(smc777);
UINT32 screen_update_smc777(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(smc777_vblank_irq);
TIMER_DEVICE_CALLBACK_MEMBER(keyboard_callback);
@@ -146,7 +146,7 @@ UINT32 smc777_state::screen_update_smc777(screen_device &screen, bitmap_ind16 &b
// popmessage("%d %d %d %d",mc6845_v_char_total,mc6845_v_total_adj,mc6845_v_display,mc6845_v_sync_pos);
- bitmap.fill(machine().pens[m_backdrop_pen], cliprect);
+ bitmap.fill(m_palette->pen(m_backdrop_pen), cliprect);
x_width = ((m_display_reg & 0x80) >> 7);
@@ -164,23 +164,23 @@ UINT32 smc777_state::screen_update_smc777(screen_device &screen, bitmap_ind16 &b
/* todo: clean this up! */
//if(x_width)
{
- bitmap.pix16(y+yi+CRTC_MIN_Y, x*4+0+CRTC_MIN_X) = machine().pens[color];
- bitmap.pix16(y+yi+CRTC_MIN_Y, x*4+1+CRTC_MIN_X) = machine().pens[color];
+ bitmap.pix16(y+yi+CRTC_MIN_Y, x*4+0+CRTC_MIN_X) = m_palette->pen(color);
+ bitmap.pix16(y+yi+CRTC_MIN_Y, x*4+1+CRTC_MIN_X) = m_palette->pen(color);
}
//else
//{
- // bitmap.pix16(y+yi+CRTC_MIN_Y, x*2+0+CRTC_MIN_X) = machine().pens[color];
+ // bitmap.pix16(y+yi+CRTC_MIN_Y, x*2+0+CRTC_MIN_X) = m_palette->pen(color);
//}
color = (m_gvram[count] & 0x0f) >> 0;
//if(x_width)
{
- bitmap.pix16(y+yi+CRTC_MIN_Y, x*4+2+CRTC_MIN_X) = machine().pens[color];
- bitmap.pix16(y+yi+CRTC_MIN_Y, x*4+3+CRTC_MIN_X) = machine().pens[color];
+ bitmap.pix16(y+yi+CRTC_MIN_Y, x*4+2+CRTC_MIN_X) = m_palette->pen(color);
+ bitmap.pix16(y+yi+CRTC_MIN_Y, x*4+3+CRTC_MIN_X) = m_palette->pen(color);
}
//else
//{
- // bitmap.pix16(y+yi+CRTC_MIN_Y, x*2+1+CRTC_MIN_X) = machine().pens[color];
+ // bitmap.pix16(y+yi+CRTC_MIN_Y, x*2+1+CRTC_MIN_X) = m_palette->pen(color);
//}
count++;
@@ -233,11 +233,11 @@ UINT32 smc777_state::screen_update_smc777(screen_device &screen, bitmap_ind16 &b
{
if(x_width)
{
- bitmap.pix16(y*8+CRTC_MIN_Y+yi, (x*8+xi)*2+0+CRTC_MIN_X) = machine().pens[pen];
- bitmap.pix16(y*8+CRTC_MIN_Y+yi, (x*8+xi)*2+1+CRTC_MIN_X) = machine().pens[pen];
+ bitmap.pix16(y*8+CRTC_MIN_Y+yi, (x*8+xi)*2+0+CRTC_MIN_X) = m_palette->pen(pen);
+ bitmap.pix16(y*8+CRTC_MIN_Y+yi, (x*8+xi)*2+1+CRTC_MIN_X) = m_palette->pen(pen);
}
else
- bitmap.pix16(y*8+CRTC_MIN_Y+yi, x*8+CRTC_MIN_X+xi) = machine().pens[pen];
+ bitmap.pix16(y*8+CRTC_MIN_Y+yi, x*8+CRTC_MIN_X+xi) = m_palette->pen(pen);
}
}
}
@@ -264,11 +264,11 @@ UINT32 smc777_state::screen_update_smc777(screen_device &screen, bitmap_ind16 &b
{
if(x_width)
{
- bitmap.pix16(y*8+CRTC_MIN_Y-yc+7, (x*8+xc)*2+0+CRTC_MIN_X) = machine().pens[0x7];
- bitmap.pix16(y*8+CRTC_MIN_Y-yc+7, (x*8+xc)*2+1+CRTC_MIN_X) = machine().pens[0x7];
+ bitmap.pix16(y*8+CRTC_MIN_Y-yc+7, (x*8+xc)*2+0+CRTC_MIN_X) = m_palette->pen(0x7);
+ bitmap.pix16(y*8+CRTC_MIN_Y-yc+7, (x*8+xc)*2+1+CRTC_MIN_X) = m_palette->pen(0x7);
}
else
- bitmap.pix16(y*8+CRTC_MIN_Y-yc+7, x*8+CRTC_MIN_X+xc) = machine().pens[0x7];
+ bitmap.pix16(y*8+CRTC_MIN_Y-yc+7, x*8+CRTC_MIN_X+xc) = m_palette->pen(0x7);
}
}
}
@@ -564,9 +564,9 @@ WRITE8_MEMBER(smc777_state::smc777_ramdac_w)
switch((offset & 0x3000) >> 12)
{
- case 0: m_pal.r = (data & 0xf0) >> 4; palette_set_color_rgb(machine(), pal_index, pal4bit(m_pal.r), pal4bit(m_pal.g), pal4bit(m_pal.b)); break;
- case 1: m_pal.g = (data & 0xf0) >> 4; palette_set_color_rgb(machine(), pal_index, pal4bit(m_pal.r), pal4bit(m_pal.g), pal4bit(m_pal.b)); break;
- case 2: m_pal.b = (data & 0xf0) >> 4; palette_set_color_rgb(machine(), pal_index, pal4bit(m_pal.r), pal4bit(m_pal.g), pal4bit(m_pal.b)); break;
+ case 0: m_pal.r = (data & 0xf0) >> 4; m_palette->set_pen_color(pal_index, pal4bit(m_pal.r), pal4bit(m_pal.g), pal4bit(m_pal.b)); break;
+ case 1: m_pal.g = (data & 0xf0) >> 4; m_palette->set_pen_color(pal_index, pal4bit(m_pal.r), pal4bit(m_pal.g), pal4bit(m_pal.b)); break;
+ case 2: m_pal.b = (data & 0xf0) >> 4; m_palette->set_pen_color(pal_index, pal4bit(m_pal.r), pal4bit(m_pal.g), pal4bit(m_pal.b)); break;
case 3: printf("RAMdac used with gradient index = 3! pal_index = %02x data = %02x\n",pal_index,data); break;
}
}
@@ -1017,7 +1017,7 @@ static MC6845_INTERFACE( mc6845_intf )
};
/* set-up SMC-70 mode colors */
-void smc777_state::palette_init()
+PALETTE_INIT_MEMBER(smc777_state, smc777)
{
int i;
@@ -1029,8 +1029,8 @@ void smc777_state::palette_init()
g = (i & 2) >> 1;
b = (i & 1) >> 0;
- palette_set_color_rgb(machine(), i, pal1bit(r),pal1bit(g),pal1bit(b));
- palette_set_color_rgb(machine(), i+8, pal1bit(0),pal1bit(0),pal1bit(0));
+ palette.set_pen_color(i, pal1bit(r),pal1bit(g),pal1bit(b));
+ palette.set_pen_color(i+8, pal1bit(0),pal1bit(0),pal1bit(0));
}
}
@@ -1088,7 +1088,8 @@ static MACHINE_CONFIG_START( smc777, smc777_state )
MCFG_SCREEN_VISIBLE_AREA(0, 660-1, 0, 220-1) //normal 640 x 200 + 20 pixels for border color
MCFG_SCREEN_UPDATE_DRIVER(smc777_state, screen_update_smc777)
- MCFG_PALETTE_LENGTH(0x20) // 16 + 8 colors (SMC-777 + SMC-70) + 8 empty entries (SMC-70)
+ MCFG_PALETTE_ADD("palette", 0x20) // 16 + 8 colors (SMC-777 + SMC-70) + 8 empty entries (SMC-70)
+ MCFG_PALETTE_INIT_OWNER(smc777_state, smc777)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
diff --git a/src/mess/drivers/sms.c b/src/mess/drivers/sms.c
index 45510c045d4..5509f1c9dd6 100644
--- a/src/mess/drivers/sms.c
+++ b/src/mess/drivers/sms.c
@@ -563,8 +563,6 @@ static MACHINE_CONFIG_DERIVED( sms2_ntsc, sms_ntsc_base )
SEGA315_5124_HEIGHT_NTSC, SEGA315_5124_TBORDER_START + SEGA315_5124_NTSC_224_TBORDER_HEIGHT, SEGA315_5124_TBORDER_START + SEGA315_5124_NTSC_224_TBORDER_HEIGHT + 224)
MCFG_SCREEN_UPDATE_DRIVER(sms_state, screen_update_sms)
- MCFG_PALETTE_LENGTH(SEGA315_5124_PALETTE_SIZE)
-
MCFG_SEGA315_5246_ADD("sms_vdp", _315_5124_ntsc_intf)
MCFG_SEGA315_5246_SET_SCREEN("screen")
MACHINE_CONFIG_END
@@ -601,8 +599,6 @@ static MACHINE_CONFIG_DERIVED( sms1_ntsc, sms_ntsc_base )
MCFG_VIDEO_START_OVERRIDE(sms_state,sms1)
MCFG_VIDEO_RESET_OVERRIDE(sms_state,sms1)
- MCFG_PALETTE_LENGTH(SEGA315_5124_PALETTE_SIZE)
-
MCFG_SEGA315_5124_ADD("sms_vdp", _315_5124_ntsc_intf)
MCFG_SEGA315_5124_SET_SCREEN("screen")
@@ -635,8 +631,6 @@ static MACHINE_CONFIG_START( sms_sdisp, smssdisp_state )
SEGA315_5124_HEIGHT_NTSC, SEGA315_5124_TBORDER_START + SEGA315_5124_NTSC_224_TBORDER_HEIGHT, SEGA315_5124_TBORDER_START + SEGA315_5124_NTSC_224_TBORDER_HEIGHT + 224)
MCFG_SCREEN_UPDATE_DRIVER(sms_state, screen_update_sms)
- MCFG_PALETTE_LENGTH(SEGA315_5124_PALETTE_SIZE)
-
MCFG_SEGA315_5246_ADD("sms_vdp", sms_store_intf)
MCFG_SEGA315_5246_SET_SCREEN("screen")
@@ -729,8 +723,6 @@ static MACHINE_CONFIG_DERIVED( sms2_pal, sms_pal_base )
SEGA315_5124_HEIGHT_PAL, SEGA315_5124_TBORDER_START + SEGA315_5124_PAL_240_TBORDER_HEIGHT, SEGA315_5124_TBORDER_START + SEGA315_5124_PAL_240_TBORDER_HEIGHT + 240)
MCFG_SCREEN_UPDATE_DRIVER(sms_state, screen_update_sms)
- MCFG_PALETTE_LENGTH(SEGA315_5124_PALETTE_SIZE)
-
MCFG_SEGA315_5246_ADD("sms_vdp", _315_5124_pal_intf)
MCFG_SEGA315_5246_SET_SCREEN("screen")
MACHINE_CONFIG_END
@@ -767,8 +759,6 @@ static MACHINE_CONFIG_DERIVED( sms1_pal, sms_pal_base )
MCFG_VIDEO_START_OVERRIDE(sms_state,sms1)
MCFG_VIDEO_RESET_OVERRIDE(sms_state,sms1)
- MCFG_PALETTE_LENGTH(SEGA315_5124_PALETTE_SIZE)
-
MCFG_SEGA315_5124_ADD("sms_vdp", _315_5124_pal_intf)
MCFG_SEGA315_5124_SET_SCREEN("screen")
@@ -824,8 +814,6 @@ static MACHINE_CONFIG_START( gamegear, sms_state )
MCFG_VIDEO_START_OVERRIDE(sms_state,gamegear)
- MCFG_PALETTE_LENGTH(SEGA315_5378_PALETTE_SIZE)
-
MCFG_SEGA315_5378_ADD("sms_vdp", _315_5124_ntsc_intf)
MCFG_SEGA315_5378_SET_SCREEN("screen")
diff --git a/src/mess/drivers/socrates.c b/src/mess/drivers/socrates.c
index 7c3b0b49dd6..c41ae4a9513 100644
--- a/src/mess/drivers/socrates.c
+++ b/src/mess/drivers/socrates.c
@@ -126,7 +126,7 @@ public:
required_device<cpu_device> m_maincpu;
required_device<socrates_snd_device> m_sound;
- rgb_t m_palette[256];
+ rgb_t m_palette_val[256];
UINT8 m_data[8];
UINT8 m_rom_bank;
@@ -163,7 +163,7 @@ public:
DECLARE_DRIVER_INIT(socrates);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(socrates);
UINT32 screen_update_socrates(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(assert_irq);
TIMER_CALLBACK_MEMBER(clear_speech_cb);
@@ -700,14 +700,14 @@ return composedcolor;
}
-void socrates_state::palette_init()
+PALETTE_INIT_MEMBER(socrates_state, socrates)
{
int i; // iterator
for (i = 0; i < 256; i++)
{
- m_palette[i] = socrates_create_color(i);
+ m_palette_val[i] = socrates_create_color(i);
}
- palette_set_colors(machine(), 0, m_palette, ARRAY_LENGTH(m_palette));
+ palette.set_pen_colors(0, m_palette_val, ARRAY_LENGTH(m_palette_val));
}
void socrates_state::video_start()
@@ -1375,8 +1375,8 @@ static MACHINE_CONFIG_START( socrates, socrates_state )
MCFG_SCREEN_VISIBLE_AREA(0, 263, 0, 219) // the last few rows are usually cut off by the screen bottom but are indeed displayed if you mess with v-hold
MCFG_SCREEN_UPDATE_DRIVER(socrates_state, screen_update_socrates)
- MCFG_PALETTE_LENGTH(256)
-
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(socrates_state, socrates)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1409,7 +1409,7 @@ static MACHINE_CONFIG_START( socrates_pal, socrates_state )
MCFG_SCREEN_VISIBLE_AREA(0, 263, 0, 229) // the last few rows are usually cut off by the screen bottom but are indeed displayed if you mess with v-hold
MCFG_SCREEN_UPDATE_DRIVER(socrates_state, screen_update_socrates)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
@@ -1454,7 +1454,7 @@ static MACHINE_CONFIG_START( iqunlimz, iqunlim_state )
MCFG_SCREEN_UPDATE_DRIVER(iqunlim_state, screen_update)
MCFG_SCREEN_SIZE(256, 224)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 224-1)
- MCFG_PALETTE_LENGTH(256)
+ MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/sorcerer.c b/src/mess/drivers/sorcerer.c
index d14a4363c0d..5f7b4003f84 100644
--- a/src/mess/drivers/sorcerer.c
+++ b/src/mess/drivers/sorcerer.c
@@ -434,8 +434,7 @@ static MACHINE_CONFIG_START( sorcerer, sorcerer_state )
MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(sorcerer_state, screen_update)
MCFG_GFXDECODE_ADD("gfxdecode", sorcerer)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/spec128.c b/src/mess/drivers/spec128.c
index dcb5945c4c3..4b25c7894d4 100644
--- a/src/mess/drivers/spec128.c
+++ b/src/mess/drivers/spec128.c
@@ -303,8 +303,6 @@ MACHINE_CONFIG_DERIVED( spectrum_128, spectrum )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_PALETTE_LENGTH(16)
- MCFG_PALETTE_INIT_OVERRIDE(spectrum_state, spectrum )
MCFG_SCREEN_RAW_PARAMS(X1_128_SINCLAIR / 2.5f, 456, 0, 352, 311, 0, 296)
MCFG_VIDEO_START_OVERRIDE(spectrum_state, spectrum_128 )
diff --git a/src/mess/drivers/special.c b/src/mess/drivers/special.c
index 5c5cc4544fb..f6aa2dcc34a 100644
--- a/src/mess/drivers/special.c
+++ b/src/mess/drivers/special.c
@@ -374,7 +374,7 @@ static MACHINE_CONFIG_START( special, special_state )
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 256-1)
MCFG_VIDEO_START_OVERRIDE(special_state,special)
MCFG_SCREEN_UPDATE_DRIVER(special_state, screen_update_special)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -425,8 +425,10 @@ static MACHINE_CONFIG_DERIVED( specimx, special )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(special_state, screen_update_specimx)
MCFG_VIDEO_START_OVERRIDE(special_state,specimx)
- MCFG_PALETTE_LENGTH(16)
- MCFG_PALETTE_INIT_OVERRIDE(special_state, specimx )
+
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(special_state, specimx )
/* audio hardware */
MCFG_SOUND_ADD("custom", SPECIMX, 0)
@@ -461,8 +463,8 @@ static MACHINE_CONFIG_START( erik, special_state )
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 256-1)
MCFG_VIDEO_START_OVERRIDE(special_state,erik)
MCFG_SCREEN_UPDATE_DRIVER(special_state, screen_update_erik)
- MCFG_PALETTE_LENGTH(8)
- MCFG_PALETTE_INIT_OVERRIDE(special_state,erik)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(special_state,erik)
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/spectrum.c b/src/mess/drivers/spectrum.c
index f509b722dd0..40a4267da6e 100644
--- a/src/mess/drivers/spectrum.c
+++ b/src/mess/drivers/spectrum.c
@@ -704,8 +704,9 @@ MACHINE_CONFIG_START( spectrum_common, spectrum_state )
MCFG_SCREEN_UPDATE_DRIVER(spectrum_state, screen_update_spectrum)
MCFG_SCREEN_VBLANK_DRIVER(spectrum_state, screen_eof_spectrum)
- MCFG_PALETTE_LENGTH(16)
- MCFG_PALETTE_INIT_OVERRIDE(spectrum_state, spectrum )
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(spectrum_state, spectrum )
+
MCFG_GFXDECODE_ADD("gfxdecode", spectrum)
MCFG_VIDEO_START_OVERRIDE(spectrum_state, spectrum )
diff --git a/src/mess/drivers/ssem.c b/src/mess/drivers/ssem.c
index f2b50433586..d6499789dd4 100644
--- a/src/mess/drivers/ssem.c
+++ b/src/mess/drivers/ssem.c
@@ -645,8 +645,7 @@ static MACHINE_CONFIG_START( ssem, ssem_state )
MCFG_SCREEN_SIZE(256, 280)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 279)
MCFG_SCREEN_UPDATE_DRIVER(ssem_state, screen_update_ssem)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* cartridge */
MCFG_CARTSLOT_ADD("cart")
diff --git a/src/mess/drivers/ssystem3.c b/src/mess/drivers/ssystem3.c
index aebeb608273..8008912e769 100644
--- a/src/mess/drivers/ssystem3.c
+++ b/src/mess/drivers/ssystem3.c
@@ -300,8 +300,8 @@ static MACHINE_CONFIG_START( ssystem3, ssystem3_state )
MCFG_SCREEN_VISIBLE_AREA(0, 728-1, 0, 437-1)
MCFG_SCREEN_UPDATE_DRIVER(ssystem3_state, screen_update_ssystem3)
- MCFG_PALETTE_LENGTH(242 + 32768)
-
+ MCFG_PALETTE_ADD("palette", 242 + 32768)
+ MCFG_PALETTE_INIT_OWNER(ssystem3_state, ssystem3)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/super80.c b/src/mess/drivers/super80.c
index 5b32da2a208..eb5a53520c5 100644
--- a/src/mess/drivers/super80.c
+++ b/src/mess/drivers/super80.c
@@ -649,8 +649,7 @@ static MACHINE_CONFIG_START( super80, super80_state )
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(super80_state, screen_update_super80)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, monochrome_green)
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
MCFG_GFXDECODE_ADD("gfxdecode", super80)
MCFG_DEFAULT_LAYOUT( layout_super80 )
@@ -697,8 +696,10 @@ static MACHINE_CONFIG_DERIVED( super80m, super80 )
MCFG_CPU_PROGRAM_MAP(super80m_map)
MCFG_GFXDECODE_MODIFY("gfxdecode", super80m)
- MCFG_PALETTE_LENGTH(16)
- MCFG_PALETTE_INIT_OVERRIDE(super80_state,super80m)
+
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(super80_state,super80m)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(super80_state, screen_update_super80m)
@@ -721,8 +722,8 @@ static MACHINE_CONFIG_START( super80v, super80_state )
MCFG_SCREEN_UPDATE_DRIVER(super80_state, screen_update_super80v)
MCFG_SCREEN_VBLANK_DRIVER(super80_state, screen_eof_super80m)
- MCFG_PALETTE_LENGTH(16)
- MCFG_PALETTE_INIT_OVERRIDE(super80_state,super80m)
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(super80_state,super80m)
MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK / SUPER80V_DOTS, super80v_crtc)
diff --git a/src/mess/drivers/supracan.c b/src/mess/drivers/supracan.c
index 3f33208406c..7025e0cee46 100644
--- a/src/mess/drivers/supracan.c
+++ b/src/mess/drivers/supracan.c
@@ -209,7 +209,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(supracan);
UINT32 screen_update_supracan(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(supracan_irq);
INTERRUPT_GEN_MEMBER(supracan_sound_irq);
@@ -565,7 +565,7 @@ void supracan_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
//printf("sprite data %04x %04x %04x %04x\n", supracan_vram[i+0] , supracan_vram[i+1] , supracan_vram[i+2] ,supracan_vram[i+3] );
- gfx->transpen(bitmap,cliprect,tile,palette,sprite_xflip,sprite_yflip,
+ gfx->transpen(m_palette,bitmap,cliprect,tile,palette,sprite_xflip,sprite_yflip,
x,
y,
0);
@@ -612,7 +612,7 @@ void supracan_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
int tile_xflip = sprite_xflip ^ ((data & 0x0800)>>11);
int tile_yflip = sprite_yflip ^ ((data & 0x0400)>>10);
- gfx->transpen(bitmap,cliprect,tile,palette,tile_xflip,tile_yflip,xpos,ypos,0);
+ gfx->transpen(m_palette,bitmap,cliprect,tile,palette,tile_xflip,tile_yflip,xpos,ypos,0);
}
}
}
@@ -1133,7 +1133,7 @@ static ADDRESS_MAP_START( supracan_mem, AS_PROGRAM, 16, supracan_state )
AM_RANGE( 0xe90030, 0xe9003f ) AM_WRITE( supracan_dma_channel1_w )
AM_RANGE( 0xf00000, 0xf001ff ) AM_READWRITE( supracan_video_r, supracan_video_w )
- AM_RANGE( 0xf00200, 0xf003ff ) AM_RAM AM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE( 0xf00200, 0xf003ff ) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE( 0xf40000, 0xf5ffff ) AM_READWRITE(supracan_vram_r, supracan_vram_w)
AM_RANGE( 0xfc0000, 0xfdffff ) AM_MIRROR(0x30000) AM_RAM /* System work ram */
ADDRESS_MAP_END
@@ -1351,7 +1351,7 @@ static INPUT_PORTS_START( supracan )
PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(4) PORT_NAME("P4 Button A")
INPUT_PORTS_END
-void supracan_state::palette_init()
+PALETTE_INIT_MEMBER(supracan_state, supracan)
{
// Used for debugging purposes for now
//#if 0
@@ -1362,7 +1362,7 @@ void supracan_state::palette_init()
r = (i & 0x1f) << 3;
g = ((i >> 5) & 0x1f) << 3;
b = ((i >> 10) & 0x1f) << 3;
- palette_set_color_rgb( machine(), i, r, g, b );
+ palette.set_pen_color( i, r, g, b );
}
//#endif
}
@@ -1922,7 +1922,10 @@ static MACHINE_CONFIG_START( supracan, supracan_state )
MCFG_SCREEN_ADD( "screen", RASTER )
MCFG_SCREEN_RAW_PARAMS(XTAL_10_738635MHz/2, 348, 0, 256, 256, 0, 240 ) /* No idea if this is correct */
MCFG_SCREEN_UPDATE_DRIVER(supracan_state, screen_update_supracan)
- MCFG_PALETTE_LENGTH( 32768 )
+ MCFG_PALETTE_ADD( "palette", 32768 )
+ MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
+ MCFG_PALETTE_INIT_OWNER(supracan_state, supracan)
+
MCFG_GFXDECODE_ADD("gfxdecode", supracan)
MCFG_CARTSLOT_ADD("cart")
diff --git a/src/mess/drivers/svi318.c b/src/mess/drivers/svi318.c
index 45acd9e9bd0..da56074ef8c 100644
--- a/src/mess/drivers/svi318.c
+++ b/src/mess/drivers/svi318.c
@@ -443,7 +443,7 @@ static MACHINE_CONFIG_START( svi328_806, svi318_state )
MCFG_TMS9928A_SET_SCREEN( "screen" )
MCFG_TMS9928A_SCREEN_ADD_PAL( "screen" )
MCFG_SCREEN_UPDATE_DEVICE( "tms9928a", tms9929a_device, screen_update )
- MCFG_PALETTE_LENGTH(TMS9928A_PALETTE_SIZE + 2) /* 2 additional entries for monochrome svi806 output */
+ MCFG_PALETTE_ADD("palette", TMS9928A_PALETTE_SIZE + 2) /* 2 additional entries for monochrome svi806 output */
MCFG_SCREEN_ADD("svi806", RASTER)
MCFG_SCREEN_REFRESH_RATE(50)
diff --git a/src/mess/drivers/svision.c b/src/mess/drivers/svision.c
index 80238094308..f07abb71d1a 100644
--- a/src/mess/drivers/svision.c
+++ b/src/mess/drivers/svision.c
@@ -351,12 +351,12 @@ static const unsigned char svisionn_palette[] =
245, 249, 248
};
-void svision_state::palette_init()
+PALETTE_INIT_MEMBER(svision_state, svision)
{
int i;
for( i = 0; i < sizeof(svision_palette) / 3; i++ ) {
- palette_set_color_rgb(machine(), i, svision_palette[i*3], svision_palette[i*3+1], svision_palette[i*3+2] );
+ palette.set_pen_color(i, svision_palette[i*3], svision_palette[i*3+1], svision_palette[i*3+2] );
}
}
PALETTE_INIT_MEMBER(svision_state,svisionn)
@@ -364,7 +364,7 @@ PALETTE_INIT_MEMBER(svision_state,svisionn)
int i;
for ( i = 0; i < sizeof(svisionn_palette) / 3; i++ ) {
- palette_set_color_rgb(machine(), i, svisionn_palette[i*3], svisionn_palette[i*3+1], svisionn_palette[i*3+2] );
+ palette.set_pen_color(i, svisionn_palette[i*3], svisionn_palette[i*3+1], svisionn_palette[i*3+2] );
}
}
PALETTE_INIT_MEMBER(svision_state,svisionp)
@@ -372,7 +372,7 @@ PALETTE_INIT_MEMBER(svision_state,svisionp)
int i;
for ( i = 0; i < sizeof(svisionn_palette) / 3; i++ ) {
- palette_set_color_rgb(machine(), i, svisionp_palette[i*3], svisionp_palette[i*3+1], svisionp_palette[i*3+2] );
+ palette.set_pen_color(i, svisionp_palette[i*3], svisionp_palette[i*3+1], svisionp_palette[i*3+2] );
}
}
@@ -433,7 +433,7 @@ UINT32 svision_state::screen_update_tvlink(screen_device &screen, bitmap_rgb32 &
}
else
{
- bitmap.plot_box(3, 0, 162, 159, machine().pens[PALETTE_START]);
+ bitmap.plot_box(3, 0, 162, 159, m_palette->pen(PALETTE_START));
}
return 0;
}
@@ -554,7 +554,8 @@ static MACHINE_CONFIG_START( svision, svision_state )
MCFG_SCREEN_VISIBLE_AREA(3+0, 3+160-1, 0, 160-1)
MCFG_SCREEN_UPDATE_DRIVER(svision_state, screen_update_svision)
- MCFG_PALETTE_LENGTH(ARRAY_LENGTH(svision_palette) * 3)
+ MCFG_PALETTE_ADD("palette", ARRAY_LENGTH(svision_palette) * 3)
+ MCFG_PALETTE_INIT_OWNER(svision_state, svision )
MCFG_DEFAULT_LAYOUT(layout_svision)
@@ -584,7 +585,8 @@ static MACHINE_CONFIG_DERIVED( svisionp, svision )
MCFG_CPU_CLOCK(4430000)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_REFRESH_RATE(50)
- MCFG_PALETTE_INIT_OVERRIDE(svision_state, svisionp )
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(svision_state, svisionp )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( svisionn, svision )
@@ -592,7 +594,8 @@ static MACHINE_CONFIG_DERIVED( svisionn, svision )
MCFG_CPU_CLOCK(3560000/*?*/)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_PALETTE_INIT_OVERRIDE(svision_state, svisionn )
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(svision_state, svisionn )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( tvlinkp, svisionp )
diff --git a/src/mess/drivers/svmu.c b/src/mess/drivers/svmu.c
index 52bd6aba319..76b7c82c965 100644
--- a/src/mess/drivers/svmu.c
+++ b/src/mess/drivers/svmu.c
@@ -36,7 +36,7 @@ public:
required_device<intelfsh8_device> m_flash;
required_device<speaker_sound_device> m_speaker;
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(svmu);
virtual void machine_reset();
DECLARE_WRITE8_MEMBER(page_w);
@@ -149,10 +149,10 @@ void svmu_state::machine_reset()
m_page = 0;
}
-void svmu_state::palette_init()
+PALETTE_INIT_MEMBER(svmu_state, svmu)
{
- palette_set_color(machine(), 0, rgb_t(138, 146, 148));
- palette_set_color(machine(), 1, rgb_t(92, 83, 88));
+ palette.set_pen_color(0, rgb_t(138, 146, 148));
+ palette.set_pen_color(1, rgb_t(92, 83, 88));
}
static LC8670_LCD_UPDATE( svmu_lcd_update )
@@ -314,7 +314,8 @@ static MACHINE_CONFIG_START( svmu, svmu_state )
MCFG_SCREEN_VISIBLE_AREA(0, 48*(PIXEL_SIZE + PIXEL_DISTANCE) - 1, 0, 32*(PIXEL_SIZE + PIXEL_DISTANCE) - 1)
MCFG_SCREEN_UPDATE_DEVICE("maincpu", lc8670_cpu_device, screen_update)
MCFG_DEFAULT_LAYOUT(layout_svmu)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(svmu_state, svmu)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/sys2900.c b/src/mess/drivers/sys2900.c
index 69d0bd6211d..2678546bbdf 100644
--- a/src/mess/drivers/sys2900.c
+++ b/src/mess/drivers/sys2900.c
@@ -127,8 +127,7 @@ static MACHINE_CONFIG_START( sys2900, sys2900_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(sys2900_state, screen_update_sys2900)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/tavernie.c b/src/mess/drivers/tavernie.c
index 7ee46db6947..7404ad2fb6c 100644
--- a/src/mess/drivers/tavernie.c
+++ b/src/mess/drivers/tavernie.c
@@ -373,8 +373,7 @@ static MACHINE_CONFIG_DERIVED( ivg09, cpu09 )
MCFG_SCREEN_SIZE(80*8, 25*10)
MCFG_SCREEN_VISIBLE_AREA(0, 80*8-1, 0, 25*10-1)
MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MCFG_DEFAULT_LAYOUT(layout_tavernie)
/* sound hardware */
diff --git a/src/mess/drivers/tdv2324.c b/src/mess/drivers/tdv2324.c
index 09753731302..7011b8751fc 100644
--- a/src/mess/drivers/tdv2324.c
+++ b/src/mess/drivers/tdv2324.c
@@ -312,8 +312,7 @@ static MACHINE_CONFIG_START( tdv2324, tdv2324_state )
MCFG_SCREEN_SIZE(800, 400)
MCFG_SCREEN_VISIBLE_AREA(0, 800-1, 0, 400-1)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, monochrome_green)
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
MCFG_TMS9927_ADD(TMS9937NL_TAG, XTAL_25_39836MHz, vtac_intf)
diff --git a/src/mess/drivers/tek405x.c b/src/mess/drivers/tek405x.c
index 3b3c1337e92..12f94453a5c 100644
--- a/src/mess/drivers/tek405x.c
+++ b/src/mess/drivers/tek405x.c
@@ -1007,8 +1007,7 @@ static MACHINE_CONFIG_START( tek4051, tek4051_state )
MCFG_SCREEN_VISIBLE_AREA(0, 1024-1, 0, 780-1)
MCFG_SCREEN_UPDATE_DEVICE("vector", vector_device, screen_update)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, monochrome_green)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1120,8 +1119,7 @@ static MACHINE_CONFIG_START( tek4052, tek4052_state )
MCFG_SCREEN_VISIBLE_AREA(0, 1024-1, 0, 780-1)
MCFG_SCREEN_UPDATE_DEVICE("vector", vector_device, screen_update)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, monochrome_green)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/tek410x.c b/src/mess/drivers/tek410x.c
index 0bfbdfe54a1..5d336b01f5c 100644
--- a/src/mess/drivers/tek410x.c
+++ b/src/mess/drivers/tek410x.c
@@ -98,13 +98,14 @@ static MACHINE_CONFIG_START( tek4107a, tek4107a_state )
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
- MCFG_PALETTE_LENGTH(64)
+ MCFG_PALETTE_ADD("palette", 64)
MCFG_GFXDECODE_ADD("gfxdecode", tek4107a)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( tek4109a, tek4107a )
/* video hardware */
- MCFG_PALETTE_LENGTH(4096)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 4096)
MACHINE_CONFIG_END
/* ROMs */
diff --git a/src/mess/drivers/terak.c b/src/mess/drivers/terak.c
index ae960fe7f6b..e9d69c18572 100644
--- a/src/mess/drivers/terak.c
+++ b/src/mess/drivers/terak.c
@@ -101,8 +101,7 @@ static MACHINE_CONFIG_START( terak, terak_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(terak_state, screen_update_terak)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/thomson.c b/src/mess/drivers/thomson.c
index bdbb0dff1df..f67743caa0f 100644
--- a/src/mess/drivers/thomson.c
+++ b/src/mess/drivers/thomson.c
@@ -623,8 +623,8 @@ static MACHINE_CONFIG_START( to7, thomson_state )
MCFG_SCREEN_UPDATE_DRIVER( thomson_state, screen_update_thom )
MCFG_SCREEN_VBLANK_DRIVER( thomson_state, thom_vblank )
- MCFG_PALETTE_LENGTH ( 4097 ) /* 12-bit color + transparency */
- MCFG_PALETTE_INIT_OVERRIDE(thomson_state, thom)
+ MCFG_PALETTE_ADD ( "palette", 4097 ) /* 12-bit color + transparency */
+ MCFG_PALETTE_INIT_OWNER(thomson_state, thom)
MCFG_VIDEO_START_OVERRIDE( thomson_state, thom )
MCFG_DEFAULT_LAYOUT( layout_thomson )
diff --git a/src/mess/drivers/ti85.c b/src/mess/drivers/ti85.c
index 50a5192f075..af2fa19ef1b 100644
--- a/src/mess/drivers/ti85.c
+++ b/src/mess/drivers/ti85.c
@@ -504,8 +504,8 @@ static MACHINE_CONFIG_START( ti81, ti85_state )
MCFG_SCREEN_VISIBLE_AREA(0, 96-1, 0, 64-1)
MCFG_SCREEN_UPDATE_DRIVER(ti85_state, screen_update_ti85)
- MCFG_PALETTE_LENGTH(224)
-
+ MCFG_PALETTE_ADD("palette", 224)
+ MCFG_PALETTE_INIT_OWNER(ti85_state, ti85)
MCFG_NVRAM_ADD_0FILL("nvram")
MACHINE_CONFIG_END
@@ -550,8 +550,10 @@ static MACHINE_CONFIG_DERIVED( ti82, ti81 )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DEVICE("t6a04", t6a04_device, screen_update)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(ti85_state, ti82 )
+
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(ti85_state, ti82 )
MCFG_T6A04_ADD("t6a04", ti82_display)
@@ -578,8 +580,10 @@ static MACHINE_CONFIG_DERIVED( ti83, ti81 )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DEVICE("t6a04", t6a04_device, screen_update)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(ti85_state, ti82 )
+
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(ti85_state, ti82 )
MCFG_T6A04_ADD("t6a04", ti82_display)
MACHINE_CONFIG_END
@@ -610,8 +614,10 @@ static MACHINE_CONFIG_DERIVED( ti83p, ti81 )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DEVICE("t6a04", t6a04_device, screen_update)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(ti85_state, ti82 )
+
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(ti85_state, ti82 )
MCFG_T6A04_ADD("t6a04", ti82_display)
diff --git a/src/mess/drivers/ti89.c b/src/mess/drivers/ti89.c
index 1ba43fc69c6..e6169a4ff0b 100644
--- a/src/mess/drivers/ti89.c
+++ b/src/mess/drivers/ti89.c
@@ -508,10 +508,10 @@ UINT32 ti68k_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c
return 0;
}
-void ti68k_state::palette_init()
+PALETTE_INIT_MEMBER(ti68k_state, ti68k)
{
- palette_set_color(machine(), 0, rgb_t(138, 146, 148));
- palette_set_color(machine(), 1, rgb_t(92, 83, 88));
+ palette.set_pen_color(0, rgb_t(138, 146, 148));
+ palette.set_pen_color(1, rgb_t(92, 83, 88));
}
static MACHINE_CONFIG_START( ti89, ti68k_state )
@@ -528,7 +528,8 @@ static MACHINE_CONFIG_START( ti89, ti68k_state )
MCFG_SCREEN_UPDATE_DRIVER(ti68k_state, screen_update)
MCFG_SCREEN_SIZE(240, 128)
MCFG_SCREEN_VISIBLE_AREA(0, 160-1, 0, 100-1)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(ti68k_state, ti68k)
MCFG_DEFAULT_LAYOUT(layout_lcd)
MCFG_SHARP_UNK128MBIT_ADD("flash") //should be LH28F320 for ti89t and v200 and LH28F160S3T for other models
diff --git a/src/mess/drivers/ti990_10.c b/src/mess/drivers/ti990_10.c
index f0e84f3aeb5..368f0289e4d 100644
--- a/src/mess/drivers/ti990_10.c
+++ b/src/mess/drivers/ti990_10.c
@@ -240,11 +240,7 @@ static MACHINE_CONFIG_START( ti990_10, ti990_10_state )
MCFG_SCREEN_VISIBLE_AREA(0, 560-1, 0, /*250*/280-1)
MCFG_SCREEN_UPDATE_DRIVER(ti990_10_state, screen_update_ti990_10)
- MCFG_GFXDECODE_ADD("gfxdecode", vdt911)
- MCFG_PALETTE_LENGTH(8)
-
MCFG_VDT911_VIDEO_ADD("vdt911", vdt911_intf)
- MCFG_VDT911_VIDEO_GFXDECODE("gfxdecode")
/* 911 VDT has a beep tone generator */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/ti990_4.c b/src/mess/drivers/ti990_4.c
index a7001a72311..b8aae6e7151 100644
--- a/src/mess/drivers/ti990_4.c
+++ b/src/mess/drivers/ti990_4.c
@@ -356,19 +356,9 @@ static MACHINE_CONFIG_START( ti990_4, ti990_4_state )
#endif
#if VIDEO_911
- MCFG_GFXDECODE_ADD("gfxdecode", vdt911)
- MCFG_PALETTE_LENGTH(8)
-#else
- MCFG_GFXDECODE_ADD("gfxdecode", asr733)
- MCFG_PALETTE_LENGTH(2)
-#endif
-
-#if VIDEO_911
MCFG_VDT911_VIDEO_ADD("vdt911", vdt911_intf)
- MCFG_VDT911_VIDEO_GFXDECODE("gfxdecode")
#else
MCFG_ASR733_VIDEO_ADD("asr733", asr733_intf)
- MCFG_ASR733_VIDEO_GFXDECODE("gfxdecode")
#endif
#if VIDEO_911
diff --git a/src/mess/drivers/ti99_2.c b/src/mess/drivers/ti99_2.c
index feef1b342c5..c3bac2da158 100644
--- a/src/mess/drivers/ti99_2.c
+++ b/src/mess/drivers/ti99_2.c
@@ -102,7 +102,6 @@ public:
DECLARE_DRIVER_INIT(ti99_2_24);
DECLARE_DRIVER_INIT(ti99_2_32);
virtual void machine_reset();
- virtual void palette_init();
UINT32 screen_update_ti99_2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(ti99_2_vblank_interrupt);
required_device<cpu_device> m_maincpu;
@@ -160,12 +159,6 @@ INTERRUPT_GEN_MEMBER(ti99_2_state::ti99_2_vblank_interrupt)
*/
-void ti99_2_state::palette_init()
-{
- palette_set_color(machine(),0,rgb_t::white); /* white */
- palette_set_color(machine(),1,rgb_t::black); /* black */
-}
-
UINT32 ti99_2_state::screen_update_ti99_2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
@@ -178,7 +171,7 @@ UINT32 ti99_2_state::screen_update_ti99_2(screen_device &screen, bitmap_ind16 &b
for (i = 0; i < 768; i++)
{
/* Is the char code masked or not ??? */
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, videoram[i] & 0x7F, 0,
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, videoram[i] & 0x7F, 0,
0, 0, sx, sy);
sx += 8;
@@ -398,7 +391,7 @@ static MACHINE_CONFIG_START( ti99_2, ti99_2_state )
MCFG_SCREEN_UPDATE_DRIVER(ti99_2_state, screen_update_ti99_2)
MCFG_GFXDECODE_ADD("gfxdecode", ti99_2)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD_WHITE_AND_BLACK("palette")
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/tiki100.c b/src/mess/drivers/tiki100.c
index a3456c47246..8f86e2174aa 100644
--- a/src/mess/drivers/tiki100.c
+++ b/src/mess/drivers/tiki100.c
@@ -149,9 +149,9 @@ WRITE8_MEMBER( tiki100_state::video_mode_w )
if (BIT(data, 7))
{
int color = data & 0x0f;
- UINT8 colordata = ~m_palette;
+ UINT8 colordata = ~m_palette_val;
- palette_set_color_rgb(machine(), color, pal3bit(colordata >> 5), pal3bit(colordata >> 2), pal2bit(colordata >> 0));
+ m_palette->set_pen_color(color, pal3bit(colordata >> 5), pal3bit(colordata >> 2), pal2bit(colordata >> 0));
}
}
@@ -172,7 +172,7 @@ WRITE8_MEMBER( tiki100_state::palette_w )
*/
- m_palette = data;
+ m_palette_val = data;
}
WRITE8_MEMBER( tiki100_state::system_w )
@@ -685,7 +685,7 @@ void tiki100_state::machine_start()
save_item(NAME(m_vire));
save_item(NAME(m_scroll));
save_item(NAME(m_mode));
- save_item(NAME(m_palette));
+ save_item(NAME(m_palette_val));
save_item(NAME(m_keylatch));
}
@@ -713,7 +713,7 @@ static MACHINE_CONFIG_START( tiki100, tiki100_state )
MCFG_SCREEN_SIZE(1024, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 1024-1, 0, 256-1)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
// pixel clock 20.01782 MHz
/* devices */
diff --git a/src/mess/drivers/tim011.c b/src/mess/drivers/tim011.c
index 72f0b22740e..c696ad7eff1 100644
--- a/src/mess/drivers/tim011.c
+++ b/src/mess/drivers/tim011.c
@@ -157,8 +157,7 @@ static MACHINE_CONFIG_START( tim011,tim011_state )
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(tim011_state, screen_update_tim011)
- MCFG_PALETTE_LENGTH(4)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mess/drivers/tim100.c b/src/mess/drivers/tim100.c
index 1a535c873b5..da5a635c622 100644
--- a/src/mess/drivers/tim100.c
+++ b/src/mess/drivers/tim100.c
@@ -56,7 +56,7 @@ static const rgb_t tim100_palette[3] = {
void tim100_state::machine_reset()
{
- palette_set_colors(machine(), 0, tim100_palette, ARRAY_LENGTH(tim100_palette));
+ m_palette->set_pen_colors(0, tim100_palette, ARRAY_LENGTH(tim100_palette));
}
const gfx_layout tim100_charlayout =
@@ -130,11 +130,11 @@ static MACHINE_CONFIG_START( tim100, tim100_state )
MCFG_SCREEN_SIZE(40*16, 16*16)
MCFG_SCREEN_VISIBLE_AREA(0, 40*16-1, 0, 16*16-1)
- MCFG_GFXDECODE_ADD("gfxdecode", tim100 )
+ MCFG_GFXDECODE_ADD("gfxdecode", tim100 )
MCFG_I8275_ADD ( "i8276", tim100_i8276_interface)
- MCFG_PALETTE_LENGTH(3)
+ MCFG_PALETTE_ADD("palette", 3)
MCFG_DEVICE_ADD("uart_u17", I8251, 0)
MCFG_DEVICE_ADD("uart_u18", I8251, 0)
diff --git a/src/mess/drivers/tk80bs.c b/src/mess/drivers/tk80bs.c
index 55023b5859b..e3286b2915e 100644
--- a/src/mess/drivers/tk80bs.c
+++ b/src/mess/drivers/tk80bs.c
@@ -69,7 +69,7 @@ UINT32 tk80bs_state::screen_update_tk80bs(screen_device &screen, bitmap_ind16 &b
{
int tile = m_p_videoram[count++];
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, tile, 0, 0, 0, x*8, y*8);
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, tile, 0, 0, 0, x*8, y*8);
}
}
@@ -193,8 +193,7 @@ static MACHINE_CONFIG_START( tk80bs, tk80bs_state )
MCFG_SCREEN_SIZE(256, 128)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 128-1)
MCFG_SCREEN_UPDATE_DRIVER(tk80bs_state, screen_update_tk80bs)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", tk80bs)
/* Devices */
diff --git a/src/mess/drivers/trs80.c b/src/mess/drivers/trs80.c
index 854da73f197..209742636e6 100644
--- a/src/mess/drivers/trs80.c
+++ b/src/mess/drivers/trs80.c
@@ -592,8 +592,7 @@ static MACHINE_CONFIG_START( trs80, trs80_state ) // the original model I,
MCFG_SCREEN_UPDATE_DRIVER(trs80_state, screen_update_trs80)
MCFG_GFXDECODE_ADD("gfxdecode", trs80)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
@@ -677,8 +676,9 @@ static MACHINE_CONFIG_DERIVED( lnw80, model1 )
MCFG_GFXDECODE_MODIFY("gfxdecode",lnw80)
- MCFG_PALETTE_LENGTH(8)
- MCFG_PALETTE_INIT_OVERRIDE(trs80_state,lnw80)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(trs80_state,lnw80)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_SIZE(80*6, 16*12)
MCFG_SCREEN_VISIBLE_AREA(0,80*6-1,0,16*12-1)
diff --git a/src/mess/drivers/tvc.c b/src/mess/drivers/tvc.c
index 22385115c2e..d1f38341eaa 100644
--- a/src/mess/drivers/tvc.c
+++ b/src/mess/drivers/tvc.c
@@ -573,7 +573,7 @@ static MC6845_UPDATE_ROW( tvc_update_row )
}
}
-void tvc_state::palette_init()
+PALETTE_INIT_MEMBER(tvc_state, tvc)
{
const static unsigned char tvc_palette[16][3] =
{
@@ -597,7 +597,7 @@ void tvc_state::palette_init()
int i;
for(i = 0; i < 16; i++)
- palette_set_color_rgb(machine(), i, tvc_palette[i][0], tvc_palette[i][1], tvc_palette[i][2]);
+ palette.set_pen_color(i, tvc_palette[i][0], tvc_palette[i][1], tvc_palette[i][2]);
}
WRITE_LINE_MEMBER(tvc_state::tvc_int_ff_set)
@@ -687,7 +687,8 @@ static MACHINE_CONFIG_START( tvc, tvc_state )
MCFG_SCREEN_VISIBLE_AREA(0, 512 - 1, 0, 240 - 1)
MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
- MCFG_PALETTE_LENGTH( 16 )
+ MCFG_PALETTE_ADD( "palette", 16 )
+ MCFG_PALETTE_INIT_OWNER(tvc_state, tvc)
MCFG_MC6845_ADD("crtc", MC6845, "screen", 3125000/2, tvc_crtc6845_interface) // clk taken from schematics
diff --git a/src/mess/drivers/tx0.c b/src/mess/drivers/tx0.c
index 9f1b71f7ecd..4911071ec06 100644
--- a/src/mess/drivers/tx0.c
+++ b/src/mess/drivers/tx0.c
@@ -228,7 +228,7 @@ static GFXDECODE_START( tx0 )
GFXDECODE_END
/* Initialise the palette */
-void tx0_state::palette_init()
+PALETTE_INIT_MEMBER(tx0_state, tx0)
{
/* rgb components for the two color emissions */
const double r1 = .1, g1 = .1, b1 = .924, r2 = .7, g2 = .7, b2 = .076;
@@ -246,8 +246,6 @@ void tx0_state::palette_init()
#endif
UINT8 i, r, g, b;
- machine().colortable = colortable_alloc(machine(), total_colors_needed);
-
/* initialize CRT palette */
/* compute the decay factor per refresh frame */
@@ -263,7 +261,7 @@ void tx0_state::palette_init()
g = (int) ((g1*cur_level_1 + g2*cur_level_2) + .5);
b = (int) ((b1*cur_level_1 + b2*cur_level_2) + .5);
/* write color in palette */
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
/* apply decay for next iteration */
cur_level_1 *= decay_1;
cur_level_2 *= decay_2;
@@ -283,22 +281,22 @@ void tx0_state::palette_init()
mame_printf_debug("File %s line %d: Please take higher value for pen_crt_num_levels or smaller value for decay\n", __FILE__, __LINE__);*/
#endif
#endif
- colortable_palette_set_color(machine().colortable, 0, rgb_t(0, 0, 0));
+ palette.set_indirect_color(0, rgb_t(0, 0, 0));
/* load static palette */
for ( i = 0; i < 6; i++ )
{
r = tx0_colors[i*3]; g = tx0_colors[i*3+1]; b = tx0_colors[i*3+2];
- colortable_palette_set_color(machine().colortable, pen_crt_num_levels + i, rgb_t(r, g, b));
+ palette.set_indirect_color(pen_crt_num_levels + i, rgb_t(r, g, b));
}
/* copy colortable to palette */
for( i = 0; i < total_colors_needed; i++ )
- colortable_entry_set_value(machine().colortable, i, i);
+ palette.set_pen_indirect(i, i);
/* set up palette for text */
for( i = 0; i < 6; i++ )
- colortable_entry_set_value(machine().colortable, total_colors_needed + i, tx0_palette[i]);
+ palette.set_pen_indirect(total_colors_needed + i, tx0_palette[i]);
}
@@ -1598,8 +1596,8 @@ static MACHINE_CONFIG_START( tx0_64kw, tx0_state )
MCFG_DEVICE_ADD("magtape", TX0_MAGTAPE, 0)
MCFG_GFXDECODE_ADD("gfxdecode", tx0)
- MCFG_PALETTE_LENGTH(pen_crt_num_levels + sizeof(tx0_colors) / 3 + sizeof(tx0_palette))
-
+ MCFG_PALETTE_ADD("palette", pen_crt_num_levels + sizeof(tx0_colors) / 3 + sizeof(tx0_palette))
+ MCFG_PALETTE_INIT_OWNER(tx0_state, tx0)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( tx0_8kw, tx0_64kw )
diff --git a/src/mess/drivers/uknc.c b/src/mess/drivers/uknc.c
index efbc4a1b8a8..7c6d425e4be 100644
--- a/src/mess/drivers/uknc.c
+++ b/src/mess/drivers/uknc.c
@@ -72,8 +72,7 @@ static MACHINE_CONFIG_START( uknc, uknc_state )
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(uknc_state, screen_update_uknc)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mess/drivers/unior.c b/src/mess/drivers/unior.c
index 95d8f3b1177..1fa0118501e 100644
--- a/src/mess/drivers/unior.c
+++ b/src/mess/drivers/unior.c
@@ -291,7 +291,7 @@ static const rgb_t unior_palette[3] =
PALETTE_INIT_MEMBER(unior_state,unior)
{
- palette_set_colors(machine(), 0, unior_palette, ARRAY_LENGTH(unior_palette));
+ palette.set_pen_colors(0, unior_palette, ARRAY_LENGTH(unior_palette));
}
@@ -439,8 +439,8 @@ static MACHINE_CONFIG_START( unior, unior_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
MCFG_SCREEN_UPDATE_DEVICE("crtc", i8275_device, screen_update)
MCFG_GFXDECODE_ADD("gfxdecode", unior)
- MCFG_PALETTE_LENGTH(3)
- MCFG_PALETTE_INIT_OVERRIDE(unior_state,unior)
+ MCFG_PALETTE_ADD("palette", 3)
+ MCFG_PALETTE_INIT_OWNER(unior_state,unior)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/unistar.c b/src/mess/drivers/unistar.c
index 49165c6d1e4..d62d378fba0 100644
--- a/src/mess/drivers/unistar.c
+++ b/src/mess/drivers/unistar.c
@@ -21,7 +21,7 @@ public:
virtual void machine_reset();
virtual void video_start();
- void palette_init_unistar();
+ DECLARE_PALETTE_INIT(unistar);
UINT32 screen_update_unistar(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
const UINT8 *m_p_chargen;
private:
@@ -54,9 +54,9 @@ void unistar_state::machine_reset()
PALETTE_INIT_MEMBER( unistar_state, unistar )
{
- palette_set_color_rgb( machine(), 0, 0, 0, 0 ); /* Black */
- palette_set_color_rgb( machine(), 1, 0, 255, 0 ); /* Full */
- palette_set_color_rgb( machine(), 2, 0, 128, 0 ); /* Dimmed */
+ palette.set_pen_color(0, 0, 0, 0 ); /* Black */
+ palette.set_pen_color(1, 0, 255, 0 ); /* Full */
+ palette.set_pen_color(2, 0, 128, 0 ); /* Dimmed */
}
void unistar_state::video_start()
@@ -100,8 +100,8 @@ static MACHINE_CONFIG_START( unistar, unistar_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(unistar_state, screen_update_unistar)
MCFG_GFXDECODE_ADD("gfxdecode", unistar)
- MCFG_PALETTE_LENGTH(3)
- MCFG_PALETTE_INIT_OVERRIDE(unistar_state, unistar)
+ MCFG_PALETTE_ADD("palette", 3)
+ MCFG_PALETTE_INIT_OWNER(unistar_state, unistar)
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mess/drivers/univac.c b/src/mess/drivers/univac.c
index 308a4eef1d2..e4ac8240cc9 100644
--- a/src/mess/drivers/univac.c
+++ b/src/mess/drivers/univac.c
@@ -148,8 +148,7 @@ static MACHINE_CONFIG_START( uts20, univac_state )
MCFG_SCREEN_UPDATE_DRIVER(univac_state, screen_update)
MCFG_SCREEN_SIZE(640, 250)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 249)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/unixpc.c b/src/mess/drivers/unixpc.c
index db3854404f2..adf55de672d 100644
--- a/src/mess/drivers/unixpc.c
+++ b/src/mess/drivers/unixpc.c
@@ -212,8 +212,7 @@ static MACHINE_CONFIG_START( unixpc, unixpc_state )
MCFG_DEFAULT_LAYOUT(layout_unixpc)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
// internal ram
MCFG_RAM_ADD(RAM_TAG)
diff --git a/src/mess/drivers/ut88.c b/src/mess/drivers/ut88.c
index 909e9b4a1e9..61471a5b027 100644
--- a/src/mess/drivers/ut88.c
+++ b/src/mess/drivers/ut88.c
@@ -200,9 +200,8 @@ static MACHINE_CONFIG_START( ut88, ut88_state )
MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 28*8-1)
MCFG_VIDEO_START_OVERRIDE(ut88_state,ut88)
MCFG_SCREEN_UPDATE_DRIVER(ut88_state, screen_update_ut88)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
- MCFG_GFXDECODE_ADD("gfxdecode", ut88 )
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
+ MCFG_GFXDECODE_ADD("gfxdecode", ut88 )
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/v6809.c b/src/mess/drivers/v6809.c
index c0560759954..48dc6a8ad4b 100644
--- a/src/mess/drivers/v6809.c
+++ b/src/mess/drivers/v6809.c
@@ -346,8 +346,7 @@ static MACHINE_CONFIG_START( v6809, v6809_state )
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DEVICE("crtc", sy6545_1_device, screen_update)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", v6809)
/* sound hardware */
diff --git a/src/mess/drivers/vboy.c b/src/mess/drivers/vboy.c
index 6daf247c354..2379174c904 100644
--- a/src/mess/drivers/vboy.c
+++ b/src/mess/drivers/vboy.c
@@ -211,7 +211,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(vboy);
UINT32 screen_update_vboy_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_vboy_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(timer_main_tick);
@@ -264,7 +264,7 @@ void vboy_state::put_obj(bitmap_ind16 &bitmap, const rectangle &cliprect, int x,
if (dat)
{
if (cliprect.contains(res_x, res_y))
- bitmap.pix16((res_y), (res_x)) = machine().pens[col];
+ bitmap.pix16((res_y), (res_x)) = m_palette->pen(col);
}
}
}
@@ -379,7 +379,7 @@ void vboy_state::draw_bg_map(bitmap_ind16 &bitmap, const rectangle &cliprect, UI
}
if(pix != -1)
- bitmap.pix16(y1, x1) = machine().pens[pix & 3];
+ bitmap.pix16(y1, x1) = m_palette->pen(pix & 3);
}
}
// g_profiler.stop();
@@ -424,7 +424,7 @@ void vboy_state::draw_affine_map(bitmap_ind16 &bitmap, const rectangle &cliprect
if(pix != -1)
if (cliprect.contains(x1, y1))
- bitmap.pix16(y1, x1) = machine().pens[pix & 3];
+ bitmap.pix16(y1, x1) = m_palette->pen(pix & 3);
}
}
// g_profiler.stop();
@@ -545,7 +545,7 @@ UINT8 vboy_state::display_world(int num, bitmap_ind16 &bitmap, const rectangle &
UINT32 vboy_state::screen_update_vboy_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(machine().pens[m_vip_regs.BKCOL], cliprect);
+ bitmap.fill(m_palette->pen(m_vip_regs.BKCOL), cliprect);
int cur_spt;
if(!(m_vip_regs.DPCTRL & 2)) /* Don't bother if screen is off */
@@ -571,7 +571,7 @@ UINT32 vboy_state::screen_update_vboy_left(screen_device &screen, bitmap_ind16 &
yi = ((y & 0x3)*2);
pix = (pen >> yi) & 3;
- bitmap.pix16(y, x) = machine().pens[pix & 3];
+ bitmap.pix16(y, x) = m_palette->pen(pix & 3);
}
}
}
@@ -581,7 +581,7 @@ UINT32 vboy_state::screen_update_vboy_left(screen_device &screen, bitmap_ind16 &
UINT32 vboy_state::screen_update_vboy_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(machine().pens[m_vip_regs.BKCOL], cliprect);
+ bitmap.fill(m_palette->pen(m_vip_regs.BKCOL), cliprect);
int cur_spt;
if(!(m_vip_regs.DPCTRL & 2)) /* Don't bother if screen is off */
@@ -757,9 +757,9 @@ void vboy_state::m_set_brightness(void)
if(c > 0xff) { c = 0xff; }
// popmessage("%02x %02x %02x %02x",m_vip_regs.BRTA,m_vip_regs.BRTB,m_vip_regs.BRTC,m_vip_regs.REST);
- palette_set_color_rgb(machine(), 1, a,0,0);
- palette_set_color_rgb(machine(), 2, b,0,0);
- palette_set_color_rgb(machine(), 3, c,0,0);
+ m_palette->set_pen_color(1, a,0,0);
+ m_palette->set_pen_color(2, b,0,0);
+ m_palette->set_pen_color(3, c,0,0);
}
READ16_MEMBER( vboy_state::vip_r )
@@ -1249,12 +1249,12 @@ TIMER_DEVICE_CALLBACK_MEMBER(vboy_state::timer_pad_tick)
m_maincpu->set_input_line(0, HOLD_LINE);
}
-void vboy_state::palette_init()
+PALETTE_INIT_MEMBER(vboy_state, vboy)
{
- palette_set_color(machine(), 0, rgb_t::black);
- palette_set_color(machine(), 1, rgb_t::black);
- palette_set_color(machine(), 2, rgb_t::black);
- palette_set_color(machine(), 3, rgb_t::black);
+ palette.set_pen_color(0, rgb_t::black);
+ palette.set_pen_color(1, rgb_t::black);
+ palette.set_pen_color(2, rgb_t::black);
+ palette.set_pen_color(3, rgb_t::black);
}
void vboy_state::m_set_irq(UINT16 irq_vector)
@@ -1430,7 +1430,8 @@ static MACHINE_CONFIG_START( vboy, vboy_state )
/* video hardware */
MCFG_DEFAULT_LAYOUT(layout_vboy)
- MCFG_PALETTE_LENGTH(4)
+ MCFG_PALETTE_ADD("palette", 4)
+ MCFG_PALETTE_INIT_OWNER(vboy_state, vboy)
/* Left screen */
MCFG_SCREEN_ADD("3dleft", RASTER)
diff --git a/src/mess/drivers/vc4000.c b/src/mess/drivers/vc4000.c
index 5e984d68545..14dc4c1ee88 100644
--- a/src/mess/drivers/vc4000.c
+++ b/src/mess/drivers/vc4000.c
@@ -355,9 +355,9 @@ static const rgb_t vc4000_palette[] =
We can do that in the code with ^7 */
};
-void vc4000_state::palette_init()
+PALETTE_INIT_MEMBER(vc4000_state, vc4000)
{
- palette_set_colors(machine(), 0, vc4000_palette, ARRAY_LENGTH(vc4000_palette));
+ palette.set_pen_colors(0, vc4000_palette, ARRAY_LENGTH(vc4000_palette));
}
DEVICE_IMAGE_LOAD_MEMBER( vc4000_state, vc4000_cart )
@@ -424,8 +424,8 @@ static MACHINE_CONFIG_START( vc4000, vc4000_state )
MCFG_SCREEN_VISIBLE_AREA(8, 184, 0, 269)
MCFG_SCREEN_UPDATE_DRIVER(vc4000_state, screen_update_vc4000)
- MCFG_PALETTE_LENGTH(8)
-
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(vc4000_state, vc4000)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/vector06.c b/src/mess/drivers/vector06.c
index 0960a51b0d0..eac86093689 100644
--- a/src/mess/drivers/vector06.c
+++ b/src/mess/drivers/vector06.c
@@ -175,7 +175,8 @@ static MACHINE_CONFIG_START( vector06, vector06_state )
MCFG_SCREEN_SIZE(256+64, 256+64)
MCFG_SCREEN_VISIBLE_AREA(0, 256+64-1, 0, 256+64-1)
MCFG_SCREEN_UPDATE_DRIVER(vector06_state, screen_update_vector06)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(vector06_state, vector06)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
diff --git a/src/mess/drivers/vg5k.c b/src/mess/drivers/vg5k.c
index 90f46e1b197..f8bfa840e7c 100644
--- a/src/mess/drivers/vg5k.c
+++ b/src/mess/drivers/vg5k.c
@@ -390,7 +390,7 @@ static MACHINE_CONFIG_START( vg5k, vg5k_state )
MCFG_SCREEN_VISIBLE_AREA(00, 336-1, 00, 270-1)
MCFG_GFXDECODE_ADD("gfxdecode", vg5k)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/victor9k.c b/src/mess/drivers/victor9k.c
index 22244cb6597..a8b1b7e47bb 100644
--- a/src/mess/drivers/victor9k.c
+++ b/src/mess/drivers/victor9k.c
@@ -950,8 +950,7 @@ static MACHINE_CONFIG_START( victor9k, victor9k_state )
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, monochrome_green)
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
MCFG_MC6845_ADD(HD46505S_TAG, HD6845, SCREEN_TAG, 1000000, hd46505s_intf) // HD6845 == HD46505S
diff --git a/src/mess/drivers/vii.c b/src/mess/drivers/vii.c
index dca8bd83193..406cd9da72f 100644
--- a/src/mess/drivers/vii.c
+++ b/src/mess/drivers/vii.c
@@ -1120,7 +1120,7 @@ static MACHINE_CONFIG_START( vii, vii_state )
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
MCFG_SCREEN_UPDATE_DRIVER(vii_state, screen_update_vii)
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD("palette", 32768)
MCFG_CARTSLOT_ADD( "cart" )
MCFG_CARTSLOT_EXTENSION_LIST( "bin" )
@@ -1142,7 +1142,7 @@ static MACHINE_CONFIG_START( vsmile, vii_state )
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
MCFG_SCREEN_UPDATE_DRIVER(vii_state, screen_update_vii)
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD("palette", 32768)
MCFG_CARTSLOT_ADD( "cart" )
MCFG_CARTSLOT_EXTENSION_LIST( "bin" )
@@ -1167,7 +1167,7 @@ static MACHINE_CONFIG_START( batman, vii_state )
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
MCFG_SCREEN_UPDATE_DRIVER(vii_state, screen_update_vii)
- MCFG_PALETTE_LENGTH(32768)
+ MCFG_PALETTE_ADD("palette", 32768)
MACHINE_CONFIG_END
DRIVER_INIT_MEMBER(vii_state,vii)
diff --git a/src/mess/drivers/vt100.c b/src/mess/drivers/vt100.c
index 2eaa8a3b70b..a9474fd91b2 100644
--- a/src/mess/drivers/vt100.c
+++ b/src/mess/drivers/vt100.c
@@ -420,10 +420,10 @@ static MACHINE_CONFIG_START( vt100, vt100_state )
MCFG_SCREEN_SIZE(80*10, 25*10)
MCFG_SCREEN_VISIBLE_AREA(0, 80*10-1, 0, 25*10-1)
MCFG_SCREEN_UPDATE_DRIVER(vt100_state, screen_update_vt100)
+ MCFG_SCREEN_PALETTE("vt100_video:palette")
MCFG_GFXDECODE_ADD("gfxdecode", vt100)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, monochrome_green)
+// MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
MCFG_DEFAULT_LAYOUT( layout_vt100 )
diff --git a/src/mess/drivers/vt220.c b/src/mess/drivers/vt220.c
index a08f1cb7769..3c26c8735f7 100644
--- a/src/mess/drivers/vt220.c
+++ b/src/mess/drivers/vt220.c
@@ -67,8 +67,7 @@ static MACHINE_CONFIG_START( vt220, vt220_state )
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(vt220_state, screen_update_vt220)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
diff --git a/src/mess/drivers/vt240.c b/src/mess/drivers/vt240.c
index 3c7a8e395a6..8fcab8c374a 100644
--- a/src/mess/drivers/vt240.c
+++ b/src/mess/drivers/vt240.c
@@ -176,8 +176,7 @@ static MACHINE_CONFIG_START( vt240, vt240_state )
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
// MCFG_VIDEO_START_OVERRIDE(vt240_state,vt240)
MCFG_SCREEN_UPDATE_DEVICE("upd7220", upd7220_device, screen_update)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", vt240)
MCFG_UPD7220_ADD("upd7220", XTAL_4MHz / 4, hgdc_intf, upd7220_map) //unknown clock
diff --git a/src/mess/drivers/vt320.c b/src/mess/drivers/vt320.c
index c4b86961435..88bfb15e198 100644
--- a/src/mess/drivers/vt320.c
+++ b/src/mess/drivers/vt320.c
@@ -93,8 +93,7 @@ static MACHINE_CONFIG_START( vt320, vt320_state )
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(vt320_state, screen_update_vt320)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
diff --git a/src/mess/drivers/vt520.c b/src/mess/drivers/vt520.c
index f3beb5ff38c..2627ee36b2d 100644
--- a/src/mess/drivers/vt520.c
+++ b/src/mess/drivers/vt520.c
@@ -84,8 +84,7 @@ static MACHINE_CONFIG_START( vt520, vt520_state )
MCFG_SCREEN_SIZE(802, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 802-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(vt520_state, screen_update_vt520)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
// On the board there are two M5M44256BJ-7 chips
// Which are DRAM 256K x 4bit
diff --git a/src/mess/drivers/vta2000.c b/src/mess/drivers/vta2000.c
index 935d6e27792..27e38c7144f 100644
--- a/src/mess/drivers/vta2000.c
+++ b/src/mess/drivers/vta2000.c
@@ -34,10 +34,10 @@ public:
const UINT8 *m_p_chargen;
UINT32 screen_update_vta2000(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_shared_ptr<UINT8> m_p_videoram;
+ DECLARE_PALETTE_INIT(vta2000);
private:
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
required_device<cpu_device> m_maincpu;
};
@@ -150,11 +150,11 @@ static GFXDECODE_START( vta2000 )
GFXDECODE_ENTRY( "chargen", 0x0000, vta2000_charlayout, 0, 1 )
GFXDECODE_END
-void vta2000_state::palette_init()
+PALETTE_INIT_MEMBER(vta2000_state, vta2000)
{
- palette_set_color(machine(), 0, rgb_t::black); // black
- palette_set_color_rgb(machine(), 1, 0x00, 0xc0, 0x00); // green
- palette_set_color_rgb(machine(), 2, 0x00, 0xff, 0x00); // highlight
+ palette.set_pen_color(0, rgb_t::black); // black
+ palette.set_pen_color(1, 0x00, 0xc0, 0x00); // green
+ palette.set_pen_color(2, 0x00, 0xff, 0x00); // highlight
}
static MACHINE_CONFIG_START( vta2000, vta2000_state )
@@ -170,7 +170,8 @@ static MACHINE_CONFIG_START( vta2000, vta2000_state )
MCFG_SCREEN_SIZE(80*8, 25*12)
MCFG_SCREEN_VISIBLE_AREA(0, 80*8-1, 0, 25*12-1)
MCFG_SCREEN_UPDATE_DRIVER(vta2000_state, screen_update_vta2000)
- MCFG_PALETTE_LENGTH(3)
+ MCFG_PALETTE_ADD("palette", 3)
+ MCFG_PALETTE_INIT_OWNER(vta2000_state, vta2000)
MCFG_GFXDECODE_ADD("gfxdecode", vta2000)
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/vtech2.c b/src/mess/drivers/vtech2.c
index 9e5485b9563..cd7ee8dd7da 100644
--- a/src/mess/drivers/vtech2.c
+++ b/src/mess/drivers/vtech2.c
@@ -379,23 +379,21 @@ static const rgb_t vt_colors[] =
/* Initialise the palette */
-void vtech2_state::palette_init()
+PALETTE_INIT_MEMBER(vtech2_state, vtech2)
{
int i;
- machine().colortable = colortable_alloc(machine(), 16);
-
for ( i = 0; i < 16; i++ )
- colortable_palette_set_color(machine().colortable, i, vt_colors[i]);
+ palette.set_indirect_color(i, vt_colors[i]);
for (i = 0; i < 256; i++)
{
- colortable_entry_set_value(machine().colortable, 2*i, i&15);
- colortable_entry_set_value(machine().colortable, 2*i+1, i>>4);
+ palette.set_pen_indirect(2*i, i&15);
+ palette.set_pen_indirect(2*i+1, i>>4);
}
for (i = 0; i < 16; i++)
- colortable_entry_set_value(machine().colortable, 512+i, i);
+ palette.set_pen_indirect(512+i, i);
}
INTERRUPT_GEN_MEMBER(vtech2_state::vtech2_interrupt)
@@ -442,8 +440,9 @@ static MACHINE_CONFIG_START( laser350, vtech2_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 88*8-1, 0*8, 24*8+32-1)
MCFG_SCREEN_UPDATE_DRIVER(vtech2_state, screen_update_laser)
- MCFG_GFXDECODE_ADD("gfxdecode", vtech2 )
- MCFG_PALETTE_LENGTH(528)
+ MCFG_GFXDECODE_ADD("gfxdecode", vtech2 )
+ MCFG_PALETTE_ADD("palette", 528)
+ MCFG_PALETTE_INIT_OWNER(vtech2_state, vtech2)
/* sound hardware */
diff --git a/src/mess/drivers/wswan.c b/src/mess/drivers/wswan.c
index 78de5af8e2c..81a111adf46 100644
--- a/src/mess/drivers/wswan.c
+++ b/src/mess/drivers/wswan.c
@@ -100,13 +100,13 @@ static GFXDECODE_START( wswan )
GFXDECODE_END
/* WonderSwan can display 16 shades of grey */
-void wswan_state::palette_init()
+PALETTE_INIT_MEMBER(wswan_state, wswan)
{
int ii;
for (ii = 0; ii < 16; ii++)
{
UINT8 shade = ii * (256 / 16);
- palette_set_color_rgb(machine(), 15 - ii, shade, shade, shade);
+ palette.set_pen_color(15 - ii, shade, shade, shade);
}
}
@@ -118,7 +118,7 @@ PALETTE_INIT_MEMBER(wswan_state,wscolor)
int r = (i & 0x0f00) >> 8;
int g = (i & 0x00f0) >> 4;
int b = i & 0x000f;
- palette_set_color_rgb(machine(), i, r << 4, g << 4, b << 4);
+ palette.set_pen_color(i, r << 4, g << 4, b << 4);
}
}
@@ -142,7 +142,8 @@ static MACHINE_CONFIG_START( wswan, wswan_state )
MCFG_GFXDECODE_ADD("gfxdecode", wswan)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(wswan_state, wswan)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -166,8 +167,10 @@ static MACHINE_CONFIG_DERIVED( wscolor, wswan )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(wscolor_mem)
MCFG_MACHINE_START_OVERRIDE(wswan_state, wscolor )
- MCFG_PALETTE_LENGTH(4096)
- MCFG_PALETTE_INIT_OVERRIDE(wswan_state, wscolor )
+
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_INIT_OWNER(wswan_state, wscolor )
/* software lists */
diff --git a/src/mess/drivers/x07.c b/src/mess/drivers/x07.c
index 7f7bfe7dd3d..920bc222059 100644
--- a/src/mess/drivers/x07.c
+++ b/src/mess/drivers/x07.c
@@ -1070,10 +1070,10 @@ DEVICE_IMAGE_LOAD_MEMBER( x07_state, x07_card )
return IMAGE_INIT_PASS;
}
-void x07_state::palette_init()
+PALETTE_INIT_MEMBER(x07_state, x07)
{
- palette_set_color(machine(), 0, rgb_t(138, 146, 148));
- palette_set_color(machine(), 1, rgb_t(92, 83, 88));
+ palette.set_pen_color(0, rgb_t(138, 146, 148));
+ palette.set_pen_color(1, rgb_t(92, 83, 88));
}
@@ -1506,7 +1506,8 @@ static MACHINE_CONFIG_START( x07, x07_state )
MCFG_SCREEN_UPDATE_DRIVER(x07_state, screen_update)
MCFG_SCREEN_SIZE(120, 32)
MCFG_SCREEN_VISIBLE_AREA(0, 120-1, 0, 32-1)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(x07_state, x07)
MCFG_DEFAULT_LAYOUT(layout_lcd)
MCFG_GFXDECODE_ADD("gfxdecode", x07)
diff --git a/src/mess/drivers/x1.c b/src/mess/drivers/x1.c
index 941ba50b9b1..95e6d4858dd 100644
--- a/src/mess/drivers/x1.c
+++ b/src/mess/drivers/x1.c
@@ -236,23 +236,23 @@ void x1_state::x1_draw_pixel(running_machine &machine, bitmap_rgb32 &bitmap,int
if(width && height)
{
- bitmap.pix32(y+0+m_ystart, x+0+m_xstart) = machine.pens[pen];
- bitmap.pix32(y+0+m_ystart, x+1+m_xstart) = machine.pens[pen];
- bitmap.pix32(y+1+m_ystart, x+0+m_xstart) = machine.pens[pen];
- bitmap.pix32(y+1+m_ystart, x+1+m_xstart) = machine.pens[pen];
+ bitmap.pix32(y+0+m_ystart, x+0+m_xstart) = m_palette->pen(pen);
+ bitmap.pix32(y+0+m_ystart, x+1+m_xstart) = m_palette->pen(pen);
+ bitmap.pix32(y+1+m_ystart, x+0+m_xstart) = m_palette->pen(pen);
+ bitmap.pix32(y+1+m_ystart, x+1+m_xstart) = m_palette->pen(pen);
}
else if(width)
{
- bitmap.pix32(y+m_ystart, x+0+m_xstart) = machine.pens[pen];
- bitmap.pix32(y+m_ystart, x+1+m_xstart) = machine.pens[pen];
+ bitmap.pix32(y+m_ystart, x+0+m_xstart) = m_palette->pen(pen);
+ bitmap.pix32(y+m_ystart, x+1+m_xstart) = m_palette->pen(pen);
}
else if(height)
{
- bitmap.pix32(y+0+m_ystart, x+m_xstart) = machine.pens[pen];
- bitmap.pix32(y+1+m_ystart, x+m_xstart) = machine.pens[pen];
+ bitmap.pix32(y+0+m_ystart, x+m_xstart) = m_palette->pen(pen);
+ bitmap.pix32(y+1+m_ystart, x+m_xstart) = m_palette->pen(pen);
}
else
- bitmap.pix32(y+m_ystart, x+m_xstart) = machine.pens[pen];
+ bitmap.pix32(y+m_ystart, x+m_xstart) = m_palette->pen(pen);
}
#define mc6845_h_char_total (m_crtc_vreg[0])
@@ -1204,7 +1204,7 @@ void x1_state::set_current_palette()
g = ((m_x_g)>>(addr)) & 1;
b = ((m_x_b)>>(addr)) & 1;
- palette_set_color_rgb(machine(), addr|8, pal1bit(r), pal1bit(g), pal1bit(b));
+ m_palette->set_pen_color(addr|8, pal1bit(r), pal1bit(g), pal1bit(b));
}
}
@@ -1221,7 +1221,7 @@ WRITE8_MEMBER( x1_state::x1turboz_4096_palette_w )
g = m_pal_4096[pal_entry+(2<<12)];
b = m_pal_4096[pal_entry+(0<<12)];
- palette_set_color_rgb(machine(), pal_entry+16, pal3bit(r), pal3bit(g), pal3bit(b));
+ m_palette->set_pen_color(pal_entry+16, pal3bit(r), pal3bit(g), pal3bit(b));
}
/* Note: docs claims that reading the palette ports makes the value to change somehow in X1 mode ...
@@ -1402,7 +1402,7 @@ WRITE8_MEMBER( x1_state::x1turbo_txpal_w )
g = (data & 0x30) >> 4;
b = (data & 0x03) >> 0;
- palette_set_color_rgb(machine(), offset, pal2bit(r), pal2bit(g), pal2bit(b));
+ m_palette->set_pen_color(offset, pal2bit(r), pal2bit(g), pal2bit(b));
}
}
@@ -2471,7 +2471,7 @@ MACHINE_RESET_MEMBER(x1_state,x1)
/* Reinitialize palette here if there's a soft reset for the Turbo PAL stuff*/
for(i=0;i<0x10;i++)
- palette_set_color_rgb(machine(), i, pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 0));
+ m_palette->set_pen_color(i, pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 0));
m_ram_bank = 0;
// m_old_vpos = -1;
@@ -2534,7 +2534,7 @@ PALETTE_INIT_MEMBER(x1_state,x1)
int i;
for(i=0;i<(0x10+0x1000);i++)
- palette_set_color(machine(), i,rgb_t(0x00,0x00,0x00));
+ palette.set_pen_color(i,rgb_t(0x00,0x00,0x00));
}
static LEGACY_FLOPPY_OPTIONS_START( x1 )
@@ -2584,8 +2584,8 @@ static MACHINE_CONFIG_START( x1, x1_state )
MCFG_SCREEN_UPDATE_DRIVER(x1_state, screen_update_x1)
MCFG_MC6845_ADD("crtc", H46505, "screen", (VDP_CLOCK/48), mc6845_intf) //unknown divider
- MCFG_PALETTE_LENGTH(0x10+0x1000)
- MCFG_PALETTE_INIT_OVERRIDE(x1_state,x1)
+ MCFG_PALETTE_ADD("palette", 0x10+0x1000)
+ MCFG_PALETTE_INIT_OWNER(x1_state,x1)
MCFG_GFXDECODE_ADD("gfxdecode", x1)
diff --git a/src/mess/drivers/x1twin.c b/src/mess/drivers/x1twin.c
index ea3a29c7f1c..32bca554e84 100644
--- a/src/mess/drivers/x1twin.c
+++ b/src/mess/drivers/x1twin.c
@@ -561,8 +561,8 @@ static MACHINE_CONFIG_START( x1twin, x1twin_state )
MCFG_SCREEN_UPDATE_DRIVER(x1twin_state, screen_update_x1pce)
MCFG_MC6845_ADD("crtc", H46505, "x1_screen", (VDP_CLOCK/48), mc6845_intf) //unknown divider
- MCFG_PALETTE_LENGTH(0x10+0x1000)
- MCFG_PALETTE_INIT_OVERRIDE(x1twin_state,x1)
+ MCFG_PALETTE_ADD("palette", 0x10+0x1000)
+ MCFG_PALETTE_INIT_OWNER(x1twin_state,x1)
MCFG_GFXDECODE_ADD("gfxdecode", x1)
diff --git a/src/mess/drivers/x68k.c b/src/mess/drivers/x68k.c
index b87237a5ce4..60fe96a8716 100644
--- a/src/mess/drivers/x68k.c
+++ b/src/mess/drivers/x68k.c
@@ -970,7 +970,7 @@ WRITE16_MEMBER(x68k_state::x68k_vid_w)
{
COMBINE_DATA(m_video.gfx_pal+offset);
val = m_video.gfx_pal[offset];
- palette_set_color_rgb(machine(),offset,(val & 0x07c0) >> 3,(val & 0xf800) >> 8,(val & 0x003e) << 2);
+ m_palette->set_pen_color(offset,(val & 0x07c0) >> 3,(val & 0xf800) >> 8,(val & 0x003e) << 2);
return;
}
@@ -978,7 +978,7 @@ WRITE16_MEMBER(x68k_state::x68k_vid_w)
{
COMBINE_DATA(m_video.text_pal+(offset-0x100));
val = m_video.text_pal[offset-0x100];
- palette_set_color_rgb(machine(),offset,(val & 0x07c0) >> 3,(val & 0xf800) >> 8,(val & 0x003e) << 2);
+ m_palette->set_pen_color(offset,(val & 0x07c0) >> 3,(val & 0xf800) >> 8,(val & 0x003e) << 2);
return;
}
@@ -1951,8 +1951,8 @@ static MACHINE_CONFIG_FRAGMENT( x68000_base )
MCFG_SCREEN_UPDATE_DRIVER(x68k_state, screen_update_x68000)
MCFG_GFXDECODE_ADD("gfxdecode", empty)
- MCFG_PALETTE_LENGTH(65536)
- MCFG_PALETTE_INIT_OVERRIDE(x68k_state, x68000 )
+ MCFG_PALETTE_ADD("palette", 65536)
+ MCFG_PALETTE_INIT_OWNER(x68k_state, x68000 )
MCFG_VIDEO_START_OVERRIDE(x68k_state, x68000 )
diff --git a/src/mess/drivers/xavix.c b/src/mess/drivers/xavix.c
index d0d1c088766..8810443894d 100644
--- a/src/mess/drivers/xavix.c
+++ b/src/mess/drivers/xavix.c
@@ -40,7 +40,6 @@ protected:
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
};
void xavix_state::video_start()
@@ -140,10 +139,6 @@ void xavix_state::machine_reset()
}
-void xavix_state::palette_init()
-{
-}
-
static MACHINE_CONFIG_START( xavix, xavix_state )
/* basic machine hardware */
@@ -160,7 +155,7 @@ static MACHINE_CONFIG_START( xavix, xavix_state )
MCFG_GFXDECODE_ADD("gfxdecode", xavix)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/xerox820.c b/src/mess/drivers/xerox820.c
index e80885d550b..05bd3590f44 100644
--- a/src/mess/drivers/xerox820.c
+++ b/src/mess/drivers/xerox820.c
@@ -695,6 +695,7 @@ static MACHINE_CONFIG_START( xerox820, xerox820_state )
MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
MCFG_SCREEN_UPDATE_DRIVER(xerox820_state, screen_update)
MCFG_SCREEN_RAW_PARAMS(XTAL_10_69425MHz, 700, 0, 560, 260, 0, 240)
+
MCFG_GFXDECODE_ADD("gfxdecode", xerox820)
/* devices */
@@ -746,6 +747,7 @@ static MACHINE_CONFIG_START( xerox820ii, xerox820ii_state )
MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
MCFG_SCREEN_UPDATE_DRIVER(xerox820ii_state, screen_update)
MCFG_SCREEN_RAW_PARAMS(XTAL_10_69425MHz, 700, 0, 560, 260, 0, 240)
+
MCFG_GFXDECODE_ADD("gfxdecode", xerox820ii)
/* sound hardware */
diff --git a/src/mess/drivers/ymmu100.c b/src/mess/drivers/ymmu100.c
index 4557acff18a..00b2d4712ce 100644
--- a/src/mess/drivers/ymmu100.c
+++ b/src/mess/drivers/ymmu100.c
@@ -100,8 +100,6 @@ public:
DECLARE_READ8_MEMBER(p1_r);
DECLARE_WRITE8_MEMBER(p2_w);
DECLARE_READ8_MEMBER(p2_r);
-
- virtual void palette_init();
};
@@ -155,12 +153,6 @@ READ8_MEMBER(mu100_state::p2_r)
return cur_p2;
}
-void mu100_state::palette_init()
-{
- palette_set_color(machine(), 0, rgb_t(255, 255, 255));
- palette_set_color(machine(), 1, rgb_t(0, 0, 0));
-}
-
static ADDRESS_MAP_START( mu100_iomap, AS_IO, 8, mu100_state )
AM_RANGE(H8_PORT_1, H8_PORT_1) AM_READWRITE(p1_r, p1_w)
AM_RANGE(H8_PORT_2, H8_PORT_2) AM_READWRITE(p2_r, p2_w)
@@ -181,7 +173,7 @@ static MACHINE_CONFIG_START( mu100, mu100_state )
MCFG_SCREEN_UPDATE_DEVICE("lcd", hd44780_device, screen_update)
MCFG_SCREEN_SIZE(20*6, 4*9)
MCFG_SCREEN_VISIBLE_AREA(0, 20*6-1, 0, 4*9-1)
- MCFG_PALETTE_LENGTH(2)
+ MCFG_PALETTE_ADD_WHITE_AND_BLACK("palette")
MCFG_DEFAULT_LAYOUT(layout_lcd)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mess/drivers/z100.c b/src/mess/drivers/z100.c
index d9fe5fa7a7c..52bee796881 100644
--- a/src/mess/drivers/z100.c
+++ b/src/mess/drivers/z100.c
@@ -203,7 +203,6 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
UINT32 screen_update_z100(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_INPUT_CHANGED_MEMBER(key_stroke);
IRQ_CALLBACK_MEMBER(z100_irq_callback);
@@ -263,7 +262,7 @@ UINT32 z100_state::screen_update_z100(screen_device &screen, bitmap_ind16 &bitma
dot = m_display_mask;
if(y*mc6845_tile_height+yi < 216 && x*8+xi < 640) /* TODO: safety check */
- bitmap.pix16(y*mc6845_tile_height+yi, x*8+xi) = machine().pens[dot];
+ bitmap.pix16(y*mc6845_tile_height+yi, x*8+xi) = m_palette->pen(dot);
}
}
}
@@ -698,11 +697,6 @@ static const floppy_interface z100_floppy_interface =
NULL
};
-void z100_state::palette_init()
-{
- // ...
-}
-
void z100_state::machine_start()
{
m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(z100_state::z100_irq_callback),this));
@@ -716,12 +710,12 @@ void z100_state::machine_reset()
if(ioport("CONFIG")->read() & 1)
{
for(i=0;i<8;i++)
- palette_set_color_rgb(machine(), i,pal1bit(i >> 1),pal1bit(i >> 2),pal1bit(i >> 0));
+ m_palette->set_pen_color(i,pal1bit(i >> 1),pal1bit(i >> 2),pal1bit(i >> 0));
}
else
{
for(i=0;i<8;i++)
- palette_set_color_rgb(machine(), i,pal3bit(0),pal3bit(i),pal3bit(0));
+ m_palette->set_pen_color(i,pal3bit(0),pal3bit(i),pal3bit(0));
}
}
@@ -739,7 +733,7 @@ static MACHINE_CONFIG_START( z100, z100_state )
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(z100_state, screen_update_z100)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
/* Devices */
MCFG_MC6845_ADD("crtc", MC6845, "screen", XTAL_14_31818MHz/8, mc6845_intf) /* unknown clock, hand tuned to get ~50/~60 fps */
diff --git a/src/mess/drivers/z1013.c b/src/mess/drivers/z1013.c
index fa344e3eb5f..37b3340b691 100644
--- a/src/mess/drivers/z1013.c
+++ b/src/mess/drivers/z1013.c
@@ -409,8 +409,7 @@ static MACHINE_CONFIG_START( z1013, z1013_state )
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 0, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(z1013_state, screen_update_z1013)
MCFG_GFXDECODE_ADD("gfxdecode", z1013)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/z88.c b/src/mess/drivers/z88.c
index d66dee4b8a5..f823d572e06 100644
--- a/src/mess/drivers/z88.c
+++ b/src/mess/drivers/z88.c
@@ -657,7 +657,8 @@ static MACHINE_CONFIG_START( z88, z88_state )
MCFG_SCREEN_VISIBLE_AREA(0, (Z88_SCREEN_WIDTH - 1), 0, (Z88_SCREEN_HEIGHT - 1))
MCFG_SCREEN_UPDATE_DEVICE("blink", upd65031_device, screen_update)
- MCFG_PALETTE_LENGTH(Z88_NUM_COLOURS)
+ MCFG_PALETTE_ADD("palette", Z88_NUM_COLOURS)
+ MCFG_PALETTE_INIT_OWNER(z88_state, z88)
MCFG_DEFAULT_LAYOUT(layout_lcd)
diff --git a/src/mess/drivers/z9001.c b/src/mess/drivers/z9001.c
index 3b13778f2c1..a7987691668 100644
--- a/src/mess/drivers/z9001.c
+++ b/src/mess/drivers/z9001.c
@@ -251,7 +251,7 @@ static MACHINE_CONFIG_START( z9001, z9001_state )
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 0, 24*8-1)
MCFG_SCREEN_UPDATE_DRIVER(z9001_state, screen_update_z9001)
MCFG_GFXDECODE_ADD("gfxdecode", z9001)
- MCFG_PALETTE_LENGTH(16)
+ MCFG_PALETTE_ADD("palette", 16)
/* Sound */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/zaurus.c b/src/mess/drivers/zaurus.c
index eb5db827b39..20b8b7a68df 100644
--- a/src/mess/drivers/zaurus.c
+++ b/src/mess/drivers/zaurus.c
@@ -1446,7 +1446,6 @@ protected:
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
};
#define VERBOSE_LEVEL ( 5 )
@@ -1729,10 +1728,6 @@ void zaurus_state::machine_reset()
}
-void zaurus_state::palette_init()
-{
-}
-
/* TODO: Hack */
TIMER_DEVICE_CALLBACK_MEMBER(zaurus_state::rtc_irq_callback)
{
@@ -1764,7 +1759,7 @@ static MACHINE_CONFIG_START( zaurus, zaurus_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_PALETTE_LENGTH(8)
+ MCFG_PALETTE_ADD("palette", 8)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/zorba.c b/src/mess/drivers/zorba.c
index 7112f32cb7e..702f348c5ed 100644
--- a/src/mess/drivers/zorba.c
+++ b/src/mess/drivers/zorba.c
@@ -64,7 +64,7 @@ public:
public:
const UINT8 *m_p_chargen;
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- void palette_init_zorba();
+ DECLARE_PALETTE_INIT(zorba);
required_shared_ptr<const UINT8> m_p_videoram;
DECLARE_DRIVER_INIT(zorba);
DECLARE_MACHINE_RESET(zorba);
@@ -250,9 +250,9 @@ WRITE8_MEMBER( zorba_state::pia0_porta_w )
PALETTE_INIT_MEMBER( zorba_state, zorba )
{
- palette_set_color_rgb( machine(), 0, 0, 0, 0 ); /* Black */
- palette_set_color_rgb( machine(), 1, 0, 255, 0 ); /* Full */
- palette_set_color_rgb( machine(), 2, 0, 128, 0 ); /* Dimmed */
+ palette.set_pen_color(0, 0, 0, 0 ); /* Black */
+ palette.set_pen_color(1, 0, 255, 0 ); /* Full */
+ palette.set_pen_color(2, 0, 128, 0 ); /* Dimmed */
}
static I8275_DISPLAY_PIXELS( zorba_update_chr )
@@ -356,8 +356,8 @@ static MACHINE_CONFIG_START( zorba, zorba_state )
MCFG_SCREEN_UPDATE_DRIVER(zorba_state, screen_update)
MCFG_SCREEN_SIZE(640, 276)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 275)
- MCFG_PALETTE_LENGTH(3)
- MCFG_PALETTE_INIT_OVERRIDE(zorba_state, zorba)
+ MCFG_PALETTE_ADD("palette", 3)
+ MCFG_PALETTE_INIT_OWNER(zorba_state, zorba)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/zrt80.c b/src/mess/drivers/zrt80.c
index 72092fbfb6d..18337b17417 100644
--- a/src/mess/drivers/zrt80.c
+++ b/src/mess/drivers/zrt80.c
@@ -317,8 +317,7 @@ static MACHINE_CONFIG_START( zrt80, zrt80_state )
MCFG_SCREEN_SIZE(640, 200)
MCFG_SCREEN_VISIBLE_AREA(0, 640 - 1, 0, 200 - 1)
MCFG_GFXDECODE_ADD("gfxdecode", zrt80)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, monochrome_green)
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/zx.c b/src/mess/drivers/zx.c
index bfd15612ee5..d03066a1fff 100644
--- a/src/mess/drivers/zx.c
+++ b/src/mess/drivers/zx.c
@@ -326,20 +326,20 @@ GFXDECODE_END
/* Palette Initialization */
-void zx_state::palette_init()
+PALETTE_INIT_MEMBER(zx_state, zx)
{
- palette_set_color(machine(),0,rgb_t::white); /* white */
- palette_set_color(machine(),1,rgb_t::black); /* black */
- palette_set_color(machine(),2,rgb_t::black); /* black */
- palette_set_color(machine(),3,rgb_t::white); /* white */
+ palette.set_pen_color(0,rgb_t::white); /* white */
+ palette.set_pen_color(1,rgb_t::black); /* black */
+ palette.set_pen_color(2,rgb_t::black); /* black */
+ palette.set_pen_color(3,rgb_t::white); /* white */
}
PALETTE_INIT_MEMBER(zx_state,ts1000)
{
- palette_set_color(machine(),0,rgb_t(64, 244, 244)); /* cyan */
- palette_set_color(machine(),1,rgb_t::black); /* black */
- palette_set_color(machine(),2,rgb_t::black); /* black */
- palette_set_color(machine(),3,rgb_t(64, 244, 244)); /* cyan */
+ palette.set_pen_color(0,rgb_t(64, 244, 244)); /* cyan */
+ palette.set_pen_color(1,rgb_t::black); /* black */
+ palette.set_pen_color(2,rgb_t::black); /* black */
+ palette.set_pen_color(3,rgb_t(64, 244, 244)); /* cyan */
}
@@ -398,8 +398,8 @@ static MACHINE_CONFIG_START( zx80, zx_state )
MCFG_SCREEN_VBLANK_DRIVER(zx_state, screen_eof_zx)
MCFG_GFXDECODE_ADD("gfxdecode", zx80)
- MCFG_PALETTE_LENGTH(4)
-
+ MCFG_PALETTE_ADD("palette", 4)
+ MCFG_PALETTE_INIT_OWNER(zx_state,zx)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -427,8 +427,8 @@ static MACHINE_CONFIG_DERIVED( zx81, zx80 )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( ts1000, zx81 )
-
- MCFG_PALETTE_INIT_OVERRIDE(zx_state,ts1000)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_INIT_OWNER(zx_state,ts1000)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( ts1500, ts1000 )
diff --git a/src/mess/includes/a7800.h b/src/mess/includes/a7800.h
index 7e37f3b068d..10c6e648c98 100644
--- a/src/mess/includes/a7800.h
+++ b/src/mess/includes/a7800.h
@@ -84,7 +84,7 @@ public:
DECLARE_DRIVER_INIT(a7800_ntsc);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(a7800);
DECLARE_PALETTE_INIT(a7800p);
UINT32 screen_update_a7800(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(a7800_interrupt);
diff --git a/src/mess/includes/advision.h b/src/mess/includes/advision.h
index ec3c4c5c638..e8a8833aadf 100644
--- a/src/mess/includes/advision.h
+++ b/src/mess/includes/advision.h
@@ -64,7 +64,7 @@ public:
int m_sound_cmd;
int m_sound_d;
int m_sound_g;
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(advision);
};
#endif
diff --git a/src/mess/includes/alesis.h b/src/mess/includes/alesis.h
index e288714d191..364fa076e14 100644
--- a/src/mess/includes/alesis.h
+++ b/src/mess/includes/alesis.h
@@ -70,7 +70,7 @@ public:
required_device<hd44780_device> m_lcdc;
optional_device<cassette_image_device> m_cassette;
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(alesis);
virtual void machine_reset();
void update_lcd_symbols(bitmap_ind16 &bitmap, UINT8 pos, UINT8 y, UINT8 x, int state);
diff --git a/src/mess/includes/aquarius.h b/src/mess/includes/aquarius.h
index f8cddaf58ff..d179aa1c3df 100644
--- a/src/mess/includes/aquarius.h
+++ b/src/mess/includes/aquarius.h
@@ -72,7 +72,7 @@ public:
DECLARE_DRIVER_INIT(aquarius);
TILE_GET_INFO_MEMBER(aquarius_gettileinfo);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(aquarius);
UINT32 screen_update_aquarius(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_INPUT_CHANGED_MEMBER(aquarius_reset);
};
diff --git a/src/mess/includes/arcadia.h b/src/mess/includes/arcadia.h
index 019f98b7b63..d1497b0d763 100644
--- a/src/mess/includes/arcadia.h
+++ b/src/mess/includes/arcadia.h
@@ -91,7 +91,7 @@ public:
bitmap_ind16 *m_bitmap;
DECLARE_DRIVER_INIT(arcadia);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(arcadia);
UINT32 screen_update_arcadia(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(arcadia_video_line);
DECLARE_DEVICE_IMAGE_LOAD_MEMBER( arcadia_cart );
diff --git a/src/mess/includes/avigo.h b/src/mess/includes/avigo.h
index eb172f09d6c..de7e5a78205 100644
--- a/src/mess/includes/avigo.h
+++ b/src/mess/includes/avigo.h
@@ -105,7 +105,7 @@ public:
UINT8 m_screen_column;
UINT8 m_warm_start;
UINT8 * m_ram_base;
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(avigo);
TIMER_DEVICE_CALLBACK_MEMBER(avigo_scan_timer);
TIMER_DEVICE_CALLBACK_MEMBER(avigo_1hz_timer);
diff --git a/src/mess/includes/b2m.h b/src/mess/includes/b2m.h
index 47cc7bf12ee..3e94c6341b1 100644
--- a/src/mess/includes/b2m.h
+++ b/src/mess/includes/b2m.h
@@ -56,7 +56,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(b2m);
UINT32 screen_update_b2m(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(b2m_vblank_interrupt);
DECLARE_WRITE_LINE_MEMBER(bm2_pit_out1);
diff --git a/src/mess/includes/busicom.h b/src/mess/includes/busicom.h
index c491cd553a7..b7eb0a8c945 100644
--- a/src/mess/includes/busicom.h
+++ b/src/mess/includes/busicom.h
@@ -31,7 +31,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(busicom);
UINT32 screen_update_busicom(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(timer_callback);
required_device<i4004_cpu_device> m_maincpu;
diff --git a/src/mess/includes/bw2.h b/src/mess/includes/bw2.h
index babc69846fb..1b11350b9be 100644
--- a/src/mess/includes/bw2.h
+++ b/src/mess/includes/bw2.h
@@ -110,7 +110,7 @@ public:
// video state
optional_shared_ptr<UINT8> m_video_ram;
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(bw2);
DECLARE_WRITE_LINE_MEMBER(write_centronics_busy);
int m_centronics_busy;
diff --git a/src/mess/includes/c65.h b/src/mess/includes/c65.h
index 70943609181..60479bc5139 100644
--- a/src/mess/includes/c65.h
+++ b/src/mess/includes/c65.h
@@ -132,7 +132,6 @@ public:
DECLARE_READ8_MEMBER( sid_potx_r );
DECLARE_READ8_MEMBER( sid_poty_r );
DECLARE_MACHINE_START(c65);
- DECLARE_PALETTE_INIT(c65);
UINT32 screen_update_c65(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vic3_raster_irq);
INTERRUPT_GEN_MEMBER(c65_frame_interrupt);
diff --git a/src/mess/includes/channelf.h b/src/mess/includes/channelf.h
index 43e7d10ed4a..f2f970bf08e 100644
--- a/src/mess/includes/channelf.h
+++ b/src/mess/includes/channelf.h
@@ -52,7 +52,7 @@ public:
UINT8 m_col_reg;
UINT8 port_read_with_latch(UINT8 ext, UINT8 latch_state);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(channelf);
UINT32 screen_update_channelf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_DEVICE_IMAGE_LOAD_MEMBER( channelf_cart );
required_device<channelf_sound_device> m_custom;
diff --git a/src/mess/includes/cybiko.h b/src/mess/includes/cybiko.h
index c5a7e6dede1..d7bd2e7b6c2 100644
--- a/src/mess/includes/cybiko.h
+++ b/src/mess/includes/cybiko.h
@@ -88,7 +88,6 @@ public:
DECLARE_DRIVER_INIT(cybiko);
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
void machine_stop_cybiko();
DECLARE_QUICKLOAD_LOAD_MEMBER( cybiko );
DECLARE_QUICKLOAD_LOAD_MEMBER( cybikoxt );
diff --git a/src/mess/includes/dai.h b/src/mess/includes/dai.h
index d3efa2a5e1a..26db8bb5dc8 100644
--- a/src/mess/includes/dai.h
+++ b/src/mess/includes/dai.h
@@ -90,7 +90,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(dai);
UINT32 screen_update_dai(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void dai_update_memory(int dai_rom_bank);
IRQ_CALLBACK_MEMBER(int_ack);
diff --git a/src/mess/includes/dgn_beta.h b/src/mess/includes/dgn_beta.h
index 467e765df5b..f9a964c90c3 100644
--- a/src/mess/includes/dgn_beta.h
+++ b/src/mess/includes/dgn_beta.h
@@ -147,7 +147,7 @@ public:
int m_DrawInterlace;
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(dgn);
DECLARE_WRITE8_MEMBER(dgnbeta_ram_b0_w);
DECLARE_WRITE8_MEMBER(dgnbeta_ram_b1_w);
DECLARE_WRITE8_MEMBER(dgnbeta_ram_b2_w);
diff --git a/src/mess/includes/electron.h b/src/mess/includes/electron.h
index 17c878feb39..a4611d18b61 100644
--- a/src/mess/includes/electron.h
+++ b/src/mess/includes/electron.h
@@ -86,7 +86,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(electron);
UINT32 screen_update_electron(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(electron_tape_timer_handler);
TIMER_CALLBACK_MEMBER(setup_beep);
diff --git a/src/mess/includes/fm7.h b/src/mess/includes/fm7.h
index fdb2cab5bab..72a7ebc98c6 100644
--- a/src/mess/includes/fm7.h
+++ b/src/mess/includes/fm7.h
@@ -268,7 +268,7 @@ public:
DECLARE_DRIVER_INIT(fm7);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(fm7);
DECLARE_MACHINE_START(fm7);
DECLARE_MACHINE_START(fm77av);
DECLARE_MACHINE_START(fm11);
diff --git a/src/mess/includes/gamecom.h b/src/mess/includes/gamecom.h
index 4f5f76aa92d..eea2f005902 100644
--- a/src/mess/includes/gamecom.h
+++ b/src/mess/includes/gamecom.h
@@ -262,7 +262,7 @@ public:
DECLARE_DRIVER_INIT(gamecom);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(gamecom);
INTERRUPT_GEN_MEMBER(gamecom_interrupt);
TIMER_CALLBACK_MEMBER(gamecom_clock_timer_callback);
TIMER_CALLBACK_MEMBER(gamecom_scanline);
diff --git a/src/mess/includes/gba.h b/src/mess/includes/gba.h
index 05a14c78f6a..b4967c4ddee 100644
--- a/src/mess/includes/gba.h
+++ b/src/mess/includes/gba.h
@@ -245,7 +245,7 @@ public:
DECLARE_DRIVER_INIT(gbadv);
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(gba);
TIMER_CALLBACK_MEMBER(dma_complete);
TIMER_CALLBACK_MEMBER(timer_expire);
TIMER_CALLBACK_MEMBER(handle_irq);
diff --git a/src/mess/includes/hp48.h b/src/mess/includes/hp48.h
index d14d476d2d7..10b9c8106f3 100644
--- a/src/mess/includes/hp48.h
+++ b/src/mess/includes/hp48.h
@@ -69,7 +69,7 @@ public:
int m_cur_screen;
DECLARE_DRIVER_INIT(hp48);
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(hp48);
DECLARE_MACHINE_START(hp48gx);
DECLARE_MACHINE_START(hp48g);
DECLARE_MACHINE_START(hp48gp);
diff --git a/src/mess/includes/hx20.h b/src/mess/includes/hx20.h
index 5c7c444371f..828cc1a36ef 100644
--- a/src/mess/includes/hx20.h
+++ b/src/mess/includes/hx20.h
@@ -85,7 +85,7 @@ public:
required_ioport m_sw6;
virtual void machine_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(hx20);
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE8_MEMBER( ksc_w );
diff --git a/src/mess/includes/intv.h b/src/mess/includes/intv.h
index d2e980e35eb..70ed7a37f4a 100644
--- a/src/mess/includes/intv.h
+++ b/src/mess/includes/intv.h
@@ -115,7 +115,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(intv);
void ecs_banks_restore();
UINT32 screen_update_intv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_intvkbd(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mess/includes/lviv.h b/src/mess/includes/lviv.h
index ff94943813b..447c3b7e6f7 100644
--- a/src/mess/includes/lviv.h
+++ b/src/mess/includes/lviv.h
@@ -31,7 +31,7 @@ public:
DECLARE_WRITE8_MEMBER(lviv_io_w);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(lviv);
UINT32 screen_update_lviv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_READ8_MEMBER(lviv_ppi_0_porta_r);
DECLARE_READ8_MEMBER(lviv_ppi_0_portb_r);
diff --git a/src/mess/includes/lynx.h b/src/mess/includes/lynx.h
index 117f2ef81b2..1dd4d377487 100644
--- a/src/mess/includes/lynx.h
+++ b/src/mess/includes/lynx.h
@@ -128,7 +128,7 @@ public:
UINT16 m_granularity;
int m_sign_AB;
int m_sign_CD;
- UINT32 m_palette[0x10];
+ UINT32 m_lynx_palette[0x10];
int m_rotate;
UINT8 m_memory_config;
@@ -154,7 +154,7 @@ public:
void lynx_timer_write(int which, int offset, UINT8 data);
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(lynx);
void sound_cb();
TIMER_CALLBACK_MEMBER(lynx_blitter_timer);
TIMER_CALLBACK_MEMBER(lynx_timer_shot);
diff --git a/src/mess/includes/mbc55x.h b/src/mess/includes/mbc55x.h
index c76fdbb72d6..89ef11569a1 100644
--- a/src/mess/includes/mbc55x.h
+++ b/src/mess/includes/mbc55x.h
@@ -156,7 +156,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void video_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(mbc55x);
void screen_eof_mbc55x(screen_device &screen, bool state);
TIMER_CALLBACK_MEMBER(keyscan_callback);
IRQ_CALLBACK_MEMBER(mbc55x_irq_callback);
diff --git a/src/mess/includes/micronic.h b/src/mess/includes/micronic.h
index 8e9240d827d..4921712a00d 100644
--- a/src/mess/includes/micronic.h
+++ b/src/mess/includes/micronic.h
@@ -72,7 +72,7 @@ public:
UINT8 m_lcd_contrast;
bool m_lcd_backlight;
UINT8 m_status_flag;
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(micronic);
protected:
required_memory_bank m_bank1;
diff --git a/src/mess/includes/mz700.h b/src/mess/includes/mz700.h
index a0aa2b335dc..b89571eb870 100644
--- a/src/mess/includes/mz700.h
+++ b/src/mess/includes/mz700.h
@@ -88,7 +88,7 @@ public:
DECLARE_DRIVER_INIT(mz800);
DECLARE_DRIVER_INIT(mz700);
virtual void machine_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(mz);
DECLARE_VIDEO_START(mz800);
UINT32 screen_update_mz700(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_mz800(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mess/includes/nc.h b/src/mess/includes/nc.h
index fcbb68c352f..25f6f810aba 100644
--- a/src/mess/includes/nc.h
+++ b/src/mess/includes/nc.h
@@ -65,6 +65,7 @@ public:
DECLARE_WRITE8_MEMBER(nc200_memory_card_wait_state_w);
DECLARE_WRITE8_MEMBER(nc200_poweroff_control_w);
+ DECLARE_PALETTE_INIT(nc);
DECLARE_MACHINE_START(nc200);
DECLARE_MACHINE_RESET(nc200);
UINT32 screen_update_nc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@@ -90,7 +91,6 @@ protected:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
private:
void nc200_fdc_interrupt(bool state);
diff --git a/src/mess/includes/nes.h b/src/mess/includes/nes.h
index 1e67a0e2622..935dbe5a36e 100644
--- a/src/mess/includes/nes.h
+++ b/src/mess/includes/nes.h
@@ -172,7 +172,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void video_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(nes);
UINT32 screen_update_nes(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_READ8_MEMBER(psg_4015_r);
DECLARE_WRITE8_MEMBER(psg_4015_w);
diff --git a/src/mess/includes/oric.h b/src/mess/includes/oric.h
index 653c95fd0d8..8af56202edd 100644
--- a/src/mess/includes/oric.h
+++ b/src/mess/includes/oric.h
@@ -129,7 +129,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(oric);
DECLARE_MACHINE_START(telestrat);
UINT32 screen_update_oric(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(oric_refresh_tape);
diff --git a/src/mess/includes/osborne1.h b/src/mess/includes/osborne1.h
index e4cf5d4d2f4..849b60e023c 100644
--- a/src/mess/includes/osborne1.h
+++ b/src/mess/includes/osborne1.h
@@ -99,7 +99,7 @@ public:
bool m_beep_state;
DECLARE_DRIVER_INIT(osborne1);
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(osborne1);
TIMER_CALLBACK_MEMBER(osborne1_video_callback);
TIMER_CALLBACK_MEMBER(setup_osborne1);
diff --git a/src/mess/includes/pc4.h b/src/mess/includes/pc4.h
index 08459637ab7..003669597b8 100644
--- a/src/mess/includes/pc4.h
+++ b/src/mess/includes/pc4.h
@@ -65,7 +65,7 @@ public:
INT8 m_disp_shift;
INT8 m_direction;
UINT8 m_blink;
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(pc4);
protected:
required_memory_region m_region_charset;
diff --git a/src/mess/includes/pcw.h b/src/mess/includes/pcw.h
index 0d109503ae1..76f279d4160 100644
--- a/src/mess/includes/pcw.h
+++ b/src/mess/includes/pcw.h
@@ -104,7 +104,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(pcw);
UINT32 screen_update_pcw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_pcw_printer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(pcw_timer_pulse);
diff --git a/src/mess/includes/pcw16.h b/src/mess/includes/pcw16.h
index 084773bfc83..0ec076fbf48 100644
--- a/src/mess/includes/pcw16.h
+++ b/src/mess/includes/pcw16.h
@@ -128,7 +128,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(pcw16);
UINT32 screen_update_pcw16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(pcw16_timer_callback);
TIMER_DEVICE_CALLBACK_MEMBER(pcw16_keyboard_timer_callback);
diff --git a/src/mess/includes/pdp1.h b/src/mess/includes/pdp1.h
index a50273f15ff..f1503600646 100644
--- a/src/mess/includes/pdp1.h
+++ b/src/mess/includes/pdp1.h
@@ -262,7 +262,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(pdp1);
UINT32 screen_update_pdp1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof_pdp1(screen_device &screen, bool state);
INTERRUPT_GEN_MEMBER(pdp1_interrupt);
diff --git a/src/mess/includes/pk8020.h b/src/mess/includes/pk8020.h
index e567c0dc9f9..332d4e5e941 100644
--- a/src/mess/includes/pk8020.h
+++ b/src/mess/includes/pk8020.h
@@ -59,7 +59,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(pk8020);
UINT32 screen_update_pk8020(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(pk8020_interrupt);
DECLARE_READ8_MEMBER(pk8020_porta_r);
diff --git a/src/mess/includes/pmd85.h b/src/mess/includes/pmd85.h
index 02a6102cdcb..02fb5b749af 100644
--- a/src/mess/includes/pmd85.h
+++ b/src/mess/includes/pmd85.h
@@ -74,7 +74,7 @@ public:
DECLARE_DRIVER_INIT(c2717);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(pmd85);
UINT32 screen_update_pmd85(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(pmd85_cassette_timer_callback);
DECLARE_WRITE_LINE_MEMBER(write_cas_tx);
diff --git a/src/mess/includes/poisk1.h b/src/mess/includes/poisk1.h
index 8497c543d4c..e4877d9b232 100644
--- a/src/mess/includes/poisk1.h
+++ b/src/mess/includes/poisk1.h
@@ -50,7 +50,7 @@ public:
IRQ_CALLBACK_MEMBER(p1_irq_callback);
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(p1);
virtual void video_start();
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void set_palette_luts();
diff --git a/src/mess/includes/portfoli.h b/src/mess/includes/portfoli.h
index fd8a297e786..1562523c69c 100644
--- a/src/mess/includes/portfoli.h
+++ b/src/mess/includes/portfoli.h
@@ -108,7 +108,7 @@ public:
/* peripheral state */
UINT8 m_pid; /* peripheral identification */
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(portfolio);
TIMER_DEVICE_CALLBACK_MEMBER(keyboard_tick);
TIMER_DEVICE_CALLBACK_MEMBER(system_tick);
TIMER_DEVICE_CALLBACK_MEMBER(counter_tick);
diff --git a/src/mess/includes/pp01.h b/src/mess/includes/pp01.h
index 6c1c2311d7b..9fa9ab190fd 100644
--- a/src/mess/includes/pp01.h
+++ b/src/mess/includes/pp01.h
@@ -47,7 +47,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(pp01);
UINT32 screen_update_pp01(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE_LINE_MEMBER(pp01_pit_out0);
DECLARE_WRITE_LINE_MEMBER(pp01_pit_out1);
diff --git a/src/mess/includes/psion.h b/src/mess/includes/psion.h
index 0d0d2e41906..354bca3ee07 100644
--- a/src/mess/includes/psion.h
+++ b/src/mess/includes/psion.h
@@ -68,7 +68,7 @@ public:
void io_rw(address_space &space, UINT16 offset);
DECLARE_WRITE8_MEMBER( io_w );
DECLARE_READ8_MEMBER( io_r );
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(psion);
DECLARE_INPUT_CHANGED_MEMBER(psion_on);
TIMER_DEVICE_CALLBACK_MEMBER(nmi_timer);
diff --git a/src/mess/includes/px8.h b/src/mess/includes/px8.h
index 2ff3e884166..80a908c94a6 100644
--- a/src/mess/includes/px8.h
+++ b/src/mess/includes/px8.h
@@ -76,7 +76,7 @@ public:
/* keyboard state */
int m_ksc; /* keyboard scan column */
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(px8);
UINT32 screen_update_px8(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
diff --git a/src/mess/includes/rmnimbus.h b/src/mess/includes/rmnimbus.h
index cdcd5d155f4..aea2488cba3 100644
--- a/src/mess/includes/rmnimbus.h
+++ b/src/mess/includes/rmnimbus.h
@@ -460,7 +460,7 @@ public:
virtual void machine_reset();
virtual void video_start();
virtual void video_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(rmnimbus);
UINT32 screen_update_nimbus(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof_nimbus(screen_device &screen, bool state);
// TIMER_CALLBACK_MEMBER(internal_timer_int);
diff --git a/src/mess/includes/samcoupe.h b/src/mess/includes/samcoupe.h
index e4242597f76..a2b3446588d 100644
--- a/src/mess/includes/samcoupe.h
+++ b/src/mess/includes/samcoupe.h
@@ -109,7 +109,7 @@ public:
DECLARE_READ8_MEMBER(samcoupe_attributes_r);
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(samcoupe);
INTERRUPT_GEN_MEMBER(samcoupe_frame_interrupt);
TIMER_CALLBACK_MEMBER(irq_off);
TIMER_CALLBACK_MEMBER(samcoupe_mouse_reset);
diff --git a/src/mess/includes/ssystem3.h b/src/mess/includes/ssystem3.h
index a48c390c2b5..174e37eba48 100644
--- a/src/mess/includes/ssystem3.h
+++ b/src/mess/includes/ssystem3.h
@@ -47,7 +47,7 @@ public:
lcd_t m_lcd;
DECLARE_DRIVER_INIT(ssystem3);
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(ssystem3);
UINT32 screen_update_ssystem3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE8_MEMBER(ssystem3_via_write_a);
DECLARE_READ8_MEMBER(ssystem3_via_read_a);
diff --git a/src/mess/includes/svision.h b/src/mess/includes/svision.h
index d87536ad1ac..ab936742a72 100644
--- a/src/mess/includes/svision.h
+++ b/src/mess/includes/svision.h
@@ -53,7 +53,7 @@ public:
DECLARE_DRIVER_INIT(svisions);
DECLARE_DRIVER_INIT(svision);
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(svision);
DECLARE_PALETTE_INIT(svisionp);
DECLARE_PALETTE_INIT(svisionn);
DECLARE_MACHINE_RESET(tvlink);
diff --git a/src/mess/includes/ti85.h b/src/mess/includes/ti85.h
index 0f89eb982ee..5a689c04e38 100644
--- a/src/mess/includes/ti85.h
+++ b/src/mess/includes/ti85.h
@@ -96,7 +96,7 @@ public:
DECLARE_READ8_MEMBER( ti83p_port_0002_r );
virtual void machine_start();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(ti85);
DECLARE_MACHINE_RESET(ti85);
DECLARE_PALETTE_INIT(ti82);
DECLARE_MACHINE_START(ti86);
diff --git a/src/mess/includes/ti89.h b/src/mess/includes/ti89.h
index 809297a8815..2317755a901 100644
--- a/src/mess/includes/ti89.h
+++ b/src/mess/includes/ti89.h
@@ -81,7 +81,7 @@ public:
DECLARE_WRITE16_MEMBER ( flash_w );
DECLARE_READ16_MEMBER ( flash_r );
UINT64 m_timer;
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(ti68k);
DECLARE_INPUT_CHANGED_MEMBER(ti68k_on_key);
TIMER_DEVICE_CALLBACK_MEMBER(ti68k_timer_callback);
};
diff --git a/src/mess/includes/tiki100.h b/src/mess/includes/tiki100.h
index c1a07983e01..12d50ee9770 100644
--- a/src/mess/includes/tiki100.h
+++ b/src/mess/includes/tiki100.h
@@ -124,7 +124,7 @@ public:
/* video state */
UINT8 m_scroll;
UINT8 m_mode;
- UINT8 m_palette;
+ UINT8 m_palette_val;
/* keyboard state */
int m_keylatch;
diff --git a/src/mess/includes/tvc.h b/src/mess/includes/tvc.h
index abeada85424..930588d70ca 100644
--- a/src/mess/includes/tvc.h
+++ b/src/mess/includes/tvc.h
@@ -132,7 +132,7 @@ public:
UINT8 m_vram_bank;
UINT8 m_cassette_ff;
UINT8 m_centronics_ff;
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(tvc);
};
diff --git a/src/mess/includes/tx0.h b/src/mess/includes/tx0.h
index 278d5b0c489..dbaa23d50cb 100644
--- a/src/mess/includes/tx0.h
+++ b/src/mess/includes/tx0.h
@@ -154,7 +154,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(tx0);
UINT32 screen_update_tx0(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof_tx0(screen_device &screen, bool state);
INTERRUPT_GEN_MEMBER(tx0_interrupt);
diff --git a/src/mess/includes/vc4000.h b/src/mess/includes/vc4000.h
index c13ea301e06..4ca651f5acc 100644
--- a/src/mess/includes/vc4000.h
+++ b/src/mess/includes/vc4000.h
@@ -111,7 +111,7 @@ public:
bitmap_ind16 *m_bitmap;
optional_device<cassette_image_device> m_cassette;
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(vc4000);
UINT32 screen_update_vc4000(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vc4000_video_line);
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(vc4000_cart);
diff --git a/src/mess/includes/vector06.h b/src/mess/includes/vector06.h
index 412a0c2699f..bfd61ca98aa 100644
--- a/src/mess/includes/vector06.h
+++ b/src/mess/includes/vector06.h
@@ -62,7 +62,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(vector06);
UINT32 screen_update_vector06(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vector06_interrupt);
TIMER_CALLBACK_MEMBER(reset_check_callback);
diff --git a/src/mess/includes/vtech2.h b/src/mess/includes/vtech2.h
index c85b89d9dce..738d52fa650 100644
--- a/src/mess/includes/vtech2.h
+++ b/src/mess/includes/vtech2.h
@@ -56,7 +56,7 @@ public:
DECLARE_DRIVER_INIT(laser);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(vtech2);
DECLARE_MACHINE_RESET(laser500);
DECLARE_MACHINE_RESET(laser700);
UINT32 screen_update_laser(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mess/includes/wswan.h b/src/mess/includes/wswan.h
index bf28134a688..20ccca7087e 100644
--- a/src/mess/includes/wswan.h
+++ b/src/mess/includes/wswan.h
@@ -145,7 +145,7 @@ public:
void wswan_clear_irq_line(int irq);
virtual void machine_start();
virtual void machine_reset();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(wswan);
DECLARE_MACHINE_START(wscolor);
DECLARE_PALETTE_INIT(wscolor);
TIMER_CALLBACK_MEMBER(wswan_rtc_callback);
diff --git a/src/mess/includes/x07.h b/src/mess/includes/x07.h
index 17cfffb8620..587b289cddb 100644
--- a/src/mess/includes/x07.h
+++ b/src/mess/includes/x07.h
@@ -263,7 +263,7 @@ public:
UINT8 m_prn_char_code;
UINT8 m_prn_buffer[0x100];
UINT8 m_prn_size;
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(x07);
TIMER_CALLBACK_MEMBER(cassette_tick);
TIMER_CALLBACK_MEMBER(cassette_poll);
TIMER_CALLBACK_MEMBER(rsta_clear);
diff --git a/src/mess/includes/z88.h b/src/mess/includes/z88.h
index f15409ab50e..833a053ce78 100644
--- a/src/mess/includes/z88.h
+++ b/src/mess/includes/z88.h
@@ -87,7 +87,7 @@ public:
UINT8 * m_bios;
UINT8 * m_ram_base;
z88cart_slot_device * m_carts[4];
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(z88);
};
#endif /* Z88_H_ */
diff --git a/src/mess/includes/zx.h b/src/mess/includes/zx.h
index b1eb6d26cd6..56cc53da180 100644
--- a/src/mess/includes/zx.h
+++ b/src/mess/includes/zx.h
@@ -75,7 +75,7 @@ public:
DECLARE_DRIVER_INIT(zx);
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
+ DECLARE_PALETTE_INIT(zx);
DECLARE_PALETTE_INIT(ts1000);
DECLARE_MACHINE_RESET(pc8300);
DECLARE_MACHINE_RESET(pow3000);
diff --git a/src/mess/machine/aim65.c b/src/mess/machine/aim65.c
index 0f9f2f93328..c10680093c0 100644
--- a/src/mess/machine/aim65.c
+++ b/src/mess/machine/aim65.c
@@ -399,7 +399,7 @@ SCREEN_UPDATE( aim65 )
for (b = 0; b<10; b++)
{
- pen = screen.machine().pens[BIT(data, 0) ? 2 : 0];
+ pen = screen.m_palette->pen(BIT(data, 0) ? 2 : 0);
plot_pixel(bitmap,700 - ((b * 10) + x), y, pen);
data >>= 1;
}
diff --git a/src/mess/machine/amstrad.c b/src/mess/machine/amstrad.c
index bc5f37c8d14..bddc8c74af6 100644
--- a/src/mess/machine/amstrad.c
+++ b/src/mess/machine/amstrad.c
@@ -200,13 +200,13 @@ static const rgb_t amstrad_green_palette[32] =
/* Initialise the palette */
PALETTE_INIT_MEMBER(amstrad_state,amstrad_cpc)
{
- palette_set_colors(machine(), 0, amstrad_palette, ARRAY_LENGTH(amstrad_palette));
+ palette.set_pen_colors(0, amstrad_palette, ARRAY_LENGTH(amstrad_palette));
}
PALETTE_INIT_MEMBER(amstrad_state,amstrad_cpc_green)
{
- palette_set_colors(machine(), 0, amstrad_green_palette, ARRAY_LENGTH(amstrad_green_palette));
+ palette.set_pen_colors(0, amstrad_green_palette, ARRAY_LENGTH(amstrad_green_palette));
}
@@ -301,7 +301,7 @@ PALETTE_INIT_MEMBER(amstrad_state,kccomp)
for (i=0; i<32; i++)
{
- palette_set_color_rgb(machine(), i,
+ palette.set_pen_color(i,
kccomp_get_colour_element((color_prom[i]>>2) & 0x03),
kccomp_get_colour_element((color_prom[i]>>4) & 0x03),
kccomp_get_colour_element((color_prom[i]>>0) & 0x03));
@@ -319,7 +319,7 @@ PALETTE_INIT_MEMBER(amstrad_state,amstrad_plus)
{
int i;
- palette_set_colors(machine(), 0, amstrad_palette, ARRAY_LENGTH(amstrad_palette) / 3);
+ palette.set_pen_colors(0, amstrad_palette, ARRAY_LENGTH(amstrad_palette) / 3);
for ( i = 0; i < 0x1000; i++ )
{
int r, g, b;
@@ -332,7 +332,7 @@ PALETTE_INIT_MEMBER(amstrad_state,amstrad_plus)
g = ( g << 4 ) | ( g );
b = ( b << 4 ) | ( b );
- palette_set_color_rgb(machine(), i, r, g, b);
+ palette.set_pen_color(i, r, g, b);
}
}
@@ -356,7 +356,7 @@ PALETTE_INIT_MEMBER(amstrad_state,aleste)
g = (g << 6);
b = (b << 6);
- palette_set_color_rgb(machine(), i, r, g, b);
+ palette.set_pen_color(i, r, g, b);
}
/* MSX colour palette is 6-bit RGB */
@@ -372,7 +372,7 @@ PALETTE_INIT_MEMBER(amstrad_state,aleste)
g = (g << 6);
b = (b << 6);
- palette_set_color_rgb(machine(), i+32, r, g, b);
+ palette.set_pen_color(i+32, r, g, b);
}
}
diff --git a/src/mess/machine/apple2gs.c b/src/mess/machine/apple2gs.c
index b038c370ecb..423e0c50d0a 100644
--- a/src/mess/machine/apple2gs.c
+++ b/src/mess/machine/apple2gs.c
@@ -1377,7 +1377,7 @@ WRITE8_MEMBER( apple2gs_state::apple2gs_aux4000_w )
{
int color = (offset - 0x19e00) >> 1;
- palette_set_color_rgb(space.machine(), color + 16,
+ m_palette->set_pen_color(color + 16,
((m_slowmem[0x19E00 + (color * 2) + 1] >> 0) & 0x0F) * 17,
((m_slowmem[0x19E00 + (color * 2) + 0] >> 4) & 0x0F) * 17,
((m_slowmem[0x19E00 + (color * 2) + 0] >> 0) & 0x0F) * 17);
@@ -1839,7 +1839,7 @@ WRITE8_MEMBER( apple2gs_state::apple2gs_slowmem_w )
{
int color = (offset - 0x19e00) >> 1;
- palette_set_color_rgb(space.machine(), color + 16,
+ m_palette->set_pen_color(color + 16,
((m_slowmem[0x19E00 + (color * 2) + 1] >> 0) & 0x0F) * 17,
((m_slowmem[0x19E00 + (color * 2) + 0] >> 4) & 0x0F) * 17,
((m_slowmem[0x19E00 + (color * 2) + 0] >> 0) & 0x0F) * 17);
diff --git a/src/mess/machine/b2m.c b/src/mess/machine/b2m.c
index 48e7df29039..7ebd4c1150a 100644
--- a/src/mess/machine/b2m.c
+++ b/src/mess/machine/b2m.c
@@ -275,9 +275,9 @@ WRITE8_MEMBER(b2m_state::b2m_palette_w)
m_b2m_color[offset & 3] = data;
if (ioport("MONITOR")->read()==1) {
- palette_set_color_rgb(machine(),offset, r, g, b);
+ m_palette->set_pen_color(offset, r, g, b);
} else {
- palette_set_color_rgb(machine(),offset, bw, bw, bw);
+ m_palette->set_pen_color(offset, bw, bw, bw);
}
}
diff --git a/src/mess/machine/cgenie.c b/src/mess/machine/cgenie.c
index ff75534668c..8f3cabdd8d6 100644
--- a/src/mess/machine/cgenie.c
+++ b/src/mess/machine/cgenie.c
@@ -220,7 +220,7 @@ WRITE8_MEMBER( cgenie_state::cgenie_port_ff_w )
b = 15;
}
}
- palette_set_color_rgb(machine(), 0, r, g, b);
+ m_palette->set_pen_color(0, r, g, b);
}
/* character mode changed ? */
diff --git a/src/mess/machine/lisa.c b/src/mess/machine/lisa.c
index b6a5a4794fd..92189c57185 100644
--- a/src/mess/machine/lisa.c
+++ b/src/mess/machine/lisa.c
@@ -757,7 +757,7 @@ UINT32 lisa_state::screen_update_lisa(screen_device &screen, bitmap_ind16 &bitma
for (x = 0; x < resx; x++)
// line_buffer[x] = (v[(x+y*resx)>>4] & (0x8000 >> ((x+y*resx) & 0xf))) ? 0 : 1;
line_buffer[x] = (v[(x+y*resx)>>4] & (0x8000 >> (x & 0xf))) ? 0 : 1;
- draw_scanline8(bitmap, 0, y, resx, line_buffer, machine().pens);
+ draw_scanline8(bitmap, 0, y, resx, line_buffer, m_palette->pens());
}
return 0;
}
diff --git a/src/mess/machine/lynx.c b/src/mess/machine/lynx.c
index 76661d5ac61..030bce8a79f 100644
--- a/src/mess/machine/lynx.c
+++ b/src/mess/machine/lynx.c
@@ -1313,8 +1313,8 @@ void lynx_state::lynx_draw_line()
for (x = 160 - 2; x >= 0; j++, x -= 2)
{
byte = lynx_read_ram(j);
- line[x + 1] = m_palette[(byte >> 4) & 0x0f];
- line[x + 0] = m_palette[(byte >> 0) & 0x0f];
+ line[x + 1] = m_lynx_palette[(byte >> 4) & 0x0f];
+ line[x + 0] = m_lynx_palette[(byte >> 0) & 0x0f];
}
}
else
@@ -1323,8 +1323,8 @@ void lynx_state::lynx_draw_line()
for (x = 0; x < 160; j++, x += 2)
{
byte = lynx_read_ram(j);
- line[x + 0] = m_palette[(byte >> 4) & 0x0f];
- line[x + 1] = m_palette[(byte >> 0) & 0x0f];
+ line[x + 0] = m_lynx_palette[(byte >> 4) & 0x0f];
+ line[x + 1] = m_lynx_palette[(byte >> 0) & 0x0f];
}
}
}
@@ -1828,10 +1828,10 @@ WRITE8_MEMBER(lynx_state::mikey_write)
m_mikey.data[offset] = data;
/* RED = 0xb- & 0x0f, GREEN = 0xa- & 0x0f, BLUE = (0xb- & 0xf0) >> 4 */
- m_palette[offset & 0x0f] = machine().pens[
+ m_lynx_palette[offset & 0x0f] = m_palette->pen(
((m_mikey.data[0xb0 + (offset & 0x0f)] & 0x0f)) |
((m_mikey.data[0xa0 + (offset & 0x0f)] & 0x0f) << 4) |
- ((m_mikey.data[0xb0 + (offset & 0x0f)] & 0xf0) << 4)];
+ ((m_mikey.data[0xb0 + (offset & 0x0f)] & 0xf0) << 4));
break;
/* TODO: properly implement these writes */
@@ -1950,7 +1950,7 @@ void lynx_state::machine_start()
save_item(NAME(m_memory_config));
save_item(NAME(m_sign_AB));
save_item(NAME(m_sign_CD));
- save_item(NAME(m_palette));
+ save_item(NAME(m_lynx_palette));
save_item(NAME(m_rotate));
// save blitter variables
save_item(NAME(m_blitter.screen));
diff --git a/src/mess/machine/pk8020.c b/src/mess/machine/pk8020.c
index 2d485bbdd11..f2ebee3e28d 100644
--- a/src/mess/machine/pk8020.c
+++ b/src/mess/machine/pk8020.c
@@ -60,7 +60,7 @@ WRITE8_MEMBER(pk8020_state::sysreg_w)
UINT8 r = ((color & 0x04) ? 0xC0 : 0) + i;
UINT8 g = ((color & 0x02) ? 0xC0 : 0) + i;
UINT8 b = ((color & 0x01) ? 0xC0 : 0) + i;
- palette_set_color( machine(), number, rgb_t(r,g,b) );
+ m_palette->set_pen_color( number, rgb_t(r,g,b) );
}
}
diff --git a/src/mess/machine/svi318.c b/src/mess/machine/svi318.c
index ff32a5632fa..3a5f3f65943 100644
--- a/src/mess/machine/svi318.c
+++ b/src/mess/machine/svi318.c
@@ -379,8 +379,8 @@ MACHINE_RESET_MEMBER(svi318_state,svi328_806)
svi318_set_banks();
/* Set SVI-806 80 column card palette */
- palette_set_color_rgb( machine(), TMS9928A_PALETTE_SIZE, 0, 0, 0 ); /* Monochrome black */
- palette_set_color_rgb( machine(), TMS9928A_PALETTE_SIZE+1, 0, 224, 0 ); /* Monochrome green */
+ m_palette->set_pen_color( TMS9928A_PALETTE_SIZE, 0, 0, 0 ); /* Monochrome black */
+ m_palette->set_pen_color( TMS9928A_PALETTE_SIZE+1, 0, 224, 0 ); /* Monochrome green */
}
/* Init functions */
diff --git a/src/mess/machine/ti99/videowrp.h b/src/mess/machine/ti99/videowrp.h
index 3b96e306c6e..2d3fb628324 100644
--- a/src/mess/machine/ti99/videowrp.h
+++ b/src/mess/machine/ti99/videowrp.h
@@ -167,7 +167,7 @@ protected:
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(_blank)) \
MCFG_SCREEN_SIZE(_x, _y) \
MCFG_SCREEN_VISIBLE_AREA(0, _x - 1, 0, _y - 1) \
- MCFG_PALETTE_LENGTH(512)
+ MCFG_PALETTE_ADD("palette", 512) \
#define MCFG_TI_SOUND_94624_ADD(_tag, _conf) \
MCFG_DEVICE_ADD(_tag, TISOUND_94624, 0) \
diff --git a/src/mess/machine/vector06.c b/src/mess/machine/vector06.c
index 9c2d2ea81c9..28b34f7a44d 100644
--- a/src/mess/machine/vector06.c
+++ b/src/mess/machine/vector06.c
@@ -60,7 +60,7 @@ WRITE8_MEMBER( vector06_state::vector06_color_set )
UINT8 r = (data & 7) << 5;
UINT8 g = ((data >> 3) & 7) << 5;
UINT8 b = ((data >>6) & 3) << 6;
- palette_set_color( machine(), m_color_index, rgb_t(r,g,b) );
+ m_palette->set_pen_color( m_color_index, rgb_t(r,g,b) );
}
diff --git a/src/mess/video/733_asr.c b/src/mess/video/733_asr.c
index 0abee5da615..329334dce0a 100644
--- a/src/mess/video/733_asr.c
+++ b/src/mess/video/733_asr.c
@@ -60,6 +60,7 @@ struct asr_t
bitmap_ind16 *bitmap;
gfxdecode_device *m_gfxdecode;
+ palette_device *m_palette;
};
enum
@@ -90,14 +91,14 @@ static const gfx_layout fontlayout =
8*8 /* every char takes 8 consecutive bytes */
};
-GFXDECODE_START( asr733 )
+static GFXDECODE_START( asr733 )
GFXDECODE_ENTRY( asr733_chr_region, 0, fontlayout, 0, 1 )
GFXDECODE_END
PALETTE_INIT_MEMBER(asr733_device, asr733)
{
- palette_set_color(machine(),0,rgb_t::white); /* white */
- palette_set_color(machine(),1,rgb_t::black); /* black */
+ palette.set_pen_color(0,rgb_t::white); /* white */
+ palette.set_pen_color(1,rgb_t::black); /* black */
}
/*
@@ -222,23 +223,13 @@ const device_type ASR733 = &device_creator<asr733_device>;
asr733_device::asr733_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, ASR733, "733 ASR", tag, owner, clock, "asr733", __FILE__),
- m_gfxdecode(*this)
+ m_palette(*this, "palette"),
+ m_gfxdecode(*this, "gfxdecode")
{
m_token = global_alloc_clear(asr_t);
}
//-------------------------------------------------
-// static_set_gfxdecode_tag: Set the tag of the
-// gfx decoder
-//-------------------------------------------------
-
-void asr733_device::static_set_gfxdecode_tag(device_t &device, const char *tag)
-{
- downcast<asr733_device &>(device).m_gfxdecode.set_tag(tag);
-}
-
-
-//-------------------------------------------------
// device_config_complete - perform any
// operations now that the configuration is
// complete
@@ -256,6 +247,7 @@ void asr733_device::device_start()
{
asr_t *asr = get_safe_token(this);
asr->m_gfxdecode = m_gfxdecode;
+ asr->m_palette = m_palette;
DEVICE_START_NAME( asr733 )(this);
}
@@ -275,7 +267,7 @@ static void asr_draw_char(device_t *device, int character, int x, int y, int col
{
asr_t *asr = get_safe_token(device);
- asr->m_gfxdecode->gfx(0)->opaque(*asr->bitmap,asr->bitmap->cliprect(), character-32, color, 0, 0,
+ asr->m_gfxdecode->gfx(0)->opaque(*asr->m_palette,*asr->bitmap,asr->bitmap->cliprect(), character-32, color, 0, 0,
x+1, y);
}
@@ -288,7 +280,7 @@ static void asr_linefeed(device_t *device)
for (y=asr_window_offset_y; y<asr_window_offset_y+asr_window_height-asr_scroll_step; y++)
{
extract_scanline8(*asr->bitmap, asr_window_offset_x, y+asr_scroll_step, asr_window_width, buf);
- draw_scanline8(*asr->bitmap, asr_window_offset_x, y, asr_window_width, buf, device->machine().pens);
+ draw_scanline8(*asr->bitmap, asr_window_offset_x, y, asr_window_width, buf,downcast<asr733_device *>(device)->m_palette->pens());
}
const rectangle asr_scroll_clear_window(
@@ -780,7 +772,10 @@ void asr733_keyboard(device_t *device)
}
static MACHINE_CONFIG_FRAGMENT( asr733 )
- MCFG_PALETTE_INIT_OVERRIDE(asr733_device, asr733)
+ MCFG_GFXDECODE_ADD("gfxdecode", asr733)
+
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(asr733_device, asr733)
MACHINE_CONFIG_END
//-------------------------------------------------
diff --git a/src/mess/video/733_asr.h b/src/mess/video/733_asr.h
index 772a24892a7..c105c49bd35 100644
--- a/src/mess/video/733_asr.h
+++ b/src/mess/video/733_asr.h
@@ -1,5 +1,5 @@
-#define asr733_chr_region "gfx1"
+#define asr733_chr_region ":gfx1"
enum
{
@@ -14,8 +14,6 @@ struct asr733_init_params_t
void (*int_callback)(running_machine &machine, int state);
};
-GFXDECODE_EXTERN( asr733 );
-
void asr733_init(running_machine &machine);
class asr733_device : public device_t
{
@@ -28,15 +26,14 @@ public:
// access to legacy token
void *token() const { assert(m_token != NULL); return m_token; }
- // static configuration
- static void static_set_gfxdecode_tag(device_t &device, const char *tag);
-
protected:
// device-level overrides
virtual void device_config_complete();
virtual void device_start();
virtual void device_reset();
virtual machine_config_constructor device_mconfig_additions() const;
+public:
+ required_device<palette_device> m_palette;
private:
// internal state
void *m_token;
@@ -50,9 +47,6 @@ extern const device_type ASR733;
MCFG_DEVICE_ADD(_tag, ASR733, 0) \
MCFG_DEVICE_CONFIG(_intf)
-#define MCFG_ASR733_VIDEO_GFXDECODE(_gfxtag) \
- asr733_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
-
DECLARE_READ8_DEVICE_HANDLER(asr733_cru_r);
DECLARE_WRITE8_DEVICE_HANDLER(asr733_cru_w);
diff --git a/src/mess/video/911_vdt.c b/src/mess/video/911_vdt.c
index 1b435066783..740e505bf1f 100644
--- a/src/mess/video/911_vdt.c
+++ b/src/mess/video/911_vdt.c
@@ -43,7 +43,7 @@ static const gfx_layout fontlayout_8bit =
10*8 /* every char takes 10 consecutive bytes */
};
-GFXDECODE_START( vdt911 )
+static GFXDECODE_START( vdt911 )
/* array must use same order as vdt911_model_t!!! */
/* US */
GFXDECODE_ENTRY( vdt911_chr_region, vdt911_US_chr_offset, fontlayout_7bit, 0, 4 )
@@ -112,6 +112,7 @@ struct vdt_t
int last_modifier_state;
char foreign_mode;
gfxdecode_device * m_gfxdecode;
+ palette_device * m_palette;
};
/*
@@ -136,16 +137,14 @@ PALETTE_INIT_MEMBER(vdt911_device, vdt911)
{
UINT8 i, r, g, b;
- machine().colortable = colortable_alloc(machine(), 3);
-
for ( i = 0; i < 3; i++ )
{
r = vdt911_colors[i*3]; g = vdt911_colors[i*3+1]; b = vdt911_colors[i*3+2];
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
for(i=0;i<8;i++)
- colortable_entry_set_value(machine().colortable, i, vdt911_palette[i]);
+ palette.set_pen_indirect(i, vdt911_palette[i]);
}
/*
@@ -274,22 +273,13 @@ const device_type VDT911 = &device_creator<vdt911_device>;
vdt911_device::vdt911_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, VDT911, "911 VDT", tag, owner, clock, "vdt911", __FILE__),
- m_gfxdecode(*this)
+ m_gfxdecode(*this, "gfxdecode"),
+ m_palette(*this, "palette")
{
m_token = global_alloc_clear(vdt_t);
}
//-------------------------------------------------
-// static_set_gfxdecode_tag: Set the tag of the
-// gfx decoder
-//-------------------------------------------------
-
-void vdt911_device::static_set_gfxdecode_tag(device_t &device, const char *tag)
-{
- downcast<vdt911_device &>(device).m_gfxdecode.set_tag(tag);
-}
-
-//-------------------------------------------------
// device_config_complete - perform any
// operations now that the configuration is
// complete
@@ -307,6 +297,7 @@ void vdt911_device::device_start()
{
vdt_t *vdt = get_safe_token(this);
vdt->m_gfxdecode = m_gfxdecode;
+ vdt->m_palette = m_palette;
DEVICE_START_NAME( vdt911 )(this);
}
@@ -555,7 +546,7 @@ void vdt911_refresh(device_t *device, bitmap_ind16 &bitmap, const rectangle &cli
address++;
- gfx->opaque(bitmap,cliprect, cur_char, color, 0, 0,
+ gfx->opaque(*vdt->m_palette,bitmap,cliprect, cur_char, color, 0, 0,
x+j*7, y+i*10);
}
}
@@ -724,7 +715,10 @@ void vdt911_keyboard(device_t *device)
}
static MACHINE_CONFIG_FRAGMENT( vdt911 )
- MCFG_PALETTE_INIT_OVERRIDE(vdt911_device, vdt911)
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(vdt911_device, vdt911)
+
+ MCFG_GFXDECODE_ADD("gfxdecode", vdt911)
MACHINE_CONFIG_END
//-------------------------------------------------
diff --git a/src/mess/video/911_vdt.h b/src/mess/video/911_vdt.h
index 24fc43616fd..7c450202aa6 100644
--- a/src/mess/video/911_vdt.h
+++ b/src/mess/video/911_vdt.h
@@ -1,5 +1,5 @@
-#define vdt911_chr_region "gfx1"
+#define vdt911_chr_region ":gfx1"
enum
{
@@ -17,8 +17,6 @@ enum
vdt911_chr_region_len = vdt911_japanese_chr_offset+256*vdt911_single_char_len
};
-GFXDECODE_EXTERN( vdt911 );
-
enum vdt911_screen_size_t { char_960, char_1920 };
enum vdt911_model_t
{
@@ -52,9 +50,6 @@ public:
// access to legacy token
void *token() const { assert(m_token != NULL); return m_token; }
- // static configuration
- static void static_set_gfxdecode_tag(device_t &device, const char *tag);
-
protected:
// device-level overrides
virtual void device_config_complete();
@@ -64,6 +59,7 @@ private:
// internal state
void *m_token;
required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
};
extern const device_type VDT911;
@@ -73,8 +69,6 @@ extern const device_type VDT911;
MCFG_DEVICE_ADD(_tag, VDT911, 0) \
MCFG_DEVICE_CONFIG(_intf)
-#define MCFG_VDT911_VIDEO_GFXDECODE(_gfxtag) \
- vdt911_device::static_set_gfxdecode_tag(*device, "^" _gfxtag);
DECLARE_READ8_DEVICE_HANDLER(vdt911_cru_r);
DECLARE_WRITE8_DEVICE_HANDLER(vdt911_cru_w);
diff --git a/src/mess/video/abc800.c b/src/mess/video/abc800.c
index 9f6a1c4f923..84f1918a067 100644
--- a/src/mess/video/abc800.c
+++ b/src/mess/video/abc800.c
@@ -16,7 +16,7 @@
#define VERTICAL_PORCH_HACK 29
-static const rgb_t PALETTE[] =
+static const rgb_t PALETTE_ABC[] =
{
rgb_t::black,
rgb_t(0xff, 0x00, 0x00), // red
@@ -106,11 +106,11 @@ void abc800c_state::hr_update(bitmap_rgb32 &bitmap, const rectangle &cliprect)
if (black || opaque)
{
- bitmap.pix32(y, x) = PALETTE[color];
- bitmap.pix32(y, x + 1) = PALETTE[color];
+ bitmap.pix32(y, x) = PALETTE_ABC[color];
+ bitmap.pix32(y, x + 1) = PALETTE_ABC[color];
- bitmap.pix32(y + 1, x) = PALETTE[color];
- bitmap.pix32(y + 1, x + 1) = PALETTE[color];
+ bitmap.pix32(y + 1, x) = PALETTE_ABC[color];
+ bitmap.pix32(y + 1, x + 1) = PALETTE_ABC[color];
}
}
diff --git a/src/mess/video/abc806.c b/src/mess/video/abc806.c
index 3c6b88a942e..ef594cf034f 100644
--- a/src/mess/video/abc806.c
+++ b/src/mess/video/abc806.c
@@ -26,7 +26,7 @@
#define VERTICAL_PORCH_HACK 27
-static const rgb_t PALETTE[] =
+static const rgb_t PALETTE_ABC[] =
{
rgb_t::black, // black
rgb_t(0xff, 0x00, 0x00), // red
@@ -329,11 +329,11 @@ static MC6845_UPDATE_ROW( abc806_update_row )
{
int color = BIT(chargen_data, 7) ? fg_color : bg_color;
- bitmap.pix32(y, x++) = PALETTE[color];
+ bitmap.pix32(y, x++) = PALETTE_ABC[color];
if (e5 || e6)
{
- bitmap.pix32(y, x++) = PALETTE[color];
+ bitmap.pix32(y, x++) = PALETTE_ABC[color];
}
chargen_data <<= 1;
@@ -448,7 +448,7 @@ void abc806_state::hr_update(bitmap_rgb32 &bitmap, const rectangle &cliprect)
if (BIT(dot, 15) || (bitmap.pix32(y, x) == rgb_t::black))
{
- bitmap.pix32(y, x) = PALETTE[(dot >> 12) & 0x07];
+ bitmap.pix32(y, x) = PALETTE_ABC[(dot >> 12) & 0x07];
}
dot <<= 4;
@@ -505,7 +505,7 @@ UINT32 abc806_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
screen.set_visible_area(0, 767, 0, 311);
// clear screen
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
if (!m_txoff)
{
diff --git a/src/mess/video/ac1.c b/src/mess/video/ac1.c
index fdcf5c58de9..44353fb920c 100644
--- a/src/mess/video/ac1.c
+++ b/src/mess/video/ac1.c
@@ -36,7 +36,7 @@ UINT32 ac1_state::screen_update_ac1(screen_device &screen, bitmap_ind16 &bitmap,
for(x = 0; x < 64; x++ )
{
int code = space.read_byte(AC1_VIDEO_MEMORY + x + y*64);
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, code , 0, 0,0, 63*6-x*6,15*8-y*8);
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, code , 0, 0,0, 63*6-x*6,15*8-y*8);
}
}
return 0;
@@ -52,7 +52,7 @@ UINT32 ac1_state::screen_update_ac1_32(screen_device &screen, bitmap_ind16 &bitm
for(x = 0; x < 64; x++ )
{
int code = space.read_byte(AC1_VIDEO_MEMORY + x + y*64);
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, code , 0, 0,0, 63*6-x*6,31*8-y*8);
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, code , 0, 0,0, 63*6-x*6,31*8-y*8);
}
}
return 0;
diff --git a/src/mess/video/advision.c b/src/mess/video/advision.c
index 22adc2708e7..4d3fa95d9dc 100644
--- a/src/mess/video/advision.c
+++ b/src/mess/video/advision.c
@@ -31,14 +31,14 @@ void advision_state::video_start()
***************************************************************************/
-void advision_state::palette_init()
+PALETTE_INIT_MEMBER(advision_state, advision)
{
int i;
for( i = 0; i < 8; i++ )
{
/* 8 shades of RED */
- palette_set_color_rgb(machine(), i, i * 0x22, 0x00, 0x00);
+ m_palette->set_pen_color(i, i * 0x22, 0x00, 0x00);
}
}
diff --git a/src/mess/video/apollo.c b/src/mess/video/apollo.c
index 8d8c64109b6..0277d6b4789 100644
--- a/src/mess/video/apollo.c
+++ b/src/mess/video/apollo.c
@@ -2192,10 +2192,9 @@ WRITE8_DEVICE_HANDLER( apollo_ccr_w )
MACHINE_CONFIG_FRAGMENT( apollo_mono19i )
MCFG_DEFAULT_LAYOUT( layout_apollo )
- MCFG_SCREEN_ADD(VIDEO_SCREEN_TAG, RASTER)
MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
+ MCFG_SCREEN_ADD(VIDEO_SCREEN_TAG, RASTER)
MCFG_SCREEN_REFRESH_RATE(64)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(616))
MCFG_SCREEN_SIZE(1280, 1024)
diff --git a/src/mess/video/apple3.c b/src/mess/video/apple3.c
index 5baaaaefeec..6fd638c748a 100644
--- a/src/mess/video/apple3.c
+++ b/src/mess/video/apple3.c
@@ -82,7 +82,7 @@ PALETTE_INIT_MEMBER(apple3_state, apple3)
for (i = 0; i < 32; i++)
{
- palette_set_color_rgb(machine(), i,
+ m_palette->set_pen_color(i,
apple3_palette[(3*i)]*17,
apple3_palette[(3*i)+1]*17,
apple3_palette[(3*i)+2]*17);
diff --git a/src/mess/video/aquarius.c b/src/mess/video/aquarius.c
index 76c1d00cf35..0c822afce78 100644
--- a/src/mess/video/aquarius.c
+++ b/src/mess/video/aquarius.c
@@ -51,17 +51,15 @@ static const unsigned short aquarius_palette[] =
0,15, 1,15, 2,15, 3,15, 4,15, 5,15, 6,15, 7,15, 8,15, 9,15,10,15,11,15,12,15,13,15,14,15,15,15,
};
-void aquarius_state::palette_init()
+PALETTE_INIT_MEMBER(aquarius_state, aquarius)
{
int i;
- machine().colortable = colortable_alloc(machine(), 16);
-
for (i = 0; i < 16; i++)
- colortable_palette_set_color(machine().colortable, i, aquarius_colors[i]);
+ m_palette->set_indirect_color(i, aquarius_colors[i]);
for (i = 0; i < 512; i++)
- colortable_entry_set_value(machine().colortable, i, aquarius_palette[i]);
+ m_palette->set_pen_indirect(i, aquarius_palette[i]);
}
WRITE8_MEMBER(aquarius_state::aquarius_videoram_w)
diff --git a/src/mess/video/arcadia.c b/src/mess/video/arcadia.c
index 82e85c01dd7..79626fb5cbb 100644
--- a/src/mess/video/arcadia.c
+++ b/src/mess/video/arcadia.c
@@ -454,8 +454,8 @@ void arcadia_state::arcadia_draw_char(UINT8 *ch, int charcode, int y, int x)
{
m_bg[y+1][x>>3]|=b>>(x&7);
m_bg[y+1][(x>>3)+1]|=b<<(8-(x&7));
- m_gfxdecode->gfx(0)->opaque(*m_bitmap,m_bitmap->cliprect(), b,colour, 0,0,x,y);
- m_gfxdecode->gfx(0)->opaque(*m_bitmap,m_bitmap->cliprect(), b,colour, 0,0,x,y+1);
+ m_gfxdecode->gfx(0)->opaque(m_palette,*m_bitmap,m_bitmap->cliprect(), b,colour, 0,0,x,y);
+ m_gfxdecode->gfx(0)->opaque(m_palette,*m_bitmap,m_bitmap->cliprect(), b,colour, 0,0,x,y+1);
}
}
}
@@ -467,7 +467,7 @@ void arcadia_state::arcadia_draw_char(UINT8 *ch, int charcode, int y, int x)
m_bg[y][x>>3]|=b>>(x&7);
m_bg[y][(x>>3)+1]|=b<<(8-(x&7));
- m_gfxdecode->gfx(0)->opaque(*m_bitmap,m_bitmap->cliprect(), b,colour, 0,0,x,y);
+ m_gfxdecode->gfx(0)->opaque(m_palette,*m_bitmap,m_bitmap->cliprect(), b,colour, 0,0,x,y);
}
}
}
diff --git a/src/mess/video/atarist.c b/src/mess/video/atarist.c
index 9c179c435a4..240534e78af 100644
--- a/src/mess/video/atarist.c
+++ b/src/mess/video/atarist.c
@@ -64,7 +64,7 @@ inline pen_t st_state::shift_mode_0()
m_shifter_rr[2] <<= 1;
m_shifter_rr[3] <<= 1;
- return machine().pens[color];
+ return m_palette->pen(color);
}
@@ -88,7 +88,7 @@ inline pen_t st_state::shift_mode_1()
m_shifter_shift = 0;
}
- return machine().pens[color];
+ return m_palette->pen(color);
}
@@ -125,7 +125,7 @@ inline pen_t st_state::shift_mode_2()
break;
}
- return machine().pens[color];
+ return m_palette->pen(color);
}
@@ -155,7 +155,7 @@ void st_state::shifter_tick()
break;
default:
- pen = get_black_pen(machine());
+ pen = m_palette->black_pen();
break;
}
@@ -277,7 +277,7 @@ void st_state::glue_tick()
break;
default:
- pen = get_black_pen(machine());
+ pen = m_palette->black_pen();
break;
}
}
@@ -443,7 +443,7 @@ WRITE16_MEMBER( st_state::shifter_palette_w )
m_shifter_palette[offset] = data;
// logerror("SHIFTER Palette[%x] = %x\n", offset, data);
- palette_set_color_rgb(machine(), offset, pal3bit(data >> 8), pal3bit(data >> 4), pal3bit(data));
+ m_palette->set_pen_color(offset, pal3bit(data >> 8), pal3bit(data >> 4), pal3bit(data));
}
@@ -539,7 +539,7 @@ WRITE16_MEMBER( ste_state::shifter_palette_w )
m_shifter_palette[offset] = data;
logerror("SHIFTER palette %x = %x\n", offset, data);
- palette_set_color_rgb(machine(), offset, r, g, b);
+ m_palette->set_pen_color(offset, r, g, b);
}
diff --git a/src/mess/video/avigo.c b/src/mess/video/avigo.c
index a280d721c53..802e3c8de3d 100644
--- a/src/mess/video/avigo.c
+++ b/src/mess/video/avigo.c
@@ -78,10 +78,10 @@ void avigo_state::video_start()
}
/* Initialise the palette */
-void avigo_state::palette_init()
+PALETTE_INIT_MEMBER(avigo_state, avigo)
{
- palette_set_color(machine(),0,rgb_t(0xff,0xff,0xff)); /* white */
- palette_set_color(machine(),1,rgb_t(0x00,0x00,0x00)); /* black */
+ m_palette->set_pen_color(0,rgb_t(0xff,0xff,0xff)); /* white */
+ m_palette->set_pen_color(1,rgb_t(0x00,0x00,0x00)); /* black */
}
UINT32 avigo_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
diff --git a/src/mess/video/b2m.c b/src/mess/video/b2m.c
index 3bb006f9d3d..d01fbc9cceb 100644
--- a/src/mess/video/b2m.c
+++ b/src/mess/video/b2m.c
@@ -52,7 +52,7 @@ static const rgb_t b2m_palette[4] = {
rgb_t(0x00, 0x00, 0x00), // 3
};
-void b2m_state::palette_init()
+PALETTE_INIT_MEMBER(b2m_state, b2m)
{
- palette_set_colors(machine(), 0, b2m_palette, ARRAY_LENGTH(b2m_palette));
+ palette.set_pen_colors(0, b2m_palette, ARRAY_LENGTH(b2m_palette));
}
diff --git a/src/mess/video/busicom.c b/src/mess/video/busicom.c
index edf10d37247..a4a3ff82e95 100644
--- a/src/mess/video/busicom.c
+++ b/src/mess/video/busicom.c
@@ -1845,14 +1845,14 @@ static const UINT8 color[] = { 0xFF,0xDB,0xB7,0x92,0x6E,0x49,0x25,0x00 };
static const UINT8 color_red[] = { 0xb0,0xb5,0xc0,0xc5,0xd0,0xd5,0xdf };
-void busicom_state::palette_init()
+PALETTE_INIT_MEMBER(busicom_state, busicom)
{
int i;
for(i=0;i<8;i++) {
- palette_set_color( machine(), i, rgb_t(color[i],color[i],color[i]) );
+ m_palette->set_pen_color( i, rgb_t(color[i],color[i],color[i]) );
}
- palette_set_color( machine(), 8, rgb_t(0xff,0xff,0xff) );
+ m_palette->set_pen_color( 8, rgb_t(0xff,0xff,0xff) );
for(i=0;i<7;i++) {
- palette_set_color( machine(), i+9, rgb_t(color_red[i],0x00,0x00) );
+ m_palette->set_pen_color( i+9, rgb_t(color_red[i],0x00,0x00) );
}
}
diff --git a/src/mess/video/cgc7900.c b/src/mess/video/cgc7900.c
index 9b4418fef9e..8b8d33a411a 100644
--- a/src/mess/video/cgc7900.c
+++ b/src/mess/video/cgc7900.c
@@ -24,7 +24,7 @@
#define OVERLAY_CURSOR_BLINK BIT(m_roll_overlay[0], 12)
#define OVERLAY_CHARACTER_BLINK BIT(m_roll_overlay[0], 11)
-static const rgb_t PALETTE[] =
+static const rgb_t PALETTE_CGC[] =
{
rgb_t::black,
rgb_t(0x00, 0x00, 0xff),
@@ -152,18 +152,18 @@ void cgc7900_state::draw_overlay(screen_device *screen, bitmap_rgb32 &bitmap)
{
if (!OVERLAY_CURSOR_BLINK || m_blink)
{
- bitmap.pix32(y, (sx * 8) + x) = PALETTE[7];
+ bitmap.pix32(y, (sx * 8) + x) = PALETTE_CGC[7];
}
}
else
{
if (BIT(data, x) && (!OVERLAY_CHARACTER_BLINK || m_blink))
{
- if (OVERLAY_VF) bitmap.pix32(y, (sx * 8) + x) = PALETTE[fg];
+ if (OVERLAY_VF) bitmap.pix32(y, (sx * 8) + x) = PALETTE_CGC[fg];
}
else
{
- if (OVERLAY_VB) bitmap.pix32(y, (sx * 8) + x) = PALETTE[bg];
+ if (OVERLAY_VB) bitmap.pix32(y, (sx * 8) + x) = PALETTE_CGC[bg];
}
}
}
diff --git a/src/mess/video/cgenie.c b/src/mess/video/cgenie.c
index b46b6d1b60a..46b5b9eb3b3 100644
--- a/src/mess/video/cgenie.c
+++ b/src/mess/video/cgenie.c
@@ -236,7 +236,7 @@ void cgenie_state::cgenie_refresh_monitor(bitmap_ind16 &bitmap, const rectangle
int i, address, offset, cursor, size, code, x, y;
rectangle r;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
if(m_crt.vertical_displayed || m_crt.horizontal_displayed)
{
@@ -263,7 +263,7 @@ void cgenie_state::cgenie_refresh_monitor(bitmap_ind16 &bitmap, const rectangle
{
/* get graphics code */
code = videoram[i];
- m_gfxdecode->gfx(1)->opaque(bitmap,r, code, 0,
+ m_gfxdecode->gfx(1)->opaque(m_palette,bitmap,r, code, 0,
0, 0, r.min_x, r.min_y);
}
else
@@ -273,7 +273,7 @@ void cgenie_state::cgenie_refresh_monitor(bitmap_ind16 &bitmap, const rectangle
/* translate defined character sets */
code += m_font_offset[(code >> 6) & 3];
- m_gfxdecode->gfx(0)->opaque(bitmap,r, code, m_colorram[i&0x3ff],
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,r, code, m_colorram[i&0x3ff],
0, 0, r.min_x, r.min_y);
}
@@ -302,7 +302,7 @@ void cgenie_state::cgenie_refresh_monitor(bitmap_ind16 &bitmap, const rectangle
rc.max_x = r.max_x;
rc.min_y = r.min_y + (m_crt.cursor_top & 15);
rc.max_y = r.min_y + (m_crt.cursor_bottom & 15);
- m_gfxdecode->gfx(0)->opaque(bitmap,rc, 0x7f, m_colorram[i&0x3ff],
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,rc, 0x7f, m_colorram[i&0x3ff],
0, 0, rc.min_x, rc.min_y);
}
}
@@ -315,8 +315,8 @@ void cgenie_state::cgenie_refresh_tv_set(bitmap_ind16 &bitmap, const rectangle &
int i, address, offset, cursor, size, code, x, y;
rectangle r;
- m_bitmap.fill(get_black_pen(machine()), cliprect);
- m_dlybitmap.fill(get_black_pen(machine()), cliprect);
+ m_bitmap.fill(m_palette->black_pen(), cliprect);
+ m_dlybitmap.fill(m_palette->black_pen(), cliprect);
if(m_crt.vertical_displayed || m_crt.horizontal_displayed)
{
@@ -343,9 +343,9 @@ void cgenie_state::cgenie_refresh_tv_set(bitmap_ind16 &bitmap, const rectangle &
{
/* get graphics code */
code = videoram[i];
- m_gfxdecode->gfx(1)->opaque(m_bitmap,r, code, 1,
+ m_gfxdecode->gfx(1)->opaque(m_palette,m_bitmap,r, code, 1,
0, 0, r.min_x, r.min_y);
- m_gfxdecode->gfx(1)->opaque(m_dlybitmap,r, code, 2,
+ m_gfxdecode->gfx(1)->opaque(m_palette,m_dlybitmap,r, code, 2,
0, 0, r.min_x, r.min_y);
}
else
@@ -355,9 +355,9 @@ void cgenie_state::cgenie_refresh_tv_set(bitmap_ind16 &bitmap, const rectangle &
/* translate defined character sets */
code += m_font_offset[(code >> 6) & 3];
- m_gfxdecode->gfx(0)->opaque(m_bitmap,r, code, m_colorram[i&0x3ff] + 16,
+ m_gfxdecode->gfx(0)->opaque(m_palette,m_bitmap,r, code, m_colorram[i&0x3ff] + 16,
0, 0, r.min_x, r.min_y);
- m_gfxdecode->gfx(0)->opaque(m_dlybitmap,r, code, m_colorram[i&0x3ff] + 32,
+ m_gfxdecode->gfx(0)->opaque(m_palette,m_dlybitmap,r, code, m_colorram[i&0x3ff] + 32,
0, 0, r.min_x, r.min_y);
}
@@ -387,9 +387,9 @@ void cgenie_state::cgenie_refresh_tv_set(bitmap_ind16 &bitmap, const rectangle &
rc.min_y = r.min_y + (m_crt.cursor_top & 15);
rc.max_y = r.min_y + (m_crt.cursor_bottom & 15);
- m_gfxdecode->gfx(0)->opaque(m_bitmap,rc, 0x7f, m_colorram[i&0x3ff] + 16,
+ m_gfxdecode->gfx(0)->opaque(m_palette,m_bitmap,rc, 0x7f, m_colorram[i&0x3ff] + 16,
0, 0, rc.min_x, rc.min_y);
- m_gfxdecode->gfx(0)->opaque(m_dlybitmap,rc, 0x7f, m_colorram[i&0x3ff] + 32,
+ m_gfxdecode->gfx(0)->opaque(m_palette,m_dlybitmap,rc, 0x7f, m_colorram[i&0x3ff] + 32,
0, 0, rc.min_x, rc.min_y);
}
}
diff --git a/src/mess/video/channelf.c b/src/mess/video/channelf.c
index 596e82b40f0..139f3e48124 100644
--- a/src/mess/video/channelf.c
+++ b/src/mess/video/channelf.c
@@ -29,9 +29,9 @@ static const UINT16 colormap[] = {
};
/* Initialise the palette */
-void channelf_state::palette_init()
+PALETTE_INIT_MEMBER(channelf_state, channelf)
{
- palette_set_colors(machine(), 0, channelf_palette, ARRAY_LENGTH(channelf_palette));
+ palette.set_pen_colors(0, channelf_palette, ARRAY_LENGTH(channelf_palette));
}
void channelf_state::video_start()
diff --git a/src/mess/video/comquest.c b/src/mess/video/comquest.c
index 6160e845795..cf42088b7d3 100644
--- a/src/mess/video/comquest.c
+++ b/src/mess/video/comquest.c
@@ -13,7 +13,7 @@ UINT32 comquest_state::screen_update_comquest(screen_device &screen, bitmap_ind1
for (y=0; y<128;y++) {
for (x=0, j=0; j<8;j++,x+=8*4) {
#if 0
- m_gfxdecode->gfx(0)->opaque(bitmap,0, state->m_data[y][j],0,
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,0, state->m_data[y][j],0,
0,0,x,y);
#endif
}
diff --git a/src/mess/video/dai.c b/src/mess/video/dai.c
index 752d5a32f60..a0e562d8c57 100644
--- a/src/mess/video/dai.c
+++ b/src/mess/video/dai.c
@@ -40,13 +40,13 @@ const unsigned char dai_palette[16*3] =
};
-void dai_state::palette_init()
+PALETTE_INIT_MEMBER(dai_state, dai)
{
int i;
for ( i = 0; i < sizeof(dai_palette) / 3; i++ )
{
- palette_set_color_rgb(machine(), i, dai_palette[i * 3], dai_palette[i * 3 + 1], dai_palette[i * 3 + 2]);
+ m_palette->set_pen_color(i, dai_palette[i * 3], dai_palette[i * 3 + 1], dai_palette[i * 3 + 2]);
}
}
diff --git a/src/mess/video/ef9345.c b/src/mess/video/ef9345.c
index abb84049a49..dac8a671df7 100644
--- a/src/mess/video/ef9345.c
+++ b/src/mess/video/ef9345.c
@@ -120,7 +120,7 @@ void ef9345_device::device_start()
m_charset = region();
m_screen_out.allocate(496, m_screen->height());
- m_screen_out.set_palette(machine().palette);
+ m_screen_out.set_palette(m_screen->palette()->palette());
m_blink_timer->adjust(attotime::from_msec(500), 0, attotime::from_msec(500));
diff --git a/src/mess/video/fm7.c b/src/mess/video/fm7.c
index 7fc64c39a38..0eaa5045d50 100644
--- a/src/mess/video/fm7.c
+++ b/src/mess/video/fm7.c
@@ -991,7 +991,7 @@ WRITE8_MEMBER(fm7_state::fm7_palette_w)
if(data & 0x01)
b = 0xff;
- palette_set_color(machine(),offset,rgb_t(r,g,b));
+ m_palette->set_pen_color(offset,rgb_t(r,g,b));
m_video.fm7_pal[offset] = data & 0x07;
}
@@ -1022,21 +1022,21 @@ WRITE8_MEMBER(fm7_state::fm77av_analog_palette_w)
break;
case 2:
m_video.fm77av_pal_b[m_video.fm77av_pal_selected] = (data & 0x0f) << 4;
- palette_set_color(machine(),m_video.fm77av_pal_selected+8,
+ m_palette->set_pen_color(m_video.fm77av_pal_selected+8,
rgb_t(m_video.fm77av_pal_r[m_video.fm77av_pal_selected],
m_video.fm77av_pal_g[m_video.fm77av_pal_selected],
m_video.fm77av_pal_b[m_video.fm77av_pal_selected]));
break;
case 3:
m_video.fm77av_pal_r[m_video.fm77av_pal_selected] = (data & 0x0f) << 4;
- palette_set_color(machine(),m_video.fm77av_pal_selected+8,
+ m_palette->set_pen_color(m_video.fm77av_pal_selected+8,
rgb_t(m_video.fm77av_pal_r[m_video.fm77av_pal_selected],
m_video.fm77av_pal_g[m_video.fm77av_pal_selected],
m_video.fm77av_pal_b[m_video.fm77av_pal_selected]));
break;
case 4:
m_video.fm77av_pal_g[m_video.fm77av_pal_selected] = (data & 0x0f) << 4;
- palette_set_color(machine(),m_video.fm77av_pal_selected+8,
+ m_palette->set_pen_color(m_video.fm77av_pal_selected+8,
rgb_t(m_video.fm77av_pal_r[m_video.fm77av_pal_selected],
m_video.fm77av_pal_g[m_video.fm77av_pal_selected],
m_video.fm77av_pal_b[m_video.fm77av_pal_selected]));
@@ -1593,11 +1593,11 @@ static const rgb_t fm7_initial_palette[8] = {
rgb_t(0xff, 0xff, 0xff), // 7
};
-void fm7_state::palette_init()
+PALETTE_INIT_MEMBER(fm7_state, fm7)
{
int x;
- palette_set_colors(machine(), 0, fm7_initial_palette, ARRAY_LENGTH(fm7_initial_palette));
+ palette.set_pen_colors(0, fm7_initial_palette, ARRAY_LENGTH(fm7_initial_palette));
for(x=0;x<8;x++)
m_video.fm7_pal[x] = x;
}
diff --git a/src/mess/video/galeb.c b/src/mess/video/galeb.c
index 576036491b4..6fb96ebcd84 100644
--- a/src/mess/video/galeb.c
+++ b/src/mess/video/galeb.c
@@ -36,7 +36,7 @@ UINT32 galeb_state::screen_update_galeb(screen_device &screen, bitmap_ind16 &bit
for(x = 0; x < 48; x++ )
{
int code = m_video_ram[15 + x + y*64];
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, code , 0, 0,0, x*8,y*8);
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, code , 0, 0,0, x*8,y*8);
}
}
return 0;
diff --git a/src/mess/video/hec2video.c b/src/mess/video/hec2video.c
index 3b17528c24c..4f7f8f3cae5 100644
--- a/src/mess/video/hec2video.c
+++ b/src/mess/video/hec2video.c
@@ -46,24 +46,24 @@ void hec2hrp_state::Init_Hector_Palette()
hector_color[3] = 3; // Ecriture de choix (jaune)
// Color initialisation : full lightning
- palette_set_color( machine(), 0,rgb_t(000,000,000));//Noir
- palette_set_color( machine(), 1,rgb_t(255,000,000));//Rouge
- palette_set_color( machine(), 2,rgb_t(000,255,000));//Vert
- palette_set_color( machine(), 3,rgb_t(255,255,000));//Jaune
- palette_set_color( machine(), 4,rgb_t(000,000,255));//Bleu
- palette_set_color( machine(), 5,rgb_t(255,000,255));//Magneta
- palette_set_color( machine(), 6,rgb_t(000,255,255));//Cyan
- palette_set_color( machine(), 7,rgb_t(255,255,255));//Blanc
+ m_palette->set_pen_color( 0,rgb_t(000,000,000));//Noir
+ m_palette->set_pen_color( 1,rgb_t(255,000,000));//Rouge
+ m_palette->set_pen_color( 2,rgb_t(000,255,000));//Vert
+ m_palette->set_pen_color( 3,rgb_t(255,255,000));//Jaune
+ m_palette->set_pen_color( 4,rgb_t(000,000,255));//Bleu
+ m_palette->set_pen_color( 5,rgb_t(255,000,255));//Magneta
+ m_palette->set_pen_color( 6,rgb_t(000,255,255));//Cyan
+ m_palette->set_pen_color( 7,rgb_t(255,255,255));//Blanc
// 1/2 lightning
- palette_set_color( machine(), 8,rgb_t(000,000,000));//Noir
- palette_set_color( machine(), 9,rgb_t(128,000,000));//Rouge
- palette_set_color( machine(),10,rgb_t(000,128,000));//Vert
- palette_set_color( machine(),11,rgb_t(128,128,000));//Jaune
- palette_set_color( machine(),12,rgb_t(000,000,128));//Bleu
- palette_set_color( machine(),13,rgb_t(128,000,128));//Magneta
- palette_set_color( machine(),14,rgb_t(000,128,128));//Cyan
- palette_set_color( machine(),15,rgb_t(128,128,128));//Blanc
+ m_palette->set_pen_color( 8,rgb_t(000,000,000));//Noir
+ m_palette->set_pen_color( 9,rgb_t(128,000,000));//Rouge
+ m_palette->set_pen_color( 10,rgb_t(000,128,000));//Vert
+ m_palette->set_pen_color( 11,rgb_t(128,128,000));//Jaune
+ m_palette->set_pen_color( 12,rgb_t(000,000,128));//Bleu
+ m_palette->set_pen_color( 13,rgb_t(128,000,128));//Magneta
+ m_palette->set_pen_color( 14,rgb_t(000,128,128));//Cyan
+ m_palette->set_pen_color( 15,rgb_t(128,128,128));//Blanc
}
void hec2hrp_state::hector_hr(bitmap_ind16 &bitmap, UINT8 *page, int ymax, int yram)
diff --git a/src/mess/video/hp48.c b/src/mess/video/hp48.c
index 02d5d847a79..7694ea16608 100644
--- a/src/mess/video/hp48.c
+++ b/src/mess/video/hp48.c
@@ -39,13 +39,13 @@ static const int hp48_fg_color[3] = { 0, 0, 64 }; /* dark blue */
FUNCTIONS
***************************************************************************/
-void hp48_state::palette_init()
+PALETTE_INIT_MEMBER(hp48_state, hp48)
{
int i;
for ( i = 0; i < 255; i++ )
{
float c = i/255.;
- palette_set_color( machine(), i, rgb_t( 0, mix2(0,c), mix2(1,c), mix2(2,c) ) );
+ m_palette->set_pen_color( i, rgb_t( 0, mix2(0,c), mix2(1,c), mix2(2,c) ) );
}
}
diff --git a/src/mess/video/intv.c b/src/mess/video/intv.c
index cd418092c03..889807462a9 100644
--- a/src/mess/video/intv.c
+++ b/src/mess/video/intv.c
@@ -83,7 +83,7 @@ UINT32 intv_state::screen_update_intvkbd(screen_device &screen, bitmap_ind16 &bi
{
offs = current_row*64+x;
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
videoram[offs],
7, /* white */
0,0,
@@ -94,7 +94,7 @@ UINT32 intv_state::screen_update_intvkbd(screen_device &screen, bitmap_ind16 &bi
/* draw the cursor as a solid white block */
/* (should use a filled rect here!) */
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,cliprect,
191, /* a block */
7, /* white */
0,0,
@@ -107,25 +107,25 @@ UINT32 intv_state::screen_update_intvkbd(screen_device &screen, bitmap_ind16 &bi
#if 0
// debugging
c = tape_motor_mode_desc[m_tape_motor_mode][0];
- m_gfxdecode->gfx(0)->transpen(bitmap,&machine().screen[0].visarea,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,&machine().screen[0].visarea,
c,
1,
0,0,
0*8,0*8, 0);
for(y=0;y<5;y++)
{
- m_gfxdecode->gfx(0)->transpen(bitmap,&machine().screen[0].visarea,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,&machine().screen[0].visarea,
m_tape_unknown_write[y]+'0',
1,
0,0,
0*8,(y+2)*8, 0);
}
- m_gfxdecode->gfx(0)->transpen(bitmap,&machine().screen[0].visarea,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,&machine().screen[0].visarea,
m_tape_unknown_write[5]+'0',
1,
0,0,
0*8,8*8, 0);
- m_gfxdecode->gfx(0)->transpen(bitmap,&machine().screen[0].visarea,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,&machine().screen[0].visarea,
m_tape_interrupts_enabled+'0',
1,
0,0,
diff --git a/src/mess/video/isa_cga.c b/src/mess/video/isa_cga.c
index ff9fdc2d8e6..3912be5b37c 100644
--- a/src/mess/video/isa_cga.c
+++ b/src/mess/video/isa_cga.c
@@ -628,7 +628,7 @@ static MACHINE_CONFIG_FRAGMENT( cga )
MCFG_SCREEN_RAW_PARAMS(XTAL_14_31818MHz,912,0,640,262,0,200)
MCFG_SCREEN_UPDATE_DEVICE( DEVICE_SELF, isa8_cga_device, screen_update )
- MCFG_PALETTE_LENGTH(/* CGA_PALETTE_SETS * 16*/ 65536 )
+ MCFG_PALETTE_ADD("palette", /* CGA_PALETTE_SETS * 16*/ 65536 )
MCFG_MC6845_ADD(CGA_MC6845_NAME, MC6845, CGA_SCREEN_NAME, XTAL_14_31818MHz/8, mc6845_cga_intf)
MACHINE_CONFIG_END
@@ -680,7 +680,8 @@ isa8_cga_device::isa8_cga_device(const machine_config &mconfig, const char *tag,
device_t(mconfig, ISA8_CGA, "IBM Color/Graphics Monitor Adapter", tag, owner, clock, "cga", __FILE__),
device_isa8_card_interface(mconfig, *this),
m_cga_config(*this, "cga_config"),
- m_vram_size( 0x4000 )
+ m_vram_size( 0x4000 ),
+ m_palette(*this, "palette")
{
m_chr_gen_offset[0] = m_chr_gen_offset[2] = 0x1800;
m_chr_gen_offset[1] = m_chr_gen_offset[3] = 0x1000;
@@ -692,7 +693,8 @@ isa8_cga_device::isa8_cga_device(const machine_config &mconfig, device_type type
device_t(mconfig, type, name, tag, owner, clock, shortname, source),
device_isa8_card_interface(mconfig, *this),
m_cga_config(*this, "cga_config"),
- m_vram_size( 0x4000 )
+ m_vram_size( 0x4000 ),
+ m_palette(*this, "palette")
{
m_chr_gen_offset[0] = m_chr_gen_offset[2] = 0x1800;
m_chr_gen_offset[1] = m_chr_gen_offset[3] = 0x1000;
@@ -719,7 +721,7 @@ void isa8_cga_device::device_start()
for ( i = 0; i < CGA_PALETTE_SETS * 16; i++ )
{
- palette_set_color_rgb( machine(), i, cga_palette[i][0], cga_palette[i][1], cga_palette[i][2] );
+ m_palette->set_pen_color( i, cga_palette[i][0], cga_palette[i][1], cga_palette[i][2] );
}
i = 0x8000;
@@ -729,7 +731,7 @@ void isa8_cga_device::device_start()
{
for ( int b = 0; b < 32; b++ )
{
- palette_set_color_rgb( machine(), i, r << 3, g << 3, b << 3 );
+ m_palette->set_pen_color( i, r << 3, g << 3, b << 3 );
i++;
}
}
diff --git a/src/mess/video/isa_cga.h b/src/mess/video/isa_cga.h
index 9707048d963..d7fdcac5c08 100644
--- a/src/mess/video/isa_cga.h
+++ b/src/mess/video/isa_cga.h
@@ -68,6 +68,7 @@ public:
bool m_superimpose;
UINT8 m_plantronics; /* This should be moved into the appropriate subclass */
offs_t m_start_offset;
+ required_device<palette_device> m_palette;
};
// device type definition
diff --git a/src/mess/video/isa_ega.c b/src/mess/video/isa_ega.c
index 6fa4f9a23d3..b4a6ad0cd49 100644
--- a/src/mess/video/isa_ega.c
+++ b/src/mess/video/isa_ega.c
@@ -472,7 +472,7 @@ MACHINE_CONFIG_FRAGMENT( pcvideo_ega )
MCFG_SCREEN_RAW_PARAMS(16257000,912,0,640,262,0,200)
MCFG_SCREEN_UPDATE_DEVICE(EGA_CRTC_NAME, crtc_ega_device, screen_update)
- MCFG_PALETTE_LENGTH( 64 )
+ MCFG_PALETTE_ADD( "palette", 64 )
MCFG_CRTC_EGA_ADD(EGA_CRTC_NAME, 16257000/8, crtc_ega_ega_intf)
MCFG_CRTC_EGA_SET_SCREEN(EGA_SCREEN_NAME)
MACHINE_CONFIG_END
@@ -567,14 +567,16 @@ ioport_constructor isa8_ega_device::device_input_ports() const
isa8_ega_device::isa8_ega_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
device_t(mconfig, ISA8_EGA, "IBM Enhanced Graphics Adapter", tag, owner, clock, "ega", __FILE__),
device_isa8_card_interface(mconfig, *this),
- m_misc_output(0)
+ m_misc_output(0),
+ m_palette(*this, "palette")
{
}
isa8_ega_device::isa8_ega_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) :
device_t(mconfig, type, name, tag, owner, clock, shortname, source),
device_isa8_card_interface(mconfig, *this),
- m_misc_output(0)
+ m_misc_output(0),
+ m_palette(*this, "palette")
{
}
@@ -594,7 +596,7 @@ void isa8_ega_device::device_start()
UINT8 g = ( ( i & 0x02 ) ? 0xAA : 0x00 ) + ( ( i & 0x10 ) ? 0x55 : 0x00 );
UINT8 b = ( ( i & 0x01 ) ? 0xAA : 0x00 ) + ( ( i & 0x08 ) ? 0x55 : 0x00 );
- palette_set_color_rgb( machine(), i, r, g, b );
+ m_palette->set_pen_color( i, r, g, b );
}
UINT8 *dst = memregion(subtag(tempstring, "user2" ))->base() + 0x0000;
diff --git a/src/mess/video/isa_ega.h b/src/mess/video/isa_ega.h
index 829abbcafa5..f8722c52d92 100644
--- a/src/mess/video/isa_ega.h
+++ b/src/mess/video/isa_ega.h
@@ -96,6 +96,7 @@ public:
UINT8 m_vsync;
UINT8 m_vblank;
UINT8 m_display_enable;
+ required_device<palette_device> m_palette;
};
diff --git a/src/mess/video/isa_mda.c b/src/mess/video/isa_mda.c
index 806304f6766..d000d32056e 100644
--- a/src/mess/video/isa_mda.c
+++ b/src/mess/video/isa_mda.c
@@ -103,7 +103,7 @@ MACHINE_CONFIG_FRAGMENT( pcvideo_mda )
MCFG_SCREEN_RAW_PARAMS(MDA_CLOCK, 882, 0, 720, 370, 0, 350 )
MCFG_SCREEN_UPDATE_DEVICE( MDA_MC6845_NAME, mc6845_device, screen_update )
- MCFG_PALETTE_LENGTH( 4 )
+ MCFG_PALETTE_ADD( "palette", 4 )
MCFG_MC6845_ADD( MDA_MC6845_NAME, MC6845, MDA_SCREEN_NAME, MDA_CLOCK/9, mc6845_mda_intf)
@@ -155,13 +155,15 @@ const rom_entry *isa8_mda_device::device_rom_region() const
isa8_mda_device::isa8_mda_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
device_t(mconfig, ISA8_MDA, "IBM Monochrome Display and Printer Adapter", tag, owner, clock, "isa_ibm_mda", __FILE__),
- device_isa8_card_interface(mconfig, *this)
+ device_isa8_card_interface(mconfig, *this),
+ m_palette(*this, "palette")
{
}
isa8_mda_device::isa8_mda_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) :
device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_isa8_card_interface(mconfig, *this)
+ device_isa8_card_interface(mconfig, *this),
+ m_palette(*this, "palette")
{
}
@@ -178,7 +180,7 @@ void isa8_mda_device::device_start()
/* Initialise the mda palette */
for(int i = 0; i < (sizeof(mda_palette) / 3); i++)
- palette_set_color_rgb(machine(), i, mda_palette[i][0], mda_palette[i][1], mda_palette[i][2]);
+ m_palette->set_pen_color(i, mda_palette[i][0], mda_palette[i][1], mda_palette[i][2]);
}
//-------------------------------------------------
@@ -520,7 +522,7 @@ MACHINE_CONFIG_FRAGMENT( pcvideo_hercules )
MCFG_SCREEN_RAW_PARAMS(MDA_CLOCK, 882, 0, 720, 370, 0, 350 )
MCFG_SCREEN_UPDATE_DEVICE( HERCULES_MC6845_NAME, mc6845_device, screen_update )
- MCFG_PALETTE_LENGTH( 4 )
+ MCFG_PALETTE_ADD( "palette", 4 )
MCFG_MC6845_ADD( HERCULES_MC6845_NAME, MC6845, HERCULES_SCREEN_NAME, MDA_CLOCK/9, mc6845_hercules_intf)
@@ -586,7 +588,7 @@ void isa8_hercules_device::device_start()
/* Initialise the mda palette */
for(int i = 0; i < (sizeof(mda_palette) / 3); i++)
- palette_set_color_rgb(machine(), i, mda_palette[i][0], mda_palette[i][1], mda_palette[i][2]);
+ m_palette->set_pen_color(i, mda_palette[i][0], mda_palette[i][1], mda_palette[i][2]);
}
//-------------------------------------------------
diff --git a/src/mess/video/isa_mda.h b/src/mess/video/isa_mda.h
index 17d5fac16b5..0da42bc0051 100644
--- a/src/mess/video/isa_mda.h
+++ b/src/mess/video/isa_mda.h
@@ -39,7 +39,7 @@ public:
protected:
// device-level overrides
virtual void device_start();
- virtual void device_reset();
+ virtual void device_reset();
public:
int m_framecnt;
@@ -51,6 +51,7 @@ public:
UINT8 m_hsync;
UINT8 *m_videoram;
UINT8 m_pixel;
+ required_device<palette_device> m_palette;
};
diff --git a/src/mess/video/isa_pc1640_iga.c b/src/mess/video/isa_pc1640_iga.c
index ca107fcf783..4450a8405e4 100644
--- a/src/mess/video/isa_pc1640_iga.c
+++ b/src/mess/video/isa_pc1640_iga.c
@@ -92,7 +92,7 @@ void isa8_pc1640_iga_device::device_start()
UINT8 g = ( ( i & 0x02 ) ? 0xAA : 0x00 ) + ( ( i & 0x10 ) ? 0x55 : 0x00 );
UINT8 b = ( ( i & 0x01 ) ? 0xAA : 0x00 ) + ( ( i & 0x08 ) ? 0x55 : 0x00 );
- palette_set_color_rgb( machine(), i, r, g, b );
+ m_palette->set_pen_color( i, r, g, b );
}
/* Install 256KB Video ram on our EGA card */
diff --git a/src/mess/video/isa_svga_cirrus.c b/src/mess/video/isa_svga_cirrus.c
index 30b9c8889f7..326d0bf2e4e 100644
--- a/src/mess/video/isa_svga_cirrus.c
+++ b/src/mess/video/isa_svga_cirrus.c
@@ -25,7 +25,7 @@ static MACHINE_CONFIG_FRAGMENT( vga_cirrus )
MCFG_SCREEN_RAW_PARAMS(XTAL_25_1748MHz,900,0,640,526,0,480)
MCFG_SCREEN_UPDATE_DEVICE("vga", cirrus_vga_device, screen_update)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_DEVICE_ADD("vga", CIRRUS_VGA, 0)
MACHINE_CONFIG_END
diff --git a/src/mess/video/isa_svga_s3.c b/src/mess/video/isa_svga_s3.c
index f121f70de54..ae87a6e8138 100644
--- a/src/mess/video/isa_svga_s3.c
+++ b/src/mess/video/isa_svga_s3.c
@@ -25,7 +25,7 @@ static MACHINE_CONFIG_FRAGMENT( vga_s3 )
MCFG_SCREEN_RAW_PARAMS(XTAL_25_1748MHz,900,0,640,526,0,480)
MCFG_SCREEN_UPDATE_DEVICE("vga", s3_vga_device, screen_update)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_DEVICE_ADD("vga", S3_VGA, 0)
MACHINE_CONFIG_END
@@ -131,7 +131,7 @@ static MACHINE_CONFIG_FRAGMENT( vga_s3virge )
MCFG_SCREEN_RAW_PARAMS(XTAL_25_1748MHz,900,0,640,526,0,480)
MCFG_SCREEN_UPDATE_DEVICE("vga", s3virge_vga_device, screen_update)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_DEVICE_ADD("vga", S3VIRGE, 0)
MACHINE_CONFIG_END
diff --git a/src/mess/video/isa_svga_tseng.c b/src/mess/video/isa_svga_tseng.c
index 345e05c9015..cfb0e7f35de 100644
--- a/src/mess/video/isa_svga_tseng.c
+++ b/src/mess/video/isa_svga_tseng.c
@@ -25,7 +25,7 @@ static MACHINE_CONFIG_FRAGMENT( vga_tseng )
MCFG_SCREEN_RAW_PARAMS(XTAL_25_1748MHz,900,0,640,526,0,480)
MCFG_SCREEN_UPDATE_DEVICE("vga", tseng_vga_device, screen_update)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_DEVICE_ADD("vga", TSENG_VGA, 0)
MACHINE_CONFIG_END
diff --git a/src/mess/video/isa_vga_ati.c b/src/mess/video/isa_vga_ati.c
index 02a77933776..e92e842df2a 100644
--- a/src/mess/video/isa_vga_ati.c
+++ b/src/mess/video/isa_vga_ati.c
@@ -28,7 +28,7 @@ static MACHINE_CONFIG_FRAGMENT( vga_ati )
MCFG_SCREEN_RAW_PARAMS(XTAL_25_1748MHz,900,0,640,526,0,480)
MCFG_SCREEN_UPDATE_DEVICE("vga", ati_vga_device, screen_update)
- MCFG_PALETTE_LENGTH(0x100)
+ MCFG_PALETTE_ADD("palette", 0x100)
MCFG_DEVICE_ADD("vga", ATI_VGA, 0)
MACHINE_CONFIG_END
diff --git a/src/mess/video/k1ge.c b/src/mess/video/k1ge.c
index f443b2a9bfa..7eb19eaed2f 100644
--- a/src/mess/video/k1ge.c
+++ b/src/mess/video/k1ge.c
@@ -19,7 +19,7 @@ PALETTE_INIT_MEMBER(k1ge_device, k1ge)
{
int j = ( i << 5 ) | ( i << 2 ) | ( i >> 1 );
- palette_set_color_rgb( machine(), 7-i, j, j, j );
+ palette.set_pen_color( 7-i, j, j, j );
}
}
@@ -34,7 +34,7 @@ PALETTE_INIT_MEMBER(k2ge_device, k2ge)
{
for ( r = 0; r < 16; r++ )
{
- palette_set_color_rgb( machine(), ( b << 8 ) | ( g << 4 ) | r, ( r << 4 ) | r, ( g << 4 ) | g, ( b << 4 ) | b );
+ palette.set_pen_color( ( b << 8 ) | ( g << 4 ) | r, ( r << 4 ) | r, ( g << 4 ) | g, ( b << 4 ) | b );
}
}
}
@@ -888,7 +888,8 @@ k1ge_device::k1ge_device(const machine_config &mconfig, device_type type, const
}
static MACHINE_CONFIG_FRAGMENT( k1ge )
- MCFG_PALETTE_INIT_OVERRIDE(k1ge_device, k1ge)
+ MCFG_PALETTE_ADD("palette", 8 )
+ MCFG_PALETTE_INIT_OWNER(k1ge_device, k1ge)
MACHINE_CONFIG_END
//-------------------------------------------------
@@ -910,7 +911,8 @@ k2ge_device::k2ge_device(const machine_config &mconfig, const char *tag, device_
}
static MACHINE_CONFIG_FRAGMENT( k2ge )
- MCFG_PALETTE_INIT_OVERRIDE(k2ge_device, k2ge)
+ MCFG_PALETTE_ADD("palette", 4096 )
+ MCFG_PALETTE_INIT_OWNER(k2ge_device, k2ge)
MACHINE_CONFIG_END
//-------------------------------------------------
diff --git a/src/mess/video/kaypro.c b/src/mess/video/kaypro.c
index 44ddd0dc43d..b4afdc61e7a 100644
--- a/src/mess/video/kaypro.c
+++ b/src/mess/video/kaypro.c
@@ -11,9 +11,9 @@
PALETTE_INIT_MEMBER(kaypro_state,kaypro)
{
- palette_set_color(machine(), 0, rgb_t::black); /* black */
- palette_set_color(machine(), 1, rgb_t(0, 220, 0)); /* green */
- palette_set_color(machine(), 2, rgb_t(0, 110, 0)); /* low intensity green */
+ palette.set_pen_color(0, rgb_t::black); /* black */
+ palette.set_pen_color(1, rgb_t(0, 220, 0)); /* green */
+ palette.set_pen_color(2, rgb_t(0, 110, 0)); /* low intensity green */
}
UINT32 kaypro_state::screen_update_kayproii(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
diff --git a/src/mess/video/kc.c b/src/mess/video/kc.c
index 8b4fd39544a..d847e648873 100644
--- a/src/mess/video/kc.c
+++ b/src/mess/video/kc.c
@@ -50,7 +50,7 @@ static const UINT8 kc85_palette[KC85_PALETTE_SIZE * 3] =
PALETTE_INIT_MEMBER(kc_state,kc85)
{
for (int i = 0; i < sizeof(kc85_palette) / 3; i++ )
- palette_set_color_rgb(machine(), i, kc85_palette[i*3], kc85_palette[i*3+1], kc85_palette[i*3+2]);
+ palette.set_pen_color(i, kc85_palette[i*3], kc85_palette[i*3+1], kc85_palette[i*3+2]);
}
/* set new blink state */
diff --git a/src/mess/video/kramermc.c b/src/mess/video/kramermc.c
index dfedb9c59ba..65df531d75c 100644
--- a/src/mess/video/kramermc.c
+++ b/src/mess/video/kramermc.c
@@ -37,7 +37,7 @@ UINT32 kramermc_state::screen_update_kramermc(screen_device &screen, bitmap_ind1
for(x = 0; x < 64; x++ )
{
int code = space.read_byte(KRAMERMC_VIDEO_MEMORY + x + y*64);
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, code , 0, 0,0, x*8,y*8);
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, code , 0, 0,0, x*8,y*8);
}
}
return 0;
diff --git a/src/mess/video/kyocera.c b/src/mess/video/kyocera.c
index b518547c79a..5074d7c70fe 100644
--- a/src/mess/video/kyocera.c
+++ b/src/mess/video/kyocera.c
@@ -4,14 +4,14 @@
PALETTE_INIT_MEMBER(kc85_state,kc85)
{
- palette_set_color(machine(), 0, rgb_t(138, 146, 148));
- palette_set_color(machine(), 1, rgb_t(92, 83, 88));
+ palette.set_pen_color(0, rgb_t(138, 146, 148));
+ palette.set_pen_color(1, rgb_t(92, 83, 88));
}
PALETTE_INIT_MEMBER(tandy200_state,tandy200)
{
- palette_set_color(machine(), 0, rgb_t(138, 146, 148));
- palette_set_color(machine(), 1, rgb_t(92, 83, 88));
+ palette.set_pen_color(0, rgb_t(138, 146, 148));
+ palette.set_pen_color(1, rgb_t(92, 83, 88));
}
UINT32 kc85_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -56,8 +56,8 @@ MACHINE_CONFIG_FRAGMENT( kc85_video )
MCFG_DEFAULT_LAYOUT(layout_lcd)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(kc85_state,kc85)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(kc85_state,kc85)
MCFG_HD44102_ADD(HD44102_0_TAG, SCREEN_TAG, 0, 0)
MCFG_HD44102_ADD(HD44102_1_TAG, SCREEN_TAG, 50, 0)
@@ -83,8 +83,8 @@ MACHINE_CONFIG_FRAGMENT( tandy200_video )
MCFG_DEFAULT_LAYOUT(layout_lcd)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(tandy200_state,tandy200)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(tandy200_state,tandy200)
MCFG_HD61830_ADD(HD61830_TAG, XTAL_4_9152MHz/2/2, lcdc_intf)
MCFG_DEVICE_ADDRESS_MAP(AS_0, tandy200_lcdc)
diff --git a/src/mess/video/lviv.c b/src/mess/video/lviv.c
index c9e770e0277..ed7a4b47067 100644
--- a/src/mess/video/lviv.c
+++ b/src/mess/video/lviv.c
@@ -24,12 +24,12 @@ const unsigned char lviv_palette[8*3] =
};
-void lviv_state::palette_init()
+PALETTE_INIT_MEMBER(lviv_state, lviv)
{
int i;
for ( i = 0; i < sizeof(lviv_palette) / 3; i++ ) {
- palette_set_color_rgb(machine(), i, lviv_palette[i*3], lviv_palette[i*3+1], lviv_palette[i*3+2]);
+ m_palette->set_pen_color(i, lviv_palette[i*3], lviv_palette[i*3+1], lviv_palette[i*3+2]);
}
}
diff --git a/src/mess/video/mac.c b/src/mess/video/mac.c
index 9e9f34a857e..3ac1e80e00f 100644
--- a/src/mess/video/mac.c
+++ b/src/mess/video/mac.c
@@ -58,17 +58,17 @@ Apple color FPD 01 11 10 (FPD = Full Page Display)
PALETTE_INIT_MEMBER(mac_state,mac)
{
- palette_set_color_rgb(machine(), 0, 0xff, 0xff, 0xff);
- palette_set_color_rgb(machine(), 1, 0x00, 0x00, 0x00);
+ palette.set_pen_color(0, 0xff, 0xff, 0xff);
+ palette.set_pen_color(1, 0x00, 0x00, 0x00);
}
// 4-level grayscale
PALETTE_INIT_MEMBER(mac_state,macgsc)
{
- palette_set_color_rgb(machine(), 0, 0xff, 0xff, 0xff);
- palette_set_color_rgb(machine(), 1, 0x7f, 0x7f, 0x7f);
- palette_set_color_rgb(machine(), 2, 0x3f, 0x3f, 0x3f);
- palette_set_color_rgb(machine(), 3, 0x00, 0x00, 0x00);
+ palette.set_pen_color(0, 0xff, 0xff, 0xff);
+ palette.set_pen_color(1, 0x7f, 0x7f, 0x7f);
+ palette.set_pen_color(2, 0x3f, 0x3f, 0x3f);
+ palette.set_pen_color(3, 0x00, 0x00, 0x00);
}
VIDEO_START_MEMBER(mac_state,mac)
@@ -1030,7 +1030,7 @@ WRITE32_MEMBER(mac_state::dafb_dac_w)
if (m_rbv_count == 3)
{
- palette_set_color(space.machine(), m_rbv_clutoffs, rgb_t(m_rbv_colors[0], m_rbv_colors[1], m_rbv_colors[2]));
+ m_palette->set_pen_color(m_rbv_clutoffs, rgb_t(m_rbv_colors[0], m_rbv_colors[1], m_rbv_colors[2]));
m_rbv_palette[m_rbv_clutoffs] = rgb_t(m_rbv_colors[0], m_rbv_colors[1], m_rbv_colors[2]);
m_rbv_clutoffs++;
m_rbv_count = 0;
diff --git a/src/mess/video/mbee.c b/src/mess/video/mbee.c
index 805aea44af0..935add4c979 100644
--- a/src/mess/video/mbee.c
+++ b/src/mess/video/mbee.c
@@ -574,7 +574,7 @@ PALETTE_INIT_MEMBER(mbee_state,mbeeic)
r = level[((i>>0)&1)|((i>>2)&2)];
g = level[((i>>1)&1)|((i>>3)&2)];
b = level[((i>>2)&1)|((i>>4)&2)];
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
/* set up foreground palette (64-95) by reading the prom */
@@ -584,7 +584,7 @@ PALETTE_INIT_MEMBER(mbee_state,mbeeic)
r = level[((k>>2)&1)|((k>>4)&2)];
g = level[((k>>1)&1)|((k>>3)&2)];
b = level[((k>>0)&1)|((k>>2)&2)];
- palette_set_color(machine(), i|64, rgb_t(r, g, b));
+ palette.set_pen_color(i|64, rgb_t(r, g, b));
}
}
@@ -602,7 +602,7 @@ PALETTE_INIT_MEMBER(mbee_state,mbeepc85b)
r = level[((i>>0)&1)|((i>>2)&2)];
g = level[((i>>1)&1)|((i>>3)&2)];
b = level[((i>>2)&1)|((i>>4)&2)];
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
level[2] = 0xff;
@@ -614,7 +614,7 @@ PALETTE_INIT_MEMBER(mbee_state,mbeepc85b)
r = level[((k>>2)&1)|((k>>4)&2)];
g = level[((k>>1)&1)|((k>>3)&2)];
b = level[((k>>0)&1)|((k>>2)&2)];
- palette_set_color(machine(), i|64, rgb_t(r, g, b));
+ palette.set_pen_color(i|64, rgb_t(r, g, b));
}
}
@@ -630,7 +630,7 @@ PALETTE_INIT_MEMBER(mbee_state,mbeeppc)
r = (i & 1) ? 0xc0 : 0;
g = (i & 2) ? 0xc0 : 0;
b = (i & 4) ? 0xc0 : 0;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
/* set up 8 high intensity colours */
@@ -639,6 +639,6 @@ PALETTE_INIT_MEMBER(mbee_state,mbeeppc)
r = (i & 1) ? 0xff : 0;
g = (i & 2) ? 0xff : 0;
b = (i & 4) ? 0xff : 0;
- palette_set_color(machine(), i, rgb_t(r, g, b));
+ palette.set_pen_color(i, rgb_t(r, g, b));
}
}
diff --git a/src/mess/video/mos6566.c b/src/mess/video/mos6566.c
index 8fae5339f33..131c20f4cd9 100644
--- a/src/mess/video/mos6566.c
+++ b/src/mess/video/mos6566.c
@@ -98,7 +98,7 @@ static int UNUSED_BITS[0x40] =
};
// VICE palette
-static const rgb_t PALETTE[] =
+static const rgb_t PALETTE_MOS[] =
{
rgb_t(0x00, 0x00, 0x00),
rgb_t(0xfd, 0xfe, 0xfc),
@@ -511,7 +511,7 @@ inline void mos6566_device::draw_background()
c = 0;
break;
}
- m_bitmap.plot_box(m_graphic_x, VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE[c]);
+ m_bitmap.plot_box(m_graphic_x, VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE_MOS[c]);
}
}
@@ -523,21 +523,21 @@ inline void mos6566_device::draw_mono( UINT16 p, UINT8 c0, UINT8 c1 )
c[0] = c0;
c[1] = c1;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 7) = PALETTE[c[data & 1]];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 7) = PALETTE_MOS[c[data & 1]];
m_fore_coll_buf[p + 7] = data & 1; data >>= 1;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 6) = PALETTE[c[data & 1]];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 6) = PALETTE_MOS[c[data & 1]];
m_fore_coll_buf[p + 6] = data & 1; data >>= 1;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 5) = PALETTE[c[data & 1]];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 5) = PALETTE_MOS[c[data & 1]];
m_fore_coll_buf[p + 5] = data & 1; data >>= 1;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 4) = PALETTE[c[data & 1]];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 4) = PALETTE_MOS[c[data & 1]];
m_fore_coll_buf[p + 4] = data & 1; data >>= 1;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 3) = PALETTE[c[data & 1]];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 3) = PALETTE_MOS[c[data & 1]];
m_fore_coll_buf[p + 3] = data & 1; data >>= 1;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 2) = PALETTE[c[data & 1]];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 2) = PALETTE_MOS[c[data & 1]];
m_fore_coll_buf[p + 2] = data & 1; data >>= 1;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 1) = PALETTE[c[data & 1]];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 1) = PALETTE_MOS[c[data & 1]];
m_fore_coll_buf[p + 1] = data & 1; data >>= 1;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 0) = PALETTE[c[data]];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 0) = PALETTE_MOS[c[data]];
m_fore_coll_buf[p + 0] = data & 1;
}
@@ -551,21 +551,21 @@ inline void mos6566_device::draw_multi( UINT16 p, UINT8 c0, UINT8 c1, UINT8 c2,
c[2] = c2;
c[3] = c3;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 7) = PALETTE[c[data & 3]];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 7) = PALETTE_MOS[c[data & 3]];
m_fore_coll_buf[p + 7] = data & 2;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 6) = PALETTE[c[data & 3]];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 6) = PALETTE_MOS[c[data & 3]];
m_fore_coll_buf[p + 6] = data & 2; data >>= 2;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 5) = PALETTE[c[data & 3]];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 5) = PALETTE_MOS[c[data & 3]];
m_fore_coll_buf[p + 5] = data & 2;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 4) = PALETTE[c[data & 3]];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 4) = PALETTE_MOS[c[data & 3]];
m_fore_coll_buf[p + 4] = data & 2; data >>= 2;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 3) = PALETTE[c[data & 3]];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 3) = PALETTE_MOS[c[data & 3]];
m_fore_coll_buf[p + 3] = data & 2;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 2) = PALETTE[c[data & 3]];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 2) = PALETTE_MOS[c[data & 3]];
m_fore_coll_buf[p + 2] = data & 2; data >>= 2;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 1) = PALETTE[c[data]];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 1) = PALETTE_MOS[c[data]];
m_fore_coll_buf[p + 1] = data & 2;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 0) = PALETTE[c[data]];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 0) = PALETTE_MOS[c[data]];
m_fore_coll_buf[p + 0] = data & 2;
}
@@ -1362,24 +1362,24 @@ void mos6566_device::execute_run()
if (m_border_on_sample[0])
for (i = 0; i < 4; i++)
- m_bitmap.plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE[m_border_color_sample[i]]);
+ m_bitmap.plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE_MOS[m_border_color_sample[i]]);
if (m_border_on_sample[1])
- m_bitmap.plot_box(VIC2_X_2_EMU(4 * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE[m_border_color_sample[4]]);
+ m_bitmap.plot_box(VIC2_X_2_EMU(4 * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE_MOS[m_border_color_sample[4]]);
if (m_border_on_sample[2])
for (i = 5; i < 43; i++)
- m_bitmap.plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE[m_border_color_sample[i]]);
+ m_bitmap.plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE_MOS[m_border_color_sample[i]]);
if (m_border_on_sample[3])
- m_bitmap.plot_box(VIC2_X_2_EMU(43 * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE[m_border_color_sample[43]]);
+ m_bitmap.plot_box(VIC2_X_2_EMU(43 * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE_MOS[m_border_color_sample[43]]);
if (m_border_on_sample[4])
{
for (i = 44; i < 48; i++)
- m_bitmap.plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE[m_border_color_sample[i]]);
+ m_bitmap.plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE_MOS[m_border_color_sample[i]]);
for (i = 48; i < 53; i++)
- m_bitmap.plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE[m_border_color_sample[47]]);
+ m_bitmap.plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE_MOS[m_border_color_sample[47]]);
}
}
@@ -1931,24 +1931,24 @@ void mos6569_device::execute_run()
if (m_border_on_sample[0])
for (i = 0; i < 4; i++)
- m_bitmap.plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE[m_border_color_sample[i]]);
+ m_bitmap.plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE_MOS[m_border_color_sample[i]]);
if (m_border_on_sample[1])
- m_bitmap.plot_box(VIC2_X_2_EMU(4 * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE[m_border_color_sample[4]]);
+ m_bitmap.plot_box(VIC2_X_2_EMU(4 * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE_MOS[m_border_color_sample[4]]);
if (m_border_on_sample[2])
for (i = 5; i < 43; i++)
- m_bitmap.plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE[m_border_color_sample[i]]);
+ m_bitmap.plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE_MOS[m_border_color_sample[i]]);
if (m_border_on_sample[3])
- m_bitmap.plot_box(VIC2_X_2_EMU(43 * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE[m_border_color_sample[43]]);
+ m_bitmap.plot_box(VIC2_X_2_EMU(43 * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE_MOS[m_border_color_sample[43]]);
if (m_border_on_sample[4])
{
for (i = 44; i < 48; i++)
- m_bitmap.plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE[m_border_color_sample[i]]);
+ m_bitmap.plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE_MOS[m_border_color_sample[i]]);
for (i = 48; i < 51; i++)
- m_bitmap.plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE[m_border_color_sample[47]]);
+ m_bitmap.plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE_MOS[m_border_color_sample[47]]);
}
}
@@ -2079,57 +2079,57 @@ void mos6566_device::draw_graphics()
draw_mono(p, tmp_col, m_color_data & 0x0f);
break;
case 5:
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 7) = PALETTE[0];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 7) = PALETTE_MOS[0];
m_fore_coll_buf[p + 7] = 0;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 6) = PALETTE[0];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 6) = PALETTE_MOS[0];
m_fore_coll_buf[p + 6] = 0;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 5) = PALETTE[0];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 5) = PALETTE_MOS[0];
m_fore_coll_buf[p + 5] = 0;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 4) = PALETTE[0];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 4) = PALETTE_MOS[0];
m_fore_coll_buf[p + 4] = 0;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 3) = PALETTE[0];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 3) = PALETTE_MOS[0];
m_fore_coll_buf[p + 3] = 0;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 2) = PALETTE[0];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 2) = PALETTE_MOS[0];
m_fore_coll_buf[p + 2] = 0;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 1) = PALETTE[0];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 1) = PALETTE_MOS[0];
m_fore_coll_buf[p + 1] = 0;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 0) = PALETTE[0];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 0) = PALETTE_MOS[0];
m_fore_coll_buf[p + 0] = 0;
break;
case 6:
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 7) = PALETTE[0];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 7) = PALETTE_MOS[0];
m_fore_coll_buf[p + 7] = 0;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 6) = PALETTE[0];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 6) = PALETTE_MOS[0];
m_fore_coll_buf[p + 6] = 0;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 5) = PALETTE[0];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 5) = PALETTE_MOS[0];
m_fore_coll_buf[p + 5] = 0;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 4) = PALETTE[0];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 4) = PALETTE_MOS[0];
m_fore_coll_buf[p + 4] = 0;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 3) = PALETTE[0];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 3) = PALETTE_MOS[0];
m_fore_coll_buf[p + 3] = 0;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 2) = PALETTE[0];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 2) = PALETTE_MOS[0];
m_fore_coll_buf[p + 2] = 0;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 1) = PALETTE[0];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 1) = PALETTE_MOS[0];
m_fore_coll_buf[p + 1] = 0;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 0) = PALETTE[0];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 0) = PALETTE_MOS[0];
m_fore_coll_buf[p + 0] = 0;
break;
case 7:
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 7) = PALETTE[0];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 7) = PALETTE_MOS[0];
m_fore_coll_buf[p + 7] = 0;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 6) = PALETTE[0];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 6) = PALETTE_MOS[0];
m_fore_coll_buf[p + 6] = 0;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 5) = PALETTE[0];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 5) = PALETTE_MOS[0];
m_fore_coll_buf[p + 5] = 0;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 4) = PALETTE[0];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 4) = PALETTE_MOS[0];
m_fore_coll_buf[p + 4] = 0;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 3) = PALETTE[0];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 3) = PALETTE_MOS[0];
m_fore_coll_buf[p + 3] = 0;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 2) = PALETTE[0];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 2) = PALETTE_MOS[0];
m_fore_coll_buf[p + 2] = 0;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 1) = PALETTE[0];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 1) = PALETTE_MOS[0];
m_fore_coll_buf[p + 1] = 0;
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 0) = PALETTE[0];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 0) = PALETTE_MOS[0];
m_fore_coll_buf[p + 0] = 0;
break;
}
@@ -2204,12 +2204,12 @@ void mos6566_device::draw_sprites()
if (SPRITE_PRIORITY(snum))
{
if (m_fore_coll_buf[p + i] == 0)
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE[col];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE_MOS[col];
m_spr_coll_buf[p + i] = sbit;
}
else
{
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE[col];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE_MOS[col];
m_spr_coll_buf[p + i] = sbit;
}
}
@@ -2252,12 +2252,12 @@ void mos6566_device::draw_sprites()
if (SPRITE_PRIORITY(snum))
{
if (m_fore_coll_buf[p + i] == 0)
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE[col];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE_MOS[col];
m_spr_coll_buf[p + i] = sbit;
}
else
{
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE[col];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE_MOS[col];
m_spr_coll_buf[p + i] = sbit;
}
}
@@ -2283,12 +2283,12 @@ void mos6566_device::draw_sprites()
if (SPRITE_PRIORITY(snum))
{
if (m_fore_coll_buf[p + i] == 0)
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE[color];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE_MOS[color];
m_spr_coll_buf[p + i] = sbit;
}
else
{
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE[color];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE_MOS[color];
m_spr_coll_buf[p + i] = sbit;
}
}
@@ -2309,12 +2309,12 @@ void mos6566_device::draw_sprites()
if (SPRITE_PRIORITY(snum))
{
if (m_fore_coll_buf[p + i] == 0)
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE[color];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE_MOS[color];
m_spr_coll_buf[p + i] = sbit;
}
else
{
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE[color];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE_MOS[color];
m_spr_coll_buf[p + i] = sbit;
}
}
@@ -2364,12 +2364,12 @@ void mos6566_device::draw_sprites()
if (SPRITE_PRIORITY(snum))
{
if (m_fore_coll_buf[p + i] == 0)
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE[col];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE_MOS[col];
m_spr_coll_buf[p + i] = sbit;
}
else
{
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE[col];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE_MOS[col];
m_spr_coll_buf[p + i] = sbit;
}
}
@@ -2394,12 +2394,12 @@ void mos6566_device::draw_sprites()
if (SPRITE_PRIORITY(snum))
{
if (m_fore_coll_buf[p + i] == 0)
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE[color];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE_MOS[color];
m_spr_coll_buf[p + i] = sbit;
}
else
{
- m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE[color];
+ m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE_MOS[color];
m_spr_coll_buf[p + i] = sbit;
}
}
@@ -2436,7 +2436,7 @@ void mos6566_device::draw_sprites()
UINT32 mos6566_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(PALETTE[0], cliprect);
+ bitmap.fill(PALETTE_MOS[0], cliprect);
if (m_on)
copybitmap(bitmap, m_bitmap, 0, 0, 0, 0, cliprect);
diff --git a/src/mess/video/mz700.c b/src/mess/video/mz700.c
index 17f4aa466f5..a006a36aac1 100644
--- a/src/mess/video/mz700.c
+++ b/src/mess/video/mz700.c
@@ -28,19 +28,17 @@
} while (0)
-void mz_state::palette_init()
+PALETTE_INIT_MEMBER(mz_state, mz)
{
int i;
- machine().colortable = colortable_alloc(machine(), 8);
-
for (i = 0; i < 8; i++)
- colortable_palette_set_color(machine().colortable, i, rgb_t((i & 2) ? 0xff : 0x00, (i & 4) ? 0xff : 0x00, (i & 1) ? 0xff : 0x00));
+ m_palette->set_indirect_color(i, rgb_t((i & 2) ? 0xff : 0x00, (i & 4) ? 0xff : 0x00, (i & 1) ? 0xff : 0x00));
for (i = 0; i < 256; i++)
{
- colortable_entry_set_value(machine().colortable, i*2, i & 7);
- colortable_entry_set_value(machine().colortable, i*2+1, (i >> 4) & 7);
+ m_palette->set_pen_indirect(i*2, i & 7);
+ m_palette->set_pen_indirect(i*2+1, (i >> 4) & 7);
}
}
@@ -50,7 +48,7 @@ UINT32 mz_state::screen_update_mz700(screen_device &screen, bitmap_ind16 &bitmap
UINT8 *videoram = m_videoram;
int offs;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
for(offs = 0; offs < 40*25; offs++)
{
@@ -62,7 +60,7 @@ UINT32 mz_state::screen_update_mz700(screen_device &screen, bitmap_ind16 &bitmap
color = m_colorram[offs];
code = videoram[offs] | (color & 0x80) << 1;
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, code, color, 0, 0, sx, sy);
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, code, color, 0, 0, sx, sy);
}
return 0;
@@ -82,7 +80,7 @@ UINT32 mz_state::screen_update_mz800(screen_device &screen, bitmap_ind16 &bitmap
{
UINT8 *videoram = m_videoram;
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(m_palette->black_pen(), cliprect);
if (m_mz700_mode)
return screen_update_mz700(screen, bitmap, cliprect);
diff --git a/src/mess/video/nascom1.c b/src/mess/video/nascom1.c
index 1a2356d3654..31099f5e6ed 100644
--- a/src/mess/video/nascom1.c
+++ b/src/mess/video/nascom1.c
@@ -17,7 +17,7 @@ UINT32 nascom1_state::screen_update_nascom1(screen_device &screen, bitmap_ind16
for (sx = 0; sx < 48; sx++)
{
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, videoram[0x03ca + sx],
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, videoram[0x03ca + sx],
1, 0, 0, sx * 8, 0);
}
@@ -26,7 +26,7 @@ UINT32 nascom1_state::screen_update_nascom1(screen_device &screen, bitmap_ind16
for (sx = 0; sx < 48; sx++)
{
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, videoram[0x000a + (sy * 64) + sx],
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, videoram[0x000a + (sy * 64) + sx],
1, 0, 0, sx * 8, (sy + 1) * 16);
}
}
@@ -41,7 +41,7 @@ UINT32 nascom1_state::screen_update_nascom2(screen_device &screen, bitmap_ind16
for (sx = 0; sx < 48; sx++)
{
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, videoram[0x03ca + sx],
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, videoram[0x03ca + sx],
1, 0, 0, sx * 8, 0);
}
@@ -50,7 +50,7 @@ UINT32 nascom1_state::screen_update_nascom2(screen_device &screen, bitmap_ind16
for (sx = 0; sx < 48; sx++)
{
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, videoram[0x000a + (sy * 64) + sx],
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, videoram[0x000a + (sy * 64) + sx],
1, 0, 0, sx * 8, (sy + 1) * 14);
}
}
diff --git a/src/mess/video/nc.c b/src/mess/video/nc.c
index 15125b7e31c..644af80c854 100644
--- a/src/mess/video/nc.c
+++ b/src/mess/video/nc.c
@@ -37,9 +37,9 @@ static const rgb_t nc_palette[NC_NUM_COLOURS] =
/* Initialise the palette */
-void nc_state::palette_init()
+PALETTE_INIT_MEMBER(nc_state, nc)
{
- palette_set_colors(machine(), 0, nc_palette, ARRAY_LENGTH(nc_palette));
+ palette.set_pen_colors(0, nc_palette, ARRAY_LENGTH(nc_palette));
}
diff --git a/src/mess/video/nes.c b/src/mess/video/nes.c
index 0bc0414aa97..a9a855bf774 100644
--- a/src/mess/video/nes.c
+++ b/src/mess/video/nes.c
@@ -19,9 +19,9 @@ void nes_state::video_start()
m_last_frame_flip = 0;
}
-void nes_state::palette_init()
+PALETTE_INIT_MEMBER(nes_state, nes)
{
- m_ppu->init_palette(machine(), 0);
+ m_ppu->init_palette(palette, 0);
}
diff --git a/src/mess/video/orion.c b/src/mess/video/orion.c
index b9ba0e475c9..2b061ee0df8 100644
--- a/src/mess/video/orion.c
+++ b/src/mess/video/orion.c
@@ -108,5 +108,5 @@ static const rgb_t orion128_palette[18] = {
PALETTE_INIT_MEMBER(orion_state,orion128 )
{
- palette_set_colors(machine(), 0, orion128_palette, ARRAY_LENGTH(orion128_palette));
+ palette.set_pen_colors(0, orion128_palette, ARRAY_LENGTH(orion128_palette));
}
diff --git a/src/mess/video/osi.c b/src/mess/video/osi.c
index b328de8e207..f8a494b11c1 100644
--- a/src/mess/video/osi.c
+++ b/src/mess/video/osi.c
@@ -5,18 +5,18 @@
PALETTE_INIT_MEMBER(sb2m600_state, osi630)
{
/* black and white */
- palette_set_color_rgb(machine(), 0, 0x00, 0x00, 0x00); // black
- palette_set_color_rgb(machine(), 1, 0xff, 0xff, 0xff); // white
+ palette.set_pen_color(0, 0x00, 0x00, 0x00); // black
+ palette.set_pen_color(1, 0xff, 0xff, 0xff); // white
/* color enabled */
- palette_set_color_rgb(machine(), 2, 0xff, 0xff, 0x00); // yellow
- palette_set_color_rgb(machine(), 3, 0xff, 0x00, 0x00); // red
- palette_set_color_rgb(machine(), 4, 0x00, 0xff, 0x00); // green
- palette_set_color_rgb(machine(), 5, 0x00, 0x80, 0x00); // olive green
- palette_set_color_rgb(machine(), 6, 0x00, 0x00, 0xff); // blue
- palette_set_color_rgb(machine(), 7, 0xff, 0x00, 0xff); // purple
- palette_set_color_rgb(machine(), 8, 0x00, 0x00, 0x80); // sky blue
- palette_set_color_rgb(machine(), 9, 0x00, 0x00, 0x00); // black
+ palette.set_pen_color(2, 0xff, 0xff, 0x00); // yellow
+ palette.set_pen_color(3, 0xff, 0x00, 0x00); // red
+ palette.set_pen_color(4, 0x00, 0xff, 0x00); // green
+ palette.set_pen_color(5, 0x00, 0x80, 0x00); // olive green
+ palette.set_pen_color(6, 0x00, 0x00, 0xff); // blue
+ palette.set_pen_color(7, 0xff, 0x00, 0xff); // purple
+ palette.set_pen_color(8, 0x00, 0x00, 0x80); // sky blue
+ palette.set_pen_color(9, 0x00, 0x00, 0x00); // black
}
/* Video Start */
@@ -150,8 +150,7 @@ MACHINE_CONFIG_FRAGMENT( osi600_video )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0, 32*8-1)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
MACHINE_CONFIG_FRAGMENT( uk101_video )
@@ -161,8 +160,7 @@ MACHINE_CONFIG_FRAGMENT( uk101_video )
MCFG_SCREEN_SIZE(64*8, 16*16)
MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 16*16-1)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(driver_device, black_and_white)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MACHINE_CONFIG_END
MACHINE_CONFIG_FRAGMENT( osi630_video )
@@ -172,6 +170,6 @@ MACHINE_CONFIG_FRAGMENT( osi630_video )
MCFG_SCREEN_SIZE(64*8, 16*16)
MCFG_SCREEN_VISIBLE_AREA(0, 64*8-1, 0, 16*16-1)
- MCFG_PALETTE_LENGTH(8+2)
- MCFG_PALETTE_INIT_OVERRIDE(sb2m600_state, osi630)
+ MCFG_PALETTE_ADD("palette", 8+2)
+ MCFG_PALETTE_INIT_OWNER(sb2m600_state, osi630)
MACHINE_CONFIG_END
diff --git a/src/mess/video/p2000m.c b/src/mess/video/p2000m.c
index 8b8ead9aab6..0c0b6030bc2 100644
--- a/src/mess/video/p2000m.c
+++ b/src/mess/video/p2000m.c
@@ -41,7 +41,7 @@ UINT32 p2000t_state::screen_update_p2000m(screen_device &screen, bitmap_ind16 &b
if (code < 32) code = 32;
}
- m_gfxdecode->gfx(0)->zoom_opaque(bitmap,cliprect, code,
+ m_gfxdecode->gfx(0)->zoom_opaque(m_palette,bitmap,cliprect, code,
videoram[offs + 2048] & 0x08 ? 0 : 1, 0, 0, sx, sy, 0x20000, 0x20000);
if (videoram[offs] & 0x80)
diff --git a/src/mess/video/pc1251.c b/src/mess/video/pc1251.c
index 1bf93ac97bd..e8dce7f3b85 100644
--- a/src/mess/video/pc1251.c
+++ b/src/mess/video/pc1251.c
@@ -125,14 +125,14 @@ UINT32 pc1251_state::screen_update_pc1251(screen_device &screen, bitmap_ind16 &b
for (x=RIGHT,y=DOWN, i=0; i<60; x+=3)
{
for (j=0; j<5; j++, i++, x+=3)
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, m_reg[i],
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, m_reg[i],
PC1251_CONTRAST,0,0,
x,y);
}
for (i=0x7b; i>=0x40; x+=3)
{
for (j=0; j<5; j++, i--, x+=3)
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, m_reg[i],
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, m_reg[i],
PC1251_CONTRAST,0,0,
x,y);
}
diff --git a/src/mess/video/pc1401.c b/src/mess/video/pc1401.c
index 4a8f088f1e4..24f828bd6f7 100644
--- a/src/mess/video/pc1401.c
+++ b/src/mess/video/pc1401.c
@@ -148,12 +148,12 @@ UINT32 pc1401_state::screen_update_pc1401(screen_device &screen, bitmap_ind16 &b
for (x=RIGHT,y=DOWN,i=0; i<0x28;x+=2)
{
for (j=0; j<5;j++,i++,x+=2)
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, m_reg[i],CONTRAST,0,0,x,y);
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, m_reg[i],CONTRAST,0,0,x,y);
}
for (i=0x67; i>=0x40;x+=2)
{
for (j=0; j<5;j++,i--,x+=2)
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, m_reg[i],CONTRAST,0,0,x,y);
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, m_reg[i],CONTRAST,0,0,x,y);
}
}
diff --git a/src/mess/video/pc1403.c b/src/mess/video/pc1403.c
index 999f6a76b17..a9eea82370b 100644
--- a/src/mess/video/pc1403.c
+++ b/src/mess/video/pc1403.c
@@ -159,37 +159,37 @@ UINT32 pc1403_state::screen_update_pc1403(screen_device &screen, bitmap_ind16 &b
{
for (x=m_RIGHT, y=m_DOWN, i=0; i<6*5; x+=2) {
for (j=0; j<5; j++, i++, x+=2)
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, m_reg[i],CONTRAST,0,0,
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, m_reg[i],CONTRAST,0,0,
x,y);
}
for (i=9*5; i<12*5; x+=2)
{
for (j=0; j<5; j++, i++, x+=2)
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, m_reg[i],CONTRAST,0,0,
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, m_reg[i],CONTRAST,0,0,
x,y);
}
for (i=6*5; i<9*5; x+=2)
{
for (j=0; j<5; j++, i++, x+=2)
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, m_reg[i],CONTRAST,0,0,
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, m_reg[i],CONTRAST,0,0,
x,y);
}
for (i=0x7b-3*5; i>0x7b-6*5; x+=2)
{
for (j=0; j<5; j++, i--, x+=2)
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, m_reg[i],CONTRAST,0,0,
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, m_reg[i],CONTRAST,0,0,
x,y);
}
for (i=0x7b; i>0x7b-3*5; x+=2)
{
for (j=0; j<5; j++, i--, x+=2)
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, m_reg[i],CONTRAST,0,0,
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, m_reg[i],CONTRAST,0,0,
x,y);
}
for (i=0x7b-6*5; i>0x7b-12*5; x+=2)
{
for (j=0; j<5; j++, i--, x+=2)
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, m_reg[i],CONTRAST,0,0,
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, m_reg[i],CONTRAST,0,0,
x,y);
}
}
diff --git a/src/mess/video/pc1512.c b/src/mess/video/pc1512.c
index 168e25dd2ee..40fd02b6f81 100644
--- a/src/mess/video/pc1512.c
+++ b/src/mess/video/pc1512.c
@@ -11,7 +11,7 @@
#define LOG 0
-static const rgb_t PALETTE[] =
+static const rgb_t PALETTE_1512[] =
{
rgb_t::black,
rgb_t(0x00, 0x00, 0xaa),
@@ -434,7 +434,7 @@ void pc1512_state::draw_alpha(bitmap_rgb32 &bitmap, const rectangle &cliprect, U
{
int color = BIT(data, 7) ? fg : bg;
- *p = PALETTE[color]; p++;
+ *p = PALETTE_1512[color]; p++;
data <<= 1;
}
@@ -478,7 +478,7 @@ void pc1512_state::draw_graphics_1(bitmap_rgb32 &bitmap, const rectangle &clipre
for (int x = 0; x < 8; x++)
{
- *p = PALETTE[get_color((BIT(b, 15) << 1) | BIT(b, 14))]; p++;
+ *p = PALETTE_1512[get_color((BIT(b, 15) << 1) | BIT(b, 14))]; p++;
b <<= 2;
}
}
@@ -501,7 +501,7 @@ void pc1512_state::draw_graphics_2(bitmap_rgb32 &bitmap, const rectangle &clipre
for (int x = 0; x < 16; x++)
{
- *p = PALETTE[(BIT(i, 15) << 3) | (BIT(r, 15) << 2) | (BIT(g, 15) << 1) | BIT(b, 15)]; p++;
+ *p = PALETTE_1512[(BIT(i, 15) << 3) | (BIT(r, 15) << 2) | (BIT(g, 15) << 1) | BIT(b, 15)]; p++;
i <<= 1; r <<= 1; g <<= 1; b <<= 1;
}
}
@@ -586,11 +586,11 @@ UINT32 pc1512_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
case ALPHA_40:
case ALPHA_80:
case GRAPHICS_1:
- bitmap.fill(PALETTE[m_vdu_color & 0x0f], cliprect);
+ bitmap.fill(PALETTE_1512[m_vdu_color & 0x0f], cliprect);
break;
case GRAPHICS_2:
- bitmap.fill(PALETTE[m_vdu_border & 0x0f], cliprect);
+ bitmap.fill(PALETTE_1512[m_vdu_border & 0x0f], cliprect);
break;
}
diff --git a/src/mess/video/pc8401a.c b/src/mess/video/pc8401a.c
index f5166eb1043..c4c4e71e9a8 100644
--- a/src/mess/video/pc8401a.c
+++ b/src/mess/video/pc8401a.c
@@ -5,8 +5,8 @@
PALETTE_INIT_MEMBER(pc8401a_state,pc8401a)
{
- palette_set_color(machine(), 0, rgb_t(39, 108, 51));
- palette_set_color(machine(), 1, rgb_t(16, 37, 84));
+ palette.set_pen_color(0, rgb_t(39, 108, 51));
+ palette.set_pen_color(1, rgb_t(16, 37, 84));
}
void pc8401a_state::video_start()
@@ -76,8 +76,8 @@ static MC6845_INTERFACE( pc8441a_mc6845_interface )
MACHINE_CONFIG_FRAGMENT( pc8401a_video )
// MCFG_DEFAULT_LAYOUT(layout_pc8401a)
- MCFG_PALETTE_LENGTH(2)
- MCFG_PALETTE_INIT_OVERRIDE(pc8401a_state,pc8401a)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(pc8401a_state,pc8401a)
/* LCD */
MCFG_SCREEN_ADD(SCREEN_TAG, LCD)
@@ -92,8 +92,8 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_FRAGMENT( pc8500_video )
MCFG_DEFAULT_LAYOUT(layout_pc8500)
- MCFG_PALETTE_LENGTH(2+8)
- MCFG_PALETTE_INIT_OVERRIDE(pc8401a_state,pc8401a)
+ MCFG_PALETTE_ADD("palette", 2+8)
+ MCFG_PALETTE_INIT_OWNER(pc8401a_state,pc8401a)
/* LCD */
MCFG_SCREEN_ADD(SCREEN_TAG, LCD)
diff --git a/src/mess/video/pc_aga.c b/src/mess/video/pc_aga.c
index 7ca4d933690..9ade894ca77 100644
--- a/src/mess/video/pc_aga.c
+++ b/src/mess/video/pc_aga.c
@@ -72,8 +72,8 @@ MACHINE_CONFIG_FRAGMENT( pcvideo_aga )
MCFG_SCREEN_RAW_PARAMS( XTAL_14_31818MHz,912,0,640,262,0,200 )
MCFG_SCREEN_UPDATE_DEVICE( AGA_MC6845_NAME, mc6845_device, screen_update )
- MCFG_PALETTE_LENGTH( CGA_PALETTE_SETS * 16 )
- MCFG_PALETTE_INIT( pc_aga )
+ MCFG_PALETTE_ADD( "palette", CGA_PALETTE_SETS * 16 )
+ MCFG_PALETTE_INIT_LEGACY( pc_aga )
MCFG_MC6845_ADD( AGA_MC6845_NAME, MC6845, AGA_SCREEN_NAME, XTAL_14_31818MHz/8, mc6845_aga_intf )
@@ -92,7 +92,7 @@ PALETTE_INIT( pc_aga )
{
int i;
for(i = 0; i < CGA_PALETTE_SETS * 16; i++)
- palette_set_color_rgb(machine, i, cga_palette[i][0], cga_palette[i][1], cga_palette[i][2]);
+ palette.set_pen_color(i, cga_palette[i][0], cga_palette[i][1], cga_palette[i][2]);
}
diff --git a/src/mess/video/pc_t1t.c b/src/mess/video/pc_t1t.c
index ad8cd12b47d..40f09f42cdb 100644
--- a/src/mess/video/pc_t1t.c
+++ b/src/mess/video/pc_t1t.c
@@ -106,8 +106,8 @@ MACHINE_CONFIG_FRAGMENT( pcvideo_t1000 )
MCFG_SCREEN_RAW_PARAMS(XTAL_14_31818MHz,912,0,640,262,0,200)
MCFG_SCREEN_UPDATE_DEVICE( T1000_MC6845_NAME, mc6845_device, screen_update )
- MCFG_PALETTE_LENGTH( 32 )
- MCFG_PALETTE_INIT_OVERRIDE(pc_t1t_device, pcjr)
+ MCFG_PALETTE_ADD( "palette", 32 )
+ MCFG_PALETTE_INIT_OWNER(pc_t1t_device, pcjr)
MCFG_MC6845_ADD(T1000_MC6845_NAME, MC6845, T1000_SCREEN_NAME, XTAL_14_31818MHz/8, mc6845_t1000_intf)
MACHINE_CONFIG_END
@@ -139,8 +139,8 @@ MACHINE_CONFIG_FRAGMENT( pcvideo_pcjr )
MCFG_SCREEN_RAW_PARAMS(XTAL_14_31818MHz,912,0,640,262,0,200)
MCFG_SCREEN_UPDATE_DEVICE( T1000_MC6845_NAME, mc6845_device, screen_update )
- MCFG_PALETTE_LENGTH( 32 )
- MCFG_PALETTE_INIT_OVERRIDE(pc_t1t_device, pcjr)
+ MCFG_PALETTE_ADD( "palette", 32 )
+ MCFG_PALETTE_INIT_OWNER(pc_t1t_device, pcjr)
MCFG_MC6845_ADD(T1000_MC6845_NAME, MC6845, T1000_SCREEN_NAME, XTAL_14_31818MHz/16, mc6845_pcjr_intf)
MACHINE_CONFIG_END
@@ -171,11 +171,11 @@ PALETTE_INIT_MEMBER( pc_t1t_device, pcjr )
/* colors */
for(i = 0; i < 16; i++)
- palette_set_color_rgb(machine(), i, tga_palette[i][0], tga_palette[i][1], tga_palette[i][2]);
+ palette.set_pen_color(i, tga_palette[i][0], tga_palette[i][1], tga_palette[i][2]);
/* b/w mode shades */
for(i = 0; i < 16; i++)
- palette_set_color_rgb( machine(), 16+i, ( i << 4 ) | i, ( i << 4 ) | i, ( i << 4 ) | i );
+ palette.set_pen_color(16+i, ( i << 4 ) | i, ( i << 4 ) | i, ( i << 4 ) | i );
}
diff --git a/src/mess/video/pcw.c b/src/mess/video/pcw.c
index 412d0fc1c19..0bce5034d9e 100644
--- a/src/mess/video/pcw.c
+++ b/src/mess/video/pcw.c
@@ -44,9 +44,9 @@ static const rgb_t pcw_palette[PCW_NUM_COLOURS] =
/* Initialise the palette */
-void pcw_state::palette_init()
+PALETTE_INIT_MEMBER(pcw_state, pcw)
{
- palette_set_colors(machine(), 0, pcw_palette, ARRAY_LENGTH(pcw_palette));
+ palette.set_pen_colors(0, pcw_palette, ARRAY_LENGTH(pcw_palette));
}
/***************************************************************************
diff --git a/src/mess/video/pcw16.c b/src/mess/video/pcw16.c
index 9dec0ed0e30..ddd3fd6a608 100644
--- a/src/mess/video/pcw16.c
+++ b/src/mess/video/pcw16.c
@@ -56,9 +56,9 @@ inline void pcw16_state::pcw16_plot_pixel(bitmap_ind16 &bitmap, int x, int y, UI
}
/* Initialise the palette */
-void pcw16_state::palette_init()
+PALETTE_INIT_MEMBER(pcw16_state, pcw16)
{
- palette_set_colors(machine(), 0, pcw16_palette, ARRAY_LENGTH(pcw16_palette));
+ palette.set_pen_colors(0, pcw16_palette, ARRAY_LENGTH(pcw16_palette));
}
void pcw16_state::video_start()
diff --git a/src/mess/video/pdp1.c b/src/mess/video/pdp1.c
index 6d48c4766a0..4215d6325b2 100644
--- a/src/mess/video/pdp1.c
+++ b/src/mess/video/pdp1.c
@@ -220,7 +220,7 @@ void pdp1_state::pdp1_draw_multipleswitch(bitmap_ind16 &bitmap, int x, int y, in
/* write a single char on screen */
void pdp1_state::pdp1_draw_char(bitmap_ind16 &bitmap, char character, int x, int y, int color)
{
- m_gfxdecode->gfx(0)->transpen(bitmap,bitmap.cliprect(), character-32, color, 0, 0,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,bitmap.cliprect(), character-32, color, 0, 0,
x+1, y, 0);
}
@@ -361,7 +361,7 @@ void pdp1_state::pdp1_typewriter_linefeed()
for (y=0; y<typewriter_window_height-typewriter_scroll_step; y++)
{
extract_scanline8(m_typewriter_bitmap, 0, y+typewriter_scroll_step, typewriter_window_width, buf);
- draw_scanline8(m_typewriter_bitmap, 0, y, typewriter_window_width, buf, machine().pens);
+ draw_scanline8(m_typewriter_bitmap, 0, y, typewriter_window_width, buf, m_palette->pens());
}
const rectangle typewriter_scroll_clear_window(0, typewriter_window_width-1, typewriter_window_height-typewriter_scroll_step, typewriter_window_height-1);
diff --git a/src/mess/video/pk8020.c b/src/mess/video/pk8020.c
index f60b907333e..425524a2d5f 100644
--- a/src/mess/video/pk8020.c
+++ b/src/mess/video/pk8020.c
@@ -48,10 +48,10 @@ UINT32 pk8020_state::screen_update_pk8020(screen_device &screen, bitmap_ind16 &b
return 0;
}
-void pk8020_state::palette_init()
+PALETTE_INIT_MEMBER(pk8020_state, pk8020)
{
int i;
for(i=0;i<16;i++) {
- palette_set_color( machine(), i, rgb_t(i*0x10,i*0x10,i*0x10) );
+ m_palette->set_pen_color( i, rgb_t(i*0x10,i*0x10,i*0x10) );
}
}
diff --git a/src/mess/video/pmd85.c b/src/mess/video/pmd85.c
index b83de9201fa..b345cc3a552 100644
--- a/src/mess/video/pmd85.c
+++ b/src/mess/video/pmd85.c
@@ -18,12 +18,12 @@ const unsigned char pmd85_palette[3*3] =
0xff, 0xff, 0xff
};
-void pmd85_state::palette_init()
+PALETTE_INIT_MEMBER(pmd85_state, pmd85)
{
int i;
for ( i = 0; i < sizeof(pmd85_palette) / 3; i++ ) {
- palette_set_color_rgb(machine(), i, pmd85_palette[i*3], pmd85_palette[i*3+1], pmd85_palette[i*3+2]);
+ m_palette->set_pen_color(i, pmd85_palette[i*3], pmd85_palette[i*3+1], pmd85_palette[i*3+2]);
}
}
diff --git a/src/mess/video/pocketc.c b/src/mess/video/pocketc.c
index 539bacc5d8d..ab7632a09f0 100644
--- a/src/mess/video/pocketc.c
+++ b/src/mess/video/pocketc.c
@@ -33,18 +33,16 @@ PALETTE_INIT( pocketc )
{
UINT8 i=0, r, b, g, color_count = 6;
- machine.colortable = colortable_alloc(machine, color_count);
-
while (color_count--)
{
r = pocketc_palette[i++]; g = pocketc_palette[i++]; b = pocketc_palette[i++];
- colortable_palette_set_color(machine.colortable, 5 - color_count, rgb_t(r, g, b));
+ palette.set_indirect_color(5 - color_count, rgb_t(r, g, b));
}
for( i = 0; i < 8; i++ )
{
- colortable_entry_set_value(machine.colortable, i*2, pocketc_colortable[i][0]);
- colortable_entry_set_value(machine.colortable, i*2+1, pocketc_colortable[i][1]);
+ palette.set_indirect_color(i*2, pocketc_colortable[i][0]);
+ palette.set_indirect_color(i*2+1, pocketc_colortable[i][1]);
}
}
diff --git a/src/mess/video/poisk1.c b/src/mess/video/poisk1.c
index f7c6b5bd6dc..30d36d8d8c0 100644
--- a/src/mess/video/poisk1.c
+++ b/src/mess/video/poisk1.c
@@ -269,7 +269,7 @@ POISK1_UPDATE_ROW( p1_state::poisk1_gfx_1bpp_update_row )
}
/* Initialise the cga palette */
-void p1_state::palette_init()
+PALETTE_INIT_MEMBER(p1_state, p1)
{
int i;
@@ -277,7 +277,7 @@ void p1_state::palette_init()
for ( i = 0; i < CGA_PALETTE_SETS * 16; i++ )
{
- palette_set_color_rgb( machine(), i, cga_palette[i][0], cga_palette[i][1], cga_palette[i][2] );
+ palette.set_pen_color(i, cga_palette[i][0], cga_palette[i][1], cga_palette[i][2] );
}
}
diff --git a/src/mess/video/pp01.c b/src/mess/video/pp01.c
index 892f51a9aee..c2d0c85e3b8 100644
--- a/src/mess/video/pp01.c
+++ b/src/mess/video/pp01.c
@@ -48,7 +48,7 @@ static const rgb_t pp01_palette[8] = {
rgb_t(0x80, 0x80, 0x80), // 7
};
-void pp01_state::palette_init()
+PALETTE_INIT_MEMBER(pp01_state, pp01)
{
- palette_set_colors(machine(), 0, pp01_palette, ARRAY_LENGTH(pp01_palette));
+ palette.set_pen_colors(0, pp01_palette, ARRAY_LENGTH(pp01_palette));
}
diff --git a/src/mess/video/radio86.c b/src/mess/video/radio86.c
index 5e448f97a5c..05542aa828a 100644
--- a/src/mess/video/radio86.c
+++ b/src/mess/video/radio86.c
@@ -104,7 +104,7 @@ static const rgb_t radio86_palette[3] = {
PALETTE_INIT_MEMBER(radio86_state,radio86)
{
- palette_set_colors(machine(), 0, radio86_palette, ARRAY_LENGTH(radio86_palette));
+ palette.set_pen_colors(0, radio86_palette, ARRAY_LENGTH(radio86_palette));
}
void radio86_state::video_start()
diff --git a/src/mess/video/rmnimbus.c b/src/mess/video/rmnimbus.c
index 021b89c8d62..7d5cc1b6fbd 100644
--- a/src/mess/video/rmnimbus.c
+++ b/src/mess/video/rmnimbus.c
@@ -562,7 +562,7 @@ void rmnimbus_state::change_palette(UINT8 bank, UINT16 colours, UINT8 regno)
for(colourno=first; colourno<(first+colourmax); colourno++)
{
paletteidx=(colours & mask) >> shifts;
- palette_set_color_rgb(machine(), colourno, nimbus_palette[paletteidx][RED], nimbus_palette[paletteidx][GREEN], nimbus_palette[paletteidx][BLUE]);
+ m_palette->set_pen_color(colourno, nimbus_palette[paletteidx][RED], nimbus_palette[paletteidx][GREEN], nimbus_palette[paletteidx][BLUE]);
if(DEBUG_SET(DEBUG_TEXT))
logerror("set colourno[%02X](r,g,b)=(%02X,%02X,%02X), paletteidx=%02X\n",colourno, nimbus_palette[paletteidx][RED], nimbus_palette[paletteidx][GREEN], nimbus_palette[paletteidx][BLUE],paletteidx);
diff --git a/src/mess/video/s3virge.c b/src/mess/video/s3virge.c
index a3fcc06f920..6ecb2d01749 100644
--- a/src/mess/video/s3virge.c
+++ b/src/mess/video/s3virge.c
@@ -29,7 +29,7 @@ void s3virge_vga_device::device_start()
int x;
int i;
for (i = 0; i < 0x100; i++)
- palette_set_color_rgb(machine(), i, 0, 0, 0);
+ m_palette->set_pen_color(i, 0, 0, 0);
// Avoid an infinite loop when displaying. 0 is not possible anyway.
vga.crtc.maximum_scan_line = 1;
diff --git a/src/mess/video/special.c b/src/mess/video/special.c
index 873f8bf40a2..80004c4111a 100644
--- a/src/mess/video/special.c
+++ b/src/mess/video/special.c
@@ -12,8 +12,8 @@
VIDEO_START_MEMBER(special_state,special)
{
- palette_set_color(machine(),0,rgb_t::black); /* black */
- palette_set_color(machine(),1,rgb_t::white); /* white */
+ m_palette->set_pen_color(0,rgb_t::black); /* black */
+ m_palette->set_pen_color(1,rgb_t::white); /* white */
}
UINT32 special_state::screen_update_special(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -75,7 +75,7 @@ const rgb_t specimx_palette[16] = {
PALETTE_INIT_MEMBER(special_state,specimx)
{
- palette_set_colors(machine(), 0, specimx_palette, ARRAY_LENGTH(specimx_palette));
+ palette.set_pen_colors(0, specimx_palette, ARRAY_LENGTH(specimx_palette));
}
@@ -115,7 +115,7 @@ static const rgb_t erik_palette[8] = {
PALETTE_INIT_MEMBER(special_state,erik)
{
- palette_set_colors(machine(), 0, erik_palette, ARRAY_LENGTH(erik_palette));
+ palette.set_pen_colors(0, erik_palette, ARRAY_LENGTH(erik_palette));
}
diff --git a/src/mess/video/spectrum.c b/src/mess/video/spectrum.c
index 6a95e2b7acb..ab0fc789755 100644
--- a/src/mess/video/spectrum.c
+++ b/src/mess/video/spectrum.c
@@ -175,7 +175,7 @@ static const rgb_t spectrum_palette[16] = {
/* Initialise the palette */
PALETTE_INIT_MEMBER(spectrum_state,spectrum)
{
- palette_set_colors(machine(), 0, spectrum_palette, ARRAY_LENGTH(spectrum_palette));
+ palette.set_pen_colors(0, spectrum_palette, ARRAY_LENGTH(spectrum_palette));
}
diff --git a/src/mess/video/ssystem3.c b/src/mess/video/ssystem3.c
index e0066573f2a..f8ce8a14deb 100644
--- a/src/mess/video/ssystem3.c
+++ b/src/mess/video/ssystem3.c
@@ -34,12 +34,12 @@ static const unsigned char ssystem3_palette[] =
};
-void ssystem3_state::palette_init()
+PALETTE_INIT_MEMBER(ssystem3_state, ssystem3)
{
int i;
for ( i = 0; i < sizeof(ssystem3_palette) / 3; i++ ) {
- palette_set_color_rgb(machine(), i, ssystem3_palette[i*3], ssystem3_palette[i*3+1], ssystem3_palette[i*3+2]);
+ m_palette->set_pen_color(i, ssystem3_palette[i*3], ssystem3_palette[i*3+1], ssystem3_palette[i*3+2]);
}
}
diff --git a/src/mess/video/stic.c b/src/mess/video/stic.c
index 3967a1fb0ee..d908eac5fd4 100644
--- a/src/mess/video/stic.c
+++ b/src/mess/video/stic.c
@@ -677,7 +677,7 @@ void stic_device::draw_sprites(bitmap_ind16 &bitmap, int behind_foreground)
m_gramdirtybytes[code] = 0;
}
// Draw GRAM char
- m_gfxdecode->gfx(1)->zoom_transpen(bitmap,&machine().screen[0].visarea,
+ m_gfxdecode->gfx(1)->zoom_transpen(m_palette,bitmap,&machine().screen[0].visarea,
code,
s->color,
s->xflip,s->yflip,
@@ -700,13 +700,13 @@ void stic_device::draw_sprites(bitmap_ind16 &bitmap, int behind_foreground)
m_gramdirtybytes[code+1] = 0;
}
// Draw GRAM char
- m_gfxdecode->gfx(1)->zoom_transpen(bitmap,&machine().screen[0].visarea,
+ m_gfxdecode->gfx(1)->zoom_transpen(m_palette,bitmap,&machine().screen[0].visarea,
code,
s->color,
s->xflip,s->yflip,
(s->xpos + x0) * STIC_X_SCALE, (s->ypos + y0) * STIC_Y_SCALE + s->yflip * s->ysize * STIC_CARD_HEIGHT,
0x8000*s->xsize, 0x8000*s->ysize,0);
- m_gfxdecode->gfx(1)->zoom_transpen(bitmap,&machine().screen[0].visarea,
+ m_gfxdecode->gfx(1)->zoom_transpen(m_palette,bitmap,&machine().screen[0].visarea,
code+1,
s->color,
s->xflip,s->yflip,
@@ -719,7 +719,7 @@ void stic_device::draw_sprites(bitmap_ind16 &bitmap, int behind_foreground)
if (s->yres == 1)
{
// Draw GROM char
- m_gfxdecode->gfx(0)->zoom_transpen(bitmap,&machine().screen[0].visarea,
+ m_gfxdecode->gfx(0)->zoom_transpen(m_palette,bitmap,&machine().screen[0].visarea,
code,
s->color,
s->xflip,s->yflip,
@@ -728,13 +728,13 @@ void stic_device::draw_sprites(bitmap_ind16 &bitmap, int behind_foreground)
}
else
{
- m_gfxdecode->gfx(0)->zoom_transpen(bitmap,&machine().screen[0].visarea,
+ m_gfxdecode->gfx(0)->zoom_transpen(m_palette,bitmap,&machine().screen[0].visarea,
code,
s->color,
s->xflip,s->yflip,
(s->xpos + x0) * STIC_X_SCALE, (s->ypos + y0) * STIC_Y_SCALE + s->yflip * s->ysize * STIC_CARD_HEIGHT,
0x8000*s->xsize, 0x8000*s->ysize,0);
- m_gfxdecode->gfx(0)->zoom_transpen(bitmap,&machine().screen[0].visarea,
+ m_gfxdecode->gfx(0)->zoom_transpen(m_palette,bitmap,&machine().screen[0].visarea,
code+1,
s->color,
s->xflip,s->yflip,
diff --git a/src/mess/video/super80.c b/src/mess/video/super80.c
index b5b006f7e4f..81c2beda5b5 100644
--- a/src/mess/video/super80.c
+++ b/src/mess/video/super80.c
@@ -58,7 +58,7 @@ void super80_state::palette_set_colors_rgb(const UINT8 *colors)
while (color_count--)
{
r = *colors++; g = *colors++; b = *colors++;
- palette_set_color(machine(), 15-color_count, rgb_t(r, g, b));
+ m_palette->set_pen_color(15-color_count, rgb_t(r, g, b));
}
}
diff --git a/src/mess/video/thomson.c b/src/mess/video/thomson.c
index 891d88476fd..a600b962059 100644
--- a/src/mess/video/thomson.c
+++ b/src/mess/video/thomson.c
@@ -1094,7 +1094,7 @@ PALETTE_INIT_MEMBER(thomson_state, thom)
UINT8 g = 255. * pow( ((i>> 4) & 15) / 15., gamma );
UINT8 b = 255. * pow( ((i >> 8) & 15) / 15., gamma );
/* UINT8 alpha = i & 0x1000 ? 0 : 255; TODO: transparency */
- palette_set_color_rgb(machine(), i, r, g, b );
+ palette.set_pen_color(i, r, g, b );
}
}
diff --git a/src/mess/video/ti85.c b/src/mess/video/ti85.c
index 5394a24db1f..2ee735b5e7d 100644
--- a/src/mess/video/ti85.c
+++ b/src/mess/video/ti85.c
@@ -97,21 +97,19 @@ static const unsigned short ti85_palette[32][7] =
{ 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf }
};
-void ti85_state::palette_init()
+PALETTE_INIT_MEMBER(ti85_state, ti85)
{
UINT8 i, j, r, g, b;
- machine().colortable = colortable_alloc(machine(), 224);
-
for ( i = 0; i < 224; i++ )
{
r = ti85_colors[i][0]; g = ti85_colors[i][1]; b = ti85_colors[i][2];
- colortable_palette_set_color(machine().colortable, i, rgb_t(r, g, b));
+ palette.set_indirect_color(i, rgb_t(r, g, b));
}
for (i=0; i < 32; i++)
for (j=0; j < 7; j++)
- colortable_entry_set_value(machine().colortable, i*7+j, ti85_palette[i][j]);
+ palette.set_pen_indirect(i*7+j, ti85_palette[i][j]);
if (!strncmp(machine().system().name, "ti81", 4))
{
@@ -189,6 +187,6 @@ UINT32 ti85_state::screen_update_ti85(screen_device &screen, bitmap_ind16 &bitma
PALETTE_INIT_MEMBER(ti85_state,ti82)
{
- palette_set_color(machine(), 0, rgb_t(160, 190, 170));
- palette_set_color(machine(), 1, rgb_t(83, 111, 138));
+ palette.set_pen_color(0, rgb_t(160, 190, 170));
+ palette.set_pen_color(1, rgb_t(83, 111, 138));
}
diff --git a/src/mess/video/tmc600.c b/src/mess/video/tmc600.c
index 95dd2feae45..77028e84fdb 100644
--- a/src/mess/video/tmc600.c
+++ b/src/mess/video/tmc600.c
@@ -141,6 +141,7 @@ MACHINE_CONFIG_FRAGMENT( tmc600_video )
// video hardware
MCFG_CDP1869_SCREEN_PAL_ADD(CDP1869_TAG, SCREEN_TAG, CDP1869_DOT_CLK_PAL)
MCFG_TIMER_DRIVER_ADD_PERIODIC("blink", tmc600_state, blink_tick, attotime::from_hz(2))
+
MCFG_GFXDECODE_ADD("gfxdecode", tmc600)
// sound hardware
diff --git a/src/mess/video/trs80.c b/src/mess/video/trs80.c
index afec68b2813..51b4215d2e5 100644
--- a/src/mess/video/trs80.c
+++ b/src/mess/video/trs80.c
@@ -582,5 +582,5 @@ static const rgb_t lnw80_palette[] =
PALETTE_INIT_MEMBER(trs80_state,lnw80)
{
- palette_set_colors(machine(), 0, lnw80_palette, ARRAY_LENGTH(lnw80_palette));
+ palette.set_pen_colors(0, lnw80_palette, ARRAY_LENGTH(lnw80_palette));
}
diff --git a/src/mess/video/tx0.c b/src/mess/video/tx0.c
index 0378340378c..ea9efd84dd8 100644
--- a/src/mess/video/tx0.c
+++ b/src/mess/video/tx0.c
@@ -197,7 +197,7 @@ void tx0_state::tx0_draw_multipleswitch(bitmap_ind16 &bitmap, int x, int y, int
/* write a single char on screen */
void tx0_state::tx0_draw_char(bitmap_ind16 &bitmap, char character, int x, int y, int color)
{
- m_gfxdecode->gfx(0)->transpen(bitmap,bitmap.cliprect(), character-32, color, 0, 0,
+ m_gfxdecode->gfx(0)->transpen(m_palette,bitmap,bitmap.cliprect(), character-32, color, 0, 0,
x+1, y, 0);
}
@@ -349,7 +349,7 @@ void tx0_state::tx0_typewriter_linefeed()
for (y=0; y<typewriter_window_height-typewriter_scroll_step; y++)
{
extract_scanline8(m_typewriter_bitmap, 0, y+typewriter_scroll_step, typewriter_window_width, buf);
- draw_scanline8(m_typewriter_bitmap, 0, y, typewriter_window_width, buf, machine().pens);
+ draw_scanline8(m_typewriter_bitmap, 0, y, typewriter_window_width, buf, m_palette->pens());
}
const rectangle typewriter_scroll_clear_window(0, typewriter_window_width-1, typewriter_window_height-typewriter_scroll_step, typewriter_window_height-1);
diff --git a/src/mess/video/ut88.c b/src/mess/video/ut88.c
index 34f9b41c3a3..4f796cfe53f 100644
--- a/src/mess/video/ut88.c
+++ b/src/mess/video/ut88.c
@@ -35,7 +35,7 @@ UINT32 ut88_state::screen_update_ut88(screen_device &screen, bitmap_ind16 &bitma
{
int code = m_p_videoram[ x + y*64 ] & 0x7f;
int attr = m_p_videoram[ x+1 + y*64 ] & 0x80;
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, code | attr, 0, 0,0, x*8,y*8);
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect, code | attr, 0, 0,0, x*8,y*8);
}
}
return 0;
diff --git a/src/mess/video/uv201.c b/src/mess/video/uv201.c
index 41ee033d00f..4a6bae8e99a 100644
--- a/src/mess/video/uv201.c
+++ b/src/mess/video/uv201.c
@@ -83,7 +83,7 @@
((_y >= cliprect.min_y) && (_y <= cliprect.max_y))
#define DRAW_PIXEL(_scanline, _dot) \
- if (IS_VISIBLE(_scanline)) bitmap.pix32((_scanline), HSYNC_WIDTH + HFP_WIDTH + _dot) = m_palette[pixel];
+ if (IS_VISIBLE(_scanline)) bitmap.pix32((_scanline), HSYNC_WIDTH + HFP_WIDTH + _dot) = m_palette_val[pixel];
@@ -248,14 +248,14 @@ void uv201_device::initialize_palette()
onvalue = onhiintensity;
}
- m_palette[offset + 0] = rgb_t(offvalue, offvalue, offvalue); // black
- m_palette[offset + 1] = rgb_t(onvalue, offvalue, offvalue); // red
- m_palette[offset + 2] = rgb_t(offvalue, onvalue, offvalue); // green
- m_palette[offset + 3] = rgb_t(onvalue, onvalue, offvalue); // red-green
- m_palette[offset + 4] = rgb_t(offvalue, offvalue, onvalue); // blue
- m_palette[offset + 5] = rgb_t(onvalue, offvalue, onvalue); // red-blue
- m_palette[offset + 6] = rgb_t(offvalue, onvalue, onvalue); // green-blue
- m_palette[offset + 7] = rgb_t(onvalue, onvalue, onvalue); // white
+ m_palette_val[offset + 0] = rgb_t(offvalue, offvalue, offvalue); // black
+ m_palette_val[offset + 1] = rgb_t(onvalue, offvalue, offvalue); // red
+ m_palette_val[offset + 2] = rgb_t(offvalue, onvalue, offvalue); // green
+ m_palette_val[offset + 3] = rgb_t(onvalue, onvalue, offvalue); // red-green
+ m_palette_val[offset + 4] = rgb_t(offvalue, offvalue, onvalue); // blue
+ m_palette_val[offset + 5] = rgb_t(onvalue, offvalue, onvalue); // red-blue
+ m_palette_val[offset + 6] = rgb_t(offvalue, onvalue, onvalue); // green-blue
+ m_palette_val[offset + 7] = rgb_t(onvalue, onvalue, onvalue); // white
}
}
@@ -507,7 +507,7 @@ READ_LINE_MEMBER( uv201_device::kbd_r )
UINT32 uv201_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(get_black_pen(machine()), cliprect);
+ bitmap.fill(rgb_t(0x00,0x00,0x00), cliprect);
if (!(m_cmd & COMMAND_ENB))
{
diff --git a/src/mess/video/uv201.h b/src/mess/video/uv201.h
index 6f9b725d7f8..a9e84d479b4 100644
--- a/src/mess/video/uv201.h
+++ b/src/mess/video/uv201.h
@@ -139,7 +139,7 @@ private:
devcb_resolved_write_line m_out_hblank_func;
devcb_resolved_read8 m_in_db_func;
- rgb_t m_palette[32];
+ rgb_t m_palette_val[32];
UINT8 m_ram[0x90];
UINT8 m_y_int;
UINT8 m_fmod;
diff --git a/src/mess/video/vector06.c b/src/mess/video/vector06.c
index 3b016518aa7..aef168f6c10 100644
--- a/src/mess/video/vector06.c
+++ b/src/mess/video/vector06.c
@@ -52,8 +52,8 @@ UINT32 vector06_state::screen_update_vector06(screen_device &screen, bitmap_ind1
return 0;
}
-void vector06_state::palette_init()
+PALETTE_INIT_MEMBER(vector06_state, vector06)
{
for (UINT8 i=0; i<16; i++)
- palette_set_color( machine(), i, rgb_t::black );
+ m_palette->set_pen_color( i, rgb_t::black );
}
diff --git a/src/mess/video/vic4567.c b/src/mess/video/vic4567.c
index 55b629657e6..1e3050ab0f9 100644
--- a/src/mess/video/vic4567.c
+++ b/src/mess/video/vic4567.c
@@ -144,7 +144,8 @@ const device_type VIC3 = &device_creator<vic3_device>;
vic3_device::vic3_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, VIC3, "4567 VIC III", tag, owner, clock, "vic3", __FILE__),
- device_video_interface(mconfig, *this)
+ device_video_interface(mconfig, *this),
+ m_palette(*this, "palette")
{
}
@@ -1953,7 +1954,7 @@ void vic3_device::raster_interrupt_gen()
m_rasterline = 0;
if (m_palette_dirty)
for (i = 0; i < 256; i++)
- palette_set_color_rgb(machine(), i, m_palette_red[i] << 4, m_palette_green[i] << 4, m_palette_blue[i] << 4);
+ m_palette->set_pen_color(i, m_palette_red[i] << 4, m_palette_green[i] << 4, m_palette_blue[i] << 4);
if (m_palette_dirty)
{
@@ -2057,3 +2058,18 @@ UINT32 vic3_device::video_update( bitmap_ind16 &bitmap, const rectangle &cliprec
copybitmap(bitmap, *m_bitmap, 0, 0, 0, 0, cliprect);
return 0;
}
+
+
+static MACHINE_CONFIG_FRAGMENT( vic3 )
+ MCFG_PALETTE_ADD_INIT_BLACK("palette", 0x100)
+MACHINE_CONFIG_END
+
+//-------------------------------------------------
+// machine_config_additions - return a pointer to
+// the device's machine fragment
+//-------------------------------------------------
+
+machine_config_constructor vic3_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( vic3 );
+}
diff --git a/src/mess/video/vic4567.h b/src/mess/video/vic4567.h
index 350a11b1d15..f065463e1ed 100644
--- a/src/mess/video/vic4567.h
+++ b/src/mess/video/vic4567.h
@@ -158,7 +158,7 @@ protected:
virtual void device_config_complete();
virtual void device_start();
virtual void device_reset();
-
+ virtual machine_config_constructor device_mconfig_additions() const;
private:
// internal state
@@ -241,6 +241,8 @@ private:
UINT8 m_palette_green[0x100];
UINT8 m_palette_blue[0x100];
int m_palette_dirty;
+
+ required_device<palette_device> m_palette;
};
extern const device_type VIC3;
diff --git a/src/mess/video/vtech2.c b/src/mess/video/vtech2.c
index 2173973717d..d171c044e26 100644
--- a/src/mess/video/vtech2.c
+++ b/src/mess/video/vtech2.c
@@ -142,7 +142,7 @@ UINT32 vtech2_state::screen_update_laser(screen_device &screen, bitmap_ind16 &bi
sy = BORDER_V/2 + y;
sx = BORDER_H/2 + x * 8;
code = videoram[offs];
- m_gfxdecode->gfx(2)->opaque(bitmap,cliprect,code,color,0,0,sx,sy);
+ m_gfxdecode->gfx(2)->opaque(m_palette,bitmap,cliprect,code,color,0,0,sx,sy);
}
}
break;
@@ -162,7 +162,7 @@ UINT32 vtech2_state::screen_update_laser(screen_device &screen, bitmap_ind16 &bi
sx = BORDER_H/2 + x * 16;
code = videoram[offs];
color = videoram[offs+1];
- m_gfxdecode->gfx(3)->opaque(bitmap,cliprect,code,color,0,0,sx,sy);
+ m_gfxdecode->gfx(3)->opaque(m_palette,bitmap,cliprect,code,color,0,0,sx,sy);
}
}
break;
@@ -181,7 +181,7 @@ UINT32 vtech2_state::screen_update_laser(screen_device &screen, bitmap_ind16 &bi
sy = BORDER_V/2 + y;
sx = BORDER_H/2 + x * 8;
code = videoram[offs];
- m_gfxdecode->gfx(5)->opaque(bitmap,cliprect,code,0,0,0,sx,sy);
+ m_gfxdecode->gfx(5)->opaque(m_palette,bitmap,cliprect,code,0,0,0,sx,sy);
}
}
break;
@@ -201,7 +201,7 @@ UINT32 vtech2_state::screen_update_laser(screen_device &screen, bitmap_ind16 &bi
sy = BORDER_V/2 + y * 2;
sx = BORDER_H/2 + x * 8;
code = videoram[offs];
- m_gfxdecode->gfx(6)->opaque(bitmap,cliprect,code,0,0,0,sx,sy);
+ m_gfxdecode->gfx(6)->opaque(m_palette,bitmap,cliprect,code,0,0,0,sx,sy);
}
}
break;
@@ -220,7 +220,7 @@ UINT32 vtech2_state::screen_update_laser(screen_device &screen, bitmap_ind16 &bi
sy = BORDER_V/2 + y;
sx = BORDER_H/2 + x * 16;
code = videoram[offs];
- m_gfxdecode->gfx(3)->opaque(bitmap,cliprect,code,color,0,0,sx,sy);
+ m_gfxdecode->gfx(3)->opaque(m_palette,bitmap,cliprect,code,color,0,0,sx,sy);
}
}
break;
@@ -240,7 +240,7 @@ UINT32 vtech2_state::screen_update_laser(screen_device &screen, bitmap_ind16 &bi
sx = BORDER_H/2 + x * 32;
code = videoram[offs];
color = videoram[offs+1];
- m_gfxdecode->gfx(4)->opaque(bitmap,cliprect,code,color,0,0,sx,sy);
+ m_gfxdecode->gfx(4)->opaque(m_palette,bitmap,cliprect,code,color,0,0,sx,sy);
}
}
break;
@@ -261,7 +261,7 @@ UINT32 vtech2_state::screen_update_laser(screen_device &screen, bitmap_ind16 &bi
sy = BORDER_V/2 + y * 8;
sx = BORDER_H/2 + x * 8;
code = videoram[0x3800+offs];
- m_gfxdecode->gfx(0)->opaque(bitmap,cliprect,code,color,0,0,sx,sy);
+ m_gfxdecode->gfx(0)->opaque(m_palette,bitmap,cliprect,code,color,0,0,sx,sy);
}
}
}
@@ -278,7 +278,7 @@ UINT32 vtech2_state::screen_update_laser(screen_device &screen, bitmap_ind16 &bi
sx = BORDER_H/2 + x * 16;
code = videoram[0x3800+offs];
color = videoram[0x3801+offs];
- m_gfxdecode->gfx(1)->opaque(bitmap,cliprect,code,color,0,0,sx,sy);
+ m_gfxdecode->gfx(1)->opaque(m_palette,bitmap,cliprect,code,color,0,0,sx,sy);
}
}
}
diff --git a/src/mess/video/vtvideo.c b/src/mess/video/vtvideo.c
index 15d91920cfc..bb082f80ca8 100644
--- a/src/mess/video/vtvideo.c
+++ b/src/mess/video/vtvideo.c
@@ -47,14 +47,16 @@ const device_type RAINBOW_VIDEO = &device_creator<rainbow_video_device>;
vt100_video_device::vt100_video_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
: device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_video_interface(mconfig, *this)
+ device_video_interface(mconfig, *this),
+ m_palette(*this, "palette")
{
}
vt100_video_device::vt100_video_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, VT100_VIDEO, "VT100 Video", tag, owner, clock, "vt100_video", __FILE__),
- device_video_interface(mconfig, *this)
+ device_video_interface(mconfig, *this),
+ m_palette(*this, "palette")
{
}
@@ -122,8 +124,8 @@ void vt100_video_device::device_start()
void vt100_video_device::device_reset()
{
- palette_set_color_rgb(machine(), 0, 0x00, 0x00, 0x00); // black
- palette_set_color_rgb(machine(), 1, 0xff, 0xff, 0xff); // white
+ m_palette->set_pen_color(0, 0x00, 0x00, 0x00); // black
+ m_palette->set_pen_color(1, 0xff, 0xff, 0xff); // white
m_height = 25;
m_height_MAX = 25;
@@ -149,7 +151,7 @@ void rainbow_video_device::device_reset()
MHFU_counter = 0; // **** MHFU: OFF ON COLD BOOT ! ****
// (rest of the palette is set in the main program)
- palette_set_color_rgb(machine(), 0, 0x00, 0x00, 0x00); // black
+ m_palette->set_pen_color(0, 0x00, 0x00, 0x00); // black
m_height = 24; // <---- DEC-100
m_height_MAX = 48;
@@ -349,7 +351,7 @@ WRITE8_MEMBER( vt100_video_device::dc011_w )
WRITE8_MEMBER( vt100_video_device::brightness_w )
{
- //palette_set_color_rgb(machine(), 1, data, data, data);
+ //m_palette->set_pen_color(1, data, data, data);
}
@@ -749,21 +751,21 @@ void rainbow_video_device::palette_select ( int choice )
{
default:
case 0x01:
- palette_set_color_rgb(machine(), 1, 0xff-100, 0xff-100, 0xff-100); // WHITE (dim)
- palette_set_color_rgb(machine(), 2, 0xff-50, 0xff-50, 0xff-50); // WHITE NORMAL
- palette_set_color_rgb(machine(), 3, 0xff, 0xff, 0xff); // WHITE (brighter)
+ m_palette->set_pen_color(1, 0xff-100, 0xff-100, 0xff-100); // WHITE (dim)
+ m_palette->set_pen_color(2, 0xff-50, 0xff-50, 0xff-50); // WHITE NORMAL
+ m_palette->set_pen_color(3, 0xff, 0xff, 0xff); // WHITE (brighter)
break;
case 0x02:
- palette_set_color_rgb(machine(), 1, 0 , 205 -50, 100 - 50); // GREEN (dim)
- palette_set_color_rgb(machine(), 2, 0 , 205, 100 ); // GREEN (NORMAL)
- palette_set_color_rgb(machine(), 3, 0, 205 +50, 100 + 50); // GREEN (brighter)
+ m_palette->set_pen_color(1, 0 , 205 -50, 100 - 50); // GREEN (dim)
+ m_palette->set_pen_color(2, 0 , 205, 100 ); // GREEN (NORMAL)
+ m_palette->set_pen_color(3, 0, 205 +50, 100 + 50); // GREEN (brighter)
break;
case 0x03:
- palette_set_color_rgb(machine(), 1, 213 - 47, 146 - 47, 82 - 47); // AMBER (dim)
- palette_set_color_rgb(machine(), 2, 213, 146, 82 ); // AMBER (NORMAL)
- palette_set_color_rgb(machine(), 3, 255, 193, 129 ); // AMBER (brighter)
+ m_palette->set_pen_color(1, 213 - 47, 146 - 47, 82 - 47); // AMBER (dim)
+ m_palette->set_pen_color(2, 213, 146, 82 ); // AMBER (NORMAL)
+ m_palette->set_pen_color(3, 255, 193, 129 ); // AMBER (brighter)
break;
}
}
@@ -810,3 +812,31 @@ TIMER_CALLBACK_MEMBER( vt100_video_device::lba7_change )
{
m_lba7 = (m_lba7) ? 0 : 1;
}
+
+static MACHINE_CONFIG_FRAGMENT( vt100_video )
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
+MACHINE_CONFIG_END
+
+//-------------------------------------------------
+// machine_config_additions - return a pointer to
+// the device's machine fragment
+//-------------------------------------------------
+
+machine_config_constructor vt100_video_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( vt100_video );
+}
+
+static MACHINE_CONFIG_FRAGMENT( rainbow_video )
+ MCFG_PALETTE_ADD("palette", 4)
+MACHINE_CONFIG_END
+
+//-------------------------------------------------
+// machine_config_additions - return a pointer to
+// the device's machine fragment
+//-------------------------------------------------
+
+machine_config_constructor rainbow_video_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( rainbow_video );
+}
diff --git a/src/mess/video/vtvideo.h b/src/mess/video/vtvideo.h
index 53a6e35a197..dd67713ec51 100644
--- a/src/mess/video/vtvideo.h
+++ b/src/mess/video/vtvideo.h
@@ -45,6 +45,7 @@ protected:
virtual void device_config_complete();
virtual void device_start();
virtual void device_reset();
+ virtual machine_config_constructor device_mconfig_additions() const;
// internal state
void recompute_parameters();
@@ -75,6 +76,7 @@ protected:
UINT8 m_frequency;
UINT8 m_interlaced;
+ required_device<palette_device> m_palette;
};
@@ -91,6 +93,7 @@ public:
protected:
virtual void display_char(bitmap_ind16 &bitmap, UINT8 code, int x, int y, UINT8 scroll_region, UINT8 display_type);
virtual void device_reset();
+ virtual machine_config_constructor device_mconfig_additions() const;
};
extern const device_type VT100_VIDEO;
diff --git a/src/mess/video/x68k.c b/src/mess/video/x68k.c
index 2e0b1f7abf9..146b07189b5 100644
--- a/src/mess/video/x68k.c
+++ b/src/mess/video/x68k.c
@@ -1011,7 +1011,7 @@ void x68k_state::x68k_draw_sprites(bitmap_ind16 &bitmap, int priority, rectangle
sx += m_crtc.bg_hshift;
sx += m_sprite_shift;
- m_gfxdecode->gfx(1)->zoom_transpen(bitmap,cliprect,code,colour+0x10,xflip,yflip,m_crtc.hbegin+sx,m_crtc.vbegin+(sy*m_crtc.bg_double),0x10000,0x10000*m_crtc.bg_double,0x00);
+ m_gfxdecode->gfx(1)->zoom_transpen(m_palette,bitmap,cliprect,code,colour+0x10,xflip,yflip,m_crtc.hbegin+sx,m_crtc.vbegin+(sy*m_crtc.bg_double),0x10000,0x10000*m_crtc.bg_double,0x00);
}
}
}
@@ -1026,7 +1026,7 @@ PALETTE_INIT_MEMBER(x68k_state,x68000)
g = (pal & 0x7c00) >> 7;
r = (pal & 0x03e0) >> 2;
b = (pal & 0x001f) << 3;
- palette_set_color_rgb(machine(),pal+512,r,g,b);
+ palette.set_pen_color(pal+512,r,g,b);
}
}
diff --git a/src/mess/video/z88.c b/src/mess/video/z88.c
index ff1dbecfe30..70c75122596 100644
--- a/src/mess/video/z88.c
+++ b/src/mess/video/z88.c
@@ -28,11 +28,11 @@ inline UINT8* z88_state::convert_address(UINT32 offset)
***************************************************************************/
// Initialise the palette
-void z88_state::palette_init()
+PALETTE_INIT_MEMBER(z88_state, z88)
{
- palette_set_color(machine(), 0, rgb_t(138, 146, 148));
- palette_set_color(machine(), 1, rgb_t(92, 83, 88));
- palette_set_color(machine(), 2, rgb_t(122, 126, 129));
+ m_palette->set_pen_color(0, rgb_t(138, 146, 148));
+ m_palette->set_pen_color(1, rgb_t(92, 83, 88));
+ m_palette->set_pen_color(2, rgb_t(122, 126, 129));
}
/* temp - change to gfxelement structure */
diff --git a/src/mess/video/zx8301.c b/src/mess/video/zx8301.c
index 57bb24989d7..5544df7aef6 100644
--- a/src/mess/video/zx8301.c
+++ b/src/mess/video/zx8301.c
@@ -35,7 +35,7 @@
static const int ZX8301_COLOR_MODE4[] = { 0, 2, 4, 7 };
-static const rgb_t PALETTE[] =
+static const rgb_t PALETTE_ZX8301[] =
{
rgb_t(0x00, 0x00, 0x00), // black
rgb_t(0x00, 0x00, 0xff), // blue
@@ -281,7 +281,7 @@ void zx8301_device::draw_line_mode4(bitmap_rgb32 &bitmap, int y, UINT16 da)
int green = BIT(byte_high, 7);
int color = (green << 1) | red;
- bitmap.pix32(y, x++) = PALETTE[ZX8301_COLOR_MODE4[color]];
+ bitmap.pix32(y, x++) = PALETTE_ZX8301[ZX8301_COLOR_MODE4[color]];
byte_high <<= 1;
byte_low <<= 1;
@@ -317,8 +317,8 @@ void zx8301_device::draw_line_mode8(bitmap_rgb32 &bitmap, int y, UINT16 da)
color = 0;
}
- bitmap.pix32(y, x++) = PALETTE[color];
- bitmap.pix32(y, x++) = PALETTE[color];
+ bitmap.pix32(y, x++) = PALETTE_ZX8301[color];
+ bitmap.pix32(y, x++) = PALETTE_ZX8301[color];
byte_high <<= 2;
byte_low <<= 2;