summaryrefslogtreecommitdiffstats
path: root/src/mame
diff options
context:
space:
mode:
authorGravatarGravatar Firehawke <Firehawke@users.noreply.github.com>2017-12-13 21:31:27 -0700
committerGravatarGravatar Firehawke <Firehawke@users.noreply.github.com>2017-12-13 21:31:27 -0700
commit9ece34eb218c5c1960468294c733fd00ac7fa696 (patch) (github)
tree7160ed8d2cbe2127aaaef0a21f8736403b0f8a7c /src/mame
parent54155441e9ba9941e85d80c4834a66376a11e791 (diff)
downloadmame-9ece34eb218c5c1960468294c733fd00ac7fa696.tar.bz2
mame-9ece34eb218c5c1960468294c733fd00ac7fa696.zip
Revert "Revert "Merge branch 'master' of https://github.com/mamedev/mame""
Diffstat (limited to 'src/mame')
-rw-r--r--src/mame/arcade.flt3
-rw-r--r--src/mame/audio/decobsmt.cpp4
-rw-r--r--src/mame/audio/exidy440.cpp10
-rw-r--r--src/mame/audio/harddriv.cpp4
-rw-r--r--src/mame/audio/midway.cpp2
-rw-r--r--src/mame/audio/midway.h2
-rw-r--r--src/mame/audio/rax.cpp8
-rw-r--r--src/mame/audio/s11c_bg.cpp4
-rw-r--r--src/mame/audio/seibu.cpp14
-rw-r--r--src/mame/audio/williams.cpp10
-rw-r--r--src/mame/audio/williams.h8
-rw-r--r--src/mame/audio/wpcsnd.cpp2
-rw-r--r--src/mame/drivers/24cdjuke.cpp2
-rw-r--r--src/mame/drivers/39in1.cpp4
-rw-r--r--src/mame/drivers/4enraya.cpp2
-rw-r--r--src/mame/drivers/8080bw.cpp4
-rw-r--r--src/mame/drivers/a6809.cpp2
-rw-r--r--src/mame/drivers/accomm.cpp60
-rw-r--r--src/mame/drivers/acesp.cpp14
-rw-r--r--src/mame/drivers/aerofgt.cpp2
-rw-r--r--src/mame/drivers/agat.cpp340
-rw-r--r--src/mame/drivers/aim65.cpp4
-rw-r--r--src/mame/drivers/aim65_40.cpp6
-rw-r--r--src/mame/drivers/airraid.cpp4
-rw-r--r--src/mame/drivers/ajax.cpp4
-rw-r--r--src/mame/drivers/alesis.cpp2
-rw-r--r--src/mame/drivers/alphatpx.cpp76
-rw-r--r--src/mame/drivers/altos5.cpp4
-rw-r--r--src/mame/drivers/amaticmg.cpp2
-rw-r--r--src/mame/drivers/ampoker2.cpp2
-rw-r--r--src/mame/drivers/apc.cpp4
-rw-r--r--src/mame/drivers/apollo.cpp9
-rw-r--r--src/mame/drivers/apple2e.cpp2
-rw-r--r--src/mame/drivers/applix.cpp6
-rw-r--r--src/mame/drivers/aquarium.cpp4
-rw-r--r--src/mame/drivers/aristmk4.cpp4
-rw-r--r--src/mame/drivers/aristmk5.cpp568
-rw-r--r--src/mame/drivers/arkanoid.cpp4
-rw-r--r--src/mame/drivers/arsystems.cpp2
-rw-r--r--src/mame/drivers/astrcorp.cpp30
-rw-r--r--src/mame/drivers/astrof.cpp2
-rw-r--r--src/mame/drivers/atarisy1.cpp2
-rw-r--r--src/mame/drivers/atarisy2.cpp2
-rw-r--r--src/mame/drivers/attache.cpp12
-rw-r--r--src/mame/drivers/atvtrack.cpp6
-rw-r--r--src/mame/drivers/backfire.cpp2
-rw-r--r--src/mame/drivers/bagman.cpp6
-rw-r--r--src/mame/drivers/balsente.cpp2
-rw-r--r--src/mame/drivers/baraduke.cpp2
-rw-r--r--src/mame/drivers/barni.cpp13
-rw-r--r--src/mame/drivers/beezer.cpp12
-rw-r--r--src/mame/drivers/berzerk.cpp2
-rw-r--r--src/mame/drivers/beta.cpp2
-rw-r--r--src/mame/drivers/bfcobra.cpp6
-rw-r--r--src/mame/drivers/bfm_sc4.cpp2
-rw-r--r--src/mame/drivers/big10.cpp2
-rw-r--r--src/mame/drivers/bigbord2.cpp2
-rw-r--r--src/mame/drivers/bking.cpp2
-rw-r--r--src/mame/drivers/blktiger.cpp2
-rw-r--r--src/mame/drivers/bloodbro.cpp2
-rw-r--r--src/mame/drivers/bmcpokr.cpp6
-rw-r--r--src/mame/drivers/bob85.cpp2
-rw-r--r--src/mame/drivers/boogwing.cpp4
-rw-r--r--src/mame/drivers/bublbobl.cpp4
-rw-r--r--src/mame/drivers/by35.cpp2
-rw-r--r--src/mame/drivers/byvid.cpp6
-rw-r--r--src/mame/drivers/c64dtv.cpp13
-rw-r--r--src/mame/drivers/c900.cpp65
-rw-r--r--src/mame/drivers/cabal.cpp4
-rw-r--r--src/mame/drivers/calcune.cpp334
-rw-r--r--src/mame/drivers/camplynx.cpp4
-rw-r--r--src/mame/drivers/capbowl.cpp10
-rw-r--r--src/mame/drivers/cave.cpp6
-rw-r--r--src/mame/drivers/cd2650.cpp2
-rw-r--r--src/mame/drivers/centiped.cpp2
-rw-r--r--src/mame/drivers/champbwl.cpp10
-rw-r--r--src/mame/drivers/chessmst.cpp2
-rw-r--r--src/mame/drivers/chesstrv.cpp2
-rw-r--r--src/mame/drivers/chinagat.cpp8
-rw-r--r--src/mame/drivers/chqflag.cpp15
-rw-r--r--src/mame/drivers/chsuper.cpp6
-rw-r--r--src/mame/drivers/cischeat.cpp2
-rw-r--r--src/mame/drivers/cninja.cpp16
-rw-r--r--src/mame/drivers/cntsteer.cpp2
-rw-r--r--src/mame/drivers/coco12.cpp4
-rw-r--r--src/mame/drivers/coinmstr.cpp4
-rw-r--r--src/mame/drivers/compc.cpp139
-rw-r--r--src/mame/drivers/contra.cpp2
-rw-r--r--src/mame/drivers/coolpool.cpp4
-rw-r--r--src/mame/drivers/cops.cpp18
-rw-r--r--src/mame/drivers/cortex.cpp195
-rw-r--r--src/mame/drivers/cps1.cpp4
-rw-r--r--src/mame/drivers/cps2.cpp6
-rw-r--r--src/mame/drivers/csplayh5.cpp29
-rw-r--r--src/mame/drivers/cswat.cpp2
-rw-r--r--src/mame/drivers/cubo.cpp14
-rw-r--r--src/mame/drivers/cvs.cpp4
-rw-r--r--src/mame/drivers/cybertnk.cpp2
-rw-r--r--src/mame/drivers/d400.cpp2
-rw-r--r--src/mame/drivers/d6809.cpp2
-rw-r--r--src/mame/drivers/dambustr.cpp8
-rw-r--r--src/mame/drivers/darkmist.cpp22
-rw-r--r--src/mame/drivers/datum.cpp4
-rw-r--r--src/mame/drivers/dblewing.cpp4
-rw-r--r--src/mame/drivers/dcheese.cpp4
-rw-r--r--src/mame/drivers/ddragon.cpp20
-rw-r--r--src/mame/drivers/ddribble.cpp6
-rw-r--r--src/mame/drivers/de_2.cpp107
-rw-r--r--src/mame/drivers/de_3.cpp10
-rw-r--r--src/mame/drivers/dec8.cpp16
-rw-r--r--src/mame/drivers/deco156.cpp2
-rw-r--r--src/mame/drivers/deco32.cpp6
-rw-r--r--src/mame/drivers/deco_mlc.cpp6
-rw-r--r--src/mame/drivers/decocass.cpp2
-rw-r--r--src/mame/drivers/didact.cpp2
-rw-r--r--src/mame/drivers/dietgo.cpp4
-rw-r--r--src/mame/drivers/digel804.cpp2
-rw-r--r--src/mame/drivers/divebomb.cpp2
-rw-r--r--src/mame/drivers/dkong.cpp6
-rw-r--r--src/mame/drivers/dreambal.cpp4
-rw-r--r--src/mame/drivers/dynax.cpp16
-rw-r--r--src/mame/drivers/eacc.cpp2
-rw-r--r--src/mame/drivers/ecoinf3.cpp2
-rw-r--r--src/mame/drivers/ecoinfr.cpp4
-rw-r--r--src/mame/drivers/elwro800.cpp2
-rw-r--r--src/mame/drivers/enigma2.cpp4
-rw-r--r--src/mame/drivers/enmirage.cpp4
-rw-r--r--src/mame/drivers/epos.cpp8
-rw-r--r--src/mame/drivers/esq1.cpp3
-rw-r--r--src/mame/drivers/et3400.cpp2
-rw-r--r--src/mame/drivers/ettrivia.cpp2
-rw-r--r--src/mame/drivers/eva.cpp2
-rw-r--r--src/mame/drivers/evmbug.cpp66
-rw-r--r--src/mame/drivers/excali64.cpp2
-rw-r--r--src/mame/drivers/exidy440.cpp2
-rw-r--r--src/mame/drivers/expro02.cpp4
-rw-r--r--src/mame/drivers/exprraid.cpp2
-rw-r--r--src/mame/drivers/fgoal.cpp4
-rw-r--r--src/mame/drivers/fidel6502.cpp31
-rw-r--r--src/mame/drivers/fidel68k.cpp101
-rw-r--r--src/mame/drivers/fidelz80.cpp8
-rw-r--r--src/mame/drivers/firefox.cpp2
-rw-r--r--src/mame/drivers/fm7.cpp33
-rw-r--r--src/mame/drivers/fmtowns.cpp2
-rw-r--r--src/mame/drivers/forte2.cpp4
-rw-r--r--src/mame/drivers/fp1100.cpp2
-rw-r--r--src/mame/drivers/fp200.cpp2
-rw-r--r--src/mame/drivers/funkyjet.cpp4
-rw-r--r--src/mame/drivers/funtech.cpp2
-rw-r--r--src/mame/drivers/funworld.cpp57
-rw-r--r--src/mame/drivers/gaelco.cpp2
-rw-r--r--src/mame/drivers/gaiden.cpp8
-rw-r--r--src/mame/drivers/galaga.cpp4
-rw-r--r--src/mame/drivers/galaxian.cpp101
-rw-r--r--src/mame/drivers/gameplan.cpp6
-rw-r--r--src/mame/drivers/gaplus.cpp8
-rw-r--r--src/mame/drivers/gba.cpp16
-rw-r--r--src/mame/drivers/gei.cpp4
-rw-r--r--src/mame/drivers/gimix.cpp2
-rw-r--r--src/mame/drivers/gladiatr.cpp10
-rw-r--r--src/mame/drivers/gng.cpp8
-rw-r--r--src/mame/drivers/goldnpkr.cpp2
-rw-r--r--src/mame/drivers/goldstar.cpp164
-rw-r--r--src/mame/drivers/gottlieb.cpp22
-rw-r--r--src/mame/drivers/goupil.cpp12
-rw-r--r--src/mame/drivers/gticlub.cpp4
-rw-r--r--src/mame/drivers/gts3.cpp6
-rw-r--r--src/mame/drivers/gts3a.cpp8
-rw-r--r--src/mame/drivers/gts80.cpp2
-rw-r--r--src/mame/drivers/gts80a.cpp2
-rw-r--r--src/mame/drivers/gts80b.cpp2
-rw-r--r--src/mame/drivers/h8.cpp2
-rw-r--r--src/mame/drivers/halleys.cpp6
-rw-r--r--src/mame/drivers/hankin.cpp2
-rw-r--r--src/mame/drivers/hh_amis2k.cpp2
-rw-r--r--src/mame/drivers/hh_cop400.cpp2
-rw-r--r--src/mame/drivers/hh_hmcs40.cpp226
-rw-r--r--src/mame/drivers/hh_melps4.cpp16
-rw-r--r--src/mame/drivers/hh_pic16.cpp2
-rw-r--r--src/mame/drivers/hh_sm510.cpp939
-rw-r--r--src/mame/drivers/hh_tms1k.cpp551
-rw-r--r--src/mame/drivers/hh_ucom4.cpp128
-rw-r--r--src/mame/drivers/hnayayoi.cpp2
-rw-r--r--src/mame/drivers/hp64k.cpp4
-rw-r--r--src/mame/drivers/hp9845.cpp45
-rw-r--r--src/mame/drivers/hprot1.cpp2
-rw-r--r--src/mame/drivers/hshavoc.cpp10
-rw-r--r--src/mame/drivers/icecold.cpp2
-rw-r--r--src/mame/drivers/idsa.cpp81
-rw-r--r--src/mame/drivers/igs011.cpp12
-rw-r--r--src/mame/drivers/igs017.cpp44
-rw-r--r--src/mame/drivers/igs_m027.cpp2
-rw-r--r--src/mame/drivers/igspoker.cpp2
-rw-r--r--src/mame/drivers/inder.cpp2
-rw-r--r--src/mame/drivers/instantm.cpp97
-rw-r--r--src/mame/drivers/irobot.cpp2
-rw-r--r--src/mame/drivers/ironhors.cpp21
-rw-r--r--src/mame/drivers/itech32.cpp17
-rw-r--r--src/mame/drivers/itech8.cpp22
-rw-r--r--src/mame/drivers/jack.cpp8
-rw-r--r--src/mame/drivers/jclub2.cpp2
-rw-r--r--src/mame/drivers/jongkyo.cpp2
-rw-r--r--src/mame/drivers/jp.cpp2
-rw-r--r--src/mame/drivers/jpmmps.cpp31
-rw-r--r--src/mame/drivers/k28.cpp2
-rw-r--r--src/mame/drivers/kaneko16.cpp8
-rw-r--r--src/mame/drivers/kas89.cpp4
-rw-r--r--src/mame/drivers/kingdrby.cpp2
-rw-r--r--src/mame/drivers/konmedal.cpp102
-rw-r--r--src/mame/drivers/kurukuru.cpp10
-rw-r--r--src/mame/drivers/lasso.cpp2
-rw-r--r--src/mame/drivers/lbeach.cpp2
-rw-r--r--src/mame/drivers/lc80.cpp2
-rw-r--r--src/mame/drivers/legionna.cpp2
-rw-r--r--src/mame/drivers/lemmings.cpp4
-rw-r--r--src/mame/drivers/lethalj.cpp26
-rw-r--r--src/mame/drivers/looping.cpp2
-rw-r--r--src/mame/drivers/ltcasino.cpp2
-rw-r--r--src/mame/drivers/ltd.cpp2
-rw-r--r--src/mame/drivers/lwriter.cpp2
-rw-r--r--src/mame/drivers/m90.cpp8
-rw-r--r--src/mame/drivers/madalien.cpp4
-rw-r--r--src/mame/drivers/mappy.cpp18
-rw-r--r--src/mame/drivers/mario.cpp96
-rw-r--r--src/mame/drivers/maygay1b.cpp2
-rw-r--r--src/mame/drivers/mcr3.cpp35
-rw-r--r--src/mame/drivers/meadows.cpp2
-rw-r--r--src/mame/drivers/megadrvb.cpp12
-rw-r--r--src/mame/drivers/megasys1.cpp98
-rw-r--r--src/mame/drivers/mephisto_montec.cpp4
-rw-r--r--src/mame/drivers/merit.cpp6
-rw-r--r--src/mame/drivers/mermaid.cpp59
-rw-r--r--src/mame/drivers/metlfrzr.cpp4
-rw-r--r--src/mame/drivers/metro.cpp6
-rw-r--r--src/mame/drivers/mgavegas.cpp4
-rw-r--r--src/mame/drivers/microtan.cpp6
-rw-r--r--src/mame/drivers/midas.cpp14
-rw-r--r--src/mame/drivers/mikie.cpp2
-rw-r--r--src/mame/drivers/milwaukee.cpp11
-rw-r--r--src/mame/drivers/minicom.cpp2
-rw-r--r--src/mame/drivers/mirax.cpp6
-rw-r--r--src/mame/drivers/missb2.cpp4
-rw-r--r--src/mame/drivers/missile.cpp4
-rw-r--r--src/mame/drivers/mjsenpu.cpp2
-rw-r--r--src/mame/drivers/mk1.cpp8
-rw-r--r--src/mame/drivers/mkit09.cpp6
-rw-r--r--src/mame/drivers/model3.cpp10
-rw-r--r--src/mame/drivers/monzagp.cpp6
-rw-r--r--src/mame/drivers/mpf1.cpp2
-rw-r--r--src/mame/drivers/mpu12wbk.cpp2
-rw-r--r--src/mame/drivers/multfish.cpp14
-rw-r--r--src/mame/drivers/multi16.cpp2
-rw-r--r--src/mame/drivers/multigam.cpp8
-rw-r--r--src/mame/drivers/murogmbl.cpp177
-rw-r--r--src/mame/drivers/mustache.cpp10
-rw-r--r--src/mame/drivers/mw8080bw.cpp2
-rw-r--r--src/mame/drivers/n64.cpp2
-rw-r--r--src/mame/drivers/namcona1.cpp2
-rw-r--r--src/mame/drivers/namcos1.cpp8
-rw-r--r--src/mame/drivers/namcos10.cpp2
-rw-r--r--src/mame/drivers/namcos11.cpp4
-rw-r--r--src/mame/drivers/namcos2.cpp14
-rw-r--r--src/mame/drivers/namcos21.cpp6
-rw-r--r--src/mame/drivers/namcos22.cpp12
-rw-r--r--src/mame/drivers/namcos23.cpp42
-rw-r--r--src/mame/drivers/namcos86.cpp4
-rw-r--r--src/mame/drivers/naomi.cpp87
-rw-r--r--src/mame/drivers/nbmj8688.cpp6
-rw-r--r--src/mame/drivers/nbmj8891.cpp16
-rw-r--r--src/mame/drivers/nbmj8900.cpp4
-rw-r--r--src/mame/drivers/neogeo.cpp20
-rw-r--r--src/mame/drivers/neopcb.cpp14
-rw-r--r--src/mame/drivers/newbrain.cpp2
-rw-r--r--src/mame/drivers/niyanpai.cpp4
-rw-r--r--src/mame/drivers/nmk16.cpp2
-rw-r--r--src/mame/drivers/notetaker.cpp20
-rw-r--r--src/mame/drivers/novag6502.cpp2
-rw-r--r--src/mame/drivers/nsg6809.cpp97
-rw-r--r--src/mame/drivers/nsm.cpp2
-rw-r--r--src/mame/drivers/nss.cpp2
-rw-r--r--src/mame/drivers/nycaptor.cpp4
-rw-r--r--src/mame/drivers/ojankohs.cpp4
-rw-r--r--src/mame/drivers/omegrace.cpp2
-rw-r--r--src/mame/drivers/overdriv.cpp2
-rw-r--r--src/mame/drivers/pacland.cpp2
-rw-r--r--src/mame/drivers/pacman.cpp26
-rw-r--r--src/mame/drivers/pandoras.cpp4
-rw-r--r--src/mame/drivers/panicr.cpp12
-rw-r--r--src/mame/drivers/pbaction.cpp2
-rw-r--r--src/mame/drivers/pc88va.cpp4
-rw-r--r--src/mame/drivers/pc9801.cpp12
-rw-r--r--src/mame/drivers/pegasus.cpp6
-rw-r--r--src/mame/drivers/pengadvb.cpp4
-rw-r--r--src/mame/drivers/pet.cpp22
-rw-r--r--src/mame/drivers/pgm2.cpp544
-rw-r--r--src/mame/drivers/piggypas.cpp2
-rw-r--r--src/mame/drivers/pingpong.cpp6
-rw-r--r--src/mame/drivers/pirates.cpp32
-rw-r--r--src/mame/drivers/play_2.cpp4
-rw-r--r--src/mame/drivers/playch10.cpp4
-rw-r--r--src/mame/drivers/playmark.cpp15
-rw-r--r--src/mame/drivers/pntnpuzl.cpp4
-rw-r--r--src/mame/drivers/poly.cpp2
-rw-r--r--src/mame/drivers/poly880.cpp2
-rw-r--r--src/mame/drivers/popeye.cpp4
-rw-r--r--src/mame/drivers/popobear.cpp2
-rw-r--r--src/mame/drivers/prodigy.cpp302
-rw-r--r--src/mame/drivers/puckpkmn.cpp2
-rw-r--r--src/mame/drivers/pve500.cpp2
-rw-r--r--src/mame/drivers/qix.cpp16
-rw-r--r--src/mame/drivers/r2dx_v33.cpp2
-rw-r--r--src/mame/drivers/r9751.cpp8
-rw-r--r--src/mame/drivers/raiden.cpp4
-rw-r--r--src/mame/drivers/rainbow.cpp8
-rw-r--r--src/mame/drivers/risc2500.cpp4
-rw-r--r--src/mame/drivers/rmhaihai.cpp6
-rw-r--r--src/mame/drivers/rohga.cpp8
-rw-r--r--src/mame/drivers/route16.cpp83
-rw-r--r--src/mame/drivers/royalmah.cpp6
-rw-r--r--src/mame/drivers/s11.cpp10
-rw-r--r--src/mame/drivers/s11a.cpp4
-rw-r--r--src/mame/drivers/s11b.cpp18
-rw-r--r--src/mame/drivers/sc1.cpp2
-rw-r--r--src/mame/drivers/sc2.cpp2
-rw-r--r--src/mame/drivers/scobra.cpp85
-rw-r--r--src/mame/drivers/scregg.cpp2
-rw-r--r--src/mame/drivers/sdk85.cpp2
-rw-r--r--src/mame/drivers/sdk86.cpp13
-rw-r--r--src/mame/drivers/seattle.cpp63
-rw-r--r--src/mame/drivers/segae.cpp38
-rw-r--r--src/mame/drivers/segag80r.cpp4
-rw-r--r--src/mame/drivers/segaorun.cpp10
-rw-r--r--src/mame/drivers/segas16a.cpp8
-rw-r--r--src/mame/drivers/segas16b.cpp62
-rw-r--r--src/mame/drivers/segaufo.cpp2
-rw-r--r--src/mame/drivers/seicross.cpp2
-rw-r--r--src/mame/drivers/selz80.cpp2
-rw-r--r--src/mame/drivers/seta.cpp2
-rw-r--r--src/mame/drivers/seta2.cpp316
-rw-r--r--src/mame/drivers/sfbonus.cpp16
-rw-r--r--src/mame/drivers/sfkick.cpp2
-rw-r--r--src/mame/drivers/sigmab52.cpp19
-rw-r--r--src/mame/drivers/sigmab98.cpp18
-rw-r--r--src/mame/drivers/simpl156.cpp2
-rw-r--r--src/mame/drivers/skimaxx.cpp2
-rw-r--r--src/mame/drivers/skyarmy.cpp4
-rw-r--r--src/mame/drivers/skykid.cpp4
-rw-r--r--src/mame/drivers/smsmcorp.cpp39
-rw-r--r--src/mame/drivers/snesb.cpp52
-rw-r--r--src/mame/drivers/snk6502.cpp37
-rw-r--r--src/mame/drivers/snookr10.cpp6
-rw-r--r--src/mame/drivers/snowbros.cpp10
-rw-r--r--src/mame/drivers/sonson.cpp4
-rw-r--r--src/mame/drivers/sothello.cpp25
-rw-r--r--src/mame/drivers/spdodgeb.cpp2
-rw-r--r--src/mame/drivers/speedbal.cpp4
-rw-r--r--src/mame/drivers/spiders.cpp2
-rw-r--r--src/mame/drivers/spy.cpp4
-rw-r--r--src/mame/drivers/squale.cpp2
-rw-r--r--src/mame/drivers/srumbler.cpp2
-rw-r--r--src/mame/drivers/sshangha.cpp8
-rw-r--r--src/mame/drivers/ssystem3.cpp2
-rw-r--r--src/mame/drivers/starwars.cpp4
-rw-r--r--src/mame/drivers/statriv2.cpp2
-rw-r--r--src/mame/drivers/stlforce.cpp36
-rw-r--r--src/mame/drivers/stv.cpp12
-rw-r--r--src/mame/drivers/subsino.cpp2
-rw-r--r--src/mame/drivers/subsino2.cpp12
-rw-r--r--src/mame/drivers/sun2.cpp16
-rw-r--r--src/mame/drivers/sun3.cpp42
-rw-r--r--src/mame/drivers/suna8.cpp34
-rw-r--r--src/mame/drivers/superqix.cpp8
-rw-r--r--src/mame/drivers/supertnk.cpp2
-rw-r--r--src/mame/drivers/supracan.cpp2
-rw-r--r--src/mame/drivers/surpratk.cpp2
-rw-r--r--src/mame/drivers/swtpc.cpp7
-rw-r--r--src/mame/drivers/swtpc09.cpp4
-rw-r--r--src/mame/drivers/system16.cpp2
-rw-r--r--src/mame/drivers/taito_l.cpp2
-rw-r--r--src/mame/drivers/taitojc.cpp70
-rw-r--r--src/mame/drivers/taitotz.cpp2
-rw-r--r--src/mame/drivers/tatsumi.cpp115
-rw-r--r--src/mame/drivers/tavernie.cpp2
-rw-r--r--src/mame/drivers/tcl.cpp2
-rw-r--r--src/mame/drivers/tec1.cpp2
-rw-r--r--src/mame/drivers/techno.cpp4
-rw-r--r--src/mame/drivers/tek440x.cpp6
-rw-r--r--src/mame/drivers/thomson.cpp4
-rw-r--r--src/mame/drivers/ti74.cpp2
-rw-r--r--src/mame/drivers/ticalc1x.cpp12
-rw-r--r--src/mame/drivers/tickee.cpp6
-rw-r--r--src/mame/drivers/tispeak.cpp9
-rw-r--r--src/mame/drivers/tispellb.cpp4
-rw-r--r--src/mame/drivers/tmnt.cpp6
-rw-r--r--src/mame/drivers/toaplan2.cpp32
-rw-r--r--src/mame/drivers/toki.cpp6
-rw-r--r--src/mame/drivers/tonton.cpp11
-rw-r--r--src/mame/drivers/tourvis.cpp128
-rw-r--r--src/mame/drivers/toypop.cpp4
-rw-r--r--src/mame/drivers/tp84.cpp4
-rw-r--r--src/mame/drivers/trackfld.cpp10
-rw-r--r--src/mame/drivers/travrusa.cpp6
-rw-r--r--src/mame/drivers/trvquest.cpp6
-rw-r--r--src/mame/drivers/tsispch.cpp8
-rw-r--r--src/mame/drivers/tutankhm.cpp2
-rw-r--r--src/mame/drivers/tv950.cpp10
-rw-r--r--src/mame/drivers/twinkle.cpp378
-rw-r--r--src/mame/drivers/twins.cpp6
-rw-r--r--src/mame/drivers/v6809.cpp7
-rw-r--r--src/mame/drivers/vaportra.cpp2
-rw-r--r--src/mame/drivers/vboy.cpp2
-rw-r--r--src/mame/drivers/vcs80.cpp2
-rw-r--r--src/mame/drivers/vectrex.cpp6
-rw-r--r--src/mame/drivers/vega.cpp6
-rw-r--r--src/mame/drivers/vegas.cpp49
-rw-r--r--src/mame/drivers/vic20.cpp51
-rw-r--r--src/mame/drivers/vt240.cpp8
-rw-r--r--src/mame/drivers/wacky_gator.cpp4
-rw-r--r--src/mame/drivers/wallc.cpp6
-rw-r--r--src/mame/drivers/wecleman.cpp4
-rw-r--r--src/mame/drivers/white_mod.cpp2
-rw-r--r--src/mame/drivers/whitestar.cpp2
-rw-r--r--src/mame/drivers/wico.cpp8
-rw-r--r--src/mame/drivers/williams.cpp41
-rw-r--r--src/mame/drivers/wink.cpp10
-rw-r--r--src/mame/drivers/witch.cpp2
-rw-r--r--src/mame/drivers/wiz.cpp2
-rw-r--r--src/mame/drivers/wpc_an.cpp6
-rw-r--r--src/mame/drivers/x1.cpp8
-rw-r--r--src/mame/drivers/x68k.cpp3
-rw-r--r--src/mame/drivers/xexex.cpp2
-rw-r--r--src/mame/drivers/xmen.cpp2
-rw-r--r--src/mame/drivers/xtheball.cpp100
-rw-r--r--src/mame/drivers/xyonix.cpp4
-rw-r--r--src/mame/drivers/yiear.cpp2
-rw-r--r--src/mame/drivers/yunsung8.cpp2
-rw-r--r--src/mame/drivers/yuvomz80.cpp117
-rw-r--r--src/mame/drivers/z100.cpp4
-rw-r--r--src/mame/drivers/zapcomputer.cpp2
-rw-r--r--src/mame/drivers/zn.cpp394
-rw-r--r--src/mame/etc/fd1094dp.cpp34
-rw-r--r--src/mame/includes/apollo.h2
-rw-r--r--src/mame/includes/atarist.h1
-rw-r--r--src/mame/includes/bbc.h34
-rw-r--r--src/mame/includes/electron.h59
-rw-r--r--src/mame/includes/fmtowns.h4
-rw-r--r--src/mame/includes/hp9845.h8
-rw-r--r--src/mame/includes/ironhors.h51
-rw-r--r--src/mame/includes/itech32.h3
-rw-r--r--src/mame/includes/mac.h180
-rw-r--r--src/mame/includes/macpci.h91
-rw-r--r--src/mame/includes/mcr3.h6
-rw-r--r--src/mame/includes/mermaid.h8
-rw-r--r--src/mame/includes/mpu4.h2
-rw-r--r--src/mame/includes/pgm2.h43
-rw-r--r--src/mame/includes/playmark.h7
-rw-r--r--src/mame/includes/route16.h3
-rw-r--r--src/mame/includes/seta2.h23
-rw-r--r--src/mame/includes/tatsumi.h209
-rw-r--r--src/mame/layout/bmiidx.lay151
-rw-r--r--src/mame/layout/bumblbug.lay265
-rw-r--r--src/mame/layout/cashchamu.lay670
-rw-r--r--src/mame/layout/checkma5.lay17
-rw-r--r--src/mame/layout/dolphntrceb.lay670
-rw-r--r--src/mame/layout/f3in1.lay72
-rw-r--r--src/mame/layout/fidel_desdis_68kg.lay463
-rw-r--r--src/mame/layout/fidel_desdis_68kr.lay (renamed from src/mame/layout/fidel_desdis_68k.lay)3
-rw-r--r--src/mame/layout/prodigy.lay2
-rw-r--r--src/mame/layout/swhr2u.lay267
-rw-r--r--src/mame/layout/xl25.lay167
-rw-r--r--src/mame/layout/yukongl5.lay (renamed from src/mame/layout/yukongld.lay)0
-rw-r--r--src/mame/machine/315-5881_crypt.cpp6
-rw-r--r--src/mame/machine/apollo_dbg.cpp5
-rw-r--r--src/mame/machine/archimds.cpp2
-rw-r--r--src/mame/machine/atarifdc.cpp2
-rw-r--r--src/mame/machine/awboard.cpp4
-rw-r--r--src/mame/machine/bfm_bd1.cpp2
-rw-r--r--src/mame/machine/bfm_bda.cpp2
-rw-r--r--src/mame/machine/cps2crypt.cpp4
-rw-r--r--src/mame/machine/deco102.cpp2
-rw-r--r--src/mame/machine/deco146.cpp4
-rw-r--r--src/mame/machine/deco156.cpp8
-rw-r--r--src/mame/machine/deco222.cpp8
-rw-r--r--src/mame/machine/decocpu6.cpp4
-rw-r--r--src/mame/machine/decocpu7.cpp4
-rw-r--r--src/mame/machine/decocrpt.cpp2
-rw-r--r--src/mame/machine/epos.cpp2
-rw-r--r--src/mame/machine/fd1089.cpp28
-rw-r--r--src/mame/machine/fd1094.cpp32
-rw-r--r--src/mame/machine/gaelcrpt.cpp10
-rw-r--r--src/mame/machine/gb.cpp4
-rw-r--r--src/mame/machine/hp9845_printer.cpp971
-rw-r--r--src/mame/machine/hp9845_printer.h134
-rw-r--r--src/mame/machine/igs025.cpp4
-rw-r--r--src/mame/machine/igs036crypt.cpp425
-rw-r--r--src/mame/machine/igs036crypt.h19
-rw-r--r--src/mame/machine/jalcrpt.cpp20
-rw-r--r--src/mame/machine/jumpshot.cpp2
-rw-r--r--src/mame/machine/kaneko_calc3.cpp16
-rw-r--r--src/mame/machine/m24_z8000.cpp8
-rw-r--r--src/mame/machine/mac.cpp2
-rw-r--r--src/mame/machine/mbee.cpp8
-rw-r--r--src/mame/machine/mc8123.cpp78
-rw-r--r--src/mame/machine/megacd.cpp8
-rw-r--r--src/mame/machine/mexico86.cpp4
-rw-r--r--src/mame/machine/mpu4.cpp16
-rw-r--r--src/mame/machine/pacplus.cpp2
-rw-r--r--src/mame/machine/pgm2_memcard.cpp149
-rw-r--r--src/mame/machine/pgm2_memcard.h75
-rw-r--r--src/mame/machine/pgmprot_igs027a_type1.cpp12
-rw-r--r--src/mame/machine/pgmprot_igs027a_type3.cpp2
-rw-r--r--src/mame/machine/pgmprot_orlegend.cpp2
-rw-r--r--src/mame/machine/r2crypt.cpp4
-rw-r--r--src/mame/machine/scramble.cpp30
-rw-r--r--src/mame/machine/segacrp2_device.cpp4
-rw-r--r--src/mame/machine/segas32.cpp2
-rw-r--r--src/mame/machine/seibuspi.cpp4
-rw-r--r--src/mame/machine/subsino.cpp64
-rw-r--r--src/mame/machine/tatsumi.cpp35
-rw-r--r--src/mame/machine/ticket.cpp49
-rw-r--r--src/mame/machine/ticket.h13
-rw-r--r--src/mame/machine/trs80m2kb.cpp2
-rw-r--r--src/mame/machine/xevious.cpp2
-rw-r--r--src/mame/mame.lst58
-rw-r--r--src/mame/video/agat7.cpp4
-rw-r--r--src/mame/video/alesis.cpp10
-rw-r--r--src/mame/video/apple2.cpp4
-rw-r--r--src/mame/video/atarist.cpp38
-rw-r--r--src/mame/video/aussiebyte.cpp2
-rw-r--r--src/mame/video/champbas.cpp2
-rw-r--r--src/mame/video/cps1.cpp4
-rw-r--r--src/mame/video/cvs.cpp2
-rw-r--r--src/mame/video/decocass.cpp2
-rw-r--r--src/mame/video/decodmd2.cpp4
-rw-r--r--src/mame/video/dynax.cpp26
-rw-r--r--src/mame/video/fmtowns.cpp127
-rw-r--r--src/mame/video/gsword.cpp2
-rw-r--r--src/mame/video/hanaawas.cpp2
-rw-r--r--src/mame/video/igs017_igs031.cpp4
-rw-r--r--src/mame/video/irobot.cpp2
-rw-r--r--src/mame/video/kan_pand.cpp4
-rw-r--r--src/mame/video/kingobox.cpp2
-rw-r--r--src/mame/video/ladybug.cpp4
-rw-r--r--src/mame/video/mbee.cpp2
-rw-r--r--src/mame/video/mz700.cpp2
-rw-r--r--src/mame/video/naughtyb.cpp2
-rw-r--r--src/mame/video/nmk16.cpp4
-rw-r--r--src/mame/video/pc9801.cpp4
-rw-r--r--src/mame/video/pgm2.cpp24
-rw-r--r--src/mame/video/pingpong.cpp2
-rw-r--r--src/mame/video/qix.cpp6
-rw-r--r--src/mame/video/redclash.cpp4
-rw-r--r--src/mame/video/retofinv.cpp4
-rw-r--r--src/mame/video/segaic16.cpp2
-rw-r--r--src/mame/video/seibu_crtc.cpp4
-rw-r--r--src/mame/video/seibuspi.cpp2
-rw-r--r--src/mame/video/seta2.cpp7
-rw-r--r--src/mame/video/snookr10.cpp8
-rw-r--r--src/mame/video/splash.cpp39
-rw-r--r--src/mame/video/tatsumi.cpp123
-rw-r--r--src/mame/video/thepit.cpp4
-rw-r--r--src/mame/video/tia.cpp8
-rw-r--r--src/mame/video/tx1.cpp2
-rw-r--r--src/mame/video/vectrex.cpp6
-rw-r--r--src/mame/video/xevious.cpp2
565 files changed, 12892 insertions, 4265 deletions
diff --git a/src/mame/arcade.flt b/src/mame/arcade.flt
index 8d4b6247395..ff27d6f9671 100644
--- a/src/mame/arcade.flt
+++ b/src/mame/arcade.flt
@@ -172,6 +172,7 @@ bzone.cpp
cabal.cpp
cabaret.cpp
calchase.cpp
+calcune.cpp
calomega.cpp
calorie.cpp
canyon.cpp
@@ -830,6 +831,7 @@ nmk16.cpp
norautp.cpp
notechan.cpp
nova2001.cpp
+nsg6809.cpp
nsm.cpp
nsmpoker.cpp
nss.cpp
@@ -1353,6 +1355,7 @@ xyonix.cpp
yiear.cpp
yunsun16.cpp
yunsung8.cpp
+yuvomz80.cpp
zac_1.cpp
zac_2.cpp
zac_proto.cpp
diff --git a/src/mame/audio/decobsmt.cpp b/src/mame/audio/decobsmt.cpp
index 4f44be9987a..577243581bb 100644
--- a/src/mame/audio/decobsmt.cpp
+++ b/src/mame/audio/decobsmt.cpp
@@ -47,12 +47,12 @@ DEFINE_DEVICE_TYPE(DECOBSMT, decobsmt_device, "decobsmt", "Data East/Sega/Stern
//-------------------------------------------------
MACHINE_CONFIG_MEMBER( decobsmt_device::device_add_mconfig )
- MCFG_CPU_ADD(M6809_TAG, M6809, (3579580/2))
+ MCFG_CPU_ADD(M6809_TAG, MC6809E, XTAL_24MHz / 12) // 68B09E U6 (E & Q = 2 MHz according to manual)
MCFG_CPU_PROGRAM_MAP(decobsmt_map)
MCFG_CPU_PERIODIC_INT_DRIVER(decobsmt_device, decobsmt_firq_interrupt, 489) /* Fixed FIRQ of 489Hz as measured on real (pinball) machine */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- MCFG_BSMT2000_ADD(BSMT_TAG, 24000000)
+ MCFG_BSMT2000_ADD(BSMT_TAG, XTAL_24MHz)
MCFG_DEVICE_ADDRESS_MAP(0, bsmt_map)
MCFG_BSMT2000_READY_CALLBACK(decobsmt_device, bsmt_ready_callback)
MCFG_SOUND_ROUTE(0, "lspeaker", 2.0)
diff --git a/src/mame/audio/exidy440.cpp b/src/mame/audio/exidy440.cpp
index ec0894613ad..d625f75f717 100644
--- a/src/mame/audio/exidy440.cpp
+++ b/src/mame/audio/exidy440.cpp
@@ -20,9 +20,9 @@
#define FADE_TO_ZERO 1
-#define EXIDY440_AUDIO_CLOCK (XTAL_12_9792MHz / 16)
-#define EXIDY440_MC3418_CLOCK (EXIDY440_AUDIO_CLOCK / 16)
-#define EXIDY440_MC3417_CLOCK (EXIDY440_AUDIO_CLOCK / 32)
+#define EXIDY440_AUDIO_CLOCK (XTAL_12_9792MHz / 4)
+#define EXIDY440_MC3418_CLOCK (EXIDY440_AUDIO_CLOCK / 4 / 16)
+#define EXIDY440_MC3417_CLOCK (EXIDY440_AUDIO_CLOCK / 4 / 32)
/* internal caching */
@@ -875,13 +875,13 @@ ADDRESS_MAP_END
MACHINE_CONFIG_START( exidy440_audio )
- MCFG_CPU_ADD("audiocpu", M6809, EXIDY440_AUDIO_CLOCK)
+ MCFG_CPU_ADD("audiocpu", MC6809, EXIDY440_AUDIO_CLOCK)
MCFG_CPU_PROGRAM_MAP(exidy440_audio_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", driver_device, irq0_line_assert)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- MCFG_SOUND_ADD("custom", EXIDY440, EXIDY440_AUDIO_CLOCK/16)
+ MCFG_SOUND_ADD("custom", EXIDY440, EXIDY440_MC3418_CLOCK)
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
diff --git a/src/mame/audio/harddriv.cpp b/src/mame/audio/harddriv.cpp
index 22114b3dc4c..06677fbf79e 100644
--- a/src/mame/audio/harddriv.cpp
+++ b/src/mame/audio/harddriv.cpp
@@ -266,13 +266,13 @@ WRITE16_MEMBER(harddriv_sound_board_device::hdsnd68k_320ram_w)
READ16_MEMBER(harddriv_sound_board_device::hdsnd68k_320ports_r)
{
- return m_sounddsp->space(AS_IO).read_word((offset & 7) << 1);
+ return m_sounddsp->space(AS_IO).read_word(offset & 7);
}
WRITE16_MEMBER(harddriv_sound_board_device::hdsnd68k_320ports_w)
{
- m_sounddsp->space(AS_IO).write_word((offset & 7) << 1, data);
+ m_sounddsp->space(AS_IO).write_word(offset & 7, data);
}
diff --git a/src/mame/audio/midway.cpp b/src/mame/audio/midway.cpp
index 4752e177c72..0db7413b894 100644
--- a/src/mame/audio/midway.cpp
+++ b/src/mame/audio/midway.cpp
@@ -729,7 +729,7 @@ ADDRESS_MAP_END
//-------------------------------------------------
MACHINE_CONFIG_MEMBER(midway_turbo_cheap_squeak_device::device_add_mconfig)
- MCFG_CPU_ADD("cpu", M6809E, TURBOCS_CLOCK)
+ MCFG_CPU_ADD("cpu", MC6809E, TURBOCS_CLOCK / 4)
MCFG_CPU_PROGRAM_MAP(turbocs_map)
MCFG_DEVICE_ADD("pia", PIA6821, 0)
diff --git a/src/mame/audio/midway.h b/src/mame/audio/midway.h
index a7a867d6a25..1637c79d4ed 100644
--- a/src/mame/audio/midway.h
+++ b/src/mame/audio/midway.h
@@ -170,7 +170,7 @@ protected:
private:
// devices
- required_device<m6809e_device> m_cpu;
+ required_device<mc6809e_device> m_cpu;
required_device<pia6821_device> m_pia;
required_device<dac_word_interface> m_dac;
diff --git a/src/mame/audio/rax.cpp b/src/mame/audio/rax.cpp
index 617eae79a79..76453be8440 100644
--- a/src/mame/audio/rax.cpp
+++ b/src/mame/audio/rax.cpp
@@ -130,7 +130,7 @@ WRITE16_MEMBER( acclaim_rax_device::adsp_control_w )
{
uint32_t src_dword = (adsp_rom[src_addr + 0] << 16) | (adsp_rom[src_addr + 1] << 8) | adsp_rom[src_addr + 2];
- addr_space->write_dword(m_control_regs[BDMA_INT_ADDR_REG] * 4, src_dword);
+ addr_space->write_dword(m_control_regs[BDMA_INT_ADDR_REG], src_dword);
src_addr += 3;
++m_control_regs[BDMA_INT_ADDR_REG];
@@ -143,7 +143,7 @@ WRITE16_MEMBER( acclaim_rax_device::adsp_control_w )
{
uint16_t src_word = (adsp_rom[src_addr + 0] << 8) | adsp_rom[src_addr + 1];
- addr_space->write_word(m_control_regs[BDMA_INT_ADDR_REG] * 2, src_word);
+ addr_space->write_word(m_control_regs[BDMA_INT_ADDR_REG], src_word);
src_addr += 2;
++m_control_regs[BDMA_INT_ADDR_REG];
@@ -158,7 +158,7 @@ WRITE16_MEMBER( acclaim_rax_device::adsp_control_w )
{
uint16_t src_word = adsp_rom[src_addr] << shift;
- addr_space->write_word(m_control_regs[BDMA_INT_ADDR_REG] * 2, src_word);
+ addr_space->write_word(m_control_regs[BDMA_INT_ADDR_REG], src_word);
++src_addr;
++m_control_regs[BDMA_INT_ADDR_REG];
@@ -355,7 +355,7 @@ void acclaim_rax_device::adsp_irq(int which)
for (uint32_t i = 0; i < count; i++)
{
- buffer[i] = m_data->read_word(reg * 2);
+ buffer[i] = m_data->read_word(reg);
reg += m_incs[which];
}
diff --git a/src/mame/audio/s11c_bg.cpp b/src/mame/audio/s11c_bg.cpp
index 742bc4e8985..fb80c7ad1f0 100644
--- a/src/mame/audio/s11c_bg.cpp
+++ b/src/mame/audio/s11c_bg.cpp
@@ -57,11 +57,11 @@ void s11c_bg_device::data_w(uint8_t data)
}
MACHINE_CONFIG_MEMBER( s11c_bg_device::device_add_mconfig )
- MCFG_CPU_ADD("bgcpu", M6809E, XTAL_8MHz) // MC68B09E (note: schematics show this as 8mhz/2, but games crash very quickly with that speed?)
+ MCFG_CPU_ADD("bgcpu", MC6809E, XTAL_8MHz / 4) // MC68B09E
MCFG_CPU_PROGRAM_MAP(s11c_bg_map)
MCFG_QUANTUM_TIME(attotime::from_hz(50))
- MCFG_YM2151_ADD("ym2151", 3580000)
+ MCFG_YM2151_ADD("ym2151", XTAL_3_579545MHz) // "3.58 MHz" on schematics and parts list
MCFG_YM2151_IRQ_HANDLER(WRITELINE(s11c_bg_device, ym2151_irq_w))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.25)
diff --git a/src/mame/audio/seibu.cpp b/src/mame/audio/seibu.cpp
index a7336ef80fd..8a13fd94f5b 100644
--- a/src/mame/audio/seibu.cpp
+++ b/src/mame/audio/seibu.cpp
@@ -337,8 +337,8 @@ READ8_MEMBER(sei80bu_device::data_r)
if ( BIT(a,13) & ~BIT(a,6) & BIT(a,4)) src ^= 0x02;
if (~BIT(a,11) & BIT(a,9) & BIT(a,2)) src ^= 0x01;
- if (BIT(a,13) & BIT(a,4)) src = BITSWAP8(src,7,6,5,4,3,2,0,1);
- if (BIT(a, 8) & BIT(a,4)) src = BITSWAP8(src,7,6,5,4,2,3,1,0);
+ if (BIT(a,13) & BIT(a,4)) src = bitswap<8>(src,7,6,5,4,3,2,0,1);
+ if (BIT(a, 8) & BIT(a,4)) src = bitswap<8>(src,7,6,5,4,2,3,1,0);
return src;
}
@@ -357,10 +357,10 @@ READ8_MEMBER(sei80bu_device::opcode_r)
if ( BIT(a,13) & ~BIT(a,6) & BIT(a,4)) src ^= 0x02;
if (~BIT(a,11) & BIT(a,9) & BIT(a,2)) src ^= 0x01;
- if (BIT(a,13) & BIT(a,4)) src = BITSWAP8(src,7,6,5,4,3,2,0,1);
- if (BIT(a, 8) & BIT(a,4)) src = BITSWAP8(src,7,6,5,4,2,3,1,0);
- if (BIT(a,12) & BIT(a,9)) src = BITSWAP8(src,7,6,4,5,3,2,1,0);
- if (BIT(a,11) & ~BIT(a,6)) src = BITSWAP8(src,6,7,5,4,3,2,1,0);
+ if (BIT(a,13) & BIT(a,4)) src = bitswap<8>(src,7,6,5,4,3,2,0,1);
+ if (BIT(a, 8) & BIT(a,4)) src = bitswap<8>(src,7,6,5,4,2,3,1,0);
+ if (BIT(a,12) & BIT(a,9)) src = bitswap<8>(src,7,6,4,5,3,2,1,0);
+ if (BIT(a,11) & ~BIT(a,6)) src = bitswap<8>(src,6,7,5,4,3,2,1,0);
return src;
}
@@ -410,7 +410,7 @@ void seibu_adpcm_device::decrypt()
{
for (int i = 0; i < m_base.length(); i++)
{
- m_base[i] = BITSWAP8(m_base[i], 7, 5, 3, 1, 6, 4, 2, 0);
+ m_base[i] = bitswap<8>(m_base[i], 7, 5, 3, 1, 6, 4, 2, 0);
}
}
diff --git a/src/mame/audio/williams.cpp b/src/mame/audio/williams.cpp
index a61e4c28696..6633556d258 100644
--- a/src/mame/audio/williams.cpp
+++ b/src/mame/audio/williams.cpp
@@ -175,7 +175,7 @@ ADDRESS_MAP_END
//-------------------------------------------------
MACHINE_CONFIG_MEMBER( williams_cvsd_sound_device::device_add_mconfig )
- MCFG_CPU_ADD("cpu", M6809E, CVSD_MASTER_CLOCK)
+ MCFG_CPU_ADD("cpu", MC6809E, CVSD_MASTER_CLOCK / 4)
MCFG_CPU_PROGRAM_MAP(williams_cvsd_map)
MCFG_DEVICE_ADD("pia", PIA6821, 0)
@@ -493,10 +493,10 @@ ADDRESS_MAP_END
MACHINE_CONFIG_MEMBER( williams_narc_sound_device::device_add_mconfig )
- MCFG_CPU_ADD("cpu0", M6809E, NARC_MASTER_CLOCK)
+ MCFG_CPU_ADD("cpu0", MC6809E, NARC_MASTER_CLOCK / 4)
MCFG_CPU_PROGRAM_MAP(williams_narc_master_map)
- MCFG_CPU_ADD("cpu1", M6809E, NARC_MASTER_CLOCK)
+ MCFG_CPU_ADD("cpu1", MC6809E, NARC_MASTER_CLOCK / 4)
MCFG_CPU_PROGRAM_MAP(williams_narc_slave_map)
MCFG_YM2151_ADD("ym2151", NARC_FM_CLOCK)
@@ -746,7 +746,7 @@ ADDRESS_MAP_END
//-------------------------------------------------
MACHINE_CONFIG_MEMBER( williams_adpcm_sound_device::device_add_mconfig )
- MCFG_CPU_ADD("cpu", M6809E, ADPCM_MASTER_CLOCK)
+ MCFG_CPU_ADD("cpu", MC6809E, ADPCM_MASTER_CLOCK / 4)
MCFG_CPU_PROGRAM_MAP(williams_adpcm_map)
MCFG_YM2151_ADD("ym2151", ADPCM_FM_CLOCK)
@@ -759,7 +759,7 @@ MACHINE_CONFIG_MEMBER( williams_adpcm_sound_device::device_add_mconfig )
MCFG_OKIM6295_ADD("oki", ADPCM_MASTER_CLOCK/8, PIN7_HIGH) // clock frequency & pin 7 not verified
MCFG_DEVICE_ADDRESS_MAP(0, williams_adpcm_oki_map)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.5)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.15)
MACHINE_CONFIG_END
diff --git a/src/mame/audio/williams.h b/src/mame/audio/williams.h
index b81d6ce8ae9..e2d564b462c 100644
--- a/src/mame/audio/williams.h
+++ b/src/mame/audio/williams.h
@@ -57,7 +57,7 @@ protected:
private:
// devices
- required_device<m6809e_device> m_cpu;
+ required_device<mc6809e_device> m_cpu;
required_device<pia6821_device> m_pia;
required_device<hc55516_device> m_hc55516;
@@ -112,8 +112,8 @@ private:
};
// devices
- required_device<m6809e_device> m_cpu0;
- required_device<m6809e_device> m_cpu1;
+ required_device<mc6809e_device> m_cpu0;
+ required_device<mc6809e_device> m_cpu1;
required_device<hc55516_device> m_hc55516;
// internal state
@@ -161,7 +161,7 @@ protected:
private:
// devices
- required_device<m6809e_device> m_cpu;
+ required_device<mc6809e_device> m_cpu;
// internal state
uint8_t m_latch;
diff --git a/src/mame/audio/wpcsnd.cpp b/src/mame/audio/wpcsnd.cpp
index a9cbf40611e..f8ce84bae3d 100644
--- a/src/mame/audio/wpcsnd.cpp
+++ b/src/mame/audio/wpcsnd.cpp
@@ -67,7 +67,7 @@ uint8_t wpcsnd_device::data_r()
}
MACHINE_CONFIG_MEMBER( wpcsnd_device::device_add_mconfig )
- MCFG_CPU_ADD("bgcpu", M6809E, XTAL_8MHz) // MC68B09E
+ MCFG_CPU_ADD("bgcpu", MC6809E, XTAL_8MHz / 4) // MC68B09E
MCFG_CPU_PROGRAM_MAP(wpcsnd_map)
MCFG_QUANTUM_TIME(attotime::from_hz(50))
diff --git a/src/mame/drivers/24cdjuke.cpp b/src/mame/drivers/24cdjuke.cpp
index 4d1cd57249a..2d06f447b89 100644
--- a/src/mame/drivers/24cdjuke.cpp
+++ b/src/mame/drivers/24cdjuke.cpp
@@ -116,7 +116,7 @@ WRITE8_MEMBER(midcoin24cdjuke_state::digit_w)
{
uint16_t char_data = m_charset[((data & 0x60) << 1) | (data & 0x1f)];
- char_data = BITSWAP16(char_data, 13,11,9,15,14,10,12,8,7,6,5,4,3,2,1,0);
+ char_data = bitswap<16>(char_data, 13,11,9,15,14,10,12,8,7,6,5,4,3,2,1,0);
output().set_digit_value(offset, char_data ^ 0xffff);
}
diff --git a/src/mame/drivers/39in1.cpp b/src/mame/drivers/39in1.cpp
index 45e24a02733..532b59d40bd 100644
--- a/src/mame/drivers/39in1.cpp
+++ b/src/mame/drivers/39in1.cpp
@@ -1550,7 +1550,7 @@ void _39in1_state::machine_start()
for (i = 0; i < 0x80000; i += 2)
{
- ROM[i] = BITSWAP8(ROM[i],7,2,5,6,0,3,1,4) ^ BITSWAP8((i>>3)&0xf, 3,2,4,1,4,4,0,4) ^ 0x90;
+ ROM[i] = bitswap<8>(ROM[i],7,2,5,6,0,3,1,4) ^ bitswap<8>((i>>3)&0xf, 3,2,4,1,4,4,0,4) ^ 0x90;
}
pxa255_start();
@@ -1565,7 +1565,7 @@ MACHINE_START_MEMBER(_39in1_state,60in1)
{
if ((i%2)==0)
{
- ROM[i] = BITSWAP8(ROM[i],5,1,4,2,0,7,6,3)^BITSWAP8(i, 6,0,4,13,0,5,3,11);
+ ROM[i] = bitswap<8>(ROM[i],5,1,4,2,0,7,6,3)^bitswap<8>(i, 6,0,4,13,0,5,3,11);
}
}
diff --git a/src/mame/drivers/4enraya.cpp b/src/mame/drivers/4enraya.cpp
index b165007c8c5..8d6d41a0143 100644
--- a/src/mame/drivers/4enraya.cpp
+++ b/src/mame/drivers/4enraya.cpp
@@ -636,7 +636,7 @@ DRIVER_INIT_MEMBER(_4enraya_state, unkpacg)
// descramble rom
uint8_t *rom = memregion("maincpu")->base();
for (int i = 0x8000; i < 0xa000; i++)
- rom[i] = BITSWAP8(rom[i], 7,6,5,4,3,2,0,1);
+ rom[i] = bitswap<8>(rom[i], 7,6,5,4,3,2,0,1);
}
diff --git a/src/mame/drivers/8080bw.cpp b/src/mame/drivers/8080bw.cpp
index 8e2255093d8..294be4b972d 100644
--- a/src/mame/drivers/8080bw.cpp
+++ b/src/mame/drivers/8080bw.cpp
@@ -3284,7 +3284,7 @@ DRIVER_INIT_MEMBER(_8080bw_state,attackfc)
// swap a8/a9
for (int i = 0; i < len; i++)
- buffer[BITSWAP16(i, 15,14,13,12,11,10,8,9, 7,6,5,4,3,2,1,0)] = rom[i];
+ buffer[bitswap<16>(i, 15,14,13,12,11,10,8,9, 7,6,5,4,3,2,1,0)] = rom[i];
memcpy(rom, &buffer[0], len);
}
@@ -3419,7 +3419,7 @@ DRIVER_INIT_MEMBER(_8080bw_state,invmulti)
// decrypt rom
for (int i = 0; i < len; i++)
- dest[i] = BITSWAP8(src[(i & 0x100ff) | (BITSWAP8(i >> 8 & 0xff, 7,3,4,5,0,6,1,2) << 8)],0,6,5,7,4,3,1,2);
+ dest[i] = bitswap<8>(src[(i & 0x100ff) | (bitswap<8>(i >> 8 & 0xff, 7,3,4,5,0,6,1,2) << 8)],0,6,5,7,4,3,1,2);
membank("bank1")->configure_entries(0, 8, memregion("maincpu")->base(), 0x4000);
membank("bank1")->set_entry(0);
diff --git a/src/mame/drivers/a6809.cpp b/src/mame/drivers/a6809.cpp
index 84cbcef2303..3e67a43aad6 100644
--- a/src/mame/drivers/a6809.cpp
+++ b/src/mame/drivers/a6809.cpp
@@ -222,7 +222,7 @@ void a6809_state::kbd_put(u8 data)
static MACHINE_CONFIG_START( a6809 )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu",M6809E, XTAL_4MHz)
+ MCFG_CPU_ADD("maincpu", MC6809, XTAL_4MHz)
MCFG_CPU_PROGRAM_MAP(a6809_mem)
MCFG_CPU_IO_MAP(a6809_io)
MCFG_MACHINE_RESET_OVERRIDE(a6809_state, a6809)
diff --git a/src/mame/drivers/accomm.cpp b/src/mame/drivers/accomm.cpp
index 4012236b50e..263feb6cba7 100644
--- a/src/mame/drivers/accomm.cpp
+++ b/src/mame/drivers/accomm.cpp
@@ -39,35 +39,6 @@
#define INT_SET 0x100
#define INT_CLEAR 0x200
-/* ULA context */
-
-struct ULA
-{
- uint8_t interrupt_status;
- uint8_t interrupt_control;
- uint8_t rompage;
- uint16_t screen_start;
- uint16_t screen_base;
- int screen_size;
- uint16_t screen_addr;
- uint8_t *vram;
- int current_pal[16];
- int communication_mode;
- int screen_mode;
- int shiftlock_mode;
- int capslock_mode;
-// int scanline;
- /* tape reading related */
- uint32_t tape_value;
- int tape_steps;
- int bit_count;
- int high_tone_set;
- int start_bit;
- int stop_bit;
- int tape_running;
- uint8_t tape_byte;
-};
-
class accomm_state : public driver_device
{
public:
@@ -125,6 +96,37 @@ protected:
private:
bool m_ch00rom_enabled;
+
+ /* ULA context */
+
+ struct ULA
+ {
+ uint8_t interrupt_status;
+ uint8_t interrupt_control;
+ uint8_t rompage;
+ uint16_t screen_start;
+ uint16_t screen_base;
+ int screen_size;
+ uint16_t screen_addr;
+ uint8_t *vram;
+ int current_pal[16];
+ int communication_mode;
+ int screen_mode;
+ int shiftlock_mode;
+ int capslock_mode;
+ // int scanline;
+ /* tape reading related */
+ uint32_t tape_value;
+ int tape_steps;
+ int bit_count;
+ int high_tone_set;
+ int start_bit;
+ int stop_bit;
+ int tape_running;
+ uint8_t tape_byte;
+ };
+
+
ULA m_ula;
int m_map4[256];
int m_map16[256];
diff --git a/src/mame/drivers/acesp.cpp b/src/mame/drivers/acesp.cpp
index c74324aea51..b69928b45e3 100644
--- a/src/mame/drivers/acesp.cpp
+++ b/src/mame/drivers/acesp.cpp
@@ -3856,13 +3856,13 @@ static void descramble_crystal( uint8_t* region, int start, int end, uint8_t ext
switch (i & 0x58)
{
case 0x00: // same as 0x08
- case 0x08: x = BITSWAP8( x^0xca , 3,2,1,0,7,4,6,5 ); break;
- case 0x10: x = BITSWAP8( x^0x30 , 3,0,4,6,1,5,7,2 ); break;
- case 0x18: x = BITSWAP8( x^0x89 , 4,1,2,5,7,0,6,3 ); break;
- case 0x40: x = BITSWAP8( x^0x14 , 6,1,4,3,2,5,0,7 ); break;
- case 0x48: x = BITSWAP8( x^0x40 , 1,0,3,2,5,4,7,6 ); break;
- case 0x50: x = BITSWAP8( x^0xcb , 3,2,1,0,7,6,5,4 ); break;
- case 0x58: x = BITSWAP8( x^0xc0 , 2,3,6,0,5,1,7,4 ); break;
+ case 0x08: x = bitswap<8>( x^0xca , 3,2,1,0,7,4,6,5 ); break;
+ case 0x10: x = bitswap<8>( x^0x30 , 3,0,4,6,1,5,7,2 ); break;
+ case 0x18: x = bitswap<8>( x^0x89 , 4,1,2,5,7,0,6,3 ); break;
+ case 0x40: x = bitswap<8>( x^0x14 , 6,1,4,3,2,5,0,7 ); break;
+ case 0x48: x = bitswap<8>( x^0x40 , 1,0,3,2,5,4,7,6 ); break;
+ case 0x50: x = bitswap<8>( x^0xcb , 3,2,1,0,7,6,5,4 ); break;
+ case 0x58: x = bitswap<8>( x^0xc0 , 2,3,6,0,5,1,7,4 ); break;
}
region[i] = x ^ extra_xor;
}
diff --git a/src/mame/drivers/aerofgt.cpp b/src/mame/drivers/aerofgt.cpp
index d6f4e54072a..47cd3a501e3 100644
--- a/src/mame/drivers/aerofgt.cpp
+++ b/src/mame/drivers/aerofgt.cpp
@@ -3027,7 +3027,7 @@ DRIVER_INIT_MEMBER(aerofgt_state, kickball)
uint8_t *src = memregion( "gfx2" )->base();
for (int i = 0;i < 0x80000;i++)
{
- src[i] = BITSWAP8(src[i], 7, 5, 6, 4, 3, 2, 1, 0);
+ src[i] = bitswap<8>(src[i], 7, 5, 6, 4, 3, 2, 1, 0);
}
}
diff --git a/src/mame/drivers/agat.cpp b/src/mame/drivers/agat.cpp
index 62f111e7255..9299a474805 100644
--- a/src/mame/drivers/agat.cpp
+++ b/src/mame/drivers/agat.cpp
@@ -2,18 +2,51 @@
// copyright-holders:R. Belmont, Sergey Svishchev
/***************************************************************************
- agat.c
- Skeleton driver for Agat series of Soviet Apple II non-clones
-
- These are similar to Apple II (same bus architecture, keyboard and
- floppy interface), but video controller is completely different.
-
- To do:
- - native keyboards (at least two variants)
- - 840K floppy controller (MFM encoding, but track layout is unique)
- - agat7: 64K and 128K onboard memory configurations
- - agat9
- - 3rd party slot devices
+ agat.cpp
+
+ Driver for Agat series of Soviet Apple II non-clones
+
+ These are similar to Apple II (same bus architecture, keyboard
+ and floppy interface), but native video controllers are different.
+
+ agat7 supports Apple (40col, HGR and DHR) video modes with add-on
+ card; agat9 has built-in support for 40col and HGR. Palette in
+ Apple modes is different and pixel stretching is not done.
+
+ To do (common):
+ - native keyboard (at least two variants)
+ - video: text modes use 7x8 character cell and 224x256 raster
+ - video: vertical raster splits (used at least by Rapira)
+ - what is the state of devices at init and reset?
+ - what do floating bus reads do?
+ - ignore debugger reads -- use side_effect_disabled()
+ - softlists
+
+ To do (agat7):
+ - hw variant: 16 colors
+ - hw variant: 256-char chargen
+ - hw variant: 64K and 128K onboard memory
+ - "500hz" interrupt breakage
+ - what does write to C009 do? (basedos7.nib)
+
+ To do (agat9):
+ - memory banking: what does write to C18x..C1Fx do?
+ - memory expansion boards
+ - apple2 video compat mode incl. language card emulation
+ - 840K floppy controller: low level emulation, AIM format support
+ - mouse via parallel port
+ - hw revisions and agat9a model (via http://agatcomp.ru/Images/case.shtml)
+
+ Slot devices -- 1st party:
+ - agat7: apple2 video card (decimal 3.089.121) -- http://agatcomp.ru/Images/new_j121.shtml
+ - agat7: serial-parallel card (decimal 3.089.10)6
+ - agat9: printer card (decimal 3.089.17)4
+
+ Slot devices -- 3rd party:
+ - Nippel Clock (uses mc146818)
+ - Nippel mouse -- http://agatcomp.ru/Images/new_mouse.shtml
+ - Sprite Card-93 (uses fd1793)
+ - others
************************************************************************/
@@ -27,6 +60,7 @@
#include "bus/a2bus/a2diskii.h"
#include "bus/a2bus/agat7langcard.h"
#include "bus/a2bus/agat7ram.h"
+#include "bus/a2bus/agat840k_hle.h"
#include "screen.h"
#include "softlist.h"
@@ -78,14 +112,12 @@ public:
required_device<address_map_bank_device> m_upperbank;
TIMER_DEVICE_CALLBACK_MEMBER(ay3600_repeat);
- TIMER_DEVICE_CALLBACK_MEMBER(agat_timer);
- TIMER_DEVICE_CALLBACK_MEMBER(agat_vblank);
+ TIMER_DEVICE_CALLBACK_MEMBER(timer_irq);
+ INTERRUPT_GEN_MEMBER(agat_vblank);
virtual void machine_start() override;
virtual void machine_reset() override;
- DECLARE_READ8_MEMBER(c000_r);
- DECLARE_WRITE8_MEMBER(c000_w);
DECLARE_READ8_MEMBER(c080_r);
DECLARE_WRITE8_MEMBER(c080_w);
DECLARE_READ8_MEMBER(c100_r);
@@ -106,6 +138,20 @@ public:
DECLARE_WRITE8_MEMBER(agat7_membank_w);
DECLARE_READ8_MEMBER(agat7_ram_r);
DECLARE_WRITE8_MEMBER(agat7_ram_w);
+ DECLARE_READ8_MEMBER(keyb_data_r);
+ DECLARE_READ8_MEMBER(keyb_strobe_r);
+ DECLARE_WRITE8_MEMBER(keyb_strobe_w);
+ DECLARE_READ8_MEMBER(cassette_toggle_r);
+ DECLARE_WRITE8_MEMBER(cassette_toggle_w);
+ DECLARE_READ8_MEMBER(speaker_toggle_r);
+ DECLARE_WRITE8_MEMBER(speaker_toggle_w);
+ DECLARE_READ8_MEMBER(interrupts_on_r);
+ DECLARE_WRITE8_MEMBER(interrupts_on_w);
+ DECLARE_READ8_MEMBER(interrupts_off_r);
+ DECLARE_WRITE8_MEMBER(interrupts_off_w);
+ DECLARE_READ8_MEMBER(flags_r);
+ DECLARE_READ8_MEMBER(controller_strobe_r);
+ DECLARE_WRITE8_MEMBER(controller_strobe_w);
private:
int m_speaker_state;
@@ -291,120 +337,123 @@ void agat7_state::machine_reset()
/***************************************************************************
I/O
***************************************************************************/
-// most softswitches don't care about read vs write, so handle them here
-void agat7_state::do_io(address_space &space, int offset)
+
+READ8_MEMBER(agat7_state::keyb_data_r)
{
- if (machine().side_effect_disabled())
- {
- return;
- }
+ return m_strobe ? (m_transchar | m_strobe) : 0;
+}
- switch (offset & 0xf0)
- {
- case 0x20:
- m_cassette_state ^= 1;
- m_cassette->output(m_cassette_state ? 1.0f : -1.0f);
- break;
+READ8_MEMBER(agat7_state::keyb_strobe_r)
+{
+ // reads any key down, clears strobe
+ uint8_t rv = m_transchar | (m_anykeydown ? 0x80 : 0x00);
+ if (!machine().side_effect_disabled())
+ m_strobe = 0;
+ return rv;
+}
- case 0x30:
- m_speaker_state ^= 1;
- m_speaker->level_w(m_speaker_state);
- break;
+WRITE8_MEMBER(agat7_state::keyb_strobe_w)
+{
+ // clear keyboard latch
+ m_strobe = 0;
+}
- // XXX agat7: 0x4N -- enable timer interrupts, 0x5N -- disable (or vice versa depending on hw rev)
- case 0x40:
- m_agat7_interrupts = true;
- break;
+READ8_MEMBER(agat7_state::cassette_toggle_r)
+{
+ if (!machine().side_effect_disabled())
+ cassette_toggle_w(space, offset, 0);
+ return read_floatingbus();
+}
- case 0x50:
- m_agat7_interrupts = false;
+WRITE8_MEMBER(agat7_state::cassette_toggle_w)
+{
+ m_cassette_state ^= 1;
+ m_cassette->output(m_cassette_state ? 1.0f : -1.0f);
+}
- case 0x70:
- m_joystick_x1_time = machine().time().as_double() + m_x_calibration * m_joy1x->read();
- m_joystick_y1_time = machine().time().as_double() + m_y_calibration * m_joy1y->read();
- m_joystick_x2_time = machine().time().as_double() + m_x_calibration * m_joy2x->read();
- m_joystick_y2_time = machine().time().as_double() + m_y_calibration * m_joy2y->read();
- break;
- }
+READ8_MEMBER(agat7_state::speaker_toggle_r)
+{
+ if (!machine().side_effect_disabled())
+ speaker_toggle_w(space, offset, 0);
+ return read_floatingbus();
}
-READ8_MEMBER(agat7_state::c000_r)
+WRITE8_MEMBER(agat7_state::speaker_toggle_w)
{
- if (offset)
- logerror("%s: c000_r %04X == %02X\n", machine().describe_context(), offset+0xc000, 0);
- else if (m_strobe)
- logerror("%s: c000_r %04X == %02X\n", machine().describe_context(), offset+0xc000, m_transchar | m_strobe);
+ m_speaker_state ^= 1;
+ m_speaker->level_w(m_speaker_state);
+}
- switch (offset)
- {
- // keyboard latch. NB: agat7 returns 0 if latch is clear, agat9 returns char code.
- case 0x00: case 0x01: case 0x02: case 0x03: case 0x04: case 0x05: case 0x06: case 0x07:
- case 0x08: case 0x09: case 0x0a: case 0x0b: case 0x0c: case 0x0d: case 0x0e: case 0x0f:
- return m_strobe ? (m_transchar | m_strobe) : 0;
+READ8_MEMBER(agat7_state::interrupts_on_r)
+{
+ if (!machine().side_effect_disabled())
+ interrupts_on_w(space, offset, 0);
+ return read_floatingbus();
+}
- case 0x10: // reads any key down, clears strobe
- {
- uint8_t rv = m_transchar | (m_anykeydown ? 0x80 : 0x00);
- m_strobe = 0;
- return rv;
- }
+WRITE8_MEMBER(agat7_state::interrupts_on_w)
+{
+ m_agat7_interrupts = true;
+}
- case 0x60: // cassette in
- case 0x68:
- return m_cassette->input() > 0.0 ? 0x80 : 0;
+READ8_MEMBER(agat7_state::interrupts_off_r)
+{
+ if (!machine().side_effect_disabled())
+ interrupts_off_w(space, offset, 0);
+ return read_floatingbus();
+}
- case 0x61: // button 0
- case 0x69:
- return (m_joybuttons->read() & 0x10) ? 0x80 : 0;
+WRITE8_MEMBER(agat7_state::interrupts_off_w)
+{
+ m_agat7_interrupts = false;
+}
+
+READ8_MEMBER(agat7_state::flags_r)
+{
+ switch (offset)
+ {
+ case 0: // cassette in
+ return m_cassette->input() > 0.0 ? 0x80 : 0;
- case 0x62: // button 1
- case 0x6a:
- return (m_joybuttons->read() & 0x20) ? 0x80 : 0;
+ case 1: // button 0
+ return (m_joybuttons->read() & 0x10) ? 0x80 : 0;
- case 0x63: // button 2
- case 0x6b:
- return ((m_joybuttons->read() & 0x40) || (m_kbspecial->read() & 0x06)) ? 0 : 0x80;
+ case 2: // button 1
+ return (m_joybuttons->read() & 0x20) ? 0x80 : 0;
- case 0x64: // joy 1 X axis
- case 0x6c:
- return (space.machine().time().as_double() < m_joystick_x1_time) ? 0x80 : 0;
+ case 3: // button 2
+ return ((m_joybuttons->read() & 0x40) || !(m_kbspecial->read() & 0x06)) ? 0x80 : 0;
- case 0x65: // joy 1 Y axis
- case 0x6d:
- return (space.machine().time().as_double() < m_joystick_y1_time) ? 0x80 : 0;
+ case 4: // joy 1 X axis
+ return (space.machine().time().as_double() < m_joystick_x1_time) ? 0x80 : 0;
- case 0x66: // joy 2 X axis
- case 0x6e:
- return (space.machine().time().as_double() < m_joystick_x2_time) ? 0x80 : 0;
+ case 5: // joy 1 Y axis
+ return (space.machine().time().as_double() < m_joystick_y1_time) ? 0x80 : 0;
- case 0x67: // joy 2 Y axis
- case 0x6f:
- return (space.machine().time().as_double() < m_joystick_y2_time) ? 0x80 : 0;
+ case 6: // joy 2 X axis
+ return (space.machine().time().as_double() < m_joystick_x2_time) ? 0x80 : 0;
- default:
- do_io(space, offset);
- break;
+ case 7: // joy 2 Y axis
+ return (space.machine().time().as_double() < m_joystick_y2_time) ? 0x80 : 0;
}
- return read_floatingbus();
+ // this is never reached
+ return 0;
}
-WRITE8_MEMBER(agat7_state::c000_w)
+READ8_MEMBER(agat7_state::controller_strobe_r)
{
- logerror("%s: c000_w %04X <- %02X\n", machine().describe_context(), offset + 0xc000, data);
-
- switch (offset)
- {
- // clear keyboard latch
- case 0x10: case 0x11: case 0x12: case 0x13: case 0x14: case 0x15: case 0x16: case 0x17:
- case 0x18: case 0x19: case 0x1a: case 0x1b: case 0x1c: case 0x1d: case 0x1e: case 0x1f:
- m_strobe = 0;
- break;
+ if (!machine().side_effect_disabled())
+ controller_strobe_w(space, offset, 0);
+ return read_floatingbus();
+}
- default:
- do_io(space, offset);
- break;
- }
+WRITE8_MEMBER(agat7_state::controller_strobe_w)
+{
+ m_joystick_x1_time = machine().time().as_double() + m_x_calibration * m_joy1x->read();
+ m_joystick_y1_time = machine().time().as_double() + m_y_calibration * m_joy1y->read();
+ m_joystick_x2_time = machine().time().as_double() + m_x_calibration * m_joy2x->read();
+ m_joystick_y2_time = machine().time().as_double() + m_y_calibration * m_joy2y->read();
}
READ8_MEMBER(agat7_state::c080_r)
@@ -479,7 +528,7 @@ WRITE8_MEMBER(agat7_state::c100_w)
m_cnxx_slot = slotnum;
}
- m_slotdevice[slotnum]->write_cnxx(space, offset&0xff, data);
+ m_slotdevice[slotnum]->write_cnxx(space, offset & 0xff, data);
}
}
@@ -633,7 +682,14 @@ WRITE8_MEMBER(agat7_state::agat7_ram_w)
static ADDRESS_MAP_START( agat7_map, AS_PROGRAM, 8, agat7_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0xbfff) AM_READWRITE(agat7_ram_r, agat7_ram_w)
- AM_RANGE(0xc000, 0xc07f) AM_READWRITE(c000_r, c000_w)
+ AM_RANGE(0xc000, 0xc000) AM_MIRROR(0xf) AM_READ(keyb_data_r) AM_WRITENOP
+ AM_RANGE(0xc010, 0xc010) AM_MIRROR(0xf) AM_READWRITE(keyb_strobe_r, keyb_strobe_w)
+ AM_RANGE(0xc020, 0xc020) AM_MIRROR(0xf) AM_READWRITE(cassette_toggle_r, cassette_toggle_w)
+ AM_RANGE(0xc030, 0xc030) AM_MIRROR(0xf) AM_READWRITE(speaker_toggle_r, speaker_toggle_w)
+ AM_RANGE(0xc040, 0xc040) AM_MIRROR(0xf) AM_READWRITE(interrupts_on_r, interrupts_on_w)
+ AM_RANGE(0xc050, 0xc050) AM_MIRROR(0xf) AM_READWRITE(interrupts_off_r, interrupts_off_w)
+ AM_RANGE(0xc060, 0xc067) AM_MIRROR(0x8) AM_READ(flags_r) AM_WRITENOP
+ AM_RANGE(0xc070, 0xc070) AM_MIRROR(0xf) AM_READWRITE(controller_strobe_r, controller_strobe_w)
AM_RANGE(0xc080, 0xc0ef) AM_READWRITE(c080_r, c080_w)
AM_RANGE(0xc0f0, 0xc0ff) AM_READWRITE(agat7_membank_r, agat7_membank_w)
AM_RANGE(0xc100, 0xc6ff) AM_READWRITE(c100_r, c100_w)
@@ -725,20 +781,20 @@ static const uint8_t a2_key_remap[0x40][4] =
{ 0x1a,0x1a,0x1a,0x1a }, /* Down */
{ 0x10,0x10,0x10,0x10 }, /* KP1 */
{ 0x0d,0x0d,0x0d,0x0d }, /* Enter 31 */
- { 0x11,0x11,0x11,0x11 },
- { 0x12,0x12,0x12,0x12 },
- { 0x13,0x13,0x13,0x13 },
- { 0x14,0x14,0x14,0x14 },
- { 0x1c,0x1c,0x1c,0x1c },
- { 0x1d,0x1d,0x1d,0x1d },
- { 0x1e,0x1e,0x1e,0x1e },
- { 0x1f,0x1f,0x1f,0x1f },
- { 0x01,0x01,0x01,0x01 },
- { 0x02,0x02,0x02,0x02 },
- { 0x03,0x03,0x03,0x03 },
- { 0x04,0x04,0x04,0x04 },
- { 0x05,0x05,0x05,0x05 },
- { 0x06,0x06,0x06,0x06 },
+ { 0x11,0x11,0x11,0x11 }, /* KP2 */
+ { 0x12,0x12,0x12,0x12 }, /* KP3 */
+ { 0x13,0x13,0x13,0x13 }, /* KP4 */
+ { 0x14,0x14,0x14,0x14 }, /* KP5 */
+ { 0x1c,0x1c,0x1c,0x1c }, /* KP6 */
+ { 0x1d,0x1d,0x1d,0x1d }, /* KP7 */
+ { 0x1e,0x1e,0x1e,0x1e }, /* KP8 */
+ { 0x1f,0x1f,0x1f,0x1f }, /* KP9 */
+ { 0x01,0x01,0x01,0x01 }, /* KP0 */
+ { 0x02,0x02,0x02,0x02 }, /* KP. */
+ { 0x03,0x03,0x03,0x03 }, /* KP= */
+ { 0x04,0x04,0x04,0x04 }, /* PF1 */
+ { 0x05,0x05,0x05,0x05 }, /* PF2 */
+ { 0x06,0x06,0x06,0x06 }, /* PF3 */
};
WRITE_LINE_MEMBER(agat7_state::ay3600_data_ready_w)
@@ -777,19 +833,28 @@ TIMER_DEVICE_CALLBACK_MEMBER(agat7_state::ay3600_repeat)
}
}
-TIMER_DEVICE_CALLBACK_MEMBER(agat7_state::agat_timer)
+INTERRUPT_GEN_MEMBER(agat7_state::agat_vblank)
{
if (m_agat7_interrupts)
{
- m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
+ m_maincpu->set_input_line(M6502_NMI_LINE, PULSE_LINE);
}
}
-TIMER_DEVICE_CALLBACK_MEMBER(agat7_state::agat_vblank)
+TIMER_DEVICE_CALLBACK_MEMBER(agat7_state::timer_irq)
{
if (m_agat7_interrupts)
{
- m_maincpu->set_input_line(M6502_NMI_LINE, ASSERT_LINE);
+ switch (param & 0x3f)
+ {
+ case 0:
+ m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
+ break;
+
+ case 0x20:
+ m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
+ break;
+ }
}
}
@@ -833,8 +898,8 @@ static INPUT_PORTS_START( agat7_joystick )
PORT_CODE_DEC(JOYCODE_Y_UP_SWITCH) PORT_CODE_INC(JOYCODE_Y_DOWN_SWITCH)
PORT_START("joystick_buttons")
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_PLAYER(1) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(JOYCODE_BUTTON1)
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_PLAYER(1) PORT_CODE(KEYCODE_ENTER_PAD)PORT_CODE(JOYCODE_BUTTON2)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_PLAYER(1) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(JOYCODE_BUTTON1) PORT_CHAR(UCHAR_MAMEKEY(0_PAD))
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_PLAYER(1) PORT_CODE(KEYCODE_ENTER_PAD)PORT_CODE(JOYCODE_BUTTON2) PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD))
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_PLAYER(2) PORT_CODE(JOYCODE_BUTTON1)
INPUT_PORTS_END
@@ -879,7 +944,7 @@ static INPUT_PORTS_START( agat7_common )
PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('U') PORT_CHAR('u')
PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_CHAR('I') PORT_CHAR('i')
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('O') PORT_CHAR('o')
- PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('P') PORT_CHAR('@')
+ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('P') PORT_CHAR('p')
PORT_START("X2")
PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('D') PORT_CHAR('d')
@@ -890,8 +955,8 @@ static INPUT_PORTS_START( agat7_common )
PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('K') PORT_CHAR('k')
PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('L') PORT_CHAR('l')
PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('+')
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_LEFT) PORT_CODE(KEYCODE_LEFT)
- PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_RIGHT) PORT_CODE(KEYCODE_RIGHT)
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_LEFT) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
+ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_RIGHT) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
PORT_START("X3")
PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('Z') PORT_CHAR('z')
@@ -912,8 +977,8 @@ static INPUT_PORTS_START( agat7_common )
PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Esc") PORT_CODE(KEYCODE_ESC) PORT_CHAR(27)
PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('A') PORT_CHAR('a')
PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
- PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_UP) PORT_CODE(KEYCODE_UP)
- PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_DOWN) PORT_CODE(KEYCODE_DOWN)
+ PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_UP) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
+ PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_DOWN) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Num 1") PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD))
PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Return") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
@@ -932,8 +997,8 @@ static INPUT_PORTS_START( agat7_common )
PORT_START("X6")
PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num =") PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD))
PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("PF1") PORT_CODE(KEYCODE_SLASH_PAD) PORT_CHAR(UCHAR_MAMEKEY(SLASH_PAD))
- PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("PF2") PORT_CODE(KEYCODE_ASTERISK)
- PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("PF3") PORT_CODE(KEYCODE_MINUS_PAD)
+ PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("PF2") PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR(UCHAR_MAMEKEY(ASTERISK))
+ PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("PF3") PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD))
PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_UNUSED)
@@ -972,7 +1037,7 @@ static INPUT_PORTS_START( agat7_common )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Control") PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_SHIFT_2)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED)
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RESET") PORT_CODE(KEYCODE_F12)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RESET") PORT_CODE(KEYCODE_F12) PORT_CHAR(UCHAR_MAMEKEY(F12))
INPUT_PORTS_END
static INPUT_PORTS_START(agat7)
@@ -991,7 +1056,7 @@ static SLOT_INTERFACE_START(agat7_cards)
SLOT_INTERFACE("a7lang", A2BUS_AGAT7LANGCARD) // Agat-7 RAM Language Card -- decimal 3.089.119
SLOT_INTERFACE("a7ram", A2BUS_AGAT7RAM) // Agat-7 32K RAM Card -- decimal 3.089.119-01, KR565RU6D chips
SLOT_INTERFACE("a7fdc", A2BUS_AGAT7_FDC) // Disk II clone -- decimal 3.089.105
- // 840K floppy controller -- decimal 7.104.351
+ SLOT_INTERFACE("a7fdc840", A2BUS_AGAT840K_HLE) // 840K floppy controller -- decimal 7.104.351 or 3.089.023?
// Serial-parallel card -- decimal 3.089.106
// Printer card (agat9) -- decimal 3.089.174
@@ -1007,8 +1072,9 @@ SLOT_INTERFACE_END
static MACHINE_CONFIG_START( agat7 )
MCFG_CPU_ADD("maincpu", M6502, XTAL_14_3MHz / 14)
MCFG_CPU_PROGRAM_MAP(agat7_map)
+ MCFG_CPU_VBLANK_INT_DRIVER(A7_VIDEO_TAG ":a7screen", agat7_state, agat_vblank)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("agat7irq", agat7_state, agat_timer, attotime::from_hz(500))
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", agat7_state, timer_irq, A7_VIDEO_TAG ":a7screen", 0, 1)
MCFG_DEVICE_ADD(A7_VIDEO_TAG, AGAT7VIDEO, 0)
@@ -1111,5 +1177,5 @@ ROM_START( agat9 )
ROM_END
// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS
-COMP( 1983, agat7, apple2, 0, agat7, agat7, agat7_state, 0, "Agat", "Agat-7", MACHINE_NOT_WORKING)
+COMP( 1983, agat7, apple2, 0, agat7, agat7, agat7_state, 0, "Agat", "Agat-7", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_CONTROLS)
COMP( 1984, agat9, apple2, 0, agat7, agat7, agat7_state, 0, "Agat", "Agat-9", MACHINE_NOT_WORKING)
diff --git a/src/mame/drivers/aim65.cpp b/src/mame/drivers/aim65.cpp
index 17f9b005ddb..da7bfabb98b 100644
--- a/src/mame/drivers/aim65.cpp
+++ b/src/mame/drivers/aim65.cpp
@@ -206,7 +206,7 @@ static MACHINE_CONFIG_START( aim65 )
MCFG_MOS6530n_IN_PB_CB(READ8(aim65_state, aim65_riot_b_r))
MCFG_MOS6530n_IRQ_CB(INPUTLINE("maincpu", M6502_IRQ_LINE))
- MCFG_DEVICE_ADD("via6522_0", VIA6522, 0)
+ MCFG_DEVICE_ADD("via6522_0", VIA6522, AIM65_CLOCK)
MCFG_VIA6522_READPB_HANDLER(READ8(aim65_state, aim65_pb_r))
// in CA1 printer ready?
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(aim65_state, aim65_pb_w))
@@ -215,7 +215,7 @@ static MACHINE_CONFIG_START( aim65 )
// out CB2 turn printer on
MCFG_VIA6522_IRQ_HANDLER(INPUTLINE("maincpu", M6502_IRQ_LINE))
- MCFG_DEVICE_ADD("via6522_1", VIA6522, 0)
+ MCFG_DEVICE_ADD("via6522_1", VIA6522, AIM65_CLOCK)
MCFG_VIA6522_IRQ_HANDLER(INPUTLINE("maincpu", M6502_IRQ_LINE))
MCFG_DEVICE_ADD("pia6821", PIA6821, 0)
diff --git a/src/mame/drivers/aim65_40.cpp b/src/mame/drivers/aim65_40.cpp
index e1121a2f014..3837a0016a2 100644
--- a/src/mame/drivers/aim65_40.cpp
+++ b/src/mame/drivers/aim65_40.cpp
@@ -122,9 +122,9 @@ static MACHINE_CONFIG_START( aim65_40 )
/* sound hardware */
/* devices */
- MCFG_DEVICE_ADD(M6522_0_TAG, VIA6522, 0)
- MCFG_DEVICE_ADD(M6522_1_TAG, VIA6522, 0)
- MCFG_DEVICE_ADD(M6522_2_TAG, VIA6522, 0)
+ MCFG_DEVICE_ADD(M6522_0_TAG, VIA6522, 1000000)
+ MCFG_DEVICE_ADD(M6522_1_TAG, VIA6522, 1000000)
+ MCFG_DEVICE_ADD(M6522_2_TAG, VIA6522, 1000000)
MCFG_DEVICE_ADD(M6551_TAG, MOS6551, 0)
MCFG_MOS6551_XTAL(XTAL_1_8432MHz)
MCFG_MOS6551_TXD_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_txd))
diff --git a/src/mame/drivers/airraid.cpp b/src/mame/drivers/airraid.cpp
index 018e149dcc4..8a85510ad8e 100644
--- a/src/mame/drivers/airraid.cpp
+++ b/src/mame/drivers/airraid.cpp
@@ -601,14 +601,14 @@ DRIVER_INIT_MEMBER(airraid_state,cshootere)
m_decrypted_opcodes[A] ^= 0x02;
if (BIT(A,9) || !BIT(A,5) || BIT(A,3))
- m_decrypted_opcodes[A] = BITSWAP8(m_decrypted_opcodes[A],7,6,1,4,3,2,5,0);
+ m_decrypted_opcodes[A] = bitswap<8>(m_decrypted_opcodes[A],7,6,1,4,3,2,5,0);
/* decode the data */
if (BIT(A,5))
rom[A] ^= 0x40;
if (BIT(A,9) || !BIT(A,5))
- rom[A] = BITSWAP8(rom[A],7,6,1,4,3,2,5,0);
+ rom[A] = bitswap<8>(rom[A],7,6,1,4,3,2,5,0);
}
DRIVER_INIT_CALL(cshooter);
diff --git a/src/mame/drivers/ajax.cpp b/src/mame/drivers/ajax.cpp
index bd4db94f2be..7f5c449de89 100644
--- a/src/mame/drivers/ajax.cpp
+++ b/src/mame/drivers/ajax.cpp
@@ -17,7 +17,7 @@
#include "includes/konamipt.h"
#include "cpu/z80/z80.h"
-#include "cpu/m6809/m6809.h"
+#include "cpu/m6809/hd6309.h"
#include "cpu/m6809/konami.h"
#include "sound/ym2151.h"
#include "speaker.h"
@@ -173,7 +173,7 @@ static MACHINE_CONFIG_START( ajax )
MCFG_CPU_ADD("maincpu", KONAMI, XTAL_24MHz/2/4) /* 052001 12/4 MHz*/
MCFG_CPU_PROGRAM_MAP(ajax_main_map)
- MCFG_CPU_ADD("sub", M6809, 3000000) /* ? */
+ MCFG_CPU_ADD("sub", HD6309E, 3000000) /* ? */
MCFG_CPU_PROGRAM_MAP(ajax_sub_map)
MCFG_CPU_ADD("audiocpu", Z80, 3579545) /* 3.58 MHz */
diff --git a/src/mame/drivers/alesis.cpp b/src/mame/drivers/alesis.cpp
index 4a18d1fd05e..c7e9fc91bf5 100644
--- a/src/mame/drivers/alesis.cpp
+++ b/src/mame/drivers/alesis.cpp
@@ -472,7 +472,7 @@ DRIVER_INIT_MEMBER(alesis_state,hr16)
uint8_t *orig = memregion("user1")->base();
for (i = 0; i < 0x8000; i++)
{
- ROM[BITSWAP16(i,15,14,13,12,11,10,9,8,0,1,2,3,4,5,6,7)] = orig[i];
+ ROM[bitswap<16>(i,15,14,13,12,11,10,9,8,0,1,2,3,4,5,6,7)] = orig[i];
}
}
diff --git a/src/mame/drivers/alphatpx.cpp b/src/mame/drivers/alphatpx.cpp
index fcb3d9de838..67e8751628b 100644
--- a/src/mame/drivers/alphatpx.cpp
+++ b/src/mame/drivers/alphatpx.cpp
@@ -25,15 +25,18 @@ P1
Upper 32K
0x4000 - 0x400a reserved
0x4010 - 0xc000 32K RAM
+1x 160K, single sided, 40 tracks, 16 sectors/track, 256 bytes/sector floppy disk drive
P2, P2S
Upper 48K
0x4000 - 0x400a reserved
0x4010 - 0xfff 48K RAM
+P2: 2x 160K, single sided, 40 tracks, 16 sectors/track, 256 bytes/sector floppy disk drives
P2 U, paging via
An adapter with RAM at 0x0000 and 0x3fff and the banking logic (see above) is added to the the standard 48K memory card.
16K memory card
+P2S, P2U: 2x 320K, double sided, 40 tracks, 16 sectors/track, 256 bytes/sector floppy disk drives
P3, P4
0x0000 - 0x0fff ROM monitor (MOS)
@@ -42,13 +45,16 @@ P3, P4
0x1c00 - 0x2fff free
0x3000 - 0x3fff video memory
0x4000 - 0xffff RAM
-
+P3: 2x785K, double sided, 80 tracks, 5 sectors/track, 1024 bytes/sector floppy disk drives
+P4: 1x785K, double sided, 80 tracks, 5 sectors/track, 1024 bytes/sector floppy disk drive, 1x harddisk 360 tracks, 4 heads, 17 sectors/track, 512 bytes/sector
P2 U and P3 support regular CP/M use with a full 64K RAM complement.
Still, the video RAM is at 0x3000 and 0x3ffff even for these machines, and from what I've read they also use the routine present in the ROM monitor, the MOS.
That means, that in order to update the video RAM and probably other I/O the lower 16K (page 0) are constantly paged in and paged out.
-
This is accomplished by writing 2FH to port 0x78 in order to switch in the ROM (and assorted, see below) area and by writing 63H to port 0x78 in order to swap the full 64K RAM back in.
+
+P30 and P40 were P3 and P4's with an additional 8088 card (some with an extra graphics extension) to support MS-DOS.
+
***************************************************************************/
#include "emu.h"
@@ -323,10 +329,13 @@ INPUT_PORTS_END
// FLOPPY
//**************************************************************************
-static SLOT_INTERFACE_START( alphatp3_floppies )
+static SLOT_INTERFACE_START( alphatp3_floppies ) // two BASF 2471 drives
SLOT_INTERFACE("525qd", FLOPPY_525_QD)
SLOT_INTERFACE_END
+static SLOT_INTERFACE_START( alphatp2_floppies ) // two BASF 6106 drives
+ SLOT_INTERFACE("525ssdd", FLOPPY_525_SSDD)
+SLOT_INTERFACE_END
//**************************************************************************
// VIDEO
@@ -558,6 +567,12 @@ static MACHINE_CONFIG_START( alphatp3 )
MCFG_FLOPPY_DRIVE_ADD("fdc:1", alphatp3_floppies, "525qd", floppy_image_device::default_floppy_formats)
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED (alphatp2, alphatp3)
+ MCFG_DEVICE_REMOVE("fdc:0")
+ MCFG_DEVICE_REMOVE("fdc:1")
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", alphatp2_floppies, "525ssdd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", alphatp2_floppies, "525ssdd", floppy_image_device::default_floppy_formats)
+MACHINE_CONFIG_END
//**************************************************************************
// ROM DEFINITIONS
@@ -566,40 +581,59 @@ MACHINE_CONFIG_END
// Alphatronic P2
ROM_START( alphatp2 ) // P2 ROM space 0x1800
ROM_REGION(0x1800, "boot", 0)
- ROM_SYSTEM_BIOS(0, "p2_es", "p2_es")
- ROMX_LOAD("caap_p2_es.bin", 0x0000, 0x1800, CRC(FBA85CD3) SHA1(E82482AF6D39F892B88868677572898945E02581), ROM_BIOS(1) ) // P2 SPANIEN
- ROM_SYSTEM_BIOS(1, "p2_sks", "p2_sks")
- ROMX_LOAD("mos3-p2_sks.bin", 0x0000, 0x1800, CRC(C045AADB) SHA1(1478530894E1DA53CC96DDB765DD1E03FF3ADEF1), ROM_BIOS(2) ) // P2 sks
- ROM_SYSTEM_BIOS(2, "p2_ta", "p2_ta")
- ROMX_LOAD("prom2p00.bin", 0x0000, 0x0800, CRC(c98d2982) SHA1(11e98ae441b7a9c8dfd22795f8208667959f1d1c), ROM_BIOS(3) ) // P2 TA
- ROMX_LOAD("prom2p01.bin", 0x0800, 0x0800, CRC(14f19693) SHA1(7ecb66818a3e352fede1857a18cd12bf742603a9), ROM_BIOS(3) )
- ROMX_LOAD("prom2p02.bin", 0x1000, 0x0800, CRC(f304c3aa) SHA1(92213e77e4e6de12a4eaee25a9c1ec0ab54e93d4), ROM_BIOS(3) )
+ ROM_SYSTEM_BIOS(0, "caap94-96", "caap94-96")
+ ROM_SYSTEM_BIOS(1, "caap04-06", "caap04-06")
+ ROM_SYSTEM_BIOS(2, "p2_es", "p2_es")
+ ROM_SYSTEM_BIOS(3, "p2_sks", "p2_sks")
+ ROM_SYSTEM_BIOS(4, "p2_ta", "p2_ta")
+
+ ROMX_LOAD("caap_96_00_5a.bin", 0x0000, 0x0800, CRC(cb137796) SHA1(876bd0762faffc7b74093922d8fbf1c72ec70060), ROM_BIOS(1) ) // earlier P2, three 16K RAM boards
+ ROMX_LOAD("caap_05_02_12.bin", 0x0800, 0x0800, CRC(14f19693) SHA1(7ecb66818a3e352fede1857a18cd12bf742603a9), ROM_BIOS(1) )
+ ROMX_LOAD("caap_94_01_50.bin", 0x1000, 0x0800, CRC(fda8d4a4) SHA1(fa91e6e8504e7f84cf69d86f72826ad5405fd82d), ROM_BIOS(1) )
+
+ ROMX_LOAD("prom2p00.bin", 0x0000, 0x0800, CRC(c98d2982) SHA1(11e98ae441b7a9c8dfd22795f8208667959f1d1c), ROM_BIOS(2) ) // later P2, one 48K RAM board
+ ROMX_LOAD("prom2p01.bin", 0x0800, 0x0800, CRC(14f19693) SHA1(7ecb66818a3e352fede1857a18cd12bf742603a9), ROM_BIOS(2) )
+ ROMX_LOAD("prom2p02.bin", 0x1000, 0x0800, CRC(f304c3aa) SHA1(92213e77e4e6de12a4eaee25a9c1ec0ab54e93d4), ROM_BIOS(2) )
+
+ ROMX_LOAD("caap_p2_es.bin", 0x0000, 0x1800, CRC(FBA85CD3) SHA1(E82482AF6D39F892B88868677572898945E02581), ROM_BIOS(3) ) // P2 Spain
+
+ ROMX_LOAD("mos3-p2_sks.bin", 0x0000, 0x1800, CRC(C045AADB) SHA1(1478530894E1DA53CC96DDB765DD1E03FF3ADEF1), ROM_BIOS(4) ) // P2 sks
+
+ ROMX_LOAD("prom2p00.bin", 0x0000, 0x0800, CRC(c98d2982) SHA1(11e98ae441b7a9c8dfd22795f8208667959f1d1c), ROM_BIOS(5) ) // P2 TA
+ ROMX_LOAD("prom2p01.bin", 0x0800, 0x0800, CRC(14f19693) SHA1(7ecb66818a3e352fede1857a18cd12bf742603a9), ROM_BIOS(5) )
+ ROMX_LOAD("prom2p02.bin", 0x1000, 0x0800, CRC(f304c3aa) SHA1(92213e77e4e6de12a4eaee25a9c1ec0ab54e93d4), ROM_BIOS(5) )
ROM_REGION(0x400, "kbdmcu", 0)
- ROM_LOAD("p3_keyboard_8278.bin", 0x000, 0x400, CRC(5DB00D85) SHA1(0DC8E274A5AECE261EF60494901601C0D8B1EB51)) // borrowed from rfka01 machine #2 until we have a proper dump from a P2
+ ROM_LOAD("p2_keyboard_ip8041a_8278.bin", 0x000, 0x400, CRC(5db00d85) SHA1(0dc8e274a5aece261ef60494901601c0d8b1eb51)) // same across all dumped P2 and P3 machines
ROM_REGION(0x800, "gfx", 0)
- ROM_LOAD("cajp08_01_15.bin", 0x000, 0x800, CRC(4ed11dac) SHA1(9db9b8e0edf471faaddbb5521d6223121146bab8)) // borrowed from rfka01 machine #1 until we have a proper dump from a P2
+ ROMX_LOAD("cajp_97_00_5a.bin", 0x000, 0x800, CRC(aa5eab85) SHA1(2718924f5520e7e9aad635786847e78e3096b285), ROM_BIOS(1))
+ ROMX_LOAD("cajp_01_01_28.bin", 0x000, 0x800, CRC(d6248209) SHA1(21689703de7183ecffb410eb8a6d516efe27da9d), ROM_BIOS(2))
+ ROMX_LOAD("cajp_01_01_28.bin", 0x000, 0x800, CRC(d6248209) SHA1(21689703de7183ecffb410eb8a6d516efe27da9d), ROM_BIOS(3))
+ ROMX_LOAD("cajp_01_01_28.bin", 0x000, 0x800, CRC(d6248209) SHA1(21689703de7183ecffb410eb8a6d516efe27da9d), ROM_BIOS(4))
+ ROMX_LOAD("cajp_01_01_28.bin", 0x000, 0x800, CRC(d6248209) SHA1(21689703de7183ecffb410eb8a6d516efe27da9d), ROM_BIOS(5))
ROM_END
// Alphatronic P3
ROM_START( alphatp3 )
ROM_REGION(0x1800, "boot", 0) // P3 ROM space 0x1000
- ROM_LOAD("caap36_02_19.bin", 0x0000, 0x1000, CRC(23df6666) SHA1(5ea04cd299dec9951425eb91ecceb4818c4c6378)) // identical between rfka01 #1 and #2
-
+ ROM_SYSTEM_BIOS(0, "gx347", "gx347") // earlier P3, seperate 48K and 16K RAM boards
+ ROM_SYSTEM_BIOS(1, "lb352", "lb352") // later P3, one 64K RAM board
+
+ ROM_LOAD("caap36_02_19.bin", 0x0000, 0x1000, CRC(23df6666) SHA1(5ea04cd299dec9951425eb91ecceb4818c4c6378) ) // identical between earlier and later P3
+ // BIOS names taken from CPU card labels
ROM_REGION(0x400, "kbdmcu", 0)
-// ROM_LOAD("p3_keyboard_mab8041a.bin", 0x000, 0x400, CRC(4fd60dc1) SHA1(165f0c5afdef37385d06cf5caeae8422536de7fc)) // rfka01 machine #1
- ROM_LOAD("p3_keyboard_8278.bin", 0x000, 0x400, CRC(5DB00D85) SHA1(0DC8E274A5AECE261EF60494901601C0D8B1EB51)) // rfka01 machine #2
+ ROM_LOAD("p3_keyboard_8278.bin", 0x000, 0x400, CRC(5db00d85) SHA1(0dc8e274a5aece261ef60494901601c0d8b1eb51) )
ROM_REGION(0x800, "gfx", 0)
- // ROM_LOAD("cajp08_00_15.bin", 0x000, 0x800, CRC(d6248209) SHA1(21689703de7183ecffb410eb8a6d516efe27da9d)) // rfka01 machine #2
- ROM_LOAD("cajp08_01_15.bin", 0x000, 0x800, CRC(4ed11dac) SHA1(9db9b8e0edf471faaddbb5521d6223121146bab8)) // rfka01 machine #1
+ ROMX_LOAD("cajp08_00_15.bin", 0x000, 0x800, CRC(d6248209) SHA1(21689703de7183ecffb410eb8a6d516efe27da9d), ROM_BIOS(1) )
+ ROMX_LOAD("cajp08_01_15.bin", 0x000, 0x800, CRC(4ed11dac) SHA1(9db9b8e0edf471faaddbb5521d6223121146bab8), ROM_BIOS(2) )
ROM_END
// Alphatronic P30
ROM_START( alphatp30 ) // P30 add-on card with 8088 needs to be emulated to boot DOS
ROM_REGION(0x1800, "boot", 0)
- ROM_LOAD("hasl17.07.84.bin", 0x0000, 0x1000, CRC(6A91701B) SHA1(8A4F925D0FABAB37852A54D04E06DEB2AEAA349C)) // netmercer EPRom P30 ...wait for INT6.5 or INT5.5 with RIM to write char in hsync or hsync GAP-time !!
+ ROM_LOAD("hasl17.07.84.bin", 0x0000, 0x1000, CRC(6A91701B) SHA1(8A4F925D0FABAB37852A54D04E06DEB2AEAA349C)) // netmercer Eprom P30 ...wait for INT6.5 or INT5.5 with RIM to write char in hsync or hsync GAP-time !!
ROM_REGION(0x400, "kbdmcu", 0)
ROM_LOAD("p3_keyboard_8278.bin", 0x000, 0x400, CRC(5DB00D85) SHA1(0DC8E274A5AECE261EF60494901601C0D8B1EB51)) // borrowed from rfka01 machine #2
@@ -616,6 +650,6 @@ ROM_END
//**************************************************************************
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
-COMP( 198?, alphatp2, alphatp3, 0, alphatp3, alphatp3, alphatpx_state, 0, "Triumph-Adler", "alphatronic P2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+COMP( 198?, alphatp2, alphatp3, 0, alphatp2, alphatp3, alphatpx_state, 0, "Triumph-Adler", "alphatronic P2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
COMP( 1982, alphatp3, 0, 0, alphatp3, alphatp3, alphatpx_state, 0, "Triumph-Adler", "alphatronic P3", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
COMP( 198?, alphatp30, alphatp3, 0, alphatp3, alphatp3, alphatpx_state, 0, "Triumph-Adler", "alphatronic P30",MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mame/drivers/altos5.cpp b/src/mame/drivers/altos5.cpp
index df6ccb18d75..08fcdf9b45c 100644
--- a/src/mame/drivers/altos5.cpp
+++ b/src/mame/drivers/altos5.cpp
@@ -126,9 +126,9 @@ void altos5_state::setup_banks(uint8_t source)
// WPRT | template | dma bank / cpu bank
if (source == 1) // use DMA banks only if BUSACK is asserted
- offs = ((BITSWAP8(m_port09, 0, 0, 0, 5, 1, 2, 7, 6) << 4) & 0x1f0) ^ 0x100;
+ offs = ((bitswap<8>(m_port09, 0, 0, 0, 5, 1, 2, 7, 6) << 4) & 0x1f0) ^ 0x100;
else
- offs = ((BITSWAP8(m_port09, 0, 0, 0, 5, 1, 2, 4, 3) << 4) & 0x1f0) ^ 0x100;
+ offs = ((bitswap<8>(m_port09, 0, 0, 0, 5, 1, 2, 4, 3) << 4) & 0x1f0) ^ 0x100;
temp = offs;
if ((source == 2) || (temp != m_curr_bank))
diff --git a/src/mame/drivers/amaticmg.cpp b/src/mame/drivers/amaticmg.cpp
index d2cf7a98511..bbf0e691862 100644
--- a/src/mame/drivers/amaticmg.cpp
+++ b/src/mame/drivers/amaticmg.cpp
@@ -1055,7 +1055,7 @@ void amaticmg_state::encf(uint8_t ciphertext, int address, uint8_t &plaintext, i
int aux = address & 0xfff;
aux = aux ^ (aux>>6);
aux = ((aux<<6) | (aux>>6)) & 0xfff;
- uint8_t aux2 = BITSWAP8(aux, 9,10,4,1,6,0,7,3);
+ uint8_t aux2 = bitswap<8>(aux, 9,10,4,1,6,0,7,3);
aux2 ^= aux2>>4;
aux2 = (aux2<<4) | (aux2>>4);
ciphertext ^= ciphertext<<4;
diff --git a/src/mame/drivers/ampoker2.cpp b/src/mame/drivers/ampoker2.cpp
index e5da31eb8ed..f698d41b99a 100644
--- a/src/mame/drivers/ampoker2.cpp
+++ b/src/mame/drivers/ampoker2.cpp
@@ -1392,7 +1392,7 @@ DRIVER_INIT_MEMBER(ampoker2_state, rabbitpk)
for (i = start; i < size; i++)
{
- rom[i] = BITSWAP8(rom[i], 1, 2, 5, 4, 3, 0, 7, 6) ^ dec_base[(i >> 2) & 0x1f];
+ rom[i] = bitswap<8>(rom[i], 1, 2, 5, 4, 3, 0, 7, 6) ^ dec_base[(i >> 2) & 0x1f];
}
}
diff --git a/src/mame/drivers/apc.cpp b/src/mame/drivers/apc.cpp
index 98952ae0cdb..a57bea333b5 100644
--- a/src/mame/drivers/apc.cpp
+++ b/src/mame/drivers/apc.cpp
@@ -394,12 +394,12 @@ CH3_EXA == 0X3E ; CH-3 extended address (W)
READ8_MEMBER(apc_state::apc_dma_r)
{
- return m_dmac->read(space, BITSWAP8(offset,7,6,5,4,2,1,0,3), 0xff);
+ return m_dmac->read(space, bitswap<8>(offset,7,6,5,4,2,1,0,3), 0xff);
}
WRITE8_MEMBER(apc_state::apc_dma_w)
{
- m_dmac->write(space, BITSWAP8(offset,7,6,5,4,2,1,0,3), data, 0xff);
+ m_dmac->write(space, bitswap<8>(offset,7,6,5,4,2,1,0,3), data, 0xff);
}
WRITE8_MEMBER(apc_state::apc_irq_ack_w)
diff --git a/src/mame/drivers/apollo.cpp b/src/mame/drivers/apollo.cpp
index ce9ec5b76ad..f175fff6fd1 100644
--- a/src/mame/drivers/apollo.cpp
+++ b/src/mame/drivers/apollo.cpp
@@ -29,7 +29,7 @@
#include "includes/apollo.h"
-#include "cpu/m68000/m68kcpu.h"
+#include "cpu/m68000/m68000.h"
#include "sound/beep.h"
// we use set_verbose
@@ -212,6 +212,7 @@ uint8_t apollo_get_ram_config_byte(void) {
return ram_config_byte;
}
+#if 0
/***************************************************************************
apollo_instruction_hook
must be called by the CPU core before executing each instruction
@@ -264,6 +265,8 @@ READ32_MEMBER(apollo_state::apollo_instruction_hook)
return apollo_debug_instruction_hook(m_maincpu, offset);
}
+#endif
+
/***************************************************************************
apollo bus error
***************************************************************************/
@@ -495,7 +498,7 @@ READ32_MEMBER(apollo_state::apollo_unmapped_r)
} else if (address == 0x0000ac00 && VERBOSE < 2) {
// omit logging for Bus error test address in DN3000 boot prom
} else {
- SLOG1(("unmapped memory dword read from %08x with mask %08x (ir=%04x)", address , mem_mask, m68k->ir));
+ SLOG1(("unmapped memory dword read from %08x with mask %08x (ir=%04x)", address , mem_mask, m68k->state_int(M68K_IR)));
}
/* unmapped; access causes a bus error */
@@ -920,7 +923,9 @@ void apollo_state::machine_reset()
m_node_id->set_node_id_from_disk();
}
+#if 0
m_maincpu->set_instruction_hook(read32_delegate(FUNC(apollo_state::apollo_instruction_hook),this));
+#endif
}
WRITE_LINE_MEMBER(apollo_state::apollo_reset_instr_callback)
diff --git a/src/mame/drivers/apple2e.cpp b/src/mame/drivers/apple2e.cpp
index dcfde97b251..cd97f6e4a0d 100644
--- a/src/mame/drivers/apple2e.cpp
+++ b/src/mame/drivers/apple2e.cpp
@@ -743,7 +743,7 @@ void apple2e_state::machine_start()
// let's do that in the modern MAME way
for (int i=0; i<0x040000; i++)
{
- m_cec_remap[i] = BITSWAP8(m_cec_ptr[i], 0, 1, 2, 3, 4, 5, 6, 7);
+ m_cec_remap[i] = bitswap<8>(m_cec_ptr[i], 0, 1, 2, 3, 4, 5, 6, 7);
}
// remap cec gfx1 rom
diff --git a/src/mame/drivers/applix.cpp b/src/mame/drivers/applix.cpp
index 9247a63fc29..0b27a843b49 100644
--- a/src/mame/drivers/applix.cpp
+++ b/src/mame/drivers/applix.cpp
@@ -835,7 +835,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(applix_state::cass_timer)
static MACHINE_CONFIG_START( applix )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M68000, 7500000)
+ MCFG_CPU_ADD("maincpu", M68000, XTAL_30MHz / 4) // MC68000-P10 @ 7.5 MHz
MCFG_CPU_PROGRAM_MAP(applix_mem)
MCFG_CPU_ADD("subcpu", Z80, XTAL_16MHz / 2) // Z80H
MCFG_CPU_PROGRAM_MAP(subcpu_mem)
@@ -866,13 +866,13 @@ static MACHINE_CONFIG_START( applix )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
/* Devices */
- MCFG_MC6845_ADD("crtc", MC6845, "screen", 1875000) // 6545
+ MCFG_MC6845_ADD("crtc", MC6845, "screen", XTAL_30MHz / 16) // MC6545 @ 1.875 MHz
MCFG_MC6845_SHOW_BORDER_AREA(false)
MCFG_MC6845_CHAR_WIDTH(8)
MCFG_MC6845_UPDATE_ROW_CB(applix_state, crtc_update_row)
MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(applix_state, vsync_w))
- MCFG_DEVICE_ADD("via6522", VIA6522, 0)
+ MCFG_DEVICE_ADD("via6522", VIA6522, XTAL_30MHz / 4 / 10) // VIA uses 68000 E clock
MCFG_VIA6522_READPB_HANDLER(READ8(applix_state, applix_pb_r))
// in CB1 kbd clk
// in CA2 vsync
diff --git a/src/mame/drivers/aquarium.cpp b/src/mame/drivers/aquarium.cpp
index c4278c1346d..91d8032cdb2 100644
--- a/src/mame/drivers/aquarium.cpp
+++ b/src/mame/drivers/aquarium.cpp
@@ -68,7 +68,7 @@ WRITE8_MEMBER(aquarium_state::aquarium_watchdog_w)
WRITE8_MEMBER(aquarium_state::aquarium_z80_bank_w)
{
// uses bits ---x --xx
- data = BITSWAP8(data, 7, 6, 5, 2, 3, 1, 4, 0);
+ data = bitswap<8>(data, 7, 6, 5, 2, 3, 1, 4, 0);
//printf("aquarium bank %04x %04x\n", data, mem_mask);
// aquarium bank 0003 00ff - correct (title) 011
@@ -82,7 +82,7 @@ WRITE8_MEMBER(aquarium_state::aquarium_z80_bank_w)
uint8_t aquarium_state::aquarium_snd_bitswap( uint8_t scrambled_data )
{
- return BITSWAP8(scrambled_data, 0, 1, 2, 3, 4, 5, 6, 7);
+ return bitswap<8>(scrambled_data, 0, 1, 2, 3, 4, 5, 6, 7);
}
READ8_MEMBER(aquarium_state::aquarium_oki_r)
diff --git a/src/mame/drivers/aristmk4.cpp b/src/mame/drivers/aristmk4.cpp
index 1e12e519955..cd3527f08da 100644
--- a/src/mame/drivers/aristmk4.cpp
+++ b/src/mame/drivers/aristmk4.cpp
@@ -1747,7 +1747,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(aristmk4_state::aristmk4_pf)
static MACHINE_CONFIG_START( aristmk4 )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M6809, MAIN_CLOCK/8) // 1.5mhz
+ MCFG_CPU_ADD("maincpu", MC6809E, MAIN_CLOCK/8) // M68B09E @ 1.5 MHz
MCFG_CPU_PROGRAM_MAP(aristmk4_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", aristmk4_state, irq0_line_hold)
@@ -1772,7 +1772,7 @@ static MACHINE_CONFIG_START( aristmk4 )
MCFG_I8255_IN_PORTB_CB(READ8(aristmk4_state, pb1_r))
MCFG_I8255_IN_PORTC_CB(READ8(aristmk4_state, pc1_r))
- MCFG_DEVICE_ADD("via6522_0", VIA6522, 0) /* 1 MHz.(only 1 or 2 MHz.are valid) */
+ MCFG_DEVICE_ADD("via6522_0", VIA6522, MAIN_CLOCK/8) // R65C22P2
MCFG_VIA6522_READPA_HANDLER(READ8(aristmk4_state, via_a_r))
MCFG_VIA6522_READPB_HANDLER(READ8(aristmk4_state, via_b_r))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(aristmk4_state, via_a_w))
diff --git a/src/mame/drivers/aristmk5.cpp b/src/mame/drivers/aristmk5.cpp
index 7fa04954cb0..f1bcc30570a 100644
--- a/src/mame/drivers/aristmk5.cpp
+++ b/src/mame/drivers/aristmk5.cpp
@@ -10,8 +10,11 @@
There are threads that say when running in VGA mode an original AA
will play music etc. at half the expected speed, so it is likely
that the way the timers work differs in this mode (25Hz instead of 50?)
- - Sounds are being output as bleeps and bloops in the older games and New Zealand/touchscreen games
- - Games occasionally give a coin diverter fault when inserting coins, mainly with US region games
+ - Sounds are being output as bleeps and bloops in the older games and New Zealand/touchscreen games.
+ - Games occasionally give a coin diverter fault when inserting coins, mainly with US region games.
+ - Early US games will lock up completely if a hand pay is performed, requiring a complete memory reset.
+ To avoid this until the issue has been fixed, change the hopper and jackpot limits to a very large number
+ such as 999999 so large wins will be paid via the hopper. Games where the music/sound works do not have this problem.
- Venezuelan games give a note acceptor error on boot even if the note acceptor is disabled in the options
- qnilebr (actually the 0301718V BIOS itself) won't accept coins on boot until the jackpot reset key is toggled (bug or not?)
- Later style games (e.g. with the newer music format) from NSW/ACT and Venezuela lock up (hang) after 50 spins
@@ -30,8 +33,8 @@
Casino game EPROMs are loaded in U8/U12 and beyond.
Casino games (except qnilebr), as well as games from Queensland and Victoria, require a comms protocol to be emulated,
- otherwise they will remain in a disabled state and will not coin up.
- As of MAME 0.185, only New Zealand (0700474V) and Brazil (0301718V) BIOSes are dumped.
+ otherwise they will remain in a disabled state and cannot be played.
+ Only New Zealand (0700474V) and Brazilian (0301718V) casino BIOSes have been dumped so far.
The Brazilian casino BIOS does not use comms, therefore qnilebr is playable. By swapping u7/u11 with the other
casino games (goldpyrb/jungjuic/penpir2), these games also become playable.
@@ -50,7 +53,8 @@
Other games replace the cards with animations, for example the double up game in Prize Fight bets on which
boxer will knock out the other, likewise in Sumo Spins one sumo wrestler will ring-out the other.
In both Prize Fight and Sumo Spins the two opponents are wearing either red or black just like the cards they replaced.
- The gamble option is not available in the Brazilian casino BIOS.
+ The gamble feature is not available if a win coincides with a jackpot pay such as a Hyperlink feature.
+ The gamble option is also not available in the Brazilian casino BIOS.
On US machines which do not require set chips, dip switch DSW2-1 enables or disables the double up feature.
On US games which do require set chips, the gamble option is in the set chips, if the regional jurisdiction allows for it to be enabled.
@@ -58,12 +62,13 @@
Regional button layout differences:
US games have the payline buttons on the top row, the player selects the number of lines to be played first before choosing the bet multiplier to spin.
+ Some US games can have the bet and play line buttons reversed in the set chip options, which creates the same similar button layout as non-US games.
Non-US games have the bet buttons on the top row, the player selects the bet multiplier first before selecting the amount of lines to play.
An exception to the non-US layout applies if the game only has one payline, for example wamazona. In this case, the bottom row is used for the bet multipliers.
Some non-US games default to 1 credit per line when there are zero credits in the machine so that a player does not accidentally bet higher than intended.
Some games can be set up to multiple bet and line configurations. Usually this applies to the US set chip games,
- however some Australian games also have this option, such as baddog, marmagic, trojhors and tritreat.
+ however some non-US games also have this option, such as baddog, marmagic, trojhors and tritreat.
Multiple button panels are supported as artwork files and can be toggled in MAME's Video Options menu.
Some early games such as swhr2a have an option to have either music or coin sounds to be played during a win.
@@ -85,19 +90,20 @@
Penguin Pucks(?) - Arctic/Antarctic theme, based on Cash Express. Official name is unknown, this name is found in the strings next to the Penguin Pays game title in pengpuck.
Maximillions - Game show style theme, stylized as Maximillion$. A similar game for the US market is Millioniser, stylized as Millioni$er.
Scorchin' Fortune - Sports car/racing theme, based on Cash Express.
- Born To Be Wild - Motorcycle theme, based on Cash Express, later recycled on MK6 hardware as Thunder Heart (not to be confused with the game itself).
+ Born To Be Wild - Motorcycle theme, based on Cash Express, later recycled on MK6 hardware as Thunderheart (not to be confused with the game itself, Thunder Heart).
Note: The Hyperlink jackpot feature trigger is won at random and is predetermined the instant the player has started a game.
Pressing the buttons to stop the Hyperlink reels is only a visual effect with no skill involved, likewise touching the icons to reveal the characters in Maximillions.
The jackpot level won (e.g. Grand, Major, Minor or Mini) is also predetermined at the start of the game.
- Most Hyperlink games have a set of four eight-digit, 7-segment LEDs installed in the topbox for displaying the progressive jackpots.
+ Most Hyperlink games have a set of four eight-digit, seven-segment LEDs installed in the topbox for displaying the progressive jackpots.
The Grand and Major jackpot displays are larger than the Minor and Mini jackpot displays.
There is a discrepancy with some game names between the ROMs and the artwork or even official documents:
For example, swhr2 is called Sweethearts II inside the ROM, however on the artwork it is called Sweet Hearts II.
Mountain Money displays "MOONSHINE MONEY" when a win with the wild Moonshine occurs. The game itself is not called Moonshine Money.
Chicken displays "Chicken Run Feature Completed" at the end of the feature. The game itself is not called Chicken Run.
+ Thunder Heart is named Thunderheart on the artwork, as well as on the later Hyperlink jackpot games.
Some games also have completely different artwork (using the same theme and paytable) but use the same ROMs for another game. Examples are:
Heart Throb = Sweethearts II (Heart Throb confirmed as using 0200004V EPROMs)
@@ -111,9 +117,9 @@
How to set up the games from scratch:
- Standard NSW/ACT games:
+ Standard NSW/ACT games and variants:
- Step 1: Audit key in (F2), open main door (M), and press Collect (A) and the fourth line button (G) together to clear the memory.
+ Step 1: Audit key in (F2), open the main door (M) and press Collect (A) and the fourth line button (G) together to clear the memory.
Note: On 3-payline games, press Collect (A) and Bet 1 Credit (E) to clear the memory.
Optionally, the main door can be closed from this point on (press M again).
@@ -153,17 +159,67 @@
Step 3: Set everything up as above, open the Security Cage/Logic Door (L), and save the machine options (which now has its own spot on the menu instead of a dedicated button).
Close the Security Cage (L) and turn off the Audit key (F2) and the game should be ready to accept credits.
- New Zealand machines are usually identical to Australian games except that they normally use NZ $2.00 coins in place of AU $1.00 coins. CCCE comms is not used on New Zealand machines.
+ New Zealand machines are usually identical to Australian games except that they normally use NZ $2.00 coins in place of AU $1.00 coins, and have smaller but more frequent payouts due to local laws. CCCE comms is not used on New Zealand machines.
Brazil [e.g. qnilebr]:
This game is similar to the NSW/ACT games however it requires a four-digit setup code before it can be initialized.
- By default, this number is 4856.
+ By default, this number is 4856. After the game has accepted this code, press Collect (A) and Play 7 Lines (G) at the same time to clear the memory.
-After the game has accepted this code, press Collect (A) and Play 7 Lines (G) at the same time to clear the memory.
- TODO (MK-5 specific):
+ USA platform, games without set chips:
+
+ Step 1: Set up the DIP switches to the desired values.
+
+ DIP Switch Bank 1 (DSW1) is comprised of coin/credit values.
+
+ The first four switches control the coin (token) type:
+ 0000 = $0.05 (5 cents/nickels)
+ 1000 = $0.10 (10 cents/dimes)
+ 0100 = $0.25 (25 cents/quarters)
+ 1100 = $0.50 (50 cents/half dollars)
+ 0010 = $1.00 (dollar coins)
+ 1010 = $5.00
+ 0110 = $10.00
+ 1110 = $50.00
+ xxx1 = $100.00 (any value with the fourth switch set is $100.00)
+
+ The fifth through eighth switches control the machine's denomination:
+ 0000 = $0.01 (e.g. a 1 cent machine)
+ 1000 = $0.02
+ 0100 = $0.05
+ 1100 = $0.10
+ 0010 = $0.25
+ 1010 = $0.50
+ 0110 = $1.00
+ 1110 = $5.00
+ 0001 = $10.00
+ 1001 = $50.00
+ x101 = $100.00
+ xx11 = $100.00
+
+ Note that not all combinations are valid e.g. they must be evenly divisible and a token cannot be less than the machine's denomination.
+
+ DIP switch settings are normally only read once by the machine on start-up. To visibly change DIP settings you need to reset the machine (F3) or perform a memory clear from the main menu (see Step 2 below).
+
+ Each machine has its own DIP switch options concerning DIP Switch Bank 2 (DSW2), however the gamble feature is universally the first switch.
+ Per-game DIP switch information is available in the Operator Setup -> Dip Switch Settings menu.
+ Once a machine has been set up, the DIP switches are ignored from then on, even if they have been changed.
+
+ Step 2: Audit key in, enter Operator Setup -> Machine Options and set up the machine to the applicable standards.
+ To save the settings, open the Logic Door (L), press the Bet 1 Credit button (S), close the Logic Door and exit the menu (or press F2 for a shortcut to the main menu).
+
+ Step 3: The machine will now need a memory reset. From the main menu, open the Main Door (M) and press Cashout (A) and the fourth line button (T) together to clear the memory.
+ After closing the Main Door (M) and keying out (F2), the menu should close and the game should be ready to coin up.
+
+ Hint: If you need to change the DIP switches after a game has been set up, use a set chip to clear the memory (press Cashout+Service (A+S) once the set chip has loaded, and then go back to game mode).
+ To switch between game mode and set chips, you need to reset the machine (F3) as it is technically swapping the ROMs on the board.
+ Performing a memory reset will not erase the machine options, but it will cause a memory error which will allow you to set up anything else.
+ Using the Clear All Memory option from the set chip menu (assuming 4.04.xx) will erase everything however.
+
+
+ TODO (MK5 specific):
- Fix remaining errors
- Layouts for various configurations
- Bill acceptor
@@ -335,6 +391,7 @@ After the game has accepted this code, press Collect (A) and Play 7 Lines (G) at
// Non-US button layouts Bet buttons Lines Gamble Other
#include "aristmk5.lh" // 1, 2, 3, 5, 10 20 suits TW/SF
#include "baddog.lh" // Video Poker
+#include "bumblbug.lh" // 1, 2, 3, 5, 10 9 red/black TW/SF
#include "cashcatnz.lh" // 1, 2, 3, 4, 5 9 suits TW/SF, 7L or Autoplay
#include "cashcham.lh" // 1, 5, 10, 20, 25 20 suits
#include "cashchama.lh" // 1, 2, 3, 4, 5 20 suits
@@ -389,17 +446,21 @@ After the game has accepted this code, press Collect (A) and Play 7 Lines (G) at
#include "wildbill.lh" // 1, 2, 3 3 suits
#include "wtiger.lh" // 1, 2, 3, 5, 10 20 suits Classic Buy Feature
#include "wizways.lh" // 1, 2, 5, 10, 20 243 suits
-#include "yukongld.lh" // multiple configs 20 suits TW/SF
-
-#include "aristmk5_us.lh" // 1, 2, 3, 5, 10 9 red/black (all US games only have red/black)
-#include "aristmk5_us_200.lh" // 1,2,3,5,10 20
-#include "bparty.lh" // 20 lines, multiple layouts
-#include "cuckoou.lh" // 9 lines, multiple layouts
-#include "dolphntrce.lh" // 20 lines, multiple layouts
-#include "magimaska.lh" // 9 lines, multiple layouts
-#include "pengpuck.lh" // 20 lines, multiple layouts
-#include "qnilecea.lh" // 9 lines, multiple layouts
-#include "wnpost.lh" // 1, 2, 3, 5, 10 5
+#include "yukongl5.lh" // multiple configs 20 suits TW/SF
+
+// US button layouts Lines Bet buttons Max bets Other
+#include "aristmk5_us.lh" // 9 1, 2, 3, 5, 10
+#include "aristmk5_us_200.lh" // 20 1, 2, 3, 5, 10
+#include "bparty.lh" // 20 multiple 3, 5, 10, 20, 25, 50
+#include "cuckoou.lh" // 9 multiple 3, 5, 10, 20, 25, 50
+#include "cashchamu.lh" // 20 multiple 3, 5, 10, 20, 25, 50 Different layout on 3 credit setup
+#include "dolphntrce.lh" // 20 multiple 5, 10, 25, 50
+#include "dolphntrceb.lh" // 20 multiple 3, 5, 10, 20, 25, 50 Different bets to bparty, cashchamu and pengpuck
+#include "magimaska.lh" // 9 multiple 5, 10, 20
+#include "pengpuck.lh" // 20 multiple 3, 5, 10, 20, 25, 50 Slightly different layout to dolphntrceb
+#include "qnilecea.lh" // 9 multiple 3, 5, 10, 20, 25, 50 Same bet buttons as dolphntrceb but with 9 lines
+#include "swhr2u.lh" // 5 1, 2, 3, 4, 5
+#include "wnpost.lh" // 5 1, 2, 3, 5, 10
#define MASTER_CLOCK XTAL_72MHz /* confirmed */
@@ -498,7 +559,7 @@ WRITE8_MEMBER(aristmk5_state::spi_mux_w)
break;
case 2: // Mechanical meters
- for(int i=0; i<4; i++)
+ for(int i = 0; i < 4; i++)
output().set_lamp_value(32 + i, BIT(m_spi_data[m_spi_mux], 1 + i)); // Tower Lamps
break;
@@ -507,7 +568,7 @@ WRITE8_MEMBER(aristmk5_state::spi_mux_w)
break;
case 5: // Door outputs
- for(int i=0; i<32; i++)
+ for(int i = 0; i < 32; i++)
output().set_lamp_value(i, BIT(m_spi_data[m_spi_mux], i));
break;
@@ -706,7 +767,7 @@ READ8_MEMBER(aristmk5_state::eeprom_r)
WRITE8_MEMBER(aristmk5_state::hopper_w)
{
- m_hopper->write(space, 0, (data & 0x02) ? 0x80 : 0);
+ m_hopper->motor_w(BIT(data, 1));
m_hopper_test = BIT(data, 2);
}
@@ -741,7 +802,7 @@ WRITE8_MEMBER(aristmk5_state::eeprom_w)
WRITE8_MEMBER(aristmk5_state::eeprom_usa_w)
{
eeprom_w(space, offset, data, mem_mask);
- m_hopper->write(space, 0, (data & 0x04) ? 0x80 : 0);
+ m_hopper->motor_w(BIT(data, 2));
}
READ8_MEMBER(aristmk5_state::ldor_r)
@@ -818,19 +879,19 @@ WRITE8_MEMBER(aristmk5_state::sram_banksel_w)
WRITE8_MEMBER(aristmk5_state::buttons_lamps_w)
{
- for(int i=0; i<8; i++)
+ for(int i = 0; i < 8; i++)
output().set_lamp_value((offset >> 2) * 8 + i, BIT(data, i));
}
WRITE8_MEMBER(aristmk5_state::other_lamps_w)
{
- for(int i=0; i<8; i++)
+ for(int i = 0; i < 8; i++)
output().set_lamp_value(16 + i, BIT(data, i));
}
WRITE8_MEMBER(aristmk5_state::bill_acceptor_lamps_w)
{
- for(int i=0; i<8; i++)
+ for(int i = 0; i < 8; i++)
output().set_lamp_value(24 + i, BIT(data, i));
}
@@ -1168,6 +1229,15 @@ static INPUT_PORTS_START(cashchamnz)
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_NAME("Play 15 Lines / Autoplay")
INPUT_PORTS_END
+static INPUT_PORTS_START(cashcatnz)
+ PORT_INCLUDE(aristmk5_9)
+
+ PORT_MODIFY("P1")
+ PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_NAME("Play 7 Lines / Autoplay")
+ PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Bet 4 Credits / Club")
+ PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y) PORT_NAME("Bet 5 Credits / Spade")
+INPUT_PORTS_END
+
static INPUT_PORTS_START(incasunnz)
PORT_INCLUDE(cashchamnz)
@@ -1443,6 +1513,13 @@ static INPUT_PORTS_START(swhr2)
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y) PORT_NAME("Bet 10 Credits")
INPUT_PORTS_END
+static INPUT_PORTS_START(bumblbug)
+ PORT_INCLUDE(swhr2)
+
+ PORT_MODIFY("P1")
+ PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_K) PORT_NAME("Take Win / Start Feature")
+INPUT_PORTS_END
+
static INPUT_PORTS_START(toutangonl)
PORT_INCLUDE(swhr2)
@@ -1715,6 +1792,20 @@ static INPUT_PORTS_START(dolphntrce)
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Play 15 Lines / Start Feature")
INPUT_PORTS_END
+static INPUT_PORTS_START(swhr2u)
+ PORT_INCLUDE(aristmk5_usa)
+
+ PORT_MODIFY("P1")
+ PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_NAME("Bet 5 Credits / Black")
+ PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_NAME("Bet 4 Credits")
+
+ PORT_MODIFY("P2")
+ PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("Play 2 Lines")
+ PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("Play 3 Lines")
+ PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Play 4 Lines")
+ PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y) PORT_NAME("Play 5 Lines")
+INPUT_PORTS_END
+
static INPUT_PORTS_START(wnpost)
PORT_INCLUDE(aristmk5_usa)
@@ -1743,7 +1834,7 @@ DRIVER_INIT_MEMBER(aristmk5_state,aristmk5)
int size = memregion("game_prg")->bytes();
int found = 0;
- for (int i = 0;i < (size / 4) - 4;i++)
+ for (int i = 0; i < (size / 4) - 4; i++)
{
if (((ROM[i + 0] & 0xfffff000) == 0xe59f1000) &&
(ROM[i + 1] == 0xe3a03000) &&
@@ -1784,7 +1875,7 @@ DRIVER_INIT_MEMBER(aristmk5_state,aristmk5)
// the checksum is a simple 32-bit sum with the dword containing the checksum skipped (and the dword after it for no obvious reason!)
uint32_t calculatedchecksum = 0;
- for (int i = actual / 4; i < actual2 / 4;i++)
+ for (int i = actual / 4; i < actual2 / 4; i++)
{
if ((i < (actual3 / 4)) ||
(i > (actual4 / 4)))
@@ -1813,7 +1904,7 @@ DRIVER_INIT_MEMBER(aristmk5_state,aristmk5)
// almost always just the end of the roms
int realend = 0;
- for (int i = size - 1; i >= actual2 / 4;i--)
+ for (int i = size - 1; i >= actual2 / 4; i--)
{
if ((ROM[i] != 0xffffffff) && (ROM[i] != 0x00000000))
{
@@ -1825,7 +1916,7 @@ DRIVER_INIT_MEMBER(aristmk5_state,aristmk5)
int realend2 = 0;
- for (int i = realend - 4; i >= actual2 / 4;i--)
+ for (int i = realend - 4; i >= actual2 / 4; i--)
{
if ((ROM[i] != 0xffffffff) && (ROM[i] != 0x00000000))
{
@@ -1889,9 +1980,9 @@ void aristmk5_state::machine_reset()
PRG = memregion(rom_region[op_mode & 7])->base();
- if(PRG!=nullptr)
+ if(PRG != nullptr)
- for(i=0;i<0x400000;i++)
+ for(i = 0; i < 0x400000; i++)
ROM[i] = PRG[i];
}
@@ -2106,6 +2197,7 @@ ROM_END
// BHG1508 / MV4124/1 / 5,10,25,50 Credit Multiplier / 20 Line Multiline
// ADONIS / Export / B - 31/07/01
+// Requires set chips 4.04.xx
ROM_START( adonisu )
ARISTOCRAT_MK5_BIOS
/*
@@ -2272,7 +2364,7 @@ ROM_START( bootsctnu )
0x000000-0x0941ab is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0xdf68cecf
Calculated Checksum 0xdf68cecf (OK)
- 0x0941ac-0x328187 is the non-Checksummed range (suspicious endpoint)
+ 0x0941ac-0x328187 is the non-Checksummed range (unusual endpoint)
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
@@ -2318,6 +2410,34 @@ ROM_START( bootsctnua )
ROM_END
+// AHG1547 / MV4098/1 / 10 Credit Multiplier / 20 Line Multiline
+// BOOT SCOOTIN' / Export / B - 22/03/01
+// Requires set chip version: 4.04.xx
+ROM_START( bootsctnub )
+ ARISTOCRAT_MK5_BIOS
+ /*
+ Checksum code found at 0x000d18
+ 0x000000-0x0f47a7 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
+ Expected Checksum 0xae44f291
+ Calculated Checksum 0xae44f291 (OK)
+ 0x0f47a8-0x3a0b5b is the non-Checksummed range (unusual endpoint)
+ */
+ ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
+ ROM_LOAD32_WORD( "ahg1547.u7", 0x000000, 0x80000, CRC(5ded48cb) SHA1(3335a9dc6758dd8b225258ab2cb01cf4e9c02dd2) )
+ ROM_LOAD32_WORD( "ahg1547.u11", 0x000002, 0x80000, CRC(764dfdb8) SHA1(e68493dfac2d64c59d7576d4b124210089edda62) )
+ ROM_LOAD32_WORD( "ahg1547.u8", 0x100000, 0x80000, CRC(7e26e7a9) SHA1(88dc5dbf6ada1b6f2218ef3b013bc91047401d21) )
+ ROM_LOAD32_WORD( "ahg1547.u12", 0x100002, 0x80000, CRC(f2dfc38c) SHA1(7fd6c8e11feef375b0f1fac0cfebca74f5da2ed6) )
+ ROM_LOAD32_WORD( "ahg1547.u9", 0x200000, 0x80000, CRC(13f410e4) SHA1(e5022dbb42d174b2e3eda8f1564c97ca8fa39deb) )
+ ROM_LOAD32_WORD( "ahg1547.u13", 0x200002, 0x80000, CRC(a5382c96) SHA1(570479383d69dfc9e52ebd55b51989ca284d31e7) )
+ ROM_LOAD32_WORD( "ahg1547.u10", 0x300000, 0x80000, CRC(a31d8a45) SHA1(5e62d0d3523fd381e940b4dbc6f84d83434bf83a) )
+ ROM_LOAD32_WORD( "ahg1547.u14", 0x300002, 0x80000, CRC(de2888e2) SHA1(f614d68c0e09912e9126cb024f54ed32ee50b57e) )
+
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
+ ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+ ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
+ROM_END
+
+
// BHG1248 / MV4119/1 / 3,5,10,20,25,50 Credit Multiplier / 9 Line Multiline
// Bachelorette Party / Export / B - 25/08/2000
// ROM says "9 Line Multiline" but this is a 20 line game, it cannot be set to 9 lines at all
@@ -2441,6 +2561,35 @@ ROM_START( bumblbugu )
ROM_END
+// 593 / 10 Credit Multiplier / 9 Line Multiline
+// Bumble Bugs / Export / D - 05/07/97
+// All devices are 27c4002 instead of 27c4096
+// Marked as CHG047999 and 87.006%
+// Variation (% and NO): 87.006% 99
+// No required set chip version
+// No required touch screen
+ROM_START( bumblbugua )
+ ARISTOCRAT_MK5_BIOS
+ /*
+ Checksum code found at 0x000d08
+ 0x000000-0x0b1f47 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
+ Expected Checksum 0xa23f49f6
+ Calculated Checksum 0xa23f49f6 (OK)
+ 0x0b1f48-0x183c1f is the non-Checksummed range still containing data but NOT covered by Checksum
+ 0x0b1f48-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included
+ */
+ ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
+ ROM_LOAD32_WORD( "chg047999.u7", 0x000000, 0x80000, CRC(7e9be2d0) SHA1(84293a391e9797afc904bb3be05367361ae8d4c7) ) // 87.006%
+ ROM_LOAD32_WORD( "chg047999.u11", 0x000002, 0x80000, CRC(efd350ac) SHA1(19975b4d2b55b65542a7ff38fa035fd516bd6e2e) ) // 87.006%
+ ROM_LOAD32_WORD( "chg047999.u8", 0x100000, 0x80000, CRC(e0c01d01) SHA1(9153129fd348a97da7cccf002e5d03e4b4db9264) ) // base
+ ROM_LOAD32_WORD( "chg047999.u12", 0x100002, 0x80000, CRC(7dbb634b) SHA1(f7a752240989032af142f4cd6e4260a12a5b4c0a) ) // base
+
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
+ ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+ ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
+ROM_END
+
+
// 0200143V / 571/4 / 10 Credit Multiplier/9 Line Multiline
// Butterfly Delight / Local / A - 19/12/95
ROM_START( buttdeli )
@@ -2535,14 +2684,7 @@ ROM_END
ROM_START( cashcatnz )
ARISTOCRAT_MK5_BIOS
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
- /*
- Checksum code found at 0x000adc
- 0x000000-0x04477f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
- Expected Checksum 0x19143954
- Calculated Checksum 0x19143954 (OK)
- 0x044780-0x1c713b is the non-Checksummed range still containing data but NOT covered by Checksum
- 0x044780-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included
- */
+ // checksum code not found (uses different startup sequence)
ROM_LOAD32_WORD( "0300863v.u7", 0x000000, 0x80000, CRC(de0f0202) SHA1(994f6c47b1e2e0e133853dc69b189752104486e4) )
ROM_LOAD32_WORD( "0300863v.u11", 0x000002, 0x80000, CRC(e60e8bd1) SHA1(ffaa7be8968047b9ee54a117d273a14cbca41028) )
ROM_LOAD32_WORD( "0300863v.u8", 0x100000, 0x80000, CRC(37d41d35) SHA1(c959b787383d6f91d20e18f37a38a965407a9ff0) )
@@ -2622,6 +2764,7 @@ ROM_END
// 603(a) / 3,5,10,25,50 Credit Multiplier / 20 Line Multiline
// Cash Chameleon 100cm / Export / B - 06/12/96
// Marked as DHG4078.
+// Game requires set chip version: 4.00.xx
ROM_START( cashchamu )
ARISTOCRAT_MK5_BIOS
/*
@@ -2896,6 +3039,7 @@ ROM_END
// CUCKOO / Export C / 02/02/00
// ROM says '9-20 Line Multiline', but game only has 9 Lines
// All devices are 27c4002 instead of 27c4096
+// Requires set chips 4.01.xx
ROM_START( cuckoou )
ARISTOCRAT_MK5_BIOS_HAVE_EEPROMS
/*
@@ -3138,6 +3282,7 @@ ROM_END
// Dolphin Treasure / Export / D - 22/12/99
// Hyperlink game, but can also run standalone without progressive jackpot
// ROM says '9 & 20 Line Multiline' but game only has 20 lines with a 5, 10, 25 or 50 credit multiplier
+// Requires set chips 4.04.xx
ROM_START( dolphntrce )
ARISTOCRAT_MK5_BIOS
/*
@@ -3167,6 +3312,7 @@ ROM_END
// Dolphin Treasure / Export / D - 22/12/99
// Hyperlink game, but can also run standalone without progressive jackpot
// ROM says '9 & 20 Line Multiline' but game only has 9 lines with a 5, 10 or 20 credit multiplier
+// Requires set chips 4.04.xx
ROM_START( dolphntrcea )
ARISTOCRAT_MK5_BIOS
/*
@@ -3196,6 +3342,7 @@ ROM_END
// Dolphin Treasure / Export / D - 22/12/99
// Hyperlink game, but can also run standalone without progressive jackpot
// ROM says '9 & 20 Line Multiline' but game only has 20 lines
+// Requires set chips 4.04.xx
ROM_START( dolphntrceb )
ARISTOCRAT_MK5_BIOS
/*
@@ -3574,6 +3721,36 @@ ROM_START( genmagi )
ROM_END
+// AHG1623 / MV4112/2 / 5,10,25,50 Credit Multiplier / 20 Line Multiline
+// Green Lizard [Reel Game] / Export / A - 05/01/01
+// Requires set chip version: 4.04.xx
+// Variation (% and NO):
+// Doesn't requires touch screen
+ROM_START( glizardu )
+ ARISTOCRAT_MK5_BIOS
+ /*
+ Checksum code found at 0x000d18
+ 0x000000-0x0f19bf is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
+ Expected Checksum 0x36907c47
+ Calculated Checksum 0x36907c47 (OK)
+ 0x0f19c0-0x3b1443 is the non-Checksummed range (unusual endpoint)
+ */
+ ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
+ ROM_LOAD32_WORD( "ahg1623.u7", 0x000000, 0x80000, CRC(bee526f8) SHA1(32227a6655393a966af3ab698388146f0b752c67) ) // game
+ ROM_LOAD32_WORD( "ahg1623.u11", 0x000002, 0x80000, CRC(177ffc12) SHA1(4cedadcf8ddfb95aff7aa0ece96411646677ff96) ) // game
+ ROM_LOAD32_WORD( "ahg1623.u8", 0x100000, 0x80000, CRC(22657930) SHA1(8a6db02ce1c45a19d6e6f222788f607224b8af43) ) // base
+ ROM_LOAD32_WORD( "ahg1623.u12", 0x100002, 0x80000, CRC(47153192) SHA1(3a384a98c3251a522928a82b391ae88986b6a078) ) // base
+ ROM_LOAD32_WORD( "ahg1623.u9", 0x200000, 0x80000, CRC(b4e33204) SHA1(92c7871872ecfbddde9bf04b7e60802d8598cf36) ) // base
+ ROM_LOAD32_WORD( "ahg1623.u13", 0x200002, 0x80000, CRC(5c658f42) SHA1(0f1b2d79c0c15562f14e59bb424a9c62df6bd959) ) // base
+ ROM_LOAD32_WORD( "ahg1623.u10", 0x300000, 0x80000, CRC(613cb7d8) SHA1(bfd6606f809f5eb2c81802539b5ab7e2a63046a1) ) // base
+ ROM_LOAD32_WORD( "ahg1623.u14", 0x300002, 0x80000, CRC(5ceb871c) SHA1(42b8a087fa39261818dd333ea3d8c1ef269671bf) ) // base
+
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
+ ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+ ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
+ROM_END
+
+
// 0100767V / 625 / 10 Credit Multiplier/20 Line Multiline
// Gnome Around The World 200cm / NSW/ACT / C - 18/12/98
ROM_START( gnomeatw )
@@ -3712,7 +3889,12 @@ ROM_END
ROM_START( honeypot )
ARISTOCRAT_MK5_BIOS
/*
- Checksum code needs to be done
+ Checksum code found at 0x000bb8
+ 0x000000-0x06f02b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
+ Expected Checksum 0x38355dbb
+ Calculated Checksum 0x38355dbb (OK)
+ 0x06f02c-0x281a27 is the non-Checksummed range still containing data but NOT covered by Checksum
+ 0x06f02c-0x2fffff is the non-Checksummed range if the additional vectors? at the end are included
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "03j00241.u7", 0x000000, 0x80000, CRC(9c0c3a68) SHA1(39e8be61ea8e47fcb8006868518d9de464dc63da) )
@@ -3728,6 +3910,34 @@ ROM_START( honeypot )
ROM_END
+// BHG1455 / MV4122/3 / 5, 10, 20 Credit Multiplier / 9 Line Multiline
+// HONKY TONK - CASH EXPRESS / Export / A - 07/08/01
+// Requires set chip version: 4.04.xx
+// Variation (% and NO)
+// No requires touch screen
+// The game shares reel graphics with Boot Scootin', but background is different and doesn't seems that is a clone.
+ROM_START( hnktonku )
+ ARISTOCRAT_MK5_BIOS
+ /*
+ Checksum code found at 0x000d18
+ Checksum is stored at 0x000020-0x000027
+ Expected Checksum 0x576a26b7
+ Calculated Checksum 0x576a26b7 (OK)
+ */
+ ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
+ ROM_LOAD32_WORD( "bhg1455.u7", 0x000000, 0x80000, CRC(ef25e5a1) SHA1(00d7dcb852cc2ccb61c5af15108f8c374419527f) )
+ ROM_LOAD32_WORD( "bhg1455.u11", 0x000002, 0x80000, CRC(737bd8c8) SHA1(0863ed66ca28ab47945d1c6012740bc559c79b0d) )
+ ROM_LOAD32_WORD( "bhg1455.u8", 0x100000, 0x80000, CRC(822f408e) SHA1(c31d046a48f28de9d8b90676851c4ea5f30cc732) )
+ ROM_LOAD32_WORD( "bhg1455.u12", 0x100002, 0x80000, CRC(520f051e) SHA1(c3d5058f753e72852e37dcd94c34a4caabdff161) )
+ ROM_LOAD32_WORD( "bhg1455.u9", 0x200000, 0x80000, CRC(9c928891) SHA1(7fc4f38b9c06d4d5b27d246fffee3a1fd527d6ad) )
+ ROM_LOAD32_WORD( "bhg1455.u13", 0x200002, 0x80000, CRC(18dd37fe) SHA1(432a4959886fad4f4a55de31b7cc42c51d7f2792) )
+
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
+ ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+ ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
+ROM_END
+
+
// 0100872V / 631/3 B / 25 Credit Multiplier / 20 Line Multiline
// INCA SUN / NSW/ACT / B- 03/05/99
ROM_START( incasun )
@@ -3798,8 +4008,30 @@ ROM_START( incasunnz )
ROM_END
+// 01J01946 / 631/3 B / 25 Credit Multiplier / 20 Line Multiline
+// INCA SUN / VENEZUELA / B - 03/05/99
+ROM_START( incasunv )
+ ARISTOCRAT_MK5_BIOS
+ ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
+ /*
+ Checksum code at 0x000c10 ??
+ */
+ ROM_LOAD32_WORD( "01j01946.u7", 0x000000, 0x80000, CRC(c6bdbc96) SHA1(ee83b6b4aaa9538ca04f136a4523fd520a24a878) )
+ ROM_LOAD32_WORD( "01j01946.u11", 0x000002, 0x80000, CRC(15be6a5d) SHA1(000218c13e1e3fccdc0565e496a1fd13cb32f6b1) )
+ ROM_LOAD32_WORD( "01j01946.u8", 0x100000, 0x80000, CRC(e26bd9c7) SHA1(e5facaa85c4c72d070b1d5000b80a333122c4fbc) )
+ ROM_LOAD32_WORD( "01j01946.u12", 0x100002, 0x80000, CRC(a9941a3b) SHA1(14868686aa0aa3d966ffbaef2593a11a57a43b05) )
+ ROM_LOAD32_WORD( "01j01946.u9", 0x200000, 0x80000, CRC(90e5a52b) SHA1(b2c334126128f9569846655d78f1641a36aec739) )
+ ROM_LOAD32_WORD( "01j01946.u13", 0x200002, 0x80000, CRC(0efdd830) SHA1(de0be1cd3f691299f48d7a184df6bb59fef22de2) )
+
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
+ ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+ ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
+ROM_END
+
+
// CHG1458 / MV4130/3 / 20 Line Multiline / 5, 10, 25, 50 Credit Multiplier
// Inca Sun / Export / A - 05/09/00
+// Requires set chips 4.03.xx
ROM_START( incasunu )
ARISTOCRAT_MK5_BIOS_HAVE_EEPROMS
/*
@@ -3838,16 +4070,23 @@ ROM_END
// DHG1577 / MV4130/3 / 20 Line Multiline / 5, 10, 25, 50 Credit Multiplier
// Inca Sun / Export / A - 05/09/00
// Same strings as incasunu but different version
+// Requires set chips 4.04.xx
ROM_START( incasunua )
ARISTOCRAT_MK5_BIOS
- // checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D
+ /*
+ Checksum code found at 0x000d18
+ 0x000000-0x0ec3a7 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
+ Expected Checksum 0x24e1ed00
+ Calculated Checksum 0x24e1ed00 (OK)
+ 0x0ec3a8-0x2ecf4b is the non-Checksummed range (unusual endpoint)
+ */
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
- ROM_LOAD32_WORD( "dhg1577.u7", 0x000000, 0x7f079, BAD_DUMP CRC(ebbd4d54) SHA1(7e5c0da2bc62338dd2148af7fa87745d622b85b9) )
- ROM_LOAD32_WORD( "dhg1577.u11", 0x000002, 0x7ff6c, BAD_DUMP CRC(fb86c7b2) SHA1(62b1897907ceebcd0c2c0a4da002a783174321e7) )
- ROM_LOAD32_WORD( "dhg1577.u8", 0x100000, 0x7fcb7, BAD_DUMP CRC(809c5277) SHA1(2efde9a7887d3ca5cb7fa5aebb0b6fcc9aeb880a) )
- ROM_LOAD32_WORD( "dhg1577.u12", 0x100002, 0x7fc89, BAD_DUMP CRC(dbf26048) SHA1(2fcf1f7d5a0402798b4fe25afd178d8c1db89e3b) )
- ROM_LOAD32_WORD( "dhg1577.u9", 0x200000, 0x7fd47, BAD_DUMP CRC(046e019e) SHA1(4c6e17562cb337c3d79efc095960c4d1f9d87f39) )
- ROM_LOAD32_WORD( "dhg1577.u13", 0x200002, 0x7fd62, BAD_DUMP CRC(7299484f) SHA1(f6b75e5be6ef724504a543702692e455437d7046) )
+ ROM_LOAD32_WORD( "dhg1577.u7", 0x000000, 0x80000, CRC(e31e3c81) SHA1(56b00aae1b9385686530e089cad05308e0c0751d) )
+ ROM_LOAD32_WORD( "dhg1577.u11", 0x000002, 0x80000, CRC(68d58ad3) SHA1(c521da10b719250e3f115357c6e4ff51377d4335) )
+ ROM_LOAD32_WORD( "dhg1577.u8", 0x100000, 0x80000, CRC(475db842) SHA1(3c49fbf45a256222e6a5a0343a7dc96386bb8897) )
+ ROM_LOAD32_WORD( "dhg1577.u12", 0x100002, 0x80000, CRC(f1be432e) SHA1(ed4a064e4e8200126bda3f1c25ac5075014c9f94) )
+ ROM_LOAD32_WORD( "dhg1577.u9", 0x200000, 0x80000, CRC(a8956bf5) SHA1(d444a3a64968a6275b38babf23089c7d186f30e6) )
+ ROM_LOAD32_WORD( "dhg1577.u13", 0x200002, 0x80000, CRC(f7c30ef9) SHA1(44d7213e1220d6b89715408d009ef1484de2696f) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
@@ -4024,10 +4263,15 @@ ROM_END
// CHG1573 / MV4137 / 5,10,25,50 Credit Multiplier / 20 Line Multiline
// Koala Mint / Export / A - 12/09/01
+// Requires set chips 4.04.xx
ROM_START( koalamnt )
ARISTOCRAT_MK5_BIOS
/*
- Checksum code needs redoing with repaired dump
+ Checksum code found at 0x000d18
+ 0x000000-0x0ec32b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
+ Expected Checksum 0x5e570341
+ Calculated Checksum 0x5e570341 (OK)
+ 0x0ec32c-0x34ebdf is the non-Checksummed range (unusual endpoint)
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "chg1573.u7", 0x000000, 0x80000, CRC(6e3ec3ae) SHA1(057650b8d89e93bcbaacf06e6487264fe19a1aa0) )
@@ -4069,6 +4313,35 @@ ROM_START( kookabuk )
ROM_END
+// BHG1204 / MV4114/1 / 3,5,10,20,25,50 Credit Multiplier / 20 Line Multiline
+// KEEP YOUR HAT ON / Export / B - 08/05/2000
+// Requires set chip version: 4.01.xx
+// Variation (% and NO)
+// Requires touch screen
+ROM_START( kyhatonu )
+ ARISTOCRAT_MK5_BIOS
+ /*
+ Checksum code found at 0x000d18
+ Checksum is stored at 0x000020-0x000027
+ Expected Checksum 0x57cc5e5a
+ Calculated Checksum 0x57cc5e5a (OK)
+ */
+ ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
+ ROM_LOAD32_WORD( "bhg1204.u7", 0x000000, 0x80000, CRC(bc365ca9) SHA1(f5bb4fc0b2eaed1274b21bc4762b6914ce621d8a) )
+ ROM_LOAD32_WORD( "bhg1204.u11", 0x000002, 0x80000, CRC(14376c1e) SHA1(616549215f35c4f5a8c4243f84290dd8b3fae5df) )
+ ROM_LOAD32_WORD( "bhg1204.u8", 0x100000, 0x80000, CRC(29081b50) SHA1(0c3990b11c9e249829babc0631840e982a387709) )
+ ROM_LOAD32_WORD( "bhg1204.u12", 0x100002, 0x80000, CRC(aba9029c) SHA1(2fe65670cf1ec7a5caab770ad9af6ad3af070e53) )
+ ROM_LOAD32_WORD( "bhg1204.u9", 0x200000, 0x80000, CRC(45a025db) SHA1(ea1f64a6c0272bb84ebdb0975f2d8198b8b5550a) )
+ ROM_LOAD32_WORD( "bhg1204.u13", 0x200002, 0x80000, CRC(fd4b24c4) SHA1(97db7899c61050c7580af67177c7fe2c8b6116aa) )
+ ROM_LOAD32_WORD( "bhg1204.u10", 0x300000, 0x80000, CRC(164ac0dd) SHA1(f6168ab76455ad29df6a4a43eea65d8c644d295a) )
+ ROM_LOAD32_WORD( "bhg1204.u14", 0x300002, 0x80000, CRC(490a9eb5) SHA1(30df13960614f82deac5426ff754885ffb429603) )
+
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
+ ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+ ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
+ROM_END
+
+
// 0100473V / 599/3 / 25 Credit Multiplier / 20 Line Multiline
// Loco Loot / Local / C - 17/06/97
ROM_START( locoloot )
@@ -4130,14 +4403,22 @@ ROM_END
// AHG1513 / MV4134 / 5,10,25,50 Credit Multiplier / 20 Line Multiline
// Loco Loot / Export / A - 30/07/01
+// Requires set chips 4.04.xx
ROM_START( locolootu )
ARISTOCRAT_MK5_BIOS
- // checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D
+/*
+ Checksum code found at 0x000d18
+ 0x000000-0x0e94fb is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
+ Expected Checksum 0xbd28f614
+ Calculated Checksum 0xbd28f614 (OK)
+ 0x0e94fc-0x170993 is the non-Checksummed range still containing data but NOT covered by Checksum
+ 0x0e94fc-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included
+*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
- ROM_LOAD32_WORD( "ahg1513.u7", 0x000000, 0x7f06f, BAD_DUMP CRC(c0e769a1) SHA1(df0dedf6dc9412efccd26ad16ab0d316863f9488) )
- ROM_LOAD32_WORD( "ahg1513.u11", 0x000002, 0x7ff6c, BAD_DUMP CRC(f60c2e0b) SHA1(d3ba83eb458ab99d28a910688e63c9dd5ae6570b) )
- ROM_LOAD32_WORD( "ahg1513.u8", 0x100000, 0x7fede, BAD_DUMP CRC(c24cfe7b) SHA1(7f1f02a4e77ad178c7e08362feb1ec4b064e539c) )
- ROM_LOAD32_WORD( "ahg1513.u12", 0x100002, 0x7ff14, BAD_DUMP CRC(73e30f47) SHA1(eb12716f3c384901cd80b2f43760b522150c64b0) )
+ ROM_LOAD32_WORD( "ahg1513.u7", 0x000000, 0x80000, CRC(16854250) SHA1(a3b6e112dcce38310ca13eb9e9851901ee213fcf) )
+ ROM_LOAD32_WORD( "ahg1513.u11", 0x000002, 0x80000, CRC(0abe509a) SHA1(a5d0b870390e7f4b38d7685c09c079acb198dd42) )
+ ROM_LOAD32_WORD( "ahg1513.u8", 0x100000, 0x80000, CRC(bd9d2ad7) SHA1(5e5eaf2521473246fb54175f88521b43b9b86f9f) )
+ ROM_LOAD32_WORD( "ahg1513.u12", 0x100002, 0x80000, CRC(5bf7b4b1) SHA1(2282ec8d0ddd1aea715005fba2171468831513f4) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
@@ -4204,8 +4485,8 @@ ROM_START( mgarden )
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "ahg121199.u7", 0x000000, 0x80000, CRC(12b9aaf2) SHA1(1cc86a0c8daefc1e5b5a4ff710319a85f573f526) )
ROM_LOAD32_WORD( "ahg121199.u11", 0x000002, 0x80000, CRC(b6095f2c) SHA1(d36ceaa0e6545f594f6a50ddfa71d84ca7128f3b) )
- ROM_LOAD32_WORD( "ahg121199.u8", 0x100000, 0x80000, CRC(a315ca28) SHA1(0309789362a945d592ee2eda912e4fc2e6ea5be6) ) // confirmed good
- ROM_LOAD32_WORD( "ahg121199.u12", 0x100002, 0x80000, CRC(4b252c2c) SHA1(8be41fb2b8f8d2829c18ea123a02f3e61c136206) ) // confirmed good
+ ROM_LOAD32_WORD( "ahg121199.u8", 0x100000, 0x80000, CRC(a315ca28) SHA1(0309789362a945d592ee2eda912e4fc2e6ea5be6) )
+ ROM_LOAD32_WORD( "ahg121199.u12", 0x100002, 0x80000, CRC(4b252c2c) SHA1(8be41fb2b8f8d2829c18ea123a02f3e61c136206) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
@@ -4215,6 +4496,7 @@ ROM_END
// AHG1549 / MV4115_1 / 5, 10, 25, 50 Credit Multiplier / 20 Line Multiline
// Magic Mask / Export / A - 09/05/2000
+// Requires set chips 4.04.xx
// Touchscreen game
ROM_START( magimask )
ARISTOCRAT_MK5_BIOS
@@ -4240,6 +4522,7 @@ ROM_END
// AHG1548 / MV4115 / 5,10,20 Credit Multiplier / 9 Line Multiline
// Magic Mask / Export / A - 09/05/2000
+// Requires set chips 4.04.xx
// Touchscreen game
ROM_START( magimaska )
ARISTOCRAT_MK5_BIOS_HAVE_EEPROMS
@@ -4279,6 +4562,7 @@ ROM_END
// Magic Mask / Export / A - 09/05/2000
// Same strings as magimaska but different version
// All devices are 27c4002 instead of 27c4096
+// Requires set chips 4.03.xx
// Touchscreen game
ROM_START( magimaskb )
ARISTOCRAT_MK5_BIOS_HAVE_EEPROMS
@@ -4409,6 +4693,7 @@ ROM_END
// Margarita Magic / NSW/ACT / A - 07/07/2000
// EHG1558 / 9 playlines
// ROM has NSW/ACT strings but it is for US platform
+// Requires set chips 4.04.xx
ROM_START( marmagicu )
ARISTOCRAT_MK5_BIOS
/*
@@ -4440,6 +4725,7 @@ ROM_END
// The playlines are 1, 5, 10, 15 and 20
// For 20 credit per line the max bet is 400
// ROM has NSW/ACT strings but it is for US platform
+// Requires set chips 4.04.xx
ROM_START( marmagicua )
ARISTOCRAT_MK5_BIOS
/*
@@ -4466,36 +4752,6 @@ ROM_START( marmagicua )
ROM_END
-// US003 / Multi credit / Multi line
-// Margarita Magic / NSW/ACT / A - 07/07/2000
-// EHG1559 / This is a twenty-line game
-// The playlines are 1, 5, 10, 15 and 20
-// For 20 credit per line the max bet is 400
-// ROM has NSW/ACT strings but it is for US platform
-ROM_START( marmagicub )
- ARISTOCRAT_MK5_BIOS
- /*
- This ROM set is exactly the same version as the parent, yet is bad in a completely different way!
- Comparing the ROM data between this one and the above bad dump, it is highly possible that this set can be repaired as this ROM set came from a good dump until it was stripped of carriage return symbols (0x0D) by a web server
- The "_a" suffix is to differentiate the ROMs from the above set and does not correspond to the label, the correct label is simply EHG1559.
- checksum code not found due to ROMs being corrupted, all files except the last 2 are missing bytes consisting of 0x0D
- */
- ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
- ROM_LOAD32_WORD( "ehg1559_a.u7", 0x000000, 0x7f03e, BAD_DUMP CRC(473afd5b) SHA1(823f8ad8cd5c3676feba8d740b50f25544a6c046) )
- ROM_LOAD32_WORD( "ehg1559_a.u11", 0x000002, 0x7ff66, BAD_DUMP CRC(c66df0dc) SHA1(015e6aed905bfef2f152137aa8aaaeaae41bc90e) )
- ROM_LOAD32_WORD( "ehg1559_a.u8", 0x100000, 0x7fcfe, BAD_DUMP CRC(5d2760d6) SHA1(655da82ae5dca1bb498399d2ee1efad7a3811cba) )
- ROM_LOAD32_WORD( "ehg1559_a.u12", 0x100002, 0x7fce2, BAD_DUMP CRC(56f9dcab) SHA1(2951a7189e5aa6e7338eb11f929fd6eea2541f0d) )
- ROM_LOAD32_WORD( "ehg1559_a.u9", 0x200000, 0x7ff4d, BAD_DUMP CRC(60323004) SHA1(8f188c7109538454a9ad5e14f21ab4ef76115153) )
- ROM_LOAD32_WORD( "ehg1559_a.u13", 0x200002, 0x7ff61, BAD_DUMP CRC(34320e8d) SHA1(b266d9c53cf746f1a164e006f14079bced2887ed) )
- ROM_LOAD32_WORD( "ehg1559.u10", 0x300000, 0x80000, CRC(3db4e373) SHA1(7150242253ae4a1c4f3211e3068f00e8b1ed51b1) )
- ROM_LOAD32_WORD( "ehg1559.u14", 0x300002, 0x80000, CRC(bdfdc0e4) SHA1(0e56f08abc0cdd9dfa5d8e51bb6fe06fa356b3b3) )
-
- ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
- ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
-ROM_END
-
-
// 0400115V / 559/2 / 10 Credit Multiplier/9 Line Multiline
// Mine, Mine, Mine / Local / D - 16/01/96
ROM_START( minemine )
@@ -4926,6 +5182,7 @@ ROM_END
// Party Gras / Export / A - 10/11/2001
// All devices are 27c4002 instead of 27c4096
// ROM says '9/20 Line Multiline' but game only has 9 lines
+// Requires set chips 4.04.xx
// Touchscreen game
ROM_START( partygrs )
ARISTOCRAT_MK5_BIOS_HAVE_EEPROMS
@@ -4963,6 +5220,7 @@ ROM_END
// BHG1284 / MV4115/3 / 20 Line Multiline / 3,5,10,20,25,50 Credit Multiplier
// Party Gras / Export / B - 06/02/2001
+// Requires set chips 4.01.xx
// Touchscreen game
ROM_START( partygrsa )
ARISTOCRAT_MK5_BIOS
@@ -5182,9 +5440,60 @@ ROM_START( pengpayu )
ROM_LOAD( "rtc", 0x000000, 0x00001f, CRC(6909acb0) SHA1(6a4589599cd1c477e916474e7b029e9a4e92019b) )
ROM_END
+// OHG0417-03 / 586/7(b) / 10 Credit Multiplier / 9 Line Multiline
+// Penguin Pays / Export / B - 14/07/97
+// All devices are 27c4002 instead of 27c4096
+// marked as 92.130%
+ROM_START( pengpayua )
+ ARISTOCRAT_MK5_BIOS_HAVE_EEPROMS
+ /*
+ Checksum code found at 0x000d08
+ 0x000000-0x0a898f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
+ Expected Checksum 0x93affe65
+ Calculated Checksum 0x93affe65 (OK)
+ 0x0a8990-0x1674cf is the non-Checksummed range still containing data but NOT covered by Checksum
+ 0x0a8990-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included
+ */
+ ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
+ ROM_LOAD32_WORD( "ohg041703.u7", 0x000000, 0x80000, CRC(48689db1) SHA1(6aa07a0e6dbf98a34cca31d5983ae9429f2254aa) )
+ ROM_LOAD32_WORD( "ohg041703.u11", 0x000002, 0x80000, CRC(50e00a35) SHA1(e8f104621c8fc21d8ba33157729f394554c776e2) )
+ ROM_LOAD32_WORD( "ohg041703.u8", 0x100000, 0x80000, CRC(a08acbb3) SHA1(8a7cc927a81521b069873a720d1a083f164dc2ef) )
+ ROM_LOAD32_WORD( "ohg041703.u12", 0x100002, 0x80000, CRC(9eae7f7b) SHA1(23bd952de1d6d5d69e5565cc2bc241c2cd775453) )
+
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
+ ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+ ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
+ROM_END
+
+// OHG0417-02 / 586/7(b) / 10 Credit Multiplier / 9 Line Multiline
+// Penguin Pays / Export / B - 14/07/97
+// All devices are 27c4002 instead of 27c4096
+// marked as 90.45%
+ROM_START( pengpayub )
+ ARISTOCRAT_MK5_BIOS_HAVE_EEPROMS
+ /*
+ Checksum code found at 0x000d08
+ 0x000000-0x0a898f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
+ Expected Checksum 0x96aefc60
+ Calculated Checksum 0x96aefc60 (OK)
+ 0x0a8990-0x1674cf is the non-Checksummed range still containing data but NOT covered by Checksum
+ 0x0a8990-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included
+ */
+ ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
+ ROM_LOAD32_WORD( "ohg041702.u7", 0x000000, 0x80000, CRC(76b7641f) SHA1(8df2c46ec8e5ec5574f12878619593e7157df517) )
+ ROM_LOAD32_WORD( "ohg041702.u11", 0x000002, 0x80000, CRC(6d731b81) SHA1(06ea80e1003ceba8a790a035c520aaca99db4d54) )
+ ROM_LOAD32_WORD( "ohg041702.u8", 0x100000, 0x80000, CRC(a08acbb3) SHA1(8a7cc927a81521b069873a720d1a083f164dc2ef) )
+ ROM_LOAD32_WORD( "ohg041702.u12", 0x100002, 0x80000, CRC(9eae7f7b) SHA1(23bd952de1d6d5d69e5565cc2bc241c2cd775453) )
+
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
+ ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+ ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
+ROM_END
+
// EHG1257 / MV4122/1 / 3,5,10,20,25,50 Credit Multiplier / 20 Line Multiline
// PENGUIN PAYS / PENGUIN PUCKS / Export / C - 19/01/01
// Hyperlink version, but can also run standalone without progressive jackpot
+// Requires set chips 4.03.xx
ROM_START( pengpuck )
ARISTOCRAT_MK5_BIOS
/*
@@ -5538,6 +5847,7 @@ ROM_END
// AHG1609 / MV4091/1 / 5,10,25,50 Credit Multiplier / 20 Line Multiline
// QUEEN OF THE NILE / Export / A - 17/01/01
// Hyperlink version, but can also run standalone without progressive jackpot
+// Requires set chips 4.04.xx
ROM_START( qnilece )
ARISTOCRAT_MK5_BIOS
/*
@@ -5567,6 +5877,7 @@ ROM_END
// QUEEN OF THE NILE / Export / F - 17/01/01
// ROM says '10 Credit Multiplier / 20 Line Multiline' but it is a 9 line game with 3,5,10,20,25,50 credit multipliers
// Hyperlink version, but can also run standalone without progressive jackpot
+// Requires set chips 4.04.xx
ROM_START( qnilecea )
ARISTOCRAT_MK5_BIOS
/*
@@ -6023,12 +6334,15 @@ ROM_END
// AHG1575 / MV4137 / 5,10,20 Credit Multiplier / 20 Line Multiline
// Sweet Liberty Deluxe / Export / A - 11/02/01
+// Requires set chips 4.04.xx
ROM_START( sldeluxe )
ARISTOCRAT_MK5_BIOS
/*
Checksum code found at 0x000d18
+ 0x000000-0x0ec207 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0xa86cc13c
Calculated Checksum 0xa86cc13c (OK)
+ 0x0ec208-0x31d6b3 is the non-Checksummed range (unusual endpoint)
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "ahg1575.u7", 0x000000, 0x80000, CRC(5962d463) SHA1(d78c3be7a2aa6d03888e928a5498a65b00ad4135) )
@@ -6075,7 +6389,11 @@ ROM_END
ROM_START( snowcat )
ARISTOCRAT_MK5_BIOS
/*
- Checksum code needs to be done
+ Checksum code found at 0x000b80
+ 0x000000-0x0553db is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
+ Expected Checksum 0xf2744b11
+ Calculated Checksum 0xf2744b11 (OK)
+ 0x0553dc-0x0ea4a3 is the non-Checksummed range (unusual endpoint)
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0100405v.u7", 0x000000, 0x80000, CRC(e52c01c2) SHA1(98acf33bbe0e4525a02b581eae7b7caf910f2b96) )
@@ -6543,20 +6861,29 @@ ROM_END
// BHG1584 / MV4130/1 / 20 Line Multiline / 5, 10, 25, 50 Credit Multiplier
// Unicorn Dreaming / Export / C - 10/17/01
+// Requires set chips 4.04.xx
ROM_START( unicorndu )
ARISTOCRAT_MK5_BIOS
- // checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D
+ /*
+ Checksum code found at 0x000d18
+ 0x000000-0x0ec547 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
+ Expected Checksum 0x16dabc9e
+ Calculated Checksum 0x16dabc9e (OK)
+ 0x0ec548-0x1ee2cb is the non-Checksummed range still containing data but NOT covered by Checksum
+ 0x0ec548-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included
+ */
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
- ROM_LOAD32_WORD( "bhg1584.u7", 0x000000, 0x7f06e, BAD_DUMP CRC(4867364d) SHA1(f8f89bcd38b6fda5a5344c3aa5547f24da4a88e5) )
- ROM_LOAD32_WORD( "bhg1584.u11", 0x000002, 0x7ff68, BAD_DUMP CRC(9798b89b) SHA1(bf95196c3aba938813e40fb819baa37a51380fd2) )
- ROM_LOAD32_WORD( "bhg1584.u8", 0x100000, 0x7fa38, BAD_DUMP CRC(960f3e5f) SHA1(981d90277df2aeb76931fe87cf41e11fcdcc132b) )
- ROM_LOAD32_WORD( "bhg1584.u12", 0x100002, 0x7f9ec, BAD_DUMP CRC(15f5d3b0) SHA1(68145549a8c1e58e805e8c4fe1a9fc60e7e3d39d) )
+ ROM_LOAD32_WORD( "bhg1584.u7", 0x000000, 0x80000, CRC(1490354e) SHA1(9327f01067e4a7f7ce5b6db9373b9ad59533babf) )
+ ROM_LOAD32_WORD( "bhg1584.u11", 0x000002, 0x80000, CRC(d2b6745b) SHA1(04b5586e802ce0bd5891b23222bc1db8e7c67f8a) )
+ ROM_LOAD32_WORD( "bhg1584.u8", 0x100000, 0x80000, CRC(e604d399) SHA1(9aab86aa6e8590921de9b7234713be72a7c4faa1) )
+ ROM_LOAD32_WORD( "bhg1584.u12", 0x100002, 0x80000, CRC(c1e878b5) SHA1(4e4e9dee4d85fbb77dc6f7d39c2dc5b0bf438aef) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
+
// 02J02056 / JB009/2 / Multi credit / Multi line
// Venice / VENEZUILA / B - 11/07/02
// This game is downported from the MK6 version
@@ -6946,30 +7273,32 @@ ROM_END
#define MACHINE_FLAGS MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND|MACHINE_IMPERFECT_GRAPHICS
// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS
-GAME( 1995, aristmk5, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "MKV Set/Clear Chips (USA)", MACHINE_FLAGS|MACHINE_IS_BIOS_ROOT )
+GAMEL( 1995, aristmk5, 0, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "MKV Set/Clear Chips (USA)", MACHINE_FLAGS|MACHINE_IS_BIOS_ROOT, layout_aristmk5_us )
// Dates listed below are for the combination (reel layout), not release dates
GAMEL( 1998, adonis, aristmk5, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Adonis (0200751V, NSW/ACT)", MACHINE_FLAGS, layout_aristmk5 ) // 602/9, A - 25/05/98, Rev 10
GAMEL( 1998, adonisa, adonis, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Adonis (0100751V, NSW/ACT)", MACHINE_FLAGS, layout_aristmk5 ) // 602/9, A - 25/05/98, Rev 9
GAMEL( 1999, adonisce, adonis, aristmk5, adonisce, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Adonis - Cash Express (0201005V, NSW/ACT)", MACHINE_FLAGS, layout_aristmk5 ) // 602/9, C - 06/07/99, Rev 12
-GAMEL( 2001, adonisu, adonis, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Adonis (BHG1508, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4124/1, B - 31/07/01
-GAMEL( 2002, alchemst, aristmk5, aristmk5, goldenra, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Alchemist (01J02046, Venezuela)", MACHINE_FLAGS, layout_yukongld ) // JB013/1, A - 22/01/02, Rev 17
+GAMEL( 2001, adonisu, adonis, aristmk5_usa, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Adonis (BHG1508, US)", MACHINE_FLAGS, layout_dolphntrce ) // MV4124/1, B - 31/07/01
+GAMEL( 2002, alchemst, aristmk5, aristmk5, goldenra, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Alchemist (01J02046, Venezuela)", MACHINE_FLAGS, layout_yukongl5 ) // JB013/1, A - 22/01/02, Rev 17
GAMEL( 2000, bparty, aristmk5, aristmk5_usa_touch, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Bachelorette Party (BHG1248, US)", MACHINE_FLAGS, layout_bparty ) // MV4119/1, B - 25/08/2000
GAMEL( 1996, baddog, aristmk5, aristmk5, baddog, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Bad Dog Poker (0200428V, NSW/ACT)", MACHINE_FLAGS, layout_baddog ) // 386/56, A - 17/12/96
GAMEL( 1998, bootsctn, aristmk5, aristmk5, cashcham, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Boot Scootin' (0100812V, NSW/ACT)", MACHINE_FLAGS, layout_cashcham ) // 616/1, B - 11/12/98, Rev 20
GAMEL( 1999, bootsctnu, bootsctn, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Boot Scootin' (GHG1012-02, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4098, A - 25/08/99
GAMEL( 1999, bootsctnua, bootsctn, aristmk5_usa, pengpuck, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Boot Scootin' (GHG1008-03, US)", MACHINE_FLAGS, layout_aristmk5_us_200 ) // MV4098/1, A - 27/07/99
-GAMEL( 1996, bumblbug, aristmk5, aristmk5, swhr2, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Bumble Bugs (0200510V, NSW/ACT)", MACHINE_FLAGS, layout_swhr2 ) // 593, D - 5/07/96, Rev 3
+GAMEL( 2001, bootsctnub, bootsctn, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Boot Scootin' (AHG1547, US)", MACHINE_FLAGS, layout_aristmk5_us_200 ) // MV4098/1, B - 22/03/01
+GAMEL( 1996, bumblbug, aristmk5, aristmk5, bumblbug, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Bumble Bugs (0200510V, NSW/ACT)", MACHINE_FLAGS, layout_bumblbug ) // 593, D - 5/07/96, Rev 3
GAMEL( 1996, bumblbugql, bumblbug, aristmk5, swhr2, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Bumble Bugs (0200456V, Queensland)", MACHINE_FLAGS, layout_swhr2 ) // 593, D - 5/07/96, Rev 1.0
GAMEL( 1997, bumblbugu, bumblbug, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Bumble Bugs (CHG0479-03, US)", MACHINE_FLAGS, layout_aristmk5_us ) // 593, D - 05/07/97
+GAMEL( 1997, bumblbugua, bumblbug, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Bumble Bugs (CHG0479-99, US)", MACHINE_FLAGS, layout_aristmk5_us ) // 593, D - 05/07/97
GAMEL( 1995, buttdeli, aristmk5, aristmk5, swhr2, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Butterfly Delight (0200143V, NSW/ACT)", MACHINE_FLAGS, layout_swhr2 ) // 571/4, A - 19/12/95, Rev 1.8.1.0
GAMEL( 1998, cashcat, aristmk5, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Cash Cat (0100676V, NSW/ACT)", MACHINE_FLAGS, layout_aristmk5 ) // 614/3, A - 03/04/98, Rev 7
GAMEL( 1997, cashcata, cashcat, aristmk5, aristmk5_9, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Cash Cat (0100557V, NSW/ACT)", MACHINE_FLAGS, layout_dolphntrb ) // 614/1, B - 01/12/97, Rev 7
-GAMEL( 1999, cashcatnz, cashcat, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Cash Cat (0300863V, New Zealand)", MACHINE_FLAGS, layout_cashcatnz ) // MV4089, A - 4/1/99, Rev 26
+GAMEL( 1999, cashcatnz, cashcat, aristmk5, cashcatnz, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Cash Cat (0300863V, New Zealand)", MACHINE_FLAGS, layout_cashcatnz ) // MV4089, A - 4/1/99, Rev 26
GAMEL( 1997, cashcham, aristmk5, aristmk5, cashcham, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Cash Chameleon (0100438V, NSW/ACT)", MACHINE_FLAGS, layout_cashcham ) // 603/1, C - 15/4/97, Rev 1.25.3.0
GAMEL( 1998, cashchama, cashcham, aristmk5, cashchama, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Cash Chameleon (0200437V, NSW/ACT)", MACHINE_FLAGS, layout_cashchama ) // 603(a), D - 18/02/98, Rev 3
GAMEL( 1998, cashchamnz, cashcham, aristmk5, cashchamnz, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Cash Chameleon (0300781V, New Zealand)", MACHINE_FLAGS, layout_cashchamnz ) // MV4067, A - 31/08/98, Rev 21
-GAMEL( 1996, cashchamu, cashcham, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Cash Chameleon (DHG4078-99, US)", MACHINE_FLAGS, layout_aristmk5_us ) // 603(a), B - 06/12/96
+GAMEL( 1996, cashchamu, cashcham, aristmk5_usa, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Cash Chameleon (DHG4078-99, US)", MACHINE_FLAGS, layout_cashchamu ) // 603(a), B - 06/12/96
GAMEL( 1997, cashcra5, aristmk5, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Cash Crop (0300467V, NSW/ACT)", MACHINE_FLAGS, layout_aristmk5 ) // 607, C - 14/07/97, Rev 6
GAMEL( 1998, chariotc, aristmk5, aristmk5, chariotc, aristmk5_state, aristmk5, ROT0, "Aristocrat", "The Chariot Challenge (0100787V, NSW/ACT)", MACHINE_FLAGS, layout_aristmk5 ) // 630/1, A - 10/08/98, Rev 11
GAMEL( 1998, chariotcv, chariotc, aristmk5, chariotcv, aristmk5_state, aristmk5, ROT0, "Aristocrat", "The Chariot Challenge (04J00714, Venezuela)", MACHINE_FLAGS, layout_snowcat ) // 630, A - 10/08/98, Rev 12
@@ -6991,7 +7320,7 @@ GAMEL( 1996, dolphntrb, dolphntr, aristmk5, aristmk5_9, aristmk5_s
GAMEL( 1996, dolphntru, dolphntr, aristmk5_usa, dolphntru, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Dolphin Treasure (FHG4077-02, US)", MACHINE_FLAGS, layout_aristmk5_us ) // 602/1, B - 06/12/96
GAMEL( 1999, dolphntrce, dolphntr, aristmk5_usa, dolphntrce, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Dolphin Treasure - Cash Express (AHG1607, US)", MACHINE_FLAGS, layout_dolphntrce ) // MV4090, D - 22/12/99
GAMEL( 1999, dolphntrcea, dolphntr, aristmk5_usa, dolphntru, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Dolphin Treasure - Cash Express (AHG1606, US)", MACHINE_FLAGS, layout_magimaska ) // MV4090, D - 22/12/99
-GAMEL( 1999, dolphntrceb, dolphntr, aristmk5_usa, dolphntrce, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Dolphin Treasure - Cash Express (AHG1519, US)", MACHINE_FLAGS, layout_pengpuck ) // MV4090, D - 22/12/99
+GAMEL( 1999, dolphntrceb, dolphntr, aristmk5_usa, dolphntrce, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Dolphin Treasure - Cash Express (AHG1519, US)", MACHINE_FLAGS, layout_dolphntrceb ) // MV4090, D - 22/12/99
GAMEL( 1997, drgneye, aristmk5, aristmk5, snowcat, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Dragon's Eye (0100521V, NSW/ACT)", MACHINE_FLAGS, layout_snowcat ) // 610, A - 09/05/97, Rev 1.27
GAMEL( 1997, dreamwv, aristmk5, aristmk5_touch, dreamwv, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Dream Weaver (0200586V, NSW/ACT)", MACHINE_FLAGS, layout_dreamwv ) // 606/2, A - 20/06/97, Rev 16
GAMEL( 2000, dynajack, aristmk5, aristmk5, dynajack, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Dynamite Jack (01J00081, NSW/ACT)", MACHINE_FLAGS, layout_dynajack ) // JB004, A - 12/07/2000, Rev 17
@@ -7003,16 +7332,20 @@ GAMEL( 2000, fortellr, aristmk5, aristmk5, goldenra, aristmk5_s
GAMEL( 1998, gambler, aristmk5, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "The Gambler (EHG0916-02, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4084/1, A - 30/10/98
GAMEL( 2001, geisha, aristmk5, aristmk5, geisha, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Geisha (0101408V, New Zealand)", MACHINE_FLAGS, layout_geisha ) // MV4127, A - 05/03/01, Rev 25
GAMEL( 1999, genmagi, aristmk5, aristmk5_touch, genmagi, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Genie Magic (0200894V, NSW/ACT)", MACHINE_FLAGS, layout_genmagi ) // 632/1, C - 15/02/99, Rev 20
+GAMEL( 2001, glizardu, aristmk5, aristmk5_usa, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Green Lizard (AHG1623, US)", MACHINE_FLAGS, layout_aristmk5_us_200 ) // MV4112/2 - A - 05/01/01
GAMEL( 1998, gnomeatw, aristmk5, aristmk5, kgalah, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Gnome Around The World (0100767V, NSW/ACT)", MACHINE_FLAGS, layout_kgalah ) // 625, C - 18/12/98, Rev 16
GAMEL( 1997, goldpyr, aristmk5, aristmk5_usa, dolphntru, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Golden Pyramids (AHG1205-03, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4091, B - 13/05/97
-GAMEL( 1997, goldpyra, goldpyr, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Golden Pyramids (AHG1206-99, US)", MACHINE_FLAGS, layout_aristmk5_us ) // 602/2, B - 13/05/97
+GAMEL( 1997, goldpyra, goldpyr, aristmk5_usa, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Golden Pyramids (AHG1206-99, US)", MACHINE_FLAGS, layout_aristmk5_us_200 ) // 602/2, B - 13/05/97
GAMEL( 1998, goldpyrb, goldpyr, aristmk5, goldpyrb, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Golden Pyramids (0100878V, Victoria)", MACHINE_FLAGS, layout_goldpyrb ) // 602/5, C - 19/06/98
GAMEL( 2000, goldenra, aristmk5, aristmk5, goldenra, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Golden Ra (0101164V, NSW/ACT)", MACHINE_FLAGS, layout_goldenra ) // 661, A - 10/04/00, Rev 15
-GAMEL( 2000, honeypot, aristmk5, aristmk5, goldenra, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Honey Pot (03J00241, NSW/ACT)", MACHINE_FLAGS, layout_yukongld ) // JB008, A - 21/11/2000, Rev 17
+GAMEL( 2000, honeypot, aristmk5, aristmk5, goldenra, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Honey Pot (03J00241, NSW/ACT)", MACHINE_FLAGS, layout_yukongl5 ) // JB008, A - 21/11/2000, Rev 17
+GAMEL( 2001, hnktonku, aristmk5, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Honkey Tonk - Cash Express (BHG1455, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4122/3, A - 07/08/01
GAMEL( 1999, incasun, aristmk5, aristmk5, incasun, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Inca Sun (0100872V, NSW/ACT)", MACHINE_FLAGS, layout_incasun ) // 631/3 B, B - 03/05/99, Rev 15
GAMEL( 1999, incasunsp, incasun, aristmk5, incasun, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Inca Sun (0100872V, NSW/ACT, Show Program)", MACHINE_FLAGS, layout_incasun ) // 631/3 B, B - 03/05/99, Rev 15
GAMEL( 2000, incasunnz, incasun, aristmk5, incasunnz, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Inca Sun (0101108V, New Zealand)", MACHINE_FLAGS, layout_incasunnz ) // MV4113, A - 6/3/00, Rev 25
+GAMEL( 1999, incasunv, incasun, aristmk5, incasun, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Inca Sun (01J01946, Venezuela)", MACHINE_FLAGS, layout_incasun ) // 631/3, B - 03/05/99
GAMEL( 2000, incasunu, incasun, aristmk5_usa, dolphntrce, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Inca Sun (CHG1458, US)", MACHINE_FLAGS, layout_dolphntrce ) // MV4130/3, A - 05/09/00
+GAMEL( 2000, incasunua, incasun, aristmk5_usa, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Inca Sun (DHG1577, US)", MACHINE_FLAGS, layout_dolphntrce ) // MV4130, A - 05/09/00
GAMEL( 1998, indrema5, aristmk5, aristmk5, indrema5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Indian Dreaming (0100845V, NSW/ACT)", MACHINE_FLAGS, layout_indrema5 ) // 628/1, B - 15/12/98, Rev 7
GAMEL( 1996, jumpjoey, aristmk5, aristmk5, cashcham, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Jumpin' Joey (0100383V, NSW/ACT)", MACHINE_FLAGS, layout_cashcham ) // 586/6, C - 13/11/96
GAMEL( 1996, jungjuic, aristmk5, aristmk5, jungjuic, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Jungle Juice (0200240V, New Zealand)", MACHINE_FLAGS, layout_jungjuic ) // 566/3, F - 06/03/96
@@ -7021,9 +7354,11 @@ GAMEL( 1995, kgalaha, kgalah, aristmk5, kgalah, aristmk5_s
GAMEL( 1994, kgbirda5, aristmk5, aristmk5, kgbirda5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "K.G. Bird (0200024V, NSW/ACT)", MACHINE_FLAGS, layout_kgbirda5 ) // 540/3, D - 10/10/94
GAMEL( 2001, koalamnt, aristmk5, aristmk5_usa, dolphntrce, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Koala Mint (CHG1573, US)", MACHINE_FLAGS, layout_dolphntrce ) // MV4137, A - 12/09/01
GAMEL( 1998, kookabuk, aristmk5, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Kooka Bucks (0100677V, NSW/ACT)", MACHINE_FLAGS, layout_aristmk5 ) // 661, A - 03/04/98, Rev 5
+GAMEL( 2000, kyhatonu, aristmk5, aristmk5_usa_touch, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Keep Your Hat On (BHG1204, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4114/1, B - 08/05/2000
GAMEL( 1997, locoloot, aristmk5, aristmk5, cashcham, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Loco Loot (0100473V, NSW/ACT)", MACHINE_FLAGS, layout_cashcham ) // 599/3, C - 17/06/97, Rev 1.26.13.0
GAMEL( 1997, locoloota, locoloot, aristmk5, locoloota, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Loco Loot (0100472V, NSW/ACT)", MACHINE_FLAGS, layout_locoloota ) // 599/2, C - 17/06/97, Rev 1.26.13.0
GAMEL( 1998, locolootnz, locoloot, aristmk5, cashchamnz, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Loco Loot (0600725V, New Zealand)", MACHINE_FLAGS, layout_cashchamnz ) // MV4064, A - 8/7/98, Rev 24
+GAMEL( 2001, locolootu, locoloot, aristmk5_usa, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Loco Loot (AHG1513, US)", MACHINE_FLAGS, layout_aristmk5_us_200 ) // MV4134, A - 30/07/01
GAMEL( 1997, lonewolf, aristmk5, aristmk5, wildbill, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Lone Wolf (0100587V, NSW/ACT)", MACHINE_FLAGS, layout_wildbill ) // 621, A - 29/10/97, Rev 1.27.17.0
GAMEL( 1995, luckyclo, aristmk5, aristmk5, wcougar, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Lucky Clover (0300109V, NSW/ACT)", MACHINE_FLAGS, layout_wcougar ) // 570/6, A - 12/10/95
GAMEL( 2000, magimask, aristmk5, aristmk5_usa_touch, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Magic Mask (AHG1549, US)", MACHINE_FLAGS, layout_dolphntrce ) // MV4115_1, A - 09/05/00
@@ -7034,7 +7369,7 @@ GAMEL( 1997, magtcha5a, magtcha5, aristmk5_touch, dimtouch, aristmk5_s
GAMEL( 1997, mammothm, aristmk5, aristmk5, kgalah, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Mammoth Money (0100425V, NSW/ACT)", MACHINE_FLAGS, layout_kgalah ) // 595/5, D - 07/04/97, Rev 1.22.14.1
GAMEL( 2000, marmagic, aristmk5, aristmk5, goldenra, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Margarita Magic (01J00101, NSW/ACT)", MACHINE_FLAGS, layout_marmagic ) // JB005, A - 07/07/00, Rev 17
GAMEL( 2000, marmagicu, marmagic, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Margarita Magic (EHG1558, US)", MACHINE_FLAGS, layout_aristmk5_us ) // US003, 07/07/2000
-GAMEL( 2000, marmagicua, marmagic, aristmk5_usa, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Margarita Magic (EHG1559, US, set 1)", MACHINE_FLAGS, layout_aristmk5_us_200 ) // US003, A - 07/07/00
+GAMEL( 2000, marmagicua, marmagic, aristmk5_usa, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Margarita Magic (EHG1559, US)", MACHINE_FLAGS, layout_dolphntrce ) // US003, A - 07/07/00
GAMEL( 1997, mgarden, aristmk5, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Magic Garden (AHG1211-99, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4033, B - 10/02/97 (alt title for enchanted forest?)
GAMEL( 1996, minemine, aristmk5, aristmk5, swhr2, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Mine, Mine, Mine (0400115V, NSW/ACT)", MACHINE_FLAGS, layout_swhr2 ) // 559/2, D - 16/01/96, Rev 1.18.3.0
GAMEL( 1996, minemineu, minemine, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Mine, Mine, Mine (VHG0416-99, US)", MACHINE_FLAGS, layout_aristmk5_us ) // 559/2, E - 14/02/96
@@ -7060,6 +7395,8 @@ GAMEL( 1996, pengpaya, pengpay, aristmk5, cashchama, aristmk5_s
GAMEL( 1997, pengpayb, pengpay, aristmk5, swhr2, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Penguin Pays (0200359V, NSW/ACT)", MACHINE_FLAGS, layout_swhr2 ) // 586/3(a), D - 03/06/97, Rev 4
GAMEL( 1995, pengpayc, pengpay, aristmk5, wcougar, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Penguin Pays (0200113V, NSW/ACT)", MACHINE_FLAGS, layout_wcougar ) // 586, A - 12/10/95
GAMEL( 1997, pengpayu, pengpay, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Penguin Pays (BHI0417-03, US)", MACHINE_FLAGS, layout_aristmk5_us ) // 586/7(b), B - 14/07/97
+GAMEL( 1997, pengpayua, pengpay, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Penguin Pays (OHG0417-03, US)", MACHINE_FLAGS, layout_aristmk5_us ) // 586/7(b), B - 14/07/97
+GAMEL( 1997, pengpayub, pengpay, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Penguin Pays (OHG0417-02, US)", MACHINE_FLAGS, layout_aristmk5_us ) // 586/7(b), B - 14/07/97
GAMEL( 2001, pengpuck, pengpay, aristmk5_usa, pengpuck, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Penguin Pays - Penguin Pucks (EHG1257, US)", MACHINE_FLAGS, layout_pengpuck ) // MV4122/1, C - 19/01/01
GAMEL( 1998, petshop, aristmk5, aristmk5, petshop, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Pet Shop (0100731V, NSW/ACT)", MACHINE_FLAGS, layout_petshop ) // 618/1, A - 17/04/98, Rev 13
GAMEL( 1995, phantpay, aristmk5, aristmk5, swhr2, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Phantom Pays (0500005V, NSW/ACT)", MACHINE_FLAGS, layout_swhr2 ) // 570/1, E - 12/09/95
@@ -7088,7 +7425,7 @@ GAMEL( 1997, retrsam, aristmk5, aristmk5, retrsam, aristmk5_s
GAMEL( 1997, retrsama, retrsam, aristmk5, retrsam, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Return of the Samurai (0200549V, NSW/ACT)", MACHINE_FLAGS, layout_sbuk3 ) // 608, A - 17/04/97, Rev 1.26.25.3
GAMEL( 1997, retrsamb, retrsam, aristmk5, retrsamb, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Return of the Samurai (0200506V, NSW/ACT)", MACHINE_FLAGS, layout_retrsamb ) // 608, A - 17/04/97, Rev 1.26.25.3
GAMEL( 1997, rushrst, aristmk5, aristmk5, rushrst, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Rushin Rooster (0100534V, NSW/ACT)", MACHINE_FLAGS, layout_cashchama ) // 596/3, C - 25/06/97, Rev 1.27.2.3
-GAMEL( 2001, sldeluxe, aristmk5, aristmk5_usa, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Sweet Liberty Deluxe (AHG1575, US)", MACHINE_FLAGS, layout_aristmk5_us_200 ) // MV4137, A - 11/02/01
+GAMEL( 2001, sldeluxe, aristmk5, aristmk5_usa, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Sweet Liberty Deluxe (AHG1575, US)", MACHINE_FLAGS, layout_dolphntrce ) // MV4137, A - 11/02/01
GAMEL( 1998, slvrwolf, aristmk5, aristmk5, wamazona, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Silver Wolf (0100673V, NSW/ACT)", MACHINE_FLAGS, layout_wamazona ) // 621/2, A - 23/03/98, Rev 3
GAMEL( 1996, snowcat, aristmk5, aristmk5, snowcat, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Snow Cat (0100405V, NSW/ACT)", MACHINE_FLAGS, layout_snowcat ) // 599, B - 23/12/96, Rev 1.25.1.0
GAMEL( 1997, sumospin, aristmk5, aristmk5, swhr2, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Sumo Spins (0200606V, NSW/ACT)", MACHINE_FLAGS, layout_swhr2 ) // 622, A - 08/12/97, Rev 4
@@ -7096,7 +7433,7 @@ GAMEL( 1998, sbuk3, aristmk5, aristmk5, sbuk3, aristmk5_s
GAMEL( 1998, sbuk3a, sbuk3, aristmk5, sbuk3, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Super Bucks III (0100711V, NSW/ACT)", MACHINE_FLAGS, layout_sbuk3 ) // 626, A - 22/04/98, Rev 7
GAMEL( 1995, swhr2, aristmk5, aristmk5, swhr2, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Sweethearts II (0200465V, NSW/ACT)", MACHINE_FLAGS, layout_swhr2 ) // 577/1, C - 07/09/95, Rev 3
GAMEL( 1995, swhr2a, swhr2, aristmk5, swhr2, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Sweethearts II (0200004V, NSW/ACT)", MACHINE_FLAGS, layout_swhr2 ) // 577/1, C - 07/09/95, Rev 1.1.3.0
-GAMEL( 1998, swhr2u, swhr2, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Sweethearts II (PHG0742-02, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4061, A - 29/06/98
+GAMEL( 1998, swhr2u, swhr2, aristmk5_usa, swhr2u, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Sweethearts II (PHG0742-02, US)", MACHINE_FLAGS, layout_swhr2u ) // MV4061, A - 29/06/98
GAMEL( 1995, swhr2v, swhr2, aristmk5, swhr2, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Sweethearts II (01J01986, Venezuela)", MACHINE_FLAGS, layout_swhr2 ) // 577/1, C - 07/09/95, Rev 3
GAMEL( 1996, thor, aristmk5, aristmk5, cashcham, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Thor (0200319V, NSW/ACT)", MACHINE_FLAGS, layout_cashcham ) // 569/12, B - 14/08/96, Rev 1.23.7.0
GAMEL( 1996, thndh, aristmk5, aristmk5, snowcat, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Thunder Heart (0200333V, NSW/ACT)", MACHINE_FLAGS, layout_snowcat ) // 570/9, A - 14/08/96, Rev 1.23.6.0
@@ -7112,6 +7449,7 @@ GAMEL( 1997, trpdlghtu, trpdlght, aristmk5_usa, aristmk5_usa, aristmk5_s
GAMEL( 1998, unicornd, aristmk5, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Unicorn Dreaming (0100791V, NSW/ACT)", MACHINE_FLAGS, layout_aristmk5 ) // 631/1 A, A - 31/08/98, Rev 12
GAMEL( 1998, unicornda, unicornd, aristmk5, aristmk5_9, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Unicorn Dreaming (0100813V, NSW/ACT)", MACHINE_FLAGS, layout_dolphntrb ) // 631 A, A - 02/09/98, Rev 14
GAMEL( 2000, unicorndnz, unicornd, aristmk5, unicorndnz, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Unicorn Dreaming (0101228V, New Zealand)", MACHINE_FLAGS, layout_aristmk5 ) // MV4113/1, A - 05/04/2000, Rev 27
+GAMEL( 2001, unicorndu, unicornd, aristmk5_usa, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Unicorn Dreaming (BHG1584, US)", MACHINE_FLAGS, layout_dolphntrce ) // MV4130/1, C - 10/17/01
GAMEL( 2002, venicea5, aristmk5, aristmk5, goldenra, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Venice (02J02056, Venezuela)", MACHINE_FLAGS, layout_venicea5 ) // JB009/2, B - 11/07/02, Rev 17
GAMEL( 1996, wamazon, aristmk5, aristmk5, wamazon, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Wild Amazon (0200507V, NSW/ACT)", MACHINE_FLAGS, layout_wamazon ) // 506/8, A - 10/10/96, Rev 3
GAMEL( 1996, wamazona, wamazon, aristmk5, wamazona, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Wild Amazon (0200285V, NSW/ACT)", MACHINE_FLAGS, layout_wamazona ) // 506/6, A - 7/5/96, Rev 1.22.8.0
@@ -7125,11 +7463,11 @@ GAMEL( 1996, wizways, aristmk5, aristmk5, wizways, aristmk5_s
GAMEL( 1997, wnpost, aristmk5, aristmk5_usa, wnpost, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Winning Post (RHG0418-04, US)", MACHINE_FLAGS, layout_wnpost ) // 541/2, G - 11/02/97
GAMEL( 1999, wthing, aristmk5, aristmk5, retrsam, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Wild Thing (0101158V, NSW/ACT)", MACHINE_FLAGS, layout_sbuk3 ) // 608/4, B - 14/12/99, Rev 8
GAMEL( 1999, wtiger, aristmk5, aristmk5, wtiger, aristmk5_state, aristmk5, ROT0, "Aristocrat", "White Tiger Classic (0200954V, NSW/ACT)", MACHINE_FLAGS, layout_wtiger ) // 638/1, B - 08/07/99, Rev 13
-GAMEL( 2000, yukongl5, aristmk5, aristmk5, goldenra, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Yukon Gold (03J00191, NSW/ACT)", MACHINE_FLAGS, layout_yukongld ) // JB005/1, A - 30/10/2000, Rev 17
+GAMEL( 2000, yukongl5, aristmk5, aristmk5, goldenra, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Yukon Gold (03J00191, NSW/ACT)", MACHINE_FLAGS, layout_yukongl5 ) // JB005/1, A - 30/10/2000, Rev 17
// the following parent sets are known bad dumps, and do not boot (confirmed)
GAMEL( 1996, blackpnt, aristmk5, aristmk5, wildbill, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Black Panther (0200818V, Victoria)", MACHINE_FLAGS, layout_wildbill ) // 594/1, A - 30/07/96
-GAMEL( 1996, canrose, aristmk5, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Canyon Rose (AHG1463, US)", MACHINE_FLAGS, layout_aristmk5_us ) // 603(a), B - 06/12/96 (same as Cash Chameleon)
+GAMEL( 1996, canrose, aristmk5, aristmk5_usa, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Canyon Rose (AHG1463, US)", MACHINE_FLAGS, layout_aristmk5_us_200 ) // 603(a), B - 06/12/96 (same as Cash Chameleon)
GAMEL( 2000, diamdest, aristmk5, aristmk5_usa, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Diamond Destiny (AHG1533, US)", MACHINE_FLAGS, layout_aristmk5_us_200 ) // MV4115_5, A - 09/05/2000 (same as Magic Mask)
GAMEL( 2001, fortfvr, aristmk5, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Fortune Fever (BHG1566, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4122/2, A - 13/05/01
GAMEL( 1996, jumpbean, aristmk5, aristmk5, swhr2, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Jumping Beans (0100161V, NSW/ACT)", MACHINE_FLAGS, layout_swhr2 ) // 586/2, A - 25/01/96
@@ -7141,14 +7479,10 @@ GAMEL( 2000, bpartya, bparty, aristmk5_usa_touch, bootsctnua, aristmk5_s
GAMEL( 1997, cashcra5a, cashcra5, aristmk5, aristmk5_9, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Cash Crop (0300447V, NSW/ACT)", MACHINE_FLAGS, layout_dolphntrb ) // 607/2, C - 29/08/97, Rev 7
GAMEL( 2001, dynajacku, dynajack, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Dynamite Jack (CHG1562, US)", MACHINE_FLAGS, layout_aristmk5_us ) // US002, A - 11/07/01
GAMEL( 2000, eforsta5ce, eforsta5, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Enchanted Forest - Cash Express (CHG1536, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4108/6, C - 17/01/00
-GAMEL( 2000, incasunua, incasun, aristmk5_usa, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Inca Sun (DHG1577, US)", MACHINE_FLAGS, layout_aristmk5_us_200 ) // MV4130, A - 05/09/00
-GAMEL( 2001, locolootu, locoloot, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Loco Loot (AHG1513, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4134, A - 30/07/01
-GAMEL( 2000, marmagicub, marmagic, aristmk5_usa, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Margarita Magic (EHG1559, US, set 2)", MACHINE_FLAGS, layout_aristmk5_us_200 ) // US003, A - 07/07/00
GAMEL( 2001, mountmonce, mountmon, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Mountain Money - Cash Express (AHG1629, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4108/5, A - 10/03/01
GAMEL( 2001, mountmonu, mountmon, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Mountain Money (BHG1465, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4108/5, A - 10/03/01
GAMEL( 2001, partygrsb, partygrs, aristmk5_usa_touch, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Party Gras (AHG1568, US)", MACHINE_FLAGS, layout_aristmk5_us_200 ) // MV4115/6, A - 10/11/2001, 20 lines
GAMEL( 1995, pengpayd, pengpay, aristmk5, wcougar, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Penguin Pays (0300113V, NSW/ACT)", MACHINE_FLAGS, layout_wcougar ) // 586, A - 12/10/95, Rev 4
GAMEL( 1998, petshopa, petshop, aristmk5, snowcat, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Pet Shop (0100679V, NSW/ACT)", MACHINE_FLAGS, layout_snowcat ) // 618, A - 09/03/98, Rev 10
GAMEL( 1995, sbuk2a, sbuk2, aristmk5, sbuk2, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Super Bucks II (0300006V, NSW/ACT)", MACHINE_FLAGS, layout_sbuk2 ) // no data due to missing ROMs
-GAMEL( 2001, unicorndu, unicornd, aristmk5_usa, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Unicorn Dreaming (BHG1584, US)", MACHINE_FLAGS, layout_aristmk5_us_200 ) // MV4130/1, C - 10/17/01
GAMEL( 2000, wthinga, wthing, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Wild Thing (0201176V, NSW/ACT)", MACHINE_FLAGS, layout_aristmk5 ) // 608/5, B - 25/02/00, Rev 11
diff --git a/src/mame/drivers/arkanoid.cpp b/src/mame/drivers/arkanoid.cpp
index c4c7ae8e251..eb6ed5af8af 100644
--- a/src/mame/drivers/arkanoid.cpp
+++ b/src/mame/drivers/arkanoid.cpp
@@ -2116,12 +2116,12 @@ DRIVER_INIT_MEMBER(arkanoid_state,block2)
int srctile;
// combine these into a single swap..
- srctile = BITSWAP16(tile,15,14,13,12,
+ srctile = bitswap<16>(tile,15,14,13,12,
11,10,9,8,
7,5,6,3,
1,2,4,0);
- srctile = BITSWAP16(srctile,15,14,13,12,
+ srctile = bitswap<16>(srctile,15,14,13,12,
11,9,10,5,
7,6,8,4,
3,2,1,0);
diff --git a/src/mame/drivers/arsystems.cpp b/src/mame/drivers/arsystems.cpp
index 986b4aaadd5..9bc03bdf0e7 100644
--- a/src/mame/drivers/arsystems.cpp
+++ b/src/mame/drivers/arsystems.cpp
@@ -896,7 +896,7 @@ void arcadia_amiga_state::generic_decode(const char *tag, int bit7, int bit6, in
/* only the low byte of ROMs are encrypted in these games */
for (i = 0; i < 0x20000/2; i++)
- rom[i] = BITSWAP16(rom[i], 15,14,13,12,11,10,9,8, bit7,bit6,bit5,bit4,bit3,bit2,bit1,bit0);
+ rom[i] = bitswap<16>(rom[i], 15,14,13,12,11,10,9,8, bit7,bit6,bit5,bit4,bit3,bit2,bit1,bit0);
#if 0
{
diff --git a/src/mame/drivers/astrcorp.cpp b/src/mame/drivers/astrcorp.cpp
index addf0b57921..680600f8997 100644
--- a/src/mame/drivers/astrcorp.cpp
+++ b/src/mame/drivers/astrcorp.cpp
@@ -57,6 +57,8 @@ public:
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
+ m_hopper(*this, "hopper"),
+ m_ticket(*this, "ticket"),
m_spriteram(*this, "spriteram")
{ }
@@ -66,6 +68,8 @@ public:
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
+ optional_device<ticket_dispenser_device> m_hopper;
+ optional_device<ticket_dispenser_device> m_ticket;
// memory pointers
required_shared_ptr<uint16_t> m_spriteram;
@@ -263,23 +267,23 @@ WRITE16_MEMBER(astrocorp_state::skilldrp_outputs_w)
if (ACCESSING_BITS_0_7)
{
- machine().bookkeeping().coin_counter_w(0, (data & 0x0001)); // key in |
- machine().bookkeeping().coin_counter_w(0, (data & 0x0002)); // coin in |- manual shows 1 in- and 1 out- counter
- machine().bookkeeping().coin_counter_w(1, (data & 0x0004)); // key out |
- machine().device<ticket_dispenser_device>("hopper")->write(space, 0, (data & 0x0008)<<4); // hopper motor?
- // (data & 0x0010) // hopper?
- output().set_led_value(0, (data & 0x0020)); // error lamp (coin/hopper jam: "call attendant")
- machine().device<ticket_dispenser_device>("ticket")->write(space, 0, data & 0x0080); // ticket motor?
+ machine().bookkeeping().coin_counter_w(0, BIT(data, 0)); // key in |
+ machine().bookkeeping().coin_counter_w(0, BIT(data, 1)); // coin in |- manual shows 1 in- and 1 out- counter
+ machine().bookkeeping().coin_counter_w(1, BIT(data, 2)); // key out |
+ m_hopper->motor_w(BIT(data, 3)); // hopper motor?
+ // BIT(data, 4) // hopper?
+ output().set_led_value(0, BIT(data, 5)); // error lamp (coin/hopper jam: "call attendant")
+ m_ticket->motor_w(BIT(data, 7)); // ticket motor?
}
if (ACCESSING_BITS_8_15)
{
// lamps:
- output().set_led_value(1, (data & 0x0100)); // select
- output().set_led_value(2, (data & 0x0400)); // take
- output().set_led_value(3, (data & 0x0800)); // bet
- output().set_led_value(4, (data & 0x1000)); // start
- output().set_led_value(5, (data & 0x4000)); // win / test
- output().set_led_value(6, (data & 0x8000)); // ticket?
+ output().set_led_value(1, BIT(data, 8)); // select
+ output().set_led_value(2, BIT(data, 10)); // take
+ output().set_led_value(3, BIT(data, 11)); // bet
+ output().set_led_value(4, BIT(data, 12)); // start
+ output().set_led_value(5, BIT(data, 14)); // win / test
+ output().set_led_value(6, BIT(data, 15)); // ticket?
}
// popmessage("%04X",data);
diff --git a/src/mame/drivers/astrof.cpp b/src/mame/drivers/astrof.cpp
index 5573fca56a8..18d6789e4b9 100644
--- a/src/mame/drivers/astrof.cpp
+++ b/src/mame/drivers/astrof.cpp
@@ -453,7 +453,7 @@ READ8_MEMBER(astrof_state::afire_coin_prot_r)
READ8_MEMBER(astrof_state::tomahawk_protection_r)
{
/* flip the byte */
- return BITSWAP8(*m_tomahawk_protection, 0, 1, 2, 3, 4, 5, 6, 7);
+ return bitswap<8>(*m_tomahawk_protection, 0, 1, 2, 3, 4, 5, 6, 7);
}
diff --git a/src/mame/drivers/atarisy1.cpp b/src/mame/drivers/atarisy1.cpp
index da07124c3dd..f015ea086b5 100644
--- a/src/mame/drivers/atarisy1.cpp
+++ b/src/mame/drivers/atarisy1.cpp
@@ -795,7 +795,7 @@ static MACHINE_CONFIG_START( atarisy1 )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
/* via */
- MCFG_DEVICE_ADD("via6522_0", VIA6522, 0)
+ MCFG_DEVICE_ADD("via6522_0", VIA6522, ATARI_CLOCK_14MHz/8)
MCFG_VIA6522_READPA_HANDLER(READ8(atarisy1_state, via_pa_r))
MCFG_VIA6522_READPB_HANDLER(READ8(atarisy1_state, via_pb_r))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(atarisy1_state, via_pa_w))
diff --git a/src/mame/drivers/atarisy2.cpp b/src/mame/drivers/atarisy2.cpp
index 4739ae4e358..c33db51c5e8 100644
--- a/src/mame/drivers/atarisy2.cpp
+++ b/src/mame/drivers/atarisy2.cpp
@@ -296,7 +296,7 @@ WRITE16_MEMBER(atarisy2_state::bankselect_w)
};*/
int banknumber = ((data >> 10) & 0x3f) ^ 0x03;
- banknumber = BITSWAP16(banknumber, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 1, 0, 3, 2);
+ banknumber = bitswap<16>(banknumber, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 1, 0, 3, 2);
if (offset)
m_rombank2->set_entry(banknumber);
diff --git a/src/mame/drivers/attache.cpp b/src/mame/drivers/attache.cpp
index ca68ba5c3ec..f81ff6d120c 100644
--- a/src/mame/drivers/attache.cpp
+++ b/src/mame/drivers/attache.cpp
@@ -800,16 +800,14 @@ WRITE_LINE_MEMBER( attache_state::fdc_dack_w )
WRITE8_MEMBER(attache816_state::x86_comms_w)
{
m_comms_val = data;
+ m_ppi->pc6_w(1);
m_z80_rx_ready = false;
- machine().scheduler().synchronize();
- logerror("x86 writes %02x to comms\n",data);
}
READ8_MEMBER(attache816_state::x86_comms_r)
{
m_z80_tx_ready = false;
- logerror("x86 reads %02x from comms\n",m_comms_val);
- machine().scheduler().synchronize();
+ m_ppi->pc4_w(1);
return m_comms_val;
}
@@ -850,19 +848,14 @@ READ8_MEMBER(attache816_state::z80_comms_r)
{
m_z80_rx_ready = true;
m_ppi->pc6_w(0);
- logerror("z80 reads %02x from comms\n",m_comms_val);
- machine().scheduler().synchronize();
return m_comms_val;
}
WRITE8_MEMBER(attache816_state::z80_comms_w)
{
m_comms_val = data;
- logerror("z80 writes %02x to comms\n",data);
m_z80_tx_ready = true;
m_ppi->pc4_w(0);
- machine().scheduler().synchronize();
-// m_ppi->write(space,0,data);
}
// Z80 comms status
@@ -1171,6 +1164,7 @@ static MACHINE_CONFIG_START( attache816 )
MCFG_CPU_ADD("extcpu",I8086,XTAL_24MHz / 3)
MCFG_CPU_PROGRAM_MAP(attache_x86_map)
MCFG_CPU_IO_MAP(attache_x86_io)
+ MCFG_QUANTUM_PERFECT_CPU("extcpu")
MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
MCFG_SCREEN_REFRESH_RATE(60)
diff --git a/src/mame/drivers/atvtrack.cpp b/src/mame/drivers/atvtrack.cpp
index 7a971b669f0..4592a980750 100644
--- a/src/mame/drivers/atvtrack.cpp
+++ b/src/mame/drivers/atvtrack.cpp
@@ -438,7 +438,7 @@ void get_altera10ke_eab(u8* dst, u8 *pof, int eab)
for (u32 bit = 0; bit < 4096; bit++)
{
- u32 tbit = BITSWAP16(bit, 15, 14, 13, 12,
+ u32 tbit = bitswap<16>(bit, 15, 14, 13, 12,
9, 8, 7, 6, 5, 4, 3,
11, 10,
2, 1, 0);
@@ -471,8 +471,8 @@ void atvtrack_state::machine_reset()
{
u16 lword = tdata[i * 2 + 512] | (tdata[i * 2 + 513] << 8);
u16 hword = tdata[i * 2] | (tdata[i * 2 + 1] << 8);
- lword = BITSWAP16(lword, 7, 9, 0, 10, 3, 11, 4, 12, 2, 15, 1, 13, 6, 8, 5, 14);
- hword = BITSWAP16(hword, 5, 10, 7, 9, 6, 13, 3, 15, 2, 11, 1, 8, 0, 12, 4, 14);
+ lword = bitswap<16>(lword, 7, 9, 0, 10, 3, 11, 4, 12, 2, 15, 1, 13, 6, 8, 5, 14);
+ hword = bitswap<16>(hword, 5, 10, 7, 9, 6, 13, 3, 15, 2, 11, 1, 8, 0, 12, 4, 14);
dst[i * 4 + 0] = lword & 0xff;
dst[i * 4 + 1] = lword >> 8;
dst[i * 4 + 2] = hword & 0xff;
diff --git a/src/mame/drivers/backfire.cpp b/src/mame/drivers/backfire.cpp
index 4999e338d2f..6a56f803821 100644
--- a/src/mame/drivers/backfire.cpp
+++ b/src/mame/drivers/backfire.cpp
@@ -687,7 +687,7 @@ void backfire_state::descramble_sound()
{
uint32_t addr;
- addr = BITSWAP24 (x,23,22,21,0, 20,
+ addr = bitswap<24> (x,23,22,21,0, 20,
19,18,17,16,
15,14,13,12,
11,10,9, 8,
diff --git a/src/mame/drivers/bagman.cpp b/src/mame/drivers/bagman.cpp
index de3d13f4cae..32023f389c1 100644
--- a/src/mame/drivers/bagman.cpp
+++ b/src/mame/drivers/bagman.cpp
@@ -108,7 +108,11 @@ WRITE_LINE_MEMBER(bagman_state::tmsprom_csq0_w)
WRITE_LINE_MEMBER(bagman_state::tmsprom_csq1_w)
{
- m_tmsprom->rom_csq_w(machine().dummy_space(), 1, state);
+ // HACK: Schematics suggest that this LS259 does in fact respond to the master
+ // reset signal, which would pull /OE active low on both 2732s at once. How
+ // does that situation manage not to overload the circuitry?
+ if (state || m_tmslatch->q4_r())
+ m_tmsprom->rom_csq_w(machine().dummy_space(), 1, state);
}
WRITE_LINE_MEMBER(bagman_state::coin_counter_w)
diff --git a/src/mame/drivers/balsente.cpp b/src/mame/drivers/balsente.cpp
index 3ac9c893e11..04dcafcb0f0 100644
--- a/src/mame/drivers/balsente.cpp
+++ b/src/mame/drivers/balsente.cpp
@@ -1280,7 +1280,7 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( balsente )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M6809, XTAL_20MHz/16) /* xtal verified but not speed */
+ MCFG_CPU_ADD("maincpu", MC6809E, XTAL_20MHz/16) /* xtal verified but not speed */
MCFG_CPU_PROGRAM_MAP(cpu1_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", balsente_state, balsente_update_analog_inputs)
diff --git a/src/mame/drivers/baraduke.cpp b/src/mame/drivers/baraduke.cpp
index b09899c44b6..4c64a2efa9a 100644
--- a/src/mame/drivers/baraduke.cpp
+++ b/src/mame/drivers/baraduke.cpp
@@ -373,7 +373,7 @@ GFXDECODE_END
static MACHINE_CONFIG_START( baraduke )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M6809, XTAL_49_152MHz/32)
+ MCFG_CPU_ADD("maincpu", MC6809E, XTAL_49_152MHz/32) // 68A09E
MCFG_CPU_PROGRAM_MAP(baraduke_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", baraduke_state, irq0_line_assert)
diff --git a/src/mame/drivers/barni.cpp b/src/mame/drivers/barni.cpp
index 05dad500f51..96a328cb671 100644
--- a/src/mame/drivers/barni.cpp
+++ b/src/mame/drivers/barni.cpp
@@ -7,11 +7,10 @@
/*
Hardware:
-CPU: 2 x M6809, optional M6802 (what for?)
+CPU: 2 x 6809E, optional MC6802 which may replace second 6809E
INT: IRQ on CPU 0, FIRQ on CPU 1
-IO: DMA (Direct Memory Access/Address)
- 2x PIA 6821
- 1x VIS 6522
+IO: 2x PIA 6821
+ 1x VIA 6522
DISPLAY: 5x6 digit 7 or 16 segment display
SOUND: basically the same as Bally's Squalk & Talk -61 board but missing AY8912 synth chip
*/
@@ -58,13 +57,13 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( barni )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M6809, 2000000)
+ MCFG_CPU_ADD("maincpu", MC6809E, XTAL_4MHz / 4)
MCFG_CPU_PROGRAM_MAP(maincpu_map)
- MCFG_CPU_ADD("subcpu", M6809, 2000000)
+ MCFG_CPU_ADD("subcpu", MC6809E, XTAL_4MHz / 4)
MCFG_CPU_PROGRAM_MAP(subcpu_map)
- MCFG_CPU_ADD("audiocpu", M6802, 2000000)
+ MCFG_CPU_ADD("audiocpu", M6802, 4000000) // uses own XTAL, but what is the value?
MCFG_CPU_PROGRAM_MAP(audiocpu_map)
/* video hardware */
diff --git a/src/mame/drivers/beezer.cpp b/src/mame/drivers/beezer.cpp
index 324c40c82b4..7d24112dce6 100644
--- a/src/mame/drivers/beezer.cpp
+++ b/src/mame/drivers/beezer.cpp
@@ -451,7 +451,7 @@ void beezer_state::machine_reset()
bankswitch_w(machine().dummy_space(), 0, 0);
// start timer
- m_timer_count->adjust(attotime::zero, 0, attotime::from_hz((XTAL_12MHz / 12) / 16));
+ m_timer_count->adjust(attotime::zero, 0, attotime::from_hz((XTAL_4MHz / 4) / 16));
}
@@ -461,7 +461,7 @@ void beezer_state::machine_reset()
static MACHINE_CONFIG_START( beezer )
// basic machine hardware
- MCFG_CPU_ADD("maincpu", M6809, XTAL_12MHz / 12)
+ MCFG_CPU_ADD("maincpu", MC6809, XTAL_12MHz / 3)
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_DEVICE_ADD("sysbank", ADDRESS_MAP_BANK, 0)
@@ -473,7 +473,7 @@ static MACHINE_CONFIG_START( beezer )
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", beezer_state, scanline_cb, "screen", 0, 1)
- MCFG_DEVICE_ADD("via_u6", VIA6522, 0)
+ MCFG_DEVICE_ADD("via_u6", VIA6522, XTAL_12MHz / 12)
MCFG_VIA6522_READPA_HANDLER(READ8(beezer_state, via_system_pa_r))
MCFG_VIA6522_READPB_HANDLER(READ8(beezer_state, via_system_pb_r))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(beezer_state, via_system_pa_w))
@@ -497,13 +497,13 @@ static MACHINE_CONFIG_START( beezer )
MCFG_PALETTE_INIT_OWNER(beezer_state, beezer)
// sound hardware
- MCFG_CPU_ADD("audiocpu", M6809, XTAL_12MHz / 12)
+ MCFG_CPU_ADD("audiocpu", MC6809, XTAL_4MHz)
MCFG_CPU_PROGRAM_MAP(sound_map)
MCFG_INPUT_MERGER_ANY_HIGH("audio_irqs")
MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", M6809_IRQ_LINE))
- MCFG_DEVICE_ADD("via_u18", VIA6522, 0)
+ MCFG_DEVICE_ADD("via_u18", VIA6522, XTAL_4MHz / 4)
MCFG_VIA6522_READPA_HANDLER(READ8(beezer_state, via_audio_pa_r))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(beezer_state, via_audio_pa_w))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(beezer_state, via_audio_pb_w))
@@ -512,7 +512,7 @@ static MACHINE_CONFIG_START( beezer )
MCFG_VIA6522_CB2_HANDLER(WRITELINE(beezer_state, dmod_data_w))
MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("audio_irqs", input_merger_device, in_w<0>))
- MCFG_DEVICE_ADD("ptm", PTM6840, XTAL_12MHz / 12)
+ MCFG_DEVICE_ADD("ptm", PTM6840, XTAL_4MHz / 4)
MCFG_PTM6840_OUT0_CB(WRITELINE(beezer_state, ptm_out0_w))
MCFG_PTM6840_OUT1_CB(WRITELINE(beezer_state, ptm_out1_w))
MCFG_PTM6840_OUT2_CB(WRITELINE(beezer_state, ptm_out2_w))
diff --git a/src/mame/drivers/berzerk.cpp b/src/mame/drivers/berzerk.cpp
index c87689ad36b..d0d19c69151 100644
--- a/src/mame/drivers/berzerk.cpp
+++ b/src/mame/drivers/berzerk.cpp
@@ -392,7 +392,7 @@ WRITE8_MEMBER(berzerk_state::magicram_w)
uint8_t shift_flop_output = (((uint16_t)m_last_shift_data << 8) | data) >> (m_magicram_control & 0x07);
if (m_magicram_control & 0x08)
- shift_flop_output = BITSWAP8(shift_flop_output, 0, 1, 2, 3, 4, 5, 6, 7);
+ shift_flop_output = bitswap<8>(shift_flop_output, 0, 1, 2, 3, 4, 5, 6, 7);
/* collision detection - AND gate output goes to the K pin of the flip-flop,
while J is LO, therefore, it only resets, never sets */
diff --git a/src/mame/drivers/beta.cpp b/src/mame/drivers/beta.cpp
index 61c417a5269..4d397507861 100644
--- a/src/mame/drivers/beta.cpp
+++ b/src/mame/drivers/beta.cpp
@@ -217,7 +217,7 @@ WRITE8_MEMBER( beta_state::riot_pa_w )
// logerror("PA %02x\n", data);
/* display */
- m_segment = BITSWAP8(data, 7, 3, 4, 1, 0, 2, 5, 6) & 0x7f;
+ m_segment = bitswap<8>(data, 7, 3, 4, 1, 0, 2, 5, 6) & 0x7f;
m_led_refresh_timer->adjust(attotime::from_usec(70));
/* EPROM data */
diff --git a/src/mame/drivers/bfcobra.cpp b/src/mame/drivers/bfcobra.cpp
index 7af75c64ae9..a182d6567f6 100644
--- a/src/mame/drivers/bfcobra.cpp
+++ b/src/mame/drivers/bfcobra.cpp
@@ -92,7 +92,7 @@
Defines
*/
#define Z80_XTAL 5910000 /* Unconfirmed */
-#define M6809_XTAL 1000000
+#define M6809_XTAL 4000000 /* Unconfirmed */
@@ -1633,7 +1633,7 @@ static MACHINE_CONFIG_START( bfcobra )
MCFG_CPU_IO_MAP(z80_io_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", bfcobra_state, vblank_gen)
- MCFG_CPU_ADD("audiocpu", M6809, M6809_XTAL)
+ MCFG_CPU_ADD("audiocpu", MC6809, M6809_XTAL) // MC6809P
MCFG_CPU_PROGRAM_MAP(m6809_prog_map)
MCFG_CPU_PERIODIC_INT_DRIVER(bfcobra_state, timer_irq, 1000)
@@ -1655,7 +1655,7 @@ static MACHINE_CONFIG_START( bfcobra )
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("aysnd", AY8910, M6809_XTAL)
+ MCFG_SOUND_ADD("aysnd", AY8910, M6809_XTAL / 4)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
MCFG_SOUND_ADD("upd", UPD7759, UPD7759_STANDARD_CLOCK)
diff --git a/src/mame/drivers/bfm_sc4.cpp b/src/mame/drivers/bfm_sc4.cpp
index 89e174d597c..8147019b82a 100644
--- a/src/mame/drivers/bfm_sc4.cpp
+++ b/src/mame/drivers/bfm_sc4.cpp
@@ -493,7 +493,7 @@ WRITE8_MEMBER(bfm_sc45_state::mux_output2_w)
}
else
{
- uint8_t bf7segdata = BITSWAP8(data,0,7,6,5,4,3,2,1);
+ uint8_t bf7segdata = bitswap<8>(data,0,7,6,5,4,3,2,1);
output().set_digit_value(offset, bf7segdata);
}
}
diff --git a/src/mame/drivers/big10.cpp b/src/mame/drivers/big10.cpp
index 230ff204f7d..e52df91acfb 100644
--- a/src/mame/drivers/big10.cpp
+++ b/src/mame/drivers/big10.cpp
@@ -97,7 +97,7 @@ public:
WRITE8_MEMBER(big10_state::mux_w)
{
m_mux_data = ~data;
- m_hopper->write(space, 0, (data & 0x40) << 1);
+ m_hopper->motor_w(BIT(data, 6));
machine().output().set_lamp_value(1, BIT(~data, 7)); // maybe a coin counter?
}
diff --git a/src/mame/drivers/bigbord2.cpp b/src/mame/drivers/bigbord2.cpp
index 6a474cbc740..8486bdfda8d 100644
--- a/src/mame/drivers/bigbord2.cpp
+++ b/src/mame/drivers/bigbord2.cpp
@@ -482,7 +482,7 @@ u8 bigbord2_state::crt8002(u8 ac_ra, u8 ac_chr, u8 ac_attr, uint16_t ac_cnt, boo
}
break;
case 1: // external mode
- gfx = BITSWAP8(ac_chr, 0,1,2,3,4,5,6,7);
+ gfx = bitswap<8>(ac_chr, 0,1,2,3,4,5,6,7);
break;
case 2: // thin gfx
break;
diff --git a/src/mame/drivers/bking.cpp b/src/mame/drivers/bking.cpp
index 3b0bc074f84..b29f06c7e67 100644
--- a/src/mame/drivers/bking.cpp
+++ b/src/mame/drivers/bking.cpp
@@ -42,7 +42,7 @@ WRITE8_MEMBER(bking_state::bking_sndnmi_enable_w)
WRITE8_MEMBER(bking_state::bking_soundlatch_w)
{
- m_soundlatch->write(space, offset, BITSWAP8(data, 0, 1, 2, 3, 4, 5, 6, 7));
+ m_soundlatch->write(space, offset, bitswap<8>(data, 0, 1, 2, 3, 4, 5, 6, 7));
}
WRITE8_MEMBER(bking_state::bking3_addr_l_w)
diff --git a/src/mame/drivers/blktiger.cpp b/src/mame/drivers/blktiger.cpp
index 5911e0a29e3..5e358627f87 100644
--- a/src/mame/drivers/blktiger.cpp
+++ b/src/mame/drivers/blktiger.cpp
@@ -608,7 +608,7 @@ DRIVER_INIT_MEMBER(blktiger_state,blktigerb3)
{
int addr;
- addr = BITSWAP16(i, 15,14,13,12,11,10,9,8, 3,4,5,6, 7,2,1,0);
+ addr = bitswap<16>(i, 15,14,13,12,11,10,9,8, 3,4,5,6, 7,2,1,0);
buffer[i] = src[addr];
}
diff --git a/src/mame/drivers/bloodbro.cpp b/src/mame/drivers/bloodbro.cpp
index b9660c759c7..867c4acc3f6 100644
--- a/src/mame/drivers/bloodbro.cpp
+++ b/src/mame/drivers/bloodbro.cpp
@@ -860,7 +860,7 @@ DRIVER_INIT_MEMBER(bloodbro_state,weststry)
{
/* sprite roms ws25 and ws26 have 2 bits swapped
there is also an address swap but that is currently handled in the video implementation */
- sprites[i] = BITSWAP8(sprites[i],7,6,4,5,3,2,1,0);
+ sprites[i] = bitswap<8>(sprites[i],7,6,4,5,3,2,1,0);
}
m_weststry_opl_irq = false;
diff --git a/src/mame/drivers/bmcpokr.cpp b/src/mame/drivers/bmcpokr.cpp
index 4a0a644c07c..ea5d9a8e4a6 100644
--- a/src/mame/drivers/bmcpokr.cpp
+++ b/src/mame/drivers/bmcpokr.cpp
@@ -329,9 +329,9 @@ WRITE16_MEMBER(bmcpokr_state::mux_w)
COMBINE_DATA(&m_mux);
if (ACCESSING_BITS_0_7)
{
- m_hopper->write(space, 0, (data & 0x0001) ? 0x80 : 0x00); // hopper motor
- machine().bookkeeping().coin_counter_w(1, data & 0x0002); // coin-in / key-in
- machine().bookkeeping().coin_counter_w(2, data & 0x0004); // pay-out
+ m_hopper->motor_w(BIT(data, 0)); // hopper motor
+ machine().bookkeeping().coin_counter_w(1, BIT(data, 1)); // coin-in / key-in
+ machine().bookkeeping().coin_counter_w(2, BIT(data, 2)); // pay-out
// data & 0x0060 // DSW mux
// data & 0x0080 // ? always on
}
diff --git a/src/mame/drivers/bob85.cpp b/src/mame/drivers/bob85.cpp
index b2e3fb24504..c3447df2c36 100644
--- a/src/mame/drivers/bob85.cpp
+++ b/src/mame/drivers/bob85.cpp
@@ -137,7 +137,7 @@ READ8_MEMBER(bob85_state::bob85_keyboard_r)
WRITE8_MEMBER(bob85_state::bob85_7seg_w)
{
- output().set_digit_value(offset, BITSWAP8( data,3,2,1,0,7,6,5,4 ));
+ output().set_digit_value(offset, bitswap<8>( data,3,2,1,0,7,6,5,4 ));
}
static ADDRESS_MAP_START( bob85_mem, AS_PROGRAM, 8, bob85_state )
diff --git a/src/mame/drivers/boogwing.cpp b/src/mame/drivers/boogwing.cpp
index f176751b3aa..de64ad315c5 100644
--- a/src/mame/drivers/boogwing.cpp
+++ b/src/mame/drivers/boogwing.cpp
@@ -97,7 +97,7 @@
READ16_MEMBER( boogwing_state::boogwing_protection_region_0_104_r )
{
int real_address = 0 + (offset *2);
- int deco146_addr = BITSWAP32(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
+ int deco146_addr = bitswap<32>(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
uint8_t cs = 0;
uint16_t data = m_deco104->read_data( deco146_addr, mem_mask, cs );
return data;
@@ -106,7 +106,7 @@ READ16_MEMBER( boogwing_state::boogwing_protection_region_0_104_r )
WRITE16_MEMBER( boogwing_state::boogwing_protection_region_0_104_w )
{
int real_address = 0 + (offset *2);
- int deco146_addr = BITSWAP32(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
+ int deco146_addr = bitswap<32>(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
uint8_t cs = 0;
m_deco104->write_data( space, deco146_addr, data, mem_mask, cs );
}
diff --git a/src/mame/drivers/bublbobl.cpp b/src/mame/drivers/bublbobl.cpp
index 516e058f9e2..cf0fa1f06c9 100644
--- a/src/mame/drivers/bublbobl.cpp
+++ b/src/mame/drivers/bublbobl.cpp
@@ -2007,10 +2007,10 @@ DRIVER_INIT_MEMBER(bublbobl_state,dland)
int i;
uint8_t* src = memregion("gfx1")->base();
for (i = 0; i < 0x40000; i++)
- src[i] = BITSWAP8(src[i],7,6,5,4,0,1,2,3);
+ src[i] = bitswap<8>(src[i],7,6,5,4,0,1,2,3);
for (i = 0x40000; i < 0x80000; i++)
- src[i] = BITSWAP8(src[i],7,4,5,6,3,0,1,2);
+ src[i] = bitswap<8>(src[i],7,4,5,6,3,0,1,2);
DRIVER_INIT_CALL(common);
}
diff --git a/src/mame/drivers/by35.cpp b/src/mame/drivers/by35.cpp
index 974b279cbee..61c582e9a6b 100644
--- a/src/mame/drivers/by35.cpp
+++ b/src/mame/drivers/by35.cpp
@@ -885,7 +885,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( by35_state::timer_as2888 )
{
m_snd_sel = m_snd_prom[offs];
// logerror("SndSel read %02x from PROM addr %02x\n",m_snd_sel, offs );
- m_snd_sel = BITSWAP8(m_snd_sel,0,1,2,3,4,5,6,7);
+ m_snd_sel = bitswap<8>(m_snd_sel,0,1,2,3,4,5,6,7);
m_snd_tone_gen = m_snd_sel;
// logerror("SndSel=%02x, Tone=%02x, Div=%02x\n",m_snd_sel, m_snd_tone_gen, m_snd_div);
diff --git a/src/mame/drivers/byvid.cpp b/src/mame/drivers/byvid.cpp
index 6fda61bd054..31a38ca364d 100644
--- a/src/mame/drivers/byvid.cpp
+++ b/src/mame/drivers/byvid.cpp
@@ -120,7 +120,7 @@ private:
bool m_u11_timer;
virtual void machine_reset() override;
required_device<m6800_cpu_device> m_maincpu;
- required_device<m6809e_device> m_videocpu;
+ required_device<mc6809_device> m_videocpu;
required_device<m6803_cpu_device> m_audiocpu;
required_device<pia6821_device> m_pia_u7;
required_device<pia6821_device> m_pia_u10;
@@ -746,7 +746,7 @@ static MACHINE_CONFIG_START( babypac )
MCFG_CPU_ADD("maincpu", M6800, XTAL_3_579545MHz/4) // no xtal, just 2 chips
MCFG_CPU_PROGRAM_MAP(main_map)
- MCFG_CPU_ADD("videocpu", M6809E, XTAL_3_579545MHz)
+ MCFG_CPU_ADD("videocpu", MC6809, XTAL_3_579545MHz)
MCFG_CPU_PROGRAM_MAP(video_map)
MCFG_CPU_ADD("audiocpu", M6803, XTAL_3_579545MHz)
@@ -807,7 +807,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( granny, babypac )
MCFG_DEVICE_REMOVE("videocpu")
- MCFG_CPU_ADD("videocpu", M6809E, XTAL_8MHz) //??
+ MCFG_CPU_ADD("videocpu", MC6809, XTAL_8MHz) // MC68B09P (XTAL value hard to read)
MCFG_CPU_PROGRAM_MAP(granny_map)
MCFG_DEVICE_REMOVE("screen")
diff --git a/src/mame/drivers/c64dtv.cpp b/src/mame/drivers/c64dtv.cpp
index c2d0cf6a62b..11d2da70338 100644
--- a/src/mame/drivers/c64dtv.cpp
+++ b/src/mame/drivers/c64dtv.cpp
@@ -1,5 +1,16 @@
// license:BSD-3-Clause
// copyright-holders:Curt Coder
+/*************************************************************************************************************
+
+Commodore 64 Direct-to-TV
+It looks like a fat joystick.
+
+Chips: All unmarked. According to Wikipedia an ASIC contains an entire
+ Commodore 64 (6510 CPU, VIC-II, SID, CIA, PLA) running at 32MHz. The
+ 6510 CPU portion runs at 1MHz.
+Crystals: 32.720 (X1), unmarked (X2).
+
+*************************************************************************************************************/
#include "emu.h"
#include "screen.h"
@@ -66,4 +77,4 @@ ROM_END
// GAME DRIVERS
//**************************************************************************
-CONS( 2005, c64dtv, 0, 0, c64dtv, c64dtv, c64dtv_state, 0, "The Toy:Lobster Company", "Commodore 64 Direct-to-TV (Version 2 050711) (PAL)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+CONS( 2005, c64dtv, 0, 0, c64dtv, c64dtv, c64dtv_state, 0, "The Toy:Lobster Company", "Commodore 64 Direct-to-TV (Version 2 050711) (PAL)", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/c900.cpp b/src/mame/drivers/c900.cpp
index 4ded9072ca8..18b3dc19cf5 100644
--- a/src/mame/drivers/c900.cpp
+++ b/src/mame/drivers/c900.cpp
@@ -2,39 +2,44 @@
// copyright-holders:Curt Coder
/******************************************************************************************
- Commodore C900
- UNIX prototype
+Commodore C900
+UNIX prototype
- http://www.zimmers.net/cbmpics/c900.html
- http://www.zimmers.net/cbmpics/cbm/900/c900-chips.txt
+http://www.zimmers.net/cbmpics/c900.html
+http://www.zimmers.net/cbmpics/cbm/900/c900-chips.txt
- Chips: Z8001 CPU, Z8010 MMU, Z8030 SCC, Z8036 CIO. Crystal: 12MHz
+Chips: Z8001 CPU, Z8010 MMU, Z8030 SCC, Z8036 CIO. Crystal: 12MHz
- The Z8030 runs 2 serial ports. The Z8036 runs the IEEE interface and the speaker.
+The Z8030 runs 2 serial ports. The Z8036 runs the IEEE interface and the speaker.
- The FDC is an intelligent device that communicates with the main board via the MMU.
- It has a 6508 CPU.
+The FDC is an intelligent device that communicates with the main board via the MMU.
+It has a 6508 CPU.
- Disk drive is a Matsushita JA-560-012
+Disk drive is a Matsushita JA-560-012
+
+Our implementation of z80scc is currently incomplete and therefore unusable.
+
+Increasing the amount of RAM stops the error message, however it still keeps running
+into the weeds (jumps to 00000).
*******************************************************************************************/
#include "emu.h"
#include "cpu/z8000/z8000.h"
+//#include "machine/z80scc.h"
+//#include "bus/rs232/rs232.h"
#include "machine/terminal.h"
-#define TERMINAL_TAG "terminal"
class c900_state : public driver_device
{
public:
c900_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_terminal(*this, TERMINAL_TAG)
- {
- }
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_terminal(*this, "terminal")
+ { }
DECLARE_READ16_MEMBER(port1e_r);
DECLARE_READ16_MEMBER(key_r);
@@ -47,21 +52,22 @@ private:
required_device<generic_terminal_device> m_terminal;
};
-static ADDRESS_MAP_START(c900_mem, AS_PROGRAM, 16, c900_state)
+static ADDRESS_MAP_START(mem_map, AS_PROGRAM, 16, c900_state)
AM_RANGE(0x00000, 0x07fff) AM_ROM AM_REGION("roms", 0)
ADDRESS_MAP_END
-static ADDRESS_MAP_START(c900_data, AS_DATA, 16, c900_state)
+static ADDRESS_MAP_START(data_map, AS_DATA, 16, c900_state)
AM_RANGE(0x00000, 0x07fff) AM_ROM AM_REGION("roms", 0)
AM_RANGE(0x08000, 0x6ffff) AM_RAM
ADDRESS_MAP_END
-static ADDRESS_MAP_START(c900_io, AS_IO, 16, c900_state)
+static ADDRESS_MAP_START(io_map, AS_IO, 16, c900_state)
+ //AM_RANGE(0x0100, 0x011f) AM_DEVREADWRITE8("scc", scc8030_device, zbus_r, zbus_w, 0x00ff) // range for one channel
AM_RANGE(0x0010, 0x0011) AM_READ(stat_r)
AM_RANGE(0x001A, 0x001B) AM_READ(key_r)
AM_RANGE(0x001E, 0x001F) AM_READ(port1e_r)
AM_RANGE(0x0100, 0x0101) AM_READ(stat_r)
- AM_RANGE(0x0110, 0x0111) AM_READ(key_r) AM_DEVWRITE8(TERMINAL_TAG, generic_terminal_device, write, 0x00ff)
+ AM_RANGE(0x0110, 0x0111) AM_READ(key_r) AM_DEVWRITE8("terminal", generic_terminal_device, write, 0x00ff)
ADDRESS_MAP_END
static INPUT_PORTS_START( c900 )
@@ -81,7 +87,7 @@ READ16_MEMBER( c900_state::key_r )
READ16_MEMBER( c900_state::stat_r )
{
- return (m_term_data) ? 6 : 4;
+ return (m_term_data) ? 5 : 4;
}
void c900_state::kbd_put(u8 data)
@@ -110,14 +116,25 @@ GFXDECODE_END
static MACHINE_CONFIG_START( c900 )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z8001, XTAL_12MHz / 2)
- MCFG_CPU_PROGRAM_MAP(c900_mem)
- MCFG_CPU_DATA_MAP(c900_data)
- MCFG_CPU_IO_MAP(c900_io)
+ MCFG_CPU_PROGRAM_MAP(mem_map)
+ MCFG_CPU_DATA_MAP(data_map)
+ MCFG_CPU_IO_MAP(io_map)
- MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
+ MCFG_DEVICE_ADD("terminal", GENERIC_TERMINAL, 0)
MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(c900_state, kbd_put))
MCFG_GFXDECODE_ADD("gfxdecode", "palette", c900)
MCFG_PALETTE_ADD_MONOCHROME("palette")
+
+ //MCFG_SCC8030_ADD("scc", 6'000'000, 326400, 0, 326400, 0)
+ /* Port A */
+ //MCFG_Z80SCC_OUT_TXDA_CB(DEVWRITELINE("rs232a", rs232_port_device, write_txd))
+ //MCFG_Z80SCC_OUT_DTRA_CB(DEVWRITELINE("rs232a", rs232_port_device, write_dtr))
+ //MCFG_Z80SCC_OUT_RTSA_CB(DEVWRITELINE("rs232a", rs232_port_device, write_rts))
+ //MCFG_Z80SCC_OUT_INT_CB(WRITELINE(lwriter_state, scc_int))
+
+ //MCFG_RS232_PORT_ADD ("rs232a", default_rs232_devices, "terminal")
+ //MCFG_RS232_RXD_HANDLER (DEVWRITELINE ("scc", scc8030_device, rxa_w))
+ //MCFG_RS232_CTS_HANDLER (DEVWRITELINE ("scc", scc8030_device, ctsa_w))
MACHINE_CONFIG_END
ROM_START( c900 )
diff --git a/src/mame/drivers/cabal.cpp b/src/mame/drivers/cabal.cpp
index c16319c0dcb..a51f0376d79 100644
--- a/src/mame/drivers/cabal.cpp
+++ b/src/mame/drivers/cabal.cpp
@@ -156,12 +156,12 @@ ADDRESS_MAP_END
READ8_MEMBER(cabal_state::cabalbl_snd2_r)
{
- return BITSWAP8(m_sound_command2, 7,2,4,5,3,6,1,0);
+ return bitswap<8>(m_sound_command2, 7,2,4,5,3,6,1,0);
}
READ8_MEMBER(cabal_state::cabalbl_snd1_r)
{
- return BITSWAP8(m_sound_command1, 7,2,4,5,3,6,1,0);
+ return bitswap<8>(m_sound_command1, 7,2,4,5,3,6,1,0);
}
WRITE8_MEMBER(cabal_state::cabalbl_coin_w)
diff --git a/src/mame/drivers/calcune.cpp b/src/mame/drivers/calcune.cpp
new file mode 100644
index 00000000000..0d034777231
--- /dev/null
+++ b/src/mame/drivers/calcune.cpp
@@ -0,0 +1,334 @@
+// license:BSD-3-Clause
+// copyright-holders:David Haywood
+/***************************************************************************
+
+ Calcune (Japan, prototype)
+
+ CPUs are HD68HC000CP8 and TMP84C00AU-6 QFP types. Other ICs include two
+ Sega 315-5560-02 VDPs and a YMZ280B-F for sound.
+
+ Oscillators: 53.693MHz (OSC1), 16.9444 (XL1), 14.318 (XL3).
+
+ Printed on board: "VDP LICENSE FROM SEGA, MANUFACTURED BY ADO."
+
+***************************************************************************/
+
+#include "emu.h"
+
+#include "cpu/m68000/m68000.h"
+#include "cpu/z80/z80.h"
+#include "sound/sn76496.h"
+#include "sound/ymz280b.h"
+#include "video/315_5313.h"
+#include "machine/nvram.h"
+#include "speaker.h"
+
+#define MASTER_CLOCK_NTSC 53693175
+
+class calcune_state : public driver_device
+{
+public:
+ calcune_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ vdp_state(0),
+ m_maincpu(*this, "maincpu"),
+ m_vdp(*this, "gen_vdp"),
+ m_vdp2(*this, "gen_vdp2"),
+ m_palette(*this, "palette")
+ { }
+
+ WRITE_LINE_MEMBER(vdp_sndirqline_callback_genesis_z80);
+ WRITE_LINE_MEMBER(vdp_lv6irqline_callback_genesis_68k);
+ WRITE_LINE_MEMBER(vdp_lv4irqline_callback_genesis_68k);
+
+ DECLARE_MACHINE_START(calcune);
+ DECLARE_MACHINE_RESET(calcune);
+
+ IRQ_CALLBACK_MEMBER(genesis_int_callback);
+
+ DECLARE_DRIVER_INIT(calcune);
+
+ DECLARE_READ16_MEMBER(cal_700000_r);
+ DECLARE_WRITE16_MEMBER(cal_770000_w);
+ DECLARE_READ16_MEMBER(cal_vdp_r);
+ DECLARE_WRITE16_MEMBER(cal_vdp_w);
+
+ uint32_t screen_update_calcune(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+private:
+ int vdp_state;
+
+ required_device<cpu_device> m_maincpu;
+ required_device<sega315_5313_device> m_vdp;
+ required_device<sega315_5313_device> m_vdp2;
+ required_device<palette_device> m_palette;
+};
+
+
+static INPUT_PORTS_START( calcune )
+ PORT_START("710000")
+ PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
+ PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
+ PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
+ PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
+ PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_SERVICE1 )
+ PORT_SERVICE_NO_TOGGLE( 0x0200, IP_ACTIVE_HIGH )
+ PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_COIN1 )
+ PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_START1 )
+ PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_START2 )
+ PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("720000")
+ PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
+ PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
+ PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
+ PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
+ PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0xffc0, IP_ACTIVE_HIGH, IPT_UNUSED )
+INPUT_PORTS_END
+
+
+READ16_MEMBER(calcune_state::cal_700000_r)
+{
+ vdp_state = 0;
+ return 0;
+}
+
+WRITE16_MEMBER(calcune_state::cal_770000_w)
+{
+ vdp_state = data;
+}
+
+READ16_MEMBER(calcune_state::cal_vdp_r)
+{
+ if (!vdp_state)
+ return m_vdp->vdp_r(space, offset, mem_mask);
+ else
+ return m_vdp2->vdp_r(space, offset, mem_mask);
+}
+
+WRITE16_MEMBER(calcune_state::cal_vdp_w)
+{
+ if (!vdp_state)
+ m_vdp->vdp_w(space, offset, data, mem_mask);
+ else
+ m_vdp2->vdp_w(space, offset, data, mem_mask);
+}
+
+static ADDRESS_MAP_START( calcune_map, AS_PROGRAM, 16, calcune_state )
+ AM_RANGE(0x000000, 0x1fffff) AM_ROM
+
+ AM_RANGE(0x700000, 0x700001) AM_READ(cal_700000_r)
+
+ AM_RANGE(0x710000, 0x710001) AM_READ_PORT("710000")
+ AM_RANGE(0x720000, 0x720001) AM_READ_PORT("720000")
+// AM_RANGE(0x730000, 0x730001) possible Z80 control?
+ AM_RANGE(0x760000, 0x760003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xff00)
+
+ AM_RANGE(0x770000, 0x770001) AM_WRITE(cal_770000_w)
+
+ AM_RANGE(0xA14100, 0xA14101) AM_NOP // on startup, possible z80 control
+
+ AM_RANGE(0xc00000, 0xc0001f) AM_READWRITE(cal_vdp_r, cal_vdp_w)
+
+ AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("nvram") // battery on PCB
+ADDRESS_MAP_END
+
+
+uint32_t calcune_state::screen_update_calcune(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ const pen_t *paldata = m_palette->pens();
+
+ for (int y = cliprect.min_y; y <= cliprect.max_y; y++)
+ {
+ uint32_t *dst = &bitmap.pix32(y);
+ for (int x = cliprect.min_x; x <= cliprect.max_x; x++)
+ {
+ int pix;
+
+ pix = m_vdp2->m_render_line_raw[x] & 0x3f;
+
+ switch (pix & 0xc0)
+ {
+ case 0x00:
+ dst[x] = paldata[pix + 0x0000 + 0xc0];
+ break;
+ case 0x40:
+ case 0x80:
+ dst[x] = paldata[pix + 0x0040 + 0xc0];
+ break;
+ case 0xc0:
+ dst[x] = paldata[pix + 0x0080 + 0xc0];
+ break;
+
+ }
+
+ if (m_vdp->m_render_line_raw[x] & 0x100)
+ {
+ pix = m_vdp->m_render_line_raw[x] & 0x3f;
+ if (pix & 0xf)
+ {
+ switch (pix & 0xc0)
+ {
+ case 0x00:
+ dst[x] = paldata[pix + 0x0000];
+ break;
+ case 0x40:
+ case 0x80:
+ dst[x] = paldata[pix + 0x0040];
+ break;
+ case 0xc0:
+ dst[x] = paldata[pix + 0x0080];
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ return 0;
+}
+
+MACHINE_RESET_MEMBER(calcune_state,calcune)
+{
+ m_vdp->device_reset_old();
+ m_vdp2->device_reset_old();
+}
+
+
+IRQ_CALLBACK_MEMBER(calcune_state::genesis_int_callback)
+{
+ if (irqline==4)
+ {
+ m_vdp->vdp_clear_irq4_pending();
+ }
+
+ if (irqline==6)
+ {
+ m_vdp->vdp_clear_irq6_pending();
+ }
+
+ return (0x60+irqline*4)/4; // vector address
+}
+
+WRITE_LINE_MEMBER(calcune_state::vdp_sndirqline_callback_genesis_z80)
+{
+}
+
+WRITE_LINE_MEMBER(calcune_state::vdp_lv6irqline_callback_genesis_68k)
+{
+ // this looks odd but is the logic the Genesis code requires
+ if (state == ASSERT_LINE)
+ m_maincpu->set_input_line(6, HOLD_LINE);
+ else
+ m_maincpu->set_input_line(6, CLEAR_LINE);
+}
+
+WRITE_LINE_MEMBER(calcune_state::vdp_lv4irqline_callback_genesis_68k)
+{
+ // this looks odd but is the logic the Genesis code requires
+ if (state == ASSERT_LINE)
+ m_maincpu->set_input_line(4, HOLD_LINE);
+ else
+ m_maincpu->set_input_line(4, CLEAR_LINE);
+}
+
+MACHINE_START_MEMBER(calcune_state,calcune)
+{
+ m_vdp->stop_timers();
+ m_vdp2->stop_timers();
+}
+
+static MACHINE_CONFIG_START( calcune )
+ MCFG_CPU_ADD("maincpu", M68000, MASTER_CLOCK_NTSC / 7) /* 7.67 MHz */
+ MCFG_CPU_PROGRAM_MAP(calcune_map)
+ MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(calcune_state,genesis_int_callback)
+
+ MCFG_CPU_ADD("z80", Z80, MASTER_CLOCK_NTSC / 15) /* 3.58 MHz */
+ MCFG_DEVICE_DISABLE() /* no code is ever uploaded for the Z80, so it's unused here even if it is present on the PCB */
+
+ MCFG_MACHINE_START_OVERRIDE(calcune_state,calcune)
+ MCFG_MACHINE_RESET_OVERRIDE(calcune_state,calcune)
+
+ MCFG_SCREEN_ADD("megadriv", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) // Vblank handled manually.
+ MCFG_SCREEN_SIZE(64*8, 620)
+ MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 0, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(calcune_state, screen_update_calcune)
+
+ MCFG_DEVICE_ADD("gen_vdp", SEGA315_5313, 0)
+ MCFG_SEGA315_5313_IS_PAL(false)
+ MCFG_SEGA315_5313_SND_IRQ_CALLBACK(WRITELINE(calcune_state, vdp_sndirqline_callback_genesis_z80));
+ MCFG_SEGA315_5313_LV6_IRQ_CALLBACK(WRITELINE(calcune_state, vdp_lv6irqline_callback_genesis_68k));
+ MCFG_SEGA315_5313_LV4_IRQ_CALLBACK(WRITELINE(calcune_state, vdp_lv4irqline_callback_genesis_68k));
+ MCFG_SEGA315_5313_ALT_TIMING(1);
+ MCFG_SEGA315_5313_PAL_WRITE_BASE(0x0000);
+ MCFG_SEGA315_5313_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gen_vdp2", SEGA315_5313, 0)
+ MCFG_SEGA315_5313_IS_PAL(false)
+// are these not hooked up or should they OR with the other lines?
+// MCFG_SEGA315_5313_SND_IRQ_CALLBACK(WRITELINE(calcune_state, vdp_sndirqline_callback_genesis_z80));
+// MCFG_SEGA315_5313_LV6_IRQ_CALLBACK(WRITELINE(calcune_state, vdp_lv6irqline_callback_genesis_68k));
+// MCFG_SEGA315_5313_LV4_IRQ_CALLBACK(WRITELINE(calcune_state, vdp_lv4irqline_callback_genesis_68k));
+ MCFG_SEGA315_5313_ALT_TIMING(1);
+ MCFG_SEGA315_5313_PAL_WRITE_BASE(0x0c0);
+ MCFG_SEGA315_5313_PALETTE("palette")
+
+ MCFG_TIMER_DEVICE_ADD_SCANLINE("scantimer", "gen_vdp", sega315_5313_device, megadriv_scanline_timer_callback_alt_timing, "megadriv", 0, 1)
+ MCFG_TIMER_DEVICE_ADD_SCANLINE("scantimer2", "gen_vdp2", sega315_5313_device, megadriv_scanline_timer_callback_alt_timing, "megadriv", 0, 1)
+
+ MCFG_PALETTE_ADD("palette", 0xc0*2)
+
+ MCFG_NVRAM_ADD_0FILL("nvram")
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+
+ MCFG_SOUND_ADD("ymz", YMZ280B, XTAL_16_9344MHz)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+
+ /* sound hardware - VDP */
+ MCFG_SOUND_ADD("snsnd", SEGAPSG, MASTER_CLOCK_NTSC/15)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker",0.25)
+MACHINE_CONFIG_END
+
+DRIVER_INIT_MEMBER(calcune_state,calcune)
+{
+ m_vdp->set_use_cram(1);
+ m_vdp->set_vdp_pal(false);
+ m_vdp->set_framerate(60);
+ m_vdp->set_total_scanlines(262);
+
+ m_vdp2->set_use_cram(1);
+ m_vdp2->set_vdp_pal(false);
+ m_vdp2->set_framerate(60);
+ m_vdp2->set_total_scanlines(262);
+}
+
+ROM_START( calcune )
+ ROM_REGION( 0x400000, "maincpu", 0 ) /* 68000 Code - ROM check fails, but probably due to prototype status, not bad ROM */
+ ROM_LOAD16_BYTE( "1.IC101.27C4001", 0x000001, 0x080000, CRC(2d25544c) SHA1(ef778cbf2aa4fcec43ce2dce9bcefb964f458c0a) )
+ ROM_LOAD16_BYTE( "2.IC102.27C4001", 0x000000, 0x080000, CRC(09330dc9) SHA1(fd888a7469a6290cd372a4b1eed577c2444f0c80) )
+ ROM_LOAD16_BYTE( "3.IC103.27C4001", 0x100001, 0x080000, CRC(736a356d) SHA1(372fa5989a67746efc439d76df1733cf70df57e7) )
+ ROM_LOAD16_BYTE( "4.IC104.27C4001", 0x100000, 0x080000, CRC(0bec031a) SHA1(69b255743f20408b2f14bddf0b85c85a13f29615) )
+
+ ROM_REGION( 0x200000, "ymz", 0 )
+ ROM_LOAD( "Sound1.1C.27C4001", 0x000000, 0x080000, CRC(5fb63e84) SHA1(6fad8e76162c81b2cfa4778effb81b78ed4fa299) )
+ ROM_LOAD( "Sound2.2D.27C4001", 0x080000, 0x080000, CRC(8924c6cc) SHA1(c76e6cfcf92a2c2834de62d7136c69e6edda46cc) )
+ ROM_LOAD( "Sound3.3A.27C4001", 0x100000, 0x080000, CRC(18cfa7f4) SHA1(201ea186eb3af9138db6699c9dcf527795f7c0db) )
+ ROM_LOAD( "Sound4.4B.27C4001", 0x180000, 0x080000, CRC(61a8510b) SHA1(177e56c374aa5697545ede28140cb42b5a4b737b) )
+ROM_END
+
+
+
+GAME( 1996, calcune, 0, calcune, calcune, calcune_state, calcune, ROT0, "Yuvo", "Calcune (Japan, prototype)", 0 )
diff --git a/src/mame/drivers/camplynx.cpp b/src/mame/drivers/camplynx.cpp
index 0424213c486..f0c76d77eab 100644
--- a/src/mame/drivers/camplynx.cpp
+++ b/src/mame/drivers/camplynx.cpp
@@ -319,9 +319,9 @@ d0 = read from bank 4 */
m_bankdata = data;
data ^= 0x8c; // make all lines active high
// do writes
- m_wbyte = BITSWAP8(data, 0, 0, 0, 0, 4, 5, 6, 7) & 0x0f; // rearrange to 1,2,3,4
+ m_wbyte = bitswap<8>(data, 0, 0, 0, 0, 4, 5, 6, 7) & 0x0f; // rearrange to 1,2,3,4
// do reads
- uint8_t rbyte = BITSWAP8(data, 0, 0, 0, 0, 0, 1, 2, 3) & 0x0f; // rearrange to 0,1,2,4
+ uint8_t rbyte = bitswap<8>(data, 0, 0, 0, 0, 0, 1, 2, 3) & 0x0f; // rearrange to 0,1,2,4
if (BIT(rbyte, 1))
rbyte &= 0x07; // remove 4 if 1 selected (AND gate in IC82)
//printf("%s:%X:%X:%X\n", machine().describe_context(), data, rbyte, m_wbyte);
diff --git a/src/mame/drivers/capbowl.cpp b/src/mame/drivers/capbowl.cpp
index ed82dc96aff..891d66e0fef 100644
--- a/src/mame/drivers/capbowl.cpp
+++ b/src/mame/drivers/capbowl.cpp
@@ -316,14 +316,14 @@ void capbowl_state::machine_reset()
static MACHINE_CONFIG_START( capbowl )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M6809E, MASTER_CLOCK)
+ MCFG_CPU_ADD("maincpu", MC6809E, MASTER_CLOCK / 4) // MC68B09EP
MCFG_CPU_PROGRAM_MAP(capbowl_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", capbowl_state, interrupt)
MCFG_WATCHDOG_ADD("watchdog")
MCFG_WATCHDOG_TIME_INIT(PERIOD_OF_555_ASTABLE(100000.0, 100000.0, 0.1e-6) * 15.5) // ~0.3s
- MCFG_CPU_ADD("audiocpu", M6809E, MASTER_CLOCK)
+ MCFG_CPU_ADD("audiocpu", MC6809E, MASTER_CLOCK / 4) // MC68B09EP
MCFG_CPU_PROGRAM_MAP(sound_map)
// MCFG_WATCHDOG_TIME_INIT(PERIOD_OF_555_ASTABLE(100000.0, 100000.0, 0.1e-6) * 15.5) // TODO
@@ -348,10 +348,10 @@ static MACHINE_CONFIG_START( capbowl )
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
- MCFG_SOUND_ADD("ymsnd", YM2203, MASTER_CLOCK/2)
+ MCFG_SOUND_ADD("ymsnd", YM2203, MASTER_CLOCK / 2)
MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", M6809_FIRQ_LINE))
- MCFG_AY8910_PORT_A_READ_CB(DEVREAD8("ticket", ticket_dispenser_device, read))
- MCFG_AY8910_PORT_B_WRITE_CB(DEVWRITE8("ticket", ticket_dispenser_device, write)) /* Also a status LED. See memory map above */
+ MCFG_AY8910_PORT_A_READ_CB(DEVREADLINE("ticket", ticket_dispenser_device, line_r)) MCFG_DEVCB_BIT(7)
+ MCFG_AY8910_PORT_B_WRITE_CB(DEVWRITELINE("ticket", ticket_dispenser_device, motor_w)) MCFG_DEVCB_BIT(7) /* Also a status LED. See memory map above */
MCFG_SOUND_ROUTE(0, "speaker", 0.07)
MCFG_SOUND_ROUTE(1, "speaker", 0.07)
MCFG_SOUND_ROUTE(2, "speaker", 0.07)
diff --git a/src/mame/drivers/cave.cpp b/src/mame/drivers/cave.cpp
index 7734583a4c2..babec0ab71b 100644
--- a/src/mame/drivers/cave.cpp
+++ b/src/mame/drivers/cave.cpp
@@ -5200,7 +5200,7 @@ DRIVER_INIT_MEMBER(cave_state,mazinger)
{
int i;
for (i = 0; i < len; i++)
- buffer[i ^ 0xdf88] = src[BITSWAP24(i,23,22,21,20,19,9,7,3,15,4,17,14,18,2,16,5,11,8,6,13,1,10,12,0)];
+ buffer[i ^ 0xdf88] = src[bitswap<24>(i,23,22,21,20,19,9,7,3,15,4,17,14,18,2,16,5,11,8,6,13,1,10,12,0)];
memcpy(src, &buffer[0], len);
}
@@ -5262,7 +5262,7 @@ DRIVER_INIT_MEMBER(cave_state,pwrinst2j)
{
for(i = 0; i < len/2; i++)
{
- j = BITSWAP24(i,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7, 2,4,6,1,5,3, 0);
+ j = bitswap<24>(i,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7, 2,4,6,1,5,3, 0);
if(((j & 6) == 0) || ((j & 6) == 6))
j ^= 6;
buffer[j ^ 7] = (src[i] >> 4) | (src[i] << 4);
@@ -5315,7 +5315,7 @@ DRIVER_INIT_MEMBER(cave_state,sailormn)
{
int i;
for (i = 0; i < len; i++)
- buffer[i ^ 0x950c4] = src[BITSWAP24(i,23,22,21,20,15,10,12,6,11,1,13,3,16,17,2,5,14,7,18,8,4,19,9,0)];
+ buffer[i ^ 0x950c4] = src[bitswap<24>(i,23,22,21,20,15,10,12,6,11,1,13,3,16,17,2,5,14,7,18,8,4,19,9,0)];
memcpy(src, &buffer[0], len);
}
diff --git a/src/mame/drivers/cd2650.cpp b/src/mame/drivers/cd2650.cpp
index 95ffe911d2c..86aaffb4fba 100644
--- a/src/mame/drivers/cd2650.cpp
+++ b/src/mame/drivers/cd2650.cpp
@@ -167,7 +167,7 @@ uint32_t cd2650_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
chr = m_p_videoram[mem] & 0x3f;
- gfx = m_p_chargen[(BITSWAP8(chr,7,6,2,1,0,3,4,5)<<3) | ra];
+ gfx = m_p_chargen[(bitswap<8>(chr,7,6,2,1,0,3,4,5)<<3) | ra];
}
/* Display a scanline of a character */
diff --git a/src/mame/drivers/centiped.cpp b/src/mame/drivers/centiped.cpp
index e02caf468e6..65cde93824d 100644
--- a/src/mame/drivers/centiped.cpp
+++ b/src/mame/drivers/centiped.cpp
@@ -2233,7 +2233,7 @@ DRIVER_INIT_MEMBER(centiped_state,multiped)
// descramble rom and put in maincpu region
for (int i = 0; i < 0x10000; i++)
- dest[0x10000 + (i ^ (~i << 4 & 0x1000) ^ (~i >> 3 & 0x400))] = BITSWAP8(src[BITSWAP16(i,15,14,13,1,8,11,4,7,10,5,6,9,12,0,3,2)],0,2,1,3,4,5,6,7);
+ dest[0x10000 + (i ^ (~i << 4 & 0x1000) ^ (~i >> 3 & 0x400))] = bitswap<8>(src[bitswap<16>(i,15,14,13,1,8,11,4,7,10,5,6,9,12,0,3,2)],0,2,1,3,4,5,6,7);
// (this can be removed when prg bankswitch is implemented)
memmove(dest+0x0000, dest+0x10000, 0x8000);
diff --git a/src/mame/drivers/champbwl.cpp b/src/mame/drivers/champbwl.cpp
index e0795918195..94c8e54429f 100644
--- a/src/mame/drivers/champbwl.cpp
+++ b/src/mame/drivers/champbwl.cpp
@@ -170,6 +170,7 @@ public:
m_seta001(*this, "spritegen"),
m_palette(*this, "palette"),
m_x1(*this, "x1snd"),
+ m_hopper(*this, "hopper"),
m_fakex(*this, "FAKEX"),
m_fakey(*this, "FAKEY") { }
@@ -179,6 +180,7 @@ public:
required_device<seta001_device> m_seta001;
required_device<palette_device> m_palette;
required_device<x1_010_device> m_x1;
+ optional_device<ticket_dispenser_device> m_hopper;
optional_ioport m_fakex;
optional_ioport m_fakey;
@@ -271,11 +273,11 @@ ADDRESS_MAP_END
WRITE8_MEMBER(champbwl_state::doraemon_outputs_w)
{
- machine().bookkeeping().coin_counter_w(0, data & 1); // coin in counter
- machine().bookkeeping().coin_counter_w(1, data & 2); // gift out counter
+ machine().bookkeeping().coin_counter_w(0, BIT(data, 0)); // coin in counter
+ machine().bookkeeping().coin_counter_w(1, BIT(data, 1)); // gift out counter
- machine().bookkeeping().coin_lockout_w(0, ~data & 8); // coin lockout
- machine().device<ticket_dispenser_device>("hopper")->write(space, 0, (data & 0x04) ? 0x00 : 0x80); // gift out motor
+ machine().bookkeeping().coin_lockout_w(0, BIT(~data, 3)); // coin lockout
+ m_hopper->motor_w(BIT(~data, 2)); // gift out motor
membank("bank1")->set_entry((data & 0x30) >> 4);
diff --git a/src/mame/drivers/chessmst.cpp b/src/mame/drivers/chessmst.cpp
index 84e21b1e24b..6dddf2ce6e6 100644
--- a/src/mame/drivers/chessmst.cpp
+++ b/src/mame/drivers/chessmst.cpp
@@ -253,7 +253,7 @@ void chessmst_state::update_display()
for(int i=0; i<4; i++)
{
if (BIT(m_digit_matrix, i))
- output().set_indexed_value("digit", i, BITSWAP16(m_digit, 3,5,12,10,14,1,2,13,8,6,11,15,7,9,4,0) | (m_digit_dot << 16));
+ output().set_indexed_value("digit", i, bitswap<16>(m_digit, 3,5,12,10,14,1,2,13,8,6,11,15,7,9,4,0) | (m_digit_dot << 16));
}
}
diff --git a/src/mame/drivers/chesstrv.cpp b/src/mame/drivers/chesstrv.cpp
index 0e0434ace56..29bfdcab7e6 100644
--- a/src/mame/drivers/chesstrv.cpp
+++ b/src/mame/drivers/chesstrv.cpp
@@ -64,7 +64,7 @@ WRITE8_MEMBER( chesstrv_state::ram_w )
WRITE8_MEMBER( chesstrv_state::display_w )
{
- uint8_t seg_data = BITSWAP8(data,0,1,2,3,4,5,6,7);
+ uint8_t seg_data = bitswap<8>(data,0,1,2,3,4,5,6,7);
if(!(m_matrix & 0x01))
output().set_digit_value( 3, seg_data );
diff --git a/src/mame/drivers/chinagat.cpp b/src/mame/drivers/chinagat.cpp
index 08ea5ffac11..03d5ee93858 100644
--- a/src/mame/drivers/chinagat.cpp
+++ b/src/mame/drivers/chinagat.cpp
@@ -590,11 +590,11 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( saiyugoub1 )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M6809, MAIN_CLOCK / 8) /* 68B09EP 1.5 MHz (12MHz oscillator) */
+ MCFG_CPU_ADD("maincpu", MC6809E, MAIN_CLOCK / 8) /* 68B09EP 1.5 MHz (12MHz oscillator) */
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", chinagat_state, chinagat_scanline, "screen", 0, 1)
- MCFG_CPU_ADD("sub", M6809, MAIN_CLOCK / 8) /* 68B09EP 1.5 MHz (12MHz oscillator) */
+ MCFG_CPU_ADD("sub", MC6809E, MAIN_CLOCK / 8) /* 68B09EP 1.5 MHz (12MHz oscillator) */
MCFG_CPU_PROGRAM_MAP(sub_map)
MCFG_CPU_ADD("soundcpu", Z80, XTAL_3_579545MHz) /* 3.579545 MHz oscillator */
@@ -646,11 +646,11 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( saiyugoub2 )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M6809, MAIN_CLOCK / 8) /* 1.5 MHz (12MHz oscillator) */
+ MCFG_CPU_ADD("maincpu", MC6809E, MAIN_CLOCK / 8) /* 1.5 MHz (12MHz oscillator) */
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", chinagat_state, chinagat_scanline, "screen", 0, 1)
- MCFG_CPU_ADD("sub", M6809, MAIN_CLOCK / 8) /* 1.5 MHz (12MHz oscillator) */
+ MCFG_CPU_ADD("sub", MC6809E, MAIN_CLOCK / 8) /* 1.5 MHz (12MHz oscillator) */
MCFG_CPU_PROGRAM_MAP(sub_map)
MCFG_CPU_ADD("soundcpu", Z80, XTAL_3_579545MHz) /* 3.579545 MHz oscillator */
diff --git a/src/mame/drivers/chqflag.cpp b/src/mame/drivers/chqflag.cpp
index 23fa7862807..5068b2311cb 100644
--- a/src/mame/drivers/chqflag.cpp
+++ b/src/mame/drivers/chqflag.cpp
@@ -5,9 +5,14 @@
Chequered Flag / Checkered Flag (GX717) (c) Konami 1988
Notes:
- - 007232 volume & panning control is almost certainly wrong.
- - Needs HW tests or side-by-side tests to determine if the protection
- is 100% ok now;
+ - 007232 volume & panning control is almost certainly wrong;
+ - 051733 opponent cars have wrong RNG colors compared to references;
+ - 051733 opponent car-to-car collisions direction are wrong, according
+ to reference orange car should shift to the left instead (current emulation
+ makes them to wall crash most of the time instead);
+ - needs proper shadow/highlight factor values for sprites and tilemap;
+ - compared to references, emulation is a bit slower (around 2/3 seconds
+ behind on a full lap of stage 2);
2008-07
Dip locations and recommended settings verified with manual
@@ -456,5 +461,5 @@ ROM_END
// YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MONITOR, COMPANY, FULLNAME, FLAGS, LAYOUT
-GAMEL( 1988, chqflag, 0, chqflag, chqflag, chqflag_state, 0, ROT90, "Konami", "Chequered Flag", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_chqflag )
-GAMEL( 1988, chqflagj, chqflag, chqflag, chqflagj, chqflag_state, 0, ROT90, "Konami", "Chequered Flag (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_chqflag )
+GAMEL( 1988, chqflag, 0, chqflag, chqflag, chqflag_state, 0, ROT90, "Konami", "Chequered Flag", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_chqflag )
+GAMEL( 1988, chqflagj, chqflag, chqflag, chqflagj, chqflag_state, 0, ROT90, "Konami", "Chequered Flag (Japan)", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_chqflag )
diff --git a/src/mame/drivers/chsuper.cpp b/src/mame/drivers/chsuper.cpp
index 801d490ff8e..6934ba074fd 100644
--- a/src/mame/drivers/chsuper.cpp
+++ b/src/mame/drivers/chsuper.cpp
@@ -528,9 +528,9 @@ DRIVER_INIT_MEMBER(chsuper_state,chmpnum)
j = i ^ (m_tilexor << 5);
- j = BITSWAP24(j,23,22,21,20,19,18,17,13, 15,14,16,12, 11,10,9,8, 7,6,5,4, 3,2,1,0);
- j = BITSWAP24(j,23,22,21,20,19,18,17,14, 15,16,13,12, 11,10,9,8, 7,6,5,4, 3,2,1,0);
- j = BITSWAP24(j,23,22,21,20,19,18,17,15, 16,14,13,12, 11,10,9,8, 7,6,5,4, 3,2,1,0);
+ j = bitswap<24>(j,23,22,21,20,19,18,17,13, 15,14,16,12, 11,10,9,8, 7,6,5,4, 3,2,1,0);
+ j = bitswap<24>(j,23,22,21,20,19,18,17,14, 15,16,13,12, 11,10,9,8, 7,6,5,4, 3,2,1,0);
+ j = bitswap<24>(j,23,22,21,20,19,18,17,15, 16,14,13,12, 11,10,9,8, 7,6,5,4, 3,2,1,0);
buffer[j] = rom[i];
}
diff --git a/src/mame/drivers/cischeat.cpp b/src/mame/drivers/cischeat.cpp
index 8fe886141c7..392a8c397e7 100644
--- a/src/mame/drivers/cischeat.cpp
+++ b/src/mame/drivers/cischeat.cpp
@@ -692,7 +692,7 @@ WRITE16_MEMBER(cischeat_state::captflag_leds_w)
output().set_led_value(1, data & 0x2000); // select
int power = (data & 0x1000);
- m_captflag_hopper->write(space, 0, power ? 0x80 : 0x00); // prize motor
+ m_captflag_hopper->motor_w(power ? 1 : 0); // prize motor
if (!power)
m_captflag_hopper->reset();
}
diff --git a/src/mame/drivers/cninja.cpp b/src/mame/drivers/cninja.cpp
index 64614342aff..2a5b9608726 100644
--- a/src/mame/drivers/cninja.cpp
+++ b/src/mame/drivers/cninja.cpp
@@ -85,7 +85,7 @@ WRITE16_MEMBER(cninja_state::cninja_pf34_control_w)
READ16_MEMBER( cninja_state::cninja_protection_region_0_104_r )
{
int real_address = 0 + (offset *2);
- int deco146_addr = BITSWAP32(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
+ int deco146_addr = bitswap<32>(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
uint8_t cs = 0;
uint16_t data = m_deco104->read_data( deco146_addr, mem_mask, cs );
return data;
@@ -94,7 +94,7 @@ READ16_MEMBER( cninja_state::cninja_protection_region_0_104_r )
WRITE16_MEMBER( cninja_state::cninja_protection_region_0_104_w )
{
int real_address = 0 + (offset *2);
- int deco146_addr = BITSWAP32(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
+ int deco146_addr = bitswap<32>(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
uint8_t cs = 0;
m_deco104->write_data( space, deco146_addr, data, mem_mask, cs );
}
@@ -167,7 +167,7 @@ ADDRESS_MAP_END
READ16_MEMBER( cninja_state::sshangha_protection_region_8_146_r )
{
int real_address = 0x1a0000 + (offset *2);
- int deco146_addr = BITSWAP32(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
+ int deco146_addr = bitswap<32>(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
uint8_t cs = 0;
uint16_t data = m_deco146->read_data( deco146_addr, mem_mask, cs );
return data;
@@ -176,7 +176,7 @@ READ16_MEMBER( cninja_state::sshangha_protection_region_8_146_r )
WRITE16_MEMBER( cninja_state::sshangha_protection_region_8_146_w )
{
int real_address = 0x1a0000 + (offset *2);
- int deco146_addr = BITSWAP32(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
+ int deco146_addr = bitswap<32>(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
uint8_t cs = 0;
m_deco146->write_data( space, deco146_addr, data, mem_mask, cs );
}
@@ -186,7 +186,7 @@ READ16_MEMBER( cninja_state::sshangha_protection_region_6_146_r )
// uint16_t realdat = deco16_60_prot_r(space,offset&0x3ff,mem_mask);
int real_address = 0x198000 + (offset *2);
- int deco146_addr = BITSWAP32(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
+ int deco146_addr = bitswap<32>(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
uint8_t cs = 0;
uint16_t data = m_deco146->read_data( deco146_addr, mem_mask, cs );
@@ -203,7 +203,7 @@ WRITE16_MEMBER( cninja_state::sshangha_protection_region_6_146_w )
int real_address = 0x198000 + (offset *2);
- int deco146_addr = BITSWAP32(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
+ int deco146_addr = bitswap<32>(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
uint8_t cs = 0;
m_deco146->write_data( space, deco146_addr, data, mem_mask, cs );
}
@@ -273,7 +273,7 @@ ADDRESS_MAP_END
READ16_MEMBER( cninja_state::mutantf_protection_region_0_146_r )
{
int real_address = 0 + (offset *2);
- int deco146_addr = BITSWAP32(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
+ int deco146_addr = bitswap<32>(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
uint8_t cs = 0;
uint16_t data = m_deco146->read_data( deco146_addr, mem_mask, cs );
return data;
@@ -282,7 +282,7 @@ READ16_MEMBER( cninja_state::mutantf_protection_region_0_146_r )
WRITE16_MEMBER( cninja_state::mutantf_protection_region_0_146_w )
{
int real_address = 0 + (offset *2);
- int deco146_addr = BITSWAP32(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
+ int deco146_addr = bitswap<32>(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
uint8_t cs = 0;
m_deco146->write_data( space, deco146_addr, data, mem_mask, cs );
}
diff --git a/src/mame/drivers/cntsteer.cpp b/src/mame/drivers/cntsteer.cpp
index 20e63ae41df..79a317231a5 100644
--- a/src/mame/drivers/cntsteer.cpp
+++ b/src/mame/drivers/cntsteer.cpp
@@ -488,7 +488,7 @@ WRITE8_MEMBER(cntsteer_state::cntsteer_background_w)
/* checks area 0x2000-0x2fff with this address config. */
READ8_MEMBER(cntsteer_state::cntsteer_background_mirror_r)
{
- return m_videoram2[BITSWAP16(offset,15,14,13,12,5,4,3,2,1,0,11,10,9,8,7,6)];
+ return m_videoram2[bitswap<16>(offset,15,14,13,12,5,4,3,2,1,0,11,10,9,8,7,6)];
}
/*************************************
diff --git a/src/mame/drivers/coco12.cpp b/src/mame/drivers/coco12.cpp
index fe89a51b5fa..88141100f81 100644
--- a/src/mame/drivers/coco12.cpp
+++ b/src/mame/drivers/coco12.cpp
@@ -353,7 +353,7 @@ SLOT_INTERFACE_START( coco_cart )
SLOT_INTERFACE("fdc", COCO_FDC)
SLOT_INTERFACE("fdcv11", COCO_FDC_V11)
SLOT_INTERFACE("cc3hdb1", COCO3_HDB1)
- SLOT_INTERFACE("cp400_fdc", CP400_FDC)
+ SLOT_INTERFACE("cp450_fdc", CP450_FDC)
SLOT_INTERFACE("cd6809_fdc", CD6809_FDC)
SLOT_INTERFACE("rs232", COCO_RS232)
SLOT_INTERFACE("dcmodem", COCO_DCMODEM)
@@ -530,7 +530,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( cp400, coco )
MCFG_COCO_CARTRIDGE_REMOVE(CARTRIDGE_TAG)
- MCFG_COCO_CARTRIDGE_ADD(CARTRIDGE_TAG, coco_cart, "cp400_fdc")
+ MCFG_COCO_CARTRIDGE_ADD(CARTRIDGE_TAG, coco_cart, "cp450_fdc")
MCFG_COCO_CARTRIDGE_CART_CB(WRITELINE(coco_state, cart_w))
MCFG_COCO_CARTRIDGE_NMI_CB(INPUTLINE(MAINCPU_TAG, INPUT_LINE_NMI))
MCFG_COCO_CARTRIDGE_HALT_CB(INPUTLINE(MAINCPU_TAG, INPUT_LINE_HALT))
diff --git a/src/mame/drivers/coinmstr.cpp b/src/mame/drivers/coinmstr.cpp
index b95ad8d7058..8f1d297392f 100644
--- a/src/mame/drivers/coinmstr.cpp
+++ b/src/mame/drivers/coinmstr.cpp
@@ -1540,8 +1540,8 @@ DRIVER_INIT_MEMBER(coinmstr_state,coinmstr)
for(i = 0; i < length; i++)
{
- int adr = BITSWAP24(i, 23,22,21,20,19,18,17,16,15, 14,8,7,2,5,12,10,9,11,13,3,6,0,1,4);
- rom[i] = BITSWAP8(buf[adr],3,2,4,1,5,0,6,7);
+ int adr = bitswap<24>(i, 23,22,21,20,19,18,17,16,15, 14,8,7,2,5,12,10,9,11,13,3,6,0,1,4);
+ rom[i] = bitswap<8>(buf[adr],3,2,4,1,5,0,6,7);
}
}
diff --git a/src/mame/drivers/compc.cpp b/src/mame/drivers/compc.cpp
index e1223d10c45..587d47fdfa0 100644
--- a/src/mame/drivers/compc.cpp
+++ b/src/mame/drivers/compc.cpp
@@ -27,16 +27,19 @@ public:
void machine_reset() override;
+ DECLARE_WRITE8_MEMBER(pioiii_w);
+ DECLARE_READ8_MEMBER(pioiii_r);
DECLARE_WRITE8_MEMBER(pio_w);
DECLARE_READ8_MEMBER(pio_r);
private:
- u8 m_portb;
+ u8 m_portb, m_dips;
};
void compc_state::machine_reset()
{
m_portb = 0;
+ m_dips = 0;
}
WRITE8_MEMBER(compc_state::pio_w)
@@ -84,6 +87,59 @@ READ8_MEMBER(compc_state::pio_r)
return data;
}
+WRITE8_MEMBER(compc_state::pioiii_w)
+{
+ switch (offset)
+ {
+ case 1:
+ m_portb = data;
+ m_mb->m_pit8253->write_gate2(BIT(data, 0));
+ m_mb->pc_speaker_set_spkrdata(BIT(data, 1));
+ m_keyboard->enable(BIT(data, 6));
+ if(data & 0x80)
+ m_mb->m_pic8259->ir1_w(0);
+ break;
+ case 2:
+ m_dips = (data & ~0x30) | ioport("DSW0")->read();
+ break;
+ }
+}
+
+
+READ8_MEMBER(compc_state::pioiii_r)
+{
+ int data = 0;
+ switch (offset)
+ {
+ case 0:
+ data = m_keyboard->read(space, 0);
+ break;
+ case 1:
+ data = m_portb;
+ break;
+ case 2:
+ if(!BIT(m_portb, 2))
+ data = (m_dips >> 4) & 0x0f;
+ else
+ data = m_dips & 0x0f;
+ if(m_mb->pit_out2())
+ data |= 0x30;
+ break;
+ }
+ return data;
+}
+
+static INPUT_PORTS_START(compciii)
+ PORT_START("DSW0") /* IN1 */
+ PORT_DIPNAME( 0x30, 0x30, "Graphics adapter")
+ PORT_DIPSETTING( 0x00, "EGA/VGA" )
+ PORT_DIPSETTING( 0x10, "Color 40x25" )
+ PORT_DIPSETTING( 0x20, "Color 80x25" )
+ PORT_DIPSETTING( 0x30, "Monochrome" )
+
+ PORT_INCLUDE(pc_keyboard)
+INPUT_PORTS_END
+
static INPUT_PORTS_START(compc)
PORT_START("DSW0") /* IN1 */
PORT_DIPNAME( 0xc0, 0x40, "Number of floppy drives")
@@ -111,33 +167,6 @@ static INPUT_PORTS_START(compc)
PORT_INCLUDE(pc_keyboard)
INPUT_PORTS_END
-static INPUT_PORTS_START(compcalt)
- PORT_START("DSW0") /* IN1 */
- PORT_DIPNAME( 0x0c, 0x04, "Number of floppy drives")
- PORT_DIPSETTING( 0x00, "1" )
- PORT_DIPSETTING( 0x04, "2" )
- PORT_DIPSETTING( 0x08, "3" )
- PORT_DIPSETTING( 0x0c, "4" )
- PORT_DIPNAME( 0x03, 0x03, "Graphics adapter")
- PORT_DIPSETTING( 0x00, "EGA/VGA" )
- PORT_DIPSETTING( 0x01, "Color 40x25" )
- PORT_DIPSETTING( 0x02, "Color 80x25" )
- PORT_DIPSETTING( 0x03, "Monochrome" )
- PORT_DIPNAME( 0xc0, 0xc0, "RAM banks")
- PORT_DIPSETTING( 0x00, "1 - 16/ 64/256K" )
- PORT_DIPSETTING( 0x40, "2 - 32/128/512K" )
- PORT_DIPSETTING( 0x80, "3 - 48/192/576K" )
- PORT_DIPSETTING( 0xc0, "4 - 64/256/640K" )
- PORT_DIPNAME( 0x20, 0x00, "8087 installed")
- PORT_DIPSETTING( 0x00, DEF_STR(No) )
- PORT_DIPSETTING( 0x20, DEF_STR(Yes) )
- PORT_DIPNAME( 0x10, 0x10, "Boot from floppy")
- PORT_DIPSETTING( 0x10, DEF_STR(Yes) )
- PORT_DIPSETTING( 0x00, DEF_STR(No) )
-
- PORT_INCLUDE(pc_keyboard)
-INPUT_PORTS_END
-
static ADDRESS_MAP_START(compc_map, AS_PROGRAM, 8, compc_state)
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
@@ -149,6 +178,12 @@ static ADDRESS_MAP_START(compc_io, AS_IO, 8, compc_state)
AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", pc_noppi_mb_device, map)
ADDRESS_MAP_END
+static ADDRESS_MAP_START(compciii_io, AS_IO, 8, compc_state)
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0060, 0x0063) AM_READWRITE(pioiii_r, pioiii_w)
+ AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", pc_noppi_mb_device, map)
+ADDRESS_MAP_END
+
static MACHINE_CONFIG_START(compc)
MCFG_CPU_ADD("maincpu", I8088, 4772720*2)
MCFG_CPU_PROGRAM_MAP(compc_map)
@@ -181,6 +216,11 @@ static MACHINE_CONFIG_START(compc)
MCFG_SOFTWARE_LIST_ADD("disk_list", "ibm5150")
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED(pc10iii, compc)
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_CPU_IO_MAP(compciii_io)
+MACHINE_CONFIG_END
+
ROM_START(compc10)
ROM_REGION(0x10000, "bios", 0)
ROM_DEFAULT_BIOS("v205")
@@ -195,25 +235,36 @@ ROM_START(pc10iii)
ROM_REGION(0x10000, "bios", 0)
ROM_DEFAULT_BIOS("v441")
ROM_SYSTEM_BIOS(0, "v435", "v4.35")
+ ROM_SYSTEM_BIOS(1, "v435c", "v4.35c")
+ ROM_SYSTEM_BIOS(2, "v436", "v4.36")
+ ROM_SYSTEM_BIOS(3, "v436b", "v4.36b")
+ ROM_SYSTEM_BIOS(4, "v436c", "v4.36c")
+ ROM_SYSTEM_BIOS(5, "v438", "v4.38")
+ ROM_SYSTEM_BIOS(6, "v439", "v4.39")
+ ROM_SYSTEM_BIOS(7, "v440", "v4.40")
+ ROM_SYSTEM_BIOS(8, "v441", "v4.41")
ROMX_LOAD("318085-01.u201", 0x8000, 0x8000, CRC(be752d1e) SHA1(5e5e63cd6d6269816cd691602e4c4d209fe3df67), ROM_BIOS(1))
- ROM_SYSTEM_BIOS(1, "v436", "v4.36")
- ROMX_LOAD("318085-02.u201", 0x8000, 0x8000, CRC(db0c9d04) SHA1(1314ce606840f4f78e58e5f78909e8971387f387), ROM_BIOS(2))
- ROM_SYSTEM_BIOS(2, "v436b", "v4.36b")
- ROMX_LOAD("318085-03.u201", 0x8000, 0x8000, CRC(559e6b76) SHA1(cdfd4781f3520db7f5111469ebb29c10b39ab587), ROM_BIOS(3))
- ROM_SYSTEM_BIOS(3, "v436c", "v4.36c")
- ROMX_LOAD("318085-04.u201", 0x8000, 0x8000, CRC(f81e67f0) SHA1(b46613cb5c6ac4beb769778bc35f81777ebe02e1), ROM_BIOS(4))
- ROM_SYSTEM_BIOS(4, "v438", "v4.38")
- ROMX_LOAD("318085-05.u201", 0x8000, 0x8000, CRC(ae9e6a31) SHA1(853ee251cf230818c407a8d13ef060a21c90a8c1), ROM_BIOS(5))
- ROM_SYSTEM_BIOS(5, "v439", "v4.39")
- ROMX_LOAD("318085-06.u201", 0x8000, 0x8000, CRC(1901993c) SHA1(f75060c1c442376bd42c61e74fa9eee053351791), ROM_BIOS(6))
- ROM_SYSTEM_BIOS(6, "v440", "v4.40")
- ROMX_LOAD("318085-07.u201", 0x8000, 0x8000, CRC(505d52b0) SHA1(f717c6ab791d51f35e1c38ffbc81a44075b5f2f8), ROM_BIOS(7))
- ROM_SYSTEM_BIOS(7, "v441", "v4.41")
- ROMX_LOAD("318085-08.u201", 0x8000, 0x8000, CRC(7e228dc8) SHA1(958dfdd637bd31c01b949fac729d6973a7e630bc), ROM_BIOS(8))
+ ROMX_LOAD("318085-01_pc-3_bios_4.35c.bin", 0x8000, 0x8000, CRC(adbc4ab7) SHA1(c157e5bc115906705849f185e4fe8e42ab28930c), ROM_BIOS(2))
+ ROMX_LOAD("318085-02.u201", 0x8000, 0x8000, CRC(db0c9d04) SHA1(1314ce606840f4f78e58e5f78909e8971387f387), ROM_BIOS(3))
+ ROMX_LOAD("318085-03.u201", 0x8000, 0x8000, CRC(559e6b76) SHA1(cdfd4781f3520db7f5111469ebb29c10b39ab587), ROM_BIOS(4))
+ ROMX_LOAD("318085-04.u201", 0x8000, 0x8000, CRC(f81e67f0) SHA1(b46613cb5c6ac4beb769778bc35f81777ebe02e1), ROM_BIOS(5))
+ ROMX_LOAD("318085-05.u201", 0x8000, 0x8000, CRC(ae9e6a31) SHA1(853ee251cf230818c407a8d13ef060a21c90a8c1), ROM_BIOS(6))
+ ROMX_LOAD("318085-06.u201", 0x8000, 0x8000, CRC(1901993c) SHA1(f75060c1c442376bd42c61e74fa9eee053351791), ROM_BIOS(7))
+ ROMX_LOAD("318085-07.u201", 0x8000, 0x8000, CRC(505d52b0) SHA1(f717c6ab791d51f35e1c38ffbc81a44075b5f2f8), ROM_BIOS(8))
+ ROMX_LOAD("318085-08.u201", 0x8000, 0x8000, CRC(7e228dc8) SHA1(958dfdd637bd31c01b949fac729d6973a7e630bc), ROM_BIOS(9))
+
ROM_REGION(0x8000, "gfx1", 0)
- ROM_LOAD("318086-02.u607", 0x0000, 0x8000, CRC(b406651c) SHA1(856f58353391a74a06ebb8ec9f8333d7d69e5fd6))
+ ROMX_LOAD("318086-01_p10c_164a.bin", 0x0000, 0x4000, CRC(ee6c27f0) SHA1(e769cc3a49a1d708bd74eb4ac85bb6ea67220d38), ROM_BIOS(1)) // came with ROM 4.35c
+ ROMX_LOAD("318086-01_p10c_164a.bin", 0x0000, 0x4000, CRC(ee6c27f0) SHA1(e769cc3a49a1d708bd74eb4ac85bb6ea67220d38), ROM_BIOS(2))
+ ROMX_LOAD("318086-02.u607", 0x0000, 0x8000, CRC(b406651c) SHA1(856f58353391a74a06ebb8ec9f8333d7d69e5fd6), ROM_BIOS(3))
+ ROMX_LOAD("318086-02.u607", 0x0000, 0x8000, CRC(b406651c) SHA1(856f58353391a74a06ebb8ec9f8333d7d69e5fd6), ROM_BIOS(4))
+ ROMX_LOAD("318086-02.u607", 0x0000, 0x8000, CRC(b406651c) SHA1(856f58353391a74a06ebb8ec9f8333d7d69e5fd6), ROM_BIOS(5))
+ ROMX_LOAD("318086-02.u607", 0x0000, 0x8000, CRC(b406651c) SHA1(856f58353391a74a06ebb8ec9f8333d7d69e5fd6), ROM_BIOS(6))
+ ROMX_LOAD("318086-02.u607", 0x0000, 0x8000, CRC(b406651c) SHA1(856f58353391a74a06ebb8ec9f8333d7d69e5fd6), ROM_BIOS(7))
+ ROMX_LOAD("318086-02.u607", 0x0000, 0x8000, CRC(b406651c) SHA1(856f58353391a74a06ebb8ec9f8333d7d69e5fd6), ROM_BIOS(8))
+ ROMX_LOAD("318086-02.u607", 0x0000, 0x8000, CRC(b406651c) SHA1(856f58353391a74a06ebb8ec9f8333d7d69e5fd6), ROM_BIOS(9))
ROM_END
// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS
COMP( 1984, compc10, ibm5150, 0, compc, compc, compc_state, 0, "Commodore Business Machines", "Commodore PC 10", MACHINE_NOT_WORKING )
-COMP( 1987, pc10iii, ibm5150, 0, compc, compcalt, compc_state, 0, "Commodore Business Machines", "Commodore PC-10 III", MACHINE_NOT_WORKING )
+COMP( 1987, pc10iii, ibm5150, 0, pc10iii, compciii, compc_state, 0, "Commodore Business Machines", "Commodore PC-10 III", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/contra.cpp b/src/mame/drivers/contra.cpp
index d9f9440ad7c..449bf162341 100644
--- a/src/mame/drivers/contra.cpp
+++ b/src/mame/drivers/contra.cpp
@@ -202,7 +202,7 @@ static MACHINE_CONFIG_START( contra )
MCFG_CPU_PROGRAM_MAP(contra_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", contra_state, contra_interrupt)
- MCFG_CPU_ADD("audiocpu", M6809, XTAL_24MHz/8) /* 3000000? */
+ MCFG_CPU_ADD("audiocpu", MC6809E, XTAL_24MHz/8) /* 3000000? */
MCFG_CPU_PROGRAM_MAP(sound_map)
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* enough for the sound CPU to read all commands */
diff --git a/src/mame/drivers/coolpool.cpp b/src/mame/drivers/coolpool.cpp
index 80cab473371..ab09d052777 100644
--- a/src/mame/drivers/coolpool.cpp
+++ b/src/mame/drivers/coolpool.cpp
@@ -1145,13 +1145,13 @@ DRIVER_INIT_MEMBER(coolpool_state,9ballsht)
hi = rom[a] >> 8;
lo = rom[a] & 0xff;
- nhi = BITSWAP8(hi,5,2,0,7,6,4,3,1) ^ 0x29;
+ nhi = bitswap<8>(hi,5,2,0,7,6,4,3,1) ^ 0x29;
if (hi & 0x01) nhi ^= 0x03;
if (hi & 0x10) nhi ^= 0xc1;
if (hi & 0x20) nhi ^= 0x40;
if (hi & 0x40) nhi ^= 0x12;
- nlo = BITSWAP8(lo,5,3,4,6,7,1,2,0) ^ 0x80;
+ nlo = bitswap<8>(lo,5,3,4,6,7,1,2,0) ^ 0x80;
if ((lo & 0x02) && (lo & 0x04)) nlo ^= 0x01;
if (lo & 0x04) nlo ^= 0x0c;
if (lo & 0x08) nlo ^= 0x10;
diff --git a/src/mame/drivers/cops.cpp b/src/mame/drivers/cops.cpp
index a8c44f360ea..7a2af7b71e0 100644
--- a/src/mame/drivers/cops.cpp
+++ b/src/mame/drivers/cops.cpp
@@ -200,7 +200,7 @@ uint32_t cops_state::screen_update( screen_device &screen, bitmap_ind16 &bitmap,
WRITE8_MEMBER(cops_state::cdrom_data_w)
{
const char *regs[4] = { "CMD", "PARAM", "WRITE", "CTRL" };
- m_cdrom_data = BITSWAP8(data,0,1,2,3,4,5,6,7);
+ m_cdrom_data = bitswap<8>(data,0,1,2,3,4,5,6,7);
uint8_t reg = ((m_cdrom_ctrl & 4) >> 1) | ((m_cdrom_ctrl & 8) >> 3);
if (LOG_CDROM) logerror("%s:cdrom_data_w(reg = %s, data = %02x)\n", machine().describe_context(), regs[reg & 0x03], m_cdrom_data);
}
@@ -647,7 +647,7 @@ WRITE8_MEMBER(cops_state::io1_w)
{
sprintf(output_name, "digit%d", i);
display_data = m_lcd_data_l | (m_lcd_data_h << 8);
- display_data = BITSWAP16(display_data, 4, 5, 12, 1, 0, 11, 10, 6, 7, 2, 9, 3, 15, 8, 14, 13);
+ display_data = bitswap<16>(display_data, 4, 5, 12, 1, 0, 11, 10, 6, 7, 2, 9, 3, 15, 8, 14, 13);
output().set_value(output_name, display_data);
}
}
@@ -757,7 +757,7 @@ WRITE_LINE_MEMBER(cops_state::via1_irq)
WRITE8_MEMBER(cops_state::via1_b_w)
{
- m_sn_data = BITSWAP8(data,0,1,2,3,4,5,6,7);
+ m_sn_data = bitswap<8>(data,0,1,2,3,4,5,6,7);
if (m_sn_cb1)
{
m_sn->write(space,0,m_sn_data);
@@ -915,7 +915,7 @@ DRIVER_INIT_MEMBER(cops_state,cops)
static MACHINE_CONFIG_START( cops )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu",M6502,MAIN_CLOCK/2)
+ MCFG_CPU_ADD("maincpu", M6502, MAIN_CLOCK/2)
MCFG_CPU_PROGRAM_MAP(cops_map)
/* video hardware */
@@ -923,15 +923,15 @@ static MACHINE_CONFIG_START( cops )
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
/* via */
- MCFG_DEVICE_ADD("via6522_1", VIA6522, 0)
+ MCFG_DEVICE_ADD("via6522_1", VIA6522, MAIN_CLOCK/2)
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(cops_state, via1_irq))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(cops_state, via1_b_w))
MCFG_VIA6522_CB1_HANDLER(WRITE8(cops_state, via1_cb1_w))
- MCFG_DEVICE_ADD("via6522_2", VIA6522, 0)
+ MCFG_DEVICE_ADD("via6522_2", VIA6522, MAIN_CLOCK/2)
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(cops_state, via2_irq))
- MCFG_DEVICE_ADD("via6522_3", VIA6522, 0)
+ MCFG_DEVICE_ADD("via6522_3", VIA6522, MAIN_CLOCK/2)
MCFG_VIA6522_READPA_HANDLER(READ8(cops_state, cdrom_data_r))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(cops_state, cdrom_data_w))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(cops_state, cdrom_ctrl_w))
@@ -951,7 +951,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( revlatns )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu",M6502,MAIN_CLOCK/2)
+ MCFG_CPU_ADD("maincpu", M6502, MAIN_CLOCK/2)
MCFG_CPU_PROGRAM_MAP(revlatns_map)
/* video hardware */
@@ -959,7 +959,7 @@ static MACHINE_CONFIG_START( revlatns )
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
/* via */
- MCFG_DEVICE_ADD("via6522_1", VIA6522, 0)
+ MCFG_DEVICE_ADD("via6522_1", VIA6522, MAIN_CLOCK/2)
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(cops_state, via1_irq))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(cops_state, via1_b_w))
MCFG_VIA6522_CB1_HANDLER(WRITE8(cops_state, via1_cb1_w))
diff --git a/src/mame/drivers/cortex.cpp b/src/mame/drivers/cortex.cpp
index c4e87619bd7..6281b1e88aa 100644
--- a/src/mame/drivers/cortex.cpp
+++ b/src/mame/drivers/cortex.cpp
@@ -2,23 +2,45 @@
// copyright-holders:Robbbert
/***************************************************************************
- Powertran Cortex
+Powertran Cortex
- 2012-04-20 Skeleton driver.
+2012-04-20 Skeleton driver.
- ftp://ftp.whtech.com/Powertran Cortex/
- http://www.powertrancortex.com/index.html
+ftp://ftp.whtech.com/Powertran Cortex/
+http://www.powertrancortex.com/index.html
- Uses Texas Instruments parts and similar to other TI computers.
- It was designed by TI engineers, so it may perhaps be a clone
- of another TI or the Geneve.
+Uses Texas Instruments parts and similar to other TI computers.
+It was designed by TI engineers, so it may perhaps be a clone
+of another TI or the Geneve.
- Chips:
- TMS9995 - CPU
- TMS9929 - Video
- TMS9911 - DMA to floppy
- TMS9909 - Floppy Disk Controller
- AY-5-2376 - Keyboard controller
+Chips:
+TMS9995 - CPU
+TMS9929 - Video
+TMS9911 - DMA to floppy (unemulated device)
+TMS9909 - Floppy Disk Controller (unemulated device)
+TMS9902 - UART (x2) (device not usable with rs232.h)
+AY-5-2376 - Keyboard controller
+
+All input to be in uppercase. Note that "lowercase" is just smaller uppercase,
+and is not acceptable as input.
+
+There's no option in BASIC to produce sound. It will beep if an invalid key
+(usually a control key) is pressed.
+
+To clear the screen press Ctrl L.
+
+ToDo:
+- Unemulated devices
+- Cassette
+- Keyboard to use AY device
+- Memory mapping unit (74LS610)
+- Various CRU I/O
+
+Note that the MAME implementation of CRU addresses is not the same as real
+hardware. For writing, MAME uses the correct address (R12/2 + offset), with
+the bit (0 or 1), being in 'data'. However, for reading, 8 CRU bits are
+packed into a single address-byte (CRU 0 = bit 0, etc). So the address is
+(R12/2 + offset) >> 3.
****************************************************************************/
@@ -27,6 +49,10 @@
#include "cpu/tms9900/tms9995.h"
#include "machine/74259.h"
#include "video/tms9928a.h"
+//#include "machine/tms9902.h"
+#include "machine/keyboard.h"
+#include "sound/beep.h"
+#include "speaker.h"
class cortex_state : public driver_device
{
@@ -34,85 +60,168 @@ public:
cortex_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
- , m_p_ram(*this, "ram")
+ , m_beep(*this, "beeper")
+ , m_io_dsw(*this, "DSW")
{ }
+ void kbd_put(u8 data);
+ DECLARE_WRITE_LINE_MEMBER(keyboard_ack_w);
+ DECLARE_WRITE_LINE_MEMBER(romsw_w);
+ DECLARE_WRITE_LINE_MEMBER(vdp_int_w);
+ DECLARE_READ8_MEMBER(pio_r);
+ DECLARE_READ8_MEMBER(keyboard_r);
+ DECLARE_DRIVER_INIT(init);
+
private:
+ bool m_kbd_ack;
+ bool m_vdp_int;
+ uint8_t m_term_data;
virtual void machine_reset() override;
required_device<tms9995_device> m_maincpu;
- required_shared_ptr<uint8_t> m_p_ram;
+ required_device<beep_device> m_beep;
+ required_ioport m_io_dsw;
};
static ADDRESS_MAP_START( mem_map, AS_PROGRAM, 8, cortex_state )
- AM_RANGE(0x0000, 0xefff) AM_RAM AM_SHARE("ram")
+ AM_RANGE(0x0000, 0x7fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
+ AM_RANGE(0x8000, 0xefff) AM_RAM
AM_RANGE(0xf100, 0xf11f) AM_RAM // memory mapping unit
- AM_RANGE(0xf120, 0xf120) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write)
- AM_RANGE(0xf121, 0xf121) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write)
+ AM_RANGE(0xf120, 0xf120) AM_DEVREADWRITE("crtc", tms9928a_device, vram_read, vram_write)
+ AM_RANGE(0xf121, 0xf121) AM_DEVREADWRITE("crtc", tms9928a_device, register_read, register_write)
//AM_RANGE(0xf140, 0xf147) // fdc tms9909
ADDRESS_MAP_END
static ADDRESS_MAP_START( io_map, AS_IO, 8, cortex_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x000f) AM_MIRROR(0x0030) AM_DEVWRITE("control", ls259_device, write_a0)
- //AM_RANGE(0x0000, 0x000f) AM_MIRROR(0x0020) AM_READ(pio_r)
- //AM_RANGE(0x0010, 0x001f) AM_MIRROR(0x0020) AM_READ(keyboard_r)
- //AM_RANGE(0x0080, 0x00bf) AM_READWRITE(rs232_r,rs232_w)
- //AM_RANGE(0x0180, 0x01bf) AM_READWRITE(cass_r,cass_w)
- //AM_RANGE(0x0800, 0x080f) AM_WRITE(cent_data_w)
- //AM_RANGE(0x0810, 0x0811) AM_WRITE(cent_strobe_w)
- //AM_RANGE(0x0812, 0x0813) AM_READ(cent_stat_r)
- //AM_RANGE(0x1ee0, 0x1eef) AM_READWRITE(cpu_int_r,cpu_int_w)
- //AM_RANGE(0x1fda, 0x1fdb) AM_READWRITE(cpu_int1_r,cpu_int1_w)
+ AM_RANGE(0x0000, 0x0007) AM_MIRROR(0x18) AM_DEVWRITE("control", ls259_device, write_d0)
+ AM_RANGE(0x0000, 0x0000) AM_READ(pio_r)
+ AM_RANGE(0x0001, 0x0001) AM_READ(keyboard_r)
+ //AM_RANGE(0x0040, 0x005f) AM_DEVWRITE("uart1", tms9902_device, cruwrite) // RS232 (r12 = 80-bf)
+ //AM_RANGE(0x0008, 0x000b) AM_DEVREAD("uart1", tms9902_device, cruread) // RS232
+ //AM_RANGE(0x00c0, 0x00df) AM_DEVWRITE("uart2", tms9902_device, cruwrite) // Cassette (r12 = 180-1bf)
+ //AM_RANGE(0x0018, 0x001b) AM_DEVREAD("uart2", tms9902_device, cruread) // Cassette
+ //AM_RANGE(0x00e0, 0x00ff) AM_WRITE("dma", tms9911_device, write) // r12 = 1c0-1fe
+ //AM_RANGE(0x001c, 0x001f) AM_READ("dma", tms9911_device, read) // if reading is needed
+ //AM_RANGE(0x0400, 0x0407) AM_WRITE(cent_data_w) // r12 = 800-80e
+ //AM_RANGE(0x0408, 0x0408) AM_WRITE(cent_strobe_w) // r12 = 810
+ //AM_RANGE(0x0081, 0x0081) AM_READ(cent_stat_r) // CRU 409 (r12 = 812)
ADDRESS_MAP_END
/* Input ports */
static INPUT_PORTS_START( cortex )
+ PORT_START("DSW")
+ PORT_DIPNAME( 0x04, 0x00, "DISK SIZE")
+ PORT_DIPSETTING( 0x04, "20cm")
+ PORT_DIPSETTING( 0x00, "13cm")
+ PORT_DIPNAME( 0x08, 0x08, "DISK DENSITY")
+ PORT_DIPSETTING( 0x08, "Double")
+ PORT_DIPSETTING( 0x00, "Single")
INPUT_PORTS_END
+READ8_MEMBER( cortex_state::pio_r )
+{
+ return (m_kbd_ack ? 0x20 : 0) | (m_vdp_int ? 0x40 : 0) | m_io_dsw->read() | 0x93;
+}
+
+READ8_MEMBER( cortex_state::keyboard_r )
+{
+ return m_term_data;
+}
+
+WRITE_LINE_MEMBER( cortex_state::keyboard_ack_w )
+{
+ if (!state)
+ {
+ m_maincpu->set_input_line(INT_9995_INT4, CLEAR_LINE);
+ m_kbd_ack = 1;
+ }
+}
+
+WRITE_LINE_MEMBER( cortex_state::romsw_w )
+{
+ membank("bankr0")->set_entry(state ? 0 : 1);
+}
+
+WRITE_LINE_MEMBER( cortex_state::vdp_int_w )
+{
+ m_vdp_int = state ? 0 : 1; // change polarity to match mame
+}
+
+void cortex_state::kbd_put(u8 data)
+{
+ m_term_data = data;
+ m_kbd_ack = 0;
+ m_maincpu->set_input_line(INT_9995_INT4, ASSERT_LINE);
+}
void cortex_state::machine_reset()
{
- uint8_t* ROM = memregion("maincpu")->base();
- memcpy(m_p_ram, ROM, 0x6000);
+ m_kbd_ack = 1;
+ m_vdp_int = 0;
+ m_beep->set_state(0);
+ membank("bankr0")->set_entry(1); // point at rom
+ membank("bankw0")->set_entry(0); // always write to ram
m_maincpu->ready_line(ASSERT_LINE);
}
+DRIVER_INIT_MEMBER( cortex_state, init )
+{
+ uint8_t *main = memregion("maincpu")->base();
+
+ membank("bankr0")->configure_entry(1, &main[0x10000]);
+ membank("bankr0")->configure_entry(0, &main[0x00000]);
+ membank("bankw0")->configure_entry(0, &main[0x00000]);
+}
+
static MACHINE_CONFIG_START( cortex )
/* basic machine hardware */
/* TMS9995 CPU @ 12.0 MHz */
// Standard variant, no overflow int
// No lines connected yet
- MCFG_TMS99xx_ADD("maincpu", TMS9995, 12000000, mem_map, io_map)
+ MCFG_TMS99xx_ADD("maincpu", TMS9995, XTAL_12MHz, mem_map, io_map)
MCFG_DEVICE_ADD("control", LS259, 0) // IC64
//MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(cortex_state, basic_led_w))
- //MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(WRITELINE(cortex_state, keyboard_ack_w))
+ MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(WRITELINE(cortex_state, keyboard_ack_w))
//MCFG_ADDRESSABLE_LATCH_Q2_OUT_CB(WRITELINE(cortex_state, ebus_int_ack_w))
//MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(WRITELINE(cortex_state, ebus_to_en_w))
//MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(WRITELINE(cortex_state, disk_size_w))
- //MCFG_ADDRESSABLE_LATCH_Q5_OUT_CB(WRITELINE(cortex_state, eprom_on_off_w))
- //MCFG_ADDRESSABLE_LATCH_Q6_OUT_CB(WRITELINE(cortex_state, bell_en_w))
+ MCFG_ADDRESSABLE_LATCH_Q5_OUT_CB(WRITELINE(cortex_state, romsw_w))
+ MCFG_ADDRESSABLE_LATCH_Q6_OUT_CB(DEVWRITELINE("beeper", beep_device, set_state))
/* video hardware */
- MCFG_DEVICE_ADD( "tms9928a", TMS9929A, XTAL_10_738635MHz / 2 )
+ MCFG_DEVICE_ADD( "crtc", TMS9929A, XTAL_10_738635MHz / 2 )
+ MCFG_TMS9928A_OUT_INT_LINE_CB(INPUTLINE("maincpu", INT_9995_INT1))
+ MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE(cortex_state, vdp_int_w))
MCFG_TMS9928A_VRAM_SIZE(0x4000)
MCFG_TMS9928A_SCREEN_ADD_PAL( "screen" )
- MCFG_SCREEN_UPDATE_DEVICE( "tms9928a", tms9928a_device, screen_update )
+ MCFG_SCREEN_UPDATE_DEVICE( "crtc", tms9928a_device, screen_update )
+
+ MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
+ MCFG_GENERIC_KEYBOARD_CB(PUT(cortex_state, kbd_put))
+
+ //MCFG_DEVICE_ADD("uart1", TMS9902, XTAL_12MHz / 4)
+ //MCFG_DEVICE_ADD("uart2", TMS9902, XTAL_12MHz / 4)
+
+ /* Sound */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("beeper", BEEP, 950) // guess
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.05)
MACHINE_CONFIG_END
/* ROM definition */
ROM_START( cortex )
- ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
+ ROM_REGION( 0x18000, "maincpu", ROMREGION_ERASEFF )
ROM_SYSTEM_BIOS(0, "basic", "Cortex Bios")
- ROMX_LOAD( "cortex.ic47", 0x0000, 0x2000, CRC(bdb8c7bd) SHA1(340829dcb7a65f2e830fd5aff82a312e3ed7918f), ROM_BIOS(1))
- ROMX_LOAD( "cortex.ic46", 0x2000, 0x2000, CRC(4de459ea) SHA1(00a42fe556d4ffe1f85b2ce369f544b07fbd06d9), ROM_BIOS(1))
- ROMX_LOAD( "cortex.ic45", 0x4000, 0x2000, CRC(b0c9b6e8) SHA1(4e20c3f0b7546b803da4805cd3b8616f96c3d923), ROM_BIOS(1))
+ ROMX_LOAD( "cortex.ic47", 0x10000, 0x2000, CRC(bdb8c7bd) SHA1(340829dcb7a65f2e830fd5aff82a312e3ed7918f), ROM_BIOS(1))
+ ROMX_LOAD( "cortex.ic46", 0x12000, 0x2000, CRC(4de459ea) SHA1(00a42fe556d4ffe1f85b2ce369f544b07fbd06d9), ROM_BIOS(1))
+ ROMX_LOAD( "cortex.ic45", 0x14000, 0x2000, CRC(b0c9b6e8) SHA1(4e20c3f0b7546b803da4805cd3b8616f96c3d923), ROM_BIOS(1))
ROM_SYSTEM_BIOS(1, "forth", "FIG-Forth")
- ROMX_LOAD( "forth.ic47", 0x0000, 0x2000, CRC(999034be) SHA1(0dcc7404c38aa0ae913101eb0aa98da82104b5d4), ROM_BIOS(2))
- ROMX_LOAD( "forth.ic46", 0x2000, 0x2000, CRC(8eca54cc) SHA1(0f1680e941ef60bb9bde9a4b843b78f30dff3202), ROM_BIOS(2))
+ ROMX_LOAD( "forth.ic47", 0x10000, 0x2000, CRC(999034be) SHA1(0dcc7404c38aa0ae913101eb0aa98da82104b5d4), ROM_BIOS(2))
+ ROMX_LOAD( "forth.ic46", 0x12000, 0x2000, CRC(8eca54cc) SHA1(0f1680e941ef60bb9bde9a4b843b78f30dff3202), ROM_BIOS(2))
ROM_END
/* Driver */
// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS
-COMP( 1982, cortex, 0, 0, cortex, cortex, cortex_state, 0, "Powertran Cybernetics", "Cortex", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP( 1982, cortex, 0, 0, cortex, cortex, cortex_state, init, "Powertran Cybernetics", "Cortex", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/cps1.cpp b/src/mame/drivers/cps1.cpp
index e1034118975..e47eb632fec 100644
--- a/src/mame/drivers/cps1.cpp
+++ b/src/mame/drivers/cps1.cpp
@@ -5525,8 +5525,8 @@ ROM_START( 1941j )
ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
ROM_REGION( 0x0200, "bboardplds", 0 )
- ROM_LOAD( "yi22b.1a", 0x0000, 0x0117, NO_DUMP )
- ROM_LOAD( "lwio.12e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) ) // pal verification required
+ ROM_LOAD( "yi22b.1a", 0x0000, 0x0117, CRC(b5cad2a0) SHA1(3b1232cf821617bc9819fa7b9b3f4e7fc66976f3) )
+ ROM_LOAD( "lwio.12e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
ROM_END
/* B-Board 89624B-3 */
diff --git a/src/mame/drivers/cps2.cpp b/src/mame/drivers/cps2.cpp
index 8998908d2df..6207ce66922 100644
--- a/src/mame/drivers/cps2.cpp
+++ b/src/mame/drivers/cps2.cpp
@@ -6232,9 +6232,9 @@ ROM_END
ROM_START( sfa )
ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
ROM_LOAD16_WORD_SWAP( "sfze.03d", 0x000000, 0x80000, CRC(ebf2054d) SHA1(6e7b9e4202b86ab237ea5634c98b71b82d812ef2) )
- ROM_LOAD16_WORD_SWAP( "sfz.04b", 0x080000, 0x80000, CRC(8b73b0e5) SHA1(5318761f615c21395366b5333e75eaaa73ef2073) )
- ROM_LOAD16_WORD_SWAP( "sfz.05a", 0x100000, 0x80000, CRC(0810544d) SHA1(5f39bda3e7b16508eb58e5a2e0cc58c09cf428ce) )
- ROM_LOAD16_WORD_SWAP( "sfz.06", 0x180000, 0x80000, CRC(806e8f38) SHA1(b6d6912aa8f2f590335d7ff9a8214648e7131ebb) )
+ ROM_LOAD16_WORD_SWAP( "sfz.04b", 0x080000, 0x80000, CRC(8b73b0e5) SHA1(5318761f615c21395366b5333e75eaaa73ef2073) ) // also found as sfze.04c, same hash
+ ROM_LOAD16_WORD_SWAP( "sfz.05a", 0x100000, 0x80000, CRC(0810544d) SHA1(5f39bda3e7b16508eb58e5a2e0cc58c09cf428ce) ) // also found as sfze.05b, same hash
+ ROM_LOAD16_WORD_SWAP( "sfz.06", 0x180000, 0x80000, CRC(806e8f38) SHA1(b6d6912aa8f2f590335d7ff9a8214648e7131ebb) ) // also found as sfze.06, same hash
ROM_REGION( 0x1000000, "gfx", 0 )
ROM_FILL( 0x000000, 0x800000, 0x00 )
diff --git a/src/mame/drivers/csplayh5.cpp b/src/mame/drivers/csplayh5.cpp
index c36bf906b27..6c2c7f06b58 100644
--- a/src/mame/drivers/csplayh5.cpp
+++ b/src/mame/drivers/csplayh5.cpp
@@ -94,8 +94,9 @@ public:
DECLARE_DRIVER_INIT(renaimj);
DECLARE_DRIVER_INIT(sengomjk);
DECLARE_DRIVER_INIT(thenanpa);
+ DECLARE_DRIVER_INIT(torarech);
DECLARE_DRIVER_INIT(tsuwaku);
-
+
virtual void machine_reset() override;
TIMER_DEVICE_CALLBACK_MEMBER(csplayh5_irq);
DECLARE_WRITE_LINE_MEMBER(csplayh5_vdp0_interrupt);
@@ -427,6 +428,7 @@ DRIVER_INIT_MEMBER(csplayh5_state,pokoachu) { general_init(0x7b1e/2, 0x6018); }
DRIVER_INIT_MEMBER(csplayh5_state,renaimj) { general_init(0x568c/2, 0x6018); }
DRIVER_INIT_MEMBER(csplayh5_state,sengomjk) { general_init(0x5226/2, 0x6018); }
DRIVER_INIT_MEMBER(csplayh5_state,thenanpa) { general_init(0x69ec/2, 0x6018); }
+DRIVER_INIT_MEMBER(csplayh5_state,torarech) { general_init(0x9384/2, 0x6018); }
DRIVER_INIT_MEMBER(csplayh5_state,tsuwaku) { general_init(0x856e/2, 0x6018); }
@@ -839,6 +841,27 @@ ROM_START( tsuwaku )
ROM_LOAD( "gal16v8h.020", 0x000000, 0x040000, CRC(ac5c9495) SHA1(1c54ecf6dedbf8c3a29207c1c91b52e2ff394d9d) )
ROM_END
+ROM_START( torarech )
+ ROM_REGION( 0x40000, "maincpu", 0 ) // tmp68301 prg
+ ROM_LOAD16_BYTE( "2.ic3", 0x000000, 0x020000, CRC(a7fda49b) SHA1(a7891e574b4d2ae3bcdc40f76b6e67e67d6e72bd) )
+ ROM_LOAD16_BYTE( "1.ic2", 0x000001, 0x020000, CRC(887c1a0d) SHA1(a594e3ef6514ed48f097e742633c19e51c10b730) )
+
+ DVD_BIOS
+
+ ROM_REGION( 0x20000, ":nichisnd:audiorom", 0 ) // z80
+ ROM_LOAD( "11.ic51", 0x000000, 0x020000, CRC(bd785d10) SHA1(ceb91c0f13eafabb8d48384857af6fc555d48951) )
+
+ ROM_REGION( 0x400000, "blit_gfx", ROMREGION_ERASEFF ) // blitter based gfxs
+ ROM_LOAD16_BYTE( "3.ic40", 0x000000, 0x080000, CRC(cbbbab5c) SHA1(ab8ae64b1f2acfab55ba7cbb173f3036a46001e6) )
+ ROM_LOAD16_BYTE( "4.ic41", 0x000001, 0x080000, CRC(18412fd8) SHA1(6907ce2739549519e1f3dcee2186f6add219a3c2) )
+
+ DISK_REGION( "ide:0:hdd:image" )
+ DISK_IMAGE_READONLY( "nb8018", 0, SHA1(cf8758bb2caaba6377b354694123ddec71a4f8e1) )
+
+ ROM_REGION( 0x040000, "gal", ROMREGION_ERASE00 )
+ ROM_LOAD( "palce16v8h.020", 0x000000, 0xbb2, BAD_DUMP CRC(c8e8605a) SHA1(02e43d9de73256e5c73d6f99834a23cef321d56b) )
+ROM_END
+
ROM_START( nichisel )
ROM_REGION( 0x40000, "maincpu", 0 ) // tmp68301 prg
ROM_LOAD16_BYTE( "2.ic3", 0x000000, 0x020000, CRC(fb84fc3e) SHA1(6b87c3516ceec59ec96012ea6a3d2fa9670a1cb3) )
@@ -916,9 +939,9 @@ GAME( 1998, nichidvd, 0, csplayh5, csplayh5, csplayh5_state, 0,
/* 15 */ GAME( 2000, fuudol, nichidvd, csplayh5, csplayh5, csplayh5_state, fuudol, ROT0, "Nichibutsu/eic", "Fuudol (Japan)", MACHINE_NOT_WORKING )
/* 16 */ GAME( 2000, nuretemi, nichidvd, csplayh5, csplayh5, csplayh5_state, nuretemi, ROT0, "Nichibutsu/Love Factory", "Nurete Mitaino... - Net Idol Hen (Japan)", MACHINE_NOT_WORKING )
/* 17 */ GAME( 2000, tsuwaku, nichidvd, csplayh5, csplayh5, csplayh5_state, tsuwaku, ROT0, "Nichibutsu/Love Factory/Just&Just", "Tsuugakuro no Yuuwaku (Japan)", MACHINE_NOT_WORKING )
-// 18 : Torarechattano - AV Kantoku Hen : Nichibutsu/Love Factory/M Friend
+/* 18 */ GAME( 2000, torarech, nichidvd, csplayh5, csplayh5, csplayh5_state, torarech, ROT0, "Nichibutsu/Love Factory/M Friend", "Torarechattano - AV Kantoku Hen (Japan)", MACHINE_NOT_WORKING )
/* sp */ GAME( 2000, nichisel, nichidvd, csplayh5, csplayh5, csplayh5_state, nichisel, ROT0, "Nichibutsu", "DVD Select (Japan)", MACHINE_NOT_WORKING )
// 2001
/* 19 */ GAME( 2001, konhaji, nichidvd, csplayh5, csplayh5, csplayh5_state, konhaji, ROT0, "Nichibutsu/Love Factory", "Konnano Hajimete! (Japan)", MACHINE_NOT_WORKING )
-// 20 : Uwasa no Deaikei Site : Nichibutsu/Love Factory/eic
+/* 20 */ // Uwasa no Deaikei Site : Nichibutsu/Love Factory/eic
diff --git a/src/mame/drivers/cswat.cpp b/src/mame/drivers/cswat.cpp
index de9db256c95..58d5874398c 100644
--- a/src/mame/drivers/cswat.cpp
+++ b/src/mame/drivers/cswat.cpp
@@ -256,7 +256,7 @@ void cswat_state::machine_start()
static MACHINE_CONFIG_START( cswat )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M6809E, XTAL_18_432MHz/3/4) // HD68A09EP, 1.5MHz?
+ MCFG_CPU_ADD("maincpu", MC6809E, XTAL_18_432MHz/3/4) // HD68A09EP, 1.5MHz?
MCFG_CPU_PROGRAM_MAP(cswat_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", cswat_state, irq0_line_assert)
MCFG_CPU_PERIODIC_INT_DRIVER(cswat_state, nmi_handler, 300) // ?
diff --git a/src/mame/drivers/cubo.cpp b/src/mame/drivers/cubo.cpp
index 16dc1625f2c..bc80310d5ff 100644
--- a/src/mame/drivers/cubo.cpp
+++ b/src/mame/drivers/cubo.cpp
@@ -1193,7 +1193,7 @@ void cubo_state::chip_ram_w8_hack(offs_t byteoffs, uint8_t data)
void cubo_state::cndypuzl_input_hack()
{
- if (m_maincpu->pc < m_chip_ram.bytes())
+ if (m_maincpu->pc() < m_chip_ram.bytes())
{
uint32_t r_A5 = m_maincpu->state_int(M68K_A5);
chip_ram_w(r_A5 - 0x7ebe, 0x0000);
@@ -1208,7 +1208,7 @@ DRIVER_INIT_MEMBER( cubo_state, cndypuzl )
void cubo_state::haremchl_input_hack()
{
- if (m_maincpu->pc < m_chip_ram.bytes())
+ if (m_maincpu->pc() < m_chip_ram.bytes())
{
uint32_t r_A5 = m_maincpu->state_int(M68K_A5);
uint32_t r_A2 = (chip_ram_r(r_A5 - 0x7f00 + 0) << 16) | (chip_ram_r(r_A5 - 0x7f00 + 2));
@@ -1224,7 +1224,7 @@ DRIVER_INIT_MEMBER( cubo_state, haremchl )
void cubo_state::lsrquiz_input_hack()
{
- if (m_maincpu->pc < m_chip_ram.bytes())
+ if (m_maincpu->pc() < m_chip_ram.bytes())
{
uint32_t r_A5 = m_maincpu->state_int(M68K_A5);
uint32_t r_A2 = (chip_ram_r(r_A5 - 0x7fe0 + 0) << 16) | (chip_ram_r(r_A5 - 0x7fe0 + 2));
@@ -1241,7 +1241,7 @@ DRIVER_INIT_MEMBER( cubo_state, lsrquiz )
/* The hack isn't working if you exit the test mode with P1 button 2 ! */
void cubo_state::lsrquiz2_input_hack()
{
- if (m_maincpu->pc < m_chip_ram.bytes())
+ if (m_maincpu->pc() < m_chip_ram.bytes())
{
uint32_t r_A5 = m_maincpu->state_int(M68K_A5);
uint32_t r_A2 = (chip_ram_r(r_A5 - 0x7fdc + 0) << 16) | (chip_ram_r(r_A5 - 0x7fdc + 2));
@@ -1257,7 +1257,7 @@ DRIVER_INIT_MEMBER( cubo_state, lsrquiz2 )
void cubo_state::lasstixx_input_hack()
{
- if (m_maincpu->pc < m_chip_ram.bytes())
+ if (m_maincpu->pc() < m_chip_ram.bytes())
{
uint32_t r_A5 = m_maincpu->state_int(M68K_A5);
uint32_t r_A2 = (chip_ram_r(r_A5 - 0x7fa2 + 0) << 16) | (chip_ram_r(r_A5 - 0x7fa2 + 2));
@@ -1273,7 +1273,7 @@ DRIVER_INIT_MEMBER(cubo_state, lasstixx)
void cubo_state::mgnumber_input_hack()
{
- if (m_maincpu->pc < m_chip_ram.bytes())
+ if (m_maincpu->pc() < m_chip_ram.bytes())
{
uint32_t r_A5 = m_maincpu->state_int(M68K_A5);
chip_ram_w(r_A5 - 0x7ed8, 0x0000);
@@ -1288,7 +1288,7 @@ DRIVER_INIT_MEMBER( cubo_state, mgnumber )
void cubo_state::mgprem11_input_hack()
{
- if (m_maincpu->pc < m_chip_ram.bytes())
+ if (m_maincpu->pc() < m_chip_ram.bytes())
{
uint32_t r_A5 = m_maincpu->state_int(M68K_A5);
chip_ram_w8_hack(r_A5 - 0x7eca, 0x00);
diff --git a/src/mame/drivers/cvs.cpp b/src/mame/drivers/cvs.cpp
index 8581b6b4a36..2c65f6b02a2 100644
--- a/src/mame/drivers/cvs.cpp
+++ b/src/mame/drivers/cvs.cpp
@@ -1572,7 +1572,7 @@ DRIVER_INIT_MEMBER(cvs_state,hunchbaka)
/* data lines D2 and D5 swapped */
for (offs = 0; offs < 0x7400; offs++)
- ROM[offs] = BITSWAP8(ROM[offs],7,6,2,4,3,5,1,0);
+ ROM[offs] = bitswap<8>(ROM[offs],7,6,2,4,3,5,1,0);
}
@@ -1638,7 +1638,7 @@ DRIVER_INIT_MEMBER(cvs_state,raiders)
/* data lines D1 and D6 swapped */
for (offs = 0; offs < 0x7400; offs++)
- ROM[offs] = BITSWAP8(ROM[offs],7,1,5,4,3,2,6,0);
+ ROM[offs] = bitswap<8>(ROM[offs],7,1,5,4,3,2,6,0);
/* patch out protection */
ROM[0x010a] = 0xc0;
diff --git a/src/mame/drivers/cybertnk.cpp b/src/mame/drivers/cybertnk.cpp
index 27893cc5a88..666695fac32 100644
--- a/src/mame/drivers/cybertnk.cpp
+++ b/src/mame/drivers/cybertnk.cpp
@@ -982,7 +982,7 @@ DRIVER_INIT_MEMBER(cybertnk_state,cybertnk)
// reorder the data to simplify sprite drawing
// we draw 8 pixels at a time, each each nibble contains a pixel, however the original order of 32-bits (8 pixels)
// is along the lines of 04 15 26 37 which is awkward to use
- spr[x] = BITSWAP32(spr[x], 27,26,25,24, 19,18,17,16, 11,10,9,8, 3,2,1,0, 31,30,29,28, 23,22,21,20, 15,14,13,12, 7,6,5,4 );
+ spr[x] = bitswap<32>(spr[x], 27,26,25,24, 19,18,17,16, 11,10,9,8, 3,2,1,0, 31,30,29,28, 23,22,21,20, 15,14,13,12, 7,6,5,4 );
}
}
diff --git a/src/mame/drivers/d400.cpp b/src/mame/drivers/d400.cpp
index d3d943d8eb0..4cd972bab2f 100644
--- a/src/mame/drivers/d400.cpp
+++ b/src/mame/drivers/d400.cpp
@@ -38,7 +38,7 @@ static INPUT_PORTS_START( d461 )
INPUT_PORTS_END
static MACHINE_CONFIG_START( d461 )
- MCFG_CPU_ADD("maincpu", M6809, 4'000'000)
+ MCFG_CPU_ADD("maincpu", MC6809E, 4'000'000) // HD68B09EP
MCFG_CPU_PROGRAM_MAP(mem_map)
MCFG_DEVICE_ADD("novram", X2210, 0)
diff --git a/src/mame/drivers/d6809.cpp b/src/mame/drivers/d6809.cpp
index 8f3a08878c6..c3f05f44b22 100644
--- a/src/mame/drivers/d6809.cpp
+++ b/src/mame/drivers/d6809.cpp
@@ -149,7 +149,7 @@ void d6809_state::machine_reset()
static MACHINE_CONFIG_START( d6809 )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M6809, XTAL_14_7456MHz / 8) // MC68B09EP
+ MCFG_CPU_ADD("maincpu", MC6809E, XTAL_14_7456MHz / 8) // MC68B09EP
MCFG_CPU_PROGRAM_MAP(mem_map)
MCFG_DEVICE_ADD("acia1", MOS6551, XTAL_14_7456MHz / 8) // uses Q clock
diff --git a/src/mame/drivers/dambustr.cpp b/src/mame/drivers/dambustr.cpp
index 90351597714..ca7c0047e6a 100644
--- a/src/mame/drivers/dambustr.cpp
+++ b/src/mame/drivers/dambustr.cpp
@@ -220,7 +220,7 @@ DRIVER_INIT_MEMBER(dambustr_state,dambustr)
// Bit swap addresses
for(i=0; i<4096*4; i++) {
- rom[i] = usr[BITSWAP16(i,15,14,13,12, 4,10,9,8,7,6,5,3,11,2,1,0)];
+ rom[i] = usr[bitswap<16>(i,15,14,13,12, 4,10,9,8,7,6,5,3,11,2,1,0)];
};
// Swap program ROMs
@@ -233,9 +233,9 @@ DRIVER_INIT_MEMBER(dambustr_state,dambustr)
// Bit swap in $1000-$1fff and $4000-$5fff
for(i=0; i<0x1000; i++) {
- rom[0x1000+i] = BITSWAP8(rom[0x1000+i],7,6,5,1,3,2,4,0);
- rom[0x4000+i] = BITSWAP8(rom[0x4000+i],7,6,5,1,3,2,4,0);
- rom[0x5000+i] = BITSWAP8(rom[0x5000+i],7,6,5,1,3,2,4,0);
+ rom[0x1000+i] = bitswap<8>(rom[0x1000+i],7,6,5,1,3,2,4,0);
+ rom[0x4000+i] = bitswap<8>(rom[0x4000+i],7,6,5,1,3,2,4,0);
+ rom[0x5000+i] = bitswap<8>(rom[0x5000+i],7,6,5,1,3,2,4,0);
};
// Swap graphics ROMs
diff --git a/src/mame/drivers/darkmist.cpp b/src/mame/drivers/darkmist.cpp
index de4202807d2..3329aae6f7b 100644
--- a/src/mame/drivers/darkmist.cpp
+++ b/src/mame/drivers/darkmist.cpp
@@ -336,7 +336,7 @@ void darkmist_state::decrypt_fgbgtiles(uint8_t* rom, int size)
w1 = (rom[i + 0*size/2] << 8) + rom[i + 1*size/2];
- w1 = BITSWAP16(w1, 9,14,7,2, 6,8,3,15, 10,13,5,12, 0,11,4,1);
+ w1 = bitswap<16>(w1, 9,14,7,2, 6,8,3,15, 10,13,5,12, 0,11,4,1);
buf[i + 0*size/2] = w1 >> 8;
buf[i + 1*size/2] = w1 & 0xff;
@@ -345,7 +345,7 @@ void darkmist_state::decrypt_fgbgtiles(uint8_t* rom, int size)
/* address lines */
for (int i = 0;i < size;i++)
{
- rom[i] = buf[BITSWAP24(i,23,22,21,20,19,18,17,16,15,14,13, 5,4,3,2, 12,11,10,9,8, 1,0, 7,6)];
+ rom[i] = buf[bitswap<24>(i,23,22,21,20,19,18,17,16,15,14,13, 5,4,3,2, 12,11,10,9,8, 1,0, 7,6)];
}
}
@@ -368,7 +368,7 @@ void darkmist_state::decrypt_gfx()
w1 = (rom[i + 0*size/2] << 8) + rom[i + 1*size/2];
- w1 = BITSWAP16(w1, 9,14,7,2, 6,8,3,15, 10,13,5,12, 0,11,4,1);
+ w1 = bitswap<16>(w1, 9,14,7,2, 6,8,3,15, 10,13,5,12, 0,11,4,1);
buf[i + 0*size/2] = w1 >> 8;
buf[i + 1*size/2] = w1 & 0xff;
@@ -377,7 +377,7 @@ void darkmist_state::decrypt_gfx()
/* address lines */
for (i = 0;i < size;i++)
{
- rom[i] = buf[BITSWAP24(i,23,22,21,20,19,18,17,16,15,14,13,12, 3,2,1, 11,10,9,8, 0, 7,6,5,4)];
+ rom[i] = buf[bitswap<24>(i,23,22,21,20,19,18,17,16,15,14,13,12, 3,2,1, 11,10,9,8, 0, 7,6,5,4)];
}
decrypt_fgbgtiles(memregion("bg_gfx")->base(), memregion("bg_gfx")->bytes());
@@ -394,7 +394,7 @@ void darkmist_state::decrypt_gfx()
w1 = (rom[i + 0*size/2] << 8) + rom[i + 1*size/2];
- w1 = BITSWAP16(w1, 9,14,7,2, 6,8,3,15, 10,13,5,12, 0,11,4,1);
+ w1 = bitswap<16>(w1, 9,14,7,2, 6,8,3,15, 10,13,5,12, 0,11,4,1);
buf[i + 0*size/2] = w1 >> 8;
buf[i + 1*size/2] = w1 & 0xff;
@@ -403,7 +403,7 @@ void darkmist_state::decrypt_gfx()
/* address lines */
for (i = 0;i < size;i++)
{
- rom[i] = buf[BITSWAP24(i, 23,22,21,20,19,18,17,16,15,14, 12,11,10,9,8, 5,4,3, 13, 7,6, 1,0, 2)];
+ rom[i] = buf[bitswap<24>(i, 23,22,21,20,19,18,17,16,15,14, 12,11,10,9,8, 5,4,3, 13, 7,6, 1,0, 2)];
}
}
@@ -412,7 +412,7 @@ void darkmist_state::decrypt_snd()
uint8_t *ROM = memregion("t5182_z80")->base();
for (int i = 0x0000; i < 0x8000; i++)
- ROM[i] = BITSWAP8(ROM[i], 7, 1, 2, 3, 4, 5, 6, 0);
+ ROM[i] = bitswap<8>(ROM[i], 7, 1, 2, 3, 4, 5, 6, 0);
}
DRIVER_INIT_MEMBER(darkmist_state,darkmist)
@@ -441,8 +441,8 @@ DRIVER_INIT_MEMBER(darkmist_state,darkmist)
if((i & 0x220) != 0x200)
{
- p = BITSWAP8(p, 7,6,5,2,3,4,1,0);
- d = BITSWAP8(d, 7,6,5,2,3,4,1,0);
+ p = bitswap<8>(p, 7,6,5,2,3,4,1,0);
+ d = bitswap<8>(d, 7,6,5,2,3,4,1,0);
}
ROM[i] = d;
@@ -458,7 +458,7 @@ DRIVER_INIT_MEMBER(darkmist_state,darkmist)
for(i=0;i<len;i++)
{
- ROM[i]=buffer[BITSWAP24(i,23,22,21,20,19,18,17,16,7,6,5,4,3,15,14,13,12,9,8,2,1,11,10, 0)];
+ ROM[i]=buffer[bitswap<24>(i,23,22,21,20,19,18,17,16,7,6,5,4,3,15,14,13,12,9,8,2,1,11,10, 0)];
}
@@ -467,7 +467,7 @@ DRIVER_INIT_MEMBER(darkmist_state,darkmist)
memcpy( &buffer[0], ROM, len );
for(i=0;i<len;i++)
{
- ROM[i]=buffer[BITSWAP24(i,23,22,21,20,19,18,17,16,15 ,6,5,4,3,12,11,10,9,14,13,2,1,8,7 ,0 )];
+ ROM[i]=buffer[bitswap<24>(i,23,22,21,20,19,18,17,16,15 ,6,5,4,3,12,11,10,9,14,13,2,1,8,7 ,0 )];
}
}
diff --git a/src/mame/drivers/datum.cpp b/src/mame/drivers/datum.cpp
index 4525617cc4c..cdeafa1f3d9 100644
--- a/src/mame/drivers/datum.cpp
+++ b/src/mame/drivers/datum.cpp
@@ -161,7 +161,7 @@ WRITE8_MEMBER( datum_state::pa_w )
data ^= 0xff;
if (m_keydata > 3)
{
- output().set_digit_value(m_keydata, BITSWAP8(data & 0x7f, 7, 0, 5, 6, 4, 2, 1, 3));
+ output().set_digit_value(m_keydata, bitswap<8>(data & 0x7f, 7, 0, 5, 6, 4, 2, 1, 3));
m_keydata = 0;
}
@@ -171,7 +171,7 @@ WRITE8_MEMBER( datum_state::pa_w )
// select keyboard row, select a digit
WRITE8_MEMBER( datum_state::pb_w )
{
- m_keydata = BITSWAP8(data, 7, 6, 5, 4, 0, 1, 2, 3) & 15;
+ m_keydata = bitswap<8>(data, 7, 6, 5, 4, 0, 1, 2, 3) & 15;
return;
}
diff --git a/src/mame/drivers/dblewing.cpp b/src/mame/drivers/dblewing.cpp
index bf8a806d051..8ca06f27bb5 100644
--- a/src/mame/drivers/dblewing.cpp
+++ b/src/mame/drivers/dblewing.cpp
@@ -148,7 +148,7 @@ uint32_t dblewing_state::screen_update_dblewing(screen_device &screen, bitmap_in
READ16_MEMBER( dblewing_state::wf_protection_region_0_104_r )
{
int real_address = 0 + (offset *2);
- int deco146_addr = BITSWAP32(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
+ int deco146_addr = bitswap<32>(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
uint8_t cs = 0;
uint16_t data = m_deco104->read_data( deco146_addr, mem_mask, cs );
return data;
@@ -157,7 +157,7 @@ READ16_MEMBER( dblewing_state::wf_protection_region_0_104_r )
WRITE16_MEMBER( dblewing_state::wf_protection_region_0_104_w )
{
int real_address = 0 + (offset *2);
- int deco146_addr = BITSWAP32(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
+ int deco146_addr = bitswap<32>(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
uint8_t cs = 0;
m_deco104->write_data( space, deco146_addr, data, mem_mask, cs );
}
diff --git a/src/mame/drivers/dcheese.cpp b/src/mame/drivers/dcheese.cpp
index b31ee921a25..adc477ee864 100644
--- a/src/mame/drivers/dcheese.cpp
+++ b/src/mame/drivers/dcheese.cpp
@@ -119,7 +119,6 @@ WRITE16_MEMBER(dcheese_state::eeprom_control_w)
if (ACCESSING_BITS_0_7)
{
ioport("EEPROMOUT")->write(data, 0xff);
- machine().device<ticket_dispenser_device>("ticket")->write(space, 0, (data & 1) << 7);
}
}
@@ -257,6 +256,7 @@ static INPUT_PORTS_START( dcheese )
PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START( "EEPROMOUT" )
+ PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("ticket", ticket_dispenser_device, motor_w)
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
@@ -305,6 +305,7 @@ static INPUT_PORTS_START( lottof2 )
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START( "EEPROMOUT" )
+ PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("ticket", ticket_dispenser_device, motor_w)
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
@@ -355,6 +356,7 @@ static INPUT_PORTS_START( fredmem )
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START( "EEPROMOUT" )
+ PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("ticket", ticket_dispenser_device, motor_w)
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
diff --git a/src/mame/drivers/ddragon.cpp b/src/mame/drivers/ddragon.cpp
index 39f15cc31b6..9aad91084b6 100644
--- a/src/mame/drivers/ddragon.cpp
+++ b/src/mame/drivers/ddragon.cpp
@@ -231,7 +231,7 @@ WRITE8_MEMBER(darktowr_state::darktowr_mcu_bank_w)
if (offset == 0x1400 || offset == 0)
{
- uint8_t const value(BITSWAP8(data, 0, 1, 2, 3, 4, 5, 6, 7));
+ uint8_t const value(bitswap<8>(data, 0, 1, 2, 3, 4, 5, 6, 7));
m_mcu->pb_w(space, 0, value);
logerror("MCU PORT 1 -> %04x (from %04x)\n", value, data);
}
@@ -946,7 +946,7 @@ static MACHINE_CONFIG_START( ddragon )
MCFG_CPU_ADD("sub", HD63701, MAIN_CLOCK / 2) /* 6 MHz / 4 internally */
MCFG_CPU_PROGRAM_MAP(sub_map)
- MCFG_CPU_ADD("soundcpu", M6809, MAIN_CLOCK / 8) /* 1.5 MHz */
+ MCFG_CPU_ADD("soundcpu", MC6809, MAIN_CLOCK / 2) /* 6 MHz / 4 internally */
MCFG_CPU_PROGRAM_MAP(sound_map)
MCFG_QUANTUM_TIME(attotime::from_hz(60000)) /* heavy interleaving to sync up sprite<->main CPUs */
@@ -1009,14 +1009,14 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( ddragon6809 )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M6809, MAIN_CLOCK / 8) /* 1.5 MHz */
+ MCFG_CPU_ADD("maincpu", MC6809E, MAIN_CLOCK / 8) /* 1.5 MHz */
MCFG_CPU_PROGRAM_MAP(ddragon_map)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", ddragon_state, ddragon_scanline, "screen", 0, 1)
- MCFG_CPU_ADD("sub", M6809, MAIN_CLOCK / 8) /* 1.5 Mhz */
+ MCFG_CPU_ADD("sub", MC6809E, MAIN_CLOCK / 8) /* 1.5 Mhz */
MCFG_CPU_PROGRAM_MAP(sub_map)
- MCFG_CPU_ADD("soundcpu", M6809, MAIN_CLOCK / 8) /* 1.5 MHz */
+ MCFG_CPU_ADD("soundcpu", MC6809E, MAIN_CLOCK / 8) /* 1.5 MHz */
MCFG_CPU_PROGRAM_MAP(sound_map)
MCFG_QUANTUM_TIME(attotime::from_hz(60000)) /* heavy interleaving to sync up sprite<->main CPUs */
@@ -2116,27 +2116,27 @@ DRIVER_INIT_MEMBER(toffy_state, toffy)
rom = memregion("maincpu")->base();
length = memregion("maincpu")->bytes();
for (i = 0; i < length; i++)
- rom[i] = BITSWAP8(rom[i], 6,7,5,4,3,2,1,0);
+ rom[i] = bitswap<8>(rom[i], 6,7,5,4,3,2,1,0);
/* and the fg gfx ... */
rom = memregion("gfx1")->base();
length = memregion("gfx1")->bytes();
for (i = 0; i < length; i++)
- rom[i] = BITSWAP8(rom[i], 7,6,5,3,4,2,1,0);
+ rom[i] = bitswap<8>(rom[i], 7,6,5,3,4,2,1,0);
/* and the sprites gfx */
rom = memregion("gfx2")->base();
length = memregion("gfx2")->bytes();
for (i = 0; i < length; i++)
- rom[i] = BITSWAP8(rom[i], 7,6,5,4,3,2,0,1);
+ rom[i] = bitswap<8>(rom[i], 7,6,5,4,3,2,0,1);
/* and the bg gfx */
rom = memregion("gfx3")->base();
length = memregion("gfx3")->bytes();
for (i = 0; i < length / 2; i++)
{
- rom[i + 0*length/2] = BITSWAP8(rom[i + 0*length/2], 7,6,1,4,3,2,5,0);
- rom[i + 1*length/2] = BITSWAP8(rom[i + 1*length/2], 7,6,2,4,3,5,1,0);
+ rom[i + 0*length/2] = bitswap<8>(rom[i + 0*length/2], 7,6,1,4,3,2,5,0);
+ rom[i + 1*length/2] = bitswap<8>(rom[i + 1*length/2], 7,6,2,4,3,5,1,0);
}
/* should the sound rom be bitswapped too? */
diff --git a/src/mame/drivers/ddribble.cpp b/src/mame/drivers/ddribble.cpp
index 89e9e55e985..b1c62fd855b 100644
--- a/src/mame/drivers/ddribble.cpp
+++ b/src/mame/drivers/ddribble.cpp
@@ -259,15 +259,15 @@ void ddribble_state::machine_reset()
static MACHINE_CONFIG_START( ddribble )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M6809, XTAL_18_432MHz/12) /* verified on pcb */
+ MCFG_CPU_ADD("maincpu", MC6809E, XTAL_18_432MHz/12) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(cpu0_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", ddribble_state, ddribble_interrupt_0)
- MCFG_CPU_ADD("cpu1", M6809, XTAL_18_432MHz/12) /* verified on pcb */
+ MCFG_CPU_ADD("cpu1", MC6809E, XTAL_18_432MHz/12) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(cpu1_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", ddribble_state, ddribble_interrupt_1)
- MCFG_CPU_ADD("cpu2", M6809, XTAL_18_432MHz/12) /* verified on pcb */
+ MCFG_CPU_ADD("cpu2", MC6809E, XTAL_18_432MHz/12) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(cpu2_map)
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* we need heavy synch */
diff --git a/src/mame/drivers/de_2.cpp b/src/mame/drivers/de_2.cpp
index 648cfdf89a4..1a458e877fa 100644
--- a/src/mame/drivers/de_2.cpp
+++ b/src/mame/drivers/de_2.cpp
@@ -3,8 +3,8 @@
/*
DataEast/Sega Version 1 and 2
- Main CPU: 6808 @ 4MHz
- Audio CPU: 68B09E @ 8MHz (internally divided by 4)
+ Main CPU: 6808 @ 4MHz (internally divided by 4)
+ Audio CPU: 68B09E @ 2MHz
Audio: YM2151 @ 3.58MHz, MSM5205 @ 384kHz
*/
@@ -288,7 +288,7 @@ WRITE8_MEMBER( de_2_state::dig1_w )
m_segment2 |= 0x30000;
if ((m_segment2 & 0x70000) == 0x30000)
{
- output().set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 11, 15, 12, 10, 8, 14, 13, 9, 7, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(m_strobe+16, bitswap<16>(m_segment2, 11, 15, 12, 10, 8, 14, 13, 9, 7, 6, 5, 4, 3, 2, 1, 0));
m_segment2 |= 0x40000;
}
}
@@ -299,7 +299,7 @@ WRITE8_MEMBER( de_2_state::type2alpha3_dig1_w )
m_segment2 |= 0x20000;
if ((m_segment2 & 0x70000) == 0x30000)
{
- output().set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 11, 15, 12, 10, 8, 14, 13, 9, 7, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(m_strobe+16, bitswap<16>(m_segment2, 11, 15, 12, 10, 8, 14, 13, 9, 7, 6, 5, 4, 3, 2, 1, 0));
m_segment2 |= 0x40000;
}
}
@@ -310,7 +310,7 @@ WRITE8_MEMBER( de_2_state::alpha3_dig1_w )
m_segment2 |= 0x20000;
if ((m_segment2 & 0x70000) == 0x30000)
{
- output().set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(m_strobe+16, bitswap<16>(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
m_segment2 |= 0x40000;
}
}
@@ -332,7 +332,7 @@ WRITE8_MEMBER( de_2_state::pia2c_pa_w )
m_segment1 |= 0x10000;
if ((m_segment1 & 0x70000) == 0x30000)
{
- output().set_digit_value(m_strobe, BITSWAP16(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(m_strobe, bitswap<16>(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
m_segment1 |= 0x40000;
}
}
@@ -343,7 +343,7 @@ WRITE8_MEMBER( de_2_state::pia2c_pb_w )
m_segment1 |= 0x20000;
if ((m_segment1 & 0x70000) == 0x30000)
{
- output().set_digit_value(m_strobe, BITSWAP16(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(m_strobe, bitswap<16>(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
m_segment1 |= 0x40000;
}
}
@@ -383,7 +383,7 @@ WRITE8_MEMBER( de_2_state::type2alpha3_pia34_pa_w )
m_segment2 |= 0x10000;
if ((m_segment2 & 0x70000) == 0x30000)
{
- output().set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(m_strobe+16, bitswap<16>(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
m_segment2 |= 0x40000;
}
}
@@ -394,7 +394,7 @@ WRITE8_MEMBER( de_2_state::alpha3_pia34_pa_w )
m_segment2 |= 0x10000;
if ((m_segment2 & 0x70000) == 0x30000)
{
- output().set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 11, 15, 12, 10, 8, 14, 13, 9, 7, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(m_strobe+16, bitswap<16>(m_segment2, 11, 15, 12, 10, 8, 14, 13, 9, 7, 6, 5, 4, 3, 2, 1, 0));
m_segment2 |= 0x40000;
}
}
@@ -518,9 +518,26 @@ WRITE8_MEMBER(de_2_state::lamps_w)
}
+static MACHINE_CONFIG_START( de_bg_audio )
+ /* sound CPU */
+ MCFG_CPU_ADD("audiocpu", MC6809E, XTAL_8MHz / 4) // MC68B09E
+ MCFG_CPU_PROGRAM_MAP(de_2_audio_map)
+
+ MCFG_SPEAKER_STANDARD_MONO("bg")
+
+ MCFG_YM2151_ADD("ym2151", XTAL_3_579545MHz)
+ MCFG_YM2151_IRQ_HANDLER(WRITELINE(de_2_state, ym2151_irq_w))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50)
+
+ MCFG_SOUND_ADD("msm5205", MSM5205, XTAL_384kHz)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(de_2_state, msm5205_irq_w))
+ MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50)
+MACHINE_CONFIG_END
+
static MACHINE_CONFIG_START( de_type1 )
/* basic machine hardware */
- MCFG_DECOCPU_TYPE1_ADD("decocpu",XTAL_8MHz / 2, ":maincpu")
+ MCFG_DECOCPU_TYPE1_ADD("decocpu", XTAL_8MHz / 2, ":maincpu")
MCFG_DECOCPU_DISPLAY(READ8(de_2_state,display_r),WRITE8(de_2_state,display_w))
MCFG_DECOCPU_SOUNDLATCH(WRITE8(de_2_state,sound_w))
MCFG_DECOCPU_SWITCH(READ8(de_2_state,switch_r),WRITE8(de_2_state,switch_w))
@@ -530,25 +547,13 @@ static MACHINE_CONFIG_START( de_type1 )
/* Video */
MCFG_DEFAULT_LAYOUT(layout_de2)
- MCFG_FRAGMENT_ADD( genpin_audio )
-
- /* sound CPU */
- MCFG_CPU_ADD("audiocpu", M6809E, 8000000) // MC68B09E
- MCFG_CPU_PROGRAM_MAP(de_2_audio_map)
-
- MCFG_SPEAKER_STANDARD_MONO("bg")
- MCFG_YM2151_ADD("ym2151", 3580000)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE(de_2_state, ym2151_irq_w))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50)
- MCFG_SOUND_ADD("msm5205", MSM5205, 384000)
- MCFG_MSM5205_VCLK_CB(WRITELINE(de_2_state, msm5205_irq_w))
- MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50)
+ MCFG_FRAGMENT_ADD(genpin_audio)
+ MCFG_FRAGMENT_ADD(de_bg_audio)
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( de_type2 )
/* basic machine hardware */
- MCFG_DECOCPU_TYPE2_ADD("decocpu",XTAL_8MHz / 2, ":maincpu")
+ MCFG_DECOCPU_TYPE2_ADD("decocpu", XTAL_8MHz / 2, ":maincpu")
MCFG_DECOCPU_DISPLAY(READ8(de_2_state,display_r),WRITE8(de_2_state,display_w))
MCFG_DECOCPU_SOUNDLATCH(WRITE8(de_2_state,sound_w))
MCFG_DECOCPU_SWITCH(READ8(de_2_state,switch_r),WRITE8(de_2_state,switch_w))
@@ -558,25 +563,13 @@ static MACHINE_CONFIG_START( de_type2 )
/* Video */
MCFG_DEFAULT_LAYOUT(layout_de2)
- MCFG_FRAGMENT_ADD( genpin_audio )
-
- /* sound CPU */
- MCFG_CPU_ADD("audiocpu", M6809E, 8000000) // MC68B09E
- MCFG_CPU_PROGRAM_MAP(de_2_audio_map)
-
- MCFG_SPEAKER_STANDARD_MONO("bg")
- MCFG_YM2151_ADD("ym2151", 3580000)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE(de_2_state, ym2151_irq_w))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50)
- MCFG_SOUND_ADD("msm5205", MSM5205, 384000)
- MCFG_MSM5205_VCLK_CB(WRITELINE(de_2_state, msm5205_irq_w))
- MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50)
+ MCFG_FRAGMENT_ADD(genpin_audio)
+ MCFG_FRAGMENT_ADD(de_bg_audio)
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( de_type2_alpha3 )
/* basic machine hardware */
- MCFG_DECOCPU_TYPE2_ADD("decocpu",XTAL_8MHz / 2, ":maincpu")
+ MCFG_DECOCPU_TYPE2_ADD("decocpu", XTAL_8MHz / 2, ":maincpu")
MCFG_DECOCPU_DISPLAY(READ8(de_2_state,display_r),WRITE8(de_2_state,type2alpha3_display_w))
MCFG_DECOCPU_SOUNDLATCH(WRITE8(de_2_state,sound_w))
MCFG_DECOCPU_SWITCH(READ8(de_2_state,switch_r),WRITE8(de_2_state,switch_w))
@@ -586,25 +579,13 @@ static MACHINE_CONFIG_START( de_type2_alpha3 )
/* Video */
MCFG_DEFAULT_LAYOUT(layout_de2a3)
- MCFG_FRAGMENT_ADD( genpin_audio )
-
- /* sound CPU */
- MCFG_CPU_ADD("audiocpu", M6809E, 8000000) // MC68B09E
- MCFG_CPU_PROGRAM_MAP(de_2_audio_map)
-
- MCFG_SPEAKER_STANDARD_MONO("bg")
- MCFG_YM2151_ADD("ym2151", 3580000)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE(de_2_state, ym2151_irq_w))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50)
- MCFG_SOUND_ADD("msm5205", MSM5205, 384000)
- MCFG_MSM5205_VCLK_CB(WRITELINE(de_2_state, msm5205_irq_w))
- MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50)
+ MCFG_FRAGMENT_ADD(genpin_audio)
+ MCFG_FRAGMENT_ADD(de_bg_audio)
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( de_type3 )
/* basic machine hardware */
- MCFG_DECOCPU_TYPE3_ADD("decocpu",XTAL_8MHz / 2, ":maincpu")
+ MCFG_DECOCPU_TYPE3_ADD("decocpu", XTAL_8MHz / 2, ":maincpu")
MCFG_DECOCPU_DISPLAY(READ8(de_2_state,display_r),WRITE8(de_2_state,alpha3_display_w))
MCFG_DECOCPU_SOUNDLATCH(WRITE8(de_2_state,sound_w))
MCFG_DECOCPU_SWITCH(READ8(de_2_state,switch_r),WRITE8(de_2_state,switch_w))
@@ -614,20 +595,8 @@ static MACHINE_CONFIG_START( de_type3 )
/* Video */
MCFG_DEFAULT_LAYOUT(layout_de2a3)
- MCFG_FRAGMENT_ADD( genpin_audio )
-
- /* sound CPU */
- MCFG_CPU_ADD("audiocpu", M6809E, 8000000) // MC68B09E
- MCFG_CPU_PROGRAM_MAP(de_2_audio_map)
-
- MCFG_SPEAKER_STANDARD_MONO("bg")
- MCFG_YM2151_ADD("ym2151", 3580000)
- MCFG_YM2151_IRQ_HANDLER(WRITELINE(de_2_state, ym2151_irq_w))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50)
- MCFG_SOUND_ADD("msm5205", MSM5205, 384000)
- MCFG_MSM5205_VCLK_CB(WRITELINE(de_2_state, msm5205_irq_w))
- MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50)
+ MCFG_FRAGMENT_ADD(genpin_audio)
+ MCFG_FRAGMENT_ADD(de_bg_audio)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/de_3.cpp b/src/mame/drivers/de_3.cpp
index 4086fab7d20..1101e44e18c 100644
--- a/src/mame/drivers/de_3.cpp
+++ b/src/mame/drivers/de_3.cpp
@@ -211,9 +211,9 @@ WRITE8_MEMBER( de_3_state::dig1_w )
// if ((m_segment2 & 0x70000) == 0x30000)
// {
// if(m_is_alpha3) // Alphanumeric type 2 uses 7 segment LEDs on the bottom row, type 3 uses 14 segment LEDs
-// output().set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+// output().set_digit_value(m_strobe+16, bitswap<16>(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
// else
-// output().set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 11, 15, 12, 10, 8, 14, 13, 9, 7, 6, 5, 4, 3, 2, 1, 0));
+// output().set_digit_value(m_strobe+16, bitswap<16>(m_segment2, 11, 15, 12, 10, 8, 14, 13, 9, 7, 6, 5, 4, 3, 2, 1, 0));
// m_segment2 |= 0x40000;
// }
}
@@ -246,7 +246,7 @@ WRITE8_MEMBER( de_3_state::pia2c_pa_w )
// m_segment1 |= 0x10000;
// if ((m_segment1 & 0x70000) == 0x30000)
// {
-// output().set_digit_value(m_strobe, BITSWAP16(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+// output().set_digit_value(m_strobe, bitswap<16>(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
// m_segment1 |= 0x40000;
// }
}
@@ -278,7 +278,7 @@ WRITE8_MEMBER( de_3_state::pia2c_pb_w )
// m_segment1 |= 0x20000;
// if ((m_segment1 & 0x70000) == 0x30000)
// {
-// output().set_digit_value(m_strobe, BITSWAP16(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+// output().set_digit_value(m_strobe, bitswap<16>(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
// m_segment1 |= 0x40000;
// }
}
@@ -312,7 +312,7 @@ WRITE8_MEMBER( de_3_state::pia34_pa_w )
// m_segment2 |= 0x10000;
// if ((m_segment2 & 0x70000) == 0x30000)
// {
-// output().set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+// output().set_digit_value(m_strobe+16, bitswap<16>(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
// m_segment2 |= 0x40000;
// }
}
diff --git a/src/mame/drivers/dec8.cpp b/src/mame/drivers/dec8.cpp
index be1d52c24f3..986bcb68b2c 100644
--- a/src/mame/drivers/dec8.cpp
+++ b/src/mame/drivers/dec8.cpp
@@ -1957,10 +1957,10 @@ void dec8_state::machine_reset()
static MACHINE_CONFIG_START( lastmisn )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M6809, 2000000)
+ MCFG_CPU_ADD("maincpu", MC6809E, 2000000)
MCFG_CPU_PROGRAM_MAP(lastmisn_map)
- MCFG_CPU_ADD("sub", M6809, 2000000)
+ MCFG_CPU_ADD("sub", MC6809E, 2000000)
MCFG_CPU_PROGRAM_MAP(lastmisn_sub_map)
MCFG_CPU_ADD("audiocpu", M6502, 1500000)
@@ -2010,10 +2010,10 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( shackled )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M6809, 2000000)
+ MCFG_CPU_ADD("maincpu", MC6809E, 2000000)
MCFG_CPU_PROGRAM_MAP(shackled_map)
- MCFG_CPU_ADD("sub", M6809, 2000000)
+ MCFG_CPU_ADD("sub", MC6809E, 2000000)
MCFG_CPU_PROGRAM_MAP(shackled_sub_map)
MCFG_CPU_ADD("audiocpu", M6502, 1500000)
@@ -2233,10 +2233,10 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( csilver )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M6809, XTAL_12MHz/8) /* verified on pcb */
+ MCFG_CPU_ADD("maincpu", MC6809E, XTAL_12MHz/8) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(csilver_map)
- MCFG_CPU_ADD("sub", M6809, XTAL_12MHz/8) /* verified on pcb */
+ MCFG_CPU_ADD("sub", MC6809E, XTAL_12MHz/8) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(csilver_sub_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", dec8_state, nmi_line_pulse)
@@ -2350,7 +2350,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( srdarwin )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M6809,2000000) /* MC68A09EP */
+ MCFG_CPU_ADD("maincpu", MC6809E, 2000000) /* MC68A09EP */
MCFG_CPU_PROGRAM_MAP(srdarwin_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", dec8_state, nmi_line_pulse)
@@ -2400,7 +2400,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( cobracom )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M6809, 2000000)
+ MCFG_CPU_ADD("maincpu", MC6809E, 2000000)
MCFG_CPU_PROGRAM_MAP(cobra_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", dec8_state, nmi_line_pulse)
diff --git a/src/mame/drivers/deco156.cpp b/src/mame/drivers/deco156.cpp
index 3cb1cddf1dd..7464130722c 100644
--- a/src/mame/drivers/deco156.cpp
+++ b/src/mame/drivers/deco156.cpp
@@ -647,7 +647,7 @@ void deco156_state::descramble_sound( const char *tag )
{
uint32_t addr;
- addr = BITSWAP24 (x,23,22,21,0, 20,
+ addr = bitswap<24> (x,23,22,21,0, 20,
19,18,17,16,
15,14,13,12,
11,10,9, 8,
diff --git a/src/mame/drivers/deco32.cpp b/src/mame/drivers/deco32.cpp
index c0f59bd8bdb..a561781860e 100644
--- a/src/mame/drivers/deco32.cpp
+++ b/src/mame/drivers/deco32.cpp
@@ -670,7 +670,7 @@ ADDRESS_MAP_END
READ16_MEMBER( deco32_state::ioprot_r )
{
offs_t real_address = 0 + (offset *2);
- offs_t deco146_addr = BITSWAP32(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
+ offs_t deco146_addr = bitswap<32>(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
uint8_t cs = 0;
return m_ioprot->read_data( deco146_addr, mem_mask, cs );
@@ -679,7 +679,7 @@ READ16_MEMBER( deco32_state::ioprot_r )
WRITE16_MEMBER( deco32_state::ioprot_w )
{
offs_t real_address = 0 + (offset *2);
- offs_t deco146_addr = BITSWAP32(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
+ offs_t deco146_addr = bitswap<32>(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
uint8_t cs = 0;
m_ioprot->write_data( space, deco146_addr, data, mem_mask, cs );
@@ -760,7 +760,7 @@ WRITE_LINE_MEMBER( nslasher_state::tattass_sound_irq_w )
{
uint8_t data = m_ioprot->soundlatch_r(machine().dummy_space(), 0);
// Swap bits 0 and 3 to correct for design error from BSMT schematic
- data = BITSWAP8(data, 7, 6, 5, 4, 0, 2, 1, 3);
+ data = bitswap<8>(data, 7, 6, 5, 4, 0, 2, 1, 3);
m_decobsmt->bsmt_comms_w(machine().dummy_space(), 0, data);
}
}
diff --git a/src/mame/drivers/deco_mlc.cpp b/src/mame/drivers/deco_mlc.cpp
index f828fa999ef..3a6051e097b 100644
--- a/src/mame/drivers/deco_mlc.cpp
+++ b/src/mame/drivers/deco_mlc.cpp
@@ -273,7 +273,7 @@ WRITE32_MEMBER( deco_mlc_state::mlc_spriteram_w )
READ16_MEMBER( deco_mlc_state::sh96_protection_region_0_146_r )
{
int real_address = 0 + (offset *2);
- int deco146_addr = BITSWAP32(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
+ int deco146_addr = bitswap<32>(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
uint8_t cs = 0;
uint16_t data = m_deco146->read_data( deco146_addr, mem_mask, cs );
return data;
@@ -282,7 +282,7 @@ READ16_MEMBER( deco_mlc_state::sh96_protection_region_0_146_r )
WRITE16_MEMBER( deco_mlc_state::sh96_protection_region_0_146_w )
{
int real_address = 0 + (offset *2);
- int deco146_addr = BITSWAP32(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
+ int deco146_addr = bitswap<32>(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
uint8_t cs = 0;
m_deco146->write_data( space, deco146_addr, data, mem_mask, cs );
}
@@ -887,7 +887,7 @@ void deco_mlc_state::descramble_sound( )
{
uint32_t addr;
- addr = BITSWAP24 (x,23,22,21,0, 20,
+ addr = bitswap<24> (x,23,22,21,0, 20,
19,18,17,16,
15,14,13,12,
11,10,9, 8,
diff --git a/src/mame/drivers/decocass.cpp b/src/mame/drivers/decocass.cpp
index dbe3192353c..dbed82ba253 100644
--- a/src/mame/drivers/decocass.cpp
+++ b/src/mame/drivers/decocass.cpp
@@ -945,7 +945,7 @@ PALETTE_INIT_MEMBER(decocass_state, decocass)
for (i = 0; i < 32; i++)
{
palette.set_pen_indirect(i, i);
- palette.set_pen_indirect(32+i, BITSWAP8(i, 7, 6, 5, 4, 3, 1, 2, 0));
+ palette.set_pen_indirect(32+i, bitswap<8>(i, 7, 6, 5, 4, 3, 1, 2, 0));
}
}
diff --git a/src/mame/drivers/didact.cpp b/src/mame/drivers/didact.cpp
index 7258d24df52..917350d8bd7 100644
--- a/src/mame/drivers/didact.cpp
+++ b/src/mame/drivers/didact.cpp
@@ -268,7 +268,7 @@ WRITE8_MEMBER( md6802_state::pia2_kbB_w )
// LOG("--->%s(%02x)\n", FUNCNAME, data);
/* Store the segment pattern but do not lit up the digit here, done by pulling the correct cathode low on Port A */
- m_segments = BITSWAP8(data, 0, 4, 5, 3, 2, 1, 7, 6);
+ m_segments = bitswap<8>(data, 0, 4, 5, 3, 2, 1, 7, 6);
}
WRITE_LINE_MEMBER( md6802_state::pia2_ca2_w )
diff --git a/src/mame/drivers/dietgo.cpp b/src/mame/drivers/dietgo.cpp
index 8321a56ccd7..fb71b277e68 100644
--- a/src/mame/drivers/dietgo.cpp
+++ b/src/mame/drivers/dietgo.cpp
@@ -37,7 +37,7 @@ PAL16R6A 11H
READ16_MEMBER( dietgo_state::dietgo_protection_region_0_104_r )
{
int real_address = 0 + (offset *2);
- int deco146_addr = BITSWAP32(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
+ int deco146_addr = bitswap<32>(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
uint8_t cs = 0;
uint16_t data = m_deco104->read_data( deco146_addr, mem_mask, cs );
return data;
@@ -46,7 +46,7 @@ READ16_MEMBER( dietgo_state::dietgo_protection_region_0_104_r )
WRITE16_MEMBER( dietgo_state::dietgo_protection_region_0_104_w )
{
int real_address = 0 + (offset *2);
- int deco146_addr = BITSWAP32(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
+ int deco146_addr = bitswap<32>(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
uint8_t cs = 0;
m_deco104->write_data( space, deco146_addr, data, mem_mask, cs );
}
diff --git a/src/mame/drivers/digel804.cpp b/src/mame/drivers/digel804.cpp
index 95378832eec..cd52cf43741 100644
--- a/src/mame/drivers/digel804.cpp
+++ b/src/mame/drivers/digel804.cpp
@@ -315,7 +315,7 @@ READ8_MEMBER( digel804_state::ip46 ) // keypad read
logerror("Digel804: returning %02X for port 46 keypad read\n", kbd);
#endif
- return BITSWAP8(kbd,7,6,5,4,1,0,3,2); // verified from schematics
+ return bitswap<8>(kbd,7,6,5,4,1,0,3,2); // verified from schematics
}
WRITE8_MEMBER( digel804_state::op46 )
diff --git a/src/mame/drivers/divebomb.cpp b/src/mame/drivers/divebomb.cpp
index bb1bcfd65e1..0668f081a11 100644
--- a/src/mame/drivers/divebomb.cpp
+++ b/src/mame/drivers/divebomb.cpp
@@ -251,7 +251,7 @@ ADDRESS_MAP_END
WRITE8_MEMBER(divebomb_state::rozcpu_bank_w)
{
- uint32_t bank = BITSWAP8(data, 4, 5, 6, 7, 3, 2, 1, 0) >> 4;
+ uint32_t bank = bitswap<8>(data, 4, 5, 6, 7, 3, 2, 1, 0) >> 4;
m_bank1->set_entry(bank);
if (data & 0x0f)
diff --git a/src/mame/drivers/dkong.cpp b/src/mame/drivers/dkong.cpp
index 06348358273..53e95b3cffd 100644
--- a/src/mame/drivers/dkong.cpp
+++ b/src/mame/drivers/dkong.cpp
@@ -1655,8 +1655,8 @@ void dkong_state::braze_decrypt_rom(uint8_t *dest)
{
oldbyte = ROM[mem];
- newmem = ((BITSWAP8((mem >> 8),7,2,3,1,0,6,4,5))<<8) | (mem & 0xff);
- newbyte = BITSWAP8(oldbyte, 1,4,5,7,6,0,3,2);
+ newmem = ((bitswap<8>((mem >> 8),7,2,3,1,0,6,4,5))<<8) | (mem & 0xff);
+ newbyte = bitswap<8>(oldbyte, 1,4,5,7,6,0,3,2);
dest[newmem] = newbyte;
}
@@ -3248,7 +3248,7 @@ void dkong_state::drakton_decrypt_rom(uint8_t mod, int offs, int *bs)
PAL10H8 driven by the counter. */
newbyte = (oldbyte & mod) | (~oldbyte & ~mod);
- newbyte = BITSWAP8(newbyte, bs[0], bs[1], bs[2], bs[3], bs[4], bs[5], bs[6], bs[7]);
+ newbyte = bitswap<8>(newbyte, bs[0], bs[1], bs[2], bs[3], bs[4], bs[5], bs[6], bs[7]);
ROM[mem + offs] = newbyte;
}
diff --git a/src/mame/drivers/dreambal.cpp b/src/mame/drivers/dreambal.cpp
index 3e0e5714571..ef4899e0096 100644
--- a/src/mame/drivers/dreambal.cpp
+++ b/src/mame/drivers/dreambal.cpp
@@ -96,7 +96,7 @@ uint32_t dreambal_state::screen_update_dreambal(screen_device &screen, bitmap_in
READ16_MEMBER( dreambal_state::dreambal_protection_region_0_104_r )
{
int real_address = 0 + (offset *2);
- int deco146_addr = BITSWAP32(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
+ int deco146_addr = bitswap<32>(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
uint8_t cs = 0;
uint16_t data = m_deco104->read_data( deco146_addr, mem_mask, cs );
return data;
@@ -105,7 +105,7 @@ READ16_MEMBER( dreambal_state::dreambal_protection_region_0_104_r )
WRITE16_MEMBER( dreambal_state::dreambal_protection_region_0_104_w )
{
int real_address = 0 + (offset *2);
- int deco146_addr = BITSWAP32(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
+ int deco146_addr = bitswap<32>(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
uint8_t cs = 0;
m_deco104->write_data( space, deco146_addr, data, mem_mask, cs );
}
diff --git a/src/mame/drivers/dynax.cpp b/src/mame/drivers/dynax.cpp
index dc4ec3aef85..6d06ce33efe 100644
--- a/src/mame/drivers/dynax.cpp
+++ b/src/mame/drivers/dynax.cpp
@@ -317,9 +317,9 @@ void dynax_state::hnoridur_palette_update(offs_t offset)
{
int x = (m_palette_ram[256 * m_palbank + offset] << 8) + m_palette_ram[256 * m_palbank + offset + 16 * 256];
/* 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);
+ int r = bitswap<8>((x >> 0) & 0x1f, 7, 6, 5, 0, 1, 2, 3, 4);
+ int g = bitswap<8>((x >> 5) & 0x1f, 7, 6, 5, 0, 1, 2, 3, 4);
+ int b = bitswap<8>((x >> 10) & 0x1f, 7, 6, 5, 0, 1, 2, 3, 4);
m_palette->set_pen_color(256 * m_palbank + offset, pal5bit(r), pal5bit(g), pal5bit(b));
}
@@ -5345,7 +5345,7 @@ DRIVER_INIT_MEMBER(dynax_state,blktouch)
for (i = 0; i < 0x90000; i++)
{
- src[i] = BITSWAP8(src[i], 7, 6, 5, 3, 4, 2, 1, 0);
+ src[i] = bitswap<8>(src[i], 7, 6, 5, 3, 4, 2, 1, 0);
}
@@ -5353,7 +5353,7 @@ DRIVER_INIT_MEMBER(dynax_state,blktouch)
for (i = 0; i < 0xc0000; i++)
{
- src[i] = BITSWAP8(src[i], 7, 6, 5, 3, 4, 2, 1, 0);
+ src[i] = bitswap<8>(src[i], 7, 6, 5, 3, 4, 2, 1, 0);
}
}
@@ -5387,7 +5387,7 @@ DRIVER_INIT_MEMBER(dynax_state,maya)
std::vector<uint8_t> rom(0xc0000);
memcpy(&rom[0], gfx, 0xc0000);
for (i = 0; i < 0xc0000; i++)
- gfx[i] = rom[BITSWAP24(i, 23, 22, 21, 20, 19, 18, 14, 15, 16, 17, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)];
+ gfx[i] = rom[bitswap<24>(i, 23, 22, 21, 20, 19, 18, 14, 15, 16, 17, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)];
}
}
@@ -5404,7 +5404,7 @@ DRIVER_INIT_MEMBER(dynax_state,mayac)
std::vector<uint8_t> rom(0xc0000);
memcpy(&rom[0], gfx, 0xc0000);
for (i = 0; i < 0xc0000; i++)
- gfx[i] = rom[BITSWAP24(i, 23, 22, 21, 20, 19, 18, 17, 14, 16, 15, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)];
+ gfx[i] = rom[bitswap<24>(i, 23, 22, 21, 20, 19, 18, 17, 14, 16, 15, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)];
}
}
@@ -6324,7 +6324,7 @@ DRIVER_INIT_MEMBER(dynax_state,mjelct3)
memcpy(&rom1[0], rom, size);
for (i = 0; i < size; i++)
- rom[i] = BITSWAP8(rom1[BITSWAP24(i,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8, 1,6,5,4,3,2,7, 0)], 7,6, 1,4,3,2,5,0);
+ rom[i] = bitswap<8>(rom1[bitswap<24>(i,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8, 1,6,5,4,3,2,7, 0)], 7,6, 1,4,3,2,5,0);
}
DRIVER_INIT_MEMBER(dynax_state,mjelct3a)
diff --git a/src/mame/drivers/eacc.cpp b/src/mame/drivers/eacc.cpp
index ee95ce8c8e1..416d4fe79ad 100644
--- a/src/mame/drivers/eacc.cpp
+++ b/src/mame/drivers/eacc.cpp
@@ -218,7 +218,7 @@ WRITE8_MEMBER( eacc_state::eacc_segment_w )
{
for (i = 3; i < 7; i++)
if (BIT(m_digit, i))
- output().set_digit_value(i, BITSWAP8(data, 7, 0, 1, 4, 5, 6, 2, 3));
+ output().set_digit_value(i, bitswap<8>(data, 7, 0, 1, 4, 5, 6, 2, 3));
}
}
}
diff --git a/src/mame/drivers/ecoinf3.cpp b/src/mame/drivers/ecoinf3.cpp
index 65de23155e8..2a990dc2f3d 100644
--- a/src/mame/drivers/ecoinf3.cpp
+++ b/src/mame/drivers/ecoinf3.cpp
@@ -351,7 +351,7 @@ static const uint16_t ecoin_charset[]=
static uint32_t set_display(uint32_t segin)
{
- return BITSWAP32(segin, 31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,11,9,15,13,12,8,10,14,7,6,5,4,3,2,1,0);
+ return bitswap<32>(segin, 31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,11,9,15,13,12,8,10,14,7,6,5,4,3,2,1,0);
}
void ecoinf3_state::update_display()
diff --git a/src/mame/drivers/ecoinfr.cpp b/src/mame/drivers/ecoinfr.cpp
index c92704d99dc..c72a1260f24 100644
--- a/src/mame/drivers/ecoinfr.cpp
+++ b/src/mame/drivers/ecoinfr.cpp
@@ -323,7 +323,7 @@ WRITE8_MEMBER(ecoinfr_state::ec_port0d_out_cred_data_w)
{
if (m_credsel!=0xff)
{
- uint8_t bf7segdata = BITSWAP8(data,7,0,1,2,3,4,5,6);
+ uint8_t bf7segdata = bitswap<8>(data,7,0,1,2,3,4,5,6);
output().set_digit_value(m_credsel+8, bf7segdata);
}
}
@@ -336,7 +336,7 @@ WRITE8_MEMBER(ecoinfr_state::ec_port0f_out_bank_segdata_w)
{
if (m_banksel!=0xff)
{
- uint8_t bf7segdata = BITSWAP8(data,7,0,1,2,3,4,5,6);
+ uint8_t bf7segdata = bitswap<8>(data,7,0,1,2,3,4,5,6);
output().set_digit_value(m_banksel, bf7segdata);
}
}
diff --git a/src/mame/drivers/elwro800.cpp b/src/mame/drivers/elwro800.cpp
index db006dce814..43e2cc8adc9 100644
--- a/src/mame/drivers/elwro800.cpp
+++ b/src/mame/drivers/elwro800.cpp
@@ -129,7 +129,7 @@ void elwro800_state::elwro800jr_mmu_w(uint8_t data)
uint8_t cs;
uint8_t ls175;
- ls175 = BITSWAP8(data, 7, 6, 5, 4, 4, 5, 7, 6) & 0x0f;
+ ls175 = bitswap<8>(data, 7, 6, 5, 4, 4, 5, 7, 6) & 0x0f;
cs = prom[((0x0000 >> 10) | (ls175 << 6)) & 0x1ff];
if (!BIT(cs,0))
diff --git a/src/mame/drivers/enigma2.cpp b/src/mame/drivers/enigma2.cpp
index 7d979fed997..910adbadc02 100644
--- a/src/mame/drivers/enigma2.cpp
+++ b/src/mame/drivers/enigma2.cpp
@@ -401,7 +401,7 @@ WRITE8_MEMBER(enigma2_state::sound_data_w)
READ8_MEMBER(enigma2_state::sound_latch_r)
{
- return BITSWAP8(m_sound_latch,0,1,2,3,4,5,6,7);
+ return bitswap<8>(m_sound_latch,0,1,2,3,4,5,6,7);
}
@@ -700,7 +700,7 @@ DRIVER_INIT_MEMBER(enigma2_state,enigma2)
for(i = 0; i < 0x2000; i++)
{
- rom[i] = BITSWAP8(rom[i],4,5,6,0,7,1,3,2);
+ rom[i] = bitswap<8>(rom[i],4,5,6,0,7,1,3,2);
}
}
diff --git a/src/mame/drivers/enmirage.cpp b/src/mame/drivers/enmirage.cpp
index 1bec1447996..cd850283463 100644
--- a/src/mame/drivers/enmirage.cpp
+++ b/src/mame/drivers/enmirage.cpp
@@ -78,7 +78,7 @@ protected:
virtual void machine_reset() override;
virtual void video_start() override;
- required_device<m6809e_device> m_maincpu;
+ required_device<mc6809e_device> m_maincpu;
required_device<wd1772_device> m_fdc;
required_device<via6522_device> m_via;
@@ -208,7 +208,7 @@ WRITE8_MEMBER(enmirage_state::mirage_via_write_portb)
}
static MACHINE_CONFIG_START( mirage )
- MCFG_CPU_ADD("maincpu", M6809E, 4000000)
+ MCFG_CPU_ADD("maincpu", MC6809E, 2000000)
MCFG_CPU_PROGRAM_MAP(mirage_map)
MCFG_DEFAULT_LAYOUT( layout_mirage )
diff --git a/src/mame/drivers/epos.cpp b/src/mame/drivers/epos.cpp
index 7b8a0c24c1d..8f95c060b1d 100644
--- a/src/mame/drivers/epos.cpp
+++ b/src/mame/drivers/epos.cpp
@@ -740,19 +740,19 @@ DRIVER_INIT_MEMBER(epos_state,dealer)
/* Key 0 */
for (A = 0; A < 0x8000; A++)
- rom[A] = BITSWAP8(rom[A] ^ 0xbd, 2,6,4,0,5,7,1,3 );
+ rom[A] = bitswap<8>(rom[A] ^ 0xbd, 2,6,4,0,5,7,1,3 );
/* Key 1 */
for (A = 0; A < 0x8000; A++)
- rom[A + 0x10000] = BITSWAP8(rom[A], 7,5,4,6,3,2,1,0 );
+ rom[A + 0x10000] = bitswap<8>(rom[A], 7,5,4,6,3,2,1,0 );
/* Key 2 */
for (A = 0; A < 0x8000; A++)
- rom[A + 0x20000] = BITSWAP8(rom[A] ^ 1, 7,6,5,4,3,0,2,1 );
+ rom[A + 0x20000] = bitswap<8>(rom[A] ^ 1, 7,6,5,4,3,0,2,1 );
/* Key 3 */
for (A = 0; A < 0x8000; A++)
- rom[A + 0x30000] = BITSWAP8(rom[A] ^ 1, 7,5,4,6,3,0,2,1 );
+ rom[A + 0x30000] = bitswap<8>(rom[A] ^ 1, 7,5,4,6,3,0,2,1 );
/*
there is not enough data to determine key 3.
diff --git a/src/mame/drivers/esq1.cpp b/src/mame/drivers/esq1.cpp
index 600341203e9..9b975c7679a 100644
--- a/src/mame/drivers/esq1.cpp
+++ b/src/mame/drivers/esq1.cpp
@@ -57,6 +57,7 @@ TODO:
- Keyboard
- Analog filters and VCA on the back end of the 5503
- SQ-80 support (additional banking, FDC)
+ SQ-80 is totally broken now, jumping into unmapped memory
NOTES:
Commands from KPC are all 2 bytes
@@ -579,7 +580,7 @@ INPUT_CHANGED_MEMBER(esq1_state::key_stroke)
}
static MACHINE_CONFIG_START( esq1 )
- MCFG_CPU_ADD("maincpu", M6809E, 4000000) // how fast is it?
+ MCFG_CPU_ADD("maincpu", MC6809, XTAL_8MHz) // XTAL not directly attached to CPU
MCFG_CPU_PROGRAM_MAP(esq1_map)
MCFG_DEVICE_ADD("duart", SCN2681, XTAL_8MHz / 2)
diff --git a/src/mame/drivers/et3400.cpp b/src/mame/drivers/et3400.cpp
index e3d140c5c63..5d3553fa765 100644
--- a/src/mame/drivers/et3400.cpp
+++ b/src/mame/drivers/et3400.cpp
@@ -92,7 +92,7 @@ template<int digit>
WRITE8_MEMBER(et3400_state::led_w)
{
/* This computer sets each segment, one at a time. */
- uint8_t segdata = BITSWAP8(~data, 7, 0, 1, 2, 3, 4, 5, 6);
+ uint8_t segdata = bitswap<8>(~data, 7, 0, 1, 2, 3, 4, 5, 6);
output().set_digit_value(digit, segdata);
}
diff --git a/src/mame/drivers/ettrivia.cpp b/src/mame/drivers/ettrivia.cpp
index 494242b06f6..cc80a38ee3b 100644
--- a/src/mame/drivers/ettrivia.cpp
+++ b/src/mame/drivers/ettrivia.cpp
@@ -262,7 +262,7 @@ PALETTE_INIT_MEMBER(ettrivia_state, ettrivia)
bit1 = (color_prom[i+0x100] >> 1) & 0x01;
b = combine_2_weights(weights, bit0, bit1);
- palette.set_pen_color(BITSWAP8(i,5,7,6,2,1,0,4,3), rgb_t(r, g, b));
+ palette.set_pen_color(bitswap<8>(i,5,7,6,2,1,0,4,3), rgb_t(r, g, b));
}
}
diff --git a/src/mame/drivers/eva.cpp b/src/mame/drivers/eva.cpp
index fe290ddaf8c..c7681d980c5 100644
--- a/src/mame/drivers/eva.cpp
+++ b/src/mame/drivers/eva.cpp
@@ -123,7 +123,7 @@ WRITE16_MEMBER(eva_state::eva11_write_o)
READ8_MEMBER(eva_state::eva11_read_k)
{
// K84: TMS5100 CTL81(O30)
- u8 ctl = BITSWAP8(m_tms5100->ctl_r(space, 0),7,6,5,4,3,0,1,2) & 0xc;
+ u8 ctl = bitswap<8>(m_tms5100->ctl_r(space, 0),7,6,5,4,3,0,1,2) & 0xc;
// TODO: sensors
diff --git a/src/mame/drivers/evmbug.cpp b/src/mame/drivers/evmbug.cpp
index f93e2da9e2d..bc742bb35d9 100644
--- a/src/mame/drivers/evmbug.cpp
+++ b/src/mame/drivers/evmbug.cpp
@@ -2,17 +2,23 @@
// copyright-holders:Robbbert
/***************************************************************************
- Stuart's Breadboard Project. TMS9995 evaluation kit TMAM6095.
+Stuart's Breadboard Project. TMS9995 evaluation kit TMAM6095.
- 2013-06-02 Skeleton driver.
+2013-06-02 Skeleton driver.
- http://www.avjd51.dsl.pipex.com/tms9995_eval_module/tms9995_eval_module.htm
+http://www.stuartconner.me.uk/tms9995_eval_module/tms9995_eval_module.htm
+It uses TMS9902 UART for comms, but our implementation of that chip is
+not ready for rs232.h as yet.
+
+Press any key to get it started. All input to be in uppercase. Haven't found
+any commands that work as yet.
****************************************************************************/
#include "emu.h"
#include "cpu/tms9900/tms9995.h"
+//#include "machine/tms9902.h"
#include "machine/terminal.h"
@@ -33,7 +39,9 @@ private:
virtual void machine_reset() override;
uint8_t m_term_data;
uint8_t m_term_out;
- required_device<cpu_device> m_maincpu;
+ bool m_rin;
+ bool m_rbrl;
+ required_device<tms9995_device> m_maincpu;
required_device<generic_terminal_device> m_terminal;
};
@@ -44,8 +52,10 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( io_map, AS_IO, 8, evmbug_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0007) AM_WRITE(rs232_w)
- AM_RANGE(0x0000, 0x0002) AM_READ(rs232_r)
+ //AM_RANGE(0x0000, 0x0003) AM_DEVREAD("uart1", tms9902_device, cruread)
+ //AM_RANGE(0x0000, 0x001f) AM_DEVWRITE("uart1", tms9902_device, cruwrite)
+ AM_RANGE(0x0000, 0x0003) AM_READ(rs232_r)
+ AM_RANGE(0x0000, 0x001f) AM_WRITE(rs232_w)
ADDRESS_MAP_END
/* Input ports */
@@ -54,60 +64,64 @@ INPUT_PORTS_END
READ8_MEMBER( evmbug_state::rs232_r )
{
- static uint8_t temp = 0;
- temp^=0xff;
- if (offset == 1)
- return temp;
-
+ if (offset == 0)
+ return m_term_data;
+ else
if (offset == 2)
+ return (m_rbrl ? 0x20 : 0) | 0xc0;
+ else
{
- return 0xff;//(m_term_data) ? 0 : 0xff;
+ m_rin ^= 1;
+ return m_rin << 7;
}
-
- uint8_t ret = m_term_data;
- m_term_data = 0;
- return ret;
}
WRITE8_MEMBER( evmbug_state::rs232_w )
{
- if (offset == 0)
- m_term_out = 0;
+ if (offset < 8)
+ {
+ if (offset == 0)
+ m_term_out = 0;
- m_term_out |= (data << offset);
+ m_term_out |= (data << offset);
- if (offset == 7)
- m_terminal->write(space, 0, m_term_out & 0x7f);
+ if (offset == 7)
+ m_terminal->write(space, 0, m_term_out & 0x7f);
+ }
+ else
+ if (offset == 18)
+ m_rbrl = 0;
}
void evmbug_state::kbd_put(u8 data)
{
m_term_data = data;
+ m_rbrl = data ? 1 : 0;
}
void evmbug_state::machine_reset()
{
- m_term_data = 0;
+ m_rbrl = 0;
// Disable auto wait state generation by raising the READY line on reset
- static_cast<tms9995_device*>(machine().device("maincpu"))->ready_line(ASSERT_LINE);
+ m_maincpu->ready_line(ASSERT_LINE);
}
static MACHINE_CONFIG_START( evmbug )
// basic machine hardware
// TMS9995 CPU @ 12.0 MHz
// We have no lines connected yet
- MCFG_TMS99xx_ADD("maincpu", TMS9995, 12000000, mem_map, io_map )
+ MCFG_TMS99xx_ADD("maincpu", TMS9995, XTAL_12MHz, mem_map, io_map )
/* video hardware */
MCFG_DEVICE_ADD("terminal", GENERIC_TERMINAL, 0)
MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(evmbug_state, kbd_put))
+
+ //MCFG_DEVICE_ADD("uart1", TMS9902, XTAL_12MHz / 4)
MACHINE_CONFIG_END
/* ROM definition */
ROM_START( evmbug )
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
-// ROM_LOAD( "u8.bin", 0x0000, 0x1000, CRC(bdb8c7bd) SHA1(340829dcb7a65f2e830fd5aff82a312e3ed7918f) )
-// ROM_LOAD( "u9.bin", 0x1000, 0x0800, CRC(4de459ea) SHA1(00a42fe556d4ffe1f85b2ce369f544b07fbd06d9) )
ROM_LOAD( "evmbug.bin", 0x0000, 0x8000, CRC(a239ec56) SHA1(65b500d7d0f897ce0c320cf3ec32ff4042774599) )
ROM_END
diff --git a/src/mame/drivers/excali64.cpp b/src/mame/drivers/excali64.cpp
index a9bc490617b..c538655f2d8 100644
--- a/src/mame/drivers/excali64.cpp
+++ b/src/mame/drivers/excali64.cpp
@@ -524,7 +524,7 @@ MC6845_UPDATE_ROW( excali64_state::update_row )
if (h > 5)
h = 0; // keep us in bounds
// hires definition - pixels are opposite order to characters
- gfx = BITSWAP8(m_p_hiresram[(h << 12) | (chr<<4) | ra], 0, 1, 2, 3, 4, 5, 6, 7);
+ gfx = bitswap<8>(m_p_hiresram[(h << 12) | (chr<<4) | ra], 0, 1, 2, 3, 4, 5, 6, 7);
}
else
gfx = m_p_chargen[(chr<<4) | ra]; // normal character
diff --git a/src/mame/drivers/exidy440.cpp b/src/mame/drivers/exidy440.cpp
index 7b6ff76b66a..9132234065f 100644
--- a/src/mame/drivers/exidy440.cpp
+++ b/src/mame/drivers/exidy440.cpp
@@ -995,7 +995,7 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( exidy440 )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M6809, MAIN_CPU_CLOCK)
+ MCFG_CPU_ADD("maincpu", MC6809E, MAIN_CPU_CLOCK)
MCFG_CPU_PROGRAM_MAP(exidy440_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", exidy440_state, exidy440_vblank_interrupt)
diff --git a/src/mame/drivers/expro02.cpp b/src/mame/drivers/expro02.cpp
index 0ff353a8d9c..5b909c257af 100644
--- a/src/mame/drivers/expro02.cpp
+++ b/src/mame/drivers/expro02.cpp
@@ -1797,7 +1797,7 @@ DRIVER_INIT_MEMBER(expro02_state,expro02)
offset = x;
// swap bits around to simplify further processing
- offset = BITSWAP24(offset, 23, 22, 21, 20, 19, 18, 15, 9, 10, 8, 7, 12, 13, 16, 17, 6, 5, 4, 3, 14, 11, 2, 1, 0);
+ offset = bitswap<24>(offset, 23, 22, 21, 20, 19, 18, 15, 9, 10, 8, 7, 12, 13, 16, 17, 6, 5, 4, 3, 14, 11, 2, 1, 0);
// invert 8 bits
offset ^= 0x0528f;
@@ -1809,7 +1809,7 @@ DRIVER_INIT_MEMBER(expro02_state,expro02)
offset = (offset & ~0x1fe00) | ((offset - 0x09600) & 0x1fe00);
// reverse the initial bitswap
- offset = BITSWAP24(offset, 23, 22, 21, 20, 19, 18, 9, 10, 17, 4, 11, 12, 3, 15, 16, 14, 13, 8, 7, 6, 5, 2, 1, 0);
+ offset = bitswap<24>(offset, 23, 22, 21, 20, 19, 18, 9, 10, 17, 4, 11, 12, 3, 15, 16, 14, 13, 8, 7, 6, 5, 2, 1, 0);
// swap nibbles to use the same gfxdecode
dst[x] = (src[offset] << 4 & 0xF0F0F0F0) | (src[offset] >> 4 & 0x0F0F0F0F);
diff --git a/src/mame/drivers/exprraid.cpp b/src/mame/drivers/exprraid.cpp
index 97ee4be9c18..14ae38946c9 100644
--- a/src/mame/drivers/exprraid.cpp
+++ b/src/mame/drivers/exprraid.cpp
@@ -494,7 +494,7 @@ static MACHINE_CONFIG_START( exprraid )
MCFG_CPU_PROGRAM_MAP(master_map)
MCFG_CPU_IO_MAP(master_io_map)
- MCFG_CPU_ADD("slave", M6809, XTAL_12MHz / 8)
+ MCFG_CPU_ADD("slave", MC6809, XTAL_12MHz / 2) // MC68B09P
MCFG_CPU_PROGRAM_MAP(slave_map)
/* IRQs are caused by the YM3526 */
diff --git a/src/mame/drivers/fgoal.cpp b/src/mame/drivers/fgoal.cpp
index 6545b82484b..70a654ef039 100644
--- a/src/mame/drivers/fgoal.cpp
+++ b/src/mame/drivers/fgoal.cpp
@@ -171,14 +171,14 @@ READ8_MEMBER(fgoal_state::shifter_r)
{
uint8_t v = m_mb14241->shift_result_r(space, 0);
- return BITSWAP8(v, 7, 6, 5, 4, 3, 2, 1, 0);
+ return bitswap<8>(v, 7, 6, 5, 4, 3, 2, 1, 0);
}
READ8_MEMBER(fgoal_state::shifter_reverse_r)
{
uint8_t v = m_mb14241->shift_result_r(space, 0);
- return BITSWAP8(v, 0, 1, 2, 3, 4, 5, 6, 7);
+ return bitswap<8>(v, 0, 1, 2, 3, 4, 5, 6, 7);
}
diff --git a/src/mame/drivers/fidel6502.cpp b/src/mame/drivers/fidel6502.cpp
index 46c144b0db0..47cb3612e95 100644
--- a/src/mame/drivers/fidel6502.cpp
+++ b/src/mame/drivers/fidel6502.cpp
@@ -351,6 +351,27 @@ CPU D6 to W: (model 6092, tied to VCC otherwise)
- D2-D6: VCC
- D7: TSI BUSY
+------------------
+One interesting clone of The Excellence is the Computerchess Playmate-2. It was
+produced in 1989 by SPS(Bulgaria) and RRR(Riga Radio Factory). The chess program
+ROM is identical to Excellence EP12. All internal circuitry is the same, the only
+difference is the capacitor driving the 555 for IRQ is 10nf instead of 22nf.
+
+What makes it unique is the addition of a chess clock.
+
+connector pinout from main pcb:
+1) 5V
+2) GND
+3) 74HC259.pin9 (Q4) = Row LED driving
+4) 74HC259.pin10 (Q5) = Column LED driving
+5) 74HC259.pin12 (Q7) = Bat. Low signal
+6) 74HC42.pin4 (Q3) = Col-D/Row-4 -> 'White Move' if D-LED blinks
+
+The extra board has a 7474, a К1016ХЛ1 (RTC, or MCU clock driver), a 4-digit
+VFD display, and some buttons for controlling the clock. IRQ frequency is doubled
+presumedly for using the blinking led as seconds counter. It only tracks player time,
+not of the opponent. And it obviously doesn't show chessmove coordinates either.
+
******************************************************************************
@@ -560,7 +581,7 @@ WRITE8_MEMBER(fidel6502_state::csc_pia0_pa_w)
m_speech->data_w(space, 0, data & 0x3f);
// d0-d7: data for the 4 7seg leds, bits are ABFGHCDE (H is extra led)
- m_7seg_data = BITSWAP8(data,0,1,5,6,7,2,3,4);
+ m_7seg_data = bitswap<8>(data,0,1,5,6,7,2,3,4);
csc_prepare_display();
}
@@ -666,7 +687,7 @@ WRITE8_MEMBER(fidel6502_state::eas_segment_w)
{
// a0-a2,d7: digit segment
m_7seg_data = (data & 0x80) >> offset;
- m_7seg_data = BITSWAP8(m_7seg_data,7,6,4,5,0,2,1,3);
+ m_7seg_data = bitswap<8>(m_7seg_data,7,6,4,5,0,2,1,3);
eas_prepare_display();
}
@@ -891,11 +912,11 @@ WRITE8_MEMBER(fidel6502_state::fexcel_ttl_w)
m_dac->write(BIT(sel, 9));
// 74259 Q4-Q7,Q2,Q1: digit/led select (active low)
- u8 led_sel = ~BITSWAP8(m_led_select,0,3,1,2,7,6,5,4) & 0x3f;
+ u8 led_sel = ~bitswap<8>(m_led_select,0,3,1,2,7,6,5,4) & 0x3f;
// a0-a2,d1: digit segment data (model 6093)
m_7seg_data = (m_7seg_data & ~mask) | ((data & 2) ? mask : 0);
- u8 seg_data = BITSWAP8(m_7seg_data,0,1,3,2,7,5,6,4);
+ u8 seg_data = bitswap<8>(m_7seg_data,0,1,3,2,7,5,6,4);
// update display: 4 7seg leds, 2*8 chessboard leds
for (int i = 0; i < 6; i++)
@@ -988,7 +1009,7 @@ WRITE8_MEMBER(fidel6502_state::fdesdis_control_w)
WRITE8_MEMBER(fidel6502_state::fdesdis_lcd_w)
{
// a0-a2,d0-d3: 4*74259 to lcd digit segments
- u32 mask = BITSWAP8(1 << offset,3,7,6,0,1,2,4,5);
+ u32 mask = bitswap<8>(1 << offset,3,7,6,0,1,2,4,5);
for (int i = 0; i < 4; i++)
{
m_7seg_data = (m_7seg_data & ~mask) | ((data >> i & 1) ? 0 : mask);
diff --git a/src/mame/drivers/fidel68k.cpp b/src/mame/drivers/fidel68k.cpp
index 581aba0581c..f8017727bab 100644
--- a/src/mame/drivers/fidel68k.cpp
+++ b/src/mame/drivers/fidel68k.cpp
@@ -11,7 +11,6 @@
such as Arena(in editmode).
TODO:
- - fex68km3 addressmap RAM mirror? PCB has 2*32K RAM, emulated has 16K+64K
- USART is not emulated
- V9(68030 @ 32MHz) is faster than V10(68040 @ 25MHz) but it should be the other
way around, culprit is unemulated cache?
@@ -29,7 +28,7 @@ PCB label 510-1129A01
PCB has edge connector for module, but no external slot
There's room for 2 SIMMs at U22 and U23. Unpopulated in Excel 68000, used for
-128KB hashtable RAM in Mach II. Mach III has wire mods to U8/U9(2*32KB).
+128KB hashtable RAM in Mach II. Mach III has wire mods to U8/U9(2*8KB + 2*32KB piggybacked).
I/O is via TTL, overall very similar to EAG.
@@ -46,6 +45,13 @@ PCB label 510.1134A02
ROM address/data lines are scrambled, presumed for easy placement on PCB and not
for obfuscation. I/O is nearly the same as Designer Display on 6502 hardware.
+Designer Mach IV Master 2325 (model 6129)
+-----------------------------------------
+32KB(4*P5164-70) + 512KB(TC518512PL-80) RAM, 64KB ROM(TMS 27C512-120JL)
+MC68EC020RP25 CPU, 20MHz XTAL
+PCB label 510.1149A01
+It has a green "Shift" led instead of red, and ROM is not scrambled.
+
******************************************************************************
@@ -181,7 +187,8 @@ B0000x-xxxxxx: see V7, -800000
#include "speaker.h"
// internal artwork
-#include "fidel_desdis_68k.lh" // clickable
+#include "fidel_desdis_68kg.lh" // clickable
+#include "fidel_desdis_68kr.lh" // clickable
#include "fidel_ex_68k.lh" // clickable
#include "fidel_eag_68k.lh" // clickable
@@ -203,9 +210,9 @@ public:
DECLARE_WRITE8_MEMBER(fex68k_mux_w);
// Designer Master
- DECLARE_WRITE8_MEMBER(fdes2265_control_w);
- DECLARE_READ8_MEMBER(fdes2265_input_r);
- DECLARE_WRITE8_MEMBER(fdes2265_lcd_w);
+ DECLARE_WRITE8_MEMBER(fdes68k_control_w);
+ DECLARE_READ8_MEMBER(fdes68k_input_r);
+ DECLARE_WRITE8_MEMBER(fdes68k_lcd_w);
DECLARE_DRIVER_INIT(fdes2265);
// EAG(6114/6117)
@@ -242,7 +249,7 @@ WRITE8_MEMBER(fidel68k_state::fex68k_mux_w)
Designer Master
******************************************************************************/
-WRITE8_MEMBER(fidel68k_state::fdes2265_control_w)
+WRITE8_MEMBER(fidel68k_state::fdes68k_control_w)
{
u8 q3_old = m_led_select & 8;
@@ -273,16 +280,16 @@ WRITE8_MEMBER(fidel68k_state::fdes2265_control_w)
display_update();
}
-READ8_MEMBER(fidel68k_state::fdes2265_input_r)
+READ8_MEMBER(fidel68k_state::fdes68k_input_r)
{
- // a1-a3,d7: multiplexed inputs (active low)
+ // a1-a3,d7(d15): multiplexed inputs (active low)
return (read_inputs(9) >> offset & 1) ? 0 : 0x80;
}
-WRITE8_MEMBER(fidel68k_state::fdes2265_lcd_w)
+WRITE8_MEMBER(fidel68k_state::fdes68k_lcd_w)
{
// a1-a3,d0-d3: 4*74259 to lcd digit segments
- u32 mask = BITSWAP8(1 << offset,3,7,6,0,1,2,4,5);
+ u32 mask = bitswap<8>(1 << offset,3,7,6,0,1,2,4,5);
for (int i = 0; i < 4; i++)
{
m_7seg_data = (m_7seg_data & ~mask) | ((data >> i & 1) ? mask : 0);
@@ -297,13 +304,13 @@ DRIVER_INIT_MEMBER(fidel68k_state, fdes2265)
// descramble data lines
for (int i = 0; i < len; i++)
- rom[i] = BITSWAP16(rom[i], 15,14,8,13,9,12,10,11, 3,4,5,7,6,0,1,2);
+ rom[i] = bitswap<16>(rom[i], 15,14,8,13,9,12,10,11, 3,4,5,7,6,0,1,2);
// descramble address lines
std::vector<u16> buf(len);
memcpy(&buf[0], rom, len*2);
for (int i = 0; i < len; i++)
- rom[i] = buf[BITSWAP24(i, 23,22,21,20,19,18,17,16, 15,14,13,12,11,8,10,9, 7,6,5,4,3,2,1,0)];
+ rom[i] = buf[bitswap<24>(i, 23,22,21,20,19,18,17,16, 15,14,13,12,11,8,10,9, 7,6,5,4,3,2,1,0)];
}
@@ -318,7 +325,7 @@ void fidel68k_state::eag_prepare_display()
{
// Excel 68000: 4*7seg leds, 8*8 chessboard leds
// EAG: 8*7seg leds(2 panels), (8+1)*8 chessboard leds
- u8 seg_data = BITSWAP8(m_7seg_data,0,1,3,2,7,5,6,4);
+ u8 seg_data = bitswap<8>(m_7seg_data,0,1,3,2,7,5,6,4);
set_display_segmask(0x1ff, 0x7f);
display_matrix(16, 9, m_led_data << 8 | seg_data, m_inp_mux);
}
@@ -393,11 +400,21 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( fdes2265_map, AS_PROGRAM, 16, fidel68k_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x000000, 0x00000f) AM_WRITE8(fdes2265_lcd_w, 0x00ff)
+ AM_RANGE(0x000000, 0x00000f) AM_WRITE8(fdes68k_lcd_w, 0x00ff)
AM_RANGE(0x044000, 0x047fff) AM_RAM
AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x140000, 0x14000f) AM_READ8(fdes2265_input_r, 0xff00)
- AM_RANGE(0x140000, 0x14000f) AM_WRITE8(fdes2265_control_w, 0x00ff)
+ AM_RANGE(0x140000, 0x14000f) AM_READ8(fdes68k_input_r, 0xff00)
+ AM_RANGE(0x140000, 0x14000f) AM_WRITE8(fdes68k_control_w, 0x00ff)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( fdes2325_map, AS_PROGRAM, 32, fidel68k_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x000000, 0x00ffff) AM_ROM
+ AM_RANGE(0x100000, 0x10000f) AM_WRITE8(fdes68k_lcd_w, 0x00ff00ff)
+ AM_RANGE(0x140000, 0x14000f) AM_WRITE8(fdes68k_control_w, 0x00ff00ff)
+ AM_RANGE(0x180000, 0x18000f) AM_READ8(fdes68k_input_r, 0xff00ff00)
+ AM_RANGE(0x300000, 0x37ffff) AM_RAM
+ AM_RANGE(0x500000, 0x507fff) AM_RAM
ADDRESS_MAP_END
@@ -469,7 +486,7 @@ static INPUT_PORTS_START( fex68k )
INPUT_PORTS_END
-static INPUT_PORTS_START( fdes )
+static INPUT_PORTS_START( fdes68k )
PORT_INCLUDE( fidel_cb_buttons )
PORT_START("IN.8")
@@ -557,7 +574,7 @@ static MACHINE_CONFIG_START( fdes2265 )
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel68k_state, irq_off, attotime::from_hz(597))
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1))
- MCFG_DEFAULT_LAYOUT(layout_fidel_desdis_68k)
+ MCFG_DEFAULT_LAYOUT(layout_fidel_desdis_68kr)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("speaker")
@@ -566,6 +583,15 @@ static MACHINE_CONFIG_START( fdes2265 )
MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT)
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( fdes2325, fdes2265 )
+
+ /* basic machine hardware */
+ MCFG_CPU_REPLACE("maincpu", M68EC020, XTAL_20MHz) // MC68EC020RP25
+ MCFG_CPU_PROGRAM_MAP(fdes2325_map)
+
+ MCFG_DEFAULT_LAYOUT(layout_fidel_desdis_68kg)
+MACHINE_CONFIG_END
+
static MACHINE_CONFIG_START( eag )
/* basic machine hardware */
@@ -662,6 +688,14 @@ ROM_START( fdes2265 ) // model 6113, PCB label 510.1134A02
ROM_LOAD16_BYTE("13o_blue.ic10", 0x00001, 0x08000, CRC(81ce7ab2) SHA1(f01a70bcf2fbfe66c7a77d3c4437d897e5cc682d) ) // "
ROM_END
+ROM_START( fdes2325 ) // model 6129, PCB label 510.1149A01
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("61_29_white.ic10", 0x00000, 0x10000, CRC(f74157e1) SHA1(87f3f2d584e292f81593e053240d022cc477834d) ) // 27c512
+
+ ROM_REGION( 0x100, "pals", 0 )
+ ROM_LOAD("101-1097a01.ic19", 0x000, 0x100, NO_DUMP ) // PALCE16V8Q-25PC
+ROM_END
+
ROM_START( feagv2 ) // from a V2 board
ROM_REGION16_BE( 0x20000, "maincpu", 0 )
@@ -715,17 +749,18 @@ ROM_END
Drivers
******************************************************************************/
-// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
-CONS( 1987, fex68k, 0, 0, fex68k, fex68k, fidel68k_state, 0, "Fidelity Electronics", "Excel 68000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1988, fex68km2, fex68k, 0, fex68km2, fex68k, fidel68k_state, 0, "Fidelity Electronics", "Excel 68000 Mach II (rev. C+)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1988, fex68km3, fex68k, 0, fex68km3, fex68k, fidel68k_state, 0, "Fidelity Electronics", "Excel 68000 Mach III", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-
-CONS( 1989, fdes2265, 0, 0, fdes2265, fdes, fidel68k_state, fdes2265, "Fidelity Electronics", "Designer Mach III Master 2265", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-
-CONS( 1989, feagv2, 0, 0, eag, eag, fidel68k_state, eag, "Fidelity Electronics", "Elite Avant Garde (model 6114-2/3/4, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1989, feagv2a, feagv2, 0, eag, eag, fidel68k_state, eag, "Fidelity Electronics", "Elite Avant Garde (model 6114-2/3/4, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1990, feagv7, feagv2, 0, eagv7, eag, fidel68k_state, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-7, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1990, feagv7a, feagv2, 0, eagv7, eag, fidel68k_state, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-7, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1990, feagv9, feagv2, 0, eagv9, eag, fidel68k_state, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-9)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 1990, feagv10, feagv2, 0, eagv10, eag, fidel68k_state, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-10)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
-CONS( 2002, feagv11, feagv2, 0, eagv11, eag, fidel68k_state, 0, "hack (Wilfried Bucke)", "Elite Avant Garde (model 6117-11)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
+// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
+CONS( 1987, fex68k, 0, 0, fex68k, fex68k, fidel68k_state, 0, "Fidelity Electronics", "Excel 68000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1988, fex68km2, fex68k, 0, fex68km2, fex68k, fidel68k_state, 0, "Fidelity Electronics", "Excel 68000 Mach II (rev. C+)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1988, fex68km3, fex68k, 0, fex68km3, fex68k, fidel68k_state, 0, "Fidelity Electronics", "Excel 68000 Mach III Master", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+
+CONS( 1989, fdes2265, 0, 0, fdes2265, fdes68k, fidel68k_state, fdes2265, "Fidelity Electronics", "Designer Mach III Master 2265", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1991, fdes2325, fdes2265, 0, fdes2325, fdes68k, fidel68k_state, 0, "Fidelity Electronics", "Designer Mach IV Master 2325", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+
+CONS( 1989, feagv2, 0, 0, eag, eag, fidel68k_state, eag, "Fidelity Electronics", "Elite Avant Garde (model 6114-2/3/4, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1989, feagv2a, feagv2, 0, eag, eag, fidel68k_state, eag, "Fidelity Electronics", "Elite Avant Garde (model 6114-2/3/4, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1990, feagv7, feagv2, 0, eagv7, eag, fidel68k_state, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-7, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1990, feagv7a, feagv2, 0, eagv7, eag, fidel68k_state, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-7, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1990, feagv9, feagv2, 0, eagv9, eag, fidel68k_state, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-9)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1990, feagv10, feagv2, 0, eagv10, eag, fidel68k_state, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-10)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
+CONS( 2002, feagv11, feagv2, 0, eagv11, eag, fidel68k_state, 0, "hack (Wilfried Bucke)", "Elite Avant Garde (model 6117-11)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
diff --git a/src/mame/drivers/fidelz80.cpp b/src/mame/drivers/fidelz80.cpp
index 2ce5b29dcfd..9c788b95989 100644
--- a/src/mame/drivers/fidelz80.cpp
+++ b/src/mame/drivers/fidelz80.cpp
@@ -798,7 +798,7 @@ MACHINE_START_MEMBER(fidelz80_state,vcc)
WRITE8_MEMBER(fidelz80_state::vcc_ppi_porta_w)
{
// d0-d6: digit segment data, bits are xABCDEFG
- m_7seg_data = BITSWAP8(data,7,0,1,2,3,4,5,6);
+ m_7seg_data = bitswap<8>(data,7,0,1,2,3,4,5,6);
vcc_prepare_display();
// d0-d5: TSI C0-C5
@@ -860,7 +860,7 @@ WRITE8_MEMBER(fidelz80_state::cc10_ppi_porta_w)
}
// d0-d6: digit segment data (same as VCC)
- m_7seg_data = BITSWAP8(data,7,0,1,2,3,4,5,6);
+ m_7seg_data = bitswap<8>(data,7,0,1,2,3,4,5,6);
vcc_prepare_display();
}
@@ -943,7 +943,7 @@ WRITE8_MEMBER(fidelz80_state::vsc_ppi_porta_w)
m_speech->data_w(space, 0, data & 0x3f);
// d0-d7: data for the 4 7seg leds, bits are HGCBAFED (H is extra led)
- m_7seg_data = BITSWAP8(data,7,6,2,1,0,5,4,3);
+ m_7seg_data = bitswap<8>(data,7,6,2,1,0,5,4,3);
vsc_prepare_display();
}
@@ -1010,7 +1010,7 @@ WRITE8_MEMBER(fidelz80_state::vsc_pio_portb_w)
void fidelz80_state::vbrc_prepare_display()
{
// 14seg led segments, d15 is extra led, d14 is unused (tone on prototype?)
- u16 outdata = BITSWAP16(m_7seg_data,12,13,1,6,5,2,0,7,15,11,10,14,4,3,9,8);
+ u16 outdata = bitswap<16>(m_7seg_data,12,13,1,6,5,2,0,7,15,11,10,14,4,3,9,8);
set_display_segmask(0xff, 0x3fff);
display_matrix(16, 8, outdata, m_led_select);
}
diff --git a/src/mame/drivers/firefox.cpp b/src/mame/drivers/firefox.cpp
index bbbd02e35ae..07ed8cf4b65 100644
--- a/src/mame/drivers/firefox.cpp
+++ b/src/mame/drivers/firefox.cpp
@@ -724,7 +724,7 @@ GFXDECODE_END
static MACHINE_CONFIG_START( firefox )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M6809E, MASTER_XTAL/2)
+ MCFG_CPU_ADD("maincpu", MC6809E, MASTER_XTAL/8) // 68B09E
MCFG_CPU_PROGRAM_MAP(main_map)
/* interrupts count starting at end of VBLANK, which is 44, so add 44 */
MCFG_TIMER_DRIVER_ADD_SCANLINE("32v", firefox_state, video_timer_callback, "screen", 96+44, 128)
diff --git a/src/mame/drivers/fm7.cpp b/src/mame/drivers/fm7.cpp
index 99e7c8e86ab..b35f9fbb9df 100644
--- a/src/mame/drivers/fm7.cpp
+++ b/src/mame/drivers/fm7.cpp
@@ -2057,12 +2057,12 @@ MCFG_ADDRESS_MAP_BANK_STRIDE(0x1000)
static MACHINE_CONFIG_START( fm7 )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M6809, XTAL_2MHz)
+ MCFG_CPU_ADD("maincpu", MC6809, 8000000)
MCFG_CPU_PROGRAM_MAP(fm7_mem)
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(fm7_state,fm7_irq_ack)
MCFG_QUANTUM_PERFECT_CPU("maincpu")
- MCFG_CPU_ADD("sub", M6809, XTAL_2MHz)
+ MCFG_CPU_ADD("sub", MC6809, 8000000)
MCFG_CPU_PROGRAM_MAP(fm7_sub_mem)
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(fm7_state,fm7_sub_irq_ack)
MCFG_QUANTUM_PERFECT_CPU("sub")
@@ -2079,10 +2079,7 @@ static MACHINE_CONFIG_START( fm7 )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_SIZE(640, 200)
- MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
+ MCFG_SCREEN_RAW_PARAMS(XTAL_16_128MHz, 1024, 0, 640, 262, 0, 200) // H = 15.75 KHz, V = 60.1145 Hz
MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
MCFG_PALETTE_ADD_3BIT_BRG("palette")
@@ -2115,12 +2112,12 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( fm8 )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M6809, 1200000) // 1.2MHz 68A09
+ MCFG_CPU_ADD("maincpu", MC6809, 4800000) // 1.2MHz 68A09
MCFG_CPU_PROGRAM_MAP(fm8_mem)
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(fm7_state,fm7_irq_ack)
MCFG_QUANTUM_PERFECT_CPU("maincpu")
- MCFG_CPU_ADD("sub", M6809, XTAL_1MHz)
+ MCFG_CPU_ADD("sub", MC6809, 4000000)
MCFG_CPU_PROGRAM_MAP(fm7_sub_mem)
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(fm7_state,fm7_sub_irq_ack)
MCFG_QUANTUM_PERFECT_CPU("sub")
@@ -2135,10 +2132,7 @@ static MACHINE_CONFIG_START( fm8 )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_SIZE(640, 200)
- MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
+ MCFG_SCREEN_RAW_PARAMS(XTAL_16_128MHz, 1024, 0, 640, 262, 0, 200)
MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
MCFG_PALETTE_ADD_3BIT_BRG("palette")
@@ -2208,10 +2202,7 @@ static MACHINE_CONFIG_START( fm77av )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_SIZE(640, 200)
- MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
+ MCFG_SCREEN_RAW_PARAMS(16128000, 1024, 0, 640, 262, 0, 200)
MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
MCFG_PALETTE_ADD_3BIT_BRG("palette")
@@ -2286,10 +2277,7 @@ static MACHINE_CONFIG_START( fm11 )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_SIZE(640, 200)
- MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
+ MCFG_SCREEN_RAW_PARAMS(16128000, 1024, 0, 640, 262, 0, 200)
MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
MCFG_PALETTE_ADD_3BIT_BRG("palette")
@@ -2337,10 +2325,7 @@ static MACHINE_CONFIG_START( fm16beta )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_SIZE(640, 200)
- MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
+ MCFG_SCREEN_RAW_PARAMS(16128000, 1024, 0, 640, 262, 0, 200)
MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
MCFG_PALETTE_ADD_3BIT_BRG("palette")
diff --git a/src/mame/drivers/fmtowns.cpp b/src/mame/drivers/fmtowns.cpp
index 7d20aba1d41..2a831e969b2 100644
--- a/src/mame/drivers/fmtowns.cpp
+++ b/src/mame/drivers/fmtowns.cpp
@@ -985,6 +985,7 @@ READ8_MEMBER(towns_state::towns_padport_r)
break;
case MOUSE_START:
case MOUSE_SYNC:
+ break;
default:
if(m_towns_mouse_output < MOUSE_Y_LOW)
ret |= 0x0f;
@@ -1072,6 +1073,7 @@ READ8_MEMBER(towns_state::towns_padport_r)
break;
case MOUSE_START:
case MOUSE_SYNC:
+ break;
default:
if(m_towns_mouse_output < MOUSE_Y_LOW)
ret |= 0x0f;
diff --git a/src/mame/drivers/forte2.cpp b/src/mame/drivers/forte2.cpp
index c4292dc3a49..bbf52182675 100644
--- a/src/mame/drivers/forte2.cpp
+++ b/src/mame/drivers/forte2.cpp
@@ -147,7 +147,7 @@ DRIVER_INIT_MEMBER(forte2_state,pesadelo)
// data swap
for (int i = 0; i < memsize; i++)
{
- mem[i] = BITSWAP8(mem[i],3,5,6,7,0,4,2,1);
+ mem[i] = bitswap<8>(mem[i],3,5,6,7,0,4,2,1);
}
// address line swap
@@ -155,7 +155,7 @@ DRIVER_INIT_MEMBER(forte2_state,pesadelo)
memcpy(&buf[0], mem, memsize);
for (int i = 0; i < memsize; i++)
{
- mem[BITSWAP16(i,11,9,8,13,14,15,12,7,6,5,4,3,2,1,0,10)] = buf[i];
+ mem[bitswap<16>(i,11,9,8,13,14,15,12,7,6,5,4,3,2,1,0,10)] = buf[i];
}
}
diff --git a/src/mame/drivers/fp1100.cpp b/src/mame/drivers/fp1100.cpp
index 90512cec76b..e841528204a 100644
--- a/src/mame/drivers/fp1100.cpp
+++ b/src/mame/drivers/fp1100.cpp
@@ -246,7 +246,7 @@ d7 - 1=display area; 0=cursor
*/
WRITE8_MEMBER( fp1100_state::colour_control_w )
{
- data = BITSWAP8(data, 7, 4, 6, 5, 3, 0, 2, 1); // change BRG to RGB
+ data = bitswap<8>(data, 7, 4, 6, 5, 3, 0, 2, 1); // change BRG to RGB
m_col_border = data & 7;
diff --git a/src/mame/drivers/fp200.cpp b/src/mame/drivers/fp200.cpp
index 20c85836f26..798d6b3ccae 100644
--- a/src/mame/drivers/fp200.cpp
+++ b/src/mame/drivers/fp200.cpp
@@ -554,7 +554,7 @@ void fp200_state::machine_start()
for(int i=0;i<0x800;i++)
{
- m_chargen[i] = raw_gfx[BITSWAP16(i,15,14,13,12,11,6,5,4,3,10,9,8,7,2,1,0)];
+ m_chargen[i] = raw_gfx[bitswap<16>(i,15,14,13,12,11,6,5,4,3,10,9,8,7,2,1,0)];
}
}
diff --git a/src/mame/drivers/funkyjet.cpp b/src/mame/drivers/funkyjet.cpp
index c453650e867..ef3a853e4f6 100644
--- a/src/mame/drivers/funkyjet.cpp
+++ b/src/mame/drivers/funkyjet.cpp
@@ -110,7 +110,7 @@ READ16_MEMBER( funkyjet_state::funkyjet_protection_region_0_146_r )
// uint16_t realdat = deco16_146_funkyjet_prot_r(space,offset&0x3ff,mem_mask);
int real_address = 0 + (offset *2);
- int deco146_addr = BITSWAP32(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, /* note, same bitswap as fghthist */ 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) & 0x7fff;
+ int deco146_addr = bitswap<32>(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, /* note, same bitswap as fghthist */ 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) & 0x7fff;
uint8_t cs = 0;
uint16_t data = m_deco146->read_data( deco146_addr, mem_mask, cs );
@@ -125,7 +125,7 @@ WRITE16_MEMBER( funkyjet_state::funkyjet_protection_region_0_146_w )
// deco16_146_funkyjet_prot_w(space,offset&0x3ff,data,mem_mask);
int real_address = 0 + (offset *2);
- int deco146_addr = BITSWAP32(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, /* note, same bitswap as fghthist */ 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) & 0x7fff;
+ int deco146_addr = bitswap<32>(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, /* note, same bitswap as fghthist */ 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) & 0x7fff;
uint8_t cs = 0;
m_deco146->write_data( space, deco146_addr, data, mem_mask, cs );
}
diff --git a/src/mame/drivers/funtech.cpp b/src/mame/drivers/funtech.cpp
index 1ecd23625dd..e780b38df9f 100644
--- a/src/mame/drivers/funtech.cpp
+++ b/src/mame/drivers/funtech.cpp
@@ -280,7 +280,7 @@ WRITE8_MEMBER(fun_tech_corp_state::funtech_coins_w)
if (data & 0x01) printf("funtech_coins_w %02x\n", data);
// 80 = hopper motor?
- m_hopper->write(space, 0, data & 0x80);
+ m_hopper->motor_w(BIT(data, 7));
// 40 = ? sometimes
diff --git a/src/mame/drivers/funworld.cpp b/src/mame/drivers/funworld.cpp
index a31afd756f2..23418f8fb80 100644
--- a/src/mame/drivers/funworld.cpp
+++ b/src/mame/drivers/funworld.cpp
@@ -3712,6 +3712,30 @@ ROM_START( jolycdie ) /* Bootleg PCB, NON encrypted graphics */
ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(fc9a8aa3) SHA1(6f0a98bd0c7a64281bb1cce35de11b76978d7123) ) // sldh
ROM_END
+/* Jolly Card Italian bootleg...
+
+ This PCB has an Altera EP910PC CPLD on board
+
+ This set doesn't need any NVRAM initialization.
+
+ 5 & 6 are coins.
+ W is payout.
+*/
+ROM_START( jolycdif ) /* Altera EP910PC CPLD */
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "1.bin", 0x8000, 0x8000, CRC(80983f6a) SHA1(222ce5d4800887de92a73decbad31e96f8da3b4a) )
+
+ ROM_REGION( 0x10000, "gfx1", 0 )
+ ROM_LOAD( "2.bin", 0x0000, 0x8000, CRC(a4452751) SHA1(a0b32a8801ebaee7ede7873b244f1a424433fe94) )
+ ROM_CONTINUE( 0x0000, 0x8000) /* Discarding 1nd half 1ST AND 2ND HALF IDENTICAL*/
+ ROM_LOAD( "3.bin", 0x8000, 0x8000, CRC(2856c82d) SHA1(7ce835bc2246ffede180cff0d8d0d4528afcc297) )
+ ROM_CONTINUE( 0x8000, 0x8000) /* Discarding 1nd half 1ST AND 2ND HALF IDENTICAL*/
+
+ ROM_REGION( 0x0200, "proms", 0 )
+ ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) ) // proper dump
+ROM_END
+
+
ROM_START( sjcd2kx3 ) /* Super Joly 2000 3x */
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "sj3.bin", 0x8000, 0x8000, CRC(c530b518) SHA1(36934d8e1e2cb2f71eb44a05b86ec970c9f398cd) )
@@ -6439,7 +6463,7 @@ DRIVER_INIT_MEMBER(funworld_state, saloon)
for (i = start; i < size; i++)
{
- rom[i] = BITSWAP8(rom[i], 7, 6, 5, 4, 3, 0, 1, 2);
+ rom[i] = bitswap<8>(rom[i], 7, 6, 5, 4, 3, 0, 1, 2);
}
{
@@ -6451,7 +6475,7 @@ DRIVER_INIT_MEMBER(funworld_state, saloon)
for (i = start; i < size; i++)
{
- a = ((i & 0xff00) | BITSWAP8(i & 0xff, 2, 0, 1, 3, 4, 5, 6, 7));
+ a = ((i & 0xff00) | bitswap<8>(i & 0xff, 2, 0, 1, 3, 4, 5, 6, 7));
rom[a] = buffer[i];
}
}
@@ -6469,7 +6493,7 @@ DRIVER_INIT_MEMBER(funworld_state, saloon)
for (i = startg; i < sizeg; i++)
{
- a = BITSWAP16(i, 15, 14, 13, 12, 11, 6, 7, 5, 8, 4, 10, 3, 9, 0, 1, 2);
+ a = bitswap<16>(i, 15, 14, 13, 12, 11, 6, 7, 5, 8, 4, 10, 3, 9, 0, 1, 2);
gfxrom[a] = buffer[i];
}
}
@@ -6483,7 +6507,7 @@ DRIVER_INIT_MEMBER(funworld_state, saloon)
for (i = startp; i < sizep; i++)
{
- prom[i] = BITSWAP8(prom[i], 2, 3, 5, 4, 6, 7, 1, 0);
+ prom[i] = bitswap<8>(prom[i], 2, 3, 5, 4, 6, 7, 1, 0);
}
{
@@ -6495,7 +6519,7 @@ DRIVER_INIT_MEMBER(funworld_state, saloon)
for (i = startp; i < sizep; i++)
{
- a = BITSWAP16(i, 15, 14, 13, 12, 11, 10, 9, 4, 8, 7, 6, 5, 2, 0, 1, 3);
+ a = bitswap<16>(i, 15, 14, 13, 12, 11, 10, 9, 4, 8, 7, 6, 5, 2, 0, 1, 3);
prom[a] = buffer[i];
}
}
@@ -6521,7 +6545,7 @@ DRIVER_INIT_MEMBER(funworld_state, multiwin)
ROM[x] = ROM[x] ^ 0x91;
uint8_t code;
- ROM[x] = BITSWAP8(ROM[x],5,6,7,2,3,0,1,4);
+ ROM[x] = bitswap<8>(ROM[x],5,6,7,2,3,0,1,4);
code = ROM[x];
@@ -6553,7 +6577,7 @@ DRIVER_INIT_MEMBER(funworld_state, royalcdc)
uint8_t code;
// this seems correct for the data, plaintext decrypts fine
- ROM[x] = BITSWAP8(ROM[x],2,6,7,4,3,1,5,0);
+ ROM[x] = bitswap<8>(ROM[x],2,6,7,4,3,1,5,0);
// the code uses different encryption, there are conflicts here
// so it's probably address based
@@ -6618,7 +6642,7 @@ DRIVER_INIT_MEMBER(funworld_state, dino4)
for (i = start; i < size; i++)
{
- rom[i] = BITSWAP8(rom[i], 7, 6, 5, 4, 3, 1, 2, 0);
+ rom[i] = bitswap<8>(rom[i], 7, 6, 5, 4, 3, 1, 2, 0);
}
{
@@ -6630,7 +6654,7 @@ DRIVER_INIT_MEMBER(funworld_state, dino4)
for (i = start; i < size; i++)
{
- a = BITSWAP16(i, 15, 13, 14, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0);
+ a = bitswap<16>(i, 15, 13, 14, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0);
rom[a] = buffer[i];
}
}
@@ -6648,7 +6672,7 @@ DRIVER_INIT_MEMBER(funworld_state, dino4)
for (i = startg; i < sizeg; i++)
{
- a = BITSWAP16(i, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 4, 5, 3, 2, 1, 0);
+ a = bitswap<16>(i, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 4, 5, 3, 2, 1, 0);
gfxrom[a] = buffer[i];
}
}
@@ -6678,7 +6702,7 @@ DRIVER_INIT_MEMBER(funworld_state, ctunk)
for (i = start; i < size; i++)
{
- rom[i] = BITSWAP8(rom[i], 5, 6, 7, 3, 4, 0, 1, 2);
+ rom[i] = bitswap<8>(rom[i], 5, 6, 7, 3, 4, 0, 1, 2);
}
//buffer = std::make_unique<uint8_t[]>(size);
@@ -6722,7 +6746,7 @@ static void decrypt_rcdino4(uint8_t *rom, int size, uint8_t *gfxrom, int sizeg,
for (i = start; i < size; i++)
{
- rom[i] = BITSWAP8(rom[i], 7, 6, 5, 4, 3, 1, 2, 0);
+ rom[i] = bitswap<8>(rom[i], 7, 6, 5, 4, 3, 1, 2, 0);
}
{
@@ -6734,7 +6758,7 @@ static void decrypt_rcdino4(uint8_t *rom, int size, uint8_t *gfxrom, int sizeg,
for (i = start; i < size; i++)
{
- a = BITSWAP16(i, 15, 13, 14, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0);
+ a = bitswap<16>(i, 15, 13, 14, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0);
rom[a] = buffer[i];
}
@@ -6752,7 +6776,7 @@ static void decrypt_rcdino4(uint8_t *rom, int size, uint8_t *gfxrom, int sizeg,
for (i = startg; i < sizeg; i++)
{
- a = BITSWAP16(i, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 4, 5, 3, 2, 1, 0);
+ a = bitswap<16>(i, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 4, 5, 3, 2, 1, 0);
gfxrom[a] = buffer[i];
}
}
@@ -6763,7 +6787,7 @@ static void decrypt_rcdino4(uint8_t *rom, int size, uint8_t *gfxrom, int sizeg,
for (x = 0x0000; x < 0x10000; x++)
{
- src[x] = BITSWAP8(src[x], 7, 6, 4, 5, 3, 2, 1, 0);
+ src[x] = bitswap<8>(src[x], 7, 6, 4, 5, 3, 2, 1, 0);
src[x] = src[x] ^ 0x81;
}
@@ -7025,7 +7049,8 @@ GAMEL( 1985, sjcd2kx3, jollycrd, fw1stpal, funworld, funworld_state, 0,
GAME( 1986, jolycdab, jollycrd, fw1stpal, funworld, funworld_state, 0, ROT0, "Inter Games", "Jolly Card (Austrian, Fun World, bootleg)", MACHINE_NOT_WORKING )
GAMEL( 1992, jolycdsp, jollycrd, cuoreuno, jolycdit, funworld_state, ctunk, ROT0, "TAB Austria", "Jolly Card (Spanish, blue TAB board, encrypted)", 0, layout_royalcrd )
GAMEL( 1990, jolycdid, jollycrd, cuoreuno, jolycdcr, funworld_state, 0, ROT0, "bootleg", "Jolly Card (Italian, different colors, set 1)", 0, layout_jollycrd ) // italian, CPLD, different colors.
-GAMEL( 1990, jolycdie, jollycrd, cuoreuno, jolycdib, funworld_state, 0, ROT0, "bootleg", "Jolly Card (Italian, different colors, set 2)", 0, layout_jollycrd ) // not from TAB blue PCB
+GAMEL( 1990, jolycdie, jollycrd, cuoreuno, jolycdib, funworld_state, 0, ROT0, "bootleg", "Jolly Card (Italian, different colors, set 2)", 0, layout_jollycrd ) // not from TAB blue PCB.
+GAMEL( 1990, jolycdif, jollycrd, cuoreuno, jolycdib, funworld_state, 0, ROT0, "bootleg", "Jolly Card (Italian, bootleg)", 0, layout_jollycrd ) // italian, CPLD. doesn't need nvram init.
// Bonus Card based...
GAMEL( 1986, bonuscrd, 0, fw2ndpal, bonuscrd, funworld_state, 0, ROT0, "Fun World", "Bonus Card (Austrian)", MACHINE_IMPERFECT_COLORS, layout_bonuscrd ) // use fw1stpal machine for green background
diff --git a/src/mame/drivers/gaelco.cpp b/src/mame/drivers/gaelco.cpp
index a61d51e855e..305b9d85a70 100644
--- a/src/mame/drivers/gaelco.cpp
+++ b/src/mame/drivers/gaelco.cpp
@@ -507,7 +507,7 @@ static MACHINE_CONFIG_START( bigkarnk )
MCFG_CPU_PROGRAM_MAP(bigkarnk_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", gaelco_state, irq6_line_hold)
- MCFG_CPU_ADD("audiocpu", M6809, 8867000/4) /* 68B09, 2.21675 MHz? */
+ MCFG_CPU_ADD("audiocpu", MC6809E, 8867000/4) /* 68B09EP, 2.21675 MHz? */
MCFG_CPU_PROGRAM_MAP(bigkarnk_snd_map)
MCFG_QUANTUM_TIME(attotime::from_hz(600))
diff --git a/src/mame/drivers/gaiden.cpp b/src/mame/drivers/gaiden.cpp
index 52a9b9d8149..3435e630598 100644
--- a/src/mame/drivers/gaiden.cpp
+++ b/src/mame/drivers/gaiden.cpp
@@ -1621,7 +1621,7 @@ void gaiden_state::descramble_drgnbowl(int descramble_cpu)
memcpy(&buffer[0], ROM, size);
for( i = 0; i < size; i++ )
{
- ROM[i] = buffer[BITSWAP24(i,23,22,21,20,
+ ROM[i] = buffer[bitswap<24>(i,23,22,21,20,
19,18,17,15,
16,14,13,12,
11,10, 9, 8,
@@ -1638,7 +1638,7 @@ void gaiden_state::descramble_drgnbowl(int descramble_cpu)
memcpy(&buffer[0],ROM,size);
for( i = 0; i < size; i++ )
{
- ROM[i] = buffer[BITSWAP24(i,23,22,21,20,
+ ROM[i] = buffer[bitswap<24>(i,23,22,21,20,
19,18,16,17,
15,14,13, 4,
3,12,11,10,
@@ -1672,7 +1672,7 @@ void gaiden_state::descramble_mastninj_gfx(uint8_t* src)
int i;
for (i = 0;i < len; i++)
{
- buffer[i] = src[BITSWAP24(i,
+ buffer[i] = src[bitswap<24>(i,
23,22,21,20,
19,18,17,16,
15,5,14,13,12,
@@ -1688,7 +1688,7 @@ void gaiden_state::descramble_mastninj_gfx(uint8_t* src)
int i;
for (i = 0; i < len; i++)
{
- buffer[i] = src[BITSWAP24(i,
+ buffer[i] = src[bitswap<24>(i,
23,22,21,20,
19,18,17,16,
15,6,14,13,12,
diff --git a/src/mame/drivers/galaga.cpp b/src/mame/drivers/galaga.cpp
index 463a0131641..b90d89a8119 100644
--- a/src/mame/drivers/galaga.cpp
+++ b/src/mame/drivers/galaga.cpp
@@ -3442,14 +3442,14 @@ DRIVER_INIT_MEMBER(xevious_state,xevios)
rom = memregion("gfx3")->base();
for (A = 0x5000;A < 0x7000;A++)
{
- rom[A] = BITSWAP8(rom[A],1,3,5,7,0,2,4,6);
+ rom[A] = bitswap<8>(rom[A],1,3,5,7,0,2,4,6);
}
/* convert one of tile map ROMs to the format used by Xevious */
rom = memregion("gfx4")->base();
for (A = 0x0000;A < 0x1000;A++)
{
- rom[A] = BITSWAP8(rom[A],3,7,5,1,2,6,4,0);
+ rom[A] = bitswap<8>(rom[A],3,7,5,1,2,6,4,0);
}
DRIVER_INIT_CALL(xevious);
diff --git a/src/mame/drivers/galaxian.cpp b/src/mame/drivers/galaxian.cpp
index 8f8894bd8c6..ca36d3144bd 100644
--- a/src/mame/drivers/galaxian.cpp
+++ b/src/mame/drivers/galaxian.cpp
@@ -1017,7 +1017,7 @@ void galaxian_state::monsterz_set_latch()
{
// read from a rom (which one?? "a-3e.k3" from audiocpu ($2700-$2fff) looks very suspicious)
uint8_t *rom = memregion("audiocpu")->base();
- m_protection_result = rom[0x2000 | (m_protection_state & 0x1fff)]; // probably needs a BITSWAP8
+ m_protection_result = rom[0x2000 | (m_protection_state & 0x1fff)]; // probably needs a bitswap<8>
// and an irq on the main z80 afterwards
m_maincpu->set_input_line(0, HOLD_LINE );
@@ -1096,7 +1096,7 @@ READ8_MEMBER(galaxian_state::frogger_sound_timer_r)
{
/* same as regular Konami sound but with bits 3,5 swapped */
uint8_t konami_value = konami_sound_timer_r(space, 0);
- return BITSWAP8(konami_value, 7,6,3,4,5,2,1,0);
+ return bitswap<8>(konami_value, 7,6,3,4,5,2,1,0);
}
@@ -1901,6 +1901,29 @@ static ADDRESS_MAP_START( turtles_map, AS_PROGRAM, 8, galaxian_state )
AM_RANGE(0xb800, 0xb83f) AM_MIRROR(0x47c0) AM_READWRITE(turtles_ppi8255_1_r, turtles_ppi8255_1_w)
ADDRESS_MAP_END
+
+/* map NOT derived from schematics */
+static ADDRESS_MAP_START( amigo2_map, AS_PROGRAM, 8, galaxian_state )
+ AM_RANGE(0x0000, 0x3fff) AM_ROM
+ AM_RANGE(0x4000, 0x4000) AM_READ_PORT("IN0") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
+ AM_RANGE(0x4001, 0x4001) AM_READ_PORT("IN1")
+ AM_RANGE(0x4002, 0x4002) AM_READ_PORT("IN2")
+ AM_RANGE(0x4003, 0x4003) AM_READ_PORT("IN3")
+ AM_RANGE(0x5000, 0x5000) AM_WRITE(konami_sound_control_w)
+ AM_RANGE(0x8000, 0x87ff) AM_RAM
+ AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
+ AM_RANGE(0x9000, 0x90ff) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
+ AM_RANGE(0xa000, 0xa000) AM_WRITE(scramble_background_red_w)
+ AM_RANGE(0xa008, 0xa008) AM_WRITE(irq_enable_w)
+ AM_RANGE(0xa010, 0xa010) AM_WRITE(galaxian_flip_screen_y_w)
+ AM_RANGE(0xa018, 0xa018) AM_WRITE(galaxian_flip_screen_x_w)
+ AM_RANGE(0xa020, 0xa020) AM_WRITE(scramble_background_green_w)
+ AM_RANGE(0xa028, 0xa028) AM_WRITE(scramble_background_blue_w)
+ AM_RANGE(0xa030, 0xa030) AM_WRITE(coin_count_0_w)
+ AM_RANGE(0xa038, 0xa038) AM_WRITE(coin_count_1_w)
+ AM_RANGE(0xa800, 0xa800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
+ADDRESS_MAP_END
+
static ADDRESS_MAP_START( turpins_map, AS_PROGRAM, 8, galaxian_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x87ff) AM_RAM
@@ -2073,13 +2096,13 @@ READ8_MEMBER(galaxian_state::froggeram_ppi8255_r)
uint8_t result = 0xff;
if (offset & 0x0100) result &= m_ppi8255[0]->read(space, offset & 3);
if (offset & 0x0200) result &= m_ppi8255[1]->read(space, offset & 3);
- return BITSWAP8(result, 0, 1, 2, 3, 4, 5, 6, 7);
+ return bitswap<8>(result, 0, 1, 2, 3, 4, 5, 6, 7);
}
WRITE8_MEMBER(galaxian_state::froggeram_ppi8255_w)
{
// same as theend, but accesses are scrambled
- data = BITSWAP8(data, 0, 1, 2, 3, 4, 5, 6, 7);
+ data = bitswap<8>(data, 0, 1, 2, 3, 4, 5, 6, 7);
if (offset & 0x0100) m_ppi8255[0]->write(space, offset & 3, data);
if (offset & 0x0200) m_ppi8255[1]->write(space, offset & 3, data);
}
@@ -6040,6 +6063,15 @@ static MACHINE_CONFIG_DERIVED( turtles, konami_base )
MCFG_CPU_PROGRAM_MAP(turtles_map)
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( amigo2, galaxian_base ) // bootleg has no i8255s
+
+ /* alternate memory map */
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(amigo2_map)
+
+ MCFG_FRAGMENT_ADD(konami_sound_2x_ay8910)
+MACHINE_CONFIG_END
+
static MACHINE_CONFIG_DERIVED( turpins, turtles )
// the ROMs came from a blister, so there aren't PCB infos available. Chip types and clocks are guessed.
@@ -6320,7 +6352,7 @@ void galaxian_state::decode_mooncrst(int length, uint8_t *dest)
uint8_t res = data;
if (BIT(data,1)) res ^= 0x40;
if (BIT(data,5)) res ^= 0x04;
- if ((offs & 1) == 0) res = BITSWAP8(res,7,2,5,4,3,6,1,0);
+ if ((offs & 1) == 0) res = bitswap<8>(res,7,2,5,4,3,6,1,0);
dest[offs] = res;
}
}
@@ -6405,7 +6437,7 @@ void galaxian_state::decode_dingoe()
/* Swap bit0 with bit4 */
if (offs & 0x02)
- data = BITSWAP8(data, 7,6,5,0,3,2,1,4);
+ data = bitswap<8>(data, 7,6,5,0,3,2,1,4);
rombase[offs] = data;
}
}
@@ -6418,7 +6450,7 @@ void galaxian_state::decode_frogger_sound()
/* the first ROM of the sound CPU has data lines D0 and D1 swapped */
for (offs = 0; offs < 0x800; offs++)
- rombase[offs] = BITSWAP8(rombase[offs], 7,6,5,4,3,2,0,1);
+ rombase[offs] = bitswap<8>(rombase[offs], 7,6,5,4,3,2,0,1);
}
// froggermc has a bigger first ROM of the sound CPU, thus a different decode
@@ -6429,7 +6461,7 @@ void galaxian_state::decode_froggermc_sound()
/* the first ROM of the sound CPU has data lines D0 and D1 swapped */
for (offs = 0; offs < 0x1000; offs++)
- rombase[offs] = BITSWAP8(rombase[offs], 7,6,5,4,3,2,0,1);
+ rombase[offs] = bitswap<8>(rombase[offs], 7,6,5,4,3,2,0,1);
}
@@ -6440,7 +6472,7 @@ void galaxian_state::decode_frogger_gfx()
/* the 2nd gfx ROM has data lines D0 and D1 swapped */
for (offs = 0x0800; offs < 0x1000; offs++)
- rombase[offs] = BITSWAP8(rombase[offs], 7,6,5,4,3,2,0,1);
+ rombase[offs] = bitswap<8>(rombase[offs], 7,6,5,4,3,2,0,1);
}
@@ -6525,7 +6557,7 @@ void galaxian_state::decode_victoryc()
if (i & 0x04) src[i] ^= 0x40;
if (i & 0x01) src[i] ^= 0x08;
- src[i] = BITSWAP8(src[i], 6, 3, 5, 4, 2, 7, 1, 0);
+ src[i] = bitswap<8>(src[i], 6, 3, 5, 4, 2, 7, 1, 0);
}
}
@@ -7168,7 +7200,7 @@ DRIVER_INIT_MEMBER(galaxian_state,mandinga)
{
DRIVER_INIT_CALL(scramble);
- /* watchdog is in a different location) */
+ /* watchdog is in a different location */
address_space &space = m_maincpu->space(AS_PROGRAM);
watchdog_timer_device *wdog = subdevice<watchdog_timer_device>("watchdog");
space.unmap_read(0x7000, 0x7000, 0x7ff);
@@ -7558,6 +7590,20 @@ ROM_START( galaxrfgg )
ROM_LOAD( "gxrf.6l", 0x0000, 0x0020, CRC(992350e5) SHA1(e901b1abd11cc0f02dd6d87b429d8997f762c15d) )
ROM_END
+ROM_START( galaxrcgg )
+ ROM_REGION( 0x4000, "maincpu", 0 )
+ ROM_LOAD( "7f.bin", 0x0000, 0x1000, CRC(c06eeb10) SHA1(cf1006a7ff02fe8b04a096d802fb8d8937dd913d) )
+ ROM_LOAD( "7j.bin", 0x1000, 0x1000, CRC(182ff334) SHA1(11e84aa887679e3fa977f00dd0b57a7df8ca7d88) )
+ ROM_LOAD( "7l.bin", 0x2000, 0x1000, CRC(420dbbf6) SHA1(678563afd091528ef358a8deaae4ac3cee62e8f4) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "1hj.bin", 0x0000, 0x0800, CRC(23e627ff) SHA1(11f8f50fcaa29f757f27d77ea2b977f65dc87e38) )
+ ROM_LOAD( "1kl.bin", 0x0800, 0x0800, CRC(0dbcee5b) SHA1(b169c6e539a583a99e1e3ef5982d4c1ab395551f) )
+
+ ROM_REGION( 0x0020, "proms", 0 ) // not dumped from this board, supposed to be the same
+ ROM_LOAD( "gxrf.6l", 0x0000, 0x0020, CRC(992350e5) SHA1(e901b1abd11cc0f02dd6d87b429d8997f762c15d) )
+ROM_END
+
ROM_START( astrians )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "astrians.7h", 0x0000, 0x0800, CRC(21eba3d0) SHA1(d07f141d785c86faca8c40af034c26f2789e9346) )
@@ -10611,6 +10657,35 @@ ROM_START( amigo )
ROM_LOAD( "amidar.clr", 0x0000, 0x0020, CRC(f940dcc3) SHA1(1015e56f37c244a850a8f4bf0e36668f047fd46d) )
ROM_END
+/*
+1x Z8400A-P5-Z80ACPU 10k 8-bit Microprocessor - main
+1x Z8400A-P5-Z80ACPU 3a 8-bit Microprocessor - sound
+2x AY-3-8910 6a,7a Programmable Sound Generator - sound
+1x LM380N 1 Audio Amplifier - sound
+1x oscillator 12.000MHz 12h
+
+PCB is marked: "AMI" on solder side
+*/
+
+ROM_START( amigo2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "a1.10l", 0x0000, 0x1000, CRC(e4aeac3f) SHA1(661e4badcebb6f6811e9b22d9b1561b64d7e77a9) ) // 2532
+ ROM_LOAD( "a2.9l", 0x1000, 0x1000, CRC(66ae3320) SHA1(3eba2f221ab2662b2b638a8822da48964ee2ceff) ) // 2532
+ ROM_LOAD( "a3.8l", 0x2000, 0x1000, CRC(c369b877) SHA1(4180afee10637781b408ebb50404dd8102351d46) ) // 2532
+ ROM_LOAD( "a4.7l", 0x3000, 0x1000, CRC(2194a1d3) SHA1(3807c2e25288b21e940ff33fb5d1541b559c5c1e) ) // 2532
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "a7.3b", 0x0000, 0x1000, CRC(8ca7b750) SHA1(4f4c2915503b85abe141d717fd254ee10c9da99e) ) // 2532
+ ROM_LOAD( "a8.4b", 0x1000, 0x1000, CRC(9b5bdc0a) SHA1(84d953618c8bf510d23b42232a856ac55f1baff5) ) // 2532
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "a6.3h", 0x0000, 0x0800, CRC(2082ad0a) SHA1(c6014d9575e92adf09b0961c2158a779ebe940c4) ) // 2516
+ ROM_LOAD( "a5.5h", 0x0800, 0x0800, CRC(3029f94f) SHA1(3b432b42e79f8b0a7d65e197f373a04e3c92ff20) ) // 2716
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "sn74s288n.1k", 0x0000, 0x0020, CRC(01004d3f) SHA1(e53cbc54ea96e846481a67bbcccf6b1726e70f9c) )
+ROM_END
+
ROM_START( amidars )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "am2d", 0x0000, 0x0800, CRC(24b79547) SHA1(eca735c6a35561a9a6ba8a20dca1e1c78ed073fc) )
@@ -11892,6 +11967,7 @@ GAME( 1979, galaxbsf2, galaxian, galaxian, galaxian, galaxian_state, galax
GAME( 1979, galaxianbl2, galaxian, galaxian, galaxianbl, galaxian_state, galaxian, ROT90, "bootleg", "Galaxian (bootleg, set 4)", MACHINE_SUPPORTS_SAVE )
GAME( 1980, galaxrf, galaxian, galaxian, galaxrf, galaxian_state, galaxian, ROT90, "bootleg (Recreativos Franco S.A.)", "Galaxian (Recreativos Franco S.A. Spanish bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1980, galaxrfgg, galaxian, galaxian, galaxrf, galaxian_state, galaxian, ROT90, "bootleg (Recreativos Franco S.A.)", "Galaxian Growing Galaxip / Galaxian Nave Creciente (Recreativos Franco S.A. Spanish bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, galaxrcgg, galaxian, galaxian, galaxrf, galaxian_state, galaxian, ROT90, "bootleg (Recreativos Covadonga)", "Galaxian Growing Galaxip / Galaxian Nave Creciente (Recreativos Covadonga Spanish bootleg)", MACHINE_SUPPORTS_SAVE )
// these have the extra 'linescroll effect' title screens, like Moon Alien 2 but made out of a random tile, they lack an energy bar.
GAME( 1979, moonaln, galaxian, galaxian, superg, galaxian_state, galaxian, ROT90, "Namco / Nichibutsu (Karateco license?)", "Moon Alien", MACHINE_SUPPORTS_SAVE ) // or bootleg?
@@ -12099,7 +12175,8 @@ GAME( 1981, amidar1, amidar, turtles, amidar, galaxian_state, turtl
GAME( 1982, amidaru, amidar, turtles, amidaru, galaxian_state, turtles, ROT90, "Konami (Stern Electronics license)", "Amidar (Stern Electronics)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, amidaro, amidar, turtles, amidaro, galaxian_state, turtles, ROT90, "Konami (Olympia license)", "Amidar (Olympia)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, amidarb, amidar, turtles, amidaru, galaxian_state, turtles, ROT90, "bootleg", "Amidar (bootleg)", MACHINE_SUPPORTS_SAVE ) /* similar to Amigo bootleg */
-GAME( 1982, amigo, amidar, turtles, amidaru, galaxian_state, turtles, ROT90, "bootleg", "Amigo", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, amigo, amidar, turtles, amidaru, galaxian_state, turtles, ROT90, "bootleg", "Amigo (bootleg of Amidar, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, amigo2, amidar, amigo2, amidaru, galaxian_state, turtles, ROT90, "bootleg", "Amigo (bootleg of Amidar, set 2)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, amidars, amidar, scramble, amidars, galaxian_state, scramble, ROT90, "Konami", "Amidar (Scramble hardware)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, mandinga, amidar, scramble, amidars, galaxian_state, mandinga, ROT90, "bootleg (Artemi)", "Mandinga (bootleg of Amidar)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // sound ROMs have identical halves, reference for color http://www.youtube.com/watch?v=6uGK4AZxV2U
diff --git a/src/mame/drivers/gameplan.cpp b/src/mame/drivers/gameplan.cpp
index 1460568edfa..4cf8aabac2a 100644
--- a/src/mame/drivers/gameplan.cpp
+++ b/src/mame/drivers/gameplan.cpp
@@ -986,18 +986,18 @@ static MACHINE_CONFIG_START( gameplan )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.33)
/* via */
- MCFG_DEVICE_ADD("via6522_0", VIA6522, 0)
+ MCFG_DEVICE_ADD("via6522_0", VIA6522, GAMEPLAN_MAIN_CPU_CLOCK)
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(gameplan_state, video_data_w))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(gameplan_state, gameplan_video_command_w))
MCFG_VIA6522_CA2_HANDLER(WRITELINE(gameplan_state, video_command_trigger_w))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(gameplan_state, via_irq))
- MCFG_DEVICE_ADD("via6522_1", VIA6522, 0)
+ MCFG_DEVICE_ADD("via6522_1", VIA6522, GAMEPLAN_MAIN_CPU_CLOCK)
MCFG_VIA6522_READPA_HANDLER(READ8(gameplan_state, io_port_r))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(gameplan_state, io_select_w))
MCFG_VIA6522_CB2_HANDLER(WRITELINE(gameplan_state, coin_w))
- MCFG_DEVICE_ADD("via6522_2", VIA6522, 0)
+ MCFG_DEVICE_ADD("via6522_2", VIA6522, GAMEPLAN_MAIN_CPU_CLOCK)
MCFG_VIA6522_READPB_HANDLER(DEVREAD8("soundlatch", generic_latch_8_device, read))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(gameplan_state, audio_cmd_w))
MCFG_VIA6522_CA2_HANDLER(WRITELINE(gameplan_state, audio_trigger_w))
diff --git a/src/mame/drivers/gaplus.cpp b/src/mame/drivers/gaplus.cpp
index 4646a889490..b9f839e7f98 100644
--- a/src/mame/drivers/gaplus.cpp
+++ b/src/mame/drivers/gaplus.cpp
@@ -515,15 +515,15 @@ void gaplus_state::machine_start()
static MACHINE_CONFIG_START( gaplus )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M6809, 24576000/16) /* 1.536 MHz */
+ MCFG_CPU_ADD("maincpu", MC6809E, XTAL_24_576MHz/16) /* 1.536 MHz */
MCFG_CPU_PROGRAM_MAP(cpu1_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", gaplus_state, vblank_main_irq)
- MCFG_CPU_ADD("sub", M6809, 24576000/16) /* 1.536 MHz */
+ MCFG_CPU_ADD("sub", MC6809E, XTAL_24_576MHz/16) /* 1.536 MHz */
MCFG_CPU_PROGRAM_MAP(cpu2_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", gaplus_state, vblank_sub_irq)
- MCFG_CPU_ADD("sub2", M6809, 24576000/16) /* 1.536 MHz */
+ MCFG_CPU_ADD("sub2", MC6809E, XTAL_24_576MHz/16) /* 1.536 MHz */
MCFG_CPU_PROGRAM_MAP(cpu3_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", gaplus_state, vblank_sub2_irq)
@@ -571,7 +571,7 @@ static MACHINE_CONFIG_START( gaplus )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("namco", NAMCO_15XX, 24576000/1024)
+ MCFG_SOUND_ADD("namco", NAMCO_15XX, XTAL_24_576MHz/1024)
MCFG_NAMCO_AUDIO_VOICES(8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
diff --git a/src/mame/drivers/gba.cpp b/src/mame/drivers/gba.cpp
index af7fe7991f4..969881e4185 100644
--- a/src/mame/drivers/gba.cpp
+++ b/src/mame/drivers/gba.cpp
@@ -238,8 +238,8 @@ void gba_state::dma_exec(int ch)
{
if ((ctrl>>10) & 1)
{
- src &= 0xfffffffc;
- dst &= 0xfffffffc;
+ src &= 0xfffffffe;
+ dst &= 0xfffffffe;
// 32-bit
space.write_dword(dst, space.read_dword(src));
@@ -1238,16 +1238,16 @@ WRITE_LINE_MEMBER(gba_state::dma_vblank_callback)
static ADDRESS_MAP_START( gba_map, AS_PROGRAM, 32, gba_state )
ADDRESS_MAP_UNMAP_HIGH // for "Fruit Mura no Doubutsu Tachi" and "Classic NES Series"
- AM_RANGE(0x00000000, 0x00003fff) AM_ROM AM_READ(gba_bios_r)
+ AM_RANGE(0x00000000, 0x00003fff) AM_ROM AM_MIRROR(0x01ffc000) AM_READ(gba_bios_r)
AM_RANGE(0x02000000, 0x0203ffff) AM_RAM AM_MIRROR(0xfc0000)
AM_RANGE(0x03000000, 0x03007fff) AM_RAM AM_MIRROR(0xff8000)
AM_RANGE(0x04000000, 0x0400005f) AM_DEVREADWRITE("lcd", gba_lcd_device, video_r, video_w)
AM_RANGE(0x04000060, 0x040003ff) AM_READWRITE(gba_io_r, gba_io_w)
AM_RANGE(0x04000400, 0x04ffffff) AM_NOP // Not used
- AM_RANGE(0x05000000, 0x050003ff) AM_DEVREADWRITE("lcd", gba_lcd_device, gba_pram_r, gba_pram_w) // Palette RAM
- AM_RANGE(0x06000000, 0x06017fff) AM_DEVREADWRITE("lcd", gba_lcd_device, gba_vram_r, gba_vram_w) // VRAM
- AM_RANGE(0x07000000, 0x070003ff) AM_DEVREADWRITE("lcd", gba_lcd_device, gba_oam_r, gba_oam_w) // OAM
- AM_RANGE(0x07000400, 0x07ffffff) AM_NOP // Not used
+ AM_RANGE(0x05000000, 0x050003ff) AM_MIRROR(0x00fffc00) AM_DEVREADWRITE("lcd", gba_lcd_device, gba_pram_r, gba_pram_w) // Palette RAM
+ AM_RANGE(0x06000000, 0x06017fff) AM_MIRROR(0x00fe0000) AM_DEVREADWRITE("lcd", gba_lcd_device, gba_vram_r, gba_vram_w) // VRAM
+ AM_RANGE(0x06018000, 0x0601ffff) AM_MIRROR(0x00fe0000) AM_DEVREADWRITE("lcd", gba_lcd_device, gba_vram_r, gba_vram_w) // VRAM
+ AM_RANGE(0x07000000, 0x070003ff) AM_MIRROR(0x00fffc00) AM_DEVREADWRITE("lcd", gba_lcd_device, gba_oam_r, gba_oam_w) // OAM
//AM_RANGE(0x08000000, 0x0cffffff) // cart ROM + mirrors, mapped here at machine_start if a cart is present
AM_RANGE(0x10000000, 0xffffffff) AM_READ(gba_10000000_r) // for "Justice League Chronicles" (game bug)
ADDRESS_MAP_END
@@ -1353,6 +1353,8 @@ void gba_state::machine_start()
{
m_maincpu->space(AS_PROGRAM).install_read_handler(0xe000000, 0xe00ffff, read32_delegate(FUNC(gba_cart_slot_device::read_ram),(gba_cart_slot_device*)m_cart));
m_maincpu->space(AS_PROGRAM).install_write_handler(0xe000000, 0xe00ffff, write32_delegate(FUNC(gba_cart_slot_device::write_ram),(gba_cart_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0xe010000, 0xe01ffff, read32_delegate(FUNC(gba_cart_slot_device::read_ram),(gba_cart_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0xe010000, 0xe01ffff, write32_delegate(FUNC(gba_cart_slot_device::write_ram),(gba_cart_slot_device*)m_cart));
}
if (m_cart->get_type() == GBA_EEPROM || m_cart->get_type() == GBA_EEPROM4 || m_cart->get_type() == GBA_EEPROM64 || m_cart->get_type() == GBA_BOKTAI)
{
diff --git a/src/mame/drivers/gei.cpp b/src/mame/drivers/gei.cpp
index 28c2ffbc11e..87186cd4c6b 100644
--- a/src/mame/drivers/gei.cpp
+++ b/src/mame/drivers/gei.cpp
@@ -212,8 +212,8 @@ WRITE8_MEMBER(gei_state::sound_w)
output().set_led_value(9, BIT(data, 3));
/* bit 5 - ticket out in trivia games */
- if (m_ticket != nullptr)
- m_ticket->write(machine().dummy_space(), 0, (data & 0x20) << 2);
+ if (m_ticket.found())
+ m_ticket->motor_w(BIT(data, 5));
/* bit 6 enables NMI */
m_nmi_mask = data & 0x40;
diff --git a/src/mame/drivers/gimix.cpp b/src/mame/drivers/gimix.cpp
index 4467b925b56..be06ff87ecb 100644
--- a/src/mame/drivers/gimix.cpp
+++ b/src/mame/drivers/gimix.cpp
@@ -545,7 +545,7 @@ MCFG_ADDRESS_MAP_BANK_STRIDE(0x1000)
static MACHINE_CONFIG_START( gimix )
// basic machine hardware
- MCFG_CPU_ADD("maincpu", M6809E, XTAL_8MHz)
+ MCFG_CPU_ADD("maincpu", MC6809, XTAL_8MHz)
MCFG_CPU_PROGRAM_MAP(gimix_mem)
MCFG_CPU_IO_MAP(gimix_io)
diff --git a/src/mame/drivers/gladiatr.cpp b/src/mame/drivers/gladiatr.cpp
index 6f8e32b0e9e..e77bcdd8560 100644
--- a/src/mame/drivers/gladiatr.cpp
+++ b/src/mame/drivers/gladiatr.cpp
@@ -141,7 +141,7 @@ Address Dir Data Name Description
--------111----- W xxxxxxxx ADCS command to 6809
-Third CPU (6809)
+Third CPU (HD6809)
----------------
Address Dir Data Name Description
@@ -299,7 +299,7 @@ READ8_MEMBER(gladiatr_state::cctl_p2_r)
READ8_MEMBER(gladiatr_state::ucpu_p2_r)
{
- return BITSWAP8(m_dsw1->read(), 0,1,2,3,4,5,6,7);
+ return bitswap<8>(m_dsw1->read(), 0,1,2,3,4,5,6,7);
}
WRITE8_MEMBER(gladiatr_state::ccpu_p2_w)
@@ -356,7 +356,7 @@ WRITE8_MEMBER(gladiatr_state::csnd_p1_w)
READ8_MEMBER(gladiatr_state::csnd_p2_r)
{
- return BITSWAP8(m_dsw2->read(), 2,3,4,5,6,7,1,0);
+ return bitswap<8>(m_dsw2->read(), 2,3,4,5,6,7,1,0);
}
@@ -946,7 +946,7 @@ static MACHINE_CONFIG_START( ppking )
MCFG_CPU_IO_MAP(ppking_cpu2_io)
MCFG_CPU_PERIODIC_INT_DRIVER(ppking_state, irq0_line_assert, 60)
- MCFG_CPU_ADD("audiocpu", M6809, XTAL_12MHz/16) /* verified on pcb */
+ MCFG_CPU_ADD("audiocpu", MC6809, XTAL_12MHz/4) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(ppking_cpu3_map)
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
@@ -1010,7 +1010,7 @@ static MACHINE_CONFIG_START( gladiatr )
MCFG_CPU_PROGRAM_MAP(cpu2_map)
MCFG_CPU_IO_MAP(gladiatr_cpu2_io)
- MCFG_CPU_ADD("audiocpu", M6809, XTAL_12MHz/16) /* verified on pcb */
+ MCFG_CPU_ADD("audiocpu", MC6809, XTAL_12MHz/4) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(gladiatr_cpu3_map)
MCFG_MACHINE_RESET_OVERRIDE(gladiatr_state,gladiator)
diff --git a/src/mame/drivers/gng.cpp b/src/mame/drivers/gng.cpp
index 6dd73d4a42c..a899095f732 100644
--- a/src/mame/drivers/gng.cpp
+++ b/src/mame/drivers/gng.cpp
@@ -357,7 +357,7 @@ void gng_state::machine_reset()
static MACHINE_CONFIG_START( gng )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M6809, XTAL_12MHz/8) /* verified on pcb */
+ MCFG_CPU_ADD("maincpu", MC6809, XTAL_12MHz/2) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(gng_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", gng_state, irq0_line_hold)
@@ -503,8 +503,8 @@ ROM_START( gngbl )
ROM_REGION( 0x18000, "gfx2", 0 )
ROM_LOAD( "13.84490.3e", 0x00000, 0x4000, CRC(ddd56fa9) SHA1(f9d77eee5e2738b7e83ba02fcc55dd480391479f) ) /* tiles 0-1 Plane 1*/
ROM_LOAD( "12.84490.1e", 0x04000, 0x4000, CRC(7302529d) SHA1(8434c994cc55d2586641f3b90b6b15fd65dfb67c) ) /* tiles 2-3 Plane 1*/
- ROM_LOAD( "11.84490.3c", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) /* tiles 0-1 Plane 2*/
- ROM_LOAD( "10.84490.1c", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) /* tiles 2-3 Plane 2*/
+ ROM_LOAD( "11.84490.3c", 0x08000, 0x4000, CRC(20035bda) SHA1(bbb1fba0eb19471f66d29526fa8423ccb047bd63) ) /* tiles 0-1 Plane 2*/
+ ROM_LOAD( "10.84490.1c", 0x0c000, 0x4000, CRC(f12ba271) SHA1(1c42fa02cb27b35d10c3f7f036005e747f9f6b79) ) /* tiles 2-3 Plane 2*/
ROM_LOAD( "9.84490.3b", 0x10000, 0x4000, CRC(e525207d) SHA1(1947f159189b3a53f1251d8653b6e7c65c91fc3c) ) /* tiles 0-1 Plane 3*/
ROM_LOAD( "8.84490.1b", 0x14000, 0x4000, CRC(2d77e9b2) SHA1(944da1ce29a18bf0fc8deff78bceacba0bf23a07) ) /* tiles 2-3 Plane 3*/
@@ -529,7 +529,7 @@ ROM_START( gngprot )
ROM_LOAD( "gg14h.bin", 0x0000, 0x8000, CRC(55cfb196) SHA1(df9cdbb24c26bca226d7274225725d62ea854c7a) )
ROM_REGION( 0x04000, "gfx1", 0 )
- ROM_LOAD( "1.84490.11e", 0x00000, 0x4000, BAD_DUMP CRC(ecfccf07) SHA1(0a1518e19a2e0a4cc3dde4b9568202ea911b5ece) ) /* characters */ // MISSING FROM THIS SET! (was on PCB, why wasn't it dumped?)
+ ROM_LOAD( "gg11e.bin", 0x00000, 0x4000, CRC(ccea9365) SHA1(bb567529fa376afc0a5afd331dcecef4f61cc8a3) ) /* characters */
ROM_REGION( 0x18000, "gfx2", 0 )
ROM_LOAD( "gg3e.bin", 0x00000, 0x4000, CRC(68db22c8) SHA1(ada859bfa60d9563a8a86b1b6526f626b932981c) ) /* tiles 0-1 Plane 1*/
diff --git a/src/mame/drivers/goldnpkr.cpp b/src/mame/drivers/goldnpkr.cpp
index a17b44474cb..ae900522393 100644
--- a/src/mame/drivers/goldnpkr.cpp
+++ b/src/mame/drivers/goldnpkr.cpp
@@ -11042,7 +11042,7 @@ DRIVER_INIT_MEMBER(goldnpkr_state, flcnw)
for (i = start; i < size; i++)
{
ROM[i] = ROM[i] ^ 0xa0;
- ROM[i] = BITSWAP8(ROM[i], 7, 6, 3, 4, 5, 2, 1, 0);
+ ROM[i] = bitswap<8>(ROM[i], 7, 6, 3, 4, 5, 2, 1, 0);
}
}
diff --git a/src/mame/drivers/goldstar.cpp b/src/mame/drivers/goldstar.cpp
index 358bbd6f7be..5d56ee2cd97 100644
--- a/src/mame/drivers/goldstar.cpp
+++ b/src/mame/drivers/goldstar.cpp
@@ -1144,7 +1144,7 @@ WRITE8_MEMBER(unkch_state::coincount_w)
*/
- m_ticket_dispenser->write(space, offset, data & 0x80);
+ m_ticket_dispenser->motor_w(BIT(data, 7));
machine().bookkeeping().coin_counter_w(0, data & 0x04); /* Credit counter */
machine().bookkeeping().coin_counter_w(1, data & 0x08); /* Key In counter */
@@ -11967,7 +11967,7 @@ DRIVER_INIT_MEMBER(wingco_state, magoddsc)
if ((A & 4) == 4)
ROM[A] ^= 0x01;
- ROM[A] = BITSWAP8(ROM[A], 3,6,5,4,7,2,1,0);
+ ROM[A] = bitswap<8>(ROM[A], 3,6,5,4,7,2,1,0);
}
}
@@ -13361,10 +13361,10 @@ DRIVER_INIT_MEMBER(cmaster_state, fb2010)
switch(i & 0x22)
{
- case 0x00: x = BITSWAP8(x^0x4c^0xff, 0,4,7,6,5,1,3,2); break;
- case 0x02: x = BITSWAP8(x^0xc0^0xff, 7,6,0,5,3,2,1,4); break; // 67053214
- case 0x20: x = BITSWAP8(x^0x6b^0xff, 4,3,2,7,5,6,0,1); break;
- case 0x22: x = BITSWAP8(x^0x23^0xff, 0,6,1,3,4,5,2,7); break;
+ case 0x00: x = bitswap<8>(x^0x4c^0xff, 0,4,7,6,5,1,3,2); break;
+ case 0x02: x = bitswap<8>(x^0xc0^0xff, 7,6,0,5,3,2,1,4); break; // 67053214
+ case 0x20: x = bitswap<8>(x^0x6b^0xff, 4,3,2,7,5,6,0,1); break;
+ case 0x22: x = bitswap<8>(x^0x23^0xff, 0,6,1,3,4,5,2,7); break;
}
ROM[i] = x;
@@ -15373,9 +15373,9 @@ uint8_t cb3_state::cb3_decrypt(uint8_t cipherText, uint16_t address)
idx = BIT(cipherText, 1) | (BIT(address,0) << 1) | (BIT(address, 4) << 2);
if (rotation[idx] == 0)
- output = BITSWAP8(cipherText, 5, 6, 3, 4, 7, 2, 1, 0); // rotates bit #3, #5 and #7 in one direction...
+ output = bitswap<8>(cipherText, 5, 6, 3, 4, 7, 2, 1, 0); // rotates bit #3, #5 and #7 in one direction...
else
- output = BITSWAP8(cipherText, 3, 6, 7, 4, 5, 2, 1, 0); // ... or in the other
+ output = bitswap<8>(cipherText, 3, 6, 7, 4, 5, 2, 1, 0); // ... or in the other
return output ^ sbox[idx];
}
@@ -15437,7 +15437,7 @@ DRIVER_INIT_MEMBER(cb3_state, chrygld)
for (A = 0; A < 0x10000; A++)
{
uint8_t dat = ROM[A];
- dat = BITSWAP8(dat, 5, 6, 3, 4, 7, 2, 1, 0);
+ dat = bitswap<8>(dat, 5, 6, 3, 4, 7, 2, 1, 0);
ROM[A] = dat;
}
@@ -15494,14 +15494,14 @@ DRIVER_INIT_MEMBER(cmaster_state, nfb96sea)
uint8_t x = ROM[i];
switch(i & 7)
{
- case 0: x = BITSWAP8(x ^ 0x80, 1, 6, 7, 4, 5, 2, 3, 0); break;
- case 1: x = BITSWAP8(x ^ 0xa0, 5, 6, 3, 4, 1, 2, 7, 0); break;
- case 2: x = BITSWAP8(x ^ 0x02, 5, 6, 3, 4, 1, 2, 7, 0); break;
- case 3: x = BITSWAP8(x ^ 0xa0, 3, 6, 1, 4, 7, 2, 5, 0); break;
- case 4: x = BITSWAP8(x ^ 0x82, 3, 6, 1, 4, 7, 2, 5, 0); break;
- case 5: x = BITSWAP8(x ^ 0x02, 1, 6, 7, 4, 5, 2, 3, 0); break;
- case 6: x = BITSWAP8(x ^ 0x08, 3, 6, 1, 4, 7, 2, 5, 0); break;
- case 7: x = BITSWAP8(x ^ 0x80, 5, 6, 3, 4, 1, 2, 7, 0); break;
+ case 0: x = bitswap<8>(x ^ 0x80, 1, 6, 7, 4, 5, 2, 3, 0); break;
+ case 1: x = bitswap<8>(x ^ 0xa0, 5, 6, 3, 4, 1, 2, 7, 0); break;
+ case 2: x = bitswap<8>(x ^ 0x02, 5, 6, 3, 4, 1, 2, 7, 0); break;
+ case 3: x = bitswap<8>(x ^ 0xa0, 3, 6, 1, 4, 7, 2, 5, 0); break;
+ case 4: x = bitswap<8>(x ^ 0x82, 3, 6, 1, 4, 7, 2, 5, 0); break;
+ case 5: x = bitswap<8>(x ^ 0x02, 1, 6, 7, 4, 5, 2, 3, 0); break;
+ case 6: x = bitswap<8>(x ^ 0x08, 3, 6, 1, 4, 7, 2, 5, 0); break;
+ case 7: x = bitswap<8>(x ^ 0x80, 5, 6, 3, 4, 1, 2, 7, 0); break;
}
ROM[i] = x;
@@ -15518,10 +15518,10 @@ DRIVER_INIT_MEMBER(cmaster_state, schery97)
uint8_t x = ROM[i];
switch(i & 0x12)
{
- case 0x00: x = BITSWAP8(x ^ 0x3e, 1, 0, 7, 6, 5, 4, 3, 2); break;
- case 0x02: x = BITSWAP8(x ^ 0x4d, 0, 7, 6, 5, 4, 3, 2, 1); break;
- case 0x10: x = BITSWAP8(x ^ 0x24, 2, 1, 0, 7, 6, 5, 4, 3); break;
- case 0x12: x = BITSWAP8(x ^ 0xbb, 4, 3, 2, 1, 0, 7, 6, 5); break;
+ case 0x00: x = bitswap<8>(x ^ 0x3e, 1, 0, 7, 6, 5, 4, 3, 2); break;
+ case 0x02: x = bitswap<8>(x ^ 0x4d, 0, 7, 6, 5, 4, 3, 2, 1); break;
+ case 0x10: x = bitswap<8>(x ^ 0x24, 2, 1, 0, 7, 6, 5, 4, 3); break;
+ case 0x12: x = bitswap<8>(x ^ 0xbb, 4, 3, 2, 1, 0, 7, 6, 5); break;
}
ROM[i] = x;
@@ -15540,10 +15540,10 @@ DRIVER_INIT_MEMBER(cmaster_state, schery97a)
uint8_t x = ROM[i];
switch(i & 6)
{
- case 0: x = BITSWAP8(x ^ 0xb9, 4, 0, 6, 7, 3, 1, 5, 2); break;
- case 2: x = BITSWAP8(x ^ 0x8f, 6, 7, 4, 0, 3, 2, 1, 5); break;
- case 4: x = BITSWAP8(x ^ 0xd2, 3, 4, 0, 2, 5, 6, 1, 7); break;
- case 6: x = BITSWAP8(x ^ 0xd1, 6, 0, 2, 1, 4, 5, 3, 7); break;
+ case 0: x = bitswap<8>(x ^ 0xb9, 4, 0, 6, 7, 3, 1, 5, 2); break;
+ case 2: x = bitswap<8>(x ^ 0x8f, 6, 7, 4, 0, 3, 2, 1, 5); break;
+ case 4: x = bitswap<8>(x ^ 0xd2, 3, 4, 0, 2, 5, 6, 1, 7); break;
+ case 6: x = bitswap<8>(x ^ 0xd1, 6, 0, 2, 1, 4, 5, 3, 7); break;
}
ROM[i] = x;
@@ -15563,10 +15563,10 @@ DRIVER_INIT_MEMBER(cmaster_state, skill98)
uint8_t x = ROM[i];
switch(i & 0x12)
{
- case 0x00: x = BITSWAP8(x ^ 0x21, 2, 1, 0, 7, 6, 5, 4, 3); break;
- case 0x02: x = BITSWAP8(x ^ 0x45, 2, 1, 0, 7, 6, 5, 4, 3); break;
- case 0x10: x = BITSWAP8(x ^ 0x23, 4, 3, 2, 1, 0, 7, 6, 5); break;
- case 0x12: x = BITSWAP8(x ^ 0x5b, 4, 3, 2, 1, 0, 7, 6, 5); break;
+ case 0x00: x = bitswap<8>(x ^ 0x21, 2, 1, 0, 7, 6, 5, 4, 3); break;
+ case 0x02: x = bitswap<8>(x ^ 0x45, 2, 1, 0, 7, 6, 5, 4, 3); break;
+ case 0x10: x = bitswap<8>(x ^ 0x23, 4, 3, 2, 1, 0, 7, 6, 5); break;
+ case 0x12: x = bitswap<8>(x ^ 0x5b, 4, 3, 2, 1, 0, 7, 6, 5); break;
}
ROM[i] = x;
@@ -15585,10 +15585,10 @@ DRIVER_INIT_MEMBER(cmaster_state, nfb96_c1)
switch(i & 0x12)
{
- case 0x00: x = BITSWAP8(x ^ 0xf5, 6, 4, 3, 7, 0, 1, 5, 2); break;
- case 0x02: x = BITSWAP8(x ^ 0xe6, 4, 6, 3, 0, 7, 2, 1, 5); break;
- case 0x10: x = BITSWAP8(x ^ 0x34, 0, 3, 5, 2, 4, 6, 1, 7); break;
- case 0x12: x = BITSWAP8(x ^ 0xc6, 2, 0, 4, 1, 6, 5, 3, 7); break;
+ case 0x00: x = bitswap<8>(x ^ 0xf5, 6, 4, 3, 7, 0, 1, 5, 2); break;
+ case 0x02: x = bitswap<8>(x ^ 0xe6, 4, 6, 3, 0, 7, 2, 1, 5); break;
+ case 0x10: x = bitswap<8>(x ^ 0x34, 0, 3, 5, 2, 4, 6, 1, 7); break;
+ case 0x12: x = bitswap<8>(x ^ 0xc6, 2, 0, 4, 1, 6, 5, 3, 7); break;
}
ROM[i] = x;
}
@@ -15606,10 +15606,10 @@ DRIVER_INIT_MEMBER(cmaster_state, nfb96_c2)
switch(i & 0x22)
{
- case 0x00: x = BITSWAP8(x ^ 0x5f, 6, 4, 3, 7, 0, 5, 2, 1); break;
- case 0x02: x = BITSWAP8(x ^ 0xe7, 4, 6, 3, 0, 7, 5, 1, 2); break;
- case 0x20: x = BITSWAP8(x ^ 0x18, 0, 3, 5, 2, 4, 7, 1, 6); break;
- case 0x22: x = BITSWAP8(x ^ 0x74, 2, 0, 4, 1, 6, 7, 3, 5); break;
+ case 0x00: x = bitswap<8>(x ^ 0x5f, 6, 4, 3, 7, 0, 5, 2, 1); break;
+ case 0x02: x = bitswap<8>(x ^ 0xe7, 4, 6, 3, 0, 7, 5, 1, 2); break;
+ case 0x20: x = bitswap<8>(x ^ 0x18, 0, 3, 5, 2, 4, 7, 1, 6); break;
+ case 0x22: x = bitswap<8>(x ^ 0x74, 2, 0, 4, 1, 6, 7, 3, 5); break;
}
ROM[i] = x;
@@ -15627,10 +15627,10 @@ DRIVER_INIT_MEMBER(cmaster_state, nfb96_d)
switch(i & 5)
{
- case 0: x = BITSWAP8(x ^ 0x6a, 2, 1, 0, 7, 6, 5, 4, 3); break;
- case 1: x = BITSWAP8(x ^ 0xcc, 0, 7, 6, 5, 4, 3, 2, 1); break;
- case 4: x = BITSWAP8(x ^ 0x8f, 3, 2, 1, 0, 7, 6, 5, 4); break;
- case 5: x = BITSWAP8(x ^ 0x93, 4, 3, 2, 1, 0, 7, 6, 5); break;
+ case 0: x = bitswap<8>(x ^ 0x6a, 2, 1, 0, 7, 6, 5, 4, 3); break;
+ case 1: x = bitswap<8>(x ^ 0xcc, 0, 7, 6, 5, 4, 3, 2, 1); break;
+ case 4: x = bitswap<8>(x ^ 0x8f, 3, 2, 1, 0, 7, 6, 5, 4); break;
+ case 5: x = bitswap<8>(x ^ 0x93, 4, 3, 2, 1, 0, 7, 6, 5); break;
}
ROM[i] = x;
}
@@ -15654,10 +15654,10 @@ DRIVER_INIT_MEMBER(cmaster_state, nfb96_dk)
switch(i & 5)
{
- case 0: x = BITSWAP8(x ^ 0xce, 1, 0, 7, 6, 5, 4, 3, 2); break;
- case 1: x = BITSWAP8(x ^ 0x9e, 3, 2, 1, 0, 7, 6, 5, 4); break;
- case 4: x = BITSWAP8(x ^ 0xc3, 0, 7, 6, 5, 4, 3, 2, 1); break;
- case 5: x = BITSWAP8(x ^ 0xdb, 4, 3, 2, 1, 0, 7, 6, 5); break;
+ case 0: x = bitswap<8>(x ^ 0xce, 1, 0, 7, 6, 5, 4, 3, 2); break;
+ case 1: x = bitswap<8>(x ^ 0x9e, 3, 2, 1, 0, 7, 6, 5, 4); break;
+ case 4: x = bitswap<8>(x ^ 0xc3, 0, 7, 6, 5, 4, 3, 2, 1); break;
+ case 5: x = bitswap<8>(x ^ 0xdb, 4, 3, 2, 1, 0, 7, 6, 5); break;
}
ROM[i] = x;
}
@@ -15675,10 +15675,10 @@ DRIVER_INIT_MEMBER(cmaster_state, rp35)
switch(i & 3)
{
- case 0: x = BITSWAP8(x ^ 0x2a, 0, 7, 6, 5, 4, 3, 2, 1); break;
- case 1: x = BITSWAP8(x ^ 0x1c, 4, 3, 2, 1, 0, 7, 6, 5); break;
- case 2: x = BITSWAP8(x ^ 0x4f, 3, 2, 1, 0, 7, 6, 5, 4); break;
- case 3: x = BITSWAP8(x ^ 0x23, 1, 0, 7, 6, 5, 4, 3, 2); break;
+ case 0: x = bitswap<8>(x ^ 0x2a, 0, 7, 6, 5, 4, 3, 2, 1); break;
+ case 1: x = bitswap<8>(x ^ 0x1c, 4, 3, 2, 1, 0, 7, 6, 5); break;
+ case 2: x = bitswap<8>(x ^ 0x4f, 3, 2, 1, 0, 7, 6, 5, 4); break;
+ case 3: x = bitswap<8>(x ^ 0x23, 1, 0, 7, 6, 5, 4, 3, 2); break;
}
ROM[i] = x;
}
@@ -15697,10 +15697,10 @@ DRIVER_INIT_MEMBER(cmaster_state, rp36)
switch(i & 5)
{
- case 0: x = BITSWAP8(x ^ 0xee, 2, 1, 0, 7, 6, 5, 4, 3); break;
- case 1: x = BITSWAP8(x ^ 0x9f, 3, 2, 1, 0, 7, 6, 5, 4); break;
- case 4: x = BITSWAP8(x ^ 0xc7, 3, 2, 1, 0, 7, 6, 5, 4); break;
- case 5: x = BITSWAP8(x ^ 0xc3, 3, 2, 1, 0, 7, 6, 5, 4); break;
+ case 0: x = bitswap<8>(x ^ 0xee, 2, 1, 0, 7, 6, 5, 4, 3); break;
+ case 1: x = bitswap<8>(x ^ 0x9f, 3, 2, 1, 0, 7, 6, 5, 4); break;
+ case 4: x = bitswap<8>(x ^ 0xc7, 3, 2, 1, 0, 7, 6, 5, 4); break;
+ case 5: x = bitswap<8>(x ^ 0xc3, 3, 2, 1, 0, 7, 6, 5, 4); break;
}
ROM[i] = x;
@@ -15719,10 +15719,10 @@ DRIVER_INIT_MEMBER(cmaster_state, rp36c3)
switch(i & 0xa)
{
- case 0x0: x = BITSWAP8(x ^ 0xfd, 6, 4, 0, 7, 3, 1, 5, 2); break;
- case 0x2: x = BITSWAP8(x ^ 0xee, 4, 6, 7, 0, 3, 2, 1, 5); break;
- case 0x8: x = BITSWAP8(x ^ 0x2c, 0, 3, 4, 2, 5, 6, 1, 7); break;
- case 0xa: x = BITSWAP8(x ^ 0xd6, 2, 0, 6, 1, 4, 5, 3, 7); break;
+ case 0x0: x = bitswap<8>(x ^ 0xfd, 6, 4, 0, 7, 3, 1, 5, 2); break;
+ case 0x2: x = bitswap<8>(x ^ 0xee, 4, 6, 7, 0, 3, 2, 1, 5); break;
+ case 0x8: x = bitswap<8>(x ^ 0x2c, 0, 3, 4, 2, 5, 6, 1, 7); break;
+ case 0xa: x = bitswap<8>(x ^ 0xd6, 2, 0, 6, 1, 4, 5, 3, 7); break;
}
ROM[i] = x;
@@ -15741,10 +15741,10 @@ DRIVER_INIT_MEMBER(cmaster_state, rp96sub) // 95 33 95 33 70 6C 70 6C... XORs s
switch(i & 5)
{
- case 0: x = BITSWAP8(x ^ 0x6a, 7, 6, 5, 4, 3, 2, 1, 0); break;
- case 1: x = BITSWAP8(x ^ 0xcc, 7, 6, 5, 4, 3, 2, 1, 0); break;
- case 4: x = BITSWAP8(x ^ 0x8f, 7, 6, 5, 4, 3, 2, 1, 0); break;
- case 5: x = BITSWAP8(x ^ 0x93, 7, 6, 5, 4, 3, 2, 1, 0); break;
+ case 0: x = bitswap<8>(x ^ 0x6a, 7, 6, 5, 4, 3, 2, 1, 0); break;
+ case 1: x = bitswap<8>(x ^ 0xcc, 7, 6, 5, 4, 3, 2, 1, 0); break;
+ case 4: x = bitswap<8>(x ^ 0x8f, 7, 6, 5, 4, 3, 2, 1, 0); break;
+ case 5: x = bitswap<8>(x ^ 0x93, 7, 6, 5, 4, 3, 2, 1, 0); break;
}
ROM[i] = x;
@@ -15764,10 +15764,10 @@ DRIVER_INIT_MEMBER(cmaster_state, po33)
switch(i & 0x14)
{
- case 0x00: x = BITSWAP8(x ^ 0xde, 2, 1, 0, 7, 6, 5, 4, 3); break;
- case 0x04: x = BITSWAP8(x ^ 0x3c, 0, 7, 6, 5, 4, 3, 2, 1); break;
- case 0x10: x = BITSWAP8(x ^ 0x2f, 3, 2, 1, 0, 7, 6, 5, 4); break;
- case 0x14: x = BITSWAP8(x ^ 0x5b, 4, 3, 2, 1, 0, 7, 6, 5); break;
+ case 0x00: x = bitswap<8>(x ^ 0xde, 2, 1, 0, 7, 6, 5, 4, 3); break;
+ case 0x04: x = bitswap<8>(x ^ 0x3c, 0, 7, 6, 5, 4, 3, 2, 1); break;
+ case 0x10: x = bitswap<8>(x ^ 0x2f, 3, 2, 1, 0, 7, 6, 5, 4); break;
+ case 0x14: x = bitswap<8>(x ^ 0x5b, 4, 3, 2, 1, 0, 7, 6, 5); break;
}
ROM[i] = x;
@@ -15787,10 +15787,10 @@ DRIVER_INIT_MEMBER(cmaster_state, match133)
switch(i & 0x12)
{
- case 0x00: x = BITSWAP8(x ^ 0xde, 3, 2, 1, 0, 7, 6, 5, 4); break;
- case 0x02: x = BITSWAP8(x ^ 0x3d, 1, 0, 7, 6, 5, 4, 3, 2); break;
- case 0x10: x = BITSWAP8(x ^ 0x2f, 4, 3, 2, 1, 0, 7, 6, 5); break;
- case 0x12: x = BITSWAP8(x ^ 0x5c, 4, 3, 2, 1, 0, 7, 6, 5); break;
+ case 0x00: x = bitswap<8>(x ^ 0xde, 3, 2, 1, 0, 7, 6, 5, 4); break;
+ case 0x02: x = bitswap<8>(x ^ 0x3d, 1, 0, 7, 6, 5, 4, 3, 2); break;
+ case 0x10: x = bitswap<8>(x ^ 0x2f, 4, 3, 2, 1, 0, 7, 6, 5); break;
+ case 0x12: x = bitswap<8>(x ^ 0x5c, 4, 3, 2, 1, 0, 7, 6, 5); break;
}
ROM[i] = x;
@@ -15884,17 +15884,17 @@ DRIVER_INIT_MEMBER(goldstar_state, super9)
uint8_t *src = memregion("gfx1")->base();
for (i = 0; i < 0x20000; i++)
{
-// src[i] = BITSWAP8(src[i], 7, 4, 2, 1, 6, 5, 3, 0);
-// src[i] = BITSWAP8(src[i], 7, 3, 2, 6, 1, 5, 4, 0);
- src[i] = BITSWAP8(src[i], 7, 3, 2, 6, 5, 1, 4, 0);
+// src[i] = bitswap<8>(src[i], 7, 4, 2, 1, 6, 5, 3, 0);
+// src[i] = bitswap<8>(src[i], 7, 3, 2, 6, 1, 5, 4, 0);
+ src[i] = bitswap<8>(src[i], 7, 3, 2, 6, 5, 1, 4, 0);
}
uint8_t *src2 = memregion("gfx2")->base();
for (i = 0; i < 0x8000; i++)
{
-// src2[i] = BITSWAP8(src2[i], 7, 4, 2, 1, 6, 5, 3, 0);
-// src2[i] = BITSWAP8(src2[i], 7, 3, 2, 6, 1, 5, 4, 0);
- src2[i] = BITSWAP8(src2[i], 3, 7, 6, 2, 5, 1, 0, 4); // endianess
+// src2[i] = bitswap<8>(src2[i], 7, 4, 2, 1, 6, 5, 3, 0);
+// src2[i] = bitswap<8>(src2[i], 7, 3, 2, 6, 1, 5, 4, 0);
+ src2[i] = bitswap<8>(src2[i], 3, 7, 6, 2, 5, 1, 0, 4); // endianess
}
}
@@ -15909,7 +15909,7 @@ DRIVER_INIT_MEMBER(cb3_state, cb3e)
for (i = 0; i < 0x10000; i++)
{
uint8_t dat = ROM[i];
- dat = BITSWAP8(dat, 5, 6, 3, 4, 7, 2, 1, 0);
+ dat = bitswap<8>(dat, 5, 6, 3, 4, 7, 2, 1, 0);
ROM[i] = dat;
}
@@ -15918,14 +15918,14 @@ DRIVER_INIT_MEMBER(cb3_state, cb3e)
uint8_t *src = memregion("gfx1")->base();
for (i = 0; i < 0x20000; i++)
{
- src[i] = BITSWAP8(src[i], 4, 3, 2, 5, 1, 6, 0, 7); // OK
+ src[i] = bitswap<8>(src[i], 4, 3, 2, 5, 1, 6, 0, 7); // OK
}
/* bank 2 graphics */
uint8_t *src2 = memregion("gfx2")->base();
for (i = 0; i < 0x8000; i++)
{
- src2[i] = BITSWAP8(src2[i], 3, 4, 2, 5, 1, 6, 0, 7); // OK
+ src2[i] = bitswap<8>(src2[i], 3, 4, 2, 5, 1, 6, 0, 7); // OK
}
}
@@ -15936,14 +15936,14 @@ DRIVER_INIT_MEMBER(goldstar_state, wcherry)
uint8_t *src = memregion("gfx1")->base();
for (i = 0; i < 0x20000; i++)
{
- src[i] = BITSWAP8(src[i], 4, 3, 2, 5, 1, 6, 0, 7); // OK
+ src[i] = bitswap<8>(src[i], 4, 3, 2, 5, 1, 6, 0, 7); // OK
}
/* bank 2 graphics */
uint8_t *src2 = memregion("gfx2")->base();
for (i = 0; i < 0x8000; i++)
{
- src2[i] = BITSWAP8(src2[i], 3, 4, 2, 5, 1, 6, 0, 7); // OK
+ src2[i] = bitswap<8>(src2[i], 3, 4, 2, 5, 1, 6, 0, 7); // OK
}
}
@@ -15961,14 +15961,14 @@ DRIVER_INIT_MEMBER(wingco_state, flaming7)
uint8_t *src = memregion("gfx1")->base();
for (i = 0; i < 0x20000; i++)
{
- src[i] = BITSWAP8(src[i], 4, 3, 2, 5, 1, 6, 0, 7); // OK
+ src[i] = bitswap<8>(src[i], 4, 3, 2, 5, 1, 6, 0, 7); // OK
}
/* bank 2 graphics */
uint8_t *src2 = memregion("gfx2")->base();
for (i = 0; i < 0x8000; i++)
{
- src2[i] = BITSWAP8(src2[i], 3, 4, 2, 5, 1, 6, 0, 7); // OK
+ src2[i] = bitswap<8>(src2[i], 3, 4, 2, 5, 1, 6, 0, 7); // OK
}
/* Patch to bypass the iButton electronic serial number check.
diff --git a/src/mame/drivers/gottlieb.cpp b/src/mame/drivers/gottlieb.cpp
index d86b95b3fec..df603359dab 100644
--- a/src/mame/drivers/gottlieb.cpp
+++ b/src/mame/drivers/gottlieb.cpp
@@ -2161,13 +2161,13 @@ ROM_END
ROM_START( krull )
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "ram2.bin", 0x1000, 0x1000, CRC(302feadf) SHA1(9d70de35e4f0490dc4e601070993ad146f250dea) )
- ROM_LOAD( "ram4.bin", 0x2000, 0x1000, CRC(79355a60) SHA1(57ad5c904b9ac4bf7c7d828bf755bbcbba6a4fd7) )
- ROM_LOAD( "rom4.bin", 0x6000, 0x2000, CRC(2b696394) SHA1(b18270f4ad97743f6ff8c4cbc93e523c77a8e794) )
- ROM_LOAD( "rom3.bin", 0x8000, 0x2000, CRC(14b0ee42) SHA1(276c4008a013806b3989c529f41cbc358ec49fd6) )
- ROM_LOAD( "rom2.bin", 0xa000, 0x2000, CRC(b5fad94a) SHA1(1bae895fbdd658cfb56c53cc2139282cc1e778de) )
- ROM_LOAD( "rom1.bin", 0xc000, 0x2000, CRC(1ad956a3) SHA1(f5b74b196fe1bd9ab48336e0051cbf29c650cfc1) )
- ROM_LOAD( "rom0.bin", 0xe000, 0x2000, CRC(a466afae) SHA1(d691cbb46e8c3b71f9b1688d7fcef36df82aa854) )
+ ROM_LOAD( "gv-105_ram_2.c7", 0x1000, 0x1000, CRC(302feadf) SHA1(9d70de35e4f0490dc4e601070993ad146f250dea) )
+ ROM_LOAD( "gv-105_ram_4.c9-10", 0x2000, 0x1000, CRC(79355a60) SHA1(57ad5c904b9ac4bf7c7d828bf755bbcbba6a4fd7) )
+ ROM_LOAD( "gv-105_rom_4.c16", 0x6000, 0x2000, CRC(2b696394) SHA1(b18270f4ad97743f6ff8c4cbc93e523c77a8e794) )
+ ROM_LOAD( "gv-105_rom_3.c14-15", 0x8000, 0x2000, CRC(14b0ee42) SHA1(276c4008a013806b3989c529f41cbc358ec49fd6) )
+ ROM_LOAD( "gv-105_rom_2.c13-14", 0xa000, 0x2000, CRC(b5fad94a) SHA1(1bae895fbdd658cfb56c53cc2139282cc1e778de) )
+ ROM_LOAD( "gv-105_rom_1.c12-13", 0xc000, 0x2000, CRC(1ad956a3) SHA1(f5b74b196fe1bd9ab48336e0051cbf29c650cfc1) )
+ ROM_LOAD( "gv-105_rom_0.c11-12", 0xe000, 0x2000, CRC(a466afae) SHA1(d691cbb46e8c3b71f9b1688d7fcef36df82aa854) )
ROM_REGION( 0x10000, "r1sound:audiocpu", 0 )
ROM_LOAD( "snd1.bin", 0x6000, 0x1000, CRC(dd2b30b4) SHA1(f01cb64932493bf69d4fc75a7fa809ff6f6e4263) )
@@ -2177,10 +2177,10 @@ ROM_START( krull )
/* no ROMs; RAM is used instead */
ROM_REGION( 0x8000, "sprites", 0 )
- ROM_LOAD( "fg3.bin", 0x0000, 0x2000, CRC(82d77a45) SHA1(753476609c4bf4f0f0cd28d61fd8aef6967bda57) )
- ROM_LOAD( "fg2.bin", 0x2000, 0x2000, CRC(25a24317) SHA1(33d2c23a388b09c4a09b9893648c30fbd5482cc3) )
- ROM_LOAD( "fg1.bin", 0x4000, 0x2000, CRC(7e3ad7b0) SHA1(0de86e632e5a9e6c1ec82550b15dc25a17ab7066) )
- ROM_LOAD( "fg0.bin", 0x6000, 0x2000, CRC(7402dc19) SHA1(d6d1b8aca8e9ee3bdc57f4474d22b405963909ec) )
+ ROM_LOAD( "gv-105_fg_3.k7-8", 0x0000, 0x2000, CRC(82d77a45) SHA1(753476609c4bf4f0f0cd28d61fd8aef6967bda57) )
+ ROM_LOAD( "gv-105_fg_2.k6", 0x2000, 0x2000, CRC(25a24317) SHA1(33d2c23a388b09c4a09b9893648c30fbd5482cc3) )
+ ROM_LOAD( "gv-105_fg_1.k5", 0x4000, 0x2000, CRC(7e3ad7b0) SHA1(0de86e632e5a9e6c1ec82550b15dc25a17ab7066) )
+ ROM_LOAD( "gv-105_fg_0.k4", 0x6000, 0x2000, CRC(7402dc19) SHA1(d6d1b8aca8e9ee3bdc57f4474d22b405963909ec) )
ROM_END
diff --git a/src/mame/drivers/goupil.cpp b/src/mame/drivers/goupil.cpp
index 182f60f0458..647c409f5b9 100644
--- a/src/mame/drivers/goupil.cpp
+++ b/src/mame/drivers/goupil.cpp
@@ -552,15 +552,15 @@ static MACHINE_CONFIG_START( goupil_g1 )
MCFG_EF9364_PAGES_CNT(1);
MCFG_TIMER_DRIVER_ADD_SCANLINE("goupil_sl", goupil_g1_state, goupil_scanline, "screen", 0, 10)
- MCFG_DEVICE_ADD("m_via_video", VIA6522, 0)
+ MCFG_DEVICE_ADD("m_via_video", VIA6522, CPU_CLOCK / 4)
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(goupil_g1_state, via_video_pba_w))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(goupil_g1_state, via_video_pbb_w))
MCFG_VIA6522_CA2_HANDLER(WRITELINE(goupil_g1_state, via_video_ca2_w))
- MCFG_DEVICE_ADD("m_via_keyb", VIA6522, 0)
+ MCFG_DEVICE_ADD("m_via_keyb", VIA6522, CPU_CLOCK / 4)
MCFG_VIA6522_IRQ_HANDLER(INPUTLINE("maincpu", M6808_IRQ_LINE))
- MCFG_DEVICE_ADD("m_via_modem", VIA6522, 0)
+ MCFG_DEVICE_ADD("m_via_modem", VIA6522, CPU_CLOCK / 4)
MCFG_VIA6522_IRQ_HANDLER(INPUTLINE("maincpu", M6808_IRQ_LINE))
/* Floppy */
@@ -615,15 +615,15 @@ static MACHINE_CONFIG_START( goupil_g2 )
MCFG_MC6845_UPDATE_ROW_CB(goupil_g2_state, crtc_update_row)
MCFG_MC6845_ADDR_CHANGED_CB(goupil_g2_state, crtc_update_addr_changed)
- MCFG_DEVICE_ADD("m_via_video", VIA6522, 0)
+ MCFG_DEVICE_ADD("m_via_video", VIA6522, CPU_CLOCK / 4)
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(goupil_g2_state, via_video_pba_w))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(goupil_g2_state, via_video_pbb_w))
MCFG_VIA6522_CA2_HANDLER(WRITELINE(goupil_g2_state, via_video_ca2_w))
- MCFG_DEVICE_ADD("m_via_keyb", VIA6522, 0)
+ MCFG_DEVICE_ADD("m_via_keyb", VIA6522, CPU_CLOCK / 4)
MCFG_VIA6522_IRQ_HANDLER(INPUTLINE("maincpu", M6808_IRQ_LINE))
- MCFG_DEVICE_ADD("m_via_modem", VIA6522, 0)
+ MCFG_DEVICE_ADD("m_via_modem", VIA6522, CPU_CLOCK / 4)
MCFG_VIA6522_IRQ_HANDLER(INPUTLINE("maincpu", M6808_IRQ_LINE))
/* Floppy */
diff --git a/src/mame/drivers/gticlub.cpp b/src/mame/drivers/gticlub.cpp
index 8deb21c4696..985218b3126 100644
--- a/src/mame/drivers/gticlub.cpp
+++ b/src/mame/drivers/gticlub.cpp
@@ -1500,8 +1500,8 @@ GAME( 1996, gticlub, 0, gticlub, gticlub, gticlub_state, gticlub, R
GAME( 1996, gticlubu, gticlub, gticlub, gticlub, gticlub_state, gticlub, ROT0, "Konami", "GTI Club (ver UAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1996, gticluba, gticlub, gticlub, gticlub, gticlub_state, gticlub, ROT0, "Konami", "GTI Club (ver AAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1996, gticlubj, gticlub, gticlub, gticlub, gticlub_state, gticlub, ROT0, "Konami", "GTI Club (ver JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1996, thunderh, 0, thunderh, thunderh, gticlub_state, gticlub, ROT0, "Konami", "Operation Thunder Hurricane (ver EAA)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
-GAME( 1996, thunderhu, thunderh, thunderh, thunderh, gticlub_state, gticlub, ROT0, "Konami", "Operation Thunder Hurricane (ver UAA)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
+GAME( 1997, thunderh, 0, thunderh, thunderh, gticlub_state, gticlub, ROT0, "Konami", "Operation Thunder Hurricane (ver EAA)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
+GAME( 1997, thunderhu, thunderh, thunderh, thunderh, gticlub_state, gticlub, ROT0, "Konami", "Operation Thunder Hurricane (ver UAA)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
GAME( 1997, slrasslt, 0, slrasslt, slrasslt, gticlub_state, gticlub, ROT0, "Konami", "Solar Assault (ver UAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // Based on Revised code
GAME( 1997, slrassltj, slrasslt, slrasslt, slrasslt, gticlub_state, gticlub, ROT0, "Konami", "Solar Assault Revised (ver JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1997, slrassltj1, slrasslt, slrasslt, slrasslt, gticlub_state, gticlub, ROT0, "Konami", "Solar Assault (ver JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/drivers/gts3.cpp b/src/mame/drivers/gts3.cpp
index 6a7262468e6..67af5c9348f 100644
--- a/src/mame/drivers/gts3.cpp
+++ b/src/mame/drivers/gts3.cpp
@@ -220,7 +220,7 @@ WRITE8_MEMBER( gts3_state::segbank_w )
uint32_t seg1,seg2;
m_segment[offset] = data;
seg1 = m_segment[offset&2] | (m_segment[offset|1] << 8);
- seg2 = BITSWAP32(seg1,16,16,16,16,16,16,16,16,16,16,16,16,16,16,15,14,9,7,13,11,10,6,8,12,5,4,3,3,2,1,0,0);
+ seg2 = bitswap<32>(seg1,16,16,16,16,16,16,16,16,16,16,16,16,16,16,15,14,9,7,13,11,10,6,8,12,5,4,3,3,2,1,0,0);
output().set_digit_value(m_digit+(BIT(offset, 1) ? 0 : 20), seg2);
}
@@ -286,7 +286,7 @@ static MACHINE_CONFIG_START( gts3 )
/* Sound */
MCFG_FRAGMENT_ADD( genpin_audio )
- MCFG_DEVICE_ADD("u4", VIA6522, 0)
+ MCFG_DEVICE_ADD("u4", VIA6522, XTAL_4MHz / 2)
MCFG_VIA6522_IRQ_HANDLER(INPUTLINE("maincpu", M65C02_IRQ_LINE))
MCFG_VIA6522_READPA_HANDLER(READ8(gts3_state, u4a_r))
MCFG_VIA6522_READPB_HANDLER(READ8(gts3_state, u4b_r))
@@ -294,7 +294,7 @@ static MACHINE_CONFIG_START( gts3 )
//MCFG_VIA6522_CA2_HANDLER(WRITELINE(gts3_state, u4ca2_w))
MCFG_VIA6522_CB2_HANDLER(WRITELINE(gts3_state, nmi_w))
- MCFG_DEVICE_ADD("u5", VIA6522, 0)
+ MCFG_DEVICE_ADD("u5", VIA6522, XTAL_4MHz / 2)
MCFG_VIA6522_IRQ_HANDLER(INPUTLINE("maincpu", M65C02_IRQ_LINE))
//MCFG_VIA6522_READPA_HANDLER(READ8(gts3_state, u5a_r))
//MCFG_VIA6522_READPB_HANDLER(READ8(gts3_state, u5b_r))
diff --git a/src/mame/drivers/gts3a.cpp b/src/mame/drivers/gts3a.cpp
index 8cbf012e168..f59c551155e 100644
--- a/src/mame/drivers/gts3a.cpp
+++ b/src/mame/drivers/gts3a.cpp
@@ -232,7 +232,7 @@ WRITE8_MEMBER( gts3a_state::segbank_w )
uint32_t seg1,seg2;
m_segment[offset] = data;
seg1 = m_segment[offset&2] | (m_segment[offset|1] << 8);
- seg2 = BITSWAP32(seg1,16,16,16,16,16,16,16,16,16,16,16,16,16,16,15,14,9,7,13,11,10,6,8,12,5,4,3,3,2,1,0,0);
+ seg2 = bitswap<32>(seg1,16,16,16,16,16,16,16,16,16,16,16,16,16,16,15,14,9,7,13,11,10,6,8,12,5,4,3,3,2,1,0,0);
output().set_digit_value(m_digit+(BIT(offset, 1) ? 0 : 20), seg2);
}
@@ -334,7 +334,7 @@ static MACHINE_CONFIG_START( gts3a )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M65C02, XTAL_4MHz / 2)
MCFG_CPU_PROGRAM_MAP(gts3a_map)
- MCFG_NVRAM_ADD_0FILL("nvram")
+ MCFG_NVRAM_ADD_0FILL("nvram") // 6116LP + DS1210
MCFG_CPU_ADD("dmdcpu", M65C02, XTAL_3_579545MHz / 2)
MCFG_CPU_PROGRAM_MAP(gts3a_dmd_map)
@@ -357,7 +357,7 @@ static MACHINE_CONFIG_START( gts3a )
/* Sound */
MCFG_FRAGMENT_ADD( genpin_audio )
- MCFG_DEVICE_ADD("u4", VIA6522, 0)
+ MCFG_DEVICE_ADD("u4", VIA6522, XTAL_4MHz / 2)
MCFG_VIA6522_IRQ_HANDLER(INPUTLINE("maincpu", M65C02_IRQ_LINE))
MCFG_VIA6522_READPA_HANDLER(READ8(gts3a_state, u4a_r))
MCFG_VIA6522_READPB_HANDLER(READ8(gts3a_state, u4b_r))
@@ -365,7 +365,7 @@ static MACHINE_CONFIG_START( gts3a )
//MCFG_VIA6522_CA2_HANDLER(WRITELINE(gts3a_state, u4ca2_w))
MCFG_VIA6522_CB2_HANDLER(WRITELINE(gts3a_state, nmi_w))
- MCFG_DEVICE_ADD("u5", VIA6522, 0)
+ MCFG_DEVICE_ADD("u5", VIA6522, XTAL_4MHz / 2)
MCFG_VIA6522_IRQ_HANDLER(INPUTLINE("maincpu", M65C02_IRQ_LINE))
//MCFG_VIA6522_READPA_HANDLER(READ8(gts3a_state, u5a_r))
//MCFG_VIA6522_READPB_HANDLER(READ8(gts3a_state, u5b_r))
diff --git a/src/mame/drivers/gts80.cpp b/src/mame/drivers/gts80.cpp
index e5b3d813570..9e3db98e589 100644
--- a/src/mame/drivers/gts80.cpp
+++ b/src/mame/drivers/gts80.cpp
@@ -295,7 +295,7 @@ WRITE8_MEMBER( gts80_state::port2a_w )
m_port2 = data;
static const uint8_t patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67,0x58,0x4c,0x62,0x69,0x78,0 }; // 7448
uint16_t seg1 = (uint16_t)patterns[m_segment & 15];
- uint16_t seg2 = BITSWAP16(seg1, 8, 8, 8, 8, 8, 8, 7, 7, 6, 6, 5, 4, 3, 2, 1, 0);
+ uint16_t seg2 = bitswap<16>(seg1, 8, 8, 8, 8, 8, 8, 7, 7, 6, 6, 5, 4, 3, 2, 1, 0);
switch (data & 0x70)
{
case 0x10: // player 1&2
diff --git a/src/mame/drivers/gts80a.cpp b/src/mame/drivers/gts80a.cpp
index 28656075ca2..584e822afcd 100644
--- a/src/mame/drivers/gts80a.cpp
+++ b/src/mame/drivers/gts80a.cpp
@@ -286,7 +286,7 @@ WRITE8_MEMBER( gts80a_state::port2a_w )
m_port2 = data;
static const uint8_t patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67,0x58,0x4c,0x62,0x69,0x78,0 }; // 7448
uint16_t seg1 = (uint16_t)patterns[m_segment & 15];
- uint16_t seg2 = BITSWAP16(seg1, 8, 8, 8, 8, 8, 8, 7, 7, 6, 6, 5, 4, 3, 2, 1, 0);
+ uint16_t seg2 = bitswap<16>(seg1, 8, 8, 8, 8, 8, 8, 7, 7, 6, 6, 5, 4, 3, 2, 1, 0);
switch (data & 0x70)
{
case 0x10: // player 1&2
diff --git a/src/mame/drivers/gts80b.cpp b/src/mame/drivers/gts80b.cpp
index e6bcb349895..ef0d713c403 100644
--- a/src/mame/drivers/gts80b.cpp
+++ b/src/mame/drivers/gts80b.cpp
@@ -338,7 +338,7 @@ WRITE8_MEMBER( gts80b_state::port2b_w )
else
{ // display a character
segment = patterns[m_dispcmd & 0x7f]; // ignore blank/inverse bit
- segment = BITSWAP16(segment, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 3, 2, 1, 0, 0);
+ segment = bitswap<16>(segment, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 3, 2, 1, 0, 0);
output().set_digit_value(m_digit[i]+i*20, segment);
m_digit[i]++; // auto-increment pointer
if (m_digit[i] > 19) m_digit[i] = 0; // check for overflow
diff --git a/src/mame/drivers/h8.cpp b/src/mame/drivers/h8.cpp
index 0d645cdfaa1..d2a28e54356 100644
--- a/src/mame/drivers/h8.cpp
+++ b/src/mame/drivers/h8.cpp
@@ -170,7 +170,7 @@ WRITE8_MEMBER( h8_state::portf1_w )
//d1 segment a
//d0 segment g
- m_segment = 0xff ^ BITSWAP8(data, 7, 0, 6, 5, 4, 3, 2, 1);
+ m_segment = 0xff ^ bitswap<8>(data, 7, 0, 6, 5, 4, 3, 2, 1);
if (m_digit) output().set_digit_value(m_digit, m_segment);
}
diff --git a/src/mame/drivers/halleys.cpp b/src/mame/drivers/halleys.cpp
index 63223fa0cff..6c677e85a62 100644
--- a/src/mame/drivers/halleys.cpp
+++ b/src/mame/drivers/halleys.cpp
@@ -1921,7 +1921,7 @@ void halleys_state::machine_reset()
static MACHINE_CONFIG_START( halleys )
- MCFG_CPU_ADD("maincpu", M6809, XTAL_19_968MHz/12) /* verified on pcb */
+ MCFG_CPU_ADD("maincpu", MC6809E, XTAL_19_968MHz/12) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(halleys_map)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", halleys_state, halleys_scanline, "screen", 0, 1)
@@ -2154,8 +2154,8 @@ void halleys_state::init_common()
for (i=0; i<0x10000; i++)
{
- addr = BITSWAP16(i,15,14,13,12,11,10,1,0,4,5,6,3,7,8,9,2);
- buf[i] = BITSWAP8(rom[addr],0,7,6,5,1,4,2,3);
+ addr = bitswap<16>(i,15,14,13,12,11,10,1,0,4,5,6,3,7,8,9,2);
+ buf[i] = bitswap<8>(rom[addr],0,7,6,5,1,4,2,3);
}
memcpy(rom, buf, 0x10000);
diff --git a/src/mame/drivers/hankin.cpp b/src/mame/drivers/hankin.cpp
index cb46a01686a..26eb97e7049 100644
--- a/src/mame/drivers/hankin.cpp
+++ b/src/mame/drivers/hankin.cpp
@@ -283,7 +283,7 @@ WRITE8_MEMBER( hankin_state::ic10_a_w )
for (i = 0; i < 5; i++)
{
seg1 = patterns[m_segment[i]];
- seg2 = BITSWAP16(seg1, 8, 8, 8, 8, 8, 8, 7, 7, 6, 6, 5, 4, 3, 2, 1, 0);
+ seg2 = bitswap<16>(seg1, 8, 8, 8, 8, 8, 8, 7, 7, 6, 6, 5, 4, 3, 2, 1, 0);
output().set_digit_value(i*10+m_digit, seg2);
}
}
diff --git a/src/mame/drivers/hh_amis2k.cpp b/src/mame/drivers/hh_amis2k.cpp
index 0639bf2cc55..b6ce7c7f61d 100644
--- a/src/mame/drivers/hh_amis2k.cpp
+++ b/src/mame/drivers/hh_amis2k.cpp
@@ -140,7 +140,7 @@ void wildfire_state::display_update()
if (m_display_cache[i] != active_state[i])
{
if (index_is_7segled(i))
- output().set_digit_value(i, BITSWAP8(active_state[i],7,0,1,2,3,4,5,6) & 0x7f);
+ output().set_digit_value(i, bitswap<8>(active_state[i],7,0,1,2,3,4,5,6) & 0x7f);
for (int j = 0; j < 8; j++)
output().set_lamp_value(i*10 + j, active_state[i] >> j & 1);
diff --git a/src/mame/drivers/hh_cop400.cpp b/src/mame/drivers/hh_cop400.cpp
index 8f533e913f9..27762e37a82 100644
--- a/src/mame/drivers/hh_cop400.cpp
+++ b/src/mame/drivers/hh_cop400.cpp
@@ -486,7 +486,7 @@ void einvaderc_state::prepare_display()
set_display_segmask(7, 0x7f);
// update display
- u8 l = BITSWAP8(m_l,7,6,0,1,2,3,4,5);
+ u8 l = bitswap<8>(m_l,7,6,0,1,2,3,4,5);
u16 grid = (m_d | m_g << 4 | m_sk << 8 | m_so << 9) ^ 0x0ff;
display_matrix(8, 10, l, grid);
}
diff --git a/src/mame/drivers/hh_hmcs40.cpp b/src/mame/drivers/hh_hmcs40.cpp
index 3888a877904..5f70d409338 100644
--- a/src/mame/drivers/hh_hmcs40.cpp
+++ b/src/mame/drivers/hh_hmcs40.cpp
@@ -85,7 +85,7 @@
On MAME they will show with full brightness, see eg. building explosions.
Currently there's a workaround in place.
- bzaxxon 3D effect is difficult to simulate
- - improve SVGs of bzaxxon, bpengo, bbtime
+ - improve/redo SVGs of: bzaxxon, bpengo, bbtime
***************************************************************************/
@@ -370,12 +370,12 @@ public:
WRITE8_MEMBER(bambball_state::plate_w)
{
- // R1x-R3x(,D0-D3): vfd matrix plate
+ // R1x-R3x(,D0-D3): vfd plate
int shift = (offset - hmcs40_cpu_device::PORT_R1X) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
// update display
- u16 plate = BITSWAP16(m_plate,13,8,4,12,9,10,14,1,7,0,15,11,6,3,5,2);
+ u16 plate = bitswap<16>(m_plate,13,8,4,12,9,10,14,1,7,0,15,11,6,3,5,2);
display_matrix(16, 9, plate, m_grid);
}
@@ -387,7 +387,7 @@ WRITE16_MEMBER(bambball_state::grid_w)
// D7-D10: input mux
m_inp_mux = data >> 7 & 0xf;
- // D7-D15: vfd matrix grid
+ // D7-D15: vfd grid
m_grid = data >> 7 & 0x1ff;
// D0-D3: more plates (update display there)
@@ -484,14 +484,14 @@ public:
void bmboxing_state::prepare_display()
{
- u16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,9,0,1,2,3,4,5,6,7,8);
- u32 plate = BITSWAP16(m_plate,15,14,13,12,1,2,0,3,11,4,10,7,5,6,9,8);
+ u16 grid = bitswap<16>(m_grid,15,14,13,12,11,10,9,0,1,2,3,4,5,6,7,8);
+ u32 plate = bitswap<16>(m_plate,15,14,13,12,1,2,0,3,11,4,10,7,5,6,9,8);
display_matrix(12, 9, plate, grid);
}
WRITE8_MEMBER(bmboxing_state::plate_w)
{
- // R1x-R3x: vfd matrix plate
+ // R1x-R3x: vfd plate
int shift = (offset - hmcs40_cpu_device::PORT_R1X) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -505,7 +505,7 @@ WRITE16_MEMBER(bmboxing_state::grid_w)
// D9-D12: input mux
m_inp_mux = data >> 9 & 0xf;
- // D4-D12: vfd matrix grid
+ // D4-D12: vfd grid
m_grid = data >> 4 & 0x1ff;
prepare_display();
}
@@ -623,14 +623,14 @@ public:
void bfriskyt_state::prepare_display()
{
- u16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,9,8,0,1,2,3,4,5,6,7);
- u32 plate = BITSWAP24(m_plate,23,22,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21);
+ u16 grid = bitswap<16>(m_grid,15,14,13,12,11,10,9,8,0,1,2,3,4,5,6,7);
+ u32 plate = bitswap<24>(m_plate,23,22,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21);
display_matrix(22, 8, plate, grid);
}
WRITE8_MEMBER(bfriskyt_state::plate_w)
{
- // R0x-R3x: vfd matrix plate
+ // R0x-R3x: vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -649,7 +649,7 @@ WRITE16_MEMBER(bfriskyt_state::grid_w)
update_int1();
}
- // D8-D15: vfd matrix grid
+ // D8-D15: vfd grid
m_grid = data >> 8 & 0xff;
// D0-D5: more plates
@@ -750,13 +750,13 @@ public:
WRITE8_MEMBER(packmon_state::plate_w)
{
- // R0x-R3x(,D0-D3): vfd matrix plate
+ // R0x-R3x(,D0-D3): vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
// update display
- u16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,0,1,2,3,4,5,6,7,8,9);
- u32 plate = BITSWAP24(m_plate,23,22,21,20,0,1,2,3,4,5,6,19,18,17,16,15,14,13,12,11,10,9,8,7);
+ u16 grid = bitswap<16>(m_grid,15,14,13,12,11,10,0,1,2,3,4,5,6,7,8,9);
+ u32 plate = bitswap<24>(m_plate,23,22,21,20,0,1,2,3,4,5,6,19,18,17,16,15,14,13,12,11,10,9,8,7);
display_matrix(20, 10, plate, grid);
}
@@ -768,7 +768,7 @@ WRITE16_MEMBER(packmon_state::grid_w)
// D11-D15: input mux
m_inp_mux = data >> 11 & 0x1f;
- // D6-D15: vfd matrix grid
+ // D6-D15: vfd grid
m_grid = data >> 6 & 0x3ff;
// D0-D3: plate 9-12 (update display there)
@@ -865,14 +865,14 @@ public:
void msthawk_state::prepare_display()
{
- u16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,0,1,2,3,4,5,6,7,8,9);
- u32 plate = BITSWAP24(m_plate,23,22,21,19,20,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0);
+ u16 grid = bitswap<16>(m_grid,15,14,13,12,11,10,0,1,2,3,4,5,6,7,8,9);
+ u32 plate = bitswap<24>(m_plate,23,22,21,19,20,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0);
display_matrix(21, 10, plate, grid);
}
WRITE8_MEMBER(msthawk_state::plate_w)
{
- // R0x-R3x: vfd matrix plate
+ // R0x-R3x: vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -891,7 +891,7 @@ WRITE16_MEMBER(msthawk_state::grid_w)
update_int0();
}
- // D6-D15: vfd matrix grid
+ // D6-D15: vfd grid
m_grid = data >> 6 & 0x3ff;
// D0-D4: more plates
@@ -992,13 +992,13 @@ public:
WRITE8_MEMBER(bzaxxon_state::plate_w)
{
- // R0x-R3x(,D0-D2): vfd matrix plate
+ // R0x-R3x(,D0-D2): vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
// update display
- u16 grid = BITSWAP16(m_grid,15,14,13,12,11,6,7,8,9,10,5,4,3,2,1,0);
- u32 plate = BITSWAP24(m_plate,23,22,21,20,5,7,0,1,2,3,4,6,19,16,17,18,15,14,13,12,10,8,9,11) | 0x800;
+ u16 grid = bitswap<16>(m_grid,15,14,13,12,11,6,7,8,9,10,5,4,3,2,1,0);
+ u32 plate = bitswap<24>(m_plate,23,22,21,20,5,7,0,1,2,3,4,6,19,16,17,18,15,14,13,12,10,8,9,11) | 0x800;
display_matrix(20, 11, plate, grid);
}
@@ -1015,7 +1015,7 @@ WRITE16_MEMBER(bzaxxon_state::grid_w)
update_int1();
}
- // D5-D15: vfd matrix grid
+ // D5-D15: vfd grid
m_grid = data >> 5 & 0x7ff;
// D0-D2: plate 7-9 (update display there)
@@ -1112,13 +1112,13 @@ public:
WRITE8_MEMBER(zackman_state::plate_w)
{
- // R0x-R6x(,D0,D1): vfd matrix plate
+ // R0x-R6x(,D0,D1): vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
// update display
- u8 grid = BITSWAP8(m_grid,0,1,2,3,4,5,6,7);
- u32 plate = BITSWAP32(m_plate,31,30,27,0,1,2,3,4,5,6,7,8,9,10,11,24,25,26,29,28,23,22,21,20,19,18,17,16,15,14,13,12);
+ u8 grid = bitswap<8>(m_grid,0,1,2,3,4,5,6,7);
+ u32 plate = bitswap<32>(m_plate,31,30,27,0,1,2,3,4,5,6,7,8,9,10,11,24,25,26,29,28,23,22,21,20,19,18,17,16,15,14,13,12);
display_matrix(29, 8, plate, grid);
}
@@ -1135,7 +1135,7 @@ WRITE16_MEMBER(zackman_state::grid_w)
update_int0();
}
- // D8-D15: vfd matrix grid
+ // D8-D15: vfd grid
m_grid = data >> 8 & 0xff;
// D0,D1: plate 12,13 (update display there)
@@ -1232,14 +1232,14 @@ public:
void bpengo_state::prepare_display()
{
- u8 grid = BITSWAP8(m_grid,0,1,2,3,4,5,6,7);
- u32 plate = BITSWAP32(m_plate,31,30,29,28,23,22,21,16,17,18,19,20,27,26,25,24,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0);
+ u8 grid = bitswap<8>(m_grid,0,1,2,3,4,5,6,7);
+ u32 plate = bitswap<32>(m_plate,31,30,29,28,23,22,21,16,17,18,19,20,27,26,25,24,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0);
display_matrix(25, 8, plate, grid);
}
WRITE8_MEMBER(bpengo_state::plate_w)
{
- // R0x-R6x: vfd matrix plate
+ // R0x-R6x: vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -1258,7 +1258,7 @@ WRITE16_MEMBER(bpengo_state::grid_w)
update_int0();
}
- // D0-D7: vfd matrix grid
+ // D0-D7: vfd grid
m_grid = data & 0xff;
prepare_display();
}
@@ -1360,14 +1360,14 @@ public:
void bbtime_state::prepare_display()
{
- u8 grid = BITSWAP8(m_grid,7,6,0,1,2,3,4,5);
- u32 plate = BITSWAP32(m_plate,31,30,29,28,25,24,26,27,22,23,15,14,12,11,10,8,7,6,4,1,5,9,13,3,2,16,17,18,19,20,0,21) | 0x1;
+ u8 grid = bitswap<8>(m_grid,7,6,0,1,2,3,4,5);
+ u32 plate = bitswap<32>(m_plate,31,30,29,28,25,24,26,27,22,23,15,14,12,11,10,8,7,6,4,1,5,9,13,3,2,16,17,18,19,20,0,21) | 0x1;
display_matrix(28, 6, plate, grid);
}
WRITE8_MEMBER(bbtime_state::plate_w)
{
- // R0x-R6x: vfd matrix plate
+ // R0x-R6x: vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -1386,7 +1386,7 @@ WRITE16_MEMBER(bbtime_state::grid_w)
update_int0();
}
- // D4-D9: vfd matrix grid
+ // D4-D9: vfd grid
m_grid = data >> 4 & 0x3f;
prepare_display();
}
@@ -1480,13 +1480,13 @@ public:
WRITE8_MEMBER(bdoramon_state::plate_w)
{
- // R0x-R3x(,D0-D3): vfd matrix plate
+ // R0x-R3x(,D0-D3): vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
// update display
- u8 grid = BITSWAP8(m_grid,0,1,2,3,4,5,7,6);
- u32 plate = BITSWAP24(m_plate,23,22,21,20,11,19,18,17,16,15,14,13,12,10,9,8,7,6,5,4,3,2,1,0);
+ u8 grid = bitswap<8>(m_grid,0,1,2,3,4,5,7,6);
+ u32 plate = bitswap<24>(m_plate,23,22,21,20,11,19,18,17,16,15,14,13,12,10,9,8,7,6,5,4,3,2,1,0);
display_matrix(19, 8, plate, grid);
}
@@ -1495,7 +1495,7 @@ WRITE16_MEMBER(bdoramon_state::grid_w)
// D7: speaker out
m_speaker->level_w(data >> 7 & 1);
- // D8-D15: vfd matrix grid
+ // D8-D15: vfd grid
m_grid = data >> 8 & 0xff;
// D0-D3: plate 15-18 (update display there)
@@ -1579,13 +1579,13 @@ public:
WRITE8_MEMBER(bultrman_state::plate_w)
{
- // R0x-R3x(,D0-D2): vfd matrix plate
+ // R0x-R3x(,D0-D2): vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
// update display
- u8 grid = BITSWAP8(m_grid,0,1,2,3,4,5,6,7);
- u32 plate = BITSWAP24(m_plate,23,22,21,20,19,0,18,17,16,15,14,13,12,3,11,10,9,8,7,6,5,4,1,2);
+ u8 grid = bitswap<8>(m_grid,0,1,2,3,4,5,6,7);
+ u32 plate = bitswap<24>(m_plate,23,22,21,20,19,0,18,17,16,15,14,13,12,3,11,10,9,8,7,6,5,4,1,2);
display_matrix(18, 8, plate, grid);
}
@@ -1594,7 +1594,7 @@ WRITE16_MEMBER(bultrman_state::grid_w)
// D7: speaker out
m_speaker->level_w(data >> 7 & 1);
- // D8-D15: vfd matrix grid
+ // D8-D15: vfd grid
m_grid = data >> 8 & 0xff;
// D0-D2: plate 15-17 (update display there)
@@ -1672,13 +1672,13 @@ public:
void machiman_state::prepare_display()
{
- u32 plate = BITSWAP24(m_plate,23,22,21,20,19,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18);
+ u32 plate = bitswap<24>(m_plate,23,22,21,20,19,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18);
display_matrix(19, 5, plate, m_grid);
}
WRITE8_MEMBER(machiman_state::plate_w)
{
- // R0x-R3x,R6012: vfd matrix plate
+ // R0x-R3x,R6012: vfd plate
int shift = (offset == hmcs40_cpu_device::PORT_R6X) ? 16 : offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -1689,7 +1689,7 @@ WRITE16_MEMBER(machiman_state::grid_w)
// D13: speaker out
m_speaker->level_w(data >> 13 & 1);
- // D0-D4: vfd matrix grid
+ // D0-D4: vfd grid
m_grid = data & 0x1f;
prepare_display();
}
@@ -1771,7 +1771,7 @@ public:
WRITE8_MEMBER(pairmtch_state::plate_w)
{
- // R2x,R3x,R6x: vfd matrix plate
+ // R2x,R3x,R6x: vfd plate
int shift = (offset == hmcs40_cpu_device::PORT_R6X) ? 8 : (offset-2) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
display_matrix(12, 6, m_plate, m_grid);
@@ -1788,7 +1788,7 @@ WRITE16_MEMBER(pairmtch_state::grid_w)
// D10,D15: input mux
m_inp_mux = (data >> 10 & 1) | (data >> 14 & 2);
- // D0-D5: vfd matrix grid
+ // D0-D5: vfd grid
m_grid = data & 0x3f;
display_matrix(12, 6, m_plate, m_grid);
}
@@ -1802,7 +1802,7 @@ READ8_MEMBER(pairmtch_state::input_r)
WRITE8_MEMBER(pairmtch_state::sound_w)
{
// R5x: soundlatch (to audiocpu R2x)
- m_soundlatch->write(space, 0, BITSWAP8(data,7,6,5,4,0,1,2,3));
+ m_soundlatch->write(space, 0, bitswap<8>(data,7,6,5,4,0,1,2,3));
}
@@ -1811,7 +1811,7 @@ WRITE8_MEMBER(pairmtch_state::sound_w)
WRITE8_MEMBER(pairmtch_state::sound2_w)
{
// R2x: soundlatch (to maincpu R5x)
- m_soundlatch2->write(space, 0, BITSWAP8(data,7,6,5,4,0,1,2,3));
+ m_soundlatch2->write(space, 0, bitswap<8>(data,7,6,5,4,0,1,2,3));
}
WRITE16_MEMBER(pairmtch_state::speaker_w)
@@ -1919,12 +1919,12 @@ public:
WRITE8_MEMBER(alnattck_state::plate_w)
{
- // R0x-R3x(,D0-D3): vfd matrix plate
+ // R0x-R3x(,D0-D3): vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
// update display
- u32 plate = BITSWAP24(m_plate,23,22,21,20,19,18,17,16,11,9,8,10,7,2,0,1,3,4,5,6,12,13,14,15);
+ u32 plate = bitswap<24>(m_plate,23,22,21,20,19,18,17,16,11,9,8,10,7,2,0,1,3,4,5,6,12,13,14,15);
display_matrix(20, 10, plate, m_grid);
}
@@ -1936,7 +1936,7 @@ WRITE16_MEMBER(alnattck_state::grid_w)
// D7-D13: input mux
m_inp_mux = data >> 7 & 0x7f;
- // D6-D15: vfd matrix grid
+ // D6-D15: vfd grid
m_grid = data >> 6 & 0x3ff;
// D0-D3: plate 16-19 (update display there)
@@ -2054,7 +2054,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(cdkong_state::speaker_decay_sim)
void cdkong_state::prepare_display()
{
- u32 plate = BITSWAP32(m_plate,31,30,29,24,0,16,8,1,23,17,9,2,18,10,25,27,26,3,15,27,11,11,14,22,6,13,21,5,19,12,20,4) | 0x800800;
+ u32 plate = bitswap<32>(m_plate,31,30,29,24,0,16,8,1,23,17,9,2,18,10,25,27,26,3,15,27,11,11,14,22,6,13,21,5,19,12,20,4) | 0x800800;
display_matrix(29, 11, plate, m_grid);
}
@@ -2064,7 +2064,7 @@ WRITE8_MEMBER(cdkong_state::plate_w)
m_r[offset] = data;
speaker_decay_reset();
- // R0x-R6x: vfd matrix plate
+ // R0x-R6x: vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -2075,7 +2075,7 @@ WRITE16_MEMBER(cdkong_state::grid_w)
// D3: speaker out
m_speaker->level_w(data >> 3 & 1);
- // D4-D14: vfd matrix grid
+ // D4-D14: vfd grid
m_grid = data >> 4 & 0x7ff;
prepare_display();
}
@@ -2172,8 +2172,8 @@ public:
void cgalaxn_state::prepare_display()
{
- u16 grid = BITSWAP16(m_grid,15,14,13,12,1,2,0,11,10,9,8,7,6,5,4,3);
- u16 plate = BITSWAP16(m_plate,15,14,6,5,4,3,2,1,7,8,9,10,11,0,12,13);
+ u16 grid = bitswap<16>(m_grid,15,14,13,12,1,2,0,11,10,9,8,7,6,5,4,3);
+ u16 plate = bitswap<16>(m_plate,15,14,6,5,4,3,2,1,7,8,9,10,11,0,12,13);
display_matrix(15, 12, plate, grid);
}
@@ -2183,7 +2183,7 @@ WRITE8_MEMBER(cgalaxn_state::grid_w)
if (offset == hmcs40_cpu_device::PORT_R1X)
m_inp_mux = data & 3;
- // R1x-R3x: vfd matrix grid
+ // R1x-R3x: vfd grid
int shift = (offset - hmcs40_cpu_device::PORT_R1X) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -2196,7 +2196,7 @@ WRITE16_MEMBER(cgalaxn_state::plate_w)
// D1: start alien attack whine sound effect (edge triggered)
- // D2-D15: vfd matrix plate
+ // D2-D15: vfd plate
m_plate = (m_plate & 0x4000) | (data >> 2 & 0x3fff);
prepare_display();
}
@@ -2302,13 +2302,13 @@ public:
WRITE8_MEMBER(cpacman_state::plate_w)
{
- // R1x-R6x(,D1,D2): vfd matrix plate
+ // R1x-R6x(,D1,D2): vfd plate
int shift = (offset - hmcs40_cpu_device::PORT_R1X) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
// update display
- u16 grid = BITSWAP16(m_grid,15,14,13,12,11,0,1,2,3,4,5,6,7,8,9,10);
- u32 plate = BITSWAP32(m_plate,31,30,29,28,27,0,1,2,3,8,9,10,11,16,17,18,19,25,26,23,22,21,20,24,15,14,13,12,4,5,6,7);
+ u16 grid = bitswap<16>(m_grid,15,14,13,12,11,0,1,2,3,4,5,6,7,8,9,10);
+ u32 plate = bitswap<32>(m_plate,31,30,29,28,27,0,1,2,3,8,9,10,11,16,17,18,19,25,26,23,22,21,20,24,15,14,13,12,4,5,6,7);
display_matrix(27, 11, plate, grid);
}
@@ -2320,7 +2320,7 @@ WRITE16_MEMBER(cpacman_state::grid_w)
// D13-D15: input mux
m_inp_mux = data >> 13 & 7;
- // D5-D15: vfd matrix grid
+ // D5-D15: vfd grid
m_grid = data >> 5 & 0x7ff;
// D1,D2: plate 8,14 (update display there)
@@ -2419,13 +2419,13 @@ public:
WRITE8_MEMBER(cmspacmn_state::plate_w)
{
- // R1x-R6x(,D0,D1): vfd matrix plate
+ // R1x-R6x(,D0,D1): vfd plate
int shift = (offset - hmcs40_cpu_device::PORT_R1X) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
// update display
- u16 grid = BITSWAP16(m_grid,15,14,13,11,10,9,8,7,6,5,4,3,2,1,0,1);
- u64 plate = BIT(m_plate,15)<<32 | BITSWAP32(m_plate,14,13,12,4,5,6,7,24,23,25,22,21,20,13,24,3,19,14,12,11,24,2,10,8,7,25,0,9,1,18,17,16) | 0x1004080;
+ u16 grid = bitswap<16>(m_grid,15,14,13,11,10,9,8,7,6,5,4,3,2,1,0,1);
+ u64 plate = BIT(m_plate,15)<<32 | bitswap<32>(m_plate,14,13,12,4,5,6,7,24,23,25,22,21,20,13,24,3,19,14,12,11,24,2,10,8,7,25,0,9,1,18,17,16) | 0x1004080;
display_matrix(33, 12, plate, grid);
}
@@ -2437,7 +2437,7 @@ WRITE16_MEMBER(cmspacmn_state::grid_w)
// D13-D15: input mux
m_inp_mux = data >> 13 & 7;
- // D5-D15: vfd matrix grid
+ // D5-D15: vfd grid
m_grid = data >> 5 & 0x7ff;
// D0,D1: more plates (update display there)
@@ -2540,7 +2540,7 @@ void sag_state::prepare_display()
// grid 8-11 are 7segs
set_display_segmask(0xf00, 0x7f);
- u8 seg = BITSWAP8(m_plate,3,4,5,6,7,8,9,10);
+ u8 seg = bitswap<8>(m_plate,3,4,5,6,7,8,9,10);
for (int y = 8; y < 12; y++)
m_display_state[y] = (m_grid >> y & 1) ? seg : 0;
@@ -2550,7 +2550,7 @@ void sag_state::prepare_display()
WRITE8_MEMBER(sag_state::plate_w)
{
- // R0x-R3x: vfd matrix plate
+ // R0x-R3x: vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -2564,7 +2564,7 @@ WRITE16_MEMBER(sag_state::grid_w)
// D2-D7: input mux
m_inp_mux = data >> 2 & 0x3f;
- // D1-D12: vfd matrix grid
+ // D1-D12: vfd grid
m_grid = data >> 1 & 0xfff;
prepare_display();
}
@@ -2670,8 +2670,8 @@ public:
void egalaxn2_state::prepare_display()
{
- u16 grid = BITSWAP16(m_grid,15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14);
- u32 plate = BITSWAP24(m_plate,23,22,21,20,15,14,13,12,7,6,5,4,3,2,1,0,19,18,17,16,11,10,9,8);
+ u16 grid = bitswap<16>(m_grid,15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14);
+ u32 plate = bitswap<24>(m_plate,23,22,21,20,15,14,13,12,7,6,5,4,3,2,1,0,19,18,17,16,11,10,9,8);
display_matrix(24, 15, plate, grid);
}
@@ -2683,14 +2683,14 @@ WRITE16_MEMBER(egalaxn2_state::grid_w)
// D1-D4: input mux
m_inp_mux = data >> 1 & 0xf;
- // D1-D15: vfd matrix grid
+ // D1-D15: vfd grid
m_grid = data >> 1 & 0x7fff;
prepare_display();
}
WRITE8_MEMBER(egalaxn2_state::plate_w)
{
- // R1x-R6x: vfd matrix plate
+ // R1x-R6x: vfd plate
int shift = (offset - hmcs40_cpu_device::PORT_R1X) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -2870,8 +2870,8 @@ protected:
void eturtles_state::prepare_display()
{
- u16 grid = BITSWAP16(m_grid,15,1,14,13,12,11,10,9,8,7,6,5,4,3,2,0);
- u32 plate = BITSWAP32(m_plate,31,30,11,12,18,19,16,17,22,15,20,21,27,26,23,25,24,2,3,1,0,6,4,5,10,9,2,8,7,14,1,13);
+ u16 grid = bitswap<16>(m_grid,15,1,14,13,12,11,10,9,8,7,6,5,4,3,2,0);
+ u32 plate = bitswap<32>(m_plate,31,30,11,12,18,19,16,17,22,15,20,21,27,26,23,25,24,2,3,1,0,6,4,5,10,9,2,8,7,14,1,13);
display_matrix(30, 15, plate | (grid >> 5 & 8), grid); // grid 8 also forces plate 3 high
}
@@ -2879,7 +2879,7 @@ WRITE8_MEMBER(eturtles_state::plate_w)
{
m_r[offset] = data;
- // R0x-R6x: vfd matrix plate
+ // R0x-R6x: vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -2897,7 +2897,7 @@ WRITE16_MEMBER(eturtles_state::grid_w)
update_int();
}
- // D1-D15: vfd matrix grid
+ // D1-D15: vfd grid
m_grid = data >> 1 & 0x7fff;
prepare_display();
}
@@ -3049,8 +3049,8 @@ public:
void estargte_state::prepare_display()
{
- u16 grid = BITSWAP16(m_grid,15,0,14,13,12,11,10,9,8,7,6,5,4,3,2,1);
- u32 plate = BITSWAP32(m_plate,31,30,29,15,17,19,21,23,25,27,26,24,3,22,20,18,16,14,12,10,8,6,4,2,0,1,3,5,7,9,11,13);
+ u16 grid = bitswap<16>(m_grid,15,0,14,13,12,11,10,9,8,7,6,5,4,3,2,1);
+ u32 plate = bitswap<32>(m_plate,31,30,29,15,17,19,21,23,25,27,26,24,3,22,20,18,16,14,12,10,8,6,4,2,0,1,3,5,7,9,11,13);
display_matrix(29, 14, plate, grid);
}
@@ -3161,13 +3161,13 @@ public:
WRITE8_MEMBER(ghalien_state::plate_w)
{
- // R0x-R3x(,D10-D13): vfd matrix plate
+ // R0x-R3x(,D10-D13): vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
// update display
- u16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,0,1,2,3,4,5,6,7,8,9);
- u32 plate = BITSWAP24(m_plate,23,22,21,20,14,12,10,8,9,13,15,2,0,1,3,11,7,5,4,6,19,17,16,18);
+ u16 grid = bitswap<16>(m_grid,15,14,13,12,11,10,0,1,2,3,4,5,6,7,8,9);
+ u32 plate = bitswap<24>(m_plate,23,22,21,20,14,12,10,8,9,13,15,2,0,1,3,11,7,5,4,6,19,17,16,18);
display_matrix(20, 10, plate, grid);
}
@@ -3179,7 +3179,7 @@ WRITE16_MEMBER(ghalien_state::grid_w)
// D0-D6: input mux
m_inp_mux = data & 0x7f;
- // D0-D9: vfd matrix grid
+ // D0-D9: vfd grid
m_grid = data & 0x3ff;
// D10-D13: more plates (update display there)
@@ -3280,13 +3280,13 @@ public:
WRITE8_MEMBER(gckong_state::plate_w)
{
- // R0x-R3x(,D0,D1): vfd matrix plate
+ // R0x-R3x(,D0,D1): vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
// update display
- u16 grid = BITSWAP16(m_grid,15,14,13,12,11,0,1,2,3,4,5,6,7,8,9,10);
- u32 plate = BITSWAP32(m_plate,31,30,29,28,27,26,25,6,7,8,12,13,14,15,16,17,18,17,16,12,11,10,9,8,7,6,5,4,3,2,1,0) | 0x8000;
+ u16 grid = bitswap<16>(m_grid,15,14,13,12,11,0,1,2,3,4,5,6,7,8,9,10);
+ u32 plate = bitswap<32>(m_plate,31,30,29,28,27,26,25,6,7,8,12,13,14,15,16,17,18,17,16,12,11,10,9,8,7,6,5,4,3,2,1,0) | 0x8000;
display_matrix(32, 11, plate, grid);
}
@@ -3303,7 +3303,7 @@ WRITE16_MEMBER(gckong_state::grid_w)
update_int1();
}
- // D5-D15: vfd matrix grid
+ // D5-D15: vfd grid
m_grid = data >> 5 & 0x7ff;
// D0,D1: more plates (update display there)
@@ -3403,12 +3403,12 @@ public:
WRITE8_MEMBER(gdigdug_state::plate_w)
{
- // R0x-R6x(,D0-D3): vfd matrix plate
+ // R0x-R6x(,D0-D3): vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
// update display
- u32 plate = BITSWAP32(m_plate,30,31,0,1,2,3,4,5,6,7,20,21,22,27,26,25,28,29,24,23,15,14,13,12,8,9,10,11,19,18,17,16);
+ u32 plate = bitswap<32>(m_plate,30,31,0,1,2,3,4,5,6,7,20,21,22,27,26,25,28,29,24,23,15,14,13,12,8,9,10,11,19,18,17,16);
display_matrix(32, 9, plate, m_grid);
}
@@ -3425,7 +3425,7 @@ WRITE16_MEMBER(gdigdug_state::grid_w)
update_int1();
}
- // D7-D15: vfd matrix grid
+ // D7-D15: vfd grid
m_grid = data >> 7 & 0x1ff;
// D0-D3: more plates (update display there)
@@ -3528,13 +3528,13 @@ public:
void mwcbaseb_state::prepare_display()
{
- u8 grid = BITSWAP8(m_grid,0,1,2,3,4,5,6,7);
+ u8 grid = bitswap<8>(m_grid,0,1,2,3,4,5,6,7);
display_matrix(16, 8, m_plate, grid);
}
WRITE8_MEMBER(mwcbaseb_state::plate_w)
{
- // R1x-R3x,R6x: vfd matrix plate
+ // R1x-R3x,R6x: vfd plate
int shift = (offset == hmcs40_cpu_device::PORT_R6X) ? 12 : (offset - hmcs40_cpu_device::PORT_R1X) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -3545,7 +3545,7 @@ WRITE16_MEMBER(mwcbaseb_state::grid_w)
// D9-D15: input mux
m_inp_mux = data >> 9 & 0x7f;
- // D0-D7: vfd matrix grid
+ // D0-D7: vfd grid
m_grid = data & 0xff;
prepare_display();
}
@@ -3683,12 +3683,12 @@ public:
WRITE8_MEMBER(pbqbert_state::plate_w)
{
- // R0x-R6x(,D8): vfd matrix plate
+ // R0x-R6x(,D8): vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
// update display
- u32 plate = BITSWAP32(m_plate,31,30,24,25,26,27,28,15,14,29,13,12,11,10,9,8,7,6,5,4,3,2,1,0,16,17,18,19,20,21,22,23) | 0x400000;
+ u32 plate = bitswap<32>(m_plate,31,30,24,25,26,27,28,15,14,29,13,12,11,10,9,8,7,6,5,4,3,2,1,0,16,17,18,19,20,21,22,23) | 0x400000;
display_matrix(30, 8, plate, m_grid);
}
@@ -3697,7 +3697,7 @@ WRITE16_MEMBER(pbqbert_state::grid_w)
// D14: speaker out
m_speaker->level_w(data >> 14 & 1);
- // D0-D7: vfd matrix grid
+ // D0-D7: vfd grid
m_grid = data & 0xff;
// D8: plate 25 (update display there)
@@ -3776,14 +3776,14 @@ public:
void kingman_state::prepare_display()
{
- u16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,9,0,1,2,3,4,5,6,7,8);
- u32 plate = BITSWAP24(m_plate,23,6,7,5,4,3,2,1,0,13,12,20,19,18,17,16,10,11,9,8,14,15,13,12);
+ u16 grid = bitswap<16>(m_grid,15,14,13,12,11,10,9,0,1,2,3,4,5,6,7,8);
+ u32 plate = bitswap<24>(m_plate,23,6,7,5,4,3,2,1,0,13,12,20,19,18,17,16,10,11,9,8,14,15,13,12);
display_matrix(23, 9, plate, grid);
}
WRITE8_MEMBER(kingman_state::plate_w)
{
- // R0x-R3x: vfd matrix plate
+ // R0x-R3x: vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -3802,7 +3802,7 @@ WRITE16_MEMBER(kingman_state::grid_w)
update_int0();
}
- // D7-D15: vfd matrix grid
+ // D7-D15: vfd grid
m_grid = data >> 7 & 0x1ff;
// D0-D4: more plates
@@ -3897,14 +3897,14 @@ public:
void tmtron_state::prepare_display()
{
- u16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,1,2,3,4,5,6,7,8,9,0);
- u32 plate = BITSWAP24(m_plate,23,5,2,21,1,6,7,9,10,11,21,0,19,3,4,8,3,18,17,16,12,13,14,15);
+ u16 grid = bitswap<16>(m_grid,15,14,13,12,11,10,1,2,3,4,5,6,7,8,9,0);
+ u32 plate = bitswap<24>(m_plate,23,5,2,21,1,6,7,9,10,11,21,0,19,3,4,8,3,18,17,16,12,13,14,15);
display_matrix(23, 10, plate, grid);
}
WRITE8_MEMBER(tmtron_state::plate_w)
{
- // R0x-R3x: vfd matrix plate
+ // R0x-R3x: vfd plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -3923,7 +3923,7 @@ WRITE16_MEMBER(tmtron_state::grid_w)
update_int1();
}
- // D6-D15: vfd matrix grid
+ // D6-D15: vfd grid
m_grid = data >> 6 & 0x3ff;
// D0-D3,D5: more plates
@@ -4018,12 +4018,12 @@ public:
WRITE8_MEMBER(vinvader_state::plate_w)
{
- // R1x-R3x(,D4-D6): vfd matrix plate
+ // R1x-R3x(,D4-D6): vfd plate
int shift = (offset - hmcs40_cpu_device::PORT_R1X) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
// update display
- u16 plate = BITSWAP16(m_plate,15,11,7,3,10,6,14,2,9,5,13,1,8,4,12,0);
+ u16 plate = bitswap<16>(m_plate,15,11,7,3,10,6,14,2,9,5,13,1,8,4,12,0);
display_matrix(12, 9, plate, m_grid);
}
@@ -4032,7 +4032,7 @@ WRITE16_MEMBER(vinvader_state::grid_w)
// D0: speaker out
m_speaker->level_w(data & 1);
- // D7-D15: vfd matrix grid
+ // D7-D15: vfd grid
m_grid = data >> 7 & 0x1ff;
// D4-D6: more plates (update display there)
@@ -4147,7 +4147,7 @@ ROM_START( bzaxxon )
ROM_CONTINUE( 0x1e80, 0x0100 )
ROM_REGION( 521080, "svg", 0)
- ROM_LOAD( "bzaxxon.svg", 0, 521080, CRC(f4fbb2de) SHA1(83db400e67d91ae4bfee3e8568ae9df94ebede19) )
+ ROM_LOAD( "bzaxxon.svg", 0, 521080, BAD_DUMP CRC(f4fbb2de) SHA1(83db400e67d91ae4bfee3e8568ae9df94ebede19) )
ROM_END
@@ -4167,7 +4167,7 @@ ROM_START( bpengo )
ROM_CONTINUE( 0x1e80, 0x0100 )
ROM_REGION( 744461, "svg", 0)
- ROM_LOAD( "bpengo.svg", 0, 744461, CRC(2b9abaa5) SHA1(c70a6ac1fa757fdd3ababfe6e00573ef1410c1eb) )
+ ROM_LOAD( "bpengo.svg", 0, 744461, BAD_DUMP CRC(2b9abaa5) SHA1(c70a6ac1fa757fdd3ababfe6e00573ef1410c1eb) )
ROM_END
@@ -4177,7 +4177,7 @@ ROM_START( bbtime )
ROM_CONTINUE( 0x1e80, 0x0100 )
ROM_REGION( 461605, "svg", 0)
- ROM_LOAD( "bbtime.svg", 0, 461605, CRC(5b335271) SHA1(46c45b711358e8397ae707668aecead9e341ab8a) )
+ ROM_LOAD( "bbtime.svg", 0, 461605, BAD_DUMP CRC(5b335271) SHA1(46c45b711358e8397ae707668aecead9e341ab8a) )
ROM_END
diff --git a/src/mame/drivers/hh_melps4.cpp b/src/mame/drivers/hh_melps4.cpp
index f233dc064d7..9dbdd384e1c 100644
--- a/src/mame/drivers/hh_melps4.cpp
+++ b/src/mame/drivers/hh_melps4.cpp
@@ -235,8 +235,8 @@ public:
void cfrogger_state::prepare_display()
{
- u16 grid = BITSWAP16(m_grid,15,14,13,12,0,1,2,3,4,5,6,7,8,9,10,11);
- u16 plate = BITSWAP16(m_plate,12,4,13,5,14,6,15,7,3,11,2,10,1,9,0,8);
+ u16 grid = bitswap<16>(m_grid,15,14,13,12,0,1,2,3,4,5,6,7,8,9,10,11);
+ u16 plate = bitswap<16>(m_plate,12,4,13,5,14,6,15,7,3,11,2,10,1,9,0,8);
display_matrix(16, 12, plate, grid);
}
@@ -246,7 +246,7 @@ WRITE8_MEMBER(cfrogger_state::plate_w)
if (offset == MELPS4_PORTF)
m_inp_mux = data & 3;
- // Sx,Fx,Gx: vfd matrix plate
+ // Sx,Fx,Gx: vfd plate
int mask = (offset == MELPS4_PORTS) ? 0xff : 0xf; // port S is 8-bit
int shift = (offset == MELPS4_PORTS) ? 0 : (offset + 1) * 4;
m_plate = (m_plate & ~(mask << shift)) | (data << shift);
@@ -255,7 +255,7 @@ WRITE8_MEMBER(cfrogger_state::plate_w)
WRITE16_MEMBER(cfrogger_state::grid_w)
{
- // D0-D11: vfd matrix grid
+ // D0-D11: vfd grid
m_grid = data;
prepare_display();
}
@@ -351,8 +351,8 @@ public:
void gjungler_state::prepare_display()
{
- u16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,9,8,7,6,5,4,3,2,0,1);
- u32 plate = BITSWAP24(m_plate,23,22,21,20,19,18,8,9,10,11,13,16,15,14,13,12,7,0,6,1,5,2,4,3) | 0x2000;
+ u16 grid = bitswap<16>(m_grid,15,14,13,12,11,10,9,8,7,6,5,4,3,2,0,1);
+ u32 plate = bitswap<24>(m_plate,23,22,21,20,19,18,8,9,10,11,13,16,15,14,13,12,7,0,6,1,5,2,4,3) | 0x2000;
display_matrix(18, 12, plate, grid);
}
@@ -362,7 +362,7 @@ WRITE8_MEMBER(gjungler_state::plate_w)
if (offset == MELPS4_PORTG)
m_inp_mux = data & 3;
- // Sx,Fx,Gx,U: vfd matrix plate
+ // Sx,Fx,Gx,U: vfd plate
int mask = (offset == MELPS4_PORTS) ? 0xff : 0xf; // port S is 8-bit
int shift = (offset == MELPS4_PORTS) ? 0 : (offset + 1) * 4;
m_plate = (m_plate & ~(mask << shift)) | (data << shift);
@@ -371,7 +371,7 @@ WRITE8_MEMBER(gjungler_state::plate_w)
WRITE16_MEMBER(gjungler_state::grid_w)
{
- // D0-D11: vfd matrix grid
+ // D0-D11: vfd grid
m_grid = data;
prepare_display();
}
diff --git a/src/mame/drivers/hh_pic16.cpp b/src/mame/drivers/hh_pic16.cpp
index ca8e2a946aa..d7e03652bfa 100644
--- a/src/mame/drivers/hh_pic16.cpp
+++ b/src/mame/drivers/hh_pic16.cpp
@@ -1395,7 +1395,7 @@ WRITE8_MEMBER(uspbball_state::write_a)
WRITE8_MEMBER(uspbball_state::write_b)
{
// B: digit segment data
- m_b = BITSWAP8(data,0,1,2,3,4,5,6,7);
+ m_b = bitswap<8>(data,0,1,2,3,4,5,6,7);
prepare_display();
}
diff --git a/src/mame/drivers/hh_sm510.cpp b/src/mame/drivers/hh_sm510.cpp
index 1879f7801e7..97cf885532a 100644
--- a/src/mame/drivers/hh_sm510.cpp
+++ b/src/mame/drivers/hh_sm510.cpp
@@ -7,10 +7,13 @@
List of child drivers:
- rzone: Tiger R-Zone
+ The LCD screen graphics are provided internally with an SVG file.
+ MAME external artwork is recommended for the backgrounds inlays.
+
TODO:
- - improve LCD segments in SVGs for: gnw_mc25, gnw_eg26, exospace
+ - improve/redo SVGs of: gnw_mc25, gnw_eg26, exospace
- confirm gnw_mc25/gnw_eg26 rom (dumped from Soviet clone, but pretty confident that it's same)
- - some of the Tiger games release years are uncertain
+ - identify lcd segments for tgaiden
***************************************************************************/
@@ -1599,13 +1602,16 @@ MACHINE_CONFIG_END
/***************************************************************************
- Tiger Gauntlet
+ Tiger Gauntlet (model 7-778), Robin Hood (model 7-861)
* Sharp SM510 under epoxy (die label CMS54C, KMS583)
* lcd screen with custom segments, 1-bit sound
- known releases:
+ known releases (Gauntlet):
- World: Gauntlet
- Japan: Gauntlet (published by Sega)
+ - UK: Gauntlet (published by Grandstand)
+
+ Robin Hood is the same ROM, different LCD.
***************************************************************************/
@@ -1664,6 +1670,13 @@ static INPUT_PORTS_START( tgaunt )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
INPUT_PORTS_END
+static INPUT_PORTS_START( trobhood )
+ PORT_INCLUDE( tgaunt )
+
+ PORT_MODIFY("IN.3")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Money")
+INPUT_PORTS_END
+
static MACHINE_CONFIG_START( tgaunt )
/* basic machine hardware */
@@ -1690,13 +1703,21 @@ static MACHINE_CONFIG_START( tgaunt )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( trobhood, tgaunt )
+
+ /* video hardware */
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(1468, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1468-1, 0, 1080-1)
+MACHINE_CONFIG_END
+
/***************************************************************************
- Tiger Double Dragon
+ Tiger Double Dragon (model 7-780)
* Sharp SM510 under epoxy (die label CMS54C, KMS570, KMS593)
* lcd screen with custom segments, 1-bit sound
@@ -1784,7 +1805,200 @@ MACHINE_CONFIG_END
/***************************************************************************
- Tiger Batman
+ Tiger Karnov (model 7-783)
+ * Sharp SM510 under epoxy (die label CMS54C, KMS582)
+ * lcd screen with custom segments, 1-bit sound
+
+***************************************************************************/
+
+class tkarnov_state : public hh_sm510_state
+{
+public:
+ tkarnov_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
+ }
+};
+
+// config
+
+static INPUT_PORTS_START( tkarnov )
+ PORT_START("IN.0") // S1
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.1") // S2
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.2") // S3
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.3") // S4
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Fire-Ball")
+ PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.4") // S5
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Boomerang")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Shield")
+ PORT_BIT( 0x09, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.5") // S6
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Max Score")
+ PORT_BIT( 0x0b, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.6") // GND!
+ PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Power On/Start")
+
+ PORT_START("BA")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_VOLUME_DOWN ) PORT_NAME("Sound")
+
+ PORT_START("B")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POWER_OFF )
+
+ PORT_START("ACL")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
+INPUT_PORTS_END
+
+static MACHINE_CONFIG_START( tkarnov )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", SM510, XTAL_32_768kHz)
+ MCFG_SM510_WRITE_SEGS_CB(WRITE16(hh_sm510_state, sm510_lcd_segment_w))
+ MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r))
+ MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w))
+ MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r1_w))
+ MCFG_SM510_READ_BA_CB(IOPORT("BA"))
+ MCFG_SM510_READ_B_CB(IOPORT("B"))
+
+ /* video hardware */
+ MCFG_SCREEN_SVG_ADD("screen", "svg")
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(1477, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1477-1, 0, 1080-1)
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_sm510_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_svg)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
+ Tiger Ninja Gaiden (model 7-787)
+ * Sharp SM510 under epoxy (die label M82)
+ * lcd screen with custom segments, 1 led, 1-bit sound
+
+***************************************************************************/
+
+class tgaiden_state : public hh_sm510_state
+{
+public:
+ tgaiden_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 5;
+ m_inp_fixed = 5;
+ }
+
+ DECLARE_WRITE8_MEMBER(write_r);
+};
+
+// handlers
+
+WRITE8_MEMBER(tgaiden_state::write_r)
+{
+ // R1: speaker out
+ piezo_r1_w(space, 0, data & 1);
+
+ // R2: led
+ //..
+}
+
+// config
+
+static INPUT_PORTS_START( tgaiden )
+ PORT_START("IN.0") // S1
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x0b, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.1") // S2
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x09, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.2") // S3
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.3") // S4
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Jump")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Attack/Pick")
+ PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.4") // S5
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Pause")
+ PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.5") // GND!
+ PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Power On/Start")
+
+ PORT_START("BA")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_VOLUME_DOWN ) PORT_NAME("Sound")
+
+ PORT_START("B")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POWER_OFF )
+
+ PORT_START("ACL")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
+INPUT_PORTS_END
+
+static MACHINE_CONFIG_START( tgaiden )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", SM510, XTAL_32_768kHz)
+ MCFG_SM510_WRITE_SEGS_CB(WRITE16(hh_sm510_state, sm510_lcd_segment_w))
+ MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r))
+ MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w))
+ MCFG_SM510_WRITE_R_CB(WRITE8(tgaiden_state, write_r))
+ MCFG_SM510_READ_BA_CB(IOPORT("BA"))
+ MCFG_SM510_READ_B_CB(IOPORT("B"))
+
+ /* video hardware */
+ MCFG_SCREEN_SVG_ADD("screen", "svg")
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(1920, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1920-1, 0, 1080-1)
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_sm510_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_svg)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
+ Tiger Batman (model 7-799)
* Sharp SM510 under epoxy (die label CMS54C, KMS597)
* lcd screen with custom segments, 1-bit sound
@@ -1871,10 +2085,198 @@ MACHINE_CONFIG_END
/***************************************************************************
- Tiger Altered Beast
+ Tiger Space Harrier II (model 7-814)
+ * Sharp SM510 under epoxy (die label M91)
+ * lcd screen with custom segments, 1-bit sound
+
+ known releases:
+ - World: Space Harrier II
+ - Japan: Space Harrier (published by Sega)
+
+***************************************************************************/
+
+class tsharr2_state : public hh_sm510_state
+{
+public:
+ tsharr2_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 5;
+ m_inp_fixed = 5;
+ }
+};
+
+// config
+
+static INPUT_PORTS_START( tsharr2 )
+ PORT_START("IN.0") // S1
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x0b, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.1") // S2
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x09, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.2") // S3
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.3") // S4
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) // Attack
+ PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.4") // S5
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Max Score")
+ PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.5") // GND!
+ PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Power On/Start")
+
+ PORT_START("BA")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_VOLUME_DOWN ) PORT_NAME("Sound")
+
+ PORT_START("B")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POWER_OFF )
+
+ PORT_START("ACL")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
+INPUT_PORTS_END
+
+static MACHINE_CONFIG_START( tsharr2 )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", SM510, XTAL_32_768kHz)
+ MCFG_SM510_WRITE_SEGS_CB(WRITE16(hh_sm510_state, sm510_lcd_segment_w))
+ MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r))
+ MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w))
+ MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r1_w))
+ MCFG_SM510_R_DIRECT_CONTROL(true)
+ MCFG_SM510_READ_BA_CB(IOPORT("BA"))
+ MCFG_SM510_READ_B_CB(IOPORT("B"))
+
+ /* video hardware */
+ MCFG_SCREEN_SVG_ADD("screen", "svg")
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(1493, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1493-1, 0, 1080-1)
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_sm510_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_svg)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
+ Tiger Robocop 2 (model 7-830)
+ * Sharp SM510 under epoxy (die label M96)
+ * lcd screen with custom segments, 1-bit sound
+
+***************************************************************************/
+
+class trobocop2_state : public hh_sm510_state
+{
+public:
+ trobocop2_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
+ }
+};
+
+// config
+
+static INPUT_PORTS_START( trobocop2 )
+ PORT_START("IN.0") // S1
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x0b, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.1") // S2
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) // Rescue
+ PORT_BIT( 0x09, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.2") // S3
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) // /Pick
+ PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.3") // S4
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Shoot Right")
+ PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.4") // S5
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Shoot Up")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Shoot Left")
+ PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.5") // S6
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Pause")
+ PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.6") // GND!
+ PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Power On/Start")
+
+ PORT_START("BA")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_VOLUME_DOWN ) PORT_NAME("Sound")
+
+ PORT_START("B")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POWER_OFF )
+
+ PORT_START("ACL")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
+INPUT_PORTS_END
+
+static MACHINE_CONFIG_START( trobocop2 )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", SM510, XTAL_32_768kHz)
+ MCFG_SM510_WRITE_SEGS_CB(WRITE16(hh_sm510_state, sm510_lcd_segment_w))
+ MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r))
+ MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w))
+ MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r1_w))
+ MCFG_SM510_READ_BA_CB(IOPORT("BA"))
+ MCFG_SM510_READ_B_CB(IOPORT("B"))
+
+ /* video hardware */
+ MCFG_SCREEN_SVG_ADD("screen", "svg")
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(1487, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1487-1, 0, 1080-1)
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_sm510_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_svg)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
+ Tiger Altered Beast (model 7-831)
* Sharp SM510 under epoxy (die label M88)
* lcd screen with custom segments, 1-bit sound
+ known releases:
+ - World: Altered Beast
+ - Japan: Juuouki (published by Sega)
+
***************************************************************************/
class taltbeast_state : public hh_sm510_state
@@ -1963,7 +2365,7 @@ MACHINE_CONFIG_END
/***************************************************************************
- Tiger Swamp Thing
+ Tiger Swamp Thing (model 7-851)
* Sharp SM510 under epoxy (die label MB0)
* lcd screen with custom segments, 1-bit sound
@@ -2051,7 +2453,99 @@ MACHINE_CONFIG_END
/***************************************************************************
- Tiger Sonic The Hedgehog
+ Tiger Battletoads (model 7-868)
+ * Sharp SM510 under epoxy (die label MB3)
+ * lcd screen with custom segments, 1-bit sound
+
+***************************************************************************/
+
+class tbtoads_state : public hh_sm510_state
+{
+public:
+ tbtoads_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
+ }
+};
+
+// config
+
+static INPUT_PORTS_START( tbtoads )
+ PORT_START("IN.0") // S1
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x0b, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.1") // S2
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x09, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.2") // S3
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.3") // S4
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Attack Right")
+ PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.4") // S5
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Select")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Attack Left")
+ PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.5") // S6
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Score")
+ PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.6") // GND!
+ PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Power On/Start")
+
+ PORT_START("BA")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_VOLUME_DOWN ) PORT_NAME("Sound")
+
+ PORT_START("B")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POWER_OFF )
+
+ PORT_START("ACL")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
+INPUT_PORTS_END
+
+static MACHINE_CONFIG_START( tbtoads )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", SM510, XTAL_32_768kHz)
+ MCFG_SM510_WRITE_SEGS_CB(WRITE16(hh_sm510_state, sm510_lcd_segment_w))
+ MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r))
+ MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w))
+ MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r1_w))
+ MCFG_SM510_READ_BA_CB(IOPORT("BA"))
+ MCFG_SM510_READ_B_CB(IOPORT("B"))
+
+ /* video hardware */
+ MCFG_SCREEN_SVG_ADD("screen", "svg")
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(1454, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1454-1, 0, 1080-1)
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_sm510_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_svg)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
+ Tiger Sonic The Hedgehog (model 78-513)
* Sharp SM511 under epoxy (die label KMS73B, N71)
* lcd screen with custom segments, 2-bit sound
@@ -2101,7 +2595,7 @@ WRITE8_MEMBER(tsonic_state::write_s)
static INPUT_PORTS_START( tsonic )
PORT_START("IN.0") // S2
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) // Jump
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) // Jump Up
PORT_BIT( 0x0b, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.1") // S3
@@ -2110,7 +2604,7 @@ static INPUT_PORTS_START( tsonic )
PORT_BIT( 0x09, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.2") // S4
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) // Down
PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.3") // S5
@@ -2169,26 +2663,26 @@ MACHINE_CONFIG_END
/***************************************************************************
- Tiger Space Jam
- * Sharp SM510 under epoxy (die label KMS10, 23)
+ Tiger The Shadow (model 78-559)
+ * Sharp SM510 under epoxy (die label MJ5)
* lcd screen with custom segments, 1-bit sound
***************************************************************************/
-class tsjam_state : public hh_sm510_state
+class tshadow_state : public hh_sm510_state
{
public:
- tsjam_state(const machine_config &mconfig, device_type type, const char *tag)
+ tshadow_state(const machine_config &mconfig, device_type type, const char *tag)
: hh_sm510_state(mconfig, type, tag)
{
- m_inp_lines = 5;
- m_inp_fixed = 5;
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
}
};
// config
-static INPUT_PORTS_START( tsjam )
+static INPUT_PORTS_START( tshadow )
PORT_START("IN.0") // S1
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
PORT_BIT( 0x0b, IP_ACTIVE_HIGH, IPT_UNUSED )
@@ -2203,15 +2697,112 @@ static INPUT_PORTS_START( tsjam )
PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.3") // S4
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Shoot/Block")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Tune/Steal")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Punch")
+ PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.4") // S5
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Shadow")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Kick")
PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_START("IN.5") // S6
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Pause")
+ PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.6") // GND!
+ PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Power On/Start")
+
+ PORT_START("BA")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_VOLUME_DOWN ) PORT_NAME("Sound")
+
+ PORT_START("B")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POWER_OFF )
+
+ PORT_START("ACL")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
+INPUT_PORTS_END
+
+static MACHINE_CONFIG_START( tshadow )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", SM510, XTAL_32_768kHz)
+ MCFG_SM510_WRITE_SEGS_CB(WRITE16(hh_sm510_state, sm510_lcd_segment_w))
+ MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r))
+ MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w))
+ MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r1_w))
+ MCFG_SM510_READ_BA_CB(IOPORT("BA"))
+ MCFG_SM510_READ_B_CB(IOPORT("B"))
+
+ /* video hardware */
+ MCFG_SCREEN_SVG_ADD("screen", "svg")
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(1484, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1484-1, 0, 1080-1)
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_sm510_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_svg)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
+ Tiger Batman Forever - Double Dose of Doom (model 78-572)
+ * Sharp SM510 under epoxy (die label MK3)
+ * lcd screen with custom segments, 1-bit sound
+
+***************************************************************************/
+
+class tbatfor_state : public hh_sm510_state
+{
+public:
+ tbatfor_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
+ }
+};
+
+// config
+
+static INPUT_PORTS_START( tbatfor )
+ PORT_START("IN.0") // S1
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Grappling Gun")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x0a, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.1") // S2
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x09, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.2") // S3
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.3") // S4
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Help")
+ PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
+
PORT_START("IN.4") // S5
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Batarang")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Thruster")
+ PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.5") // S6
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Pause")
PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_START("IN.5") // GND!
+ PORT_START("IN.6") // GND!
PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Power On/Start")
@@ -2225,10 +2816,10 @@ static INPUT_PORTS_START( tsjam )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
INPUT_PORTS_END
-static MACHINE_CONFIG_START( tsjam )
+static MACHINE_CONFIG_START( tbatfor )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", SM510, XTAL_32_768kHz) // no external XTAL
+ MCFG_CPU_ADD("maincpu", SM510, XTAL_32_768kHz)
MCFG_SM510_WRITE_SEGS_CB(WRITE16(hh_sm510_state, sm510_lcd_segment_w))
MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r))
MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w))
@@ -2239,8 +2830,8 @@ static MACHINE_CONFIG_START( tsjam )
/* video hardware */
MCFG_SCREEN_SVG_ADD("screen", "svg")
MCFG_SCREEN_REFRESH_RATE(50)
- MCFG_SCREEN_SIZE(1421, 1080)
- MCFG_SCREEN_VISIBLE_AREA(0, 1421-1, 0, 1080-1)
+ MCFG_SCREEN_SIZE(1493, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1493-1, 0, 1080-1)
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_sm510_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_svg)
@@ -2257,7 +2848,7 @@ MACHINE_CONFIG_END
/***************************************************************************
- Tiger Judge Dredd
+ Tiger Judge Dredd (model 78-581)
* Sharp SM510 under epoxy (die label MKS)
* lcd screen with custom segments, 1-bit sound
@@ -2350,6 +2941,187 @@ MACHINE_CONFIG_END
/***************************************************************************
+ Tiger Apollo 13 (model 78-591)
+ * Sharp SM510 under epoxy (die label 10 07)
+ * lcd screen with custom segments, 1-bit sound
+
+***************************************************************************/
+
+class tapollo13_state : public hh_sm510_state
+{
+public:
+ tapollo13_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
+ }
+};
+
+// config
+
+static INPUT_PORTS_START( tapollo13 )
+ PORT_START("IN.0") // S1
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Thruster Left")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x0a, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.1") // S2
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x09, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.2") // S3
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.3") // S4
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Parachute")
+ PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.4") // S5
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Thruster Right")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Capture")
+ PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.5") // S6
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Pause")
+ PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.6") // GND!
+ PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Power On/Start")
+
+ PORT_START("BA")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_VOLUME_DOWN ) PORT_NAME("Sound")
+
+ PORT_START("B")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POWER_OFF )
+
+ PORT_START("ACL")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
+INPUT_PORTS_END
+
+static MACHINE_CONFIG_START( tapollo13 )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", SM510, XTAL_32_768kHz)
+ MCFG_SM510_WRITE_SEGS_CB(WRITE16(hh_sm510_state, sm510_lcd_segment_w))
+ MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r))
+ MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w))
+ MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r1_w))
+ MCFG_SM510_READ_BA_CB(IOPORT("BA"))
+ MCFG_SM510_READ_B_CB(IOPORT("B"))
+
+ /* video hardware */
+ MCFG_SCREEN_SVG_ADD("screen", "svg")
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(1467, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1467-1, 0, 1080-1)
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_sm510_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_svg)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
+ Tiger Space Jam (model 78-621)
+ * Sharp SM510 under epoxy (die label KMS10, 23)
+ * lcd screen with custom segments, 1-bit sound
+
+***************************************************************************/
+
+class tsjam_state : public hh_sm510_state
+{
+public:
+ tsjam_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 5;
+ m_inp_fixed = 5;
+ }
+};
+
+// config
+
+static INPUT_PORTS_START( tsjam )
+ PORT_START("IN.0") // S1
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x0b, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.1") // S2
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x09, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.2") // S3
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.3") // S4
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Shoot/Block")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Tune/Steal")
+ PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.4") // S5
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Pause")
+ PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.5") // GND!
+ PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Power On/Start")
+
+ PORT_START("BA")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_VOLUME_DOWN ) PORT_NAME("Sound")
+
+ PORT_START("B")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POWER_OFF )
+
+ PORT_START("ACL")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
+INPUT_PORTS_END
+
+static MACHINE_CONFIG_START( tsjam )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", SM510, XTAL_32_768kHz) // no external XTAL
+ MCFG_SM510_WRITE_SEGS_CB(WRITE16(hh_sm510_state, sm510_lcd_segment_w))
+ MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r))
+ MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w))
+ MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r1_w))
+ MCFG_SM510_READ_BA_CB(IOPORT("BA"))
+ MCFG_SM510_READ_B_CB(IOPORT("B"))
+
+ /* video hardware */
+ MCFG_SCREEN_SVG_ADD("screen", "svg")
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(1421, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1421-1, 0, 1080-1)
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_sm510_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_svg)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
Game driver(s)
***************************************************************************/
@@ -2485,7 +3257,7 @@ ROM_START( gnw_mc25 )
ROM_LOAD( "mc-25", 0x0000, 0x0740, BAD_DUMP CRC(cb820c32) SHA1(7e94fc255f32db725d5aa9e196088e490c1a1443) ) // dumped from Soviet clone
ROM_REGION( 102453, "svg", 0)
- ROM_LOAD( "gnw_mc25.svg", 0, 102453, CRC(88cc7c49) SHA1(c000d51d1b99750116b97f9bafc0314ea506366d) )
+ ROM_LOAD( "gnw_mc25.svg", 0, 102453, BAD_DUMP CRC(88cc7c49) SHA1(c000d51d1b99750116b97f9bafc0314ea506366d) )
ROM_END
ROM_START( gnw_eg26 )
@@ -2493,7 +3265,7 @@ ROM_START( gnw_eg26 )
ROM_LOAD( "eg-26", 0x0000, 0x0740, BAD_DUMP CRC(cb820c32) SHA1(7e94fc255f32db725d5aa9e196088e490c1a1443) ) // dumped from Soviet clone
ROM_REGION( 102848, "svg", 0)
- ROM_LOAD( "gnw_eg26.svg", 0, 102848, CRC(742c2605) SHA1(984d430ad2ff47ad7a3f9b25b7d3f3d51b10cca5) )
+ ROM_LOAD( "gnw_eg26.svg", 0, 102848, BAD_DUMP CRC(742c2605) SHA1(984d430ad2ff47ad7a3f9b25b7d3f3d51b10cca5) )
ROM_END
ROM_START( nupogodi )
@@ -2509,7 +3281,7 @@ ROM_START( exospace )
ROM_LOAD( "exospace.bin", 0x0000, 0x0740, CRC(553e2b09) SHA1(2b74f8437b881fbb62b61f25435a5bfc66872a9a) )
ROM_REGION( 66790, "svg", 0)
- ROM_LOAD( "exospace.svg", 0, 66790, CRC(df31043a) SHA1(2d8caf42894df699e469652e5f448beaebbcc1ae) )
+ ROM_LOAD( "exospace.svg", 0, 66790, BAD_DUMP CRC(df31043a) SHA1(2d8caf42894df699e469652e5f448beaebbcc1ae) )
ROM_END
@@ -2587,6 +3359,14 @@ ROM_START( tgaunt )
ROM_LOAD( "tgaunt.svg", 0, 713020, CRC(1f65ae21) SHA1(57ca33d073d1096a7fc17f2bdac940868d1ae651) )
ROM_END
+ROM_START( trobhood )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "583", 0x0000, 0x1000, CRC(598d8156) SHA1(9f776e8b9b4321e8118481e6b1304f8a38f9932e) )
+
+ ROM_REGION( 704892, "svg", 0)
+ ROM_LOAD( "trobhood.svg", 0, 704892, CRC(291fd8db) SHA1(1de6bd0e203f16c44f7d661e44863a1a919f3da9) )
+ROM_END
+
ROM_START( tddragon )
ROM_REGION( 0x1000, "maincpu", 0 )
@@ -2597,6 +3377,24 @@ ROM_START( tddragon )
ROM_END
+ROM_START( tkarnov )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "582", 0x0000, 0x1000, CRC(cee85bdd) SHA1(143e39524f1dea523e0575f327ed189343cc87f5) )
+
+ ROM_REGION( 527360, "svg", 0)
+ ROM_LOAD( "tkarnov.svg", 0, 527360, CRC(ee918299) SHA1(2d8ccf7650ec9b71fcdbdf3f5228e17dca990216) )
+ROM_END
+
+
+ROM_START( tgaiden )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "m82", 0x0000, 0x1000, CRC(278eafb0) SHA1(14396a0010bade0fde705969151200ed432321e7) )
+
+ ROM_REGION( 100000, "svg", 0)
+ ROM_LOAD( "tgaiden.svg", 0, 100000, NO_DUMP )
+ROM_END
+
+
ROM_START( tbatman )
ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD( "597", 0x0000, 0x1000, CRC(8b7acc97) SHA1(fe811675dc5c5ef9f6f969685c933926c8b9e868) )
@@ -2606,12 +3404,30 @@ ROM_START( tbatman )
ROM_END
+ROM_START( tsharr2 )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "m91", 0x0000, 0x1000, CRC(b207ac79) SHA1(9889dfec26089313ba2bdac845a75a26742d09e1) )
+
+ ROM_REGION( 555126, "svg", 0)
+ ROM_LOAD( "tsharr2.svg", 0, 555126, CRC(ff43e29b) SHA1(0af02e65a1dcf95958296a292343430670b67ae5) )
+ROM_END
+
+
+ROM_START( trobocop2 )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "m96", 0x0000, 0x1000, CRC(3704b60c) SHA1(04275833e1a79fd33226faf060890b66ae54e1d3) )
+
+ ROM_REGION( 463532, "svg", 0)
+ ROM_LOAD( "trobocop2.svg", 0, 463532, CRC(c2b92868) SHA1(87912f02bea967c10ba1d8f7c810e3c44b0e3cff) )
+ROM_END
+
+
ROM_START( taltbeast )
ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD( "m88", 0x0000, 0x1000, CRC(1b3d15e7) SHA1(78371230dff872d6c07eefdbc4856c2a3336eb61) )
- ROM_REGION( 668221, "svg", 0)
- ROM_LOAD( "taltbeast.svg", 0, 668221, CRC(9b41b5b9) SHA1(4c520f917572894a2f0ab92efbd344c6bc6deccc) )
+ ROM_REGION( 667887, "svg", 0)
+ ROM_LOAD( "taltbeast.svg", 0, 667887, CRC(1ca9bbf1) SHA1(be844dddee4a95f70ea2adf875d3ee6cda2a6633) )
ROM_END
@@ -2624,6 +3440,15 @@ ROM_START( tswampt )
ROM_END
+ROM_START( tbtoads )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mb3", 0x0000, 0x1000, CRC(8fa4c55a) SHA1(2be97e63dfed51313e180d7388dd431058db5a51) )
+
+ ROM_REGION( 694523, "svg", 0)
+ ROM_LOAD( "tbtoads.svg", 0, 694523, CRC(9a5c3ac5) SHA1(569e8ecd6dee75842e23eebf17611cef8d06ccf5) )
+ROM_END
+
+
ROM_START( tsonic )
ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD( "n71.program", 0x0000, 0x1000, CRC(44cafd68) SHA1(bf8d0ab88d153fabc688ffec19959209ca79c3db) )
@@ -2636,12 +3461,21 @@ ROM_START( tsonic )
ROM_END
-ROM_START( tsjam )
+ROM_START( tshadow )
ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "10_23", 0x0000, 0x1000, CRC(6eaabfbd) SHA1(f0ecbd6f65fe72ce2d8a452685be2e77a63fc9f0) )
+ ROM_LOAD( "mj5", 0x0000, 0x1000, CRC(09822d73) SHA1(30cae8b783a4f388193aee248fa18c6c1042e0ec) )
- ROM_REGION( 1044643, "svg", 0)
- ROM_LOAD( "tsjam.svg", 0, 1044643, CRC(f91d9429) SHA1(57a843673bf4c5753ae795d49da29ceb6fe095f3) )
+ ROM_REGION( 946450, "svg", 0)
+ ROM_LOAD( "tshadow.svg", 0, 946450, CRC(5cab680a) SHA1(8f8f660c08fc56287362b11c183655047fbd91ca) )
+ROM_END
+
+
+ROM_START( tbatfor )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mk3", 0x0000, 0x1000, CRC(9993c382) SHA1(0c89e21024315ce7c086af5390c60f5766028c4f) )
+
+ ROM_REGION( 876501, "svg", 0)
+ ROM_LOAD( "tbatfor.svg", 0, 876501, CRC(2506eb20) SHA1(329dddc514d9c0c6e658b489059371b18b45d301) )
ROM_END
@@ -2654,6 +3488,24 @@ ROM_START( tjdredd )
ROM_END
+ROM_START( tapollo13 )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "10_07", 0x0000, 0x1000, CRC(63d0deaa) SHA1(d5de99d5e0ee08ec2ebeef7189ebac1c008d2e7d) )
+
+ ROM_REGION( 643176, "svg", 0)
+ ROM_LOAD( "tapollo13.svg", 0, 643176, CRC(e2dac162) SHA1(4089fa485579d2b87ac49b1cf33d6c2c085ea4c5) )
+ROM_END
+
+
+ROM_START( tsjam )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "10_23", 0x0000, 0x1000, CRC(6eaabfbd) SHA1(f0ecbd6f65fe72ce2d8a452685be2e77a63fc9f0) )
+
+ ROM_REGION( 1044643, "svg", 0)
+ ROM_LOAD( "tsjam.svg", 0, 1044643, CRC(f91d9429) SHA1(57a843673bf4c5753ae795d49da29ceb6fe095f3) )
+ROM_END
+
+
// YEAR NAME PARENT COMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
CONS( 1989, kdribble, 0, 0, kdribble, kdribble, kdribble_state, 0, "Konami", "Double Dribble (handheld)", MACHINE_SUPPORTS_SAVE )
@@ -2682,11 +3534,20 @@ CONS( 1983, gnw_ml102, 0, 0, ml102, ml102, ml102_state, 0, "N
CONS( 1984, gnw_bx301, 0, 0, bx301, bx301, bx301_state, 0, "Nintendo", "Game & Watch: Boxing", MACHINE_SUPPORTS_SAVE )
-CONS( 1988, tgaunt, 0, 0, tgaunt, tgaunt, tgaunt_state, 0, "Tiger Electronics (licensed from Tengen)", "Gauntlet (handheld)", MACHINE_SUPPORTS_SAVE )
-CONS( 1988, tddragon, 0, 0, tddragon, tddragon, tddragon_state, 0, "Tiger Electronics (licensed from Tradewest/Technos)", "Double Dragon (handheld)", MACHINE_SUPPORTS_SAVE )
+CONS( 1989, tgaunt, 0, 0, tgaunt, tgaunt, tgaunt_state, 0, "Tiger Electronics (licensed from Tengen)", "Gauntlet (handheld)", MACHINE_SUPPORTS_SAVE )
+CONS( 1991, trobhood, tgaunt, 0, trobhood, trobhood, tgaunt_state, 0, "Tiger Electronics", "Robin Hood (handheld)", MACHINE_SUPPORTS_SAVE )
+CONS( 1989, tddragon, 0, 0, tddragon, tddragon, tddragon_state, 0, "Tiger Electronics (licensed from Technos/Tradewest)", "Double Dragon (handheld)", MACHINE_SUPPORTS_SAVE )
+CONS( 1989, tkarnov, 0, 0, tkarnov, tkarnov, tkarnov_state, 0, "Tiger Electronics (licensed from Data East)", "Karnov (handheld)", MACHINE_SUPPORTS_SAVE )
+CONS( 1989, tgaiden, 0, 0, tgaiden, tgaiden, tgaiden_state, 0, "Tiger Electronics (licensed from Tecmo)", "Ninja Gaiden (handheld)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
CONS( 1989, tbatman, 0, 0, tbatman, tbatman, tbatman_state, 0, "Tiger Electronics", "Batman (handheld)", MACHINE_SUPPORTS_SAVE )
+CONS( 1990, tsharr2, 0, 0, tsharr2, tsharr2, tsharr2_state, 0, "Tiger Electronics (licensed from Sega)", "Space Harrier II (handheld)", MACHINE_SUPPORTS_SAVE )
+CONS( 1990, trobocop2, 0, 0, trobocop2, trobocop2, trobocop2_state, 0, "Tiger Electronics", "Robocop 2 (handheld)", MACHINE_SUPPORTS_SAVE )
CONS( 1990, taltbeast, 0, 0, taltbeast, taltbeast, taltbeast_state, 0, "Tiger Electronics (licensed from Sega)", "Altered Beast (handheld)", MACHINE_SUPPORTS_SAVE )
CONS( 1991, tswampt, 0, 0, tswampt, tswampt, tswampt_state, 0, "Tiger Electronics", "Swamp Thing (handheld)", MACHINE_SUPPORTS_SAVE )
-CONS( 1991, tsonic, 0, 0, tsonic, tsonic, tsonic_state, 0, "Tiger Electronics (licensed from Sega)", "Sonic The Hedgehog (handheld)", MACHINE_SUPPORTS_SAVE )
+CONS( 1991, tbtoads, 0, 0, tbtoads, tbtoads, tbtoads_state, 0, "Tiger Electronics (licensed from Rare/Tradewest)", "Battletoads (handheld)", MACHINE_SUPPORTS_SAVE )
+CONS( 1992, tsonic, 0, 0, tsonic, tsonic, tsonic_state, 0, "Tiger Electronics (licensed from Sega)", "Sonic The Hedgehog (handheld)", MACHINE_SUPPORTS_SAVE )
+CONS( 1994, tshadow, 0, 0, tshadow, tshadow, tshadow_state, 0, "Tiger Electronics", "The Shadow (handheld)", MACHINE_SUPPORTS_SAVE )
+CONS( 1995, tbatfor, 0, 0, tbatfor, tbatfor, tbatfor_state, 0, "Tiger Electronics", "Batman Forever - Double Dose of Doom", MACHINE_SUPPORTS_SAVE )
+CONS( 1995, tjdredd, 0, 0, tjdredd, tjdredd, tjdredd_state, 0, "Tiger Electronics", "Judge Dredd (handheld)", MACHINE_SUPPORTS_SAVE )
+CONS( 1995, tapollo13, 0, 0, tapollo13, tapollo13, tapollo13_state, 0, "Tiger Electronics", "Apollo 13 (handheld)", MACHINE_SUPPORTS_SAVE )
CONS( 1996, tsjam, 0, 0, tsjam, tsjam, tsjam_state, 0, "Tiger Electronics", "Space Jam (handheld)", MACHINE_SUPPORTS_SAVE )
-CONS( 1998, tjdredd, 0, 0, tjdredd, tjdredd, tjdredd_state, 0, "Tiger Electronics", "Judge Dredd (handheld)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/hh_tms1k.cpp b/src/mame/drivers/hh_tms1k.cpp
index 57ab1b33e11..d0dde07b070 100644
--- a/src/mame/drivers/hh_tms1k.cpp
+++ b/src/mame/drivers/hh_tms1k.cpp
@@ -5,9 +5,10 @@
This driver is a collection of simple dedicated handheld and tabletop
toys based around the TMS1000 MCU series. Anything more complex or clearly
part of a series is (or will be) in its own driver, see:
- - hh_tms1k: here
- eva: Chrysler EVA-11 (and EVA-24)
- microvsn: Milton Bradley MicroVision
+
+ (contd.) hh_tms1k child drivers:
- ticalc1x: TI TMS1K-based calculators
- tispellb: TI Spelling B series gen. 1
- tispeak: TI Speak & Spell series gen. 1
@@ -41,7 +42,7 @@
@MP1180 TMS1100 1980, Tomy Power House Pinball
@MP1181 TMS1100 1979, Conic Football 2
@MP1183 TMS1100 1980, E.R.S. Superbowl XV Football/Tandy Championship Football (model 60-2151)
- *MP1185 TMS1100 1979, Fonas 3-in-1: Football, Basketball, Soccer
+ @MP1185 TMS1100 1979, Fonas 3-in-1: Football, Basketball, Soccer
@MP1193 TMS1100 1980, Tandy Championship Football (model 60-2150)
@MP1204 TMS1100 1980, Entex Baseball 3 (6007)
*MP1209 TMS1100 1980, U.S. Games Space Cruiser/Strategy Football
@@ -53,10 +54,10 @@
@MP1312 TMS1100 1983, Gakken FX-Micom R-165/Tandy Radio Shack Science Fair Microcomputer Trainer
*MP1359 TMS1100? 1985, Capsela CRC2000
@MP1525 TMS1170 1980, Coleco Head to Head Baseball
- *MP1604 ? 1982, Gakken Invader 2000/Tandy Cosmic Fire Away 3000 (? note: VFD-capable)
+ @MP1604 TMS1370 1982, Gakken Invader 2000/Tandy Cosmic Fire Away 3000
@MP1801 TMS1700 1981, Tiger Ditto/Tandy Pocket Repeat (model 60-2152)
@MP2105 TMS1370 1979, Gakken/Entex Poker (6005)
- @MP2139 TMS1370 1982, Gakken Galaxy Invader 1000/Tandy Cosmic 1000 Fire Away
+ @MP2139 TMS1370 1981, Gakken Galaxy Invader 1000/Tandy Cosmic 1000 Fire Away
@MP2726 TMS1040 1979, Tomy Break Up
*MP2788 TMS1040? 1980, Bandai Flight Time (? note: VFD-capable)
@MP3005 TMS1730 1989, Tiger Copy Cat (model 7-522)
@@ -99,7 +100,7 @@
@M34038 TMS1100 1982, Parker Brothers Lost Treasure
M34047 TMS1100 1982, MicroVision cartridge: Super Blockbuster
@M34078A TMS1100 1983, Milton Bradley Electronic Arcade Mania
- *MP4486A TMS1000C 1983, Vulcan XL 25
+ @MP4486A TMS1000C 1983, Vulcan XL 25
@MP6100A TMS0980 1979, Ideal Electronic Detective
@MP6101B TMS0980 1979, Parker Brothers Stop Thief
*MP6361 ? 1983, Defender Strikes (? note: VFD-capable)
@@ -129,7 +130,7 @@
- unknown MCU clocks for some: TMS1000 RC curve is documented in the data manual,
but not for newer ones (rev. E or TMS1400 MCUs). TMS0970/0980 osc. is on-die.
- some of the games rely on the fact that faster/longer strobed leds appear brighter,
- eg. tc4/h2hfootb(offense), bankshot(cue ball), ...
+ eg. tc4/h2hfootb(offense), bankshot(cue ball), f3in1(ball), ...
- stopthiep: unable to start a game (may be intentional?)
- 7in1ss: in 2-player mode, game select and skill select can be configured after selecting a game?
- arrball: shot button is unresponsive sometimes, maybe BTANB? no video of game on Youtube
@@ -188,6 +189,7 @@
#include "esbattle.lh"
#include "esoccer.lh"
#include "f2pbball.lh"
+#include "f3in1.lh"
#include "fxmcr165.lh" // clickable
#include "gjackpot.lh"
#include "gpoker.lh"
@@ -217,6 +219,7 @@
#include "tc4.lh"
#include "tcfball.lh"
#include "tcfballa.lh"
+#include "xl25.lh" // clickable
#include "zodiac.lh"
#include "hh_tms1k_test.lh" // common test-layout - use external artwork
@@ -1773,7 +1776,7 @@ DEVICE_IMAGE_LOAD_MEMBER(quizwizc_state, cartridge)
// get cartridge pinout K1 to R connections
std::string pinout(image.get_feature("pinout"));
m_pinout = std::stoul(pinout, nullptr, 2) & 0xe7;
- m_pinout = BITSWAP8(m_pinout,4,3,7,5,2,1,6,0) << 4;
+ m_pinout = bitswap<8>(m_pinout,4,3,7,5,2,1,6,0) << 4;
return image_init_result::PASS;
}
@@ -1805,7 +1808,7 @@ WRITE16_MEMBER(quizwizc_state::write_r)
WRITE16_MEMBER(quizwizc_state::write_o)
{
// O0-O7: led/digit segment data
- m_o = BITSWAP8(data,7,0,1,2,3,4,5,6);
+ m_o = bitswap<8>(data,7,0,1,2,3,4,5,6);
prepare_display();
}
@@ -3892,7 +3895,7 @@ WRITE16_MEMBER(f2pbball_state::write_r)
WRITE16_MEMBER(f2pbball_state::write_o)
{
// O0-O7: led state
- m_o = BITSWAP8(data,0,7,6,5,4,3,2,1);
+ m_o = bitswap<8>(data,0,7,6,5,4,3,2,1);
prepare_display();
}
@@ -3959,6 +3962,143 @@ MACHINE_CONFIG_END
/***************************************************************************
+ Fonas 3 in 1: Football, Basketball, Soccer
+ * TMS1100NLL MP1185
+ * 4 7seg LEDs, 40 other LEDs, 1-bit sound
+
+ It's not known if this game has an official title. The current one is
+ taken from the handheld front side.
+ MAME external artwork is needed for the switchable overlays.
+
+***************************************************************************/
+
+class f3in1_state : public hh_tms1k_state
+{
+public:
+ f3in1_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
+ { }
+
+ void prepare_display();
+ DECLARE_WRITE16_MEMBER(write_r);
+ DECLARE_WRITE16_MEMBER(write_o);
+ DECLARE_READ8_MEMBER(read_k);
+
+ void set_clock();
+ DECLARE_INPUT_CHANGED_MEMBER(skill_switch);
+
+protected:
+ virtual void machine_reset() override;
+};
+
+// handlers
+
+void f3in1_state::prepare_display()
+{
+ // R6-R9 are 7segs
+ set_display_segmask(0x3c0, 0x7f);
+ display_matrix(8, 10, m_o, m_r & ~0x20);
+}
+
+WRITE16_MEMBER(f3in1_state::write_r)
+{
+ // R0-R2,R4: input mux
+ m_inp_mux = (data & 7) | (data >> 1 & 8);
+
+ // R10: speaker out
+ m_speaker->level_w(data >> 10 & 1);
+
+ // R0-R4,R6-R9: led select
+ m_r = data;
+ prepare_display();
+}
+
+WRITE16_MEMBER(f3in1_state::write_o)
+{
+ // O0-O7: led state
+ m_o = data;
+ prepare_display();
+}
+
+READ8_MEMBER(f3in1_state::read_k)
+{
+ // K: multiplexed inputs
+ return read_inputs(4);
+}
+
+
+// config
+
+static INPUT_PORTS_START( f3in1 )
+ PORT_START("IN.0") // R0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P Button")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("K Button")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("D Button")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.1") // R1
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY
+ PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.2") // R2
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY
+ PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.3") // R4
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_CONFNAME( 0x0e, 0x02, "Game Select" )
+ PORT_CONFSETTING( 0x02, "Football" )
+ PORT_CONFSETTING( 0x04, "Basketball" )
+ PORT_CONFSETTING( 0x08, "Soccer" )
+
+ PORT_START("IN.4") // fake
+ PORT_CONFNAME( 0x01, 0x00, DEF_STR( Difficulty ) ) PORT_CHANGED_MEMBER(DEVICE_SELF, f3in1_state, skill_switch, nullptr)
+ PORT_CONFSETTING( 0x00, "Regular" ) // REG
+ PORT_CONFSETTING( 0x01, "Professional" ) // PROF
+INPUT_PORTS_END
+
+INPUT_CHANGED_MEMBER(f3in1_state::skill_switch)
+{
+ set_clock();
+}
+
+void f3in1_state::set_clock()
+{
+ // MCU clock is from an RC circuit where C=47pF, R=39K(PROF) or 56K(REG)
+ m_maincpu->set_unscaled_clock((m_inp_matrix[4]->read() & 1) ? 400000 : 300000);
+}
+
+void f3in1_state::machine_reset()
+{
+ hh_tms1k_state::machine_reset();
+ set_clock();
+}
+
+static MACHINE_CONFIG_START( f3in1 )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", TMS1100, 300000) // see set_clock
+ MCFG_TMS1XXX_READ_K_CB(READ8(f3in1_state, read_k))
+ MCFG_TMS1XXX_WRITE_R_CB(WRITE16(f3in1_state, write_r))
+ MCFG_TMS1XXX_WRITE_O_CB(WRITE16(f3in1_state, write_o))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_f3in1)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
Gakken Poker
* PCB label POKER. gakken
* TMS1370 MP2105 (die label same)
@@ -3994,7 +4134,7 @@ protected:
void gpoker_state::prepare_display()
{
set_display_segmask(0x7ff, 0x20ff); // 7seg + bottom-right diagonal
- u16 segs = BITSWAP16(m_o, 15,14,7,12,11,10,9,8,6,6,5,4,3,2,1,0) & 0x20ff;
+ u16 segs = bitswap<16>(m_o, 15,14,7,12,11,10,9,8,6,6,5,4,3,2,1,0) & 0x20ff;
display_matrix(14, 11, segs | (m_r >> 3 & 0xf00), m_r & 0x7ff);
}
@@ -4246,8 +4386,8 @@ public:
void ginv1000_state::prepare_display()
{
- u16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,0,1,2,3,4,5,6,9,8,7);
- u16 plate = BITSWAP16(m_plate,15,14,13,12,3,4,7,8,9,10,11,2,6,5,1,0);
+ u16 grid = bitswap<16>(m_grid,15,14,13,12,11,10,0,1,2,3,4,5,6,9,8,7);
+ u16 plate = bitswap<16>(m_plate,15,14,13,12,3,4,7,8,9,10,11,2,6,5,1,0);
display_matrix(12, 10, plate, grid);
}
@@ -4259,8 +4399,8 @@ WRITE16_MEMBER(ginv1000_state::write_r)
// R8,R15: input mux
m_inp_mux = (data >> 8 & 1) | (data >> 14 & 2);
- // R1-R10: VFD matrix grid
- // R11-R14: VFD matrix plate
+ // R1-R10: VFD grid
+ // R11-R14: VFD plate
m_grid = data >> 1 & 0x3ff;
m_plate = (m_plate & 0xff) | (data >> 3 & 0xf00);
prepare_display();
@@ -4268,14 +4408,14 @@ WRITE16_MEMBER(ginv1000_state::write_r)
WRITE16_MEMBER(ginv1000_state::write_o)
{
- // O0-O7: VFD matrix plate
+ // O0-O7: VFD plate
m_plate = (m_plate & ~0xff) | data;
prepare_display();
}
READ8_MEMBER(ginv1000_state::read_k)
{
- // K: multiplexed inputs (K8 is fire button)
+ // K1,K2: multiplexed inputs (K8 is fire button)
return m_inp_matrix[2]->read() | read_inputs(2);
}
@@ -4327,6 +4467,142 @@ MACHINE_CONFIG_END
/***************************************************************************
+ Gakken Invader 2000
+ * TMS1370(28 pins) MP1604 (die label 1370A MP1604)
+ * TMS1024 I/O expander
+ * cyan/red/green VFD display, 1-bit sound
+
+ known releases:
+ - World: Invader 2000
+ - USA(1): Galaxy Invader 10000, published by CGL
+ - USA(2): Cosmic 3000 Fire Away, published by Tandy
+
+***************************************************************************/
+
+class ginv2000_state : public hh_tms1k_state
+{
+public:
+ ginv2000_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag),
+ m_expander(*this, "expander")
+ { }
+
+ required_device<tms1024_device> m_expander;
+ DECLARE_WRITE8_MEMBER(expander_w);
+
+ void prepare_display();
+ virtual DECLARE_WRITE16_MEMBER(write_r);
+ virtual DECLARE_WRITE16_MEMBER(write_o);
+ virtual DECLARE_READ8_MEMBER(read_k);
+
+protected:
+ virtual void machine_reset() override;
+};
+
+// handlers
+
+void ginv2000_state::prepare_display()
+{
+ display_matrix(16, 10, m_plate, m_grid);
+}
+
+WRITE8_MEMBER(ginv2000_state::expander_w)
+{
+ // TMS1024 port 4-7: VFD plate
+ int shift = (offset - tms1024_device::PORT4) * 4;
+ m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
+ prepare_display();
+}
+
+WRITE16_MEMBER(ginv2000_state::write_r)
+{
+ // R0: speaker out
+ m_speaker->level_w(data & 1);
+
+ // R11,R12: input mux
+ m_inp_mux = data >> 11 & 3;
+
+ // R11,R12: TMS1024 S1,S0 (S2 forced high)
+ // R13: TMS1024 STD
+ m_expander->write_s(space, 0, (data >> 12 & 1) | (data >> 10 & 2) | 4);
+ m_expander->write_std(data >> 13 & 1);
+
+ // R1-R10: VFD grid
+ m_grid = data >> 1 & 0x3ff;
+ prepare_display();
+}
+
+WRITE16_MEMBER(ginv2000_state::write_o)
+{
+ // O4-O7: TMS1024 H1-H4
+ m_expander->write_h(space, 0, data >> 4 & 0xf);
+}
+
+READ8_MEMBER(ginv2000_state::read_k)
+{
+ // K1,K2: multiplexed inputs (K8 is fire button)
+ return m_inp_matrix[2]->read() | read_inputs(2);
+}
+
+
+// config
+
+static INPUT_PORTS_START( ginv2000 )
+ PORT_START("IN.0") // R11
+ PORT_CONFNAME( 0x03, 0x01, DEF_STR( Difficulty ) )
+ PORT_CONFSETTING( 0x01, "1" )
+ PORT_CONFSETTING( 0x02, "2" )
+ PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.1") // R12
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
+ PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.2") // K8
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 )
+INPUT_PORTS_END
+
+void ginv2000_state::machine_reset()
+{
+ hh_tms1k_state::machine_reset();
+ m_expander->write_ms(1); // Vss
+}
+
+static MACHINE_CONFIG_START( ginv2000 )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", TMS1370, 425000) // approximation - RC osc. R=36K, C=47pF
+ MCFG_TMS1XXX_READ_K_CB(READ8(ginv2000_state, read_k))
+ MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ginv2000_state, write_r))
+ MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ginv2000_state, write_o))
+
+ MCFG_DEVICE_ADD("expander", TMS1024, 0)
+ MCFG_TMS1025_WRITE_PORT_CB(PORT4, WRITE8(ginv2000_state, expander_w))
+ MCFG_TMS1025_WRITE_PORT_CB(PORT5, WRITE8(ginv2000_state, expander_w))
+ MCFG_TMS1025_WRITE_PORT_CB(PORT6, WRITE8(ginv2000_state, expander_w))
+ MCFG_TMS1025_WRITE_PORT_CB(PORT7, WRITE8(ginv2000_state, expander_w))
+
+ /* video hardware */
+ MCFG_SCREEN_SVG_ADD("screen", "svg")
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(364, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 364-1, 0, 1080-1)
+ MCFG_DEFAULT_LAYOUT(layout_svg)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
Gakken FX-Micom R-165
* TMS1100 MCU, label MP1312 (die label MP1312A)
* 1 7seg led, 6 other leds, 1-bit sound
@@ -4362,7 +4638,7 @@ void fxmcr165_state::prepare_display()
{
// 7seg digit from O0-O6
m_display_segmask[0] = 0x7f;
- m_display_state[0] = BITSWAP8(m_o,7,2,6,5,4,3,1,0) & 0x7f;
+ m_display_state[0] = bitswap<8>(m_o,7,2,6,5,4,3,1,0) & 0x7f;
// leds from R4-R10
m_display_state[1] = m_r >> 4 & 0x7f;
@@ -4499,7 +4775,7 @@ WRITE16_MEMBER(elecdet_state::write_r)
// R0-R6: select digit
set_display_segmask(0x7f, 0x7f);
- display_matrix(7, 7, BITSWAP8(m_o,7,5,2,1,4,0,6,3), data);
+ display_matrix(7, 7, bitswap<8>(m_o,7,5,2,1,4,0,6,3), data);
}
WRITE16_MEMBER(elecdet_state::write_o)
@@ -5057,7 +5333,7 @@ WRITE32_MEMBER(horseran_state::lcd_output_w)
// col5-11 and col13-19 are 7segs
for (int i = 0; i < 2; i++)
- m_display_state[3 + (offset << 1 | i)] = BITSWAP8(data >> (4+8*i),7,3,5,2,0,1,4,6) & 0x7f;
+ m_display_state[3 + (offset << 1 | i)] = bitswap<8>(data >> (4+8*i),7,3,5,2,0,1,4,6) & 0x7f;
set_display_segmask(0x3f<<3, 0x7f);
set_display_size(24, 3+6);
@@ -6244,7 +6520,7 @@ void mbdtower_state::prepare_display()
// update current state
if (~m_r & 0x10)
{
- u8 o = BITSWAP8(m_o,7,0,4,3,2,1,6,5) & 0x7f;
+ u8 o = bitswap<8>(m_o,7,0,4,3,2,1,6,5) & 0x7f;
m_display_state[2] = (m_o & 0x80) ? o : 0;
m_display_state[1] = (m_o & 0x80) ? 0 : o;
m_display_state[0] = (m_r >> 8 & 1) | (m_r >> 4 & 0xe);
@@ -6815,7 +7091,7 @@ WRITE16_MEMBER(stopthief_state::write_r)
{
// R0-R2: select digit
set_display_segmask(7, 0x7f);
- display_matrix(7, 3, BITSWAP8(m_o,3,5,2,1,4,0,6,7) & 0x7f, data & 7);
+ display_matrix(7, 3, bitswap<8>(m_o,3,5,2,1,4,0,6,7) & 0x7f, data & 7);
// R3-R8(tied together): speaker out
int level = 0;
@@ -6924,6 +7200,7 @@ public:
: hh_tms1k_state(mconfig, type, tag)
{ }
+ void prepare_display();
DECLARE_WRITE16_MEMBER(write_r);
DECLARE_WRITE16_MEMBER(write_o);
DECLARE_READ8_MEMBER(read_k);
@@ -6931,6 +7208,11 @@ public:
// handlers
+void bankshot_state::prepare_display()
+{
+ display_matrix(7, 11, m_o, m_r & ~3);
+}
+
WRITE16_MEMBER(bankshot_state::write_r)
{
// R0: speaker out
@@ -6940,8 +7222,8 @@ WRITE16_MEMBER(bankshot_state::write_r)
m_inp_mux = data >> 2 & 3;
// R2-R10: led select
- m_r = data & ~3;
- display_matrix(7, 11, m_o, m_r);
+ m_r = data;
+ prepare_display();
}
WRITE16_MEMBER(bankshot_state::write_o)
@@ -6949,7 +7231,7 @@ WRITE16_MEMBER(bankshot_state::write_o)
// O0-O6: led state
// O7: N/C
m_o = data & 0x7f;
- display_matrix(7, 11, m_o, m_r);
+ prepare_display();
}
READ8_MEMBER(bankshot_state::read_k)
@@ -7047,6 +7329,7 @@ public:
: hh_tms1k_state(mconfig, type, tag)
{ }
+ void prepare_display();
DECLARE_WRITE16_MEMBER(write_r);
DECLARE_WRITE16_MEMBER(write_o);
DECLARE_READ8_MEMBER(read_k);
@@ -7054,6 +7337,11 @@ public:
// handlers
+void splitsec_state::prepare_display()
+{
+ display_matrix(7, 8, m_o, m_r);
+}
+
WRITE16_MEMBER(splitsec_state::write_r)
{
// R8: speaker out
@@ -7064,7 +7352,7 @@ WRITE16_MEMBER(splitsec_state::write_r)
// R0-R7: led select
m_r = data;
- display_matrix(7, 8, m_o, m_r);
+ prepare_display();
}
WRITE16_MEMBER(splitsec_state::write_o)
@@ -7072,7 +7360,7 @@ WRITE16_MEMBER(splitsec_state::write_o)
// O0-O6: led state
// O7: N/C
m_o = data & 0x7f;
- display_matrix(7, 8, m_o, m_r);
+ prepare_display();
}
READ8_MEMBER(splitsec_state::read_k)
@@ -8664,6 +8952,175 @@ MACHINE_CONFIG_END
/***************************************************************************
+ Vulcan XL 25
+ * TMS1000SLC MP4486A (die label 1000C/, MP4486A)
+ * 28 LEDs, 1-bit sound
+
+ This game is the same logic puzzle as Tiger's Lights Out, except that
+ all 25 lights need to be turned on instead of off.
+
+***************************************************************************/
+
+class xl25_state : public hh_tms1k_state
+{
+public:
+ xl25_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
+ { }
+
+ void update_halt();
+ DECLARE_INPUT_CHANGED_MEMBER(k4_button);
+
+ void prepare_display();
+ DECLARE_WRITE16_MEMBER(write_r);
+ DECLARE_WRITE16_MEMBER(write_o);
+ DECLARE_READ8_MEMBER(read_k);
+
+protected:
+ virtual void machine_reset() override;
+};
+
+// handlers
+
+void xl25_state::update_halt()
+{
+ // O5+K4 go to HALT pin (used when pressing store/recall button)
+ bool halt = !((m_o & 0x20) || (read_k(machine().dummy_space(), 0) & 4));
+ m_maincpu->set_input_line(TMS1XXX_INPUT_LINE_HALT, halt ? ASSERT_LINE : CLEAR_LINE);
+}
+
+void xl25_state::prepare_display()
+{
+ display_matrix(3, 10, m_o >> 1, m_r);
+}
+
+WRITE16_MEMBER(xl25_state::write_r)
+{
+ // R0-R9: input mux, led select
+ m_inp_mux = data;
+ m_r = data;
+ prepare_display();
+}
+
+WRITE16_MEMBER(xl25_state::write_o)
+{
+ // O1-O3: led data
+ m_o = data;
+ prepare_display();
+
+ // O6: speaker out
+ m_speaker->level_w(data >> 6 & 1);
+
+ // O5(+K4): MCU halt
+ update_halt();
+}
+
+READ8_MEMBER(xl25_state::read_k)
+{
+ // K: multiplexed inputs
+ // K4 also goes to MCU halt
+ return read_inputs(10);
+}
+
+
+// config
+
+static INPUT_PORTS_START( xl25 )
+ PORT_START("IN.0") // R0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 1")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 6")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 11") PORT_CHANGED_MEMBER(DEVICE_SELF, xl25_state, k4_button, nullptr)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.1") // R1
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 2")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 7")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 12") PORT_CHANGED_MEMBER(DEVICE_SELF, xl25_state, k4_button, nullptr)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.2") // R2
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 3")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 8")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 13") PORT_CHANGED_MEMBER(DEVICE_SELF, xl25_state, k4_button, nullptr)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.3") // R3
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 4")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 9")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 14") PORT_CHANGED_MEMBER(DEVICE_SELF, xl25_state, k4_button, nullptr)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.4") // R4
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 5")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 10")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 15") PORT_CHANGED_MEMBER(DEVICE_SELF, xl25_state, k4_button, nullptr)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.5") // R5
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 16")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 21")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_NAME("Store / Recall") PORT_CHANGED_MEMBER(DEVICE_SELF, xl25_state, k4_button, nullptr)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.6") // R6
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 17")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 22")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_NAME("Cross / Knight / Score") PORT_CHANGED_MEMBER(DEVICE_SELF, xl25_state, k4_button, nullptr)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.7") // R7
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 18")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 23")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_NAME("Clear") PORT_CHANGED_MEMBER(DEVICE_SELF, xl25_state, k4_button, nullptr)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.8") // R8
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 19")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 24")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_4) PORT_NAME("Random") PORT_CHANGED_MEMBER(DEVICE_SELF, xl25_state, k4_button, nullptr)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.9") // R9
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 20")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square 25")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_5) PORT_NAME("Sound") PORT_CHANGED_MEMBER(DEVICE_SELF, xl25_state, k4_button, nullptr)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
+INPUT_PORTS_END
+
+INPUT_CHANGED_MEMBER(xl25_state::k4_button)
+{
+ update_halt();
+}
+
+void xl25_state::machine_reset()
+{
+ hh_tms1k_state::machine_reset();
+ update_halt();
+}
+
+static MACHINE_CONFIG_START( xl25 )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", TMS1000C, 300000) // approximation - RC osc. R=5.6K, C=47pF
+ MCFG_TMS1XXX_READ_K_CB(READ8(xl25_state, read_k))
+ MCFG_TMS1XXX_WRITE_R_CB(WRITE16(xl25_state, write_r))
+ MCFG_TMS1XXX_WRITE_O_CB(WRITE16(xl25_state, write_o))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_xl25)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
Game driver(s)
***************************************************************************/
@@ -8968,6 +9425,17 @@ ROM_START( f2pbball )
ROM_END
+ROM_START( f3in1 )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp1185", 0x0000, 0x0800, CRC(53f7b28d) SHA1(2249890e3a259095193b4331ca88c29ccd81eefe) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_f3in1_output.pla", 0, 365, CRC(51d947bc) SHA1(f766397d84f038be96e83d40989195c98ddcb1d9) )
+ROM_END
+
+
ROM_START( gpoker )
ROM_REGION( 0x0800, "maincpu", 0 )
ROM_LOAD( "mp2105", 0x0000, 0x0800, CRC(95a8f5b4) SHA1(d14f00ba9f57e437264d972baa14a14a28ff8719) )
@@ -9004,6 +9472,20 @@ ROM_START( ginv1000 )
ROM_END
+ROM_START( ginv2000 )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp1604", 0x0000, 0x0800, CRC(f1646d0b) SHA1(65601931d81e3eef7bf22a08de5a146910ce8137) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_ginv2000_output.pla", 0, 365, CRC(520bb003) SHA1(1640ae54f8dcc257e0ad0cbe0281b38fcbd8da35) )
+
+ ROM_REGION( 374443, "svg", 0)
+ ROM_LOAD( "ginv2000.svg", 0, 374443, CRC(a4ce1e6d) SHA1(57d9ff05d634a8d495b9d544a2a959790cd10b6b) )
+ROM_END
+
+
ROM_START( fxmcr165 )
ROM_REGION( 0x0800, "maincpu", 0 )
ROM_LOAD( "mp1312", 0x0000, 0x0800, CRC(6efc8bcc) SHA1(ced8a02b472a3178073691d3dccc0f19f57428fd) )
@@ -9428,6 +9910,17 @@ ROM_START( ssports4 )
ROM_END
+ROM_START( xl25 )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "mp4486a", 0x0000, 0x0400, CRC(bd84b515) SHA1(377fcc68a517260acd51eb9746cd62914a75d739) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, BAD_DUMP CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) // placeholder
+ ROM_REGION( 558, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000c_xl25_output.pla", 0, 558, CRC(06ecc6e0) SHA1(e0fa1b9388948197b4de2edd3cd02fbde1dbabbb) )
+ROM_END
+
+
// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
CONS( 1979, matchnum, 0, 0, matchnum, matchnum, matchnum_state, 0, "A-One LSI", "Match Number", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
@@ -9463,10 +9956,12 @@ CONS( 1980, ebaskb2 , 0, 0, ebaskb2, ebaskb2, ebaskb2_state, 0,
CONS( 1980, raisedvl, 0, 0, raisedvl, raisedvl, raisedvl_state, 0, "Entex", "Raise The Devil", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
CONS( 1979, f2pbball, 0, 0, f2pbball, f2pbball, f2pbball_state, 0, "Fonas", "2 Player Baseball (Fonas)", MACHINE_SUPPORTS_SAVE )
+CONS( 1979, f3in1, 0, 0, f3in1, f3in1, f3in1_state, 0, "Fonas", "3 in 1: Football, Basketball, Soccer", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
CONS( 1979, gpoker, 0, 0, gpoker, gpoker, gpoker_state, 0, "Gakken", "Poker (Gakken, 1979 version)", MACHINE_SUPPORTS_SAVE )
CONS( 1980, gjackpot, 0, 0, gjackpot, gjackpot, gjackpot_state, 0, "Gakken", "Jackpot: Gin Rummy & Black Jack", MACHINE_SUPPORTS_SAVE )
-CONS( 1982, ginv1000, 0, 0, ginv1000, ginv1000, ginv1000_state, 0, "Gakken", "Galaxy Invader 1000", MACHINE_SUPPORTS_SAVE )
+CONS( 1981, ginv1000, 0, 0, ginv1000, ginv1000, ginv1000_state, 0, "Gakken", "Galaxy Invader 1000", MACHINE_SUPPORTS_SAVE )
+CONS( 1982, ginv2000, 0, 0, ginv2000, ginv2000, ginv2000_state, 0, "Gakken", "Invader 2000", MACHINE_SUPPORTS_SAVE )
COMP( 1983, fxmcr165, 0, 0, fxmcr165, fxmcr165, fxmcr165_state, 0, "Gakken", "FX-Micom R-165", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1979, elecdet, 0, 0, elecdet, elecdet, elecdet_state, 0, "Ideal", "Electronic Detective", MACHINE_SUPPORTS_SAVE ) // ***
@@ -9517,5 +10012,7 @@ CONS( 1980, phpball, 0, 0, phpball, phpball, phpball_state, 0,
CONS( 1980, ssports4, 0, 0, ssports4, ssports4, ssports4_state, 0, "U.S. Games", "Super Sports-4", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1983, xl25, 0, 0, xl25, xl25, xl25_state, 0, "Vulcan Electronics", "XL 25", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+
// ***: As far as MAME is concerned, the game is emulated fine. But for it to be playable, it requires interaction
// with other, unemulatable, things eg. game board/pieces, playing cards, pen & paper, etc.
diff --git a/src/mame/drivers/hh_ucom4.cpp b/src/mame/drivers/hh_ucom4.cpp
index 11a92566f36..79293b89db2 100644
--- a/src/mame/drivers/hh_ucom4.cpp
+++ b/src/mame/drivers/hh_ucom4.cpp
@@ -281,14 +281,14 @@ public:
void ufombs_state::prepare_display()
{
- u16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,9,3,2,1,0,4,5,6,7,8);
- u16 plate = BITSWAP16(m_plate,15,14,13,12,11,7,10,6,9,5,8,4,0,1,2,3);
+ u16 grid = bitswap<16>(m_grid,15,14,13,12,11,10,9,3,2,1,0,4,5,6,7,8);
+ u16 plate = bitswap<16>(m_plate,15,14,13,12,11,7,10,6,9,5,8,4,0,1,2,3);
display_matrix(10, 9, plate, grid);
}
WRITE8_MEMBER(ufombs_state::grid_w)
{
- // F,G,H0: vfd matrix grid
+ // F,G,H0: vfd grid
int shift = (offset - NEC_UCOM4_PORTF) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -296,7 +296,7 @@ WRITE8_MEMBER(ufombs_state::grid_w)
WRITE8_MEMBER(ufombs_state::plate_w)
{
- // C,D012,I: vfd matrix plate
+ // C,D012,I: vfd plate
int shift = (offset == NEC_UCOM4_PORTI) ? 8 : (offset - NEC_UCOM4_PORTC) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -394,13 +394,13 @@ public:
void ssfball_state::prepare_display()
{
- u32 plate = BITSWAP24(m_plate,23,22,21,20,19,11,7,3,12,17,13,18,16,14,15,10,9,8,0,1,2,4,5,6);
+ u32 plate = bitswap<24>(m_plate,23,22,21,20,19,11,7,3,12,17,13,18,16,14,15,10,9,8,0,1,2,4,5,6);
display_matrix(16, 9, plate, m_grid);
}
WRITE8_MEMBER(ssfball_state::grid_w)
{
- // C,D(,E3): vfd matrix grid 0-7(,8)
+ // C,D(,E3): vfd grid 0-7(,8)
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -410,7 +410,7 @@ WRITE8_MEMBER(ssfball_state::plate_w)
{
m_port[offset] = data;
- // E,F,G,H,I(not all!): vfd matrix plate
+ // E,F,G,H,I(not all!): vfd plate
int shift = (offset - NEC_UCOM4_PORTE) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
@@ -418,7 +418,7 @@ WRITE8_MEMBER(ssfball_state::plate_w)
m_inp_mux = (m_port[NEC_UCOM4_PORTF] >> 3 & 1) | (m_port[NEC_UCOM4_PORTG] >> 2 & 2);
m_speaker->level_w(m_inp_mux);
- // E3: vfd matrix grid 8
+ // E3: vfd grid 8
if (offset == NEC_UCOM4_PORTE)
grid_w(space, offset, data >> 3 & 1);
else
@@ -538,7 +538,7 @@ public:
void bmsoccer_state::prepare_display()
{
- u32 plate = BITSWAP24(m_plate,23,22,21,20,19,11,7,3,12,17,13,18,16,14,15,8,4,0,9,5,1,10,6,2);
+ u32 plate = bitswap<24>(m_plate,23,22,21,20,19,11,7,3,12,17,13,18,16,14,15,8,4,0,9,5,1,10,6,2);
display_matrix(16, 9, plate, m_grid);
}
@@ -548,7 +548,7 @@ WRITE8_MEMBER(bmsoccer_state::grid_w)
if (offset == NEC_UCOM4_PORTC)
m_inp_mux = data & 3;
- // C,D(,E3): vfd matrix grid
+ // C,D(,E3): vfd grid
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -560,7 +560,7 @@ WRITE8_MEMBER(bmsoccer_state::plate_w)
if (offset == NEC_UCOM4_PORTG)
m_speaker->level_w(data >> 3 & 1);
- // E012,F012,G012,H,I: vfd matrix plate
+ // E012,F012,G012,H,I: vfd plate
int shift = (offset - NEC_UCOM4_PORTE) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
@@ -661,14 +661,14 @@ public:
void bmsafari_state::prepare_display()
{
- u16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,9,0,1,2,3,4,5,6,7,8);
- u16 plate = BITSWAP16(m_plate,15,14,13,12,11,7,10,2,9,5,8,4,0,1,6,3);
+ u16 grid = bitswap<16>(m_grid,15,14,13,12,11,10,9,0,1,2,3,4,5,6,7,8);
+ u16 plate = bitswap<16>(m_plate,15,14,13,12,11,7,10,2,9,5,8,4,0,1,6,3);
display_matrix(10, 9, plate, grid);
}
WRITE8_MEMBER(bmsafari_state::grid_w)
{
- // C,D(,E3): vfd matrix grid
+ // C,D(,E3): vfd grid
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -676,7 +676,7 @@ WRITE8_MEMBER(bmsafari_state::grid_w)
WRITE8_MEMBER(bmsafari_state::plate_w)
{
- // E012,H,I: vfd matrix plate
+ // E012,H,I: vfd plate
int shift = (offset == NEC_UCOM4_PORTE) ? 8 : (offset - NEC_UCOM4_PORTH) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
@@ -771,20 +771,20 @@ public:
void splasfgt_state::prepare_display()
{
- u32 plate = BITSWAP24(m_plate,23,22,21,20,19,18,17,13,1,0,8,6,0,10,11,14,15,16,9,5,7,4,2,3);
+ u32 plate = bitswap<24>(m_plate,23,22,21,20,19,18,17,13,1,0,8,6,0,10,11,14,15,16,9,5,7,4,2,3);
display_matrix(16, 9, plate, m_grid);
}
WRITE8_MEMBER(splasfgt_state::grid_w)
{
- // G,H,I0: vfd matrix grid
+ // G,H,I0: vfd grid
int shift = (offset - NEC_UCOM4_PORTG) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
// G(grid 0-3): input mux
m_inp_mux = m_grid & 0xf;
- // I2: vfd matrix plate 6
+ // I2: vfd plate 6
if (offset == NEC_UCOM4_PORTI)
plate_w(space, 4 + NEC_UCOM4_PORTC, data >> 2 & 1);
else
@@ -797,7 +797,7 @@ WRITE8_MEMBER(splasfgt_state::plate_w)
if (offset == NEC_UCOM4_PORTF)
m_speaker->level_w(data & 3);
- // C,D,E,F23(,I2): vfd matrix plate
+ // C,D,E,F23(,I2): vfd plate
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -923,8 +923,8 @@ public:
void bcclimbr_state::prepare_display()
{
- u8 grid = BITSWAP8(m_grid,7,6,0,1,2,3,4,5);
- u32 plate = BITSWAP24(m_plate,23,22,21,20,16,17,18,19,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0);
+ u8 grid = bitswap<8>(m_grid,7,6,0,1,2,3,4,5);
+ u32 plate = bitswap<24>(m_plate,23,22,21,20,16,17,18,19,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0);
display_matrix(20, 6, plate, grid);
}
@@ -934,7 +934,7 @@ WRITE8_MEMBER(bcclimbr_state::grid_w)
if (offset == NEC_UCOM4_PORTI)
m_speaker->level_w(data >> 2 & 1);
- // H,I01: vfd matrix grid
+ // H,I01: vfd grid
int shift = (offset - NEC_UCOM4_PORTH) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -942,7 +942,7 @@ WRITE8_MEMBER(bcclimbr_state::grid_w)
WRITE8_MEMBER(bcclimbr_state::plate_w)
{
- // C,D,E,F: vfd matrix plate
+ // C,D,E,F: vfd plate
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -1141,8 +1141,8 @@ public:
void invspace_state::prepare_display()
{
- u16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,8,9,7,6,5,4,3,2,1,0);
- u32 plate = BITSWAP24(m_plate,23,22,21,20,19,9,14,13,8,15,11,10,7,11,3,2,6,10,1,5,9,0,4,8);
+ u16 grid = bitswap<16>(m_grid,15,14,13,12,11,10,8,9,7,6,5,4,3,2,1,0);
+ u32 plate = bitswap<24>(m_plate,23,22,21,20,19,9,14,13,8,15,11,10,7,11,3,2,6,10,1,5,9,0,4,8);
display_matrix(19, 9, plate, grid);
}
@@ -1152,7 +1152,7 @@ WRITE8_MEMBER(invspace_state::grid_w)
if (offset == NEC_UCOM4_PORTI)
m_speaker->level_w(data & 1);
- // C,D,I1: vfd matrix grid
+ // C,D,I1: vfd grid
int shift = (offset == NEC_UCOM4_PORTI) ? 8 : (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -1160,7 +1160,7 @@ WRITE8_MEMBER(invspace_state::grid_w)
WRITE8_MEMBER(invspace_state::plate_w)
{
- // E,F,G,H123: vfd matrix plate
+ // E,F,G,H123: vfd plate
int shift = (offset - NEC_UCOM4_PORTE) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -1243,7 +1243,7 @@ public:
void efball_state::prepare_display()
{
- u16 plate = BITSWAP16(m_plate,15,14,13,12,11,4,3,0,2,1,6,10,9,5,8,7);
+ u16 plate = bitswap<16>(m_plate,15,14,13,12,11,4,3,0,2,1,6,10,9,5,8,7);
display_matrix(11, 10, plate, m_grid);
}
@@ -1253,7 +1253,7 @@ WRITE8_MEMBER(efball_state::grid_w)
if (offset == NEC_UCOM4_PORTH)
m_speaker->level_w(data >> 2 & 1);
- // F,G,H01: vfd matrix grid
+ // F,G,H01: vfd grid
int shift = (offset - NEC_UCOM4_PORTF) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -1261,7 +1261,7 @@ WRITE8_MEMBER(efball_state::grid_w)
WRITE8_MEMBER(efball_state::plate_w)
{
- // D,E,I: vfd matrix plate
+ // D,E,I: vfd plate
int shift = (offset == NEC_UCOM4_PORTI) ? 8 : (offset - NEC_UCOM4_PORTD) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -1356,8 +1356,8 @@ public:
void galaxy2_state::prepare_display()
{
- u16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,0,1,2,3,4,5,6,7,8,9);
- u16 plate = BITSWAP16(m_plate,15,3,2,6,1,5,4,0,11,10,7,12,14,13,8,9);
+ u16 grid = bitswap<16>(m_grid,15,14,13,12,11,10,0,1,2,3,4,5,6,7,8,9);
+ u16 plate = bitswap<16>(m_plate,15,3,2,6,1,5,4,0,11,10,7,12,14,13,8,9);
display_matrix(15, 10, plate, grid);
}
@@ -1367,7 +1367,7 @@ WRITE8_MEMBER(galaxy2_state::grid_w)
if (offset == NEC_UCOM4_PORTE)
m_speaker->level_w(data >> 3 & 1);
- // C,D,E01: vfd matrix grid
+ // C,D,E01: vfd grid
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -1375,7 +1375,7 @@ WRITE8_MEMBER(galaxy2_state::grid_w)
WRITE8_MEMBER(galaxy2_state::plate_w)
{
- // F,G,H,I: vfd matrix plate
+ // F,G,H,I: vfd plate
int shift = (offset - NEC_UCOM4_PORTF) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -1467,14 +1467,14 @@ public:
void astrocmd_state::prepare_display()
{
- u16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,9,8,4,5,6,7,0,1,2,3);
- u32 plate = BITSWAP24(m_plate,23,22,21,20,19,3,2,12,13,14,15,16,17,18,0,1,4,8,5,9,7,11,6,10);
+ u16 grid = bitswap<16>(m_grid,15,14,13,12,11,10,9,8,4,5,6,7,0,1,2,3);
+ u32 plate = bitswap<24>(m_plate,23,22,21,20,19,3,2,12,13,14,15,16,17,18,0,1,4,8,5,9,7,11,6,10);
display_matrix(17, 9, plate, grid);
}
WRITE8_MEMBER(astrocmd_state::grid_w)
{
- // C,D(,E3): vfd matrix grid
+ // C,D(,E3): vfd grid
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -1482,7 +1482,7 @@ WRITE8_MEMBER(astrocmd_state::grid_w)
WRITE8_MEMBER(astrocmd_state::plate_w)
{
- // E01,F,G,H,I: vfd matrix plate
+ // E01,F,G,H,I: vfd plate
int shift = (offset - NEC_UCOM4_PORTE) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
@@ -1491,7 +1491,7 @@ WRITE8_MEMBER(astrocmd_state::plate_w)
// E2: speaker out
m_speaker->level_w(data >> 2 & 1);
- // E3: vfd matrix grid 8
+ // E3: vfd grid 8
grid_w(space, offset, data >> 3 & 1);
}
else
@@ -1576,7 +1576,7 @@ public:
WRITE8_MEMBER(edracula_state::grid_w)
{
- // C,D: vfd matrix grid
+ // C,D: vfd grid
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
display_matrix(18, 8, m_plate, m_grid);
@@ -1588,7 +1588,7 @@ WRITE8_MEMBER(edracula_state::plate_w)
if (offset == NEC_UCOM4_PORTI)
m_speaker->level_w(data >> 2 & 1);
- // E,F,G,H,I01: vfd matrix plate
+ // E,F,G,H,I01: vfd plate
int shift = (offset - NEC_UCOM4_PORTE) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
display_matrix(18, 8, m_plate, m_grid);
@@ -1746,14 +1746,14 @@ public:
void mvbfree_state::prepare_display()
{
- u16 grid = BITSWAP16(m_grid,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
- u16 plate = BITSWAP16(m_plate,15,14,13,12,11,10,0,1,2,3,4,5,6,7,8,9);
+ u16 grid = bitswap<16>(m_grid,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
+ u16 plate = bitswap<16>(m_plate,15,14,13,12,11,10,0,1,2,3,4,5,6,7,8,9);
display_matrix(10, 14, plate, grid);
}
WRITE8_MEMBER(mvbfree_state::grid_w)
{
- // E23,F,G,H: vfd matrix grid
+ // E23,F,G,H: vfd grid
int shift = (offset - NEC_UCOM4_PORTE) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
@@ -1766,7 +1766,7 @@ WRITE8_MEMBER(mvbfree_state::grid_w)
WRITE8_MEMBER(mvbfree_state::plate_w)
{
- // C,D(,E01): vfd matrix plate
+ // C,D(,E01): vfd plate
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -1967,8 +1967,8 @@ public:
void tccombat_state::prepare_display()
{
- u16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,9,8,3,2,1,0,7,6,5,4);
- u32 plate = BITSWAP24(m_plate,23,22,21,20,11,15,3,10,14,2,9,13,1,0,12,8,15,1,5,0,3,7,2,6);
+ u16 grid = bitswap<16>(m_grid,15,14,13,12,11,10,9,8,3,2,1,0,7,6,5,4);
+ u32 plate = bitswap<24>(m_plate,23,22,21,20,11,15,3,10,14,2,9,13,1,0,12,8,15,1,5,0,3,7,2,6);
display_matrix(20, 9, plate, grid);
}
@@ -1978,7 +1978,7 @@ WRITE8_MEMBER(tccombat_state::grid_w)
if (offset == NEC_UCOM4_PORTI)
m_speaker->level_w(data >> 1 & 1);
- // C,D,I0: vfd matrix grid
+ // C,D,I0: vfd grid
int shift = (offset == NEC_UCOM4_PORTI) ? 8 : (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -1986,7 +1986,7 @@ WRITE8_MEMBER(tccombat_state::grid_w)
WRITE8_MEMBER(tccombat_state::plate_w)
{
- // E,F123,G,H: vfd matrix plate
+ // E,F123,G,H: vfd plate
int shift = (offset - NEC_UCOM4_PORTE) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -2074,7 +2074,7 @@ protected:
WRITE8_MEMBER(tmtennis_state::grid_w)
{
- // G,H,I: vfd matrix grid
+ // G,H,I: vfd grid
int shift = (offset - NEC_UCOM4_PORTG) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
display_matrix(12, 12, m_plate, m_grid);
@@ -2082,7 +2082,7 @@ WRITE8_MEMBER(tmtennis_state::grid_w)
WRITE8_MEMBER(tmtennis_state::plate_w)
{
- // C,D,F: vfd matrix plate
+ // C,D,F: vfd plate
int shift = (offset == NEC_UCOM4_PORTF) ? 8 : (offset - NEC_UCOM4_PORTC) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
display_matrix(12, 12, m_plate, m_grid);
@@ -2229,14 +2229,14 @@ public:
void tmpacman_state::prepare_display()
{
- u8 grid = BITSWAP8(m_grid,0,1,2,3,4,5,6,7);
- u32 plate = BITSWAP24(m_plate,23,22,21,20,19,16,17,18,11,10,9,8,0,2,3,1,4,5,6,7,12,13,14,15) | 0x100;
+ u8 grid = bitswap<8>(m_grid,0,1,2,3,4,5,6,7);
+ u32 plate = bitswap<24>(m_plate,23,22,21,20,19,16,17,18,11,10,9,8,0,2,3,1,4,5,6,7,12,13,14,15) | 0x100;
display_matrix(19, 8, plate, grid);
}
WRITE8_MEMBER(tmpacman_state::grid_w)
{
- // C,D: vfd matrix grid
+ // C,D: vfd grid
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -2248,7 +2248,7 @@ WRITE8_MEMBER(tmpacman_state::plate_w)
if (offset == NEC_UCOM4_PORTE)
m_speaker->level_w(data >> 1 & 1);
- // E023,F,G,H,I: vfd matrix plate
+ // E023,F,G,H,I: vfd plate
int shift = (offset - NEC_UCOM4_PORTE) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -2334,7 +2334,7 @@ public:
void tmscramb_state::prepare_display()
{
- u32 plate = BITSWAP24(m_plate,23,22,21,20,19,18,17,3,15,2,14,1,13,16,0,12,8,4,9,5,10,6,11,7) | 0x400;
+ u32 plate = bitswap<24>(m_plate,23,22,21,20,19,18,17,3,15,2,14,1,13,16,0,12,8,4,9,5,10,6,11,7) | 0x400;
display_matrix(17, 10, plate, m_grid);
}
@@ -2344,7 +2344,7 @@ WRITE8_MEMBER(tmscramb_state::grid_w)
if (offset == NEC_UCOM4_PORTI)
m_speaker->level_w(data >> 2 & 1);
- // C,D,I01: vfd matrix grid
+ // C,D,I01: vfd grid
int shift = (offset == NEC_UCOM4_PORTI) ? 8 : (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -2352,7 +2352,7 @@ WRITE8_MEMBER(tmscramb_state::grid_w)
WRITE8_MEMBER(tmscramb_state::plate_w)
{
- // E,F,G,H: vfd matrix plate
+ // E,F,G,H: vfd plate
int shift = (offset - NEC_UCOM4_PORTE) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -2436,14 +2436,14 @@ public:
void tcaveman_state::prepare_display()
{
- u8 grid = BITSWAP8(m_grid,0,1,2,3,4,5,6,7);
- u32 plate = BITSWAP24(m_plate,23,22,21,20,19,10,11,5,6,7,8,0,9,2,18,17,16,3,15,14,13,12,4,1) | 0x40;
+ u8 grid = bitswap<8>(m_grid,0,1,2,3,4,5,6,7);
+ u32 plate = bitswap<24>(m_plate,23,22,21,20,19,10,11,5,6,7,8,0,9,2,18,17,16,3,15,14,13,12,4,1) | 0x40;
display_matrix(19, 8, plate, grid);
}
WRITE8_MEMBER(tcaveman_state::grid_w)
{
- // C,D: vfd matrix grid
+ // C,D: vfd grid
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -2455,7 +2455,7 @@ WRITE8_MEMBER(tcaveman_state::plate_w)
if (offset == NEC_UCOM4_PORTE)
m_speaker->level_w(data >> 3 & 1);
- // E012,F,G,H,I: vfd matrix plate
+ // E012,F,G,H,I: vfd plate
int shift = (offset - NEC_UCOM4_PORTE) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
prepare_display();
@@ -2537,7 +2537,7 @@ WRITE8_MEMBER(alnchase_state::output_w)
{
if (offset <= NEC_UCOM4_PORTE)
{
- // C,D,E0: vfd matrix grid
+ // C,D,E0: vfd grid
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
@@ -2552,7 +2552,7 @@ WRITE8_MEMBER(alnchase_state::output_w)
if (offset >= NEC_UCOM4_PORTE)
{
- // E23,F,G,H,I: vfd matrix plate
+ // E23,F,G,H,I: vfd plate
int shift = (offset - NEC_UCOM4_PORTE) * 4;
m_plate = ((m_plate << 2 & ~(0xf << shift)) | (data << shift)) >> 2;
}
diff --git a/src/mame/drivers/hnayayoi.cpp b/src/mame/drivers/hnayayoi.cpp
index 12bc4ec803e..01d847956ac 100644
--- a/src/mame/drivers/hnayayoi.cpp
+++ b/src/mame/drivers/hnayayoi.cpp
@@ -694,7 +694,7 @@ DRIVER_INIT_MEMBER(hnayayoi_state,hnfubuki)
/* swap data bits 0 and 1 */
for (i = 0; i < len; i++)
{
- rom[i] = BITSWAP8(rom[i],7,6,5,4,3,2,0,1);
+ rom[i] = bitswap<8>(rom[i],7,6,5,4,3,2,0,1);
}
}
diff --git a/src/mame/drivers/hp64k.cpp b/src/mame/drivers/hp64k.cpp
index 7c9bf6e965b..54fe302a140 100644
--- a/src/mame/drivers/hp64k.cpp
+++ b/src/mame/drivers/hp64k.cpp
@@ -439,7 +439,9 @@ WRITE_LINE_MEMBER(hp64k_state::hp64k_crtc_drq_w)
if (!prev_crtc && crtc_drq) {
address_space& prog_space = m_cpu->space(AS_PROGRAM);
- uint8_t data = prog_space.read_byte(m_crtc_ptr);
+ uint16_t data = prog_space.read_word(m_crtc_ptr >> 1);
+ data = m_crtc_ptr & 1 ? data & 0xff : data >> 8;
+
m_crtc_ptr++;
m_crtc->dack_w(prog_space , 0 , hp64k_crtc_filter(data));
diff --git a/src/mame/drivers/hp9845.cpp b/src/mame/drivers/hp9845.cpp
index f8a20913c4d..b104ef1e7b7 100644
--- a/src/mame/drivers/hp9845.cpp
+++ b/src/mame/drivers/hp9845.cpp
@@ -25,6 +25,7 @@
// - Correct character generator ROMs (a huge "thank you" to Ansgar Kueckes for the dumps!)
// - 98775 light pen controller
// - Display softkeys on 45C & 45T
+// - HLE of integral printer
// What's not yet in:
// - Better naming of tape drive image (it's now "magt1" and "magt2", should be "t15" and "t14")
// - Better documentation of this file
@@ -32,7 +33,6 @@
// - Speed, as usual
// - Light pen tracing sometimes behaves erratically in 45C and 45T
// What will probably never be in:
-// - Integral printer (firmware and character generator ROMs are very difficult to dump)
// - Fast LPU processor (dump of microcode PROMs is not available)
#include "emu.h"
@@ -48,6 +48,7 @@
#include "hp9845b.lh"
+#include "machine/hp9845_printer.h"
// Debugging
#define VERBOSE 0
@@ -187,6 +188,7 @@ constexpr unsigned LP_FOV = 9; // Field of view
constexpr unsigned LP_XOFFSET = 5; // x-offset of LP (due to delay in hit recognition)
// Peripheral Addresses (PA)
+#define PRINTER_PA 0
#define IO_SLOT_FIRST_PA 1
#define IO_SLOT_LAST_PA 12
#define GVIDEO_PA 13
@@ -523,6 +525,8 @@ void hp9845_base_state::machine_reset()
m_beeper->set_state(0);
+ m_prt_irl = false;
+
logerror("STS=%04x FLG=%04x\n" , m_sts_status , m_flg_status);
}
@@ -708,8 +712,8 @@ TIMER_DEVICE_CALLBACK_MEMBER(hp9845_base_state::kb_scan)
// Key pressed, store scancode & generate IRL
//logerror("idx=%u msl=%d\n" , max_seq_idx , max_seq_len);
m_kb_scancode = max_seq_idx;
- irq_w(0 , 1);
BIT_SET(m_kb_status, 0);
+ update_kb_prt_irq();
// Special case: pressing stop key sets LPU "status" flag
if (max_seq_idx == 0x47) {
@@ -732,8 +736,8 @@ READ16_MEMBER(hp9845_base_state::kb_status_r)
WRITE16_MEMBER(hp9845_base_state::kb_irq_clear_w)
{
- irq_w(0 , 0);
BIT_CLR(m_kb_status, 0);
+ update_kb_prt_irq();
m_lpu->status_w(0);
if (BIT(data , 15)) {
@@ -743,6 +747,12 @@ WRITE16_MEMBER(hp9845_base_state::kb_irq_clear_w)
}
}
+void hp9845_base_state::update_kb_prt_irq()
+{
+ bool state = BIT(m_kb_status , 0) || m_prt_irl;
+ irq_w(0 , state);
+}
+
TIMER_DEVICE_CALLBACK_MEMBER(hp9845_base_state::beeper_off)
{
m_beeper->set_state(0);
@@ -756,6 +766,22 @@ WRITE8_MEMBER(hp9845_base_state::pa_w)
}
}
+WRITE_LINE_MEMBER(hp9845_base_state::prt_irl_w)
+{
+ m_prt_irl = state;
+ update_kb_prt_irq();
+}
+
+WRITE_LINE_MEMBER(hp9845_base_state::prt_flg_w)
+{
+ flg_w(PRINTER_PA , state);
+}
+
+WRITE_LINE_MEMBER(hp9845_base_state::prt_sts_w)
+{
+ sts_w(PRINTER_PA , state);
+}
+
WRITE_LINE_MEMBER(hp9845_base_state::t14_irq_w)
{
irq_w(T14_PA , state);
@@ -1046,7 +1072,7 @@ void hp9845b_state::video_fill_buff(bool buff_idx)
// Limit on accesses per row reached
break;
}
- m_video_word = prog_space.read_word(m_video_mar << 1);
+ m_video_word = prog_space.read_word(m_video_mar);
if (m_video_load_mar) {
// Load new address into MAR after start of a new frame or NWA instruction
if (m_video_first_mar) {
@@ -1620,7 +1646,7 @@ void hp9845ct_base_state::video_fill_buff(bool buff_idx)
// Limit on accesses per row reached
break;
}
- m_video_word = prog_space.read_word(m_video_mar << 1);
+ m_video_word = prog_space.read_word(m_video_mar);
if (m_video_load_mar) {
// Load new address into MAR after start of a new frame or NWA instruction
if (m_video_first_mar) {
@@ -3695,6 +3721,9 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START(ppu_io_map , AS_IO , 16 , hp9845_base_state)
ADDRESS_MAP_UNMAP_LOW
+ // PA = 0, IC = 0..1
+ // Internal printer
+ AM_RANGE(HP_MAKE_IOADDR(PRINTER_PA , 0) , HP_MAKE_IOADDR(PRINTER_PA , 1)) AM_DEVREADWRITE("printer" , hp9845_printer_device , printer_r , printer_w)
// PA = 0, IC = 2
// Keyboard scancode input
AM_RANGE(HP_MAKE_IOADDR(0 , 2) , HP_MAKE_IOADDR(0 , 2)) AM_READ(kb_scancode_r)
@@ -3791,6 +3820,12 @@ static MACHINE_CONFIG_START(hp9845_base)
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("192K")
MCFG_RAM_EXTRA_OPTIONS("64K, 320K, 448K")
+
+ // Internal printer
+ MCFG_DEVICE_ADD("printer" , HP9845_PRINTER , 0)
+ MCFG_9845PRT_IRL_HANDLER(WRITELINE(hp9845_base_state , prt_irl_w))
+ MCFG_9845PRT_FLG_HANDLER(WRITELINE(hp9845_base_state , prt_flg_w))
+ MCFG_9845PRT_STS_HANDLER(WRITELINE(hp9845_base_state , prt_sts_w))
MACHINE_CONFIG_END
static MACHINE_CONFIG_START(hp9845b)
diff --git a/src/mame/drivers/hprot1.cpp b/src/mame/drivers/hprot1.cpp
index 56d9913e638..03bac45704c 100644
--- a/src/mame/drivers/hprot1.cpp
+++ b/src/mame/drivers/hprot1.cpp
@@ -100,7 +100,7 @@ DRIVER_INIT_MEMBER( hprot1_state, hprot1 )
bitswapped_ROM[i] = ROM[i];
for(i=0x0000;i<0x10000;i++)
- ROM[BITSWAP16(i, 15, 14, 13, 12, 11, 10, 9, 8, 3, 2, 1, 0, 4, 5, 6, 7)] = bitswapped_ROM[i];
+ ROM[bitswap<16>(i, 15, 14, 13, 12, 11, 10, 9, 8, 3, 2, 1, 0, 4, 5, 6, 7)] = bitswapped_ROM[i];
}
//A4 = display RS
diff --git a/src/mame/drivers/hshavoc.cpp b/src/mame/drivers/hshavoc.cpp
index 4a9e6213155..ae7d7ade2af 100644
--- a/src/mame/drivers/hshavoc.cpp
+++ b/src/mame/drivers/hshavoc.cpp
@@ -131,7 +131,7 @@ DRIVER_INIT_MEMBER(md_boot_state,hshavoc)
for (x = 0; x < rom_size / 2; x++)
{
- src[x] = BITSWAP16(src[x],
+ src[x] = bitswap<16>(src[x],
7, 15,6, 14,
5, 2, 1, 10,
13,4, 12,3,
@@ -152,7 +152,7 @@ DRIVER_INIT_MEMBER(md_boot_state,hshavoc)
if (src[x] & 0x0100)
src[x] ^= 0x0004;
- src[x] = BITSWAP16(src[x], 15,14,13,12,
+ src[x] = bitswap<16>(src[x], 15,14,13,12,
11,9, 10,8,