summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2014-02-27 13:35:15 +0000
committer Miodrag Milanovic <mmicko@gmail.com>2014-02-27 13:35:15 +0000
commit64ac8f6776fc4451d756b0eb3bb6dbd22c49801a (patch)
treebb1d096fecec4684c8ab2b7be1b4d539ca06e57b /src/mame
parentf9d3fbaa73ccdab2e5fcf9fc095a14b4f24c3133 (diff)
Huge update, palette is now device (nw)
note: Aaron please give more descriptive text for release log I have no more strength :)
Diffstat (limited to 'src/mame')
-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
1834 files changed, 9570 insertions, 8438 deletions
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,