summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/devices/bus/c64/silverrock.cpp4
-rw-r--r--src/devices/bus/c64/stardos.cpp2
-rw-r--r--src/devices/bus/c64/vizastar.cpp4
-rw-r--r--src/devices/bus/c64/vw64.cpp4
-rw-r--r--src/devices/bus/c64/warp_speed.cpp4
-rw-r--r--src/devices/bus/cbmiec/c1541.cpp2
-rw-r--r--src/devices/bus/chanf/rom.cpp2
-rw-r--r--src/devices/bus/epson_sio/tf20.cpp4
-rw-r--r--src/devices/bus/gameboy/mbc.cpp16
-rw-r--r--src/devices/bus/isa/svga_cirrus.cpp4
-rw-r--r--src/devices/bus/isa/svga_s3.cpp8
-rw-r--r--src/devices/bus/isa/svga_trident.cpp2
-rw-r--r--src/devices/bus/isa/svga_tseng.cpp2
-rw-r--r--src/devices/bus/isa/vga.cpp2
-rw-r--r--src/devices/bus/isa/vga_ati.cpp6
-rw-r--r--src/devices/bus/megadrive/rom.cpp32
-rw-r--r--src/devices/bus/msx_cart/dooly.cpp2
-rw-r--r--src/devices/bus/neogeo/boot_kof10th.cpp2
-rw-r--r--src/devices/bus/neogeo/prot_cmc.cpp6
-rw-r--r--src/devices/bus/neogeo/prot_cthd.cpp4
-rw-r--r--src/devices/bus/neogeo/prot_kof2k3bl.cpp4
-rw-r--r--src/devices/bus/neogeo/prot_misc.cpp28
-rw-r--r--src/devices/bus/neogeo/prot_pcm2.cpp2
-rw-r--r--src/devices/bus/neogeo/prot_pvc.cpp30
-rw-r--r--src/devices/bus/neogeo/prot_sma.cpp30
-rw-r--r--src/devices/bus/neogeo/sbp.cpp2
-rw-r--r--src/devices/bus/nes/jy.cpp2
-rw-r--r--src/devices/bus/nes/mmc3_clones.cpp2
-rw-r--r--src/devices/bus/nes/waixing.cpp4
-rw-r--r--src/devices/bus/nubus/nubus_spec8.cpp2
-rw-r--r--src/devices/bus/nubus/pds30_procolor816.cpp2
-rw-r--r--src/devices/bus/s100/wunderbus.cpp2
-rw-r--r--src/devices/bus/saturn/sat_slot.cpp2
-rw-r--r--src/devices/bus/sega8/rom.cpp2
-rw-r--r--src/devices/bus/snes/rom.cpp6
-rw-r--r--src/devices/bus/snes_ctrl/pachinko.cpp2
-rw-r--r--src/devices/bus/spc1000/fdd.cpp4
-rw-r--r--src/devices/bus/ti99x/990_hd.cpp2
-rw-r--r--src/devices/bus/vcs/dpc.cpp4
-rw-r--r--src/devices/cpu/arm7/arm7.h4
-rw-r--r--src/devices/cpu/arm7/arm7core.h5
-rw-r--r--src/devices/cpu/arm7/arm7help.h5
-rw-r--r--src/devices/cpu/es5510/es5510.cpp2
-rw-r--r--src/devices/cpu/hmcs40/hmcs40.cpp2
-rw-r--r--src/devices/cpu/hmcs40/hmcs40d.cpp2
-rw-r--r--src/devices/cpu/hmcs40/hmcs40op.cpp4
-rw-r--r--src/devices/cpu/m68000/m68000.h307
-rw-r--r--src/devices/cpu/m68000/m68k_in.cpp7567
-rw-r--r--src/devices/cpu/m68000/m68kcpu.cpp1408
-rw-r--r--src/devices/cpu/m68000/m68kcpu.h1582
-rw-r--r--src/devices/cpu/m68000/m68kfpu.hxx1073
-rw-r--r--src/devices/cpu/m68000/m68kmake.cpp25
-rw-r--r--src/devices/cpu/m68000/m68kmmu.h534
-rw-r--r--src/devices/cpu/tms1000/tms0970.cpp2
-rw-r--r--src/devices/cpu/tms1000/tms0980.cpp4
-rw-r--r--src/devices/cpu/tms1000/tms1k_base.cpp2
-rw-r--r--src/devices/cpu/tms1000/tp0320.cpp2
-rw-r--r--src/devices/cpu/upd7725/upd7725.cpp4
-rw-r--r--src/devices/machine/68307.cpp186
-rw-r--r--src/devices/machine/68307.h40
-rw-r--r--src/devices/machine/68307bus.cpp45
-rw-r--r--src/devices/machine/68307sim.cpp46
-rw-r--r--src/devices/machine/68307tmu.cpp38
-rw-r--r--src/devices/machine/68340.cpp78
-rw-r--r--src/devices/machine/68340.h6
-rw-r--r--src/devices/machine/68340dma.cpp14
-rw-r--r--src/devices/machine/68340ser.cpp20
-rw-r--r--src/devices/machine/68340sim.cpp130
-rw-r--r--src/devices/machine/68340tmu.cpp53
-rw-r--r--src/devices/machine/atmel_arm_aic.cpp44
-rw-r--r--src/devices/machine/atmel_arm_aic.h10
-rw-r--r--src/devices/machine/autoconfig.cpp4
-rw-r--r--src/devices/machine/e05a03.cpp4
-rw-r--r--src/devices/machine/e05a30.cpp4
-rw-r--r--src/devices/machine/eepromser.cpp12
-rw-r--r--src/devices/machine/ldpr8210.cpp2
-rw-r--r--src/devices/machine/mc146818.cpp2
-rw-r--r--src/devices/machine/mc6846.cpp28
-rw-r--r--src/devices/machine/mc6854.cpp18
-rw-r--r--src/devices/machine/mos6530.cpp2
-rw-r--r--src/devices/machine/roc10937.cpp2
-rw-r--r--src/devices/machine/sdlc.cpp2
-rw-r--r--src/devices/machine/smc91c9x.cpp430
-rw-r--r--src/devices/machine/smc91c9x.h42
-rw-r--r--src/devices/machine/stvcd.cpp2
-rw-r--r--src/devices/machine/tms6100.cpp2
-rw-r--r--src/devices/machine/v3021.cpp2
-rw-r--r--src/devices/machine/z80sio.cpp2
-rw-r--r--src/devices/sound/astrocde.cpp2
-rw-r--r--src/devices/sound/scsp.cpp6
-rw-r--r--src/devices/sound/tms5110.cpp2
-rw-r--r--src/devices/sound/ymz770.cpp218
-rw-r--r--src/devices/sound/ymz770.h13
-rw-r--r--src/devices/video/ef9340_1.cpp2
-rw-r--r--src/devices/video/epic12.cpp4
-rw-r--r--src/devices/video/imagetek_i4100.cpp2
-rw-r--r--src/devices/video/pc_vga.cpp10
-rw-r--r--src/devices/video/tms34061.cpp16
-rw-r--r--src/emu/debug/debugcpu.cpp4
-rw-r--r--src/emu/device.h1
-rw-r--r--src/emu/drivers/xtal.h5
-rw-r--r--src/emu/emucore.h13
-rw-r--r--src/emu/emumem.cpp24
-rw-r--r--src/emu/emumem.h4
-rw-r--r--src/emu/softlist_dev.cpp10
-rw-r--r--src/emu/softlist_dev.h8
-rw-r--r--src/frontend/mame/mame.cpp9
-rw-r--r--src/mame/arcade.flt2
-rw-r--r--src/mame/audio/atarijsa.cpp4
-rw-r--r--src/mame/audio/dcs.cpp67
-rw-r--r--src/mame/audio/dcs.h5
-rw-r--r--src/mame/audio/exidy.cpp8
-rw-r--r--src/mame/audio/exidy440.cpp14
-rw-r--r--src/mame/audio/hng64.cpp2
-rw-r--r--src/mame/audio/leland.cpp2
-rw-r--r--src/mame/audio/m72.cpp4
-rw-r--r--src/mame/audio/mario.cpp13
-rw-r--r--src/mame/audio/segasnd.cpp6
-rw-r--r--src/mame/audio/seibu.cpp18
-rw-r--r--src/mame/audio/snes_snd.cpp2
-rw-r--r--src/mame/audio/svis_snd.cpp6
-rw-r--r--src/mame/audio/trackfld.cpp2
-rw-r--r--src/mame/audio/tx1.cpp10
-rw-r--r--src/mame/audio/wswan.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/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.cpp8
-rw-r--r--src/mame/drivers/airraid.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/apple2.cpp8
-rw-r--r--src/mame/drivers/apple2e.cpp16
-rw-r--r--src/mame/drivers/aquarium.cpp4
-rw-r--r--src/mame/drivers/aristmk5.cpp128
-rw-r--r--src/mame/drivers/arkanoid.cpp4
-rw-r--r--src/mame/drivers/arsystems.cpp2
-rw-r--r--src/mame/drivers/astrof.cpp2
-rw-r--r--src/mame/drivers/atarisy2.cpp2
-rw-r--r--src/mame/drivers/atlantis.cpp6
-rw-r--r--src/mame/drivers/atvtrack.cpp6
-rw-r--r--src/mame/drivers/backfire.cpp2
-rw-r--r--src/mame/drivers/berzerk.cpp2
-rw-r--r--src/mame/drivers/beta.cpp2
-rw-r--r--src/mame/drivers/bfm_sc4.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.cpp2
-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/cabal.cpp4
-rw-r--r--src/mame/drivers/calcune.cpp12
-rw-r--r--src/mame/drivers/camplynx.cpp4
-rw-r--r--src/mame/drivers/cave.cpp6
-rw-r--r--src/mame/drivers/cd2650.cpp2
-rw-r--r--src/mame/drivers/cdi.cpp4
-rw-r--r--src/mame/drivers/centiped.cpp2
-rw-r--r--src/mame/drivers/chessmst.cpp2
-rw-r--r--src/mame/drivers/chesstrv.cpp2
-rw-r--r--src/mame/drivers/chsuper.cpp6
-rw-r--r--src/mame/drivers/cninja.cpp16
-rw-r--r--src/mame/drivers/cntsteer.cpp2
-rw-r--r--src/mame/drivers/cobra.cpp4
-rw-r--r--src/mame/drivers/coinmstr.cpp4
-rw-r--r--src/mame/drivers/coolpool.cpp4
-rw-r--r--src/mame/drivers/coolridr.cpp2
-rw-r--r--src/mame/drivers/cops.cpp6
-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/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/ddenlovr.cpp8
-rw-r--r--src/mame/drivers/ddragon.cpp12
-rw-r--r--src/mame/drivers/de_2.cpp14
-rw-r--r--src/mame/drivers/de_3.cpp10
-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/eolith.cpp2
-rw-r--r--src/mame/drivers/epos.cpp8
-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/excali64.cpp2
-rw-r--r--src/mame/drivers/exidy440.cpp2
-rw-r--r--src/mame/drivers/expro02.cpp4
-rw-r--r--src/mame/drivers/fcrash.cpp6
-rw-r--r--src/mame/drivers/fgoal.cpp4
-rw-r--r--src/mame/drivers/fidel6502.cpp10
-rw-r--r--src/mame/drivers/fidel68k.cpp96
-rw-r--r--src/mame/drivers/fidelz80.cpp8
-rw-r--r--src/mame/drivers/fitfight.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/funworld.cpp30
-rw-r--r--src/mame/drivers/gaiden.cpp8
-rw-r--r--src/mame/drivers/galaga.cpp4
-rw-r--r--src/mame/drivers/galaxian.cpp20
-rw-r--r--src/mame/drivers/ghosteo.cpp8
-rw-r--r--src/mame/drivers/gladiatr.cpp4
-rw-r--r--src/mame/drivers/gng.cpp6
-rw-r--r--src/mame/drivers/goldnpkr.cpp2
-rw-r--r--src/mame/drivers/goldstar.cpp162
-rw-r--r--src/mame/drivers/gts3.cpp2
-rw-r--r--src/mame/drivers/gts3a.cpp2
-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.cpp4
-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.cpp102
-rw-r--r--src/mame/drivers/hh_melps4.cpp8
-rw-r--r--src/mame/drivers/hh_pic16.cpp2
-rw-r--r--src/mame/drivers/hh_sm510.cpp321
-rw-r--r--src/mame/drivers/hh_tms1k.cpp25
-rw-r--r--src/mame/drivers/hh_ucom4.cpp50
-rw-r--r--src/mame/drivers/hnayayoi.cpp2
-rw-r--r--src/mame/drivers/hprot1.cpp2
-rw-r--r--src/mame/drivers/hshavoc.cpp10
-rw-r--r--src/mame/drivers/hyprduel.cpp2
-rw-r--r--src/mame/drivers/igs011.cpp12
-rw-r--r--src/mame/drivers/igs017.cpp42
-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/itech32.cpp2
-rw-r--r--src/mame/drivers/itech8.cpp14
-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/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.cpp2
-rw-r--r--src/mame/drivers/kurukuru.cpp2
-rw-r--r--src/mame/drivers/laser3k.cpp4
-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/looping.cpp2
-rw-r--r--src/mame/drivers/ltcasino.cpp2
-rw-r--r--src/mame/drivers/ltd.cpp2
-rw-r--r--src/mame/drivers/m90.cpp8
-rw-r--r--src/mame/drivers/mac128.cpp4
-rw-r--r--src/mame/drivers/madalien.cpp4
-rw-r--r--src/mame/drivers/magictg.cpp10
-rw-r--r--src/mame/drivers/mario.cpp96
-rw-r--r--src/mame/drivers/maygay1b.cpp2
-rw-r--r--src/mame/drivers/mcr3.cpp2
-rw-r--r--src/mame/drivers/meadows.cpp2
-rw-r--r--src/mame/drivers/megadrvb.cpp12
-rw-r--r--src/mame/drivers/megasys1.cpp8
-rw-r--r--src/mame/drivers/mephisto_montec.cpp4
-rw-r--r--src/mame/drivers/merit.cpp6
-rw-r--r--src/mame/drivers/mermaid.cpp15
-rw-r--r--src/mame/drivers/metlfrzr.cpp4
-rw-r--r--src/mame/drivers/metro.cpp6
-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/mk1.cpp8
-rw-r--r--src/mame/drivers/mkit09.cpp2
-rw-r--r--src/mame/drivers/model2.cpp4
-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/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/namcos10.cpp2
-rw-r--r--src/mame/drivers/namcos11.cpp4
-rw-r--r--src/mame/drivers/namcos22.cpp12
-rw-r--r--src/mame/drivers/namcos23.cpp38
-rw-r--r--src/mame/drivers/naomi.cpp4
-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/neogeocd.cpp4
-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/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/pacman.cpp24
-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.cpp4
-rw-r--r--src/mame/drivers/pengadvb.cpp4
-rw-r--r--src/mame/drivers/pet.cpp22
-rw-r--r--src/mame/drivers/pgm2.cpp212
-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/pntnpuzl.cpp4
-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/proconn.cpp2
-rw-r--r--src/mame/drivers/puckpkmn.cpp2
-rw-r--r--src/mame/drivers/pve500.cpp2
-rw-r--r--src/mame/drivers/qix.cpp10
-rw-r--r--src/mame/drivers/r2dx_v33.cpp2
-rw-r--r--src/mame/drivers/r9751.cpp82
-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/royalmah.cpp6
-rw-r--r--src/mame/drivers/s11.cpp8
-rw-r--r--src/mame/drivers/s11b.cpp16
-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/seattle.cpp14
-rw-r--r--src/mame/drivers/segac2.cpp14
-rw-r--r--src/mame/drivers/segag80r.cpp4
-rw-r--r--src/mame/drivers/segaorun.cpp10
-rw-r--r--src/mame/drivers/segas16b.cpp44
-rw-r--r--src/mame/drivers/segaufo.cpp2
-rw-r--r--src/mame/drivers/segaxbd.cpp2
-rw-r--r--src/mame/drivers/seicross.cpp2
-rw-r--r--src/mame/drivers/selz80.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/simpl156.cpp2
-rw-r--r--src/mame/drivers/skimaxx.cpp2
-rw-r--r--src/mame/drivers/skyarmy.cpp4
-rw-r--r--src/mame/drivers/smsmcorp.cpp39
-rw-r--r--src/mame/drivers/snes.cpp2
-rw-r--r--src/mame/drivers/snesb.cpp52
-rw-r--r--src/mame/drivers/snookr10.cpp6
-rw-r--r--src/mame/drivers/snowbros.cpp10
-rw-r--r--src/mame/drivers/sothello.cpp2
-rw-r--r--src/mame/drivers/speedbal.cpp4
-rw-r--r--src/mame/drivers/sshangha.cpp8
-rw-r--r--src/mame/drivers/statriv2.cpp2
-rw-r--r--src/mame/drivers/stv.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/system16.cpp2
-rw-r--r--src/mame/drivers/taito_l.cpp2
-rw-r--r--src/mame/drivers/taito_x.cpp14
-rw-r--r--src/mame/drivers/taitotz.cpp2
-rw-r--r--src/mame/drivers/tandy1t.cpp4
-rw-r--r--src/mame/drivers/tasman.cpp4
-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/ticalc1x.cpp12
-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.cpp14
-rw-r--r--src/mame/drivers/toki.cpp6
-rw-r--r--src/mame/drivers/tourvis.cpp132
-rw-r--r--src/mame/drivers/trackfld.cpp6
-rw-r--r--src/mame/drivers/travrusa.cpp6
-rw-r--r--src/mame/drivers/tsispch.cpp8
-rw-r--r--src/mame/drivers/twins.cpp6
-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/vega.cpp8
-rw-r--r--src/mame/drivers/vegas.cpp21
-rw-r--r--src/mame/drivers/vt240.cpp8
-rw-r--r--src/mame/drivers/wallc.cpp6
-rw-r--r--src/mame/drivers/wecleman.cpp4
-rw-r--r--src/mame/drivers/wico.cpp2
-rw-r--r--src/mame/drivers/williams.cpp2
-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.cpp4
-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.cpp4
-rw-r--r--src/mame/drivers/xyonix.cpp4
-rw-r--r--src/mame/drivers/yunsung8.cpp2
-rw-r--r--src/mame/drivers/yuvomz80.cpp150
-rw-r--r--src/mame/drivers/z100.cpp4
-rw-r--r--src/mame/drivers/z80dev.cpp2
-rw-r--r--src/mame/drivers/zapcomputer.cpp2
-rw-r--r--src/mame/drivers/zn.cpp6
-rw-r--r--src/mame/etc/fd1094dp.cpp34
-rw-r--r--src/mame/includes/apollo.h2
-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/mac.h180
-rw-r--r--src/mame/includes/macpci.h91
-rw-r--r--src/mame/includes/mario.h1
-rw-r--r--src/mame/includes/pgm2.h21
-rw-r--r--src/mame/includes/seta2.h23
-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/machine/315-5881_crypt.cpp6
-rw-r--r--src/mame/machine/amiga.cpp20
-rw-r--r--src/mame/machine/apollo_dbg.cpp5
-rw-r--r--src/mame/machine/apple2.cpp12
-rw-r--r--src/mame/machine/apple2gs.cpp4
-rw-r--r--src/mame/machine/atarifdc.cpp2
-rw-r--r--src/mame/machine/awboard.cpp4
-rw-r--r--src/mame/machine/bbc.cpp2
-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/decocass.cpp112
-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.cpp12
-rw-r--r--src/mame/machine/gb.cpp4
-rw-r--r--src/mame/machine/harddriv.cpp20
-rw-r--r--src/mame/machine/hp48.cpp24
-rw-r--r--src/mame/machine/igs025.cpp4
-rw-r--r--src/mame/machine/igs036crypt.cpp27
-rw-r--r--src/mame/machine/igs036crypt.h1
-rw-r--r--src/mame/machine/inder_sb.cpp10
-rw-r--r--src/mame/machine/jalcrpt.cpp20
-rw-r--r--src/mame/machine/jumpshot.cpp2
-rw-r--r--src/mame/machine/kaneko_calc3.cpp20
-rw-r--r--src/mame/machine/konppc.cpp40
-rw-r--r--src/mame/machine/m24_z8000.cpp8
-rw-r--r--src/mame/machine/mac.cpp12
-rw-r--r--src/mame/machine/macpci.cpp6
-rw-r--r--src/mame/machine/mbee.cpp8
-rw-r--r--src/mame/machine/mc8123.cpp78
-rw-r--r--src/mame/machine/mega32x.cpp28
-rw-r--r--src/mame/machine/megacd.cpp8
-rw-r--r--src/mame/machine/megacdcd.cpp10
-rw-r--r--src/mame/machine/megadriv.cpp8
-rw-r--r--src/mame/machine/mexico86.cpp4
-rw-r--r--src/mame/machine/micropolis.cpp2
-rw-r--r--src/mame/machine/midwayic.cpp12
-rw-r--r--src/mame/machine/mpu4.cpp18
-rw-r--r--src/mame/machine/namco06.cpp2
-rw-r--r--src/mame/machine/namcos2.cpp6
-rw-r--r--src/mame/machine/nb1413m3.cpp30
-rw-r--r--src/mame/machine/pacplus.cpp2
-rw-r--r--src/mame/machine/pgm2_memcard.cpp68
-rw-r--r--src/mame/machine/pgm2_memcard.h8
-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/sgi.cpp170
-rw-r--r--src/mame/machine/slapstic.cpp2
-rw-r--r--src/mame/machine/snes.cpp2
-rw-r--r--src/mame/machine/stvprot.cpp2
-rw-r--r--src/mame/machine/subsino.cpp64
-rw-r--r--src/mame/machine/thomflop.cpp2
-rw-r--r--src/mame/machine/trs80m2kb.cpp2
-rw-r--r--src/mame/machine/xevious.cpp2
-rw-r--r--src/mame/mame.lst21
-rw-r--r--src/mame/video/agat7.cpp4
-rw-r--r--src/mame/video/alesis.cpp10
-rw-r--r--src/mame/video/antic.cpp4
-rw-r--r--src/mame/video/apple2.cpp4
-rw-r--r--src/mame/video/aussiebyte.cpp2
-rw-r--r--src/mame/video/champbas.cpp2
-rw-r--r--src/mame/video/cvs.cpp2
-rw-r--r--src/mame/video/decocass.cpp2
-rw-r--r--src/mame/video/dynax.cpp26
-rw-r--r--src/mame/video/fmtowns.cpp170
-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/k001006.cpp2
-rw-r--r--src/mame/video/k001604.cpp4
-rw-r--r--src/mame/video/k007121.cpp2
-rw-r--r--src/mame/video/k007342.cpp2
-rw-r--r--src/mame/video/k051316.cpp6
-rw-r--r--src/mame/video/k053244_k053245.cpp2
-rw-r--r--src/mame/video/k053246_k053247_k055673.cpp14
-rw-r--r--src/mame/video/k053251.cpp4
-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/leland.cpp8
-rw-r--r--src/mame/video/mbee.cpp2
-rw-r--r--src/mame/video/mitchell.cpp2
-rw-r--r--src/mame/video/mz700.cpp2
-rw-r--r--src/mame/video/namcos2.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.cpp22
-rw-r--r--src/mame/video/pingpong.cpp2
-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/thepit.cpp4
-rw-r--r--src/mame/video/tia.cpp8
-rw-r--r--src/mame/video/tx1.cpp2
-rw-r--r--src/mame/video/xevious.cpp2
580 files changed, 11304 insertions, 9722 deletions
diff --git a/src/devices/bus/c64/silverrock.cpp b/src/devices/bus/c64/silverrock.cpp
index 2260b82738a..a34f21d17a7 100644
--- a/src/devices/bus/c64/silverrock.cpp
+++ b/src/devices/bus/c64/silverrock.cpp
@@ -37,10 +37,10 @@
//**************************************************************************
#define UNSCRAMBLE_ADDRESS(_offset) \
- BITSWAP16(_offset,15,14,13,12,1,0,2,3,11,10,9,8,7,6,5,4)
+ bitswap<16>(_offset,15,14,13,12,1,0,2,3,11,10,9,8,7,6,5,4)
#define UNSCRAMBLE_DATA(_data) \
- BITSWAP8(_data,7,6,5,4,0,1,2,3)
+ bitswap<8>(_data,7,6,5,4,0,1,2,3)
diff --git a/src/devices/bus/c64/stardos.cpp b/src/devices/bus/c64/stardos.cpp
index ce3d19f0b9b..c8e47d300e8 100644
--- a/src/devices/bus/c64/stardos.cpp
+++ b/src/devices/bus/c64/stardos.cpp
@@ -142,7 +142,7 @@ uint8_t c64_stardos_cartridge_device::c64_cd_r(address_space &space, offs_t offs
{
if (!roml || !romh)
{
- // TODO BITSWAP8(7,6,5,4,3,1,2,0) ?
+ // TODO bitswap<8>(7,6,5,4,3,1,2,0) ?
data = m_roml[offset & 0x3fff];
}
else if (!io1)
diff --git a/src/devices/bus/c64/vizastar.cpp b/src/devices/bus/c64/vizastar.cpp
index 03043e7de93..444ff656b68 100644
--- a/src/devices/bus/c64/vizastar.cpp
+++ b/src/devices/bus/c64/vizastar.cpp
@@ -36,10 +36,10 @@
//**************************************************************************
#define UNSCRAMBLE_ADDRESS(_offset) \
- BITSWAP16(_offset,15,14,13,12,5,0,7,10,11,9,8,6,4,3,2,1)
+ bitswap<16>(_offset,15,14,13,12,5,0,7,10,11,9,8,6,4,3,2,1)
#define UNSCRAMBLE_DATA(_data) \
- BITSWAP8(_data,7,6,0,5,1,4,2,3)
+ bitswap<8>(_data,7,6,0,5,1,4,2,3)
diff --git a/src/devices/bus/c64/vw64.cpp b/src/devices/bus/c64/vw64.cpp
index f6ed996765a..ea0d3c3dac2 100644
--- a/src/devices/bus/c64/vw64.cpp
+++ b/src/devices/bus/c64/vw64.cpp
@@ -40,10 +40,10 @@
//**************************************************************************
#define UNSCRAMBLE_ADDRESS(_offset) \
- BITSWAP16(_offset,15,14,13,12,6,2,8,10,11,9,7,5,4,3,1,0)
+ bitswap<16>(_offset,15,14,13,12,6,2,8,10,11,9,7,5,4,3,1,0)
#define UNSCRAMBLE_DATA(_data) \
- BITSWAP8(_data,7,6,0,5,1,4,2,3)
+ bitswap<8>(_data,7,6,0,5,1,4,2,3)
// 74LS122 tW=0.45*R*C = 1.1844s
diff --git a/src/devices/bus/c64/warp_speed.cpp b/src/devices/bus/c64/warp_speed.cpp
index e9098dadb44..3c266e3618d 100644
--- a/src/devices/bus/c64/warp_speed.cpp
+++ b/src/devices/bus/c64/warp_speed.cpp
@@ -38,10 +38,10 @@
//**************************************************************************
#define UNSCRAMBLE_ADDRESS(_offset) \
- BITSWAP16(_offset,15,14,12,13,5,2,7,9,11,10,8,6,4,3,1,0)
+ bitswap<16>(_offset,15,14,12,13,5,2,7,9,11,10,8,6,4,3,1,0)
#define UNSCRAMBLE_DATA(_data) \
- BITSWAP8(_data,7,6,5,0,1,4,2,3)
+ bitswap<8>(_data,7,6,5,0,1,4,2,3)
diff --git a/src/devices/bus/cbmiec/c1541.cpp b/src/devices/bus/cbmiec/c1541.cpp
index 4d0f9748966..427cebe1e31 100644
--- a/src/devices/bus/cbmiec/c1541.cpp
+++ b/src/devices/bus/cbmiec/c1541.cpp
@@ -1071,7 +1071,7 @@ void fsd2_device::device_start()
for (offs_t offset = 0; offset < 0x4000; offset++)
{
- uint8_t data = BITSWAP8(rom[offset], 7, 6, 5, 3, 4, 2, 1, 0);
+ uint8_t data = bitswap<8>(rom[offset], 7, 6, 5, 3, 4, 2, 1, 0);
rom[offset] = data;
}
diff --git a/src/devices/bus/chanf/rom.cpp b/src/devices/bus/chanf/rom.cpp
index 3dc509a29d9..a3a213ba7ed 100644
--- a/src/devices/bus/chanf/rom.cpp
+++ b/src/devices/bus/chanf/rom.cpp
@@ -192,7 +192,7 @@ void chanf_rom_device::common_write_2102(uint32_t offset, uint8_t data)
m_latch[1] = data;
// all bits but 2,3 come from this write, but they are shuffled
// notice that data is 8bits, so when swapping bit8 & bit9 are always 0!
- m_addr_latch = (m_addr_latch & 0x0c) | (BITSWAP16((uint16_t) data, 15, 14, 13, 12, 11, 10, 7, 6, 5, 3, 2, 1, 9, 8, 4, 0));
+ m_addr_latch = (m_addr_latch & 0x0c) | (bitswap<16>((uint16_t) data, 15, 14, 13, 12, 11, 10, 7, 6, 5, 3, 2, 1, 9, 8, 4, 0));
}
}
diff --git a/src/devices/bus/epson_sio/tf20.cpp b/src/devices/bus/epson_sio/tf20.cpp
index c51fec97fde..6c4fd311f4b 100644
--- a/src/devices/bus/epson_sio/tf20.cpp
+++ b/src/devices/bus/epson_sio/tf20.cpp
@@ -231,7 +231,7 @@ READ8_MEMBER( epson_tf20_device::rom_disable_r )
READ8_MEMBER( epson_tf20_device::upd765_tc_r )
{
- logerror("%s: upd765_tc_r\n", space.machine().describe_context());
+ logerror("%s: upd765_tc_r\n", machine().describe_context());
// toggle tc on read
m_fdc->tc_w(true);
@@ -242,7 +242,7 @@ READ8_MEMBER( epson_tf20_device::upd765_tc_r )
WRITE8_MEMBER( epson_tf20_device::fdc_control_w )
{
- logerror("%s: tf20_fdc_control_w(%02x)\n", space.machine().describe_context(), data);
+ logerror("%s: tf20_fdc_control_w(%02x)\n", machine().describe_context(), data);
// bit 0, motor on signal
m_fd0->mon_w(!BIT(data, 0));
diff --git a/src/devices/bus/gameboy/mbc.cpp b/src/devices/bus/gameboy/mbc.cpp
index de71f483779..4a48d896a94 100644
--- a/src/devices/bus/gameboy/mbc.cpp
+++ b/src/devices/bus/gameboy/mbc.cpp
@@ -1057,26 +1057,26 @@ WRITE8_MEMBER(gb_rom_sintax_device::write_bank)
switch (m_sintax_mode & 0x0f)
{
case 0x0d:
- data = BITSWAP8(data, 1,0,7,6,5,4,3,2);
+ data = bitswap<8>(data, 1,0,7,6,5,4,3,2);
break;
case 0x09:
- //data = BITSWAP8(data, 3,2,5,4,0,1,6,7); // Monkey..no
- data = BITSWAP8(data, 4,5,2,3,0,1,6,7);
+ //data = bitswap<8>(data, 3,2,5,4,0,1,6,7); // Monkey..no
+ data = bitswap<8>(data, 4,5,2,3,0,1,6,7);
break;
case 0x00: // 0x10=lion 0x00 hmmmmm // 1 and 0 unconfirmed
- data = BITSWAP8(data, 7,0,5,6,3,4,1,2);
+ data = bitswap<8>(data, 7,0,5,6,3,4,1,2);
break;
case 0x01:
- data = BITSWAP8(data, 0,1,6,7,4,5,2,3);
+ data = bitswap<8>(data, 0,1,6,7,4,5,2,3);
break;
case 0x05:
- data = BITSWAP8(data, 7,6,1,0,3,2,5,4); // Not 100% on this one
+ data = bitswap<8>(data, 7,6,1,0,3,2,5,4); // Not 100% on this one
break;
case 0x07:
- data = BITSWAP8(data, 2,0,3,1,5,4,7,6); // 5 and 7 unconfirmed
+ data = bitswap<8>(data, 2,0,3,1,5,4,7,6); // 5 and 7 unconfirmed
break;
case 0x0b:
- data = BITSWAP8(data, 2,3,0,1,6,7,4,5); // 5 and 6 unconfirmed
+ data = bitswap<8>(data, 2,3,0,1,6,7,4,5); // 5 and 6 unconfirmed
break;
}
m_latch_bank2 = (m_latch_bank2 & 0x100) | data;
diff --git a/src/devices/bus/isa/svga_cirrus.cpp b/src/devices/bus/isa/svga_cirrus.cpp
index f1cf4c936b1..a946af78b03 100644
--- a/src/devices/bus/isa/svga_cirrus.cpp
+++ b/src/devices/bus/isa/svga_cirrus.cpp
@@ -67,7 +67,7 @@ isa16_svga_cirrus_device::isa16_svga_cirrus_device(const machine_config &mconfig
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
-READ8_MEMBER(isa16_svga_cirrus_device::input_port_0_r ) { return 0xff; } //return space.machine().root_device().ioport("IN0")->read(); }
+READ8_MEMBER(isa16_svga_cirrus_device::input_port_0_r ) { return 0xff; } //return machine().root_device().ioport("IN0")->read(); }
void isa16_svga_cirrus_device::device_start()
{
@@ -148,7 +148,7 @@ isa16_svga_cirrus_gd542x_device::isa16_svga_cirrus_gd542x_device(const machine_c
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
-READ8_MEMBER(isa16_svga_cirrus_gd542x_device::input_port_0_r ) { return 0xff; } //return space.machine().root_device().ioport("IN0")->read(); }
+READ8_MEMBER(isa16_svga_cirrus_gd542x_device::input_port_0_r ) { return 0xff; } //return machine().root_device().ioport("IN0")->read(); }
void isa16_svga_cirrus_gd542x_device::device_start()
{
diff --git a/src/devices/bus/isa/svga_s3.cpp b/src/devices/bus/isa/svga_s3.cpp
index 6bd0f7815de..d290dbe6b91 100644
--- a/src/devices/bus/isa/svga_s3.cpp
+++ b/src/devices/bus/isa/svga_s3.cpp
@@ -77,7 +77,7 @@ isa16_svga_s3_device::isa16_svga_s3_device(const machine_config &mconfig, const
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
-READ8_MEMBER(isa16_svga_s3_device::input_port_0_r ) { return 0xff; } //return space.machine().root_device().ioport("IN0")->read(); }
+READ8_MEMBER(isa16_svga_s3_device::input_port_0_r ) { return 0xff; } //return machine().root_device().ioport("IN0")->read(); }
void isa16_svga_s3_device::device_start()
{
@@ -184,7 +184,7 @@ isa16_s3virge_device::isa16_s3virge_device(const machine_config &mconfig, const
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
-READ8_MEMBER(isa16_s3virge_device::input_port_0_r ) { return 0xff; } //return space.machine().root_device().ioport("IN0")->read(); }
+READ8_MEMBER(isa16_s3virge_device::input_port_0_r ) { return 0xff; } //return machine().root_device().ioport("IN0")->read(); }
void isa16_s3virge_device::device_start()
{
@@ -266,7 +266,7 @@ isa16_s3virgedx_device::isa16_s3virgedx_device(const machine_config &mconfig, co
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
-READ8_MEMBER(isa16_s3virgedx_device::input_port_0_r ) { return 0xff; } //return space.machine().root_device().ioport("IN0")->read(); }
+READ8_MEMBER(isa16_s3virgedx_device::input_port_0_r ) { return 0xff; } //return machine().root_device().ioport("IN0")->read(); }
void isa16_s3virgedx_device::device_start()
{
@@ -349,7 +349,7 @@ isa16_stealth3d2kpro_device::isa16_stealth3d2kpro_device(const machine_config &m
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
-READ8_MEMBER(isa16_stealth3d2kpro_device::input_port_0_r ) { return 0xff; } //return space.machine().root_device().ioport("IN0")->read(); }
+READ8_MEMBER(isa16_stealth3d2kpro_device::input_port_0_r ) { return 0xff; } //return machine().root_device().ioport("IN0")->read(); }
void isa16_stealth3d2kpro_device::device_start()
{
diff --git a/src/devices/bus/isa/svga_trident.cpp b/src/devices/bus/isa/svga_trident.cpp
index 39eba2e5c95..88223bff1a1 100644
--- a/src/devices/bus/isa/svga_trident.cpp
+++ b/src/devices/bus/isa/svga_trident.cpp
@@ -67,7 +67,7 @@ isa16_svga_tgui9680_device::isa16_svga_tgui9680_device(const machine_config &mco
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
-READ8_MEMBER(isa16_svga_tgui9680_device::input_port_0_r ) { return 0xff; } //return space.machine().root_device().ioport("IN0")->read(); }
+READ8_MEMBER(isa16_svga_tgui9680_device::input_port_0_r ) { return 0xff; } //return machine().root_device().ioport("IN0")->read(); }
void isa16_svga_tgui9680_device::device_start()
{
diff --git a/src/devices/bus/isa/svga_tseng.cpp b/src/devices/bus/isa/svga_tseng.cpp
index 52ac79c832b..91a88416c20 100644
--- a/src/devices/bus/isa/svga_tseng.cpp
+++ b/src/devices/bus/isa/svga_tseng.cpp
@@ -66,7 +66,7 @@ isa8_svga_et4k_device::isa8_svga_et4k_device(const machine_config &mconfig, cons
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
-READ8_MEMBER(isa8_svga_et4k_device::input_port_0_r ) { return 0xff; } //return space.machine().root_device().ioport("IN0")->read(); }
+READ8_MEMBER(isa8_svga_et4k_device::input_port_0_r ) { return 0xff; } //return machine().root_device().ioport("IN0")->read(); }
void isa8_svga_et4k_device::device_start()
{
diff --git a/src/devices/bus/isa/vga.cpp b/src/devices/bus/isa/vga.cpp
index 8919e742c94..604d2b13eb7 100644
--- a/src/devices/bus/isa/vga.cpp
+++ b/src/devices/bus/isa/vga.cpp
@@ -56,7 +56,7 @@ isa8_vga_device::isa8_vga_device(const machine_config &mconfig, const char *tag,
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
-READ8_MEMBER( isa8_vga_device::input_port_0_r ) { return 0xff; } //return space.machine().root_device().ioport("IN0")->read(); }
+READ8_MEMBER( isa8_vga_device::input_port_0_r ) { return 0xff; } //return machine().root_device().ioport("IN0")->read(); }
void isa8_vga_device::device_start()
{
diff --git a/src/devices/bus/isa/vga_ati.cpp b/src/devices/bus/isa/vga_ati.cpp
index 02143c9c4ad..b9cf8af71a1 100644
--- a/src/devices/bus/isa/vga_ati.cpp
+++ b/src/devices/bus/isa/vga_ati.cpp
@@ -157,9 +157,9 @@ isa16_vga_mach64_device::isa16_vga_mach64_device(const machine_config &mconfig,
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
-READ8_MEMBER(isa16_vga_gfxultra_device::input_port_0_r ) { return 0xff; } //return space.machine().root_device().ioport("IN0")->read(); }
-READ8_MEMBER(isa16_vga_gfxultrapro_device::input_port_0_r ) { return 0xff; } //return space.machine().root_device().ioport("IN0")->read(); }
-READ8_MEMBER(isa16_vga_mach64_device::input_port_0_r ) { return 0xff; } //return space.machine().root_device().ioport("IN0")->read(); }
+READ8_MEMBER(isa16_vga_gfxultra_device::input_port_0_r ) { return 0xff; } //return machine().root_device().ioport("IN0")->read(); }
+READ8_MEMBER(isa16_vga_gfxultrapro_device::input_port_0_r ) { return 0xff; } //return machine().root_device().ioport("IN0")->read(); }
+READ8_MEMBER(isa16_vga_mach64_device::input_port_0_r ) { return 0xff; } //return machine().root_device().ioport("IN0")->read(); }
void isa16_vga_gfxultra_device::device_start()
{
diff --git a/src/devices/bus/megadrive/rom.cpp b/src/devices/bus/megadrive/rom.cpp
index 962033ab5c9..b508b67a036 100644
--- a/src/devices/bus/megadrive/rom.cpp
+++ b/src/devices/bus/megadrive/rom.cpp
@@ -628,47 +628,47 @@ READ16_MEMBER(md_rom_chinf3_device::read)
04dc10 chifi3, prot_r? 2800
04cefa chifi3, prot_r? 65262
*/
- if (space.machine().device("maincpu")->safe_pc() == 0x01782) // makes 'VS' screen appear
+ if (machine().device("maincpu")->safe_pc() == 0x01782) // makes 'VS' screen appear
{
- retdat = space.machine().device("maincpu")->state().state_int(M68K_D3) & 0xff;
+ retdat = machine().device("maincpu")->state().state_int(M68K_D3) & 0xff;
retdat <<= 8;
return retdat;
}
- else if (space.machine().device("maincpu")->safe_pc() == 0x1c24) // background gfx etc.
+ else if (machine().device("maincpu")->safe_pc() == 0x1c24) // background gfx etc.
{
- retdat = space.machine().device("maincpu")->state().state_int(M68K_D3) & 0xff;
+ retdat = machine().device("maincpu")->state().state_int(M68K_D3) & 0xff;
retdat <<= 8;
return retdat;
}
- else if (space.machine().device("maincpu")->safe_pc() == 0x10c4a) // unknown
+ else if (machine().device("maincpu")->safe_pc() == 0x10c4a) // unknown
{
- return space.machine().rand();
+ return machine().rand();
}
- else if (space.machine().device("maincpu")->safe_pc() == 0x10c50) // unknown
+ else if (machine().device("maincpu")->safe_pc() == 0x10c50) // unknown
{
- return space.machine().rand();
+ return machine().rand();
}
- else if (space.machine().device("maincpu")->safe_pc() == 0x10c52) // relates to the game speed..
+ else if (machine().device("maincpu")->safe_pc() == 0x10c52) // relates to the game speed..
{
- retdat = space.machine().device("maincpu")->state().state_int(M68K_D4) & 0xff;
+ retdat = machine().device("maincpu")->state().state_int(M68K_D4) & 0xff;
retdat <<= 8;
return retdat;
}
- else if (space.machine().device("maincpu")->safe_pc() == 0x061ae)
+ else if (machine().device("maincpu")->safe_pc() == 0x061ae)
{
- retdat = space.machine().device("maincpu")->state().state_int(M68K_D3) & 0xff;
+ retdat = machine().device("maincpu")->state().state_int(M68K_D3) & 0xff;
retdat <<= 8;
return retdat;
}
- else if (space.machine().device("maincpu")->safe_pc() == 0x061b0)
+ else if (machine().device("maincpu")->safe_pc() == 0x061b0)
{
- retdat = space.machine().device("maincpu")->state().state_int(M68K_D3) & 0xff;
+ retdat = machine().device("maincpu")->state().state_int(M68K_D3) & 0xff;
retdat <<= 8;
return retdat;
}
else
{
- logerror("%06x chifi3, prot_r? %04x\n", space.machine().device("maincpu")->safe_pc(), offset);
+ logerror("%06x chifi3, prot_r? %04x\n", machine().device("maincpu")->safe_pc(), offset);
}
return 0;
}
@@ -1304,7 +1304,7 @@ READ16_MEMBER(md_rom_topf_device::read)
if (offset == 0x6f5344/2)
{
if (space.device().safe_pc()==0x4C94E)
- return space.machine().device("maincpu")->state().state_int((M68K_D0)) & 0xff;
+ return machine().device("maincpu")->state().state_int((M68K_D0)) & 0xff;
else
{
m_latch++;
diff --git a/src/devices/bus/msx_cart/dooly.cpp b/src/devices/bus/msx_cart/dooly.cpp
index 389e0c3da77..d1d3ad9ff39 100644
--- a/src/devices/bus/msx_cart/dooly.cpp
+++ b/src/devices/bus/msx_cart/dooly.cpp
@@ -45,7 +45,7 @@ READ8_MEMBER(msx_cart_dooly_device::read_cart)
switch (m_prot)
{
case 0x04:
- data = BITSWAP8(data, 7, 6, 5, 4, 3, 1, 0, 2);
+ data = bitswap<8>(data, 7, 6, 5, 4, 3, 1, 0, 2);
break;
}
return data;
diff --git a/src/devices/bus/neogeo/boot_kof10th.cpp b/src/devices/bus/neogeo/boot_kof10th.cpp
index 6f31cf6717a..167692f986d 100644
--- a/src/devices/bus/neogeo/boot_kof10th.cpp
+++ b/src/devices/bus/neogeo/boot_kof10th.cpp
@@ -102,7 +102,7 @@ WRITE16_MEMBER(neogeo_kof10th_cart_device::protection_w)
if (!m_cart_ram[0xffe])
COMBINE_DATA(&m_cart_ram2[(0x00000/2) + (offset & 0xffff)]); // Write to RAM bank A
else
- m_fixed[offset] = BITSWAP8(data, 7,6,0,4,3,2,1,5); // Write S data on-the-fly
+ m_fixed[offset] = bitswap<8>(data, 7,6,0,4,3,2,1,5); // Write S data on-the-fly
}
else if (offset >= 0xfe000/2)
{
diff --git a/src/devices/bus/neogeo/prot_cmc.cpp b/src/devices/bus/neogeo/prot_cmc.cpp
index 336bb543a21..77591827f54 100644
--- a/src/devices/bus/neogeo/prot_cmc.cpp
+++ b/src/devices/bus/neogeo/prot_cmc.cpp
@@ -689,15 +689,15 @@ int cmc_prot_device::m1_address_scramble(int address, uint16_t key)
int block = (address >> 16) & 7;
int aux = address & 0xffff;
- aux ^= BITSWAP16(key,12,0,2,4,8,15,7,13,10,1,3,6,11,9,14,5);
- aux = BITSWAP16(aux,
+ aux ^= bitswap<16>(key,12,0,2,4,8,15,7,13,10,1,3,6,11,9,14,5);
+ aux = bitswap<16>(aux,
p1[block][15], p1[block][14], p1[block][13], p1[block][12],
p1[block][11], p1[block][10], p1[block][9], p1[block][8],
p1[block][7], p1[block][6], p1[block][5], p1[block][4],
p1[block][3], p1[block][2], p1[block][1], p1[block][0]);
aux ^= m1_address_0_7_xor[(aux >> 8) & 0xff];
aux ^= m1_address_8_15_xor[aux & 0xff] << 8;
- aux = BITSWAP16(aux, 7,15,14,6,5,13,12,4,11,3,10,2,9,1,8,0);
+ aux = bitswap<16>(aux, 7,15,14,6,5,13,12,4,11,3,10,2,9,1,8,0);
return (block << 16) | aux;
}
diff --git a/src/devices/bus/neogeo/prot_cthd.cpp b/src/devices/bus/neogeo/prot_cthd.cpp
index dd641e64537..d2c427d6ac7 100644
--- a/src/devices/bus/neogeo/prot_cthd.cpp
+++ b/src/devices/bus/neogeo/prot_cthd.cpp
@@ -189,7 +189,7 @@ void cthd_prot_device::ct2k3sp_sx_decrypt( uint8_t* fixedrom, uint32_t fixedrom_
for (int i = 0; i < rom_size; i++)
{
- int ofst = BITSWAP24((i & 0x1ffff), 23, 22, 21, 20, 19, 18, 17, 3,
+ int ofst = bitswap<24>((i & 0x1ffff), 23, 22, 21, 20, 19, 18, 17, 3,
0, 1, 4, 2, 13, 14, 16, 15,
5, 6, 11, 10, 9, 8, 7, 12 );
ofst += (i >> 17) << 17;
@@ -275,7 +275,7 @@ void cthd_prot_device::patch_ct2k3sa(uint8_t* cpurom, uint32_t cpurom_size)
/* Matrimelee / Shin Gouketsuji Ichizoku Toukon (bootleg) */
-#define MATRIMBLZ80(i) (i ^ (BITSWAP8(i & 0x3,4,3,1,2,0,7,6,5) << 8))
+#define MATRIMBLZ80(i) (i ^ (bitswap<8>(i & 0x3,4,3,1,2,0,7,6,5) << 8))
void cthd_prot_device::matrimbl_decrypt(uint8_t* sprrom, uint32_t sprrom_size, uint8_t* audiorom, uint32_t audiorom_size)
{
diff --git a/src/devices/bus/neogeo/prot_kof2k3bl.cpp b/src/devices/bus/neogeo/prot_kof2k3bl.cpp
index 5afe9a0e548..456f164c042 100644
--- a/src/devices/bus/neogeo/prot_kof2k3bl.cpp
+++ b/src/devices/bus/neogeo/prot_kof2k3bl.cpp
@@ -102,7 +102,7 @@ void kof2k3bl_prot_device::pl_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size)
{
memcpy(&tmp[0], &rom16[i], 0x100000);
for (int j = 0; j < 0x100000/2; j++)
- rom16[i+j] = tmp[BITSWAP24(j,23,22,21,20,19,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18)];
+ rom16[i+j] = tmp[bitswap<24>(j,23,22,21,20,19,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18)];
}
/* patched by Altera protection chip on PCB */
@@ -124,7 +124,7 @@ void kof2k3bl_prot_device::upl_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size)
uint8_t *buf = cpurom + 0xd0610;
for (int i = 0; i < 0x2000 / 2; i++)
{
- int ofst = (i & 0xff00) + BITSWAP8((i & 0x00ff), 7, 6, 0, 4, 3, 2, 1, 5);
+ int ofst = (i & 0xff00) + bitswap<8>((i & 0x00ff), 7, 6, 0, 4, 3, 2, 1, 5);
memcpy(&rom[i * 2], &buf[ofst * 2], 2);
}
diff --git a/src/devices/bus/neogeo/prot_misc.cpp b/src/devices/bus/neogeo/prot_misc.cpp
index 54b9c5b8792..47150bbabee 100644
--- a/src/devices/bus/neogeo/prot_misc.cpp
+++ b/src/devices/bus/neogeo/prot_misc.cpp
@@ -77,7 +77,7 @@ void neoboot_prot_device::sx_decrypt(uint8_t* fixed, uint32_t fixed_size, int va
else if (value == 2)
{
for (int i = 0; i < sx_size; i++)
- rom[i] = BITSWAP8(rom[i], 7, 6, 0, 4, 3, 2, 1, 5);
+ rom[i] = bitswap<8>(rom[i], 7, 6, 0, 4, 3, 2, 1, 5);
}
}
@@ -139,7 +139,7 @@ void neoboot_prot_device::kf2k5uni_px_decrypt(uint8_t* cpurom, uint32_t cpurom_s
{
for (int j = 0; j < 0x80; j += 2)
{
- int ofst = BITSWAP8(j, 0, 3, 4, 5, 6, 1, 2, 7);
+ int ofst = bitswap<8>(j, 0, 3, 4, 5, 6, 1, 2, 7);
memcpy(&dst[j], src + i + ofst, 2);
}
memcpy(src + i, &dst[0], 0x80);
@@ -154,7 +154,7 @@ void neoboot_prot_device::kf2k5uni_sx_decrypt(uint8_t* fixedrom, uint32_t fixedr
uint8_t *srom = fixedrom;
for (int i = 0; i < 0x20000; i++)
- srom[i] = BITSWAP8(srom[i], 4, 5, 6, 7, 0, 1, 2, 3);
+ srom[i] = bitswap<8>(srom[i], 4, 5, 6, 7, 0, 1, 2, 3);
}
void neoboot_prot_device::kf2k5uni_mx_decrypt(uint8_t* audiorom, uint32_t audiorom_size)
@@ -162,7 +162,7 @@ void neoboot_prot_device::kf2k5uni_mx_decrypt(uint8_t* audiorom, uint32_t audior
uint8_t *mrom = audiorom;
for (int i = 0; i < 0x30000; i++)
- mrom[i] = BITSWAP8(mrom[i], 4, 5, 6, 7, 0, 1, 2, 3);
+ mrom[i] = bitswap<8>(mrom[i], 4, 5, 6, 7, 0, 1, 2, 3);
}
@@ -187,7 +187,7 @@ void neoboot_prot_device::lans2004_vx_decrypt(uint8_t* ymsndrom, uint32_t ymsndr
{
uint8_t *rom = ymsndrom;
for (int i = 0; i < 0xA00000; i++)
- rom[i] = BITSWAP8(rom[i], 0, 1, 5, 4, 3, 2, 6, 7);
+ rom[i] = bitswap<8>(rom[i], 0, 1, 5, 4, 3, 2, 6, 7);
}
void neoboot_prot_device::lans2004_decrypt_68k(uint8_t* cpurom, uint32_t cpurom_size)
@@ -239,7 +239,7 @@ void neoboot_prot_device::samsho5b_px_decrypt(uint8_t* cpurom, uint32_t cpurom_s
for (int i = 0; i < px_size / 2; i++)
{
- int ofst = BITSWAP8((i & 0x000ff), 7, 6, 5, 4, 3, 0, 1, 2);
+ int ofst = bitswap<8>((i & 0x000ff), 7, 6, 5, 4, 3, 0, 1, 2);
ofst += (i & 0xfffff00);
ofst ^= 0x060005;
@@ -259,7 +259,7 @@ void neoboot_prot_device::samsho5b_vx_decrypt(uint8_t* ymsndrom, uint32_t ymsndr
uint8_t *rom = ymsndrom;
for (int i = 0; i < vx_size; i++)
- rom[i] = BITSWAP8(rom[i], 0, 1, 5, 4, 3, 2, 6, 7);
+ rom[i] = bitswap<8>(rom[i], 0, 1, 5, 4, 3, 2, 6, 7);
}
@@ -381,7 +381,7 @@ void neoboot_prot_device::svcboot_px_decrypt(uint8_t* cpurom, uint32_t cpurom_si
for (int i = 0; i < size / 2; i++)
{
- int ofst = BITSWAP8((i & 0x0000ff), 7, 6, 1, 0, 3, 2, 5, 4);
+ int ofst = bitswap<8>((i & 0x0000ff), 7, 6, 1, 0, 3, 2, 5, 4);
ofst += (i & 0xffff00);
memcpy(&src[i * 2], &dst[ofst * 2], 0x02);
}
@@ -410,7 +410,7 @@ void neoboot_prot_device::svcboot_cx_decrypt(uint8_t* sprrom, uint32_t sprrom_si
int bit1 = bitswap4_tbl[idx][1];
int bit2 = bitswap4_tbl[idx][2];
int bit3 = bitswap4_tbl[idx][3];
- int ofst = BITSWAP8((i & 0x0000ff), 7, 6, 5, 4, bit3, bit2, bit1, bit0);
+ int ofst = bitswap<8>((i & 0x0000ff), 7, 6, 5, 4, bit3, bit2, bit1, bit0);
ofst += (i & 0xfffff00);
memcpy(&src[i * 0x80], &dst[ofst * 0x80], 0x80);
}
@@ -429,7 +429,7 @@ void neoboot_prot_device::svcplus_px_decrypt(uint8_t* cpurom, uint32_t cpurom_si
memcpy(&dst[0], src, size);
for (int i = 0; i < size / 2; i++)
{
- int ofst = BITSWAP24((i & 0xfffff), 0x17, 0x16, 0x15, 0x14, 0x13, 0x00, 0x01, 0x02,
+ int ofst = bitswap<24>((i & 0xfffff), 0x17, 0x16, 0x15, 0x14, 0x13, 0x00, 0x01, 0x02,
0x0f, 0x0e, 0x0d, 0x0c, 0x0b, 0x0a, 0x09, 0x08,
0x07, 0x06, 0x05, 0x04, 0x03, 0x10, 0x11, 0x12);
ofst ^= 0x0f0007;
@@ -478,7 +478,7 @@ void neoboot_prot_device::svcsplus_px_decrypt(uint8_t* cpurom, uint32_t cpurom_s
memcpy(&dst[0], src, size);
for (int i = 0; i < size / 2; i++)
{
- int ofst = BITSWAP16((i & 0x007fff), 0x0f, 0x00, 0x08, 0x09, 0x0b, 0x0a, 0x0c, 0x0d,
+ int ofst = bitswap<16>((i & 0x007fff), 0x0f, 0x00, 0x08, 0x09, 0x0b, 0x0a, 0x0c, 0x0d,
0x04, 0x03, 0x01, 0x07, 0x06, 0x02, 0x05, 0x0e);
ofst += (i & 0x078000);
@@ -524,7 +524,7 @@ void neoboot_prot_device::kof2002b_gfx_decrypt(uint8_t *src, int size)
for (int j = 0; j < 0x200; j++)
{
int n = (j & 0x38) >> 3;
- int ofst = BITSWAP16(j, 15, 14, 13, 12, 11, 10, 9, t[n][0], t[n][1], t[n][2], 5, 4, 3, t[n][3], t[n][4], t[n][5]);
+ int ofst = bitswap<16>(j, 15, 14, 13, 12, 11, 10, 9, t[n][0], t[n][1], t[n][2], 5, 4, 3, t[n][3], t[n][4], t[n][5]);
memcpy(src + i + ofst * 128, &dst[j * 128], 128);
}
}
@@ -544,7 +544,7 @@ void neoboot_prot_device::kf2k2mp_decrypt(uint8_t* cpurom, uint32_t cpurom_size)
{
for (int j = 0; j < 0x80 / 2; j++)
{
- int ofst = BITSWAP8( j, 6, 7, 2, 3, 4, 5, 0, 1 );
+ int ofst = bitswap<8>( j, 6, 7, 2, 3, 4, 5, 0, 1 );
memcpy(dst + j * 2, src + i + ofst * 2, 2);
}
memcpy(src + i, dst, 0x80);
@@ -580,7 +580,7 @@ void neoboot_prot_device::kof10th_decrypt(uint8_t* cpurom, uint32_t cpurom_size)
for (int i = 0; i < 0x900000; i++)
{
- int j = BITSWAP24(i,23,22,21,20,19,18,17,16,15,14,13,12,11,2,9,8,7,1,5,4,3,10,6,0);
+ int j = bitswap<24>(i,23,22,21,20,19,18,17,16,15,14,13,12,11,2,9,8,7,1,5,4,3,10,6,0);
src[j] = dst[i];
}
diff --git a/src/devices/bus/neogeo/prot_pcm2.cpp b/src/devices/bus/neogeo/prot_pcm2.cpp
index 80fa21eafe0..82f3175eb8b 100644
--- a/src/devices/bus/neogeo/prot_pcm2.cpp
+++ b/src/devices/bus/neogeo/prot_pcm2.cpp
@@ -82,7 +82,7 @@ void pcm2_prot_device::swap(uint8_t* ymrom, uint32_t ymsize, int value)
for (int i = 0; i < 0x1000000; i++)
{
- j = BITSWAP24(i,23,22,21,20,19,18,17,0,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,16);
+ j = bitswap<24>(i,23,22,21,20,19,18,17,0,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,16);
j ^= addrs[value][1];
d = ((i + addrs[value][0]) & 0xffffff);
src[j] = buf[d] ^ xordata[value][j & 0x7];
diff --git a/src/devices/bus/neogeo/prot_pvc.cpp b/src/devices/bus/neogeo/prot_pvc.cpp
index 99c70142222..8e290596576 100644
--- a/src/devices/bus/neogeo/prot_pvc.cpp
+++ b/src/devices/bus/neogeo/prot_pvc.cpp
@@ -112,7 +112,7 @@ void pvc_prot_device::mslug5_decrypt_68k(uint8_t* rom, uint32_t size)
for (int i = 0x100000; i < 0x0800000; i += 4)
{
uint16_t rom16 = rom[BYTE_XOR_LE(i+1)] | rom[BYTE_XOR_LE(i+2)] << 8;
- rom16 = BITSWAP16(rom16, 15, 14, 13, 12, 10, 11, 8, 9, 6, 7, 4, 5, 3, 2, 1, 0);
+ rom16 = bitswap<16>(rom16, 15, 14, 13, 12, 10, 11, 8, 9, 6, 7, 4, 5, 3, 2, 1, 0);
rom[BYTE_XOR_LE(i+1)] = rom16 & 0xff;
rom[BYTE_XOR_LE(i+2)] = rom16 >> 8;
}
@@ -120,12 +120,12 @@ void pvc_prot_device::mslug5_decrypt_68k(uint8_t* rom, uint32_t size)
memcpy(&buf[0], rom, rom_size);
for (int i = 0; i < 0x0100000 / 0x10000; i++)
{
- int ofst = (i & 0xf0) + BITSWAP8((i & 0x0f), 7, 6, 5, 4, 1, 0, 3, 2);
+ int ofst = (i & 0xf0) + bitswap<8>((i & 0x0f), 7, 6, 5, 4, 1, 0, 3, 2);
memcpy(&rom[i * 0x10000], &buf[ofst * 0x10000], 0x10000);
}
for (int i = 0x100000; i < 0x800000; i += 0x100)
{
- int ofst = (i & 0xf000ff) + ((i & 0x000f00) ^ 0x00700) + (BITSWAP8(((i & 0x0ff000) >> 12), 5, 4, 7, 6, 1, 0, 3, 2) << 12);
+ int ofst = (i & 0xf000ff) + ((i & 0x000f00) ^ 0x00700) + (bitswap<8>(((i & 0x0ff000) >> 12), 5, 4, 7, 6, 1, 0, 3, 2) << 12);
memcpy(&rom[i], &buf[ofst], 0x100);
}
@@ -151,7 +151,7 @@ void pvc_prot_device::svc_px_decrypt(uint8_t* rom, uint32_t size)
for (int i = 0x100000; i < 0x0800000; i += 4)
{
uint16_t rom16 = rom[BYTE_XOR_LE(i+1)] | rom[BYTE_XOR_LE(i+2)] << 8;
- rom16 = BITSWAP16(rom16, 15, 14, 13, 12, 10, 11, 8, 9, 6, 7, 4, 5, 3, 2, 1, 0);
+ rom16 = bitswap<16>(rom16, 15, 14, 13, 12, 10, 11, 8, 9, 6, 7, 4, 5, 3, 2, 1, 0);
rom[BYTE_XOR_LE(i+1)] = rom16 & 0xff;
rom[BYTE_XOR_LE(i+2)] = rom16 >> 8;
}
@@ -159,13 +159,13 @@ void pvc_prot_device::svc_px_decrypt(uint8_t* rom, uint32_t size)
memcpy(&buf[0], rom, rom_size);
for (int i = 0; i < 0x0100000 / 0x10000; i++)
{
- int ofst = (i & 0xf0) + BITSWAP8((i & 0x0f), 7, 6, 5, 4, 2, 3, 0, 1);
+ int ofst = (i & 0xf0) + bitswap<8>((i & 0x0f), 7, 6, 5, 4, 2, 3, 0, 1);
memcpy(&rom[i * 0x10000], &buf[ofst * 0x10000], 0x10000);
}
for (int i = 0x100000; i < 0x800000; i += 0x100)
{
- int ofst = (i & 0xf000ff) + ((i & 0x000f00) ^ 0x00a00) + (BITSWAP8(((i & 0x0ff000) >> 12), 4, 5, 6, 7, 1, 0, 3, 2) << 12);
+ int ofst = (i & 0xf000ff) + ((i & 0x000f00) ^ 0x00a00) + (bitswap<8>(((i & 0x0ff000) >> 12), 4, 5, 6, 7, 1, 0, 3, 2) << 12);
memcpy(&rom[i], &buf[ofst], 0x100);
}
memcpy(&buf[0], rom, rom_size );
@@ -189,20 +189,20 @@ void pvc_prot_device::kf2k3pcb_decrypt_68k(uint8_t* rom, uint32_t size)
for (int i = 0x100000; i < 0x800000; i += 4)
{
uint16_t rom16 = rom[BYTE_XOR_LE(i+1)] | rom[BYTE_XOR_LE(i+2)] << 8;
- rom16 = BITSWAP16(rom16, 15, 14, 13, 12, 4, 5, 6, 7, 8, 9, 10, 11, 3, 2, 1, 0);
+ rom16 = bitswap<16>(rom16, 15, 14, 13, 12, 4, 5, 6, 7, 8, 9, 10, 11, 3, 2, 1, 0);
rom[BYTE_XOR_LE(i+1)] = rom16 & 0xff;
rom[BYTE_XOR_LE(i+2)] = rom16 >> 8;
}
for (int i = 0; i < 0x0100000 / 0x10000; i++)
{
- int ofst = (i & 0xf0) + BITSWAP8((i & 0x0f), 7, 6, 5, 4, 1, 0, 3, 2);
+ int ofst = (i & 0xf0) + bitswap<8>((i & 0x0f), 7, 6, 5, 4, 1, 0, 3, 2);
memcpy(&buf[i * 0x10000], &rom[ofst * 0x10000], 0x10000);
}
for (int i = 0x100000; i < 0x900000; i += 0x100)
{
- int ofst = (i & 0xf000ff) + ((i & 0x000f00) ^ 0x00300) + (BITSWAP8(((i & 0x0ff000) >> 12), 4, 5, 6, 7, 1, 0, 3, 2) << 12);
+ int ofst = (i & 0xf000ff) + ((i & 0x000f00) ^ 0x00300) + (bitswap<8>(((i & 0x0ff000) >> 12), 4, 5, 6, 7, 1, 0, 3, 2) << 12);
memcpy(&buf[i], &rom[ofst], 0x100);
}
memcpy(&rom[0x000000], &buf[0x000000], 0x100000);
@@ -230,20 +230,20 @@ void pvc_prot_device::kof2003_decrypt_68k(uint8_t* rom, uint32_t size)
for (int i = 0x100000; i < 0x800000; i += 4)
{
uint16_t rom16 = rom[BYTE_XOR_LE(i+1)] | rom[BYTE_XOR_LE(i+2)] << 8;
- rom16 = BITSWAP16(rom16, 15, 14, 13, 12, 5, 4, 7, 6, 9, 8, 11, 10, 3, 2, 1, 0);
+ rom16 = bitswap<16>(rom16, 15, 14, 13, 12, 5, 4, 7, 6, 9, 8, 11, 10, 3, 2, 1, 0);
rom[BYTE_XOR_LE(i+1)] = rom16 & 0xff;
rom[BYTE_XOR_LE(i+2)] = rom16 >> 8;
}
for (int i = 0; i < 0x0100000 / 0x10000; i++)
{
- int ofst = (i & 0xf0) + BITSWAP8((i & 0x0f), 7, 6, 5, 4, 0, 1, 2, 3);
+ int ofst = (i & 0xf0) + bitswap<8>((i & 0x0f), 7, 6, 5, 4, 0, 1, 2, 3);
memcpy(&buf[i * 0x10000], &rom[ofst * 0x10000], 0x10000);
}
for (int i = 0x100000; i < 0x900000; i += 0x100)
{
- int ofst = (i & 0xf000ff) + ((i & 0x000f00) ^ 0x00800) + (BITSWAP8(((i & 0x0ff000) >> 12), 4, 5, 6, 7, 1, 0, 3, 2) << 12);
+ int ofst = (i & 0xf000ff) + ((i & 0x000f00) ^ 0x00800) + (bitswap<8>(((i & 0x0ff000) >> 12), 4, 5, 6, 7, 1, 0, 3, 2) << 12);
memcpy(&buf[i], &rom[ofst], 0x100);
}
memcpy(&rom[0x000000], &buf[0x000000], 0x100000);
@@ -271,19 +271,19 @@ void pvc_prot_device::kof2003h_decrypt_68k(uint8_t* rom, uint32_t size)
for (int i = 0x100000; i < 0x800000; i += 4)
{
uint16_t rom16 = rom[BYTE_XOR_LE(i+1)] | rom[BYTE_XOR_LE(i+2)] << 8;
- rom16 = BITSWAP16(rom16, 15, 14, 13, 12, 10, 11, 8, 9, 6, 7, 4, 5, 3, 2, 1, 0);
+ rom16 = bitswap<16>(rom16, 15, 14, 13, 12, 10, 11, 8, 9, 6, 7, 4, 5, 3, 2, 1, 0);
rom[BYTE_XOR_LE(i+1)] = rom16 & 0xff;
rom[BYTE_XOR_LE(i+2)] = rom16 >> 8;
}
for (int i = 0; i < 0x0100000 / 0x10000; i++)
{
- int ofst = (i & 0xf0) + BITSWAP8((i & 0x0f), 7, 6, 5, 4, 1, 0, 3, 2);
+ int ofst = (i & 0xf0) + bitswap<8>((i & 0x0f), 7, 6, 5, 4, 1, 0, 3, 2);
memcpy(&buf[i * 0x10000], &rom[ofst * 0x10000], 0x10000);
}
for (int i = 0x100000; i < 0x900000; i += 0x100)
{
- int ofst = (i & 0xf000ff) + ((i & 0x000f00) ^ 0x00400) + (BITSWAP8(((i & 0x0ff000) >> 12), 6, 7, 4, 5, 0, 1, 2, 3) << 12);
+ int ofst = (i & 0xf000ff) + ((i & 0x000f00) ^ 0x00400) + (bitswap<8>(((i & 0x0ff000) >> 12), 6, 7, 4, 5, 0, 1, 2, 3) << 12);
memcpy(&buf[i], &rom[ofst], 0x100);
}
memcpy(&rom[0x000000], &buf[0x000000], 0x100000);
diff --git a/src/devices/bus/neogeo/prot_sma.cpp b/src/devices/bus/neogeo/prot_sma.cpp
index 1b6e2322cd9..bfd15ab208a 100644
--- a/src/devices/bus/neogeo/prot_sma.cpp
+++ b/src/devices/bus/neogeo/prot_sma.cpp
@@ -398,7 +398,7 @@ void sma_prot_device::kof99_decrypt_68k(uint8_t* base)
// swap data lines on the whole ROMs
for (int i = 0; i < 0x800000/2; i++)
- rom[i] = BITSWAP16(rom[i],13,7,3,0,9,4,5,6,1,12,8,14,10,11,2,15);
+ rom[i] = bitswap<16>(rom[i],13,7,3,0,9,4,5,6,1,12,8,14,10,11,2,15);
// swap address lines for the banked part
for (int i = 0; i < 0x600000/2; i += 0x800/2)
@@ -406,13 +406,13 @@ void sma_prot_device::kof99_decrypt_68k(uint8_t* base)
uint16_t buffer[0x800/2];
memcpy(buffer, &rom[i], 0x800);
for (int j = 0; j < 0x800/2; j++)
- rom[i+j] = buffer[BITSWAP24(j,23,22,21,20,19,18,17,16,15,14,13,12,11,10,6,2,4,9,8,3,1,7,0,5)];
+ rom[i+j] = buffer[bitswap<24>(j,23,22,21,20,19,18,17,16,15,14,13,12,11,10,6,2,4,9,8,3,1,7,0,5)];
}
// swap address lines & relocate fixed part
rom = (uint16_t *)base;
for (int i = 0; i < 0x0c0000/2; i++)
- rom[i] = rom[0x700000/2 + BITSWAP24(i,23,22,21,20,19,18,11,6,14,17,16,5,8,10,12,0,4,3,2,7,9,15,13,1)];
+ rom[i] = rom[0x700000/2 + bitswap<24>(i,23,22,21,20,19,18,11,6,14,17,16,5,8,10,12,0,4,3,2,7,9,15,13,1)];
}
@@ -423,12 +423,12 @@ void sma_prot_device::garou_decrypt_68k(uint8_t* base)
// swap data lines on the whole ROMs
for (int i = 0; i < 0x800000/2; i++)
- rom[i] = BITSWAP16(rom[i],13,12,14,10,8,2,3,1,5,9,11,4,15,0,6,7);
+ rom[i] = bitswap<16>(rom[i],13,12,14,10,8,2,3,1,5,9,11,4,15,0,6,7);
// swap address lines & relocate fixed part
rom = (uint16_t *)base;
for (int i = 0; i < 0x0c0000/2; i++)
- rom[i] = rom[0x710000/2 + BITSWAP24(i,23,22,21,20,19,18,4,5,16,14,7,9,6,13,17,15,3,1,2,12,11,8,10,0)];
+ rom[i] = rom[0x710000/2 + bitswap<24>(i,23,22,21,20,19,18,4,5,16,14,7,9,6,13,17,15,3,1,2,12,11,8,10,0)];
// swap address lines for the banked part
rom = (uint16_t *)(base + 0x100000);
@@ -437,7 +437,7 @@ void sma_prot_device::garou_decrypt_68k(uint8_t* base)
uint16_t buffer[0x8000/2];
memcpy(buffer, &rom[i], 0x8000);
for (int j = 0; j < 0x8000/2; j++)
- rom[i+j] = buffer[BITSWAP24(j,23,22,21,20,19,18,17,16,15,14,9,4,8,3,13,6,2,7,0,12,1,11,10,5)];
+ rom[i+j] = buffer[bitswap<24>(j,23,22,21,20,19,18,17,16,15,14,9,4,8,3,13,6,2,7,0,12,1,11,10,5)];
}
}
@@ -449,12 +449,12 @@ void sma_prot_device::garouh_decrypt_68k(uint8_t* base)
// swap data lines on the whole ROMs
for (int i = 0; i < 0x800000/2; i++)
- rom[i] = BITSWAP16(rom[i],14,5,1,11,7,4,10,15,3,12,8,13,0,2,9,6);
+ rom[i] = bitswap<16>(rom[i],14,5,1,11,7,4,10,15,3,12,8,13,0,2,9,6);
// swap address lines & relocate fixed part
rom = (uint16_t *)base;
for (int i = 0; i < 0x0c0000/2; i++)
- rom[i] = rom[0x7f8000/2 + BITSWAP24(i,23,22,21,20,19,18,5,16,11,2,6,7,17,3,12,8,14,4,0,9,1,10,15,13)];
+ rom[i] = rom[0x7f8000/2 + bitswap<24>(i,23,22,21,20,19,18,5,16,11,2,6,7,17,3,12,8,14,4,0,9,1,10,15,13)];
// swap address lines for the banked part
rom = (uint16_t *)(base + 0x100000);
@@ -463,7 +463,7 @@ void sma_prot_device::garouh_decrypt_68k(uint8_t* base)
uint16_t buffer[0x8000/2];
memcpy(buffer, &rom[i], 0x8000);
for (int j = 0; j < 0x8000/2; j++)
- rom[i+j] = buffer[BITSWAP24(j,23,22,21,20,19,18,17,16,15,14,12,8,1,7,11,3,13,10,6,9,5,4,0,2)];
+ rom[i+j] = buffer[bitswap<24>(j,23,22,21,20,19,18,17,16,15,14,12,8,1,7,11,3,13,10,6,9,5,4,0,2)];
}
}
@@ -475,12 +475,12 @@ void sma_prot_device::mslug3_decrypt_68k(uint8_t* base)
// swap data lines on the whole ROMs
for (int i = 0; i < 0x800000/2; i++)
- rom[i] = BITSWAP16(rom[i],4,11,14,3,1,13,0,7,2,8,12,15,10,9,5,6);
+ rom[i] = bitswap<16>(rom[i],4,11,14,3,1,13,0,7,2,8,12,15,10,9,5,6);
// swap address lines & relocate fixed part
rom = (uint16_t *)base;
for (int i = 0; i < 0x0c0000/2; i++)
- rom[i] = rom[0x5d0000/2 + BITSWAP24(i,23,22,21,20,19,18,15,2,1,13,3,0,9,6,16,4,11,5,7,12,17,14,10,8)];
+ rom[i] = rom[0x5d0000/2 + bitswap<24>(i,23,22,21,20,19,18,15,2,1,13,3,0,9,6,16,4,11,5,7,12,17,14,10,8)];
// swap address lines for the banked part
rom = (uint16_t *)(base + 0x100000);
@@ -489,7 +489,7 @@ void sma_prot_device::mslug3_decrypt_68k(uint8_t* base)
uint16_t buffer[0x10000/2];
memcpy(buffer, &rom[i], 0x10000);
for (int j = 0; j < 0x10000/2; j++)
- rom[i+j] = buffer[BITSWAP24(j,23,22,21,20,19,18,17,16,15,2,11,0,14,6,4,13,8,9,3,10,7,5,12,1)];
+ rom[i+j] = buffer[bitswap<24>(j,23,22,21,20,19,18,17,16,15,2,11,0,14,6,4,13,8,9,3,10,7,5,12,1)];
}
}
@@ -501,7 +501,7 @@ void sma_prot_device::kof2000_decrypt_68k(uint8_t* base)
// swap data lines on the whole ROMs
for (int i = 0; i < 0x800000/2; i++)
- rom[i] = BITSWAP16(rom[i],12,8,11,3,15,14,7,0,10,13,6,5,9,2,1,4);
+ rom[i] = bitswap<16>(rom[i],12,8,11,3,15,14,7,0,10,13,6,5,9,2,1,4);
// swap address lines for the banked part
for (int i = 0; i < 0x63a000/2; i += 0x800/2)
@@ -509,11 +509,11 @@ void sma_prot_device::kof2000_decrypt_68k(uint8_t* base)
uint16_t buffer[0x800/2];
memcpy(buffer, &rom[i], 0x800);
for (int j = 0; j < 0x800/2; j++)
- rom[i+j] = buffer[BITSWAP24(j,23,22,21,20,19,18,17,16,15,14,13,12,11,10,4,1,3,8,6,2,7,0,9,5)];
+ rom[i+j] = buffer[bitswap<24>(j,23,22,21,20,19,18,17,16,15,14,13,12,11,10,4,1,3,8,6,2,7,0,9,5)];
}
// swap address lines & relocate fixed part
rom = (uint16_t *)base;
for (int i = 0; i < 0x0c0000/2; i++)
- rom[i] = rom[0x73a000/2 + BITSWAP24(i,23,22,21,20,19,18,8,4,15,13,3,14,16,2,6,17,7,12,10,0,5,11,1,9)];
+ rom[i] = rom[0x73a000/2 + bitswap<24>(i,23,22,21,20,19,18,8,4,15,13,3,14,16,2,6,17,7,12,10,0,5,11,1,9)];
}
diff --git a/src/devices/bus/neogeo/sbp.cpp b/src/devices/bus/neogeo/sbp.cpp
index f5c25a2210a..6b6920cb5e8 100644
--- a/src/devices/bus/neogeo/sbp.cpp
+++ b/src/devices/bus/neogeo/sbp.cpp
@@ -36,7 +36,7 @@ READ16_MEMBER( neogeo_sbp_cart_device::protection_r )
{
uint16_t* rom = (get_rom_size()) ? get_rom_base() : get_region_rom_base();
uint16_t origdata = rom[offset + (0x200/2)];
- uint16_t data = BITSWAP16(origdata, 11,10,9,8,15,14,13,12,3,2,1,0,7,6,5,4);
+ uint16_t data = bitswap<16>(origdata, 11,10,9,8,15,14,13,12,3,2,1,0,7,6,5,4);
int realoffset = 0x200 + (offset * 2);
logerror("sbp_lowerrom_r offset %08x data %04x\n", realoffset, data);
diff --git a/src/devices/bus/nes/jy.cpp b/src/devices/bus/nes/jy.cpp
index 38a30848859..191892ef544 100644
--- a/src/devices/bus/nes/jy.cpp
+++ b/src/devices/bus/nes/jy.cpp
@@ -296,7 +296,7 @@ READ8_MEMBER(nes_jy_typea_device::read_m)
inline uint8_t nes_jy_typea_device::unscramble(uint8_t bank)
{
- return BITSWAP8(bank & 0x7f,7,0,1,2,3,4,5,6);
+ return bitswap<8>(bank & 0x7f,7,0,1,2,3,4,5,6);
}
void nes_jy_typea_device::update_prg()
diff --git a/src/devices/bus/nes/mmc3_clones.cpp b/src/devices/bus/nes/mmc3_clones.cpp
index 5d776c5d86c..5c578c0fcbd 100644
--- a/src/devices/bus/nes/mmc3_clones.cpp
+++ b/src/devices/bus/nes/mmc3_clones.cpp
@@ -2565,7 +2565,7 @@ void nes_a9746_device::pcb_reset()
void nes_a9746_device::update_banks(uint8_t value)
{
- uint8_t bank = BITSWAP8(value & 0x3c,7,6,0,1,2,3,4,5);
+ uint8_t bank = bitswap<8>(value & 0x3c,7,6,0,1,2,3,4,5);
switch (m_reg[0])
{
diff --git a/src/devices/bus/nes/waixing.cpp b/src/devices/bus/nes/waixing.cpp
index f4d9c338f48..7e95102c029 100644
--- a/src/devices/bus/nes/waixing.cpp
+++ b/src/devices/bus/nes/waixing.cpp
@@ -929,7 +929,7 @@ READ8_MEMBER(nes_waixing_sh2_device::chr_r)
void nes_waixing_sec_device::prg_cb(int start, int bank)
{
if (m_reg)
- bank = BITSWAP8(bank & 0x1f,7,6,5,2,1,3,4,0);
+ bank = bitswap<8>(bank & 0x1f,7,6,5,2,1,3,4,0);
prg8_x(start, bank);
}
@@ -937,7 +937,7 @@ void nes_waixing_sec_device::prg_cb(int start, int bank)
void nes_waixing_sec_device::chr_cb(int start, int bank, int source)
{
if (m_reg)
- bank = BITSWAP8(bank, 5,4,2,6,7,3,1,0);
+ bank = bitswap<8>(bank, 5,4,2,6,7,3,1,0);
chr1_x(start, bank, source);
}
diff --git a/src/devices/bus/nubus/nubus_spec8.cpp b/src/devices/bus/nubus/nubus_spec8.cpp
index a8289667de6..1cc905670a6 100644
--- a/src/devices/bus/nubus/nubus_spec8.cpp
+++ b/src/devices/bus/nubus/nubus_spec8.cpp
@@ -257,7 +257,7 @@ WRITE32_MEMBER( nubus_spec8s3_device::spec8s3_w )
if (m_count == 3)
{
- int actual_color = BITSWAP8(m_clutoffs, 0, 1, 2, 3, 4, 5, 6, 7);
+ int actual_color = bitswap<8>(m_clutoffs, 0, 1, 2, 3, 4, 5, 6, 7);
// printf("RAMDAC: color %d = %02x %02x %02x (PC=%x)\n", actual_color, m_colors[0], m_colors[1], m_colors[2], space.device().safe_pc() );
m_palette[actual_color] = rgb_t(m_colors[0], m_colors[1], m_colors[2]);
diff --git a/src/devices/bus/nubus/pds30_procolor816.cpp b/src/devices/bus/nubus/pds30_procolor816.cpp
index 366eb8eb1b3..869e91986c0 100644
--- a/src/devices/bus/nubus/pds30_procolor816.cpp
+++ b/src/devices/bus/nubus/pds30_procolor816.cpp
@@ -272,7 +272,7 @@ WRITE32_MEMBER( nubus_procolor816_device::procolor816_w )
if (mem_mask == 0x00ff0000)
{
// printf("%08x to DAC control (PC=%x)\n", data, space.device().safe_pc());
- m_clutoffs = BITSWAP8((data>>16)&0xff, 0, 1, 2, 3, 4, 5, 6, 7);
+ m_clutoffs = bitswap<8>((data>>16)&0xff, 0, 1, 2, 3, 4, 5, 6, 7);
}
else if (mem_mask == 0x000000ff)
{
diff --git a/src/devices/bus/s100/wunderbus.cpp b/src/devices/bus/s100/wunderbus.cpp
index e0eec1b3b4f..1bd7df7cb2a 100644
--- a/src/devices/bus/s100/wunderbus.cpp
+++ b/src/devices/bus/s100/wunderbus.cpp
@@ -345,7 +345,7 @@ uint8_t s100_wunderbus_device::s100_sinp_r(address_space &space, offs_t offset)
*/
- data = BITSWAP8(m_10a->read(),0,1,2,3,4,5,6,7) & 0xfc;
+ data = bitswap<8>(m_10a->read(),0,1,2,3,4,5,6,7) & 0xfc;
break;
case 2: // R.T. Clock IN/RESET CLK. Int.
diff --git a/src/devices/bus/saturn/sat_slot.cpp b/src/devices/bus/saturn/sat_slot.cpp
index 13f69c8ba92..defdd4d025b 100644
--- a/src/devices/bus/saturn/sat_slot.cpp
+++ b/src/devices/bus/saturn/sat_slot.cpp
@@ -156,7 +156,7 @@ image_init_result sat_cart_slot_device::call_load()
// fix endianness....
for (int i = 0; i < len/4; i ++)
- ROM[i] = BITSWAP32(ROM[i],7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8,23,22,21,20,19,18,17,16,31,30,29,28,27,26,25,24);
+ ROM[i] = bitswap<32>(ROM[i],7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8,23,22,21,20,19,18,17,16,31,30,29,28,27,26,25,24);
// {
// uint8_t tempa = ROM[i+0];
// uint8_t tempb = ROM[i+1];
diff --git a/src/devices/bus/sega8/rom.cpp b/src/devices/bus/sega8/rom.cpp
index 9006cc1f013..e3fa290489c 100644
--- a/src/devices/bus/sega8/rom.cpp
+++ b/src/devices/bus/sega8/rom.cpp
@@ -871,7 +871,7 @@ READ8_MEMBER(sega8_janggun_device::read_cart)
if (m_rom_bank_base[bank] < 0x80)
return m_rom[(m_rom_bank_base[bank] & 0x3f) * 0x2000 + (offset & 0x1fff)];
else
- return BITSWAP8(m_rom[(m_rom_bank_base[bank] & 0x3f) * 0x2000 + (offset & 0x1fff)], 0, 1, 2, 3, 4, 5, 6, 7);
+ return bitswap<8>(m_rom[(m_rom_bank_base[bank] & 0x3f) * 0x2000 + (offset & 0x1fff)], 0, 1, 2, 3, 4, 5, 6, 7);
}
diff --git a/src/devices/bus/snes/rom.cpp b/src/devices/bus/snes/rom.cpp
index 628ab1a212d..bae27f21fad 100644
--- a/src/devices/bus/snes/rom.cpp
+++ b/src/devices/bus/snes/rom.cpp
@@ -291,7 +291,7 @@ WRITE8_MEMBER( sns_rom_obc1_device::chip_write )
// Address range for read/write depends on the game (check snes.xml)
READ8_MEMBER( sns_rom_pokemon_device::chip_read )
{
- return BITSWAP8(m_latch,0,6,7,1,2,3,4,5);
+ return bitswap<8>(m_latch,0,6,7,1,2,3,4,5);
}
WRITE8_MEMBER( sns_rom_pokemon_device::chip_write )
@@ -488,7 +488,7 @@ WRITE8_MEMBER( sns_rom_20col_device::chip_write )
READ8_MEMBER( sns_rom_banana_device::chip_read )
{
- return BITSWAP8(m_latch[0xf],0,6,7,1,2,3,4,5);
+ return bitswap<8>(m_latch[0xf],0,6,7,1,2,3,4,5);
}
WRITE8_MEMBER( sns_rom_banana_device::chip_write )
@@ -499,7 +499,7 @@ WRITE8_MEMBER( sns_rom_banana_device::chip_write )
READ8_MEMBER( sns_rom_bugs_device::chip_read )
{
- return BITSWAP8(m_latch[offset & 0xff],0,6,7,1,2,3,4,5);
+ return bitswap<8>(m_latch[offset & 0xff],0,6,7,1,2,3,4,5);
}
WRITE8_MEMBER( sns_rom_bugs_device::chip_write )
diff --git a/src/devices/bus/snes_ctrl/pachinko.cpp b/src/devices/bus/snes_ctrl/pachinko.cpp
index 44d81066d83..010385e6459 100644
--- a/src/devices/bus/snes_ctrl/pachinko.cpp
+++ b/src/devices/bus/snes_ctrl/pachinko.cpp
@@ -83,7 +83,7 @@ void snes_pachinko_device::device_reset()
void snes_pachinko_device::port_poll()
{
- uint8_t dial = BITSWAP8(m_dial->read() ^ 0xff,7,6,5,4,3,2,1,0);
+ uint8_t dial = bitswap<8>(m_dial->read() ^ 0xff,7,6,5,4,3,2,1,0);
m_latch = m_button->read() | (dial << 25) | 0xee7000; // add ID
}
diff --git a/src/devices/bus/spc1000/fdd.cpp b/src/devices/bus/spc1000/fdd.cpp
index 3156e6814ec..fe0f4e4ac80 100644
--- a/src/devices/bus/spc1000/fdd.cpp
+++ b/src/devices/bus/spc1000/fdd.cpp
@@ -35,7 +35,7 @@ WRITE8_MEMBER(spc1000_fdd_exp_device::i8255_c_w)
READ8_MEMBER( spc1000_fdd_exp_device::tc_r )
{
- logerror("%s: tc_r\n", space.machine().describe_context());
+ logerror("%s: tc_r\n", machine().describe_context());
// toggle tc on read
m_fdc->tc_w(true);
@@ -46,7 +46,7 @@ READ8_MEMBER( spc1000_fdd_exp_device::tc_r )
WRITE8_MEMBER( spc1000_fdd_exp_device::control_w )
{
- logerror("%s: control_w(%02x)\n", space.machine().describe_context(), data);
+ logerror("%s: control_w(%02x)\n", machine().describe_context(), data);
// bit 0, motor on signal
if (m_fd0)
diff --git a/src/devices/bus/ti99x/990_hd.cpp b/src/devices/bus/ti99x/990_hd.cpp
index 0bb3b475086..9c2ce32ae51 100644
--- a/src/devices/bus/ti99x/990_hd.cpp
+++ b/src/devices/bus/ti99x/990_hd.cpp
@@ -241,7 +241,7 @@ DEVICE_IMAGE_LOAD_MEMBER( ti990_hdc_device, ti990_hd )
*/
DEVICE_IMAGE_UNLOAD_MEMBER( ti990_hdc_device, ti990_hd )
{
- int id = get_id_from_device( image );
+ int id = get_id_from_device(&image.device());
hd_unit_t *d;
d = &m_d[id];
diff --git a/src/devices/bus/vcs/dpc.cpp b/src/devices/bus/vcs/dpc.cpp
index f15e426fec7..bcddc3e96ae 100644
--- a/src/devices/bus/vcs/dpc.cpp
+++ b/src/devices/bus/vcs/dpc.cpp
@@ -160,10 +160,10 @@ READ8_MEMBER(dpc_device::read)
data = m_df[data_fetcher].flag ? display_data : 0x00;
break;
case 0x18: // display data AND'd w/flag, nibbles swapped
- data = m_df[data_fetcher].flag ? BITSWAP8(display_data,3,2,1,0,7,6,5,4) : 0x00;
+ data = m_df[data_fetcher].flag ? bitswap<8>(display_data,3,2,1,0,7,6,5,4) : 0x00;
break;
case 0x20: // display data AND'd w/flag, byte reversed
- data = m_df[data_fetcher].flag ? BITSWAP8(display_data,0,1,2,3,4,5,6,7) : 0x00;
+ data = m_df[data_fetcher].flag ? bitswap<8>(display_data,0,1,2,3,4,5,6,7) : 0x00;
break;
case 0x28: // display data AND'd w/flag, rotated right
data = m_df[data_fetcher].flag ? (display_data >> 1) : 0x00;
diff --git a/src/devices/cpu/arm7/arm7.h b/src/devices/cpu/arm7/arm7.h
index a0711fed9ec..23df9469073 100644
--- a/src/devices/cpu/arm7/arm7.h
+++ b/src/devices/cpu/arm7/arm7.h
@@ -614,7 +614,6 @@ class arm946es_cpu_device : public arm9_cpu_device
public:
// construction/destruction
arm946es_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- arm946es_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// 946E-S has Protection Unit instead of ARM MMU so CP15 is quite different
virtual DECLARE_READ32_MEMBER( arm7_rt_r_callback ) override;
@@ -627,6 +626,9 @@ public:
virtual uint32_t arm7_cpu_read16(uint32_t addr) override;
virtual uint8_t arm7_cpu_read8(uint32_t addr) override;
+protected:
+ arm946es_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
private:
uint32_t cp15_control, cp15_itcm_base, cp15_dtcm_base, cp15_itcm_size, cp15_dtcm_size;
uint32_t cp15_itcm_end, cp15_dtcm_end, cp15_itcm_reg, cp15_dtcm_reg;
diff --git a/src/devices/cpu/arm7/arm7core.h b/src/devices/cpu/arm7/arm7core.h
index 9ae499ae109..c33bdee9dd2 100644
--- a/src/devices/cpu/arm7/arm7core.h
+++ b/src/devices/cpu/arm7/arm7core.h
@@ -470,11 +470,6 @@ enum
COND_NV /* 0 never */
};
-#define LSL(v, s) ((v) << (s))
-#define LSR(v, s) ((v) >> (s))
-#define ROL(v, s) (LSL((v), (s)) | (LSR((v), 32u - (s))))
-#define ROR(v, s) (LSR((v), (s)) | (LSL((v), 32u - (s))))
-
/* Convenience Macros */
#define R15 m_r[eR15]
#define SPSR 17 // SPSR is always the 18th register in our 0 based array sRegisterTable[][18]
diff --git a/src/devices/cpu/arm7/arm7help.h b/src/devices/cpu/arm7/arm7help.h
index 4b0b4f21c8a..c006bfbf1af 100644
--- a/src/devices/cpu/arm7/arm7help.h
+++ b/src/devices/cpu/arm7/arm7help.h
@@ -166,3 +166,8 @@
#define WRITE32(addr,data) arm7_cpu_write32(addr,data)
#define PTR_READ32 &arm7_cpu_read32
#define PTR_WRITE32 &arm7_cpu_write32
+
+#define LSL(v, s) ((v) << (s))
+#define LSR(v, s) ((v) >> (s))
+#define ROL(v, s) (LSL((v), (s)) | (LSR((v), 32u - (s))))
+#define ROR(v, s) (LSR((v), (s)) | (LSL((v), 32u - (s))))
diff --git a/src/devices/cpu/es5510/es5510.cpp b/src/devices/cpu/es5510/es5510.cpp
index 61a94d8316f..cc9918ac111 100644
--- a/src/devices/cpu/es5510/es5510.cpp
+++ b/src/devices/cpu/es5510/es5510.cpp
@@ -360,7 +360,7 @@ READ8_MEMBER(es5510_device::host_r)
// printf("%06x: DSP read offset %04x (data is %04x)\n",space.device().safe_pc(),offset,dsp_ram[offset]);
// VFX hack
- if (core_stricmp(space.machine().system().name, "vfx") == 0)
+ if (core_stricmp(machine().system().name, "vfx") == 0)
{
if (space.device().safe_pc() == 0xc091f0)
{
diff --git a/src/devices/cpu/hmcs40/hmcs40.cpp b/src/devices/cpu/hmcs40/hmcs40.cpp
index a80c067aaeb..fa874022938 100644
--- a/src/devices/cpu/hmcs40/hmcs40.cpp
+++ b/src/devices/cpu/hmcs40/hmcs40.cpp
@@ -620,7 +620,7 @@ void hmcs40_cpu_device::execute_run()
debugger_instruction_hook(this, m_pc);
m_icount--;
m_op = m_program->read_word(m_pc) & 0x3ff;
- m_i = BITSWAP8(m_op,7,6,5,4,0,1,2,3) & 0xf; // reversed bit-order for 4-bit immediate param (except for XAMR)
+ m_i = bitswap<8>(m_op,7,6,5,4,0,1,2,3) & 0xf; // reversed bit-order for 4-bit immediate param (except for XAMR)
increment_pc();
// handle opcode
diff --git a/src/devices/cpu/hmcs40/hmcs40d.cpp b/src/devices/cpu/hmcs40/hmcs40d.cpp
index 48ae33ccfaa..96e4b6399ea 100644
--- a/src/devices/cpu/hmcs40/hmcs40d.cpp
+++ b/src/devices/cpu/hmcs40/hmcs40d.cpp
@@ -181,7 +181,7 @@ offs_t hmcs40_disassembler::disassemble(std::ostream &stream, offs_t pc, const d
// reverse bits
if (bits < 0)
{
- param = BITSWAP8(param,0,1,2,3,4,5,6,7);
+ param = bitswap<8>(param,0,1,2,3,4,5,6,7);
param >>= (8 + bits);
bits = -bits;
}
diff --git a/src/devices/cpu/hmcs40/hmcs40op.cpp b/src/devices/cpu/hmcs40/hmcs40op.cpp
index 2078d5e765b..1886768bc8d 100644
--- a/src/devices/cpu/hmcs40/hmcs40op.cpp
+++ b/src/devices/cpu/hmcs40/hmcs40op.cpp
@@ -669,13 +669,13 @@ void hmcs40_cpu_device::op_p()
if (o & 0x100)
{
// B3 B2 B1 B0 A0 A1 A2 A3
- m_a = BITSWAP8(o,7,6,5,4,0,1,2,3) & 0xf;
+ m_a = bitswap<8>(o,7,6,5,4,0,1,2,3) & 0xf;
m_b = o >> 4 & 0xf;
}
if (o & 0x200)
{
// R20 R21 R22 R23 R30 R31 R32 R33
- o = BITSWAP8(o,0,1,2,3,4,5,6,7);
+ o = bitswap<8>(o,0,1,2,3,4,5,6,7);
write_r(2, o & 0xf);
write_r(3, o >> 4 & 0xf);
}
diff --git a/src/devices/cpu/m68000/m68000.h b/src/devices/cpu/m68000/m68000.h
index a6a885d6f54..bc14bea27dc 100644
--- a/src/devices/cpu/m68000/m68000.h
+++ b/src/devices/cpu/m68000/m68000.h
@@ -10,43 +10,30 @@
#define softfloat_h 1
#include "softfloat/milieu.h"
#include "softfloat/softfloat.h"
+extern flag floatx80_is_nan(floatx80 a);
#endif
/* MMU constants */
-#define MMU_ATC_ENTRIES (22) // 68851 has 64, 030 has 22
+constexpr int MMU_ATC_ENTRIES = (22); // 68851 has 64, 030 has 22
/* instruction cache constants */
-#define M68K_IC_SIZE 128
-
-
-
-
-#define m68ki_check_address_error(m68k, ADDR, WRITE_MODE, FC) \
- if((ADDR)&1) \
- { \
- m68k->aerr_address = ADDR; \
- m68k->aerr_write_mode = WRITE_MODE; \
- m68k->aerr_fc = FC; \
- throw 10; \
- }
-
-
+constexpr int M68K_IC_SIZE = 128;
/* There are 7 levels of interrupt to the 68K.
* A transition from < 7 to 7 will cause a non-maskable interrupt (NMI).
*/
-#define M68K_IRQ_NONE 0
-#define M68K_IRQ_1 1
-#define M68K_IRQ_2 2
-#define M68K_IRQ_3 3
-#define M68K_IRQ_4 4
-#define M68K_IRQ_5 5
-#define M68K_IRQ_6 6
-#define M68K_IRQ_7 7
+constexpr int M68K_IRQ_NONE = 0;
+constexpr int M68K_IRQ_1 = 1;
+constexpr int M68K_IRQ_2 = 2;
+constexpr int M68K_IRQ_3 = 3;
+constexpr int M68K_IRQ_4 = 4;
+constexpr int M68K_IRQ_5 = 5;
+constexpr int M68K_IRQ_6 = 6;
+constexpr int M68K_IRQ_7 = 7;
// special input lines
-#define M68K_LINE_BUSERROR 16
+constexpr int M68K_LINE_BUSERROR = 16;
/* CPU types for use in m68k_set_cpu_type() */
enum
@@ -78,9 +65,9 @@ enum
};
/* HMMU enable types for use with m68k_set_hmmu_enable() */
-#define M68K_HMMU_DISABLE 0 /* no translation */
-#define M68K_HMMU_ENABLE_II 1 /* Mac II style fixed translation */
-#define M68K_HMMU_ENABLE_LC 2 /* Mac LC style fixed translation */
+constexpr int M68K_HMMU_DISABLE = 0; /* no translation */
+constexpr int M68K_HMMU_ENABLE_II = 1; /* Mac II style fixed translation */
+constexpr int M68K_HMMU_ENABLE_LC = 2; /* Mac LC style fixed translation */
/* Special interrupt acknowledge values.
* Use these as special returns from the interrupt acknowledge callback
@@ -91,30 +78,25 @@ enum
* This happens in a real 68K if VPA or AVEC is asserted during an interrupt
* acknowledge cycle instead of DTACK.
*/
-#define M68K_INT_ACK_AUTOVECTOR 0xffffffff
+constexpr uint32_t M68K_INT_ACK_AUTOVECTOR = 0xffffffff;
/* Causes the spurious interrupt vector (0x18) to be taken
* This happens in a real 68K if BERR is asserted during the interrupt
* acknowledge cycle (i.e. no devices responded to the acknowledge).
*/
-#define M68K_INT_ACK_SPURIOUS 0xfffffffe
+constexpr uint32_t M68K_INT_ACK_SPURIOUS = 0xfffffffe;
enum
{
/* NOTE: M68K_SP fetches the current SP, be it USP, ISP, or MSP */
M68K_PC = STATE_GENPC, M68K_SP = 1, M68K_ISP, M68K_USP, M68K_MSP, M68K_SR, M68K_VBR,
- M68K_SFC, M68K_DFC, M68K_CACR, M68K_CAAR, M68K_PREF_ADDR, M68K_PREF_DATA,
+ M68K_SFC, M68K_DFC, M68K_CACR, M68K_CAAR, M68K_IR, M68K_PREF_ADDR, M68K_PREF_DATA,
M68K_D0, M68K_D1, M68K_D2, M68K_D3, M68K_D4, M68K_D5, M68K_D6, M68K_D7,
M68K_A0, M68K_A1, M68K_A2, M68K_A3, M68K_A4, M68K_A5, M68K_A6, M68K_A7,
M68K_FP0, M68K_FP1, M68K_FP2, M68K_FP3, M68K_FP4, M68K_FP5, M68K_FP6, M68K_FP7,
M68K_FPSR, M68K_FPCR
};
-class m68000_base_device;
-
-
-extern const device_type M68K;
-
class m68000_base_device : public cpu_device
{
public:
@@ -122,6 +104,7 @@ public:
// construction/destruction
m68000_base_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+protected:
void presave();
void postload();
@@ -150,6 +133,7 @@ public:
void define_state(void);
+public:
void set_reset_callback(write_line_delegate callback);
void set_cmpild_callback(write32_delegate callback);
void set_rte_callback(write_line_delegate callback);
@@ -157,8 +141,6 @@ public:
uint16_t get_fc();
void set_hmmu_enable(int enable);
void set_fpu_enable(int enable);
- int get_fpu_enable();
- void set_instruction_hook(read32_delegate ihook);
void set_buserror_details(uint32_t fault_addr, uint8_t rw, uint8_t fc);
protected:
@@ -168,91 +150,89 @@ protected:
m68000_base_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock,
const device_type type, uint32_t prg_data_width, uint32_t prg_address_bits, address_map_constructor internal_map);
-private:
- int has_fpu; /* Indicates if a FPU is available (yes on 030, 040, may be on 020) */
-public:
-
-
- uint32_t cpu_type; /* CPU Type: 68000, 68008, 68010, 68EC020, 68020, 68EC030, 68030, 68EC040, or 68040 */
-// uint32_t dasm_type; /* disassembly type */
- uint32_t dar[16]; /* Data and Address Registers */
- uint32_t ppc; /* Previous program counter */
- uint32_t pc; /* Program Counter */
- uint32_t sp[7]; /* User, Interrupt, and Master Stack Pointers */
- uint32_t vbr; /* Vector Base Register (m68010+) */
- uint32_t sfc; /* Source Function Code Register (m68010+) */
- uint32_t dfc; /* Destination Function Code Register (m68010+) */
- uint32_t cacr; /* Cache Control Register (m68020, unemulated) */
- uint32_t caar; /* Cache Address Register (m68020, unemulated) */
- uint32_t ir; /* Instruction Register */
- floatx80 fpr[8]; /* FPU Data Register (m68030/040) */
- uint32_t fpiar; /* FPU Instruction Address Register (m68040) */
- uint32_t fpsr; /* FPU Status Register (m68040) */
- uint32_t fpcr; /* FPU Control Register (m68040) */
- uint32_t t1_flag; /* Trace 1 */
- uint32_t t0_flag; /* Trace 0 */
- uint32_t s_flag; /* Supervisor */
- uint32_t m_flag; /* Master/Interrupt state */
- uint32_t x_flag; /* Extend */
- uint32_t n_flag; /* Negative */
- uint32_t not_z_flag; /* Zero, inverted for speedups */
- uint32_t v_flag; /* Overflow */
- uint32_t c_flag; /* Carry */
- uint32_t int_mask; /* I0-I2 */
- uint32_t int_level; /* State of interrupt pins IPL0-IPL2 -- ASG: changed from ints_pending */
- uint32_t stopped; /* Stopped state */
- uint32_t pref_addr; /* Last prefetch address */
- uint32_t pref_data; /* Data in the prefetch queue */
- uint32_t sr_mask; /* Implemented status register bits */
- uint32_t instr_mode; /* Stores whether we are in instruction mode or group 0/1 exception mode */
- uint32_t run_mode; /* Stores whether we are processing a reset, bus error, address error, or something else */
- int has_pmmu; /* Indicates if a PMMU available (yes on 030, 040, no on EC030) */
- int has_hmmu; /* Indicates if an Apple HMMU is available in place of the 68851 (020 only) */
- int pmmu_enabled; /* Indicates if the PMMU is enabled */
- int hmmu_enabled; /* Indicates if the HMMU is enabled */
- int fpu_just_reset; /* Indicates the FPU was just reset */
+ int m_has_fpu; /* Indicates if a FPU is available (yes on 030, 040, may be on 020) */
+
+
+ uint32_t m_cpu_type; /* CPU Type: 68000, 68008, 68010, 68EC020, 68020, 68EC030, 68030, 68EC040, or 68040 */
+//
+ uint32_t m_dar[16]; /* Data and Address Registers */
+ uint32_t m_ppc; /* Previous program counter */
+ uint32_t m_pc; /* Program Counter */
+ uint32_t m_sp[7]; /* User, Interrupt, and Master Stack Pointers */
+ uint32_t m_vbr; /* Vector Base Register (m68010+) */
+ uint32_t m_sfc; /* Source Function Code Register (m68010+) */
+ uint32_t m_dfc; /* Destination Function Code Register (m68010+) */
+ uint32_t m_cacr; /* Cache Control Register (m68020, unemulated) */
+ uint32_t m_caar; /* Cache Address Register (m68020, unemulated) */
+ uint32_t m_ir; /* Instruction Register */
+ floatx80 m_fpr[8]; /* FPU Data Register (m68030/040) */
+ uint32_t m_fpiar; /* FPU Instruction Address Register (m68040) */
+ uint32_t m_fpsr; /* FPU Status Register (m68040) */
+ uint32_t m_fpcr; /* FPU Control Register (m68040) */
+ uint32_t m_t1_flag; /* Trace 1 */
+ uint32_t m_t0_flag; /* Trace 0 */
+ uint32_t m_s_flag; /* Supervisor */
+ uint32_t m_m_flag; /* Master/Interrupt state */
+ uint32_t m_x_flag; /* Extend */
+ uint32_t m_n_flag; /* Negative */
+ uint32_t m_not_z_flag; /* Zero, inverted for speedups */
+ uint32_t m_v_flag; /* Overflow */
+ uint32_t m_c_flag; /* Carry */
+ uint32_t m_int_mask; /* I0-I2 */
+ uint32_t m_int_level; /* State of interrupt pins IPL0-IPL2 -- ASG: changed from ints_pending */
+ uint32_t m_stopped; /* Stopped state */
+ uint32_t m_pref_addr; /* Last prefetch address */
+ uint32_t m_pref_data; /* Data in the prefetch queue */
+ uint32_t m_sr_mask; /* Implemented status register bits */
+ uint32_t m_instr_mode; /* Stores whether we are in instruction mode or group 0/1 exception mode */
+ uint32_t m_run_mode; /* Stores whether we are processing a reset, bus error, address error, or something else */
+ int m_has_pmmu; /* Indicates if a PMMU available (yes on 030, 040, no on EC030) */
+ int m_has_hmmu; /* Indicates if an Apple HMMU is available in place of the 68851 (020 only) */
+ int m_pmmu_enabled; /* Indicates if the PMMU is enabled */
+ int m_hmmu_enabled; /* Indicates if the HMMU is enabled */
+ int m_fpu_just_reset; /* Indicates the FPU was just reset */
/* Clocks required for instructions / exceptions */
- uint32_t cyc_bcc_notake_b;
- uint32_t cyc_bcc_notake_w;
- uint32_t cyc_dbcc_f_noexp;
- uint32_t cyc_dbcc_f_exp;
- uint32_t cyc_scc_r_true;
- uint32_t cyc_movem_w;
- uint32_t cyc_movem_l;
- uint32_t cyc_shift;
- uint32_t cyc_reset;
-
- int initial_cycles;
- int remaining_cycles; /* Number of clocks remaining */
- int reset_cycles;
- uint32_t tracing;
+ uint32_t m_cyc_bcc_notake_b;
+ uint32_t m_cyc_bcc_notake_w;
+ uint32_t m_cyc_dbcc_f_noexp;
+ uint32_t m_cyc_dbcc_f_exp;
+ uint32_t m_cyc_scc_r_true;
+ uint32_t m_cyc_movem_w;
+ uint32_t m_cyc_movem_l;
+ uint32_t m_cyc_shift;
+ uint32_t m_cyc_reset;
+
+ int m_initial_cycles;
+ int m_remaining_cycles; /* Number of clocks remaining */
+ int m_reset_cycles;
+ uint32_t m_tracing;
int m_address_error;
- uint32_t aerr_address;
- uint32_t aerr_write_mode;
- uint32_t aerr_fc;
+ uint32_t m_aerr_address;
+ uint32_t m_aerr_write_mode;
+ uint32_t m_aerr_fc;
/* Virtual IRQ lines state */
- uint32_t virq_state;
- uint32_t nmi_pending;
+ uint32_t m_virq_state;
+ uint32_t m_nmi_pending;
- void (**jump_table)(m68000_base_device *m68k);
- const uint8_t* cyc_instruction;
- const uint8_t* cyc_exception;
+ void (m68000_base_device::**m_jump_table)();
+ const uint8_t* m_cyc_instruction;
+ const uint8_t* m_cyc_exception;
/* Callbacks to host */
- device_irq_acknowledge_delegate int_ack_callback; /* Interrupt Acknowledge */
- write32_delegate bkpt_ack_callback; /* Breakpoint Acknowledge */
- write_line_delegate reset_instr_callback; /* Called when a RESET instruction is encountered */
- write32_delegate cmpild_instr_callback; /* Called when a CMPI.L #v, Dn instruction is encountered */
- write_line_delegate rte_instr_callback; /* Called when a RTE instruction is encountered */
- write8_delegate tas_write_callback; /* Called instead of normal write8 by the TAS instruction,
+ device_irq_acknowledge_delegate m_int_ack_callback; /* Interrupt Acknowledge */
+ write32_delegate m_bkpt_ack_callback; /* Breakpoint Acknowledge */
+ write_line_delegate m_reset_instr_callback; /* Called when a RESET instruction is encountered */
+ write32_delegate m_cmpild_instr_callback; /* Called when a CMPI.L #v, Dn instruction is encountered */
+ write_line_delegate m_rte_instr_callback; /* Called when a RTE instruction is encountered */
+ write8_delegate m_tas_write_callback; /* Called instead of normal write8 by the TAS instruction,
allowing writeback to be disabled globally or selectively
or other side effects to be implemented */
- address_space *program, *oprogram;
+ address_space *m_program, *m_oprogram;
/* Redirect memory calls */
@@ -264,25 +244,21 @@ public:
typedef delegate<void (offs_t, uint16_t)> m68k_write16_delegate;
typedef delegate<void (offs_t, uint32_t)> m68k_write32_delegate;
-// class m68k_memory_interface
-// {
- public:
void init8(address_space &space, address_space &ospace);
void init16(address_space &space, address_space &ospace);
void init32(address_space &space, address_space &ospace);
void init32mmu(address_space &space, address_space &ospace);
void init32hmmu(address_space &space, address_space &ospace);
- offs_t opcode_xor; // Address Calculation
- m68k_readimm16_delegate readimm16; // Immediate read 16 bit
- m68k_read8_delegate read8;
- m68k_read16_delegate read16;
- m68k_read32_delegate read32;
- m68k_write8_delegate write8;
- m68k_write16_delegate write16;
- m68k_write32_delegate write32;
+ offs_t m_opcode_xor; // Address Calculation
+ m68k_readimm16_delegate m_readimm16; // Immediate read 16 bit
+ m68k_read8_delegate m_read8;
+ m68k_read16_delegate m_read16;
+ m68k_read32_delegate m_read32;
+ m68k_write8_delegate m_write8;
+ m68k_write16_delegate m_write16;
+ m68k_write32_delegate m_write32;
- private:
uint16_t m68008_read_immediate_16(offs_t address);
uint16_t read_immediate_16(offs_t address);
uint16_t simple_read_immediate_16(offs_t address);
@@ -305,57 +281,47 @@ public:
uint32_t readlong_d32_hmmu(offs_t address);
void writelong_d32_hmmu(offs_t address, uint32_t data);
-// m68000_base_device *m_cpustate;
-// };
-
- public:
-// m68k_memory_interface memory;
address_space *m_space, *m_ospace;
direct_read_data<0> *m_direct, *m_odirect;
- uint32_t iotemp;
+ uint32_t m_iotemp;
/* save state data */
- uint16_t save_sr;
- uint8_t save_stopped;
- uint8_t save_halted;
+ uint16_t m_save_sr;
+ uint8_t m_save_stopped;
+ uint8_t m_save_halted;
/* PMMU registers */
- uint32_t mmu_crp_aptr, mmu_crp_limit;
- uint32_t mmu_srp_aptr, mmu_srp_limit;
- uint32_t mmu_urp_aptr; /* 040 only */
- uint32_t mmu_tc;
- uint16_t mmu_sr;
- uint32_t mmu_sr_040;
- uint32_t mmu_atc_tag[MMU_ATC_ENTRIES], mmu_atc_data[MMU_ATC_ENTRIES];
- uint32_t mmu_atc_rr;
- uint32_t mmu_tt0, mmu_tt1;
- uint32_t mmu_itt0, mmu_itt1, mmu_dtt0, mmu_dtt1;
- uint32_t mmu_acr0, mmu_acr1, mmu_acr2, mmu_acr3;
- uint32_t mmu_last_page_entry, mmu_last_page_entry_addr;
-
- uint16_t mmu_tmp_sr; /* temporary hack: status code for ptest and to handle write protection */
- uint16_t mmu_tmp_fc; /* temporary hack: function code for the mmu (moves) */
- uint16_t mmu_tmp_rw; /* temporary hack: read/write (1/0) for the mmu */
- uint32_t mmu_tmp_buserror_address; /* temporary hack: (first) bus error address */
- uint16_t mmu_tmp_buserror_occurred; /* temporary hack: flag that bus error has occurred from mmu */
- uint16_t mmu_tmp_buserror_fc; /* temporary hack: (first) bus error fc */
- uint16_t mmu_tmp_buserror_rw; /* temporary hack: (first) bus error rw */
-
- uint32_t ic_address[M68K_IC_SIZE]; /* instruction cache address data */
- uint32_t ic_data[M68K_IC_SIZE]; /* instruction cache content data */
- bool ic_valid[M68K_IC_SIZE]; /* instruction cache valid flags */
+ uint32_t m_mmu_crp_aptr, m_mmu_crp_limit;
+ uint32_t m_mmu_srp_aptr, m_mmu_srp_limit;
+ uint32_t m_mmu_urp_aptr; /* 040 only */
+ uint32_t m_mmu_tc;
+ uint16_t m_mmu_sr;
+ uint32_t m_mmu_sr_040;
+ uint32_t m_mmu_atc_tag[MMU_ATC_ENTRIES], m_mmu_atc_data[MMU_ATC_ENTRIES];
+ uint32_t m_mmu_atc_rr;
+ uint32_t m_mmu_tt0, m_mmu_tt1;
+ uint32_t m_mmu_itt0, m_mmu_itt1, m_mmu_dtt0, m_mmu_dtt1;
+ uint32_t m_mmu_acr0, m_mmu_acr1, m_mmu_acr2, m_mmu_acr3;
+ uint32_t m_mmu_last_page_entry, m_mmu_last_page_entry_addr;
+
+ uint16_t m_mmu_tmp_sr; /* temporary hack: status code for ptest and to handle write protection */
+ uint16_t m_mmu_tmp_fc; /* temporary hack: function code for the mmu (moves) */
+ uint16_t m_mmu_tmp_rw; /* temporary hack: read/write (1/0) for the mmu */
+ uint32_t m_mmu_tmp_buserror_address; /* temporary hack: (first) bus error address */
+ uint16_t m_mmu_tmp_buserror_occurred; /* temporary hack: flag that bus error has occurred from mmu */
+ uint16_t m_mmu_tmp_buserror_fc; /* temporary hack: (first) bus error fc */
+ uint16_t m_mmu_tmp_buserror_rw; /* temporary hack: (first) bus error rw */
+
+ uint32_t m_ic_address[M68K_IC_SIZE]; /* instruction cache address data */
+ uint32_t m_ic_data[M68K_IC_SIZE]; /* instruction cache content data */
+ bool m_ic_valid[M68K_IC_SIZE]; /* instruction cache valid flags */
/* 68307 / 68340 internal address map */
- address_space *internal;
-
-
-
- /* external instruction hook (does not depend on debug mode) */
- read32_delegate instruction_hook;
+ address_space *m_internal;
@@ -378,10 +344,18 @@ public:
void init_cpu_coldfire(void);
- void m68ki_exception_interrupt(m68000_base_device *m68k, uint32_t int_level);
+ void m68ki_exception_interrupt(uint32_t int_level);
- void reset_cpu(void);
- inline void cpu_execute(void);
+ inline void m68ki_check_address_error(uint32_t ADDR, uint32_t WRITE_MODE, uint32_t FC)
+ {
+ if((ADDR)&1)
+ {
+ m_aerr_address = ADDR;
+ m_aerr_write_mode = WRITE_MODE;
+ m_aerr_fc = FC;
+ throw 10;
+ }
+ }
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
@@ -390,6 +364,11 @@ public:
// device_memory_interface overrides
virtual bool memory_translate(int space, int intention, offs_t &address) override;
+
+#include "m68kcpu.h"
+#include "m68kops.h"
+#include "m68kfpu.hxx"
+#include "m68kmmu.h"
};
diff --git a/src/devices/cpu/m68000/m68k_in.cpp b/src/devices/cpu/m68000/m68k_in.cpp
index 3b557865db9..08538d33443 100644
--- a/src/devices/cpu/m68000/m68k_in.cpp
+++ b/src/devices/cpu/m68000/m68k_in.cpp
@@ -83,6 +83,26 @@ M68KMAKE_PROTOTYPE_HEADER
// license:BSD-3-Clause
// copyright-holders:Karl Stenerud
+
+static constexpr int NUM_CPU_TYPES = 7;
+
+typedef void (m68000_base_device::*opcode_handler_ptr)();
+static opcode_handler_ptr m68ki_instruction_jump_table[NUM_CPU_TYPES][0x10000]; /* opcode handler jump table */
+static unsigned char m68ki_cycles[NUM_CPU_TYPES][0x10000]; /* Cycles used by CPU type */
+
+/* This is used to generate the opcode handler jump table */
+struct opcode_handler_struct
+{
+ opcode_handler_ptr opcode_handler; /* handler function */
+ unsigned int mask; /* mask on opcode */
+ unsigned int match; /* what to match after masking */
+ unsigned char cycles[NUM_CPU_TYPES]; /* cycles each cpu type takes */
+};
+
+/* Build the opcode handler table */
+static void m68ki_set_one(unsigned short opcode, const opcode_handler_struct *s);
+static void m68ki_build_opcode_table(void);
+
/* ======================================================================== */
/* ============================ OPCODE HANDLERS =========================== */
/* ======================================================================== */
@@ -92,13 +112,6 @@ M68KMAKE_PROTOTYPE_HEADER
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
M68KMAKE_PROTOTYPE_FOOTER
-/* Build the opcode handler table */
-void m68ki_build_opcode_table(void);
-
-extern void (*m68ki_instruction_jump_table[][0x10000])(m68000_base_device *m68k); /* opcode handler jump table */
-extern unsigned char m68ki_cycles[][0x10000];
-
-
/* ======================================================================== */
/* ============================== END OF FILE ============================= */
/* ======================================================================== */
@@ -113,23 +126,22 @@ M68KMAKE_TABLE_HEADER
/* ========================= OPCODE TABLE BUILDER ========================= */
/* ======================================================================== */
-#include "m68kops.h"
+m68000_base_device::opcode_handler_ptr m68000_base_device::m68ki_instruction_jump_table[NUM_CPU_TYPES][0x10000]; /* opcode handler jump table */
+unsigned char m68000_base_device::m68ki_cycles[NUM_CPU_TYPES][0x10000]; /* Cycles used by CPU type */
-#define NUM_CPU_TYPES 7
-
-void (*m68ki_instruction_jump_table[NUM_CPU_TYPES][0x10000])(m68000_base_device *m68k); /* opcode handler jump table */
-unsigned char m68ki_cycles[NUM_CPU_TYPES][0x10000]; /* Cycles used by CPU type */
+/* Build the opcode handler jump table */
-/* This is used to generate the opcode handler jump table */
-struct opcode_handler_struct
+void m68000_base_device::m68ki_set_one(unsigned short opcode, const opcode_handler_struct *s)
{
- void (*opcode_handler)(m68000_base_device *m68k); /* handler function */
- unsigned int mask; /* mask on opcode */
- unsigned int match; /* what to match after masking */
- unsigned char cycles[NUM_CPU_TYPES]; /* cycles each cpu type takes */
-};
-
+ for(int i=0; i<NUM_CPU_TYPES; i++)
+ if(s->cycles[i] != 0xff) {
+ m68ki_cycles[i][opcode] = s->cycles[i];
+ m68ki_instruction_jump_table[i][opcode] = s->opcode_handler;
+ }
+}
+void m68000_base_device::m68ki_build_opcode_table(void)
+{
/* Opcode handler table */
static const opcode_handler_struct m68k_opcode_handler_table[] =
{
@@ -144,19 +156,6 @@ M68KMAKE_TABLE_FOOTER
};
-/* Build the opcode handler jump table */
-
-static void m68ki_set_one(unsigned short opcode, const opcode_handler_struct *s)
-{
- for(int i=0; i<NUM_CPU_TYPES; i++)
- if(s->cycles[i] != 0xff) {
- m68ki_cycles[i][opcode] = s->cycles[i];
- m68ki_instruction_jump_table[i][opcode] = s->opcode_handler;
- }
-}
-
-void m68ki_build_opcode_table(void)
-{
const opcode_handler_struct *ostruct;
int i;
int j;
@@ -167,7 +166,7 @@ void m68ki_build_opcode_table(void)
/* default to illegal */
for(k=0;k<NUM_CPU_TYPES;k++)
{
- m68ki_instruction_jump_table[k][i] = m68000_base_device_ops::m68k_op_illegal;
+ m68ki_instruction_jump_table[k][i] = &m68000_base_device::m68k_op_illegal;
m68ki_cycles[k][i] = 0;
}
}
@@ -261,11 +260,7 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
M68KMAKE_OPCODE_HANDLER_HEADER
#include "emu.h"
-#include "m68kcpu.h"
-extern void m68040_fpu_op0(m68000_base_device *m68k);
-extern void m68040_fpu_op1(m68000_base_device *m68k);
-extern void m68881_mmu_ops(m68000_base_device *m68k);
-extern void m68881_ftrap(m68000_base_device *m68k);
+#include "m68000.h"
/* ======================================================================== */
/* ========================= INSTRUCTION HANDLERS ========================= */
@@ -890,61 +885,61 @@ M68KMAKE_OPCODE_HANDLER_BODY
M68KMAKE_OP(1010, 0, ., .)
{
- m68ki_exception_1010(mc68kcpu);
+ m68ki_exception_1010();
}
M68KMAKE_OP(1111, 0, ., .)
{
- m68ki_exception_1111(mc68kcpu);
+ m68ki_exception_1111();
}
M68KMAKE_OP(040fpu0, 32, ., .)
{
- if((mc68kcpu)->get_fpu_enable())
+ if(m_has_fpu)
{
- m68040_fpu_op0(mc68kcpu);
+ m68040_fpu_op0();
return;
}
- m68ki_exception_1111(mc68kcpu);
+ m68ki_exception_1111();
}
M68KMAKE_OP(040fpu1, 32, ., .)
{
- if((mc68kcpu)->get_fpu_enable())
+ if(m_has_fpu)
{
- m68040_fpu_op1(mc68kcpu);
+ m68040_fpu_op1();
return;
}
- m68ki_exception_1111(mc68kcpu);
+ m68ki_exception_1111();
}
M68KMAKE_OP(abcd, 8, rr, .)
{
- uint32_t* r_dst = &DX(mc68kcpu);
- uint32_t src = DY(mc68kcpu);
+ uint32_t* r_dst = &DX();
+ uint32_t src = DY();
uint32_t dst = *r_dst;
- uint32_t res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_1(mc68kcpu);
+ uint32_t res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_1();
uint32_t corf = 0;
if(res > 9)
corf = 6;
res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst);
- (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
+ m_v_flag = ~res; /* Undefined V behavior */
res += corf;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = (res > 0x9f) << 8;
- if((mc68kcpu)->c_flag)
+ m_x_flag = m_c_flag = (res > 0x9f) << 8;
+ if(m_c_flag)
res -= 0xa0;
- (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
+ m_v_flag &= res; /* Undefined V behavior part II */
+ m_n_flag = NFLAG_8(res); /* Undefined N behavior */
res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
}
@@ -952,307 +947,307 @@ M68KMAKE_OP(abcd, 8, rr, .)
M68KMAKE_OP(abcd, 8, mm, ax7)
{
- uint32_t src = OPER_AY_PD_8(mc68kcpu);
- uint32_t ea = EA_A7_PD_8(mc68kcpu);
- uint32_t dst = m68ki_read_8((mc68kcpu), ea);
- uint32_t res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_1(mc68kcpu);
+ uint32_t src = OPER_AY_PD_8();
+ uint32_t ea = EA_A7_PD_8();
+ uint32_t dst = m68ki_read_8(ea);
+ uint32_t res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_1();
uint32_t corf = 0;
if(res > 9)
corf = 6;
res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst);
- (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
+ m_v_flag = ~res; /* Undefined V behavior */
res += corf;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = (res > 0x9f) << 8;
- if((mc68kcpu)->c_flag)
+ m_x_flag = m_c_flag = (res > 0x9f) << 8;
+ if(m_c_flag)
res -= 0xa0;
- (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
+ m_v_flag &= res; /* Undefined V behavior part II */
+ m_n_flag = NFLAG_8(res); /* Undefined N behavior */
res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
}
M68KMAKE_OP(abcd, 8, mm, ay7)
{
- uint32_t src = OPER_A7_PD_8(mc68kcpu);
- uint32_t ea = EA_AX_PD_8(mc68kcpu);
- uint32_t dst = m68ki_read_8((mc68kcpu), ea);
- uint32_t res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_1(mc68kcpu);
+ uint32_t src = OPER_A7_PD_8();
+ uint32_t ea = EA_AX_PD_8();
+ uint32_t dst = m68ki_read_8(ea);
+ uint32_t res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_1();
uint32_t corf = 0;
if(res > 9)
corf = 6;
res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst);
- (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
+ m_v_flag = ~res; /* Undefined V behavior */
res += corf;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = (res > 0x9f) << 8;
- if((mc68kcpu)->c_flag)
+ m_x_flag = m_c_flag = (res > 0x9f) << 8;
+ if(m_c_flag)
res -= 0xa0;
- (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
+ m_v_flag &= res; /* Undefined V behavior part II */
+ m_n_flag = NFLAG_8(res); /* Undefined N behavior */
res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
}
M68KMAKE_OP(abcd, 8, mm, axy7)
{
- uint32_t src = OPER_A7_PD_8(mc68kcpu);
- uint32_t ea = EA_A7_PD_8(mc68kcpu);
- uint32_t dst = m68ki_read_8((mc68kcpu), ea);
- uint32_t res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_1(mc68kcpu);
+ uint32_t src = OPER_A7_PD_8();
+ uint32_t ea = EA_A7_PD_8();
+ uint32_t dst = m68ki_read_8(ea);
+ uint32_t res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_1();
uint32_t corf = 0;
if(res > 9)
corf = 6;
res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst);
- (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
+ m_v_flag = ~res; /* Undefined V behavior */
res += corf;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = (res > 0x9f) << 8;
- if((mc68kcpu)->c_flag)
+ m_x_flag = m_c_flag = (res > 0x9f) << 8;
+ if(m_c_flag)
res -= 0xa0;
- (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
+ m_v_flag &= res; /* Undefined V behavior part II */
+ m_n_flag = NFLAG_8(res); /* Undefined N behavior */
res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
}
M68KMAKE_OP(abcd, 8, mm, .)
{
- uint32_t src = OPER_AY_PD_8(mc68kcpu);
- uint32_t ea = EA_AX_PD_8(mc68kcpu);
- uint32_t dst = m68ki_read_8((mc68kcpu), ea);
- uint32_t res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_1(mc68kcpu);
+ uint32_t src = OPER_AY_PD_8();
+ uint32_t ea = EA_AX_PD_8();
+ uint32_t dst = m68ki_read_8(ea);
+ uint32_t res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_1();
uint32_t corf = 0;
if(res > 9)
corf = 6;
res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst);
- (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
+ m_v_flag = ~res; /* Undefined V behavior */
res += corf;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = (res > 0x9f) << 8;
- if((mc68kcpu)->c_flag)
+ m_x_flag = m_c_flag = (res > 0x9f) << 8;
+ if(m_c_flag)
res -= 0xa0;
- (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
+ m_v_flag &= res; /* Undefined V behavior part II */
+ m_n_flag = NFLAG_8(res); /* Undefined N behavior */
res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
}
M68KMAKE_OP(add, 8, er, d)
{
- uint32_t* r_dst = &DX(mc68kcpu);
- uint32_t src = MASK_OUT_ABOVE_8(DY(mc68kcpu));
+ uint32_t* r_dst = &DX();
+ uint32_t src = MASK_OUT_ABOVE_8(DY());
uint32_t dst = MASK_OUT_ABOVE_8(*r_dst);
uint32_t res = src + dst;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_v_flag = VFLAG_ADD_8(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_8(res);
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
+ *r_dst = MASK_OUT_BELOW_8(*r_dst) | m_not_z_flag;
}
M68KMAKE_OP(add, 8, er, .)
{
- uint32_t* r_dst = &DX(mc68kcpu);
+ uint32_t* r_dst = &DX();
uint32_t src = M68KMAKE_GET_OPER_AY_8;
uint32_t dst = MASK_OUT_ABOVE_8(*r_dst);
uint32_t res = src + dst;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_v_flag = VFLAG_ADD_8(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_8(res);
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
+ *r_dst = MASK_OUT_BELOW_8(*r_dst) | m_not_z_flag;
}
M68KMAKE_OP(add, 16, er, d)
{
- uint32_t* r_dst = &DX(mc68kcpu);
- uint32_t src = MASK_OUT_ABOVE_16(DY(mc68kcpu));
+ uint32_t* r_dst = &DX();
+ uint32_t src = MASK_OUT_ABOVE_16(DY());
uint32_t dst = MASK_OUT_ABOVE_16(*r_dst);
uint32_t res = src + dst;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_n_flag = NFLAG_16(res);
+ m_v_flag = VFLAG_ADD_16(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_16(res);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
+ *r_dst = MASK_OUT_BELOW_16(*r_dst) | m_not_z_flag;
}
M68KMAKE_OP(add, 16, er, a)
{
- uint32_t* r_dst = &DX(mc68kcpu);
- uint32_t src = MASK_OUT_ABOVE_16(AY(mc68kcpu));
+ uint32_t* r_dst = &DX();
+ uint32_t src = MASK_OUT_ABOVE_16(AY());
uint32_t dst = MASK_OUT_ABOVE_16(*r_dst);
uint32_t res = src + dst;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_n_flag = NFLAG_16(res);
+ m_v_flag = VFLAG_ADD_16(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_16(res);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
+ *r_dst = MASK_OUT_BELOW_16(*r_dst) | m_not_z_flag;
}
M68KMAKE_OP(add, 16, er, .)
{
- uint32_t* r_dst = &DX(mc68kcpu);
+ uint32_t* r_dst = &DX();
uint32_t src = M68KMAKE_GET_OPER_AY_16;
uint32_t dst = MASK_OUT_ABOVE_16(*r_dst);
uint32_t res = src + dst;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_n_flag = NFLAG_16(res);
+ m_v_flag = VFLAG_ADD_16(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_16(res);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
+ *r_dst = MASK_OUT_BELOW_16(*r_dst) | m_not_z_flag;
}
M68KMAKE_OP(add, 32, er, d)
{
- uint32_t* r_dst = &DX(mc68kcpu);
- uint32_t src = DY(mc68kcpu);
+ uint32_t* r_dst = &DX();
+ uint32_t src = DY();
uint32_t dst = *r_dst;
uint32_t res = src + dst;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_n_flag = NFLAG_32(res);
+ m_v_flag = VFLAG_ADD_32(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_ADD_32(src, dst, res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
- *r_dst = (mc68kcpu)->not_z_flag;
+ *r_dst = m_not_z_flag;
}
M68KMAKE_OP(add, 32, er, a)
{
- uint32_t* r_dst = &DX(mc68kcpu);
- uint32_t src = AY(mc68kcpu);
+ uint32_t* r_dst = &DX();
+ uint32_t src = AY();
uint32_t dst = *r_dst;
uint32_t res = src + dst;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_n_flag = NFLAG_32(res);
+ m_v_flag = VFLAG_ADD_32(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_ADD_32(src, dst, res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
- *r_dst = (mc68kcpu)->not_z_flag;
+ *r_dst = m_not_z_flag;
}
M68KMAKE_OP(add, 32, er, .)
{
- uint32_t* r_dst = &DX(mc68kcpu);
+ uint32_t* r_dst = &DX();
uint32_t src = M68KMAKE_GET_OPER_AY_32;
uint32_t dst = *r_dst;
uint32_t res = src + dst;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_n_flag = NFLAG_32(res);
+ m_v_flag = VFLAG_ADD_32(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_ADD_32(src, dst, res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
- *r_dst = (mc68kcpu)->not_z_flag;
+ *r_dst = m_not_z_flag;
}
M68KMAKE_OP(add, 8, re, .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- uint32_t src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- uint32_t dst = m68ki_read_8((mc68kcpu), ea);
+ uint32_t src = MASK_OUT_ABOVE_8(DX());
+ uint32_t dst = m68ki_read_8(ea);
uint32_t res = src + dst;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_v_flag = VFLAG_ADD_8(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_8(res);
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
+ m68ki_write_8(ea, m_not_z_flag);
}
M68KMAKE_OP(add, 16, re, .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- uint32_t src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- uint32_t dst = m68ki_read_16((mc68kcpu), ea);
+ uint32_t src = MASK_OUT_ABOVE_16(DX());
+ uint32_t dst = m68ki_read_16(ea);
uint32_t res = src + dst;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_n_flag = NFLAG_16(res);
+ m_v_flag = VFLAG_ADD_16(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_16(res);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
+ m68ki_write_16(ea, m_not_z_flag);
}
M68KMAKE_OP(add, 32, re, .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_32;
- uint32_t src = DX(mc68kcpu);
- uint32_t dst = m68ki_read_32((mc68kcpu), ea);
+ uint32_t src = DX();
+ uint32_t dst = m68ki_read_32(ea);
uint32_t res = src + dst;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_n_flag = NFLAG_32(res);
+ m_v_flag = VFLAG_ADD_32(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_ADD_32(src, dst, res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
+ m68ki_write_32(ea, m_not_z_flag);
}
M68KMAKE_OP(adda, 16, ., d)
{
- uint32_t* r_dst = &AX(mc68kcpu);
+ uint32_t* r_dst = &AX();
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + MAKE_INT_16(DY(mc68kcpu)));
+ *r_dst = MASK_OUT_ABOVE_32(*r_dst + MAKE_INT_16(DY()));
}
M68KMAKE_OP(adda, 16, ., a)
{
- uint32_t* r_dst = &AX(mc68kcpu);
+ uint32_t* r_dst = &AX();
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + MAKE_INT_16(AY(mc68kcpu)));
+ *r_dst = MASK_OUT_ABOVE_32(*r_dst + MAKE_INT_16(AY()));
}
M68KMAKE_OP(adda, 16, ., .)
{
- uint32_t* r_dst = &AX(mc68kcpu);
+ uint32_t* r_dst = &AX();
uint32_t src = MAKE_INT_16(M68KMAKE_GET_OPER_AY_16);
*r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
@@ -1261,23 +1256,23 @@ M68KMAKE_OP(adda, 16, ., .)
M68KMAKE_OP(adda, 32, ., d)
{
- uint32_t* r_dst = &AX(mc68kcpu);
+ uint32_t* r_dst = &AX();
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + DY(mc68kcpu));
+ *r_dst = MASK_OUT_ABOVE_32(*r_dst + DY());
}
M68KMAKE_OP(adda, 32, ., a)
{
- uint32_t* r_dst = &AX(mc68kcpu);
+ uint32_t* r_dst = &AX();
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + AY(mc68kcpu));
+ *r_dst = MASK_OUT_ABOVE_32(*r_dst + AY());
}
M68KMAKE_OP(adda, 32, ., .)
{
- uint32_t* r_dst = &AX(mc68kcpu);
+ uint32_t* r_dst = &AX();
uint32_t src = M68KMAKE_GET_OPER_AY_32;
*r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
@@ -1286,226 +1281,226 @@ M68KMAKE_OP(adda, 32, ., .)
M68KMAKE_OP(addi, 8, ., d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t src = OPER_I_8(mc68kcpu);
+ uint32_t* r_dst = &DY();
+ uint32_t src = OPER_I_8();
uint32_t dst = MASK_OUT_ABOVE_8(*r_dst);
uint32_t res = src + dst;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_v_flag = VFLAG_ADD_8(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_8(res);
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
+ *r_dst = MASK_OUT_BELOW_8(*r_dst) | m_not_z_flag;
}
M68KMAKE_OP(addi, 8, ., .)
{
- uint32_t src = OPER_I_8(mc68kcpu);
+ uint32_t src = OPER_I_8();
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- uint32_t dst = m68ki_read_8((mc68kcpu), ea);
+ uint32_t dst = m68ki_read_8(ea);
uint32_t res = src + dst;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_v_flag = VFLAG_ADD_8(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_8(res);
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
+ m68ki_write_8(ea, m_not_z_flag);
}
M68KMAKE_OP(addi, 16, ., d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t src = OPER_I_16(mc68kcpu);
+ uint32_t* r_dst = &DY();
+ uint32_t src = OPER_I_16();
uint32_t dst = MASK_OUT_ABOVE_16(*r_dst);
uint32_t res = src + dst;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_n_flag = NFLAG_16(res);
+ m_v_flag = VFLAG_ADD_16(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_16(res);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
+ *r_dst = MASK_OUT_BELOW_16(*r_dst) | m_not_z_flag;
}
M68KMAKE_OP(addi, 16, ., .)
{
- uint32_t src = OPER_I_16(mc68kcpu);
+ uint32_t src = OPER_I_16();
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- uint32_t dst = m68ki_read_16((mc68kcpu), ea);
+ uint32_t dst = m68ki_read_16(ea);
uint32_t res = src + dst;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_n_flag = NFLAG_16(res);
+ m_v_flag = VFLAG_ADD_16(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_16(res);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
+ m68ki_write_16(ea, m_not_z_flag);
}
M68KMAKE_OP(addi, 32, ., d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t src = OPER_I_32(mc68kcpu);
+ uint32_t* r_dst = &DY();
+ uint32_t src = OPER_I_32();
uint32_t dst = *r_dst;
uint32_t res = src + dst;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_n_flag = NFLAG_32(res);
+ m_v_flag = VFLAG_ADD_32(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_ADD_32(src, dst, res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
- *r_dst = (mc68kcpu)->not_z_flag;
+ *r_dst = m_not_z_flag;
}
M68KMAKE_OP(addi, 32, ., .)
{
- uint32_t src = OPER_I_32(mc68kcpu);
+ uint32_t src = OPER_I_32();
uint32_t ea = M68KMAKE_GET_EA_AY_32;
- uint32_t dst = m68ki_read_32((mc68kcpu), ea);
+ uint32_t dst = m68ki_read_32(ea);
uint32_t res = src + dst;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_n_flag = NFLAG_32(res);
+ m_v_flag = VFLAG_ADD_32(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_ADD_32(src, dst, res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
+ m68ki_write_32(ea, m_not_z_flag);
}
M68KMAKE_OP(addq, 8, ., d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t src = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t dst = MASK_OUT_ABOVE_8(*r_dst);
uint32_t res = src + dst;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_v_flag = VFLAG_ADD_8(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_8(res);
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
+ *r_dst = MASK_OUT_BELOW_8(*r_dst) | m_not_z_flag;
}
M68KMAKE_OP(addq, 8, ., .)
{
- uint32_t src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t src = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- uint32_t dst = m68ki_read_8((mc68kcpu), ea);
+ uint32_t dst = m68ki_read_8(ea);
uint32_t res = src + dst;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_v_flag = VFLAG_ADD_8(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_8(res);
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
+ m68ki_write_8(ea, m_not_z_flag);
}
M68KMAKE_OP(addq, 16, ., d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t src = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t dst = MASK_OUT_ABOVE_16(*r_dst);
uint32_t res = src + dst;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_n_flag = NFLAG_16(res);
+ m_v_flag = VFLAG_ADD_16(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_16(res);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
+ *r_dst = MASK_OUT_BELOW_16(*r_dst) | m_not_z_flag;
}
M68KMAKE_OP(addq, 16, ., a)
{
- uint32_t* r_dst = &AY(mc68kcpu);
+ uint32_t* r_dst = &AY();
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1);
+ *r_dst = MASK_OUT_ABOVE_32(*r_dst + (((m_ir >> 9) - 1) & 7) + 1);
}
M68KMAKE_OP(addq, 16, ., .)
{
- uint32_t src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t src = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- uint32_t dst = m68ki_read_16((mc68kcpu), ea);
+ uint32_t dst = m68ki_read_16(ea);
uint32_t res = src + dst;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_n_flag = NFLAG_16(res);
+ m_v_flag = VFLAG_ADD_16(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_16(res);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
+ m68ki_write_16(ea, m_not_z_flag);
}
M68KMAKE_OP(addq, 32, ., d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t src = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t dst = *r_dst;
uint32_t res = src + dst;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_n_flag = NFLAG_32(res);
+ m_v_flag = VFLAG_ADD_32(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_ADD_32(src, dst, res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
- *r_dst = (mc68kcpu)->not_z_flag;
+ *r_dst = m_not_z_flag;
}
M68KMAKE_OP(addq, 32, ., a)
{
- uint32_t* r_dst = &AY(mc68kcpu);
+ uint32_t* r_dst = &AY();
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1);
+ *r_dst = MASK_OUT_ABOVE_32(*r_dst + (((m_ir >> 9) - 1) & 7) + 1);
}
M68KMAKE_OP(addq, 32, ., .)
{
- uint32_t src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t src = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t ea = M68KMAKE_GET_EA_AY_32;
- uint32_t dst = m68ki_read_32((mc68kcpu), ea);
+ uint32_t dst = m68ki_read_32(ea);
uint32_t res = src + dst;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_n_flag = NFLAG_32(res);
+ m_v_flag = VFLAG_ADD_32(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_ADD_32(src, dst, res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
+ m68ki_write_32(ea, m_not_z_flag);
}
M68KMAKE_OP(addx, 8, rr, .)
{
- uint32_t* r_dst = &DX(mc68kcpu);
- uint32_t src = MASK_OUT_ABOVE_8(DY(mc68kcpu));
+ uint32_t* r_dst = &DX();
+ uint32_t src = MASK_OUT_ABOVE_8(DY());
uint32_t dst = MASK_OUT_ABOVE_8(*r_dst);
- uint32_t res = src + dst + XFLAG_1(mc68kcpu);
+ uint32_t res = src + dst + XFLAG_1();
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_v_flag = VFLAG_ADD_8(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_8(res);
res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
}
@@ -1513,17 +1508,17 @@ M68KMAKE_OP(addx, 8, rr, .)
M68KMAKE_OP(addx, 16, rr, .)
{
- uint32_t* r_dst = &DX(mc68kcpu);
- uint32_t src = MASK_OUT_ABOVE_16(DY(mc68kcpu));
+ uint32_t* r_dst = &DX();
+ uint32_t src = MASK_OUT_ABOVE_16(DY());
uint32_t dst = MASK_OUT_ABOVE_16(*r_dst);
- uint32_t res = src + dst + XFLAG_1(mc68kcpu);
+ uint32_t res = src + dst + XFLAG_1();
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
+ m_n_flag = NFLAG_16(res);
+ m_v_flag = VFLAG_ADD_16(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_16(res);
res = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
}
@@ -1531,17 +1526,17 @@ M68KMAKE_OP(addx, 16, rr, .)
M68KMAKE_OP(addx, 32, rr, .)
{
- uint32_t* r_dst = &DX(mc68kcpu);
- uint32_t src = DY(mc68kcpu);
+ uint32_t* r_dst = &DX();
+ uint32_t src = DY();
uint32_t dst = *r_dst;
- uint32_t res = src + dst + XFLAG_1(mc68kcpu);
+ uint32_t res = src + dst + XFLAG_1();
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
+ m_n_flag = NFLAG_32(res);
+ m_v_flag = VFLAG_ADD_32(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_ADD_32(src, dst, res);
res = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
*r_dst = res;
}
@@ -1549,384 +1544,384 @@ M68KMAKE_OP(addx, 32, rr, .)
M68KMAKE_OP(addx, 8, mm, ax7)
{
- uint32_t src = OPER_AY_PD_8(mc68kcpu);
- uint32_t ea = EA_A7_PD_8(mc68kcpu);
- uint32_t dst = m68ki_read_8((mc68kcpu), ea);
- uint32_t res = src + dst + XFLAG_1(mc68kcpu);
+ uint32_t src = OPER_AY_PD_8();
+ uint32_t ea = EA_A7_PD_8();
+ uint32_t dst = m68ki_read_8(ea);
+ uint32_t res = src + dst + XFLAG_1();
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_v_flag = VFLAG_ADD_8(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_8(res);
res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
}
M68KMAKE_OP(addx, 8, mm, ay7)
{
- uint32_t src = OPER_A7_PD_8(mc68kcpu);
- uint32_t ea = EA_AX_PD_8(mc68kcpu);
- uint32_t dst = m68ki_read_8((mc68kcpu), ea);
- uint32_t res = src + dst + XFLAG_1(mc68kcpu);
+ uint32_t src = OPER_A7_PD_8();
+ uint32_t ea = EA_AX_PD_8();
+ uint32_t dst = m68ki_read_8(ea);
+ uint32_t res = src + dst + XFLAG_1();
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_v_flag = VFLAG_ADD_8(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_8(res);
res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
}
M68KMAKE_OP(addx, 8, mm, axy7)
{
- uint32_t src = OPER_A7_PD_8(mc68kcpu);
- uint32_t ea = EA_A7_PD_8(mc68kcpu);
- uint32_t dst = m68ki_read_8((mc68kcpu), ea);
- uint32_t res = src + dst + XFLAG_1(mc68kcpu);
+ uint32_t src = OPER_A7_PD_8();
+ uint32_t ea = EA_A7_PD_8();
+ uint32_t dst = m68ki_read_8(ea);
+ uint32_t res = src + dst + XFLAG_1();
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_v_flag = VFLAG_ADD_8(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_8(res);
res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
}
M68KMAKE_OP(addx, 8, mm, .)
{
- uint32_t src = OPER_AY_PD_8(mc68kcpu);
- uint32_t ea = EA_AX_PD_8(mc68kcpu);
- uint32_t dst = m68ki_read_8((mc68kcpu), ea);
- uint32_t res = src + dst + XFLAG_1(mc68kcpu);
+ uint32_t src = OPER_AY_PD_8();
+ uint32_t ea = EA_AX_PD_8();
+ uint32_t dst = m68ki_read_8(ea);
+ uint32_t res = src + dst + XFLAG_1();
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_v_flag = VFLAG_ADD_8(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_8(res);
res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
}
M68KMAKE_OP(addx, 16, mm, .)
{
- uint32_t src = OPER_AY_PD_16(mc68kcpu);
- uint32_t ea = EA_AX_PD_16(mc68kcpu);
- uint32_t dst = m68ki_read_16((mc68kcpu), ea);
- uint32_t res = src + dst + XFLAG_1(mc68kcpu);
+ uint32_t src = OPER_AY_PD_16();
+ uint32_t ea = EA_AX_PD_16();
+ uint32_t dst = m68ki_read_16(ea);
+ uint32_t res = src + dst + XFLAG_1();
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
+ m_n_flag = NFLAG_16(res);
+ m_v_flag = VFLAG_ADD_16(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_16(res);
res = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
}
M68KMAKE_OP(addx, 32, mm, .)
{
- uint32_t src = OPER_AY_PD_32(mc68kcpu);
- uint32_t ea = EA_AX_PD_32(mc68kcpu);
- uint32_t dst = m68ki_read_32((mc68kcpu), ea);
- uint32_t res = src + dst + XFLAG_1(mc68kcpu);
+ uint32_t src = OPER_AY_PD_32();
+ uint32_t ea = EA_AX_PD_32();
+ uint32_t dst = m68ki_read_32(ea);
+ uint32_t res = src + dst + XFLAG_1();
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_32(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_ADD_32(src, dst, res);
+ m_n_flag = NFLAG_32(res);
+ m_v_flag = VFLAG_ADD_32(src, dst, res);
+ m_x_flag = m_c_flag = CFLAG_ADD_32(src, dst, res);
res = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
}
M68KMAKE_OP(and, 8, er, d)
{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (DY(mc68kcpu) | 0xffffff00));
+ m_not_z_flag = MASK_OUT_ABOVE_8(DX() &= (DY() | 0xffffff00));
- (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_8(m_not_z_flag);
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(and, 8, er, .)
{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (M68KMAKE_GET_OPER_AY_8 | 0xffffff00));
+ m_not_z_flag = MASK_OUT_ABOVE_8(DX() &= (M68KMAKE_GET_OPER_AY_8 | 0xffffff00));
- (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_8(m_not_z_flag);
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(and, 16, er, d)
{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DX(mc68kcpu) &= (DY(mc68kcpu) | 0xffff0000));
+ m_not_z_flag = MASK_OUT_ABOVE_16(DX() &= (DY() | 0xffff0000));
- (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(m_not_z_flag);
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(and, 16, er, .)
{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DX(mc68kcpu) &= (M68KMAKE_GET_OPER_AY_16 | 0xffff0000));
+ m_not_z_flag = MASK_OUT_ABOVE_16(DX() &= (M68KMAKE_GET_OPER_AY_16 | 0xffff0000));
- (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(m_not_z_flag);
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(and, 32, er, d)
{
- (mc68kcpu)->not_z_flag = DX(mc68kcpu) &= DY(mc68kcpu);
+ m_not_z_flag = DX() &= DY();
- (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_32(m_not_z_flag);
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(and, 32, er, .)
{
- (mc68kcpu)->not_z_flag = DX(mc68kcpu) &= M68KMAKE_GET_OPER_AY_32;
+ m_not_z_flag = DX() &= M68KMAKE_GET_OPER_AY_32;
- (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_32(m_not_z_flag);
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(and, 8, re, .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- uint32_t res = DX(mc68kcpu) & m68ki_read_8((mc68kcpu), ea);
+ uint32_t res = DX() & m68ki_read_8(ea);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
+ m68ki_write_8(ea, m_not_z_flag);
}
M68KMAKE_OP(and, 16, re, .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- uint32_t res = DX(mc68kcpu) & m68ki_read_16((mc68kcpu), ea);
+ uint32_t res = DX() & m68ki_read_16(ea);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_n_flag = NFLAG_16(res);
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
+ m68ki_write_16(ea, m_not_z_flag);
}
M68KMAKE_OP(and, 32, re, .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_32;
- uint32_t res = DX(mc68kcpu) & m68ki_read_32((mc68kcpu), ea);
+ uint32_t res = DX() & m68ki_read_32(ea);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
}
M68KMAKE_OP(andi, 8, ., d)
{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DY(mc68kcpu) &= (OPER_I_8(mc68kcpu) | 0xffffff00));
+ m_not_z_flag = MASK_OUT_ABOVE_8(DY() &= (OPER_I_8() | 0xffffff00));
- (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_8(m_not_z_flag);
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(andi, 8, ., .)
{
- uint32_t src = OPER_I_8(mc68kcpu);
+ uint32_t src = OPER_I_8();
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- uint32_t res = src & m68ki_read_8((mc68kcpu), ea);
+ uint32_t res = src & m68ki_read_8(ea);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
}
M68KMAKE_OP(andi, 16, ., d)
{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DY(mc68kcpu) &= (OPER_I_16(mc68kcpu) | 0xffff0000));
+ m_not_z_flag = MASK_OUT_ABOVE_16(DY() &= (OPER_I_16() | 0xffff0000));
- (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(m_not_z_flag);
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(andi, 16, ., .)
{
- uint32_t src = OPER_I_16(mc68kcpu);
+ uint32_t src = OPER_I_16();
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- uint32_t res = src & m68ki_read_16((mc68kcpu), ea);
+ uint32_t res = src & m68ki_read_16(ea);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
}
M68KMAKE_OP(andi, 32, ., d)
{
- (mc68kcpu)->not_z_flag = DY(mc68kcpu) &= (OPER_I_32(mc68kcpu));
+ m_not_z_flag = DY() &= (OPER_I_32());
- (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_32(m_not_z_flag);
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(andi, 32, ., .)
{
- uint32_t src = OPER_I_32(mc68kcpu);
+ uint32_t src = OPER_I_32();
uint32_t ea = M68KMAKE_GET_EA_AY_32;
- uint32_t res = src & m68ki_read_32((mc68kcpu), ea);
+ uint32_t res = src & m68ki_read_32(ea);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
}
M68KMAKE_OP(andi, 16, toc, .)
{
- m68ki_set_ccr((mc68kcpu), m68ki_get_ccr(mc68kcpu) & OPER_I_16(mc68kcpu));
+ m68ki_set_ccr(m68ki_get_ccr() & OPER_I_16());
}
M68KMAKE_OP(andi, 16, tos, .)
{
- if((mc68kcpu)->s_flag)
+ if(m_s_flag)
{
- uint32_t src = OPER_I_16(mc68kcpu);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_set_sr((mc68kcpu), m68ki_get_sr(mc68kcpu) & src);
+ uint32_t src = OPER_I_16();
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_set_sr(m68ki_get_sr() & src);
return;
}
- m68ki_exception_privilege_violation(mc68kcpu);
+ m68ki_exception_privilege_violation();
}
M68KMAKE_OP(asr, 8, s, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t src = MASK_OUT_ABOVE_8(*r_dst);
uint32_t res = src >> shift;
if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
if(GET_MSB_8(src))
res |= m68ki_shift_8_table[shift];
*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src << (9-shift);
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_x_flag = m_c_flag = src << (9-shift);
}
M68KMAKE_OP(asr, 16, s, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t src = MASK_OUT_ABOVE_16(*r_dst);
uint32_t res = src >> shift;
if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
if(GET_MSB_16(src))
res |= m68ki_shift_16_table[shift];
*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src << (9-shift);
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_x_flag = m_c_flag = src << (9-shift);
}
M68KMAKE_OP(asr, 32, s, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t src = *r_dst;
uint32_t res = src >> shift;
if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
if(GET_MSB_32(src))
res |= m68ki_shift_32_table[shift];
*r_dst = res;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src << (9-shift);
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_x_flag = m_c_flag = src << (9-shift);
}
M68KMAKE_OP(asr, 8, r, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = DX(mc68kcpu) & 0x3f;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = DX() & 0x3f;
uint32_t src = MASK_OUT_ABOVE_8(*r_dst);
uint32_t res = src >> shift;
if(shift != 0)
{
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
if(shift < 8)
{
@@ -1935,50 +1930,50 @@ M68KMAKE_OP(asr, 8, r, .)
*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src << (9-shift);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_x_flag = m_c_flag = src << (9-shift);
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
return;
}
if(GET_MSB_8(src))
{
*r_dst |= 0xff;
- (mc68kcpu)->c_flag = CFLAG_SET;
- (mc68kcpu)->x_flag = XFLAG_SET;
- (mc68kcpu)->n_flag = NFLAG_SET;
- (mc68kcpu)->not_z_flag = ZFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_SET;
+ m_x_flag = XFLAG_SET;
+ m_n_flag = NFLAG_SET;
+ m_not_z_flag = ZFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
return;
}
*r_dst &= 0xffffff00;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->x_flag = XFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_x_flag = XFLAG_CLEAR;
+ m_n_flag = NFLAG_CLEAR;
+ m_not_z_flag = ZFLAG_SET;
+ m_v_flag = VFLAG_CLEAR;
return;
}
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_8(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(src);
+ m_not_z_flag = src;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(asr, 16, r, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = DX(mc68kcpu) & 0x3f;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = DX() & 0x3f;
uint32_t src = MASK_OUT_ABOVE_16(*r_dst);
uint32_t res = src >> shift;
if(shift != 0)
{
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
if(shift < 16)
{
@@ -1987,50 +1982,50 @@ M68KMAKE_OP(asr, 16, r, .)
*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = (src >> (shift - 1))<<8;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = m_x_flag = (src >> (shift - 1))<<8;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
return;
}
if(GET_MSB_16(src))
{
*r_dst |= 0xffff;
- (mc68kcpu)->c_flag = CFLAG_SET;
- (mc68kcpu)->x_flag = XFLAG_SET;
- (mc68kcpu)->n_flag = NFLAG_SET;
- (mc68kcpu)->not_z_flag = ZFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_SET;
+ m_x_flag = XFLAG_SET;
+ m_n_flag = NFLAG_SET;
+ m_not_z_flag = ZFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
return;
}
*r_dst &= 0xffff0000;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->x_flag = XFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_x_flag = XFLAG_CLEAR;
+ m_n_flag = NFLAG_CLEAR;
+ m_not_z_flag = ZFLAG_SET;
+ m_v_flag = VFLAG_CLEAR;
return;
}
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_16(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(src);
+ m_not_z_flag = src;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(asr, 32, r, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = DX(mc68kcpu) & 0x3f;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = DX() & 0x3f;
uint32_t src = *r_dst;
uint32_t res = src >> shift;
if(shift != 0)
{
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
if(shift < 32)
{
@@ -2039,242 +2034,242 @@ M68KMAKE_OP(asr, 32, r, .)
*r_dst = res;
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = (src >> (shift - 1))<<8;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = m_x_flag = (src >> (shift - 1))<<8;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
return;
}
if(GET_MSB_32(src))
{
*r_dst = 0xffffffff;
- (mc68kcpu)->c_flag = CFLAG_SET;
- (mc68kcpu)->x_flag = XFLAG_SET;
- (mc68kcpu)->n_flag = NFLAG_SET;
- (mc68kcpu)->not_z_flag = ZFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_SET;
+ m_x_flag = XFLAG_SET;
+ m_n_flag = NFLAG_SET;
+ m_not_z_flag = ZFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
return;
}
*r_dst = 0;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->x_flag = XFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_x_flag = XFLAG_CLEAR;
+ m_n_flag = NFLAG_CLEAR;
+ m_not_z_flag = ZFLAG_SET;
+ m_v_flag = VFLAG_CLEAR;
return;
}
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_32(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(src);
+ m_not_z_flag = src;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(asr, 16, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- uint32_t src = m68ki_read_16((mc68kcpu), ea);
+ uint32_t src = m68ki_read_16(ea);
uint32_t res = src >> 1;
if(GET_MSB_16(src))
res |= 0x8000;
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = src << 8;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = m_x_flag = src << 8;
}
M68KMAKE_OP(asl, 8, s, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t src = MASK_OUT_ABOVE_8(*r_dst);
uint32_t res = MASK_OUT_ABOVE_8(src << shift);
if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src << shift;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
+ m_x_flag = m_c_flag = src << shift;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
src &= m68ki_shift_8_table[shift + 1];
- (mc68kcpu)->v_flag = (!(src == 0 || (src == m68ki_shift_8_table[shift + 1] && shift < 8)))<<7;
+ m_v_flag = (!(src == 0 || (src == m68ki_shift_8_table[shift + 1] && shift < 8)))<<7;
}
M68KMAKE_OP(asl, 16, s, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t src = MASK_OUT_ABOVE_16(*r_dst);
uint32_t res = MASK_OUT_ABOVE_16(src << shift);
if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> (8-shift);
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_x_flag = m_c_flag = src >> (8-shift);
src &= m68ki_shift_16_table[shift + 1];
- (mc68kcpu)->v_flag = (!(src == 0 || src == m68ki_shift_16_table[shift + 1]))<<7;
+ m_v_flag = (!(src == 0 || src == m68ki_shift_16_table[shift + 1]))<<7;
}
M68KMAKE_OP(asl, 32, s, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t src = *r_dst;
uint32_t res = MASK_OUT_ABOVE_32(src << shift);
if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
*r_dst = res;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> (24-shift);
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_x_flag = m_c_flag = src >> (24-shift);
src &= m68ki_shift_32_table[shift + 1];
- (mc68kcpu)->v_flag = (!(src == 0 || src == m68ki_shift_32_table[shift + 1]))<<7;
+ m_v_flag = (!(src == 0 || src == m68ki_shift_32_table[shift + 1]))<<7;
}
M68KMAKE_OP(asl, 8, r, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = DX(mc68kcpu) & 0x3f;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = DX() & 0x3f;
uint32_t src = MASK_OUT_ABOVE_8(*r_dst);
uint32_t res = MASK_OUT_ABOVE_8(src << shift);
if(shift != 0)
{
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
if(shift < 8)
{
*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src << shift;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
+ m_x_flag = m_c_flag = src << shift;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
src &= m68ki_shift_8_table[shift + 1];
- (mc68kcpu)->v_flag = (!(src == 0 || src == m68ki_shift_8_table[shift + 1]))<<7;
+ m_v_flag = (!(src == 0 || src == m68ki_shift_8_table[shift + 1]))<<7;
return;
}
*r_dst &= 0xffffff00;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = ((shift == 8 ? src & 1 : 0))<<8;
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
- (mc68kcpu)->v_flag = (!(src == 0))<<7;
+ m_x_flag = m_c_flag = ((shift == 8 ? src & 1 : 0))<<8;
+ m_n_flag = NFLAG_CLEAR;
+ m_not_z_flag = ZFLAG_SET;
+ m_v_flag = (!(src == 0))<<7;
return;
}
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_8(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(src);
+ m_not_z_flag = src;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(asl, 16, r, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = DX(mc68kcpu) & 0x3f;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = DX() & 0x3f;
uint32_t src = MASK_OUT_ABOVE_16(*r_dst);
uint32_t res = MASK_OUT_ABOVE_16(src << shift);
if(shift != 0)
{
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
if(shift < 16)
{
*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = (src << shift) >> 8;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
+ m_x_flag = m_c_flag = (src << shift) >> 8;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
src &= m68ki_shift_16_table[shift + 1];
- (mc68kcpu)->v_flag = (!(src == 0 || src == m68ki_shift_16_table[shift + 1]))<<7;
+ m_v_flag = (!(src == 0 || src == m68ki_shift_16_table[shift + 1]))<<7;
return;
}
*r_dst &= 0xffff0000;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = ((shift == 16 ? src & 1 : 0))<<8;
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
- (mc68kcpu)->v_flag = (!(src == 0))<<7;
+ m_x_flag = m_c_flag = ((shift == 16 ? src & 1 : 0))<<8;
+ m_n_flag = NFLAG_CLEAR;
+ m_not_z_flag = ZFLAG_SET;
+ m_v_flag = (!(src == 0))<<7;
return;
}
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_16(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(src);
+ m_not_z_flag = src;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(asl, 32, r, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = DX(mc68kcpu) & 0x3f;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = DX() & 0x3f;
uint32_t src = *r_dst;
uint32_t res = MASK_OUT_ABOVE_32(src << shift);
if(shift != 0)
{
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
if(shift < 32)
{
*r_dst = res;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = (src >> (32 - shift)) << 8;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
+ m_x_flag = m_c_flag = (src >> (32 - shift)) << 8;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
src &= m68ki_shift_32_table[shift + 1];
- (mc68kcpu)->v_flag = (!(src == 0 || src == m68ki_shift_32_table[shift + 1]))<<7;
+ m_v_flag = (!(src == 0 || src == m68ki_shift_32_table[shift + 1]))<<7;
return;
}
*r_dst = 0;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = ((shift == 32 ? src & 1 : 0))<<8;
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
- (mc68kcpu)->v_flag = (!(src == 0))<<7;
+ m_x_flag = m_c_flag = ((shift == 32 ? src & 1 : 0))<<8;
+ m_n_flag = NFLAG_CLEAR;
+ m_not_z_flag = ZFLAG_SET;
+ m_v_flag = (!(src == 0))<<7;
return;
}
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_32(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(src);
+ m_not_z_flag = src;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(asl, 16, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- uint32_t src = m68ki_read_16((mc68kcpu), ea);
+ uint32_t src = m68ki_read_16(ea);
uint32_t res = MASK_OUT_ABOVE_16(src << 1);
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> 7;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_x_flag = m_c_flag = src >> 7;
src &= 0xc000;
- (mc68kcpu)->v_flag = (!(src == 0 || src == 0xc000))<<7;
+ m_v_flag = (!(src == 0 || src == 0xc000))<<7;
}
@@ -2282,11 +2277,11 @@ M68KMAKE_OP(bcc, 8, ., .)
{
if(M68KMAKE_CC)
{
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_branch_8(MASK_OUT_ABOVE_8(m_ir));
return;
}
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
+ m_remaining_cycles -= m_cyc_bcc_notake_b;
}
@@ -2294,51 +2289,51 @@ M68KMAKE_OP(bcc, 16, ., .)
{
if(M68KMAKE_CC)
{
- uint32_t offset = OPER_I_16(mc68kcpu);
- REG_PC(mc68kcpu) -= 2;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_16((mc68kcpu), offset);
+ uint32_t offset = OPER_I_16();
+ m_pc -= 2;
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_branch_16(offset);
return;
}
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
+ m_pc += 2;
+ m_remaining_cycles -= m_cyc_bcc_notake_w;
}
M68KMAKE_OP(bcc, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
if(M68KMAKE_CC)
{
- uint32_t offset = OPER_I_32(mc68kcpu);
- REG_PC(mc68kcpu) -= 4;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_32((mc68kcpu), offset);
+ uint32_t offset = OPER_I_32();
+ m_pc -= 4;
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_branch_32(offset);
return;
}
- REG_PC(mc68kcpu) += 4;
+ m_pc += 4;
return;
}
else
{
if(M68KMAKE_CC)
{
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_branch_8(MASK_OUT_ABOVE_8(m_ir));
return;
}
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
+ m_remaining_cycles -= m_cyc_bcc_notake_b;
}
}
M68KMAKE_OP(bchg, 32, r, d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t mask = 1 << (DX(mc68kcpu) & 0x1f);
+ uint32_t* r_dst = &DY();
+ uint32_t mask = 1 << (DX() & 0x1f);
- (mc68kcpu)->not_z_flag = *r_dst & mask;
+ m_not_z_flag = *r_dst & mask;
*r_dst ^= mask;
}
@@ -2346,41 +2341,41 @@ M68KMAKE_OP(bchg, 32, r, d)
M68KMAKE_OP(bchg, 8, r, .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- uint32_t src = m68ki_read_8((mc68kcpu), ea);
- uint32_t mask = 1 << (DX(mc68kcpu) & 7);
+ uint32_t src = m68ki_read_8(ea);
+ uint32_t mask = 1 << (DX() & 7);
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src ^ mask);
+ m_not_z_flag = src & mask;
+ m68ki_write_8(ea, src ^ mask);
}
M68KMAKE_OP(bchg, 32, s, d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t mask = 1 << (OPER_I_8(mc68kcpu) & 0x1f);
+ uint32_t* r_dst = &DY();
+ uint32_t mask = 1 << (OPER_I_8() & 0x1f);
- (mc68kcpu)->not_z_flag = *r_dst & mask;
+ m_not_z_flag = *r_dst & mask;
*r_dst ^= mask;
}
M68KMAKE_OP(bchg, 8, s, .)
{
- uint32_t mask = 1 << (OPER_I_8(mc68kcpu) & 7);
+ uint32_t mask = 1 << (OPER_I_8() & 7);
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- uint32_t src = m68ki_read_8((mc68kcpu), ea);
+ uint32_t src = m68ki_read_8(ea);
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src ^ mask);
+ m_not_z_flag = src & mask;
+ m68ki_write_8(ea, src ^ mask);
}
M68KMAKE_OP(bclr, 32, r, d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t mask = 1 << (DX(mc68kcpu) & 0x1f);
+ uint32_t* r_dst = &DY();
+ uint32_t mask = 1 << (DX() & 0x1f);
- (mc68kcpu)->not_z_flag = *r_dst & mask;
+ m_not_z_flag = *r_dst & mask;
*r_dst &= ~mask;
}
@@ -2388,50 +2383,50 @@ M68KMAKE_OP(bclr, 32, r, d)
M68KMAKE_OP(bclr, 8, r, .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- uint32_t src = m68ki_read_8((mc68kcpu), ea);
- uint32_t mask = 1 << (DX(mc68kcpu) & 7);
+ uint32_t src = m68ki_read_8(ea);
+ uint32_t mask = 1 << (DX() & 7);
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src & ~mask);
+ m_not_z_flag = src & mask;
+ m68ki_write_8(ea, src & ~mask);
}
M68KMAKE_OP(bclr, 32, s, d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t mask = 1 << (OPER_I_8(mc68kcpu) & 0x1f);
+ uint32_t* r_dst = &DY();
+ uint32_t mask = 1 << (OPER_I_8() & 0x1f);
- (mc68kcpu)->not_z_flag = *r_dst & mask;
+ m_not_z_flag = *r_dst & mask;
*r_dst &= ~mask;
}
M68KMAKE_OP(bclr, 8, s, .)
{
- uint32_t mask = 1 << (OPER_I_8(mc68kcpu) & 7);
+ uint32_t mask = 1 << (OPER_I_8() & 7);
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- uint32_t src = m68ki_read_8((mc68kcpu), ea);
+ uint32_t src = m68ki_read_8(ea);
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src & ~mask);
+ m_not_z_flag = src & mask;
+ m68ki_write_8(ea, src & ~mask);
}
M68KMAKE_OP(bfchg, 32, ., d)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
uint32_t offset = (word2>>6)&31;
uint32_t width = word2;
- uint32_t* data = &DY(mc68kcpu);
+ uint32_t* data = &DY();
uint64_t mask;
if(BIT_B(word2))
- offset = REG_D(mc68kcpu)[offset&7];
+ offset = REG_D()[offset&7];
if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
+ width = REG_D()[width&7];
offset &= 31;
width = ((width-1) & 31) + 1;
@@ -2439,24 +2434,24 @@ M68KMAKE_OP(bfchg, 32, ., d)
mask = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
mask = ROR_32(mask, offset);
- (mc68kcpu)->n_flag = NFLAG_32(*data<<offset);
- (mc68kcpu)->not_z_flag = *data & mask;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(*data<<offset);
+ m_not_z_flag = *data & mask;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
*data ^= mask;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(bfchg, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
int32_t offset = (word2>>6)&31;
uint32_t width = word2;
uint32_t mask_base;
@@ -2468,9 +2463,9 @@ M68KMAKE_OP(bfchg, 32, ., .)
if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
+ offset = MAKE_INT_32(REG_D()[offset&7]);
if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
+ width = REG_D()[width&7];
/* Offset is signed so we have to use ugly math =( */
ea += offset / 8;
@@ -2485,42 +2480,42 @@ M68KMAKE_OP(bfchg, 32, ., .)
mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
mask_long = mask_base >> offset;
- data_long = m68ki_read_32((mc68kcpu), ea);
- (mc68kcpu)->n_flag = NFLAG_32(data_long << offset);
- (mc68kcpu)->not_z_flag = data_long & mask_long;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ data_long = m68ki_read_32(ea);
+ m_n_flag = NFLAG_32(data_long << offset);
+ m_not_z_flag = data_long & mask_long;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
- m68ki_write_32((mc68kcpu), ea, data_long ^ mask_long);
+ m68ki_write_32(ea, data_long ^ mask_long);
if((width + offset) > 32)
{
mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
- data_byte = m68ki_read_8((mc68kcpu), ea+4);
- (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
- m68ki_write_8((mc68kcpu), ea+4, data_byte ^ mask_byte);
+ data_byte = m68ki_read_8(ea+4);
+ m_not_z_flag |= (data_byte & mask_byte);
+ m68ki_write_8(ea+4, data_byte ^ mask_byte);
}
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(bfclr, 32, ., d)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
uint32_t offset = (word2>>6)&31;
uint32_t width = word2;
- uint32_t* data = &DY(mc68kcpu);
+ uint32_t* data = &DY();
uint64_t mask;
if(BIT_B(word2))
- offset = REG_D(mc68kcpu)[offset&7];
+ offset = REG_D()[offset&7];
if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
+ width = REG_D()[width&7];
offset &= 31;
@@ -2530,24 +2525,24 @@ M68KMAKE_OP(bfclr, 32, ., d)
mask = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
mask = ROR_32(mask, offset);
- (mc68kcpu)->n_flag = NFLAG_32(*data<<offset);
- (mc68kcpu)->not_z_flag = *data & mask;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(*data<<offset);
+ m_not_z_flag = *data & mask;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
*data &= ~mask;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(bfclr, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
int32_t offset = (word2>>6)&31;
uint32_t width = word2;
uint32_t mask_base;
@@ -2559,9 +2554,9 @@ M68KMAKE_OP(bfclr, 32, ., .)
if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
+ offset = MAKE_INT_32(REG_D()[offset&7]);
if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
+ width = REG_D()[width&7];
/* Offset is signed so we have to use ugly math =( */
ea += offset / 8;
@@ -2576,66 +2571,66 @@ M68KMAKE_OP(bfclr, 32, ., .)
mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
mask_long = mask_base >> offset;
- data_long = m68ki_read_32((mc68kcpu), ea);
- (mc68kcpu)->n_flag = NFLAG_32(data_long << offset);
- (mc68kcpu)->not_z_flag = data_long & mask_long;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ data_long = m68ki_read_32(ea);
+ m_n_flag = NFLAG_32(data_long << offset);
+ m_not_z_flag = data_long & mask_long;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
- m68ki_write_32((mc68kcpu), ea, data_long & ~mask_long);
+ m68ki_write_32(ea, data_long & ~mask_long);
if((width + offset) > 32)
{
mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
- data_byte = m68ki_read_8((mc68kcpu), ea+4);
- (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
- m68ki_write_8((mc68kcpu), ea+4, data_byte & ~mask_byte);
+ data_byte = m68ki_read_8(ea+4);
+ m_not_z_flag |= (data_byte & mask_byte);
+ m68ki_write_8(ea+4, data_byte & ~mask_byte);
}
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(bfexts, 32, ., d)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
uint32_t offset = (word2>>6)&31;
uint32_t width = word2;
- uint64_t data = DY(mc68kcpu);
+ uint64_t data = DY();
if(BIT_B(word2))
- offset = REG_D(mc68kcpu)[offset&7];
+ offset = REG_D()[offset&7];
if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
+ width = REG_D()[width&7];
offset &= 31;
width = ((width-1) & 31) + 1;
data = ROL_32(data, offset);
- (mc68kcpu)->n_flag = NFLAG_32(data);
+ m_n_flag = NFLAG_32(data);
data = MAKE_INT_32(data) >> (32 - width);
- (mc68kcpu)->not_z_flag = data;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_not_z_flag = data;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
- REG_D(mc68kcpu)[(word2>>12)&7] = data;
+ REG_D()[(word2>>12)&7] = data;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(bfexts, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
int32_t offset = (word2>>6)&31;
uint32_t width = word2;
uint32_t data;
@@ -2643,9 +2638,9 @@ M68KMAKE_OP(bfexts, 32, ., .)
if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
+ offset = MAKE_INT_32(REG_D()[offset&7]);
if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
+ width = REG_D()[width&7];
if(BIT_B(word2))
{
@@ -2660,68 +2655,68 @@ M68KMAKE_OP(bfexts, 32, ., .)
}
width = ((width-1) & 31) + 1;
- data = (offset+width) < 8 ? (m68ki_read_8((mc68kcpu), ea) << 24) :
- (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
+ data = (offset+width) < 8 ? (m68ki_read_8(ea) << 24) :
+ (offset+width) < 16 ? (m68ki_read_16(ea) << 16) : m68ki_read_32(ea);
data = MASK_OUT_ABOVE_32(data<<offset);
if((offset+width) > 32)
- data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
+ data |= (m68ki_read_8(ea+4) << offset) >> 8;
- (mc68kcpu)->n_flag = NFLAG_32(data);
+ m_n_flag = NFLAG_32(data);
data = MAKE_INT_32(data) >> (32 - width);
- (mc68kcpu)->not_z_flag = data;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_not_z_flag = data;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
+ REG_D()[(word2 >> 12) & 7] = data;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(bfextu, 32, ., d)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
uint32_t offset = (word2>>6)&31;
uint32_t width = word2;
- uint64_t data = DY(mc68kcpu);
+ uint64_t data = DY();
if(BIT_B(word2))
- offset = REG_D(mc68kcpu)[offset&7];
+ offset = REG_D()[offset&7];
if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
+ width = REG_D()[width&7];
offset &= 31;
width = ((width-1) & 31) + 1;
data = ROL_32(data, offset);
- (mc68kcpu)->n_flag = NFLAG_32(data);
+ m_n_flag = NFLAG_32(data);
data >>= 32 - width;
- (mc68kcpu)->not_z_flag = data;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_not_z_flag = data;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
- REG_D(mc68kcpu)[(word2>>12)&7] = data;
+ REG_D()[(word2>>12)&7] = data;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(bfextu, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
int32_t offset = (word2>>6)&31;
uint32_t width = word2;
uint32_t data;
@@ -2729,9 +2724,9 @@ M68KMAKE_OP(bfextu, 32, ., .)
if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
+ offset = MAKE_INT_32(REG_D()[offset&7]);
if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
+ width = REG_D()[width&7];
if(BIT_B(word2))
{
@@ -2746,71 +2741,71 @@ M68KMAKE_OP(bfextu, 32, ., .)
}
width = ((width-1) & 31) + 1;
- data = (offset+width) < 8 ? (m68ki_read_8((mc68kcpu), ea) << 24) :
- (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
+ data = (offset+width) < 8 ? (m68ki_read_8(ea) << 24) :
+ (offset+width) < 16 ? (m68ki_read_16(ea) << 16) : m68ki_read_32(ea);
data = MASK_OUT_ABOVE_32(data<<offset);
if((offset+width) > 32)
- data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
+ data |= (m68ki_read_8(ea+4) << offset) >> 8;
- (mc68kcpu)->n_flag = NFLAG_32(data);
+ m_n_flag = NFLAG_32(data);
data >>= (32 - width);
- (mc68kcpu)->not_z_flag = data;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_not_z_flag = data;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
+ REG_D()[(word2 >> 12) & 7] = data;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(bfffo, 32, ., d)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
uint32_t offset = (word2>>6)&31;
uint32_t width = word2;
- uint64_t data = DY(mc68kcpu);
+ uint64_t data = DY();
uint32_t bit;
if(BIT_B(word2))
- offset = REG_D(mc68kcpu)[offset&7];
+ offset = REG_D()[offset&7];
if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
+ width = REG_D()[width&7];
offset &= 31;
width = ((width-1) & 31) + 1;
data = ROL_32(data, offset);
- (mc68kcpu)->n_flag = NFLAG_32(data);
+ m_n_flag = NFLAG_32(data);
data >>= 32 - width;
- (mc68kcpu)->not_z_flag = data;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_not_z_flag = data;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
for(bit = 1<<(width-1);bit && !(data & bit);bit>>= 1)
offset++;
- REG_D(mc68kcpu)[(word2>>12)&7] = offset;
+ REG_D()[(word2>>12)&7] = offset;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(bfffo, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
int32_t offset = (word2>>6)&31;
int32_t local_offset;
uint32_t width = word2;
@@ -2820,9 +2815,9 @@ M68KMAKE_OP(bfffo, 32, ., .)
if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
+ offset = MAKE_INT_32(REG_D()[offset&7]);
if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
+ width = REG_D()[width&7];
/* Offset is signed so we have to use ugly math =( */
ea += offset / 8;
@@ -2834,46 +2829,46 @@ M68KMAKE_OP(bfffo, 32, ., .)
}
width = ((width-1) & 31) + 1;
- data = (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
+ data = (offset+width) < 16 ? (m68ki_read_16(ea) << 16) : m68ki_read_32(ea);
data = MASK_OUT_ABOVE_32(data<<local_offset);
if((local_offset+width) > 32)
- data |= (m68ki_read_8((mc68kcpu), ea+4) << local_offset) >> 8;
+ data |= (m68ki_read_8(ea+4) << local_offset) >> 8;
- (mc68kcpu)->n_flag = NFLAG_32(data);
+ m_n_flag = NFLAG_32(data);
data >>= (32 - width);
- (mc68kcpu)->not_z_flag = data;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_not_z_flag = data;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
for(bit = 1<<(width-1);bit && !(data & bit);bit>>= 1)
offset++;
- REG_D(mc68kcpu)[(word2>>12)&7] = offset;
+ REG_D()[(word2>>12)&7] = offset;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(bfins, 32, ., d)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
uint32_t offset = (word2>>6)&31;
uint32_t width = word2;
- uint32_t* data = &DY(mc68kcpu);
+ uint32_t* data = &DY();
uint64_t mask;
- uint64_t insert = REG_D(mc68kcpu)[(word2>>12)&7];
+ uint64_t insert = REG_D()[(word2>>12)&7];
if(BIT_B(word2))
- offset = REG_D(mc68kcpu)[offset&7];
+ offset = REG_D()[offset&7];
if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
+ width = REG_D()[width&7];
offset &= 31;
@@ -2884,30 +2879,30 @@ M68KMAKE_OP(bfins, 32, ., d)
mask = ROR_32(mask, offset);
insert = MASK_OUT_ABOVE_32(insert << (32 - width));
- (mc68kcpu)->n_flag = NFLAG_32(insert);
- (mc68kcpu)->not_z_flag = insert;
+ m_n_flag = NFLAG_32(insert);
+ m_not_z_flag = insert;
insert = ROR_32(insert, offset);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
*data &= ~mask;
*data |= insert;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(bfins, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
int32_t offset = (word2>>6)&31;
uint32_t width = word2;
- uint32_t insert_base = REG_D(mc68kcpu)[(word2>>12)&7];
+ uint32_t insert_base = REG_D()[(word2>>12)&7];
uint32_t insert_long;
uint32_t insert_byte;
uint32_t mask_base;
@@ -2919,9 +2914,9 @@ M68KMAKE_OP(bfins, 32, ., .)
if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
+ offset = MAKE_INT_32(REG_D()[offset&7]);
if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
+ width = REG_D()[width&7];
if(BIT_B(word2))
{
@@ -2940,57 +2935,57 @@ M68KMAKE_OP(bfins, 32, ., .)
mask_long = mask_base >> offset;
insert_base = MASK_OUT_ABOVE_32(insert_base << (32 - width));
- (mc68kcpu)->n_flag = NFLAG_32(insert_base);
- (mc68kcpu)->not_z_flag = insert_base;
+ m_n_flag = NFLAG_32(insert_base);
+ m_not_z_flag = insert_base;
insert_long = insert_base >> offset;
- data_long = (offset+width) < 8 ? (m68ki_read_8((mc68kcpu), ea) << 24) :
- (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ data_long = (offset+width) < 8 ? (m68ki_read_8(ea) << 24) :
+ (offset+width) < 16 ? (m68ki_read_16(ea) << 16) : m68ki_read_32(ea);
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
if((width + offset) < 8)
{
- m68ki_write_8((mc68kcpu), ea, ((data_long & ~mask_long) | insert_long) >> 24);
+ m68ki_write_8(ea, ((data_long & ~mask_long) | insert_long) >> 24);
}
else if((width + offset) < 16)
{
- m68ki_write_16((mc68kcpu), ea, ((data_long & ~mask_long) | insert_long) >> 16);
+ m68ki_write_16(ea, ((data_long & ~mask_long) | insert_long) >> 16);
}
else
{
- m68ki_write_32((mc68kcpu), ea, (data_long & ~mask_long) | insert_long);
+ m68ki_write_32(ea, (data_long & ~mask_long) | insert_long);
}
if((width + offset) > 32)
{
mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
insert_byte = MASK_OUT_ABOVE_8(insert_base) << (8-offset);
- data_byte = m68ki_read_8((mc68kcpu), ea+4);
- (mc68kcpu)->not_z_flag |= (insert_byte & mask_byte);
- m68ki_write_8((mc68kcpu), ea+4, (data_byte & ~mask_byte) | insert_byte);
+ data_byte = m68ki_read_8(ea+4);
+ m_not_z_flag |= (insert_byte & mask_byte);
+ m68ki_write_8(ea+4, (data_byte & ~mask_byte) | insert_byte);
}
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(bfset, 32, ., d)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
uint32_t offset = (word2>>6)&31;
uint32_t width = word2;
- uint32_t* data = &DY(mc68kcpu);
+ uint32_t* data = &DY();
uint64_t mask;
if(BIT_B(word2))
- offset = REG_D(mc68kcpu)[offset&7];
+ offset = REG_D()[offset&7];
if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
+ width = REG_D()[width&7];
offset &= 31;
@@ -3000,24 +2995,24 @@ M68KMAKE_OP(bfset, 32, ., d)
mask = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
mask = ROR_32(mask, offset);
- (mc68kcpu)->n_flag = NFLAG_32(*data<<offset);
- (mc68kcpu)->not_z_flag = *data & mask;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(*data<<offset);
+ m_not_z_flag = *data & mask;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
*data |= mask;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(bfset, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
int32_t offset = (word2>>6)&31;
uint32_t width = word2;
uint32_t mask_base;
@@ -3028,9 +3023,9 @@ M68KMAKE_OP(bfset, 32, ., .)
uint32_t ea = M68KMAKE_GET_EA_AY_8;
if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
+ offset = MAKE_INT_32(REG_D()[offset&7]);
if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
+ width = REG_D()[width&7];
/* Offset is signed so we have to use ugly math =( */
ea += offset / 8;
@@ -3045,42 +3040,42 @@ M68KMAKE_OP(bfset, 32, ., .)
mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
mask_long = mask_base >> offset;
- data_long = m68ki_read_32((mc68kcpu), ea);
- (mc68kcpu)->n_flag = NFLAG_32(data_long << offset);
- (mc68kcpu)->not_z_flag = data_long & mask_long;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ data_long = m68ki_read_32(ea);
+ m_n_flag = NFLAG_32(data_long << offset);
+ m_not_z_flag = data_long & mask_long;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
- m68ki_write_32((mc68kcpu), ea, data_long | mask_long);
+ m68ki_write_32(ea, data_long | mask_long);
if((width + offset) > 32)
{
mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
- data_byte = m68ki_read_8((mc68kcpu), ea+4);
- (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
- m68ki_write_8((mc68kcpu), ea+4, data_byte | mask_byte);
+ data_byte = m68ki_read_8(ea+4);
+ m_not_z_flag |= (data_byte & mask_byte);
+ m68ki_write_8(ea+4, data_byte | mask_byte);
}
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(bftst, 32, ., d)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
uint32_t offset = (word2>>6)&31;
uint32_t width = word2;
- uint32_t* data = &DY(mc68kcpu);
+ uint32_t* data = &DY();
uint64_t mask;
if(BIT_B(word2))
- offset = REG_D(mc68kcpu)[offset&7];
+ offset = REG_D()[offset&7];
if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
+ width = REG_D()[width&7];
offset &= 31;
@@ -3090,22 +3085,22 @@ M68KMAKE_OP(bftst, 32, ., d)
mask = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
mask = ROR_32(mask, offset);
- (mc68kcpu)->n_flag = NFLAG_32(*data<<offset);
- (mc68kcpu)->not_z_flag = *data & mask;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(*data<<offset);
+ m_not_z_flag = *data & mask;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(bftst, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
int32_t offset = (word2>>6)&31;
uint32_t width = word2;
uint32_t mask_base;
@@ -3116,9 +3111,9 @@ M68KMAKE_OP(bftst, 32, ., .)
uint32_t ea = M68KMAKE_GET_EA_AY_8;
if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
+ offset = MAKE_INT_32(REG_D()[offset&7]);
if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
+ width = REG_D()[width&7];
/* Offset is signed so we have to use ugly math =( */
ea += offset / 8;
@@ -3134,83 +3129,83 @@ M68KMAKE_OP(bftst, 32, ., .)
mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
mask_long = mask_base >> offset;
- data_long = m68ki_read_32((mc68kcpu), ea);
- (mc68kcpu)->n_flag = ((data_long & (0x80000000 >> offset))<<offset)>>24;
- (mc68kcpu)->not_z_flag = data_long & mask_long;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ data_long = m68ki_read_32(ea);
+ m_n_flag = ((data_long & (0x80000000 >> offset))<<offset)>>24;
+ m_not_z_flag = data_long & mask_long;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
if((width + offset) > 32)
{
mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
- data_byte = m68ki_read_8((mc68kcpu), ea+4);
- (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
+ data_byte = m68ki_read_8(ea+4);
+ m_not_z_flag |= (data_byte & mask_byte);
}
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(bkpt, 0, ., .)
{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_010_PLUS())
{
- if (!(mc68kcpu)->bkpt_ack_callback.isnull())
- ((mc68kcpu)->bkpt_ack_callback)((*mc68kcpu->program), 0, CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type) ? (mc68kcpu)->ir & 7 : 0, 0xffffffff);
+ if (!m_bkpt_ack_callback.isnull())
+ (m_bkpt_ack_callback)(*m_program, 0, CPU_TYPE_IS_EC020_PLUS() ? m_ir & 7 : 0, 0xffffffff);
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(bra, 8, ., .)
{
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
- (mc68kcpu)->remaining_cycles = 0;
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_branch_8(MASK_OUT_ABOVE_8(m_ir));
+ if(m_pc == m_ppc && m_remaining_cycles > 0)
+ m_remaining_cycles = 0;
}
M68KMAKE_OP(bra, 16, ., .)
{
- uint32_t offset = OPER_I_16(mc68kcpu);
- REG_PC(mc68kcpu) -= 2;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_16((mc68kcpu), offset);
- if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
- (mc68kcpu)->remaining_cycles = 0;
+ uint32_t offset = OPER_I_16();
+ m_pc -= 2;
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_branch_16(offset);
+ if(m_pc == m_ppc && m_remaining_cycles > 0)
+ m_remaining_cycles = 0;
}
M68KMAKE_OP(bra, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t offset = OPER_I_32(mc68kcpu);
- REG_PC(mc68kcpu) -= 4;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_32((mc68kcpu), offset);
- if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
- (mc68kcpu)->remaining_cycles = 0;
+ uint32_t offset = OPER_I_32();
+ m_pc -= 4;
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_branch_32(offset);
+ if(m_pc == m_ppc && m_remaining_cycles > 0)
+ m_remaining_cycles = 0;
return;
}
else
{
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
- (mc68kcpu)->remaining_cycles = 0;
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_branch_8(MASK_OUT_ABOVE_8(m_ir));
+ if(m_pc == m_ppc && m_remaining_cycles > 0)
+ m_remaining_cycles = 0;
}
}
M68KMAKE_OP(bset, 32, r, d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t mask = 1 << (DX(mc68kcpu) & 0x1f);
+ uint32_t* r_dst = &DY();
+ uint32_t mask = 1 << (DX() & 0x1f);
- (mc68kcpu)->not_z_flag = *r_dst & mask;
+ m_not_z_flag = *r_dst & mask;
*r_dst |= mask;
}
@@ -3218,238 +3213,238 @@ M68KMAKE_OP(bset, 32, r, d)
M68KMAKE_OP(bset, 8, r, .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- uint32_t src = m68ki_read_8((mc68kcpu), ea);
- uint32_t mask = 1 << (DX(mc68kcpu) & 7);
+ uint32_t src = m68ki_read_8(ea);
+ uint32_t mask = 1 << (DX() & 7);
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src | mask);
+ m_not_z_flag = src & mask;
+ m68ki_write_8(ea, src | mask);
}
M68KMAKE_OP(bset, 32, s, d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t mask = 1 << (OPER_I_8(mc68kcpu) & 0x1f);
+ uint32_t* r_dst = &DY();
+ uint32_t mask = 1 << (OPER_I_8() & 0x1f);
- (mc68kcpu)->not_z_flag = *r_dst & mask;
+ m_not_z_flag = *r_dst & mask;
*r_dst |= mask;
}
M68KMAKE_OP(bset, 8, s, .)
{
- uint32_t mask = 1 << (OPER_I_8(mc68kcpu) & 7);
+ uint32_t mask = 1 << (OPER_I_8() & 7);
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- uint32_t src = m68ki_read_8((mc68kcpu), ea);
+ uint32_t src = m68ki_read_8(ea);
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src | mask);
+ m_not_z_flag = src & mask;
+ m68ki_write_8(ea, src | mask);
}
M68KMAKE_OP(bsr, 8, ., .)
{
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_push_32(m_pc);
+ m68ki_branch_8(MASK_OUT_ABOVE_8(m_ir));
}
M68KMAKE_OP(bsr, 16, ., .)
{
- uint32_t offset = OPER_I_16(mc68kcpu);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
- REG_PC(mc68kcpu) -= 2;
- m68ki_branch_16((mc68kcpu), offset);
+ uint32_t offset = OPER_I_16();
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_push_32(m_pc);
+ m_pc -= 2;
+ m68ki_branch_16(offset);
}
M68KMAKE_OP(bsr, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t offset = OPER_I_32(mc68kcpu);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
- REG_PC(mc68kcpu) -= 4;
- m68ki_branch_32((mc68kcpu), offset);
+ uint32_t offset = OPER_I_32();
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_push_32(m_pc);
+ m_pc -= 4;
+ m68ki_branch_32(offset);
return;
}
else
{
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_push_32(m_pc);
+ m68ki_branch_8(MASK_OUT_ABOVE_8(m_ir));
}
}
M68KMAKE_OP(btst, 32, r, d)
{
- (mc68kcpu)->not_z_flag = DY(mc68kcpu) & (1 << (DX(mc68kcpu) & 0x1f));
+ m_not_z_flag = DY() & (1 << (DX() & 0x1f));
}
M68KMAKE_OP(btst, 8, r, .)
{
- (mc68kcpu)->not_z_flag = M68KMAKE_GET_OPER_AY_8 & (1 << (DX(mc68kcpu) & 7));
+ m_not_z_flag = M68KMAKE_GET_OPER_AY_8 & (1 << (DX() & 7));
}
M68KMAKE_OP(btst, 32, s, d)
{
- (mc68kcpu)->not_z_flag = DY(mc68kcpu) & (1 << (OPER_I_8(mc68kcpu) & 0x1f));
+ m_not_z_flag = DY() & (1 << (OPER_I_8() & 0x1f));
}
M68KMAKE_OP(btst, 8, s, .)
{
- uint32_t bit = OPER_I_8(mc68kcpu) & 7;
+ uint32_t bit = OPER_I_8() & 7;
- (mc68kcpu)->not_z_flag = M68KMAKE_GET_OPER_AY_8 & (1 << bit);
+ m_not_z_flag = M68KMAKE_GET_OPER_AY_8 & (1 << bit);
}
M68KMAKE_OP(callm, 32, ., .)
{
/* note: watch out for pcrelative modes */
- if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_020_VARIANT())
{
uint32_t ea = M68KMAKE_GET_EA_AY_32;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- REG_PC(mc68kcpu) += 2;
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m_pc += 2;
(void)ea; /* just to avoid an 'unused variable' warning */
- mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (callm)\n",
- (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
+ logerror("%s at %08x: called unimplemented instruction %04x (callm)\n",
+ tag(), m_ppc, m_ir);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(cas, 8, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- uint32_t dest = m68ki_read_8((mc68kcpu), ea);
- uint32_t* compare = &REG_D(mc68kcpu)[word2 & 7];
+ uint32_t dest = m68ki_read_8(ea);
+ uint32_t* compare = &REG_D()[word2 & 7];
uint32_t res = dest - MASK_OUT_ABOVE_8(*compare);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(*compare, dest, res);
- (mc68kcpu)->c_flag = CFLAG_8(res);
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_v_flag = VFLAG_SUB_8(*compare, dest, res);
+ m_c_flag = CFLAG_8(res);
- if(COND_NE(mc68kcpu))
+ if(COND_NE())
*compare = MASK_OUT_BELOW_8(*compare) | dest;
else
{
- (mc68kcpu)->remaining_cycles -= 3;
- m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(REG_D(mc68kcpu)[(word2 >> 6) & 7]));
+ m_remaining_cycles -= 3;
+ m68ki_write_8(ea, MASK_OUT_ABOVE_8(REG_D()[(word2 >> 6) & 7]));
}
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(cas, 16, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- uint32_t dest = m68ki_read_16((mc68kcpu), ea);
- uint32_t* compare = &REG_D(mc68kcpu)[word2 & 7];
+ uint32_t dest = m68ki_read_16(ea);
+ uint32_t* compare = &REG_D()[word2 & 7];
uint32_t res = dest - MASK_OUT_ABOVE_16(*compare);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_16(*compare, dest, res);
- (mc68kcpu)->c_flag = CFLAG_16(res);
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_v_flag = VFLAG_SUB_16(*compare, dest, res);
+ m_c_flag = CFLAG_16(res);
- if(COND_NE(mc68kcpu))
+ if(COND_NE())
*compare = MASK_OUT_BELOW_16(*compare) | dest;
else
{
- (mc68kcpu)->remaining_cycles -= 3;
- m68ki_write_16((mc68kcpu), ea, MASK_OUT_ABOVE_16(REG_D(mc68kcpu)[(word2 >> 6) & 7]));
+ m_remaining_cycles -= 3;
+ m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_D()[(word2 >> 6) & 7]));
}
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(cas, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
uint32_t ea = M68KMAKE_GET_EA_AY_32;
- uint32_t dest = m68ki_read_32((mc68kcpu), ea);
- uint32_t* compare = &REG_D(mc68kcpu)[word2 & 7];
+ uint32_t dest = m68ki_read_32(ea);
+ uint32_t* compare = &REG_D()[word2 & 7];
uint32_t res = dest - *compare;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(*compare, dest, res);
- (mc68kcpu)->c_flag = CFLAG_SUB_32(*compare, dest, res);
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_v_flag = VFLAG_SUB_32(*compare, dest, res);
+ m_c_flag = CFLAG_SUB_32(*compare, dest, res);
- if(COND_NE(mc68kcpu))
+ if(COND_NE())
*compare = dest;
else
{
- (mc68kcpu)->remaining_cycles -= 3;
- m68ki_write_32((mc68kcpu), ea, REG_D(mc68kcpu)[(word2 >> 6) & 7]);
+ m_remaining_cycles -= 3;
+ m68ki_write_32(ea, REG_D()[(word2 >> 6) & 7]);
}
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(cas2, 16, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_32(mc68kcpu);
- uint32_t* compare1 = &REG_D(mc68kcpu)[(word2 >> 16) & 7];
- uint32_t ea1 = REG_DA(mc68kcpu)[(word2 >> 28) & 15];
- uint32_t dest1 = m68ki_read_16((mc68kcpu), ea1);
+ uint32_t word2 = OPER_I_32();
+ uint32_t* compare1 = &REG_D()[(word2 >> 16) & 7];
+ uint32_t ea1 = REG_DA()[(word2 >> 28) & 15];
+ uint32_t dest1 = m68ki_read_16(ea1);
uint32_t res1 = dest1 - MASK_OUT_ABOVE_16(*compare1);
- uint32_t* compare2 = &REG_D(mc68kcpu)[word2 & 7];
- uint32_t ea2 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- uint32_t dest2 = m68ki_read_16((mc68kcpu), ea2);
+ uint32_t* compare2 = &REG_D()[word2 & 7];
+ uint32_t ea2 = REG_DA()[(word2 >> 12) & 15];
+ uint32_t dest2 = m68ki_read_16(ea2);
uint32_t res2;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- (mc68kcpu)->n_flag = NFLAG_16(res1);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res1);
- (mc68kcpu)->v_flag = VFLAG_SUB_16(*compare1, dest1, res1);
- (mc68kcpu)->c_flag = CFLAG_16(res1);
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m_n_flag = NFLAG_16(res1);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res1);
+ m_v_flag = VFLAG_SUB_16(*compare1, dest1, res1);
+ m_c_flag = CFLAG_16(res1);
- if(COND_EQ(mc68kcpu))
+ if(COND_EQ())
{
res2 = dest2 - MASK_OUT_ABOVE_16(*compare2);
- (mc68kcpu)->n_flag = NFLAG_16(res2);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res2);
- (mc68kcpu)->v_flag = VFLAG_SUB_16(*compare2, dest2, res2);
- (mc68kcpu)->c_flag = CFLAG_16(res2);
+ m_n_flag = NFLAG_16(res2);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res2);
+ m_v_flag = VFLAG_SUB_16(*compare2, dest2, res2);
+ m_c_flag = CFLAG_16(res2);
- if(COND_EQ(mc68kcpu))
+ if(COND_EQ())
{
- (mc68kcpu)->remaining_cycles -= 3;
- m68ki_write_16((mc68kcpu), ea1, REG_D(mc68kcpu)[(word2 >> 22) & 7]);
- m68ki_write_16((mc68kcpu), ea2, REG_D(mc68kcpu)[(word2 >> 6) & 7]);
+ m_remaining_cycles -= 3;
+ m68ki_write_16(ea1, REG_D()[(word2 >> 22) & 7]);
+ m68ki_write_16(ea2, REG_D()[(word2 >> 6) & 7]);
return;
}
}
@@ -3457,44 +3452,44 @@ M68KMAKE_OP(cas2, 16, ., .)
*compare2 = BIT_F(word2) ? MAKE_INT_16(dest2) : MASK_OUT_BELOW_16(*compare2) | dest2;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(cas2, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_32(mc68kcpu);
- uint32_t* compare1 = &REG_D(mc68kcpu)[(word2 >> 16) & 7];
- uint32_t ea1 = REG_DA(mc68kcpu)[(word2 >> 28) & 15];
- uint32_t dest1 = m68ki_read_32((mc68kcpu), ea1);
+ uint32_t word2 = OPER_I_32();
+ uint32_t* compare1 = &REG_D()[(word2 >> 16) & 7];
+ uint32_t ea1 = REG_DA()[(word2 >> 28) & 15];
+ uint32_t dest1 = m68ki_read_32(ea1);
uint32_t res1 = dest1 - *compare1;
- uint32_t* compare2 = &REG_D(mc68kcpu)[word2 & 7];
- uint32_t ea2 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- uint32_t dest2 = m68ki_read_32((mc68kcpu), ea2);
+ uint32_t* compare2 = &REG_D()[word2 & 7];
+ uint32_t ea2 = REG_DA()[(word2 >> 12) & 15];
+ uint32_t dest2 = m68ki_read_32(ea2);
uint32_t res2;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- (mc68kcpu)->n_flag = NFLAG_32(res1);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res1);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(*compare1, dest1, res1);
- (mc68kcpu)->c_flag = CFLAG_SUB_32(*compare1, dest1, res1);
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m_n_flag = NFLAG_32(res1);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res1);
+ m_v_flag = VFLAG_SUB_32(*compare1, dest1, res1);
+ m_c_flag = CFLAG_SUB_32(*compare1, dest1, res1);
- if(COND_EQ(mc68kcpu))
+ if(COND_EQ())
{
res2 = dest2 - *compare2;
- (mc68kcpu)->n_flag = NFLAG_32(res2);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res2);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(*compare2, dest2, res2);
- (mc68kcpu)->c_flag = CFLAG_SUB_32(*compare2, dest2, res2);
+ m_n_flag = NFLAG_32(res2);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res2);
+ m_v_flag = VFLAG_SUB_32(*compare2, dest2, res2);
+ m_c_flag = CFLAG_SUB_32(*compare2, dest2, res2);
- if(COND_EQ(mc68kcpu))
+ if(COND_EQ())
{
- (mc68kcpu)->remaining_cycles -= 3;
- m68ki_write_32((mc68kcpu), ea1, REG_D(mc68kcpu)[(word2 >> 22) & 7]);
- m68ki_write_32((mc68kcpu), ea2, REG_D(mc68kcpu)[(word2 >> 6) & 7]);
+ m_remaining_cycles -= 3;
+ m68ki_write_32(ea1, REG_D()[(word2 >> 22) & 7]);
+ m68ki_write_32(ea2, REG_D()[(word2 >> 6) & 7]);
return;
}
}
@@ -3502,392 +3497,392 @@ M68KMAKE_OP(cas2, 32, ., .)
*compare2 = dest2;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(chk, 16, ., d)
{
- int32_t src = MAKE_INT_16(DX(mc68kcpu));
- int32_t bound = MAKE_INT_16(DY(mc68kcpu));
+ int32_t src = MAKE_INT_16(DX());
+ int32_t bound = MAKE_INT_16(DY());
- (mc68kcpu)->not_z_flag = ZFLAG_16(src); /* Undocumented */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undocumented */
- (mc68kcpu)->c_flag = CFLAG_CLEAR; /* Undocumented */
+ m_not_z_flag = ZFLAG_16(src); /* Undocumented */
+ m_v_flag = VFLAG_CLEAR; /* Undocumented */
+ m_c_flag = CFLAG_CLEAR; /* Undocumented */
if(src >= 0 && src <= bound)
{
return;
}
- (mc68kcpu)->n_flag = (src < 0)<<7;
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
+ m_n_flag = (src < 0)<<7;
+ m68ki_exception_trap(EXCEPTION_CHK);
}
M68KMAKE_OP(chk, 16, ., .)
{
- int32_t src = MAKE_INT_16(DX(mc68kcpu));
+ int32_t src = MAKE_INT_16(DX());
int32_t bound = MAKE_INT_16(M68KMAKE_GET_OPER_AY_16);
- (mc68kcpu)->not_z_flag = ZFLAG_16(src); /* Undocumented */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undocumented */
- (mc68kcpu)->c_flag = CFLAG_CLEAR; /* Undocumented */
+ m_not_z_flag = ZFLAG_16(src); /* Undocumented */
+ m_v_flag = VFLAG_CLEAR; /* Undocumented */
+ m_c_flag = CFLAG_CLEAR; /* Undocumented */
if(src >= 0 && src <= bound)
{
return;
}
- (mc68kcpu)->n_flag = (src < 0)<<7;
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
+ m_n_flag = (src < 0)<<7;
+ m68ki_exception_trap(EXCEPTION_CHK);
}
M68KMAKE_OP(chk, 32, ., d)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- int32_t src = MAKE_INT_32(DX(mc68kcpu));
- int32_t bound = MAKE_INT_32(DY(mc68kcpu));
+ int32_t src = MAKE_INT_32(DX());
+ int32_t bound = MAKE_INT_32(DY());
- (mc68kcpu)->not_z_flag = ZFLAG_32(src); /* Undocumented */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undocumented */
- (mc68kcpu)->c_flag = CFLAG_CLEAR; /* Undocumented */
+ m_not_z_flag = ZFLAG_32(src); /* Undocumented */
+ m_v_flag = VFLAG_CLEAR; /* Undocumented */
+ m_c_flag = CFLAG_CLEAR; /* Undocumented */
if(src >= 0 && src <= bound)
{
return;
}
- (mc68kcpu)->n_flag = (src < 0)<<7;
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
+ m_n_flag = (src < 0)<<7;
+ m68ki_exception_trap(EXCEPTION_CHK);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(chk, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- int32_t src = MAKE_INT_32(DX(mc68kcpu));
+ int32_t src = MAKE_INT_32(DX());
int32_t bound = MAKE_INT_32(M68KMAKE_GET_OPER_AY_32);
- (mc68kcpu)->not_z_flag = ZFLAG_32(src); /* Undocumented */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undocumented */
- (mc68kcpu)->c_flag = CFLAG_CLEAR; /* Undocumented */
+ m_not_z_flag = ZFLAG_32(src); /* Undocumented */
+ m_v_flag = VFLAG_CLEAR; /* Undocumented */
+ m_c_flag = CFLAG_CLEAR; /* Undocumented */
if(src >= 0 && src <= bound)
{
return;
}
- (mc68kcpu)->n_flag = (src < 0)<<7;
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
+ m_n_flag = (src < 0)<<7;
+ m68ki_exception_trap(EXCEPTION_CHK);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(chk2cmp2, 8, ., pcdi)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
- uint32_t compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xff;
- uint32_t ea = EA_PCDI_8(mc68kcpu);
- uint32_t lower_bound = m68ki_read_pcrel_8((mc68kcpu), ea);
- uint32_t upper_bound = m68ki_read_pcrel_8((mc68kcpu), ea + 1);
+ uint32_t word2 = OPER_I_16();
+ uint32_t compare = REG_DA()[(word2 >> 12) & 15]&0xff;
+ uint32_t ea = EA_PCDI_8();
+ uint32_t lower_bound = m68ki_read_pcrel_8(ea);
+ uint32_t upper_bound = m68ki_read_pcrel_8(ea + 1);
if(!BIT_F(word2))
- (mc68kcpu)->c_flag = MAKE_INT_8(compare) - MAKE_INT_8(lower_bound);
+ m_c_flag = MAKE_INT_8(compare) - MAKE_INT_8(lower_bound);
else
- (mc68kcpu)->c_flag = compare - lower_bound;
- (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
- if(COND_CS(mc68kcpu))
+ m_c_flag = compare - lower_bound;
+ m_not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
+ if(COND_CS())
{
if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
+ m68ki_exception_trap(EXCEPTION_CHK);
return;
}
- (mc68kcpu)->c_flag = upper_bound - compare;
- if(COND_CS(mc68kcpu) && BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
+ m_c_flag = upper_bound - compare;
+ if(COND_CS() && BIT_B(word2))
+ m68ki_exception_trap(EXCEPTION_CHK);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(chk2cmp2, 8, ., pcix)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
- uint32_t compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xff;
- uint32_t ea = EA_PCIX_8(mc68kcpu);
- uint32_t lower_bound = m68ki_read_pcrel_8((mc68kcpu), ea);
- uint32_t upper_bound = m68ki_read_pcrel_8((mc68kcpu), ea + 1);
+ uint32_t word2 = OPER_I_16();
+ uint32_t compare = REG_DA()[(word2 >> 12) & 15]&0xff;
+ uint32_t ea = EA_PCIX_8();
+ uint32_t lower_bound = m68ki_read_pcrel_8(ea);
+ uint32_t upper_bound = m68ki_read_pcrel_8(ea + 1);
if(!BIT_F(word2))
- (mc68kcpu)->c_flag = MAKE_INT_8(compare) - MAKE_INT_8(lower_bound);
+ m_c_flag = MAKE_INT_8(compare) - MAKE_INT_8(lower_bound);
else
- (mc68kcpu)->c_flag = compare - lower_bound;
- (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
- if(COND_CS(mc68kcpu))
+ m_c_flag = compare - lower_bound;
+ m_not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
+ if(COND_CS())
{
if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
+ m68ki_exception_trap(EXCEPTION_CHK);
return;
}
- (mc68kcpu)->c_flag = upper_bound - compare;
- if(COND_CS(mc68kcpu) && BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
+ m_c_flag = upper_bound - compare;
+ if(COND_CS() && BIT_B(word2))
+ m68ki_exception_trap(EXCEPTION_CHK);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(chk2cmp2, 8, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
- uint32_t compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xff;
+ uint32_t word2 = OPER_I_16();
+ uint32_t compare = REG_DA()[(word2 >> 12) & 15]&0xff;
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- uint32_t lower_bound = m68ki_read_8((mc68kcpu), ea);
- uint32_t upper_bound = m68ki_read_8((mc68kcpu), ea + 1);
+ uint32_t lower_bound = m68ki_read_8(ea);
+ uint32_t upper_bound = m68ki_read_8(ea + 1);
if(!BIT_F(word2))
- (mc68kcpu)->c_flag = MAKE_INT_8(compare) - MAKE_INT_8(lower_bound);
+ m_c_flag = MAKE_INT_8(compare) - MAKE_INT_8(lower_bound);
else
- (mc68kcpu)->c_flag = compare - lower_bound;
- (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
- if(COND_CS(mc68kcpu))
+ m_c_flag = compare - lower_bound;
+ m_not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
+ if(COND_CS())
{
if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
+ m68ki_exception_trap(EXCEPTION_CHK);
return;
}
- (mc68kcpu)->c_flag = upper_bound - compare;
- if(COND_CS(mc68kcpu) && BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
+ m_c_flag = upper_bound - compare;
+ if(COND_CS() && BIT_B(word2))
+ m68ki_exception_trap(EXCEPTION_CHK);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(chk2cmp2, 16, ., pcdi)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
- uint32_t compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xffff;
- uint32_t ea = EA_PCDI_16(mc68kcpu);
- uint32_t lower_bound = m68ki_read_pcrel_16((mc68kcpu), ea);
- uint32_t upper_bound = m68ki_read_pcrel_16((mc68kcpu), ea + 2);
+ uint32_t word2 = OPER_I_16();
+ uint32_t compare = REG_DA()[(word2 >> 12) & 15]&0xffff;
+ uint32_t ea = EA_PCDI_16();
+ uint32_t lower_bound = m68ki_read_pcrel_16(ea);
+ uint32_t upper_bound = m68ki_read_pcrel_16(ea + 2);
if(!BIT_F(word2))
- (mc68kcpu)->c_flag = MAKE_INT_16(compare) - MAKE_INT_16(lower_bound);
+ m_c_flag = MAKE_INT_16(compare) - MAKE_INT_16(lower_bound);
else
- (mc68kcpu)->c_flag = compare - lower_bound;
- (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
- (mc68kcpu)->c_flag = CFLAG_16((mc68kcpu)->c_flag);
- if(COND_CS(mc68kcpu))
+ m_c_flag = compare - lower_bound;
+ m_not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
+ m_c_flag = CFLAG_16(m_c_flag);
+ if(COND_CS())
{
if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
+ m68ki_exception_trap(EXCEPTION_CHK);
return;
}
if(!BIT_F(word2))
- (mc68kcpu)->c_flag = MAKE_INT_16(upper_bound) - MAKE_INT_16(compare);
+ m_c_flag = MAKE_INT_16(upper_bound) - MAKE_INT_16(compare);
else
- (mc68kcpu)->c_flag = upper_bound - compare;
- (mc68kcpu)->c_flag = CFLAG_16((mc68kcpu)->c_flag);
- if(COND_CS(mc68kcpu) && BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
+ m_c_flag = upper_bound - compare;
+ m_c_flag = CFLAG_16(m_c_flag);
+ if(COND_CS() && BIT_B(word2))
+ m68ki_exception_trap(EXCEPTION_CHK);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(chk2cmp2, 16, ., pcix)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
- uint32_t compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xffff;
- uint32_t ea = EA_PCIX_16(mc68kcpu);
- uint32_t lower_bound = m68ki_read_pcrel_16((mc68kcpu), ea);
- uint32_t upper_bound = m68ki_read_pcrel_16((mc68kcpu), ea + 2);
+ uint32_t word2 = OPER_I_16();
+ uint32_t compare = REG_DA()[(word2 >> 12) & 15]&0xffff;
+ uint32_t ea = EA_PCIX_16();
+ uint32_t lower_bound = m68ki_read_pcrel_16(ea);
+ uint32_t upper_bound = m68ki_read_pcrel_16(ea + 2);
if(!BIT_F(word2))
- (mc68kcpu)->c_flag = MAKE_INT_16(compare) - MAKE_INT_16(lower_bound);
+ m_c_flag = MAKE_INT_16(compare) - MAKE_INT_16(lower_bound);
else
- (mc68kcpu)->c_flag = compare - lower_bound;
- (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
- (mc68kcpu)->c_flag = CFLAG_16((mc68kcpu)->c_flag);
- if(COND_CS(mc68kcpu))
+ m_c_flag = compare - lower_bound;
+ m_not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
+ m_c_flag = CFLAG_16(m_c_flag);
+ if(COND_CS())
{
if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
+ m68ki_exception_trap(EXCEPTION_CHK);
return;
}
if(!BIT_F(word2))
- (mc68kcpu)->c_flag = MAKE_INT_16(upper_bound) - MAKE_INT_16(compare);
+ m_c_flag = MAKE_INT_16(upper_bound) - MAKE_INT_16(compare);
else
- (mc68kcpu)->c_flag = upper_bound - compare;
- (mc68kcpu)->c_flag = CFLAG_16((mc68kcpu)->c_flag);
- if(COND_CS(mc68kcpu) && BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
+ m_c_flag = upper_bound - compare;
+ m_c_flag = CFLAG_16(m_c_flag);
+ if(COND_CS() && BIT_B(word2))
+ m68ki_exception_trap(EXCEPTION_CHK);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(chk2cmp2, 16, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
- uint32_t compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xffff;
+ uint32_t word2 = OPER_I_16();
+ uint32_t compare = REG_DA()[(word2 >> 12) & 15]&0xffff;
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- uint32_t lower_bound = m68ki_read_16((mc68kcpu), ea);
- uint32_t upper_bound = m68ki_read_16((mc68kcpu), ea + 2);
+ uint32_t lower_bound = m68ki_read_16(ea);
+ uint32_t upper_bound = m68ki_read_16(ea + 2);
if(!BIT_F(word2))
- (mc68kcpu)->c_flag = MAKE_INT_16(compare) - MAKE_INT_16(lower_bound);
+ m_c_flag = MAKE_INT_16(compare) - MAKE_INT_16(lower_bound);
else
- (mc68kcpu)->c_flag = compare - lower_bound;
+ m_c_flag = compare - lower_bound;
- (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
- (mc68kcpu)->c_flag = CFLAG_16((mc68kcpu)->c_flag);
- if(COND_CS(mc68kcpu))
+ m_not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
+ m_c_flag = CFLAG_16(m_c_flag);
+ if(COND_CS())
{
if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
+ m68ki_exception_trap(EXCEPTION_CHK);
return;
}
if(!BIT_F(word2))
- (mc68kcpu)->c_flag = MAKE_INT_16(upper_bound) - MAKE_INT_16(compare);
+ m_c_flag = MAKE_INT_16(upper_bound) - MAKE_INT_16(compare);
else
- (mc68kcpu)->c_flag = upper_bound - compare;
+ m_c_flag = upper_bound - compare;
- (mc68kcpu)->c_flag = CFLAG_16((mc68kcpu)->c_flag);
- if(COND_CS(mc68kcpu) && BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
+ m_c_flag = CFLAG_16(m_c_flag);
+ if(COND_CS() && BIT_B(word2))
+ m68ki_exception_trap(EXCEPTION_CHK);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(chk2cmp2, 32, ., pcdi)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
- uint32_t compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- uint32_t ea = EA_PCDI_32(mc68kcpu);
- uint32_t lower_bound = m68ki_read_pcrel_32((mc68kcpu), ea);
- uint32_t upper_bound = m68ki_read_pcrel_32((mc68kcpu), ea + 4);
+ uint32_t word2 = OPER_I_16();
+ uint32_t compare = REG_DA()[(word2 >> 12) & 15];
+ uint32_t ea = EA_PCDI_32();
+ uint32_t lower_bound = m68ki_read_pcrel_32(ea);
+ uint32_t upper_bound = m68ki_read_pcrel_32(ea + 4);
- (mc68kcpu)->c_flag = compare - lower_bound;
- (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
- (mc68kcpu)->c_flag = CFLAG_SUB_32(lower_bound, compare, (mc68kcpu)->c_flag);
- if(COND_CS(mc68kcpu))
+ m_c_flag = compare - lower_bound;
+ m_not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
+ m_c_flag = CFLAG_SUB_32(lower_bound, compare, m_c_flag);
+ if(COND_CS())
{
if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
+ m68ki_exception_trap(EXCEPTION_CHK);
return;
}
- (mc68kcpu)->c_flag = upper_bound - compare;
- (mc68kcpu)->c_flag = CFLAG_SUB_32(compare, upper_bound, (mc68kcpu)->c_flag);
- if(COND_CS(mc68kcpu) && BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
+ m_c_flag = upper_bound - compare;
+ m_c_flag = CFLAG_SUB_32(compare, upper_bound, m_c_flag);
+ if(COND_CS() && BIT_B(word2))
+ m68ki_exception_trap(EXCEPTION_CHK);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(chk2cmp2, 32, ., pcix)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
- uint32_t compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- uint32_t ea = EA_PCIX_32(mc68kcpu);
- uint32_t lower_bound = m68ki_read_pcrel_32((mc68kcpu), ea);
- uint32_t upper_bound = m68ki_read_pcrel_32((mc68kcpu), ea + 4);
+ uint32_t word2 = OPER_I_16();
+ uint32_t compare = REG_DA()[(word2 >> 12) & 15];
+ uint32_t ea = EA_PCIX_32();
+ uint32_t lower_bound = m68ki_read_pcrel_32(ea);
+ uint32_t upper_bound = m68ki_read_pcrel_32(ea + 4);
- (mc68kcpu)->c_flag = compare - lower_bound;
- (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
- (mc68kcpu)->c_flag = CFLAG_SUB_32(lower_bound, compare, (mc68kcpu)->c_flag);
- if(COND_CS(mc68kcpu))
+ m_c_flag = compare - lower_bound;
+ m_not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
+ m_c_flag = CFLAG_SUB_32(lower_bound, compare, m_c_flag);
+ if(COND_CS())
{
if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
+ m68ki_exception_trap(EXCEPTION_CHK);
return;
}
- (mc68kcpu)->c_flag = upper_bound - compare;
- (mc68kcpu)->c_flag = CFLAG_SUB_32(compare, upper_bound, (mc68kcpu)->c_flag);
- if(COND_CS(mc68kcpu) && BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
+ m_c_flag = upper_bound - compare;
+ m_c_flag = CFLAG_SUB_32(compare, upper_bound, m_c_flag);
+ if(COND_CS() && BIT_B(word2))
+ m68ki_exception_trap(EXCEPTION_CHK);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(chk2cmp2, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
- uint32_t compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
+ uint32_t word2 = OPER_I_16();
+ uint32_t compare = REG_DA()[(word2 >> 12) & 15];
uint32_t ea = M68KMAKE_GET_EA_AY_32;
- uint32_t lower_bound = m68ki_read_32((mc68kcpu), ea);
- uint32_t upper_bound = m68ki_read_32((mc68kcpu), ea + 4);
+ uint32_t lower_bound = m68ki_read_32(ea);
+ uint32_t upper_bound = m68ki_read_32(ea + 4);
- (mc68kcpu)->c_flag = compare - lower_bound;
- (mc68kcpu)->not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
- (mc68kcpu)->c_flag = CFLAG_SUB_32(lower_bound, compare, (mc68kcpu)->c_flag);
- if(COND_CS(mc68kcpu))
+ m_c_flag = compare - lower_bound;
+ m_not_z_flag = !((upper_bound==compare) | (lower_bound==compare));
+ m_c_flag = CFLAG_SUB_32(lower_bound, compare, m_c_flag);
+ if(COND_CS())
{
if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
+ m68ki_exception_trap(EXCEPTION_CHK);
return;
}
- (mc68kcpu)->c_flag = upper_bound - compare;
- (mc68kcpu)->c_flag = CFLAG_SUB_32(compare, upper_bound, (mc68kcpu)->c_flag);
- if(COND_CS(mc68kcpu) && BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
+ m_c_flag = upper_bound - compare;
+ m_c_flag = CFLAG_SUB_32(compare, upper_bound, m_c_flag);
+ if(COND_CS() && BIT_B(word2))
+ m68ki_exception_trap(EXCEPTION_CHK);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(clr, 8, ., d)
{
- DY(mc68kcpu) &= 0xffffff00;
+ DY() &= 0xffffff00;
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
+ m_n_flag = NFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_not_z_flag = ZFLAG_SET;
}
@@ -3895,28 +3890,28 @@ M68KMAKE_OP(clr, 8, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_000())
{
- m68ki_read_8((mc68kcpu), ea); /* the 68000 does a dummy read, the value is discarded */
+ m68ki_read_8(ea); /* the 68000 does a dummy read, the value is discarded */
}
- m68ki_write_8((mc68kcpu), ea, 0);
+ m68ki_write_8(ea, 0);
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
+ m_n_flag = NFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_not_z_flag = ZFLAG_SET;
}
M68KMAKE_OP(clr, 16, ., d)
{
- DY(mc68kcpu) &= 0xffff0000;
+ DY() &= 0xffff0000;
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
+ m_n_flag = NFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_not_z_flag = ZFLAG_SET;
}
@@ -3924,28 +3919,28 @@ M68KMAKE_OP(clr, 16, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_000())
{
- m68ki_read_16((mc68kcpu), ea); /* the 68000 does a dummy read, the value is discarded */
+ m68ki_read_16(ea); /* the 68000 does a dummy read, the value is discarded */
}
- m68ki_write_16((mc68kcpu), ea, 0);
+ m68ki_write_16(ea, 0);
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
+ m_n_flag = NFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_not_z_flag = ZFLAG_SET;
}
M68KMAKE_OP(clr, 32, ., d)
{
- DY(mc68kcpu) = 0;
+ DY() = 0;
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
+ m_n_flag = NFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_not_z_flag = ZFLAG_SET;
}
@@ -3953,561 +3948,561 @@ M68KMAKE_OP(clr, 32, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_32;
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_000())
{
- m68ki_read_32((mc68kcpu), ea); /* the 68000 does a dummy read, the value is discarded */
+ m68ki_read_32(ea); /* the 68000 does a dummy read, the value is discarded */
}
- m68ki_write_32((mc68kcpu), ea, 0);
+ m68ki_write_32(ea, 0);
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
+ m_n_flag = NFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_not_z_flag = ZFLAG_SET;
}
M68KMAKE_OP(cmp, 8, ., d)
{
- uint32_t src = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- uint32_t dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
+ uint32_t src = MASK_OUT_ABOVE_8(DY());
+ uint32_t dst = MASK_OUT_ABOVE_8(DX());
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_v_flag = VFLAG_SUB_8(src, dst, res);
+ m_c_flag = CFLAG_8(res);
}
M68KMAKE_OP(cmp, 8, ., .)
{
uint32_t src = M68KMAKE_GET_OPER_AY_8;
- uint32_t dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
+ uint32_t dst = MASK_OUT_ABOVE_8(DX());
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_v_flag = VFLAG_SUB_8(src, dst, res);
+ m_c_flag = CFLAG_8(res);
}
M68KMAKE_OP(cmp, 16, ., d)
{
- uint32_t src = MASK_OUT_ABOVE_16(DY(mc68kcpu));
- uint32_t dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
+ uint32_t src = MASK_OUT_ABOVE_16(DY());
+ uint32_t dst = MASK_OUT_ABOVE_16(DX());
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_16(res);
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_v_flag = VFLAG_SUB_16(src, dst, res);
+ m_c_flag = CFLAG_16(res);
}
M68KMAKE_OP(cmp, 16, ., a)
{
- uint32_t src = MASK_OUT_ABOVE_16(AY(mc68kcpu));
- uint32_t dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
+ uint32_t src = MASK_OUT_ABOVE_16(AY());
+ uint32_t dst = MASK_OUT_ABOVE_16(DX());
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_16(res);
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_v_flag = VFLAG_SUB_16(src, dst, res);
+ m_c_flag = CFLAG_16(res);
}
M68KMAKE_OP(cmp, 16, ., .)
{
uint32_t src = M68KMAKE_GET_OPER_AY_16;
- uint32_t dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
+ uint32_t dst = MASK_OUT_ABOVE_16(DX());
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_16(res);
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_v_flag = VFLAG_SUB_16(src, dst, res);
+ m_c_flag = CFLAG_16(res);
}
M68KMAKE_OP(cmp, 32, ., d)
{
- uint32_t src = DY(mc68kcpu);
- uint32_t dst = DX(mc68kcpu);
+ uint32_t src = DY();
+ uint32_t dst = DX();
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_v_flag = VFLAG_SUB_32(src, dst, res);
+ m_c_flag = CFLAG_SUB_32(src, dst, res);
}
M68KMAKE_OP(cmp, 32, ., a)
{
- uint32_t src = AY(mc68kcpu);
- uint32_t dst = DX(mc68kcpu);
+ uint32_t src = AY();
+ uint32_t dst = DX();
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_v_flag = VFLAG_SUB_32(src, dst, res);
+ m_c_flag = CFLAG_SUB_32(src, dst, res);
}
M68KMAKE_OP(cmp, 32, ., .)
{
uint32_t src = M68KMAKE_GET_OPER_AY_32;
- uint32_t dst = DX(mc68kcpu);
+ uint32_t dst = DX();
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_v_flag = VFLAG_SUB_32(src, dst, res);
+ m_c_flag = CFLAG_SUB_32(src, dst, res);
}
M68KMAKE_OP(cmpa, 16, ., d)
{
- uint32_t src = MAKE_INT_16(DY(mc68kcpu));
- uint32_t dst = AX(mc68kcpu);
+ uint32_t src = MAKE_INT_16(DY());
+ uint32_t dst = AX();
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_v_flag = VFLAG_SUB_32(src, dst, res);
+ m_c_flag = CFLAG_SUB_32(src, dst, res);
}
M68KMAKE_OP(cmpa, 16, ., a)
{
- uint32_t src = MAKE_INT_16(AY(mc68kcpu));
- uint32_t dst = AX(mc68kcpu);
+ uint32_t src = MAKE_INT_16(AY());
+ uint32_t dst = AX();
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_v_flag = VFLAG_SUB_32(src, dst, res);
+ m_c_flag = CFLAG_SUB_32(src, dst, res);
}
M68KMAKE_OP(cmpa, 16, ., .)
{
uint32_t src = MAKE_INT_16(M68KMAKE_GET_OPER_AY_16);
- uint32_t dst = AX(mc68kcpu);
+ uint32_t dst = AX();
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_v_flag = VFLAG_SUB_32(src, dst, res);
+ m_c_flag = CFLAG_SUB_32(src, dst, res);
}
M68KMAKE_OP(cmpa, 32, ., d)
{
- uint32_t src = DY(mc68kcpu);
- uint32_t dst = AX(mc68kcpu);
+ uint32_t src = DY();
+ uint32_t dst = AX();
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_v_flag = VFLAG_SUB_32(src, dst, res);
+ m_c_flag = CFLAG_SUB_32(src, dst, res);
}
M68KMAKE_OP(cmpa, 32, ., a)
{
- uint32_t src = AY(mc68kcpu);
- uint32_t dst = AX(mc68kcpu);
+ uint32_t src = AY();
+ uint32_t dst = AX();
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_v_flag = VFLAG_SUB_32(src, dst, res);
+ m_c_flag = CFLAG_SUB_32(src, dst, res);
}
M68KMAKE_OP(cmpa, 32, ., .)
{
uint32_t src = M68KMAKE_GET_OPER_AY_32;
- uint32_t dst = AX(mc68kcpu);
+ uint32_t dst = AX();
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_v_flag = VFLAG_SUB_32(src, dst, res);
+ m_c_flag = CFLAG_SUB_32(src, dst, res);
}
M68KMAKE_OP(cmpi, 8, ., d)
{
- uint32_t src = OPER_I_8(mc68kcpu);
- uint32_t dst = MASK_OUT_ABOVE_8(DY(mc68kcpu));
+ uint32_t src = OPER_I_8();
+ uint32_t dst = MASK_OUT_ABOVE_8(DY());
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_v_flag = VFLAG_SUB_8(src, dst, res);
+ m_c_flag = CFLAG_8(res);
}
M68KMAKE_OP(cmpi, 8, ., .)
{
- uint32_t src = OPER_I_8(mc68kcpu);
+ uint32_t src = OPER_I_8();
uint32_t dst = M68KMAKE_GET_OPER_AY_8;
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_v_flag = VFLAG_SUB_8(src, dst, res);
+ m_c_flag = CFLAG_8(res);
}
M68KMAKE_OP(cmpi, 8, ., pcdi)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t src = OPER_I_8(mc68kcpu);
- uint32_t dst = OPER_PCDI_8(mc68kcpu);
+ uint32_t src = OPER_I_8();
+ uint32_t dst = OPER_PCDI_8();
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_v_flag = VFLAG_SUB_8(src, dst, res);
+ m_c_flag = CFLAG_8(res);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(cmpi, 8, ., pcix)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t src = OPER_I_8(mc68kcpu);
- uint32_t dst = OPER_PCIX_8(mc68kcpu);
+ uint32_t src = OPER_I_8();
+ uint32_t dst = OPER_PCIX_8();
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_v_flag = VFLAG_SUB_8(src, dst, res);
+ m_c_flag = CFLAG_8(res);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(cmpi, 16, ., d)
{
- uint32_t src = OPER_I_16(mc68kcpu);
- uint32_t dst = MASK_OUT_ABOVE_16(DY(mc68kcpu));
+ uint32_t src = OPER_I_16();
+ uint32_t dst = MASK_OUT_ABOVE_16(DY());
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_16(res);
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_v_flag = VFLAG_SUB_16(src, dst, res);
+ m_c_flag = CFLAG_16(res);
}
M68KMAKE_OP(cmpi, 16, ., .)
{
- uint32_t src = OPER_I_16(mc68kcpu);
+ uint32_t src = OPER_I_16();
uint32_t dst = M68KMAKE_GET_OPER_AY_16;
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_16(res);
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_v_flag = VFLAG_SUB_16(src, dst, res);
+ m_c_flag = CFLAG_16(res);
}
M68KMAKE_OP(cmpi, 16, ., pcdi)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t src = OPER_I_16(mc68kcpu);
- uint32_t dst = OPER_PCDI_16(mc68kcpu);
+ uint32_t src = OPER_I_16();
+ uint32_t dst = OPER_PCDI_16();
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_16(res);
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_v_flag = VFLAG_SUB_16(src, dst, res);
+ m_c_flag = CFLAG_16(res);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(cmpi, 16, ., pcix)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t src = OPER_I_16(mc68kcpu);
- uint32_t dst = OPER_PCIX_16(mc68kcpu);
+ uint32_t src = OPER_I_16();
+ uint32_t dst = OPER_PCIX_16();
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_16(res);
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_v_flag = VFLAG_SUB_16(src, dst, res);
+ m_c_flag = CFLAG_16(res);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(cmpi, 32, ., d)
{
- uint32_t src = OPER_I_32(mc68kcpu);
- uint32_t dst = DY(mc68kcpu);
+ uint32_t src = OPER_I_32();
+ uint32_t dst = DY();
uint32_t res = dst - src;
- if (!(mc68kcpu)->cmpild_instr_callback.isnull())
- ((mc68kcpu)->cmpild_instr_callback)(*(mc68kcpu)->program, (mc68kcpu)->ir & 7, src, 0xffffffff);
+ if (!m_cmpild_instr_callback.isnull())
+ (m_cmpild_instr_callback)(*m_program, m_ir & 7, src, 0xffffffff);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_v_flag = VFLAG_SUB_32(src, dst, res);
+ m_c_flag = CFLAG_SUB_32(src, dst, res);
}
M68KMAKE_OP(cmpi, 32, ., .)
{
- uint32_t src = OPER_I_32(mc68kcpu);
+ uint32_t src = OPER_I_32();
uint32_t dst = M68KMAKE_GET_OPER_AY_32;
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_v_flag = VFLAG_SUB_32(src, dst, res);
+ m_c_flag = CFLAG_SUB_32(src, dst, res);
}
M68KMAKE_OP(cmpi, 32, ., pcdi)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t src = OPER_I_32(mc68kcpu);
- uint32_t dst = OPER_PCDI_32(mc68kcpu);
+ uint32_t src = OPER_I_32();
+ uint32_t dst = OPER_PCDI_32();
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_v_flag = VFLAG_SUB_32(src, dst, res);
+ m_c_flag = CFLAG_SUB_32(src, dst, res);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(cmpi, 32, ., pcix)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t src = OPER_I_32(mc68kcpu);
- uint32_t dst = OPER_PCIX_32(mc68kcpu);
+ uint32_t src = OPER_I_32();
+ uint32_t dst = OPER_PCIX_32();
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_v_flag = VFLAG_SUB_32(src, dst, res);
+ m_c_flag = CFLAG_SUB_32(src, dst, res);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(cmpm, 8, ., ax7)
{
- uint32_t src = OPER_AY_PI_8(mc68kcpu);
- uint32_t dst = OPER_A7_PI_8(mc68kcpu);
+ uint32_t src = OPER_AY_PI_8();
+ uint32_t dst = OPER_A7_PI_8();
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_v_flag = VFLAG_SUB_8(src, dst, res);
+ m_c_flag = CFLAG_8(res);
}
M68KMAKE_OP(cmpm, 8, ., ay7)
{
- uint32_t src = OPER_A7_PI_8(mc68kcpu);
- uint32_t dst = OPER_AX_PI_8(mc68kcpu);
+ uint32_t src = OPER_A7_PI_8();
+ uint32_t dst = OPER_AX_PI_8();
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_v_flag = VFLAG_SUB_8(src, dst, res);
+ m_c_flag = CFLAG_8(res);
}
M68KMAKE_OP(cmpm, 8, ., axy7)
{
- uint32_t src = OPER_A7_PI_8(mc68kcpu);
- uint32_t dst = OPER_A7_PI_8(mc68kcpu);
+ uint32_t src = OPER_A7_PI_8();
+ uint32_t dst = OPER_A7_PI_8();
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_v_flag = VFLAG_SUB_8(src, dst, res);
+ m_c_flag = CFLAG_8(res);
}
M68KMAKE_OP(cmpm, 8, ., .)
{
- uint32_t src = OPER_AY_PI_8(mc68kcpu);
- uint32_t dst = OPER_AX_PI_8(mc68kcpu);
+ uint32_t src = OPER_AY_PI_8();
+ uint32_t dst = OPER_AX_PI_8();
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_v_flag = VFLAG_SUB_8(src, dst, res);
+ m_c_flag = CFLAG_8(res);
}
M68KMAKE_OP(cmpm, 16, ., .)
{
- uint32_t src = OPER_AY_PI_16(mc68kcpu);
- uint32_t dst = OPER_AX_PI_16(mc68kcpu);
+ uint32_t src = OPER_AY_PI_16();
+ uint32_t dst = OPER_AX_PI_16();
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_16(res);
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_v_flag = VFLAG_SUB_16(src, dst, res);
+ m_c_flag = CFLAG_16(res);
}
M68KMAKE_OP(cmpm, 32, ., .)
{
- uint32_t src = OPER_AY_PI_32(mc68kcpu);
- uint32_t dst = OPER_AX_PI_32(mc68kcpu);
+ uint32_t src = OPER_AY_PI_32();
+ uint32_t dst = OPER_AX_PI_32();
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_v_flag = VFLAG_SUB_32(src, dst, res);
+ m_c_flag = CFLAG_SUB_32(src, dst, res);
}
M68KMAKE_OP(cpbcc, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (cpbcc)\n",
- (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
+ logerror("%s at %08x: called unimplemented instruction %04x (cpbcc)\n",
+ tag(), m_ppc, m_ir);
return;
}
- m68ki_exception_1111(mc68kcpu);
+ m68ki_exception_1111();
}
M68KMAKE_OP(cpdbcc, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (cpdbcc)\n",
- (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
+ logerror("%s at %08x: called unimplemented instruction %04x (cpdbcc)\n",
+ tag(), m_ppc, m_ir);
return;
}
- m68ki_exception_1111(mc68kcpu);
+ m68ki_exception_1111();
}
M68KMAKE_OP(cpgen, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type) && (mc68kcpu->get_fpu_enable() || mc68kcpu->has_pmmu))
+ if(CPU_TYPE_IS_EC020_PLUS() && (m_has_fpu || m_has_pmmu))
{
- mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (cpgen)\n",
- (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
+ logerror("%s at %08x: called unimplemented instruction %04x (cpgen)\n",
+ tag(), m_ppc, m_ir);
return;
}
- m68ki_exception_1111(mc68kcpu);
+ m68ki_exception_1111();
}
M68KMAKE_OP(cpscc, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (cpscc)\n",
- (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
+ logerror("%s at %08x: called unimplemented instruction %04x (cpscc)\n",
+ tag(), m_ppc, m_ir);
return;
}
- m68ki_exception_1111(mc68kcpu);
+ m68ki_exception_1111();
}
M68KMAKE_OP(cptrapcc, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (cptrapcc)\n",
- (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
+ logerror("%s at %08x: called unimplemented instruction %04x (cptrapcc)\n",
+ tag(), m_ppc, m_ir);
return;
}
- m68ki_exception_1111(mc68kcpu);
+ m68ki_exception_1111();
}
M68KMAKE_OP(ftrapcc, 32, ., .)
{
- if((mc68kcpu)->get_fpu_enable())
+ if(m_has_fpu)
{
- m68881_ftrap(mc68kcpu);
+ m68881_ftrap();
return;
}
- m68ki_exception_1111(mc68kcpu);
+ m68ki_exception_1111();
}
M68KMAKE_OP(dbt, 16, ., .)
{
- REG_PC(mc68kcpu) += 2;
+ m_pc += 2;
}
M68KMAKE_OP(dbf, 16, ., .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
+ uint32_t* r_dst = &DY();
uint32_t res = MASK_OUT_ABOVE_16(*r_dst - 1);
*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
if(res != 0xffff)
{
- uint32_t offset = OPER_I_16(mc68kcpu);
- REG_PC(mc68kcpu) -= 2;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_16((mc68kcpu), offset);
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_noexp;
+ uint32_t offset = OPER_I_16();
+ m_pc -= 2;
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_branch_16(offset);
+ m_remaining_cycles -= m_cyc_dbcc_f_noexp;
return;
}
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
+ m_pc += 2;
+ m_remaining_cycles -= m_cyc_dbcc_f_exp;
}
@@ -4515,31 +4510,31 @@ M68KMAKE_OP(dbcc, 16, ., .)
{
if(M68KMAKE_NOT_CC)
{
- uint32_t* r_dst = &DY(mc68kcpu);
+ uint32_t* r_dst = &DY();
uint32_t res = MASK_OUT_ABOVE_16(*r_dst - 1);
*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
if(res != 0xffff)
{
- uint32_t offset = OPER_I_16(mc68kcpu);
- REG_PC(mc68kcpu) -= 2;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_16((mc68kcpu), offset);
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_noexp;
+ uint32_t offset = OPER_I_16();
+ m_pc -= 2;
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_branch_16(offset);
+ m_remaining_cycles -= m_cyc_dbcc_f_noexp;
return;
}
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
+ m_pc += 2;
+ m_remaining_cycles -= m_cyc_dbcc_f_exp;
return;
}
- REG_PC(mc68kcpu) += 2;
+ m_pc += 2;
}
M68KMAKE_OP(divs, 16, ., d)
{
- uint32_t* r_dst = &DX(mc68kcpu);
- int32_t src = MAKE_INT_16(DY(mc68kcpu));
+ uint32_t* r_dst = &DX();
+ int32_t src = MAKE_INT_16(DY());
int32_t quotient;
int32_t remainder;
@@ -4547,10 +4542,10 @@ M68KMAKE_OP(divs, 16, ., d)
{
if((uint32_t)*r_dst == 0x80000000 && src == -1)
{
- (mc68kcpu)->not_z_flag = 0;
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_not_z_flag = 0;
+ m_n_flag = NFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
*r_dst = 0;
return;
}
@@ -4560,23 +4555,23 @@ M68KMAKE_OP(divs, 16, ., d)
if(quotient == MAKE_INT_16(quotient))
{
- (mc68kcpu)->not_z_flag = quotient;
- (mc68kcpu)->n_flag = NFLAG_16(quotient);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_not_z_flag = quotient;
+ m_n_flag = NFLAG_16(quotient);
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
*r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
return;
}
- (mc68kcpu)->v_flag = VFLAG_SET;
+ m_v_flag = VFLAG_SET;
return;
}
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
+ m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
}
M68KMAKE_OP(divs, 16, ., .)
{
- uint32_t* r_dst = &DX(mc68kcpu);
+ uint32_t* r_dst = &DX();
int32_t src = MAKE_INT_16(M68KMAKE_GET_OPER_AY_16);
int32_t quotient;
int32_t remainder;
@@ -4585,10 +4580,10 @@ M68KMAKE_OP(divs, 16, ., .)
{
if((uint32_t)*r_dst == 0x80000000 && src == -1)
{
- (mc68kcpu)->not_z_flag = 0;
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_not_z_flag = 0;
+ m_n_flag = NFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
*r_dst = 0;
return;
}
@@ -4598,24 +4593,24 @@ M68KMAKE_OP(divs, 16, ., .)
if(quotient == MAKE_INT_16(quotient))
{
- (mc68kcpu)->not_z_flag = quotient;
- (mc68kcpu)->n_flag = NFLAG_16(quotient);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_not_z_flag = quotient;
+ m_n_flag = NFLAG_16(quotient);
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
*r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
return;
}
- (mc68kcpu)->v_flag = VFLAG_SET;
+ m_v_flag = VFLAG_SET;
return;
}
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
+ m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
}
M68KMAKE_OP(divu, 16, ., d)
{
- uint32_t* r_dst = &DX(mc68kcpu);
- uint32_t src = MASK_OUT_ABOVE_16(DY(mc68kcpu));
+ uint32_t* r_dst = &DX();
+ uint32_t src = MASK_OUT_ABOVE_16(DY());
if(src != 0)
{
@@ -4624,23 +4619,23 @@ M68KMAKE_OP(divu, 16, ., d)
if(quotient < 0x10000)
{
- (mc68kcpu)->not_z_flag = quotient;
- (mc68kcpu)->n_flag = NFLAG_16(quotient);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_not_z_flag = quotient;
+ m_n_flag = NFLAG_16(quotient);
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
*r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
return;
}
- (mc68kcpu)->v_flag = VFLAG_SET;
+ m_v_flag = VFLAG_SET;
return;
}
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
+ m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
}
M68KMAKE_OP(divu, 16, ., .)
{
- uint32_t* r_dst = &DX(mc68kcpu);
+ uint32_t* r_dst = &DX();
uint32_t src = M68KMAKE_GET_OPER_AY_16;
if(src != 0)
@@ -4650,26 +4645,26 @@ M68KMAKE_OP(divu, 16, ., .)
if(quotient < 0x10000)
{
- (mc68kcpu)->not_z_flag = quotient;
- (mc68kcpu)->n_flag = NFLAG_16(quotient);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_not_z_flag = quotient;
+ m_n_flag = NFLAG_16(quotient);
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
*r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
return;
}
- (mc68kcpu)->v_flag = VFLAG_SET;
+ m_v_flag = VFLAG_SET;
return;
}
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
+ m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
}
M68KMAKE_OP(divl, 32, ., d)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
- uint64_t divisor = DY(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
+ uint64_t divisor = DY();
uint64_t dividend = 0;
uint64_t quotient = 0;
uint64_t remainder = 0;
@@ -4678,9 +4673,9 @@ M68KMAKE_OP(divl, 32, ., d)
{
if(BIT_A(word2)) /* 64 bit */
{
- dividend = REG_D(mc68kcpu)[word2 & 7];
+ dividend = REG_D()[word2 & 7];
dividend <<= 32;
- dividend |= REG_D(mc68kcpu)[(word2 >> 12) & 7];
+ dividend |= REG_D()[(word2 >> 12) & 7];
if(BIT_B(word2)) /* signed */
{
@@ -4688,7 +4683,7 @@ M68KMAKE_OP(divl, 32, ., d)
remainder = (uint64_t)((int64_t)dividend % (int64_t)((int32_t)divisor));
if((int64_t)quotient != (int64_t)((int32_t)quotient))
{
- (mc68kcpu)->v_flag = VFLAG_SET;
+ m_v_flag = VFLAG_SET;
return;
}
}
@@ -4697,7 +4692,7 @@ M68KMAKE_OP(divl, 32, ., d)
quotient = dividend / divisor;
if(quotient > 0xffffffff)
{
- (mc68kcpu)->v_flag = VFLAG_SET;
+ m_v_flag = VFLAG_SET;
return;
}
remainder = dividend % divisor;
@@ -4705,7 +4700,7 @@ M68KMAKE_OP(divl, 32, ., d)
}
else /* 32 bit */
{
- dividend = REG_D(mc68kcpu)[(word2 >> 12) & 7];
+ dividend = REG_D()[(word2 >> 12) & 7];
if(BIT_B(word2)) /* signed */
{
quotient = (uint64_t)((int64_t)((int32_t)dividend) / (int64_t)((int32_t)divisor));
@@ -4718,27 +4713,27 @@ M68KMAKE_OP(divl, 32, ., d)
}
}
- REG_D(mc68kcpu)[word2 & 7] = remainder;
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = quotient;
+ REG_D()[word2 & 7] = remainder;
+ REG_D()[(word2 >> 12) & 7] = quotient;
- (mc68kcpu)->n_flag = NFLAG_32(quotient);
- (mc68kcpu)->not_z_flag = quotient;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(quotient);
+ m_not_z_flag = quotient;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
return;
}
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
+ m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(divl, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
uint64_t divisor = M68KMAKE_GET_OPER_AY_32;
uint64_t dividend = 0;
uint64_t quotient = 0;
@@ -4748,9 +4743,9 @@ M68KMAKE_OP(divl, 32, ., .)
{
if(BIT_A(word2)) /* 64 bit */
{
- dividend = REG_D(mc68kcpu)[word2 & 7];
+ dividend = REG_D()[word2 & 7];
dividend <<= 32;
- dividend |= REG_D(mc68kcpu)[(word2 >> 12) & 7];
+ dividend |= REG_D()[(word2 >> 12) & 7];
if(BIT_B(word2)) /* signed */
{
@@ -4758,7 +4753,7 @@ M68KMAKE_OP(divl, 32, ., .)
remainder = (uint64_t)((int64_t)dividend % (int64_t)((int32_t)divisor));
if((int64_t)quotient != (int64_t)((int32_t)quotient))
{
- (mc68kcpu)->v_flag = VFLAG_SET;
+ m_v_flag = VFLAG_SET;
return;
}
}
@@ -4767,7 +4762,7 @@ M68KMAKE_OP(divl, 32, ., .)
quotient = dividend / divisor;
if(quotient > 0xffffffff)
{
- (mc68kcpu)->v_flag = VFLAG_SET;
+ m_v_flag = VFLAG_SET;
return;
}
remainder = dividend % divisor;
@@ -4775,7 +4770,7 @@ M68KMAKE_OP(divl, 32, ., .)
}
else /* 32 bit */
{
- dividend = REG_D(mc68kcpu)[(word2 >> 12) & 7];
+ dividend = REG_D()[(word2 >> 12) & 7];
if(BIT_B(word2)) /* signed */
{
quotient = (uint64_t)((int64_t)((int32_t)dividend) / (int64_t)((int32_t)divisor));
@@ -4788,198 +4783,198 @@ M68KMAKE_OP(divl, 32, ., .)
}
}
- REG_D(mc68kcpu)[word2 & 7] = remainder;
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = quotient;
+ REG_D()[word2 & 7] = remainder;
+ REG_D()[(word2 >> 12) & 7] = quotient;
- (mc68kcpu)->n_flag = NFLAG_32(quotient);
- (mc68kcpu)->not_z_flag = quotient;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(quotient);
+ m_not_z_flag = quotient;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
return;
}
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
+ m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(eor, 8, ., d)
{
- uint32_t res = MASK_OUT_ABOVE_8(DY(mc68kcpu) ^= MASK_OUT_ABOVE_8(DX(mc68kcpu)));
+ uint32_t res = MASK_OUT_ABOVE_8(DY() ^= MASK_OUT_ABOVE_8(DX()));
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(eor, 8, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- uint32_t res = MASK_OUT_ABOVE_8(DX(mc68kcpu) ^ m68ki_read_8((mc68kcpu), ea));
+ uint32_t res = MASK_OUT_ABOVE_8(DX() ^ m68ki_read_8(ea));
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(eor, 16, ., d)
{
- uint32_t res = MASK_OUT_ABOVE_16(DY(mc68kcpu) ^= MASK_OUT_ABOVE_16(DX(mc68kcpu)));
+ uint32_t res = MASK_OUT_ABOVE_16(DY() ^= MASK_OUT_ABOVE_16(DX()));
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(eor, 16, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- uint32_t res = MASK_OUT_ABOVE_16(DX(mc68kcpu) ^ m68ki_read_16((mc68kcpu), ea));
+ uint32_t res = MASK_OUT_ABOVE_16(DX() ^ m68ki_read_16(ea));
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(eor, 32, ., d)
{
- uint32_t res = DY(mc68kcpu) ^= DX(mc68kcpu);
+ uint32_t res = DY() ^= DX();
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(eor, 32, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_32;
- uint32_t res = DX(mc68kcpu) ^ m68ki_read_32((mc68kcpu), ea);
+ uint32_t res = DX() ^ m68ki_read_32(ea);
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(eori, 8, ., d)
{
- uint32_t res = MASK_OUT_ABOVE_8(DY(mc68kcpu) ^= OPER_I_8(mc68kcpu));
+ uint32_t res = MASK_OUT_ABOVE_8(DY() ^= OPER_I_8());
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(eori, 8, ., .)
{
- uint32_t src = OPER_I_8(mc68kcpu);
+ uint32_t src = OPER_I_8();
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- uint32_t res = src ^ m68ki_read_8((mc68kcpu), ea);
+ uint32_t res = src ^ m68ki_read_8(ea);
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(eori, 16, ., d)
{
- uint32_t res = MASK_OUT_ABOVE_16(DY(mc68kcpu) ^= OPER_I_16(mc68kcpu));
+ uint32_t res = MASK_OUT_ABOVE_16(DY() ^= OPER_I_16());
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(eori, 16, ., .)
{
- uint32_t src = OPER_I_16(mc68kcpu);
+ uint32_t src = OPER_I_16();
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- uint32_t res = src ^ m68ki_read_16((mc68kcpu), ea);
+ uint32_t res = src ^ m68ki_read_16(ea);
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(eori, 32, ., d)
{
- uint32_t res = DY(mc68kcpu) ^= OPER_I_32(mc68kcpu);
+ uint32_t res = DY() ^= OPER_I_32();
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(eori, 32, ., .)
{
- uint32_t src = OPER_I_32(mc68kcpu);
+ uint32_t src = OPER_I_32();
uint32_t ea = M68KMAKE_GET_EA_AY_32;
- uint32_t res = src ^ m68ki_read_32((mc68kcpu), ea);
+ uint32_t res = src ^ m68ki_read_32(ea);
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(eori, 16, toc, .)
{
- m68ki_set_ccr((mc68kcpu), m68ki_get_ccr(mc68kcpu) ^ OPER_I_16(mc68kcpu));
+ m68ki_set_ccr(m68ki_get_ccr() ^ OPER_I_16());
}
M68KMAKE_OP(eori, 16, tos, .)
{
- if((mc68kcpu)->s_flag)
+ if(m_s_flag)
{
- uint32_t src = OPER_I_16(mc68kcpu);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_set_sr((mc68kcpu), m68ki_get_sr(mc68kcpu) ^ src);
+ uint32_t src = OPER_I_16();
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_set_sr(m68ki_get_sr() ^ src);
return;
}
- m68ki_exception_privilege_violation(mc68kcpu);
+ m68ki_exception_privilege_violation();
}
M68KMAKE_OP(exg, 32, dd, .)
{
- uint32_t* reg_a = &DX(mc68kcpu);
- uint32_t* reg_b = &DY(mc68kcpu);
+ uint32_t* reg_a = &DX();
+ uint32_t* reg_b = &DY();
uint32_t tmp = *reg_a;
*reg_a = *reg_b;
*reg_b = tmp;
@@ -4988,8 +4983,8 @@ M68KMAKE_OP(exg, 32, dd, .)
M68KMAKE_OP(exg, 32, aa, .)
{
- uint32_t* reg_a = &AX(mc68kcpu);
- uint32_t* reg_b = &AY(mc68kcpu);
+ uint32_t* reg_a = &AX();
+ uint32_t* reg_b = &AY();
uint32_t tmp = *reg_a;
*reg_a = *reg_b;
*reg_b = tmp;
@@ -4998,8 +4993,8 @@ M68KMAKE_OP(exg, 32, aa, .)
M68KMAKE_OP(exg, 32, da, .)
{
- uint32_t* reg_a = &DX(mc68kcpu);
- uint32_t* reg_b = &AY(mc68kcpu);
+ uint32_t* reg_a = &DX();
+ uint32_t* reg_b = &AY();
uint32_t tmp = *reg_a;
*reg_a = *reg_b;
*reg_b = tmp;
@@ -5008,2769 +5003,2769 @@ M68KMAKE_OP(exg, 32, da, .)
M68KMAKE_OP(ext, 16, ., .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
+ uint32_t* r_dst = &DY();
*r_dst = MASK_OUT_BELOW_16(*r_dst) | MASK_OUT_ABOVE_8(*r_dst) | (GET_MSB_8(*r_dst) ? 0xff00 : 0);
- (mc68kcpu)->n_flag = NFLAG_16(*r_dst);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(*r_dst);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(*r_dst);
+ m_not_z_flag = MASK_OUT_ABOVE_16(*r_dst);
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(ext, 32, ., .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
+ uint32_t* r_dst = &DY();
*r_dst = MASK_OUT_ABOVE_16(*r_dst) | (GET_MSB_16(*r_dst) ? 0xffff0000 : 0);
- (mc68kcpu)->n_flag = NFLAG_32(*r_dst);
- (mc68kcpu)->not_z_flag = *r_dst;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(*r_dst);
+ m_not_z_flag = *r_dst;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(extb, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t* r_dst = &DY(mc68kcpu);
+ uint32_t* r_dst = &DY();
*r_dst = MASK_OUT_ABOVE_8(*r_dst) | (GET_MSB_8(*r_dst) ? 0xffffff00 : 0);
- (mc68kcpu)->n_flag = NFLAG_32(*r_dst);
- (mc68kcpu)->not_z_flag = *r_dst;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(*r_dst);
+ m_not_z_flag = *r_dst;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(illegal, 0, ., .)
{
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(jmp, 32, ., .)
{
- m68ki_jump((mc68kcpu), M68KMAKE_GET_EA_AY_32);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
- (mc68kcpu)->remaining_cycles = 0;
+ m68ki_jump(M68KMAKE_GET_EA_AY_32);
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ if(m_pc == m_ppc && m_remaining_cycles > 0)
+ m_remaining_cycles = 0;
}
M68KMAKE_OP(jsr, 32, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_32;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
- m68ki_jump((mc68kcpu), ea);
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_push_32(m_pc);
+ m68ki_jump(ea);
}
M68KMAKE_OP(lea, 32, ., .)
{
- AX(mc68kcpu) = M68KMAKE_GET_EA_AY_32;
+ AX() = M68KMAKE_GET_EA_AY_32;
}
M68KMAKE_OP(link, 16, ., a7)
{
- REG_A(mc68kcpu)[7] -= 4;
- m68ki_write_32((mc68kcpu), REG_A(mc68kcpu)[7], REG_A(mc68kcpu)[7]);
- REG_A(mc68kcpu)[7] = MASK_OUT_ABOVE_32(REG_A(mc68kcpu)[7] + MAKE_INT_16(OPER_I_16(mc68kcpu)));
+ REG_A()[7] -= 4;
+ m68ki_write_32(REG_A()[7], REG_A()[7]);
+ REG_A()[7] = MASK_OUT_ABOVE_32(REG_A()[7] + MAKE_INT_16(OPER_I_16()));
}
M68KMAKE_OP(link, 16, ., .)
{
- uint32_t* r_dst = &AY(mc68kcpu);
+ uint32_t* r_dst = &AY();
- m68ki_push_32((mc68kcpu), *r_dst);
- *r_dst = REG_A(mc68kcpu)[7];
- REG_A(mc68kcpu)[7] = MASK_OUT_ABOVE_32(REG_A(mc68kcpu)[7] + MAKE_INT_16(OPER_I_16(mc68kcpu)));
+ m68ki_push_32(*r_dst);
+ *r_dst = REG_A()[7];
+ REG_A()[7] = MASK_OUT_ABOVE_32(REG_A()[7] + MAKE_INT_16(OPER_I_16()));
}
M68KMAKE_OP(link, 32, ., a7)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- REG_A(mc68kcpu)[7] -= 4;
- m68ki_write_32((mc68kcpu), REG_A(mc68kcpu)[7], REG_A(mc68kcpu)[7]);
- REG_A(mc68kcpu)[7] = MASK_OUT_ABOVE_32(REG_A(mc68kcpu)[7] + OPER_I_32(mc68kcpu));
+ REG_A()[7] -= 4;
+ m68ki_write_32(REG_A()[7], REG_A()[7]);
+ REG_A()[7] = MASK_OUT_ABOVE_32(REG_A()[7] + OPER_I_32());
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(link, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t* r_dst = &AY(mc68kcpu);
+ uint32_t* r_dst = &AY();
- m68ki_push_32((mc68kcpu), *r_dst);
- *r_dst = REG_A(mc68kcpu)[7];
- REG_A(mc68kcpu)[7] = MASK_OUT_ABOVE_32(REG_A(mc68kcpu)[7] + OPER_I_32(mc68kcpu));
+ m68ki_push_32(*r_dst);
+ *r_dst = REG_A()[7];
+ REG_A()[7] = MASK_OUT_ABOVE_32(REG_A()[7] + OPER_I_32());
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(lsr, 8, s, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t src = MASK_OUT_ABOVE_8(*r_dst);
uint32_t res = src >> shift;
if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src << (9-shift);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_CLEAR;
+ m_not_z_flag = res;
+ m_x_flag = m_c_flag = src << (9-shift);
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(lsr, 16, s, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t src = MASK_OUT_ABOVE_16(*r_dst);
uint32_t res = src >> shift;
if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src << (9-shift);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_CLEAR;
+ m_not_z_flag = res;
+ m_x_flag = m_c_flag = src << (9-shift);
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(lsr, 32, s, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t src = *r_dst;
uint32_t res = src >> shift;
if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
*r_dst = res;
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src << (9-shift);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_CLEAR;
+ m_not_z_flag = res;
+ m_x_flag = m_c_flag = src << (9-shift);
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(lsr, 8, r, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = DX(mc68kcpu) & 0x3f;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = DX() & 0x3f;
uint32_t src = MASK_OUT_ABOVE_8(*r_dst);
uint32_t res = src >> shift;
if(shift != 0)
{
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
if(shift <= 8)
{
*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src << (9-shift);
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_x_flag = m_c_flag = src << (9-shift);
+ m_n_flag = NFLAG_CLEAR;
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
return;
}
*r_dst &= 0xffffff00;
- (mc68kcpu)->x_flag = XFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_x_flag = XFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_CLEAR;
+ m_not_z_flag = ZFLAG_SET;
+ m_v_flag = VFLAG_CLEAR;
return;
}
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_8(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(src);
+ m_not_z_flag = src;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(lsr, 16, r, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = DX(mc68kcpu) & 0x3f;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = DX() & 0x3f;
uint32_t src = MASK_OUT_ABOVE_16(*r_dst);
uint32_t res = src >> shift;
if(shift != 0)
{
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
if(shift <= 16)
{
*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = (src >> (shift - 1))<<8;
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = m_x_flag = (src >> (shift - 1))<<8;
+ m_n_flag = NFLAG_CLEAR;
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
return;
}
*r_dst &= 0xffff0000;
- (mc68kcpu)->x_flag = XFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_x_flag = XFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_CLEAR;
+ m_not_z_flag = ZFLAG_SET;
+ m_v_flag = VFLAG_CLEAR;
return;
}
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_16(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(src);
+ m_not_z_flag = src;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(lsr, 32, r, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = DX(mc68kcpu) & 0x3f;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = DX() & 0x3f;
uint32_t src = *r_dst;
uint32_t res = src >> shift;
if(shift != 0)
{
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
if(shift < 32)
{
*r_dst = res;
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = (src >> (shift - 1))<<8;
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = m_x_flag = (src >> (shift - 1))<<8;
+ m_n_flag = NFLAG_CLEAR;
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
return;
}
*r_dst = 0;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = (shift == 32 ? GET_MSB_32(src)>>23 : 0);
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_x_flag = m_c_flag = (shift == 32 ? GET_MSB_32(src)>>23 : 0);
+ m_n_flag = NFLAG_CLEAR;
+ m_not_z_flag = ZFLAG_SET;
+ m_v_flag = VFLAG_CLEAR;
return;
}
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_32(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(src);
+ m_not_z_flag = src;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(lsr, 16, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- uint32_t src = m68ki_read_16((mc68kcpu), ea);
+ uint32_t src = m68ki_read_16(ea);
uint32_t res = src >> 1;
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = src << 8;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_CLEAR;
+ m_not_z_flag = res;
+ m_c_flag = m_x_flag = src << 8;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(lsl, 8, s, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t src = MASK_OUT_ABOVE_8(*r_dst);
uint32_t res = MASK_OUT_ABOVE_8(src << shift);
if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src << shift;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_x_flag = m_c_flag = src << shift;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(lsl, 16, s, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t src = MASK_OUT_ABOVE_16(*r_dst);
uint32_t res = MASK_OUT_ABOVE_16(src << shift);
if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> (8-shift);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_x_flag = m_c_flag = src >> (8-shift);
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(lsl, 32, s, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t src = *r_dst;
uint32_t res = MASK_OUT_ABOVE_32(src << shift);
if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
*r_dst = res;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> (24-shift);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_x_flag = m_c_flag = src >> (24-shift);
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(lsl, 8, r, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = DX(mc68kcpu) & 0x3f;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = DX() & 0x3f;
uint32_t src = MASK_OUT_ABOVE_8(*r_dst);
uint32_t res = MASK_OUT_ABOVE_8(src << shift);
if(shift != 0)
{
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
if(shift <= 8)
{
*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src << shift;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_x_flag = m_c_flag = src << shift;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
return;
}
*r_dst &= 0xffffff00;
- (mc68kcpu)->x_flag = XFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_x_flag = XFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_CLEAR;
+ m_not_z_flag = ZFLAG_SET;
+ m_v_flag = VFLAG_CLEAR;
return;
}
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_8(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(src);
+ m_not_z_flag = src;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(lsl, 16, r, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = DX(mc68kcpu) & 0x3f;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = DX() & 0x3f;
uint32_t src = MASK_OUT_ABOVE_16(*r_dst);
uint32_t res = MASK_OUT_ABOVE_16(src << shift);
if(shift != 0)
{
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
if(shift <= 16)
{
*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = (src << shift) >> 8;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_x_flag = m_c_flag = (src << shift) >> 8;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
return;
}
*r_dst &= 0xffff0000;
- (mc68kcpu)->x_flag = XFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_x_flag = XFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_CLEAR;
+ m_not_z_flag = ZFLAG_SET;
+ m_v_flag = VFLAG_CLEAR;
return;
}
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_16(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(src);
+ m_not_z_flag = src;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(lsl, 32, r, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = DX(mc68kcpu) & 0x3f;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = DX() & 0x3f;
uint32_t src = *r_dst;
uint32_t res = MASK_OUT_ABOVE_32(src << shift);
if(shift != 0)
{
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
if(shift < 32)
{
*r_dst = res;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = (src >> (32 - shift)) << 8;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_x_flag = m_c_flag = (src >> (32 - shift)) << 8;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
return;
}
*r_dst = 0;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = ((shift == 32 ? src & 1 : 0))<<8;
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_x_flag = m_c_flag = ((shift == 32 ? src & 1 : 0))<<8;
+ m_n_flag = NFLAG_CLEAR;
+ m_not_z_flag = ZFLAG_SET;
+ m_v_flag = VFLAG_CLEAR;
return;
}
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_32(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(src);
+ m_not_z_flag = src;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(lsl, 16, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- uint32_t src = m68ki_read_16((mc68kcpu), ea);
+ uint32_t src = m68ki_read_16(ea);
uint32_t res = MASK_OUT_ABOVE_16(src << 1);
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> 7;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_x_flag = m_c_flag = src >> 7;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(move, 8, d, d)
{
- uint32_t res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- uint32_t* r_dst = &DX(mc68kcpu);
+ uint32_t res = MASK_OUT_ABOVE_8(DY());
+ uint32_t* r_dst = &DX();
*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 8, d, .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_8;
- uint32_t* r_dst = &DX(mc68kcpu);
+ uint32_t* r_dst = &DX();
*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 8, ai, d)
{
- uint32_t res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- uint32_t ea = EA_AX_AI_8(mc68kcpu);
+ uint32_t res = MASK_OUT_ABOVE_8(DY());
+ uint32_t ea = EA_AX_AI_8();
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 8, ai, .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_8;
- uint32_t ea = EA_AX_AI_8(mc68kcpu);
+ uint32_t ea = EA_AX_AI_8();
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 8, pi7, d)
{
- uint32_t res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- uint32_t ea = EA_A7_PI_8(mc68kcpu);
+ uint32_t res = MASK_OUT_ABOVE_8(DY());
+ uint32_t ea = EA_A7_PI_8();
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 8, pi, d)
{
- uint32_t res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- uint32_t ea = EA_AX_PI_8(mc68kcpu);
+ uint32_t res = MASK_OUT_ABOVE_8(DY());
+ uint32_t ea = EA_AX_PI_8();
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 8, pi7, .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_8;
- uint32_t ea = EA_A7_PI_8(mc68kcpu);
+ uint32_t ea = EA_A7_PI_8();
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 8, pi, .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_8;
- uint32_t ea = EA_AX_PI_8(mc68kcpu);
+ uint32_t ea = EA_AX_PI_8();
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 8, pd7, d)
{
- uint32_t res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- uint32_t ea = EA_A7_PD_8(mc68kcpu);
+ uint32_t res = MASK_OUT_ABOVE_8(DY());
+ uint32_t ea = EA_A7_PD_8();
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 8, pd, d)
{
- uint32_t res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- uint32_t ea = EA_AX_PD_8(mc68kcpu);
+ uint32_t res = MASK_OUT_ABOVE_8(DY());
+ uint32_t ea = EA_AX_PD_8();
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 8, pd7, .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_8;
- uint32_t ea = EA_A7_PD_8(mc68kcpu);
+ uint32_t ea = EA_A7_PD_8();
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 8, pd, .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_8;
- uint32_t ea = EA_AX_PD_8(mc68kcpu);
+ uint32_t ea = EA_AX_PD_8();
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 8, di, d)
{
- uint32_t res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- uint32_t ea = EA_AX_DI_8(mc68kcpu);
+ uint32_t res = MASK_OUT_ABOVE_8(DY());
+ uint32_t ea = EA_AX_DI_8();
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 8, di, .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_8;
- uint32_t ea = EA_AX_DI_8(mc68kcpu);
+ uint32_t ea = EA_AX_DI_8();
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 8, ix, d)
{
- uint32_t res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- uint32_t ea = EA_AX_IX_8(mc68kcpu);
+ uint32_t res = MASK_OUT_ABOVE_8(DY());
+ uint32_t ea = EA_AX_IX_8();
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 8, ix, .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_8;
- uint32_t ea = EA_AX_IX_8(mc68kcpu);
+ uint32_t ea = EA_AX_IX_8();
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 8, aw, d)
{
- uint32_t res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- uint32_t ea = EA_AW_8(mc68kcpu);
+ uint32_t res = MASK_OUT_ABOVE_8(DY());
+ uint32_t ea = EA_AW_8();
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 8, aw, .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_8;
- uint32_t ea = EA_AW_8(mc68kcpu);
+ uint32_t ea = EA_AW_8();
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 8, al, d)
{
- uint32_t res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- uint32_t ea = EA_AL_8(mc68kcpu);
+ uint32_t res = MASK_OUT_ABOVE_8(DY());
+ uint32_t ea = EA_AL_8();
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 8, al, .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_8;
- uint32_t ea = EA_AL_8(mc68kcpu);
+ uint32_t ea = EA_AL_8();
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 16, d, d)
{
- uint32_t res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
- uint32_t* r_dst = &DX(mc68kcpu);
+ uint32_t res = MASK_OUT_ABOVE_16(DY());
+ uint32_t* r_dst = &DX();
*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 16, d, a)
{
- uint32_t res = MASK_OUT_ABOVE_16(AY(mc68kcpu));
- uint32_t* r_dst = &DX(mc68kcpu);
+ uint32_t res = MASK_OUT_ABOVE_16(AY());
+ uint32_t* r_dst = &DX();
*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 16, d, .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_16;
- uint32_t* r_dst = &DX(mc68kcpu);
+ uint32_t* r_dst = &DX();
*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 16, ai, d)
{
- uint32_t res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
- uint32_t ea = EA_AX_AI_16(mc68kcpu);
+ uint32_t res = MASK_OUT_ABOVE_16(DY());
+ uint32_t ea = EA_AX_AI_16();
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 16, ai, a)
{
- uint32_t res = MASK_OUT_ABOVE_16(AY(mc68kcpu));
- uint32_t ea = EA_AX_AI_16(mc68kcpu);
+ uint32_t res = MASK_OUT_ABOVE_16(AY());
+ uint32_t ea = EA_AX_AI_16();
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 16, ai, .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_16;
- uint32_t ea = EA_AX_AI_16(mc68kcpu);
+ uint32_t ea = EA_AX_AI_16();
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 16, pi, d)
{
- uint32_t res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
- uint32_t ea = EA_AX_PI_16(mc68kcpu);
+ uint32_t res = MASK_OUT_ABOVE_16(DY());
+ uint32_t ea = EA_AX_PI_16();
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 16, pi, a)
{
- uint32_t res = MASK_OUT_ABOVE_16(AY(mc68kcpu));
- uint32_t ea = EA_AX_PI_16(mc68kcpu);
+ uint32_t res = MASK_OUT_ABOVE_16(AY());
+ uint32_t ea = EA_AX_PI_16();
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 16, pi, .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_16;
- uint32_t ea = EA_AX_PI_16(mc68kcpu);
+ uint32_t ea = EA_AX_PI_16();
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 16, pd, d)
{
- uint32_t res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
- uint32_t ea = EA_AX_PD_16(mc68kcpu);
+ uint32_t res = MASK_OUT_ABOVE_16(DY());
+ uint32_t ea = EA_AX_PD_16();
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 16, pd, a)
{
- uint32_t res = MASK_OUT_ABOVE_16(AY(mc68kcpu));
- uint32_t ea = EA_AX_PD_16(mc68kcpu);
+ uint32_t res = MASK_OUT_ABOVE_16(AY());
+ uint32_t ea = EA_AX_PD_16();
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 16, pd, .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_16;
- uint32_t ea = EA_AX_PD_16(mc68kcpu);
+ uint32_t ea = EA_AX_PD_16();
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 16, di, d)
{
- uint32_t res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
- uint32_t ea = EA_AX_DI_16(mc68kcpu);
+ uint32_t res = MASK_OUT_ABOVE_16(DY());
+ uint32_t ea = EA_AX_DI_16();
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 16, di, a)
{
- uint32_t res = MASK_OUT_ABOVE_16(AY(mc68kcpu));
- uint32_t ea = EA_AX_DI_16(mc68kcpu);
+ uint32_t res = MASK_OUT_ABOVE_16(AY());
+ uint32_t ea = EA_AX_DI_16();
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 16, di, .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_16;
- uint32_t ea = EA_AX_DI_16(mc68kcpu);
+ uint32_t ea = EA_AX_DI_16();
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 16, ix, d)
{
- uint32_t res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
- uint32_t ea = EA_AX_IX_16(mc68kcpu);
+ uint32_t res = MASK_OUT_ABOVE_16(DY());
+ uint32_t ea = EA_AX_IX_16();
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 16, ix, a)
{
- uint32_t res = MASK_OUT_ABOVE_16(AY(mc68kcpu));
- uint32_t ea = EA_AX_IX_16(mc68kcpu);
+ uint32_t res = MASK_OUT_ABOVE_16(AY());
+ uint32_t ea = EA_AX_IX_16();
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 16, ix, .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_16;
- uint32_t ea = EA_AX_IX_16(mc68kcpu);
+ uint32_t ea = EA_AX_IX_16();
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 16, aw, d)
{
- uint32_t res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
- uint32_t ea = EA_AW_16(mc68kcpu);
+ uint32_t res = MASK_OUT_ABOVE_16(DY());
+ uint32_t ea = EA_AW_16();
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 16, aw, a)
{
- uint32_t res = MASK_OUT_ABOVE_16(AY(mc68kcpu));
- uint32_t ea = EA_AW_16(mc68kcpu);
+ uint32_t res = MASK_OUT_ABOVE_16(AY());
+ uint32_t ea = EA_AW_16();
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 16, aw, .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_16;
- uint32_t ea = EA_AW_16(mc68kcpu);
+ uint32_t ea = EA_AW_16();
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 16, al, d)
{
- uint32_t res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
- uint32_t ea = EA_AL_16(mc68kcpu);
+ uint32_t res = MASK_OUT_ABOVE_16(DY());
+ uint32_t ea = EA_AL_16();
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 16, al, a)
{
- uint32_t res = MASK_OUT_ABOVE_16(AY(mc68kcpu));
- uint32_t ea = EA_AL_16(mc68kcpu);
+ uint32_t res = MASK_OUT_ABOVE_16(AY());
+ uint32_t ea = EA_AL_16();
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 16, al, .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_16;
- uint32_t ea = EA_AL_16(mc68kcpu);
+ uint32_t ea = EA_AL_16();
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 32, d, d)
{
- uint32_t res = DY(mc68kcpu);
- uint32_t* r_dst = &DX(mc68kcpu);
+ uint32_t res = DY();
+ uint32_t* r_dst = &DX();
*r_dst = res;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 32, d, a)
{
- uint32_t res = AY(mc68kcpu);
- uint32_t* r_dst = &DX(mc68kcpu);
+ uint32_t res = AY();
+ uint32_t* r_dst = &DX();
*r_dst = res;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 32, d, .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_32;
- uint32_t* r_dst = &DX(mc68kcpu);
+ uint32_t* r_dst = &DX();
*r_dst = res;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 32, ai, d)
{
- uint32_t res = DY(mc68kcpu);
- uint32_t ea = EA_AX_AI_32(mc68kcpu);
+ uint32_t res = DY();
+ uint32_t ea = EA_AX_AI_32();
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 32, ai, a)
{
- uint32_t res = AY(mc68kcpu);
- uint32_t ea = EA_AX_AI_32(mc68kcpu);
+ uint32_t res = AY();
+ uint32_t ea = EA_AX_AI_32();
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 32, ai, .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_32;
- uint32_t ea = EA_AX_AI_32(mc68kcpu);
+ uint32_t ea = EA_AX_AI_32();
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 32, pi, d)
{
- uint32_t res = DY(mc68kcpu);
- uint32_t ea = EA_AX_PI_32(mc68kcpu);
+ uint32_t res = DY();
+ uint32_t ea = EA_AX_PI_32();
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 32, pi, a)
{
- uint32_t res = AY(mc68kcpu);
- uint32_t ea = EA_AX_PI_32(mc68kcpu);
+ uint32_t res = AY();
+ uint32_t ea = EA_AX_PI_32();
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 32, pi, .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_32;
- uint32_t ea = EA_AX_PI_32(mc68kcpu);
+ uint32_t ea = EA_AX_PI_32();
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 32, pd, d)
{
- uint32_t res = DY(mc68kcpu);
- uint32_t ea = EA_AX_PD_32(mc68kcpu);
+ uint32_t res = DY();
+ uint32_t ea = EA_AX_PD_32();
- m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
- m68ki_write_16((mc68kcpu), ea, (res >> 16) & 0xFFFF );
+ m68ki_write_16(ea+2, res & 0xFFFF );
+ m68ki_write_16(ea, (res >> 16) & 0xFFFF );
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 32, pd, a)
{
- uint32_t res = AY(mc68kcpu);
- uint32_t ea = EA_AX_PD_32(mc68kcpu);
+ uint32_t res = AY();
+ uint32_t ea = EA_AX_PD_32();
- m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
- m68ki_write_16((mc68kcpu), ea, (res >> 16) & 0xFFFF );
+ m68ki_write_16(ea+2, res & 0xFFFF );
+ m68ki_write_16(ea, (res >> 16) & 0xFFFF );
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 32, pd, .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_32;
- uint32_t ea = EA_AX_PD_32(mc68kcpu);
+ uint32_t ea = EA_AX_PD_32();
- m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
- m68ki_write_16((mc68kcpu), ea, (res >> 16) & 0xFFFF );
+ m68ki_write_16(ea+2, res & 0xFFFF );
+ m68ki_write_16(ea, (res >> 16) & 0xFFFF );
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 32, di, d)
{
- uint32_t res = DY(mc68kcpu);
- uint32_t ea = EA_AX_DI_32(mc68kcpu);
+ uint32_t res = DY();
+ uint32_t ea = EA_AX_DI_32();
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 32, di, a)
{
- uint32_t res = AY(mc68kcpu);
- uint32_t ea = EA_AX_DI_32(mc68kcpu);
+ uint32_t res = AY();
+ uint32_t ea = EA_AX_DI_32();
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 32, di, .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_32;
- uint32_t ea = EA_AX_DI_32(mc68kcpu);
+ uint32_t ea = EA_AX_DI_32();
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 32, ix, d)
{
- uint32_t res = DY(mc68kcpu);
- uint32_t ea = EA_AX_IX_32(mc68kcpu);
+ uint32_t res = DY();
+ uint32_t ea = EA_AX_IX_32();
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 32, ix, a)
{
- uint32_t res = AY(mc68kcpu);
- uint32_t ea = EA_AX_IX_32(mc68kcpu);
+ uint32_t res = AY();
+ uint32_t ea = EA_AX_IX_32();
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 32, ix, .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_32;
- uint32_t ea = EA_AX_IX_32(mc68kcpu);
+ uint32_t ea = EA_AX_IX_32();
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 32, aw, d)
{
- uint32_t res = DY(mc68kcpu);
- uint32_t ea = EA_AW_32(mc68kcpu);
+ uint32_t res = DY();
+ uint32_t ea = EA_AW_32();
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 32, aw, a)
{
- uint32_t res = AY(mc68kcpu);
- uint32_t ea = EA_AW_32(mc68kcpu);
+ uint32_t res = AY();
+ uint32_t ea = EA_AW_32();
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 32, aw, .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_32;
- uint32_t ea = EA_AW_32(mc68kcpu);
+ uint32_t ea = EA_AW_32();
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 32, al, d)
{
- uint32_t res = DY(mc68kcpu);
- uint32_t ea = EA_AL_32(mc68kcpu);
+ uint32_t res = DY();
+ uint32_t ea = EA_AL_32();
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 32, al, a)
{
- uint32_t res = AY(mc68kcpu);
- uint32_t ea = EA_AL_32(mc68kcpu);
+ uint32_t res = AY();
+ uint32_t ea = EA_AL_32();
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move, 32, al, .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_32;
- uint32_t ea = EA_AL_32(mc68kcpu);
+ uint32_t ea = EA_AL_32();
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(movea, 16, ., d)
{
- AX(mc68kcpu) = MAKE_INT_16(DY(mc68kcpu));
+ AX() = MAKE_INT_16(DY());
}
M68KMAKE_OP(movea, 16, ., a)
{
- AX(mc68kcpu) = MAKE_INT_16(AY(mc68kcpu));
+ AX() = MAKE_INT_16(AY());
}
M68KMAKE_OP(movea, 16, ., .)
{
- AX(mc68kcpu) = MAKE_INT_16(M68KMAKE_GET_OPER_AY_16);
+ AX() = MAKE_INT_16(M68KMAKE_GET_OPER_AY_16);
}
M68KMAKE_OP(movea, 32, ., d)
{
- AX(mc68kcpu) = DY(mc68kcpu);
+ AX() = DY();
}
M68KMAKE_OP(movea, 32, ., a)
{
- AX(mc68kcpu) = AY(mc68kcpu);
+ AX() = AY();
}
M68KMAKE_OP(movea, 32, ., .)
{
- AX(mc68kcpu) = M68KMAKE_GET_OPER_AY_32;
+ AX() = M68KMAKE_GET_OPER_AY_32;
}
M68KMAKE_OP(move, 16, frc, d)
{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_010_PLUS())
{
- DY(mc68kcpu) = MASK_OUT_BELOW_16(DY(mc68kcpu)) | m68ki_get_ccr(mc68kcpu);
+ DY() = MASK_OUT_BELOW_16(DY()) | m68ki_get_ccr();
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(move, 16, frc, .)
{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_010_PLUS())
{
- m68ki_write_16((mc68kcpu), M68KMAKE_GET_EA_AY_16, m68ki_get_ccr(mc68kcpu));
+ m68ki_write_16(M68KMAKE_GET_EA_AY_16, m68ki_get_ccr());
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(move, 16, toc, d)
{
- m68ki_set_ccr((mc68kcpu), DY(mc68kcpu));
+ m68ki_set_ccr(DY());
}
M68KMAKE_OP(move, 16, toc, .)
{
- m68ki_set_ccr((mc68kcpu), M68KMAKE_GET_OPER_AY_16);
+ m68ki_set_ccr(M68KMAKE_GET_OPER_AY_16);
}
M68KMAKE_OP(move, 16, frs, d)
{
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type) || (mc68kcpu)->s_flag) /* NS990408 */
+ if(CPU_TYPE_IS_000() || m_s_flag) /* NS990408 */
{
- DY(mc68kcpu) = MASK_OUT_BELOW_16(DY(mc68kcpu)) | m68ki_get_sr(mc68kcpu);
+ DY() = MASK_OUT_BELOW_16(DY()) | m68ki_get_sr();
return;
}
- m68ki_exception_privilege_violation(mc68kcpu);
+ m68ki_exception_privilege_violation();
}
M68KMAKE_OP(move, 16, frs, .)
{
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type) || (mc68kcpu)->s_flag) /* NS990408 */
+ if(CPU_TYPE_IS_000() || m_s_flag) /* NS990408 */
{
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- m68ki_write_16((mc68kcpu), ea, m68ki_get_sr(mc68kcpu));
+ m68ki_write_16(ea, m68ki_get_sr());
return;
}
- m68ki_exception_privilege_violation(mc68kcpu);
+ m68ki_exception_privilege_violation();
}
M68KMAKE_OP(move, 16, tos, d)
{
- if((mc68kcpu)->s_flag)
+ if(m_s_flag)
{
- m68ki_set_sr((mc68kcpu), DY(mc68kcpu));
+ m68ki_set_sr(DY());
return;
}
- m68ki_exception_privilege_violation(mc68kcpu);
+ m68ki_exception_privilege_violation();
}
M68KMAKE_OP(move, 16, tos, .)
{
- if((mc68kcpu)->s_flag)
+ if(m_s_flag)
{
uint32_t new_sr = M68KMAKE_GET_OPER_AY_16;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_set_sr((mc68kcpu), new_sr);
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_set_sr(new_sr);
return;
}
- m68ki_exception_privilege_violation(mc68kcpu);
+ m68ki_exception_privilege_violation();
}
M68KMAKE_OP(move, 32, fru, .)
{
- if((mc68kcpu)->s_flag)
+ if(m_s_flag)
{
- AY(mc68kcpu) = REG_USP(mc68kcpu);
+ AY() = REG_USP();
return;
}
- m68ki_exception_privilege_violation(mc68kcpu);
+ m68ki_exception_privilege_violation();
}
M68KMAKE_OP(move, 32, tou, .)
{
- if((mc68kcpu)->s_flag)
+ if(m_s_flag)
{
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- REG_USP(mc68kcpu) = AY(mc68kcpu);
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ REG_USP() = AY();
return;
}
- m68ki_exception_privilege_violation(mc68kcpu);
+ m68ki_exception_privilege_violation();
}
M68KMAKE_OP(movec, 32, cr, .)
{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_010_PLUS())
{
- if((mc68kcpu)->s_flag)
+ if(m_s_flag)
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
switch (word2 & 0xfff)
{
case 0x000: /* SFC */
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = (mc68kcpu)->sfc;
+ REG_DA()[(word2 >> 12) & 15] = m_sfc;
return;
case 0x001: /* DFC */
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = (mc68kcpu)->dfc;
+ REG_DA()[(word2 >> 12) & 15] = m_dfc;
return;
case 0x002: /* CACR */
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = (mc68kcpu)->cacr;
+ REG_DA()[(word2 >> 12) & 15] = m_cacr;
return;
}
return;
case 0x800: /* USP */
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = REG_USP(mc68kcpu);
+ REG_DA()[(word2 >> 12) & 15] = REG_USP();
return;
case 0x801: /* VBR */
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = (mc68kcpu)->vbr;
+ REG_DA()[(word2 >> 12) & 15] = m_vbr;
return;
case 0x802: /* CAAR */
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = (mc68kcpu)->caar;
+ REG_DA()[(word2 >> 12) & 15] = m_caar;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
break;
case 0x803: /* MSP */
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = (mc68kcpu)->m_flag ? REG_SP(mc68kcpu) : REG_MSP(mc68kcpu);
+ REG_DA()[(word2 >> 12) & 15] = m_m_flag ? REG_SP() : REG_MSP();
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0x804: /* ISP */
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = (mc68kcpu)->m_flag ? REG_ISP(mc68kcpu) : REG_SP(mc68kcpu);
+ REG_DA()[(word2 >> 12) & 15] = m_m_flag ? REG_ISP() : REG_SP();
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0x003: /* TC */
- if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_040_PLUS())
{
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_tc;
+ REG_DA()[(word2 >> 12) & 15] = m_mmu_tc;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0x004: /* ITT0 (040+, ACR0 on ColdFire) */
- if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_040_PLUS())
{
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_itt0;
+ REG_DA()[(word2 >> 12) & 15] = m_mmu_itt0;
return;
}
- else if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
+ else if(CPU_TYPE_IS_COLDFIRE())
{
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_acr0;
+ REG_DA()[(word2 >> 12) & 15] = m_mmu_acr0;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0x005: /* ITT1 (040+, ACR1 on ColdFire) */
- if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_040_PLUS())
{
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_itt1;
+ REG_DA()[(word2 >> 12) & 15] = m_mmu_itt1;
return;
}
- else if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
+ else if(CPU_TYPE_IS_COLDFIRE())
{
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_acr1;
+ REG_DA()[(word2 >> 12) & 15] = m_mmu_acr1;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0x006: /* DTT0 */
- if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_040_PLUS())
{
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_dtt0;
+ REG_DA()[(word2 >> 12) & 15] = m_mmu_dtt0;
return;
}
- else if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
+ else if(CPU_TYPE_IS_COLDFIRE())
{
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_acr2;
+ REG_DA()[(word2 >> 12) & 15] = m_mmu_acr2;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0x007: /* DTT1 */
- if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_040_PLUS())
{
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_dtt1;
+ REG_DA()[(word2 >> 12) & 15] = m_mmu_dtt1;
return;
}
- else if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
+ else if(CPU_TYPE_IS_COLDFIRE())
{
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_acr3;
+ REG_DA()[(word2 >> 12) & 15] = m_mmu_acr3;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0x805: /* MMUSR */
- if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_040_PLUS())
{
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_sr_040;
+ REG_DA()[(word2 >> 12) & 15] = m_mmu_sr_040;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0x806: /* URP */
- if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_040_PLUS())
{
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_urp_aptr;
+ REG_DA()[(word2 >> 12) & 15] = m_mmu_urp_aptr;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0x807: /* SRP */
- if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_040_PLUS())
{
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_srp_aptr;
+ REG_DA()[(word2 >> 12) & 15] = m_mmu_srp_aptr;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0xc00: // ROMBAR0
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_COLDFIRE())
{
/* TODO */
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0xc01: // ROMBAR1
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_COLDFIRE())
{
/* TODO */
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0xc04: // RAMBAR0
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_COLDFIRE())
{
/* TODO */
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0xc05: // RAMBAR1
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_COLDFIRE())
{
/* TODO */
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0xc0c: // MPCR
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_COLDFIRE())
{
/* TODO */
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0xc0d: // EDRAMBAR
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_COLDFIRE())
{
/* TODO */
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0xc0e: // SECMBAR
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_COLDFIRE())
{
/* TODO */
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0xc0f: // MBAR
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_COLDFIRE())
{
/* TODO */
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
default:
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
}
}
- m68ki_exception_privilege_violation(mc68kcpu);
+ m68ki_exception_privilege_violation();
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(movec, 32, rc, .)
{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_010_PLUS())
{
- if((mc68kcpu)->s_flag)
+ if(m_s_flag)
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
switch (word2 & 0xfff)
{
case 0x000: /* SFC */
- (mc68kcpu)->sfc = REG_DA(mc68kcpu)[(word2 >> 12) & 15] & 7;
+ m_sfc = REG_DA()[(word2 >> 12) & 15] & 7;
return;
case 0x001: /* DFC */
- (mc68kcpu)->dfc = REG_DA(mc68kcpu)[(word2 >> 12) & 15] & 7;
+ m_dfc = REG_DA()[(word2 >> 12) & 15] & 7;
return;
case 0x002: /* CACR */
/* Only EC020 and later have CACR */
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
/* 68030 can write all bits except 5-7, 040 can write all */
- if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
+ if (CPU_TYPE_IS_040_PLUS())
{
- (mc68kcpu)->cacr = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
+ m_cacr = REG_DA()[(word2 >> 12) & 15];
}
- else if (CPU_TYPE_IS_030_PLUS((mc68kcpu)->cpu_type))
+ else if (CPU_TYPE_IS_030_PLUS())
{
- (mc68kcpu)->cacr = REG_DA(mc68kcpu)[(word2 >> 12) & 15] & 0xff1f;
+ m_cacr = REG_DA()[(word2 >> 12) & 15] & 0xff1f;
}
else
{
- (mc68kcpu)->cacr = REG_DA(mc68kcpu)[(word2 >> 12) & 15] & 0x0f;
+ m_cacr = REG_DA()[(word2 >> 12) & 15] & 0x0f;
}
-// mc68kcpu->logerror("movec to cacr=%04x\n", (mc68kcpu)->cacr);
- if ((mc68kcpu)->cacr & (M68K_CACR_CI | M68K_CACR_CEI))
+// logerror("movec to cacr=%04x\n", m_cacr);
+ if (m_cacr & (M68K_CACR_CI | M68K_CACR_CEI))
{
- m68ki_ic_clear(mc68kcpu);
+ m68ki_ic_clear();
}
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0x800: /* USP */
- REG_USP(mc68kcpu) = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
+ REG_USP() = REG_DA()[(word2 >> 12) & 15];
return;
case 0x801: /* VBR */
- (mc68kcpu)->vbr = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
+ m_vbr = REG_DA()[(word2 >> 12) & 15];
return;
case 0x802: /* CAAR */
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- (mc68kcpu)->caar = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
+ m_caar = REG_DA()[(word2 >> 12) & 15];
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0x803: /* MSP */
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
/* we are in supervisor mode so just check for M flag */
- if(!(mc68kcpu)->m_flag)
+ if(!m_m_flag)
{
- REG_MSP(mc68kcpu) = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
+ REG_MSP() = REG_DA()[(word2 >> 12) & 15];
return;
}
- REG_SP(mc68kcpu) = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
+ REG_SP() = REG_DA()[(word2 >> 12) & 15];
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0x804: /* ISP */
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- if(!(mc68kcpu)->m_flag)
+ if(!m_m_flag)
{
- REG_SP(mc68kcpu) = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
+ REG_SP() = REG_DA()[(word2 >> 12) & 15];
return;
}
- REG_ISP(mc68kcpu) = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
+ REG_ISP() = REG_DA()[(word2 >> 12) & 15];
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0x003: /* TC */
- if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
+ if (CPU_TYPE_IS_040_PLUS())
{
- mc68kcpu->mmu_tc = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
+ m_mmu_tc = REG_DA()[(word2 >> 12) & 15];
- if (mc68kcpu->mmu_tc & 0x8000)
+ if (m_mmu_tc & 0x8000)
{
- mc68kcpu->pmmu_enabled = 1;
+ m_pmmu_enabled = 1;
}
else
{
- mc68kcpu->pmmu_enabled = 0;
+ m_pmmu_enabled = 0;
}
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0x004: /* ITT0 */
- if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
+ if (CPU_TYPE_IS_040_PLUS())
{
- mc68kcpu->mmu_itt0 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
+ m_mmu_itt0 = REG_DA()[(word2 >> 12) & 15];
return;
}
- else if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
+ else if(CPU_TYPE_IS_COLDFIRE())
{
- mc68kcpu->mmu_acr0 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
+ m_mmu_acr0 = REG_DA()[(word2 >> 12) & 15];
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0x005: /* ITT1 */
- if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
+ if (CPU_TYPE_IS_040_PLUS())
{
- mc68kcpu->mmu_itt1 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
+ m_mmu_itt1 = REG_DA()[(word2 >> 12) & 15];
return;
}
- else if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
+ else if(CPU_TYPE_IS_COLDFIRE())
{
- mc68kcpu->mmu_acr1 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
+ m_mmu_acr1 = REG_DA()[(word2 >> 12) & 15];
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0x006: /* DTT0 */
- if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
+ if (CPU_TYPE_IS_040_PLUS())
{
- mc68kcpu->mmu_dtt0 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
+ m_mmu_dtt0 = REG_DA()[(word2 >> 12) & 15];
return;
}
- else if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
+ else if(CPU_TYPE_IS_COLDFIRE())
{
- mc68kcpu->mmu_acr2 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
+ m_mmu_acr2 = REG_DA()[(word2 >> 12) & 15];
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0x007: /* DTT1 */
- if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
+ if (CPU_TYPE_IS_040_PLUS())
{
- mc68kcpu->mmu_dtt1 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
+ m_mmu_dtt1 = REG_DA()[(word2 >> 12) & 15];
return;
}
- else if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
+ else if(CPU_TYPE_IS_COLDFIRE())
{
- mc68kcpu->mmu_acr3 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
+ m_mmu_acr3 = REG_DA()[(word2 >> 12) & 15];
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0x805: /* MMUSR */
- if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
+ if (CPU_TYPE_IS_040_PLUS())
{
- mc68kcpu->mmu_sr_040 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
+ m_mmu_sr_040 = REG_DA()[(word2 >> 12) & 15];
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0x806: /* URP */
- if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
+ if (CPU_TYPE_IS_040_PLUS())
{
- mc68kcpu->mmu_urp_aptr = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
+ m_mmu_urp_aptr = REG_DA()[(word2 >> 12) & 15];
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0x807: /* SRP */
- if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
+ if (CPU_TYPE_IS_040_PLUS())
{
- mc68kcpu->mmu_srp_aptr = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
+ m_mmu_srp_aptr = REG_DA()[(word2 >> 12) & 15];
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0xc00: // ROMBAR0
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_COLDFIRE())
{
/* TODO */
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0xc01: // ROMBAR1
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_COLDFIRE())
{
/* TODO */
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0xc04: // RAMBAR0
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_COLDFIRE())
{
/* TODO */
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0xc05: // RAMBAR1
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_COLDFIRE())
{
/* TODO */
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0xc0c: // MPCR
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_COLDFIRE())
{
/* TODO */
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0xc0d: // EDRAMBAR
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_COLDFIRE())
{
/* TODO */
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0xc0e: // SECMBAR
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_COLDFIRE())
{
/* TODO */
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
case 0xc0f: // MBAR
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_COLDFIRE())
{
/* TODO */
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
default:
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
return;
}
}
- m68ki_exception_privilege_violation(mc68kcpu);
+ m68ki_exception_privilege_violation();
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(movem, 16, re, pd)
{
uint32_t i = 0;
- uint32_t register_list = OPER_I_16(mc68kcpu);
- uint32_t ea = AY(mc68kcpu);
+ uint32_t register_list = OPER_I_16();
+ uint32_t ea = AY();
uint32_t count = 0;
for(; i < 16; i++)
if(register_list & (1 << i))
{
ea -= 2;
- m68ki_write_16((mc68kcpu), ea, MASK_OUT_ABOVE_16(REG_DA(mc68kcpu)[15-i]));
+ m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_DA()[15-i]));
count++;
}
- AY(mc68kcpu) = ea;
+ AY() = ea;
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
+ m_remaining_cycles -= count<<m_cyc_movem_w;
}
M68KMAKE_OP(movem, 16, re, .)
{
uint32_t i = 0;
- uint32_t register_list = OPER_I_16(mc68kcpu);
+ uint32_t register_list = OPER_I_16();
uint32_t ea = M68KMAKE_GET_EA_AY_16;
uint32_t count = 0;
for(; i < 16; i++)
if(register_list & (1 << i))
{
- m68ki_write_16((mc68kcpu), ea, MASK_OUT_ABOVE_16(REG_DA(mc68kcpu)[i]));
+ m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_DA()[i]));
ea += 2;
count++;
}
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
+ m_remaining_cycles -= count<<m_cyc_movem_w;
}
M68KMAKE_OP(movem, 32, re, pd)
{
uint32_t i = 0;
- uint32_t register_list = OPER_I_16(mc68kcpu);
- uint32_t ea = AY(mc68kcpu);
+ uint32_t register_list = OPER_I_16();
+ uint32_t ea = AY();
uint32_t count = 0;
for(; i < 16; i++)
if(register_list & (1 << i))
{
ea -= 4;
- m68ki_write_16((mc68kcpu), ea+2, REG_DA(mc68kcpu)[15-i] & 0xFFFF );
- m68ki_write_16((mc68kcpu), ea, (REG_DA(mc68kcpu)[15-i] >> 16) & 0xFFFF );
+ m68ki_write_16(ea+2, REG_DA()[15-i] & 0xFFFF );
+ m68ki_write_16(ea, (REG_DA()[15-i] >> 16) & 0xFFFF );
count++;
}
- AY(mc68kcpu) = ea;
+ AY() = ea;
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
+ m_remaining_cycles -= count<<m_cyc_movem_l;
}
M68KMAKE_OP(movem, 32, re, .)
{
uint32_t i = 0;
- uint32_t register_list = OPER_I_16(mc68kcpu);
+ uint32_t register_list = OPER_I_16();
uint32_t ea = M68KMAKE_GET_EA_AY_32;
uint32_t count = 0;
for(; i < 16; i++)
if(register_list & (1 << i))
{
- m68ki_write_32((mc68kcpu), ea, REG_DA(mc68kcpu)[i]);
+ m68ki_write_32(ea, REG_DA()[i]);
ea += 4;
count++;
}
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
+ m_remaining_cycles -= count<<m_cyc_movem_l;
}
M68KMAKE_OP(movem, 16, er, pi)
{
uint32_t i = 0;
- uint32_t register_list = OPER_I_16(mc68kcpu);
- uint32_t ea = AY(mc68kcpu);
+ uint32_t register_list = OPER_I_16();
+ uint32_t ea = AY();
uint32_t count = 0;
for(; i < 16; i++)
if(register_list & (1 << i))
{
- REG_DA(mc68kcpu)[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16((mc68kcpu), ea)));
+ REG_DA()[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16(ea)));
ea += 2;
count++;
}
- AY(mc68kcpu) = ea;
+ AY() = ea;
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
+ m_remaining_cycles -= count<<m_cyc_movem_w;
}
M68KMAKE_OP(movem, 16, er, pcdi)
{
uint32_t i = 0;
- uint32_t register_list = OPER_I_16(mc68kcpu);
- uint32_t ea = EA_PCDI_16(mc68kcpu);
+ uint32_t register_list = OPER_I_16();
+ uint32_t ea = EA_PCDI_16();
uint32_t count = 0;
for(; i < 16; i++)
if(register_list & (1 << i))
{
- REG_DA(mc68kcpu)[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_pcrel_16((mc68kcpu), ea)));
+ REG_DA()[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_pcrel_16(ea)));
ea += 2;
count++;
}
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
+ m_remaining_cycles -= count<<m_cyc_movem_w;
}
M68KMAKE_OP(movem, 16, er, pcix)
{
uint32_t i = 0;
- uint32_t register_list = OPER_I_16(mc68kcpu);
- uint32_t ea = EA_PCIX_16(mc68kcpu);
+ uint32_t register_list = OPER_I_16();
+ uint32_t ea = EA_PCIX_16();
uint32_t count = 0;
for(; i < 16; i++)
if(register_list & (1 << i))
{
- REG_DA(mc68kcpu)[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_pcrel_16((mc68kcpu), ea)));
+ REG_DA()[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_pcrel_16(ea)));
ea += 2;
count++;
}
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
+ m_remaining_cycles -= count<<m_cyc_movem_w;
}
M68KMAKE_OP(movem, 16, er, .)
{
uint32_t i = 0;
- uint32_t register_list = OPER_I_16(mc68kcpu);
+ uint32_t register_list = OPER_I_16();
uint32_t ea = M68KMAKE_GET_EA_AY_16;
uint32_t count = 0;
for(; i < 16; i++)
if(register_list & (1 << i))
{
- REG_DA(mc68kcpu)[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16((mc68kcpu), ea)));
+ REG_DA()[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16(ea)));
ea += 2;
count++;
}
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
+ m_remaining_cycles -= count<<m_cyc_movem_w;
}
M68KMAKE_OP(movem, 32, er, pi)
{
uint32_t i = 0;
- uint32_t register_list = OPER_I_16(mc68kcpu);
- uint32_t ea = AY(mc68kcpu);
+ uint32_t register_list = OPER_I_16();
+ uint32_t ea = AY();
uint32_t count = 0;
for(; i < 16; i++)
if(register_list & (1 << i))
{
- REG_DA(mc68kcpu)[i] = m68ki_read_32((mc68kcpu), ea);
+ REG_DA()[i] = m68ki_read_32(ea);
ea += 4;
count++;
}
- AY(mc68kcpu) = ea;
+ AY() = ea;
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
+ m_remaining_cycles -= count<<m_cyc_movem_l;
}
M68KMAKE_OP(movem, 32, er, pcdi)
{
uint32_t i = 0;
- uint32_t register_list = OPER_I_16(mc68kcpu);
- uint32_t ea = EA_PCDI_32(mc68kcpu);
+ uint32_t register_list = OPER_I_16();
+ uint32_t ea = EA_PCDI_32();
uint32_t count = 0;
for(; i < 16; i++)
if(register_list & (1 << i))
{
- REG_DA(mc68kcpu)[i] = m68ki_read_pcrel_32((mc68kcpu), ea);
+ REG_DA()[i] = m68ki_read_pcrel_32(ea);
ea += 4;
count++;
}
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
+ m_remaining_cycles -= count<<m_cyc_movem_l;
}
M68KMAKE_OP(movem, 32, er, pcix)
{
uint32_t i = 0;
- uint32_t register_list = OPER_I_16(mc68kcpu);
- uint32_t ea = EA_PCIX_32(mc68kcpu);
+ uint32_t register_list = OPER_I_16();
+ uint32_t ea = EA_PCIX_32();
uint32_t count = 0;
for(; i < 16; i++)
if(register_list & (1 << i))
{
- REG_DA(mc68kcpu)[i] = m68ki_read_pcrel_32((mc68kcpu), ea);
+ REG_DA()[i] = m68ki_read_pcrel_32(ea);
ea += 4;
count++;
}
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
+ m_remaining_cycles -= count<<m_cyc_movem_l;
}
M68KMAKE_OP(movem, 32, er, .)
{
uint32_t i = 0;
- uint32_t register_list = OPER_I_16(mc68kcpu);
+ uint32_t register_list = OPER_I_16();
uint32_t ea = M68KMAKE_GET_EA_AY_32;
uint32_t count = 0;
for(; i < 16; i++)
if(register_list & (1 << i))
{
- REG_DA(mc68kcpu)[i] = m68ki_read_32((mc68kcpu), ea);
+ REG_DA()[i] = m68ki_read_32(ea);
ea += 4;
count++;
}
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
+ m_remaining_cycles -= count<<m_cyc_movem_l;
}
M68KMAKE_OP(movep, 16, re, .)
{
- uint32_t ea = EA_AY_DI_16(mc68kcpu);
- uint32_t src = DX(mc68kcpu);
+ uint32_t ea = EA_AY_DI_16();
+ uint32_t src = DX();
- m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(src >> 8));
- m68ki_write_8((mc68kcpu), ea += 2, MASK_OUT_ABOVE_8(src));
+ m68ki_write_8(ea, MASK_OUT_ABOVE_8(src >> 8));
+ m68ki_write_8(ea += 2, MASK_OUT_ABOVE_8(src));
}
M68KMAKE_OP(movep, 32, re, .)
{
- uint32_t ea = EA_AY_DI_32(mc68kcpu);
- uint32_t src = DX(mc68kcpu);
+ uint32_t ea = EA_AY_DI_32();
+ uint32_t src = DX();
- m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(src >> 24));
- m68ki_write_8((mc68kcpu), ea += 2, MASK_OUT_ABOVE_8(src >> 16));
- m68ki_write_8((mc68kcpu), ea += 2, MASK_OUT_ABOVE_8(src >> 8));
- m68ki_write_8((mc68kcpu), ea += 2, MASK_OUT_ABOVE_8(src));
+ m68ki_write_8(ea, MASK_OUT_ABOVE_8(src >> 24));
+ m68ki_write_8(ea += 2, MASK_OUT_ABOVE_8(src >> 16));
+ m68ki_write_8(ea += 2, MASK_OUT_ABOVE_8(src >> 8));
+ m68ki_write_8(ea += 2, MASK_OUT_ABOVE_8(src));
}
M68KMAKE_OP(movep, 16, er, .)
{
- uint32_t ea = EA_AY_DI_16(mc68kcpu);
- uint32_t* r_dst = &DX(mc68kcpu);
+ uint32_t ea = EA_AY_DI_16();
+ uint32_t* r_dst = &DX();
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | ((m68ki_read_8((mc68kcpu), ea) << 8) + m68ki_read_8((mc68kcpu), ea + 2));
+ *r_dst = MASK_OUT_BELOW_16(*r_dst) | ((m68ki_read_8(ea) << 8) + m68ki_read_8(ea + 2));
}
M68KMAKE_OP(movep, 32, er, .)
{
- uint32_t ea = EA_AY_DI_32(mc68kcpu);
+ uint32_t ea = EA_AY_DI_32();
- DX(mc68kcpu) = (m68ki_read_8((mc68kcpu), ea) << 24) + (m68ki_read_8((mc68kcpu), ea + 2) << 16)
- + (m68ki_read_8((mc68kcpu), ea + 4) << 8) + m68ki_read_8((mc68kcpu), ea + 6);
+ DX() = (m68ki_read_8(ea) << 24) + (m68ki_read_8(ea + 2) << 16)
+ + (m68ki_read_8(ea + 4) << 8) + m68ki_read_8(ea + 6);
}
M68KMAKE_OP(moves, 8, ., .)
{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_010_PLUS())
{
- if((mc68kcpu)->s_flag)
+ if(m_s_flag)
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
if(BIT_B(word2)) /* Register to memory */
{
- m68ki_write_8_fc((mc68kcpu), ea, (mc68kcpu)->dfc, MASK_OUT_ABOVE_8(REG_DA(mc68kcpu)[(word2 >> 12) & 15]));
+ m68ki_write_8_fc(ea, m_dfc, MASK_OUT_ABOVE_8(REG_DA()[(word2 >> 12) & 15]));
return;
}
if(BIT_F(word2)) /* Memory to address register */
{
- REG_A(mc68kcpu)[(word2 >> 12) & 7] = MAKE_INT_8(m68ki_read_8_fc((mc68kcpu), ea, (mc68kcpu)->sfc));
- if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
- (mc68kcpu)->remaining_cycles -= 2;
+ REG_A()[(word2 >> 12) & 7] = MAKE_INT_8(m68ki_read_8_fc(ea, m_sfc));
+ if(CPU_TYPE_IS_020_VARIANT())
+ m_remaining_cycles -= 2;
return;
}
/* Memory to data register */
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_BELOW_8(REG_D(mc68kcpu)[(word2 >> 12) & 7]) | m68ki_read_8_fc((mc68kcpu), ea, (mc68kcpu)->sfc);
- if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
- (mc68kcpu)->remaining_cycles -= 2;
+ REG_D()[(word2 >> 12) & 7] = MASK_OUT_BELOW_8(REG_D()[(word2 >> 12) & 7]) | m68ki_read_8_fc(ea, m_sfc);
+ if(CPU_TYPE_IS_020_VARIANT())
+ m_remaining_cycles -= 2;
return;
}
- m68ki_exception_privilege_violation(mc68kcpu);
+ m68ki_exception_privilege_violation();
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(moves, 16, ., .)
{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_010_PLUS())
{
- if((mc68kcpu)->s_flag)
+ if(m_s_flag)
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
if(BIT_B(word2)) /* Register to memory */
{
- m68ki_write_16_fc((mc68kcpu), ea, (mc68kcpu)->dfc, MASK_OUT_ABOVE_16(REG_DA(mc68kcpu)[(word2 >> 12) & 15]));
+ m68ki_write_16_fc(ea, m_dfc, MASK_OUT_ABOVE_16(REG_DA()[(word2 >> 12) & 15]));
return;
}
if(BIT_F(word2)) /* Memory to address register */
{
- REG_A(mc68kcpu)[(word2 >> 12) & 7] = MAKE_INT_16(m68ki_read_16_fc((mc68kcpu), ea, (mc68kcpu)->sfc));
- if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
- (mc68kcpu)->remaining_cycles -= 2;
+ REG_A()[(word2 >> 12) & 7] = MAKE_INT_16(m68ki_read_16_fc(ea, m_sfc));
+ if(CPU_TYPE_IS_020_VARIANT())
+ m_remaining_cycles -= 2;
return;
}
/* Memory to data register */
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_BELOW_16(REG_D(mc68kcpu)[(word2 >> 12) & 7]) | m68ki_read_16_fc((mc68kcpu), ea, (mc68kcpu)->sfc);
- if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
- (mc68kcpu)->remaining_cycles -= 2;
+ REG_D()[(word2 >> 12) & 7] = MASK_OUT_BELOW_16(REG_D()[(word2 >> 12) & 7]) | m68ki_read_16_fc(ea, m_sfc);
+ if(CPU_TYPE_IS_020_VARIANT())
+ m_remaining_cycles -= 2;
return;
}
- m68ki_exception_privilege_violation(mc68kcpu);
+ m68ki_exception_privilege_violation();
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(moves, 32, ., .)
{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_010_PLUS())
{
- if((mc68kcpu)->s_flag)
+ if(m_s_flag)
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
uint32_t ea = M68KMAKE_GET_EA_AY_32;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
if(BIT_B(word2)) /* Register to memory */
{
- m68ki_write_32_fc((mc68kcpu), ea, (mc68kcpu)->dfc, REG_DA(mc68kcpu)[(word2 >> 12) & 15]);
- if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
- (mc68kcpu)->remaining_cycles -= 2;
+ m68ki_write_32_fc(ea, m_dfc, REG_DA()[(word2 >> 12) & 15]);
+ if(CPU_TYPE_IS_020_VARIANT())
+ m_remaining_cycles -= 2;
return;
}
/* Memory to register */
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = m68ki_read_32_fc((mc68kcpu), ea, (mc68kcpu)->sfc);
- if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
- (mc68kcpu)->remaining_cycles -= 2;
+ REG_DA()[(word2 >> 12) & 15] = m68ki_read_32_fc(ea, m_sfc);
+ if(CPU_TYPE_IS_020_VARIANT())
+ m_remaining_cycles -= 2;
return;
}
- m68ki_exception_privilege_violation(mc68kcpu);
+ m68ki_exception_privilege_violation();
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(moveq, 32, ., .)
{
- uint32_t res = DX(mc68kcpu) = MAKE_INT_8(MASK_OUT_ABOVE_8((mc68kcpu)->ir));
+ uint32_t res = DX() = MAKE_INT_8(MASK_OUT_ABOVE_8(m_ir));
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(move16, 32, ., .)
{
- uint16_t w2 = OPER_I_16(mc68kcpu);
- int ax = (mc68kcpu)->ir & 7;
+ uint16_t w2 = OPER_I_16();
+ int ax = m_ir & 7;
int ay = (w2 >> 12) & 7;
- m68ki_write_32((mc68kcpu), REG_A(mc68kcpu)[ay], m68ki_read_32((mc68kcpu), REG_A(mc68kcpu)[ax]));
- m68ki_write_32((mc68kcpu), REG_A(mc68kcpu)[ay]+4, m68ki_read_32((mc68kcpu), REG_A(mc68kcpu)[ax]+4));
- m68ki_write_32((mc68kcpu), REG_A(mc68kcpu)[ay]+8, m68ki_read_32((mc68kcpu), REG_A(mc68kcpu)[ax]+8));
- m68ki_write_32((mc68kcpu), REG_A(mc68kcpu)[ay]+12, m68ki_read_32((mc68kcpu), REG_A(mc68kcpu)[ax]+12));
+ m68ki_write_32(REG_A()[ay], m68ki_read_32(REG_A()[ax]));
+ m68ki_write_32(REG_A()[ay]+4, m68ki_read_32(REG_A()[ax]+4));
+ m68ki_write_32(REG_A()[ay]+8, m68ki_read_32(REG_A()[ax]+8));
+ m68ki_write_32(REG_A()[ay]+12, m68ki_read_32(REG_A()[ax]+12));
- REG_A(mc68kcpu)[ax] += 16;
- REG_A(mc68kcpu)[ay] += 16;
+ REG_A()[ax] += 16;
+ REG_A()[ay] += 16;
}
M68KMAKE_OP(muls, 16, ., d)
{
- uint32_t* r_dst = &DX(mc68kcpu);
- uint32_t res = MASK_OUT_ABOVE_32(MAKE_INT_16(DY(mc68kcpu)) * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));
+ uint32_t* r_dst = &DX();
+ uint32_t res = MASK_OUT_ABOVE_32(MAKE_INT_16(DY()) * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));
*r_dst = res;
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_not_z_flag = res;
+ m_n_flag = NFLAG_32(res);
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(muls, 16, ., .)
{
- uint32_t* r_dst = &DX(mc68kcpu);
+ uint32_t* r_dst = &DX();
uint32_t res = MASK_OUT_ABOVE_32(MAKE_INT_16(M68KMAKE_GET_OPER_AY_16) * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));
*r_dst = res;
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_not_z_flag = res;
+ m_n_flag = NFLAG_32(res);
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(mulu, 16, ., d)
{
- uint32_t* r_dst = &DX(mc68kcpu);
- uint32_t res = MASK_OUT_ABOVE_16(DY(mc68kcpu)) * MASK_OUT_ABOVE_16(*r_dst);
+ uint32_t* r_dst = &DX();
+ uint32_t res = MASK_OUT_ABOVE_16(DY()) * MASK_OUT_ABOVE_16(*r_dst);
*r_dst = res;
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_not_z_flag = res;
+ m_n_flag = NFLAG_32(res);
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(mulu, 16, ., .)
{
- uint32_t* r_dst = &DX(mc68kcpu);
+ uint32_t* r_dst = &DX();
uint32_t res = M68KMAKE_GET_OPER_AY_16 * MASK_OUT_ABOVE_16(*r_dst);
*r_dst = res;
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_not_z_flag = res;
+ m_n_flag = NFLAG_32(res);
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(mull, 32, ., d)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
- uint64_t src = DY(mc68kcpu);
- uint64_t dst = REG_D(mc68kcpu)[(word2 >> 12) & 7];
+ uint32_t word2 = OPER_I_16();
+ uint64_t src = DY();
+ uint64_t dst = REG_D()[(word2 >> 12) & 7];
uint64_t res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
if(BIT_B(word2)) /* signed */
{
res = (int64_t)((int32_t)src) * (int64_t)((int32_t)dst);
if(!BIT_A(word2))
{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = ((int64_t)res != (int32_t)res)<<7;
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->not_z_flag;
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_n_flag = NFLAG_32(res);
+ m_v_flag = ((int64_t)res != (int32_t)res)<<7;
+ REG_D()[(word2 >> 12) & 7] = m_not_z_flag;
return;
}
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
- (mc68kcpu)->n_flag = NFLAG_64(res);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- REG_D(mc68kcpu)[word2 & 7] = (res >> 32);
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
+ m_n_flag = NFLAG_64(res);
+ m_v_flag = VFLAG_CLEAR;
+ REG_D()[word2 & 7] = (res >> 32);
+ REG_D()[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
return;
}
res = src * dst;
if(!BIT_A(word2))
{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = (res > 0xffffffff)<<7;
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->not_z_flag;
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_n_flag = NFLAG_32(res);
+ m_v_flag = (res > 0xffffffff)<<7;
+ REG_D()[(word2 >> 12) & 7] = m_not_z_flag;
return;
}
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
- (mc68kcpu)->n_flag = NFLAG_64(res);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- REG_D(mc68kcpu)[word2 & 7] = (res >> 32);
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
+ m_n_flag = NFLAG_64(res);
+ m_v_flag = VFLAG_CLEAR;
+ REG_D()[word2 & 7] = (res >> 32);
+ REG_D()[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(mull, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t word2 = OPER_I_16(mc68kcpu);
+ uint32_t word2 = OPER_I_16();
uint64_t src = M68KMAKE_GET_OPER_AY_32;
- uint64_t dst = REG_D(mc68kcpu)[(word2 >> 12) & 7];
+ uint64_t dst = REG_D()[(word2 >> 12) & 7];
uint64_t res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
if(BIT_B(word2)) /* signed */
{
res = (int64_t)((int32_t)src) * (int64_t)((int32_t)dst);
if(!BIT_A(word2))
{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = ((int64_t)res != (int32_t)res)<<7;
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->not_z_flag;
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_n_flag = NFLAG_32(res);
+ m_v_flag = ((int64_t)res != (int32_t)res)<<7;
+ REG_D()[(word2 >> 12) & 7] = m_not_z_flag;
return;
}
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
- (mc68kcpu)->n_flag = NFLAG_64(res);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- REG_D(mc68kcpu)[word2 & 7] = (res >> 32);
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
+ m_n_flag = NFLAG_64(res);
+ m_v_flag = VFLAG_CLEAR;
+ REG_D()[word2 & 7] = (res >> 32);
+ REG_D()[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
return;
}
res = src * dst;
if(!BIT_A(word2))
{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = (res > 0xffffffff)<<7;
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->not_z_flag;
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_n_flag = NFLAG_32(res);
+ m_v_flag = (res > 0xffffffff)<<7;
+ REG_D()[(word2 >> 12) & 7] = m_not_z_flag;
return;
}
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
- (mc68kcpu)->n_flag = NFLAG_64(res);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- REG_D(mc68kcpu)[word2 & 7] = (res >> 32);
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res) | (res>>32);
+ m_n_flag = NFLAG_64(res);
+ m_v_flag = VFLAG_CLEAR;
+ REG_D()[word2 & 7] = (res >> 32);
+ REG_D()[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(nbcd, 8, ., d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
+ uint32_t* r_dst = &DY();
uint32_t dst = MASK_OUT_ABOVE_8(*r_dst);
- uint32_t res = -dst - XFLAG_1(mc68kcpu);
+ uint32_t res = -dst - XFLAG_1();
if(res != 0)
{
- (mc68kcpu)->v_flag = res; /* Undefined V behavior */
+ m_v_flag = res; /* Undefined V behavior */
if(((res|dst) & 0x0f) == 0)
res = (res & 0xf0) | 6;
res = MASK_OUT_ABOVE_8(res + 0x9a);
- (mc68kcpu)->v_flag &= ~res; /* Undefined V behavior part II */
+ m_v_flag &= ~res; /* Undefined V behavior part II */
*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
- (mc68kcpu)->not_z_flag |= res;
- (mc68kcpu)->c_flag = CFLAG_SET;
- (mc68kcpu)->x_flag = XFLAG_SET;
+ m_not_z_flag |= res;
+ m_c_flag = CFLAG_SET;
+ m_x_flag = XFLAG_SET;
}
else
{
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->x_flag = XFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_x_flag = XFLAG_CLEAR;
}
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
+ m_n_flag = NFLAG_8(res); /* Undefined N behavior */
}
M68KMAKE_OP(nbcd, 8, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- uint32_t dst = m68ki_read_8((mc68kcpu), ea);
- uint32_t res = -dst - XFLAG_1(mc68kcpu);
+ uint32_t dst = m68ki_read_8(ea);
+ uint32_t res = -dst - XFLAG_1();
if(res != 0)
{
- (mc68kcpu)->v_flag = res; /* Undefined V behavior */
+ m_v_flag = res; /* Undefined V behavior */
if(((res|dst) & 0x0f) == 0)
res = (res & 0xf0) | 6;
res = MASK_OUT_ABOVE_8(res + 0x9a);
- (mc68kcpu)->v_flag &= ~res; /* Undefined V behavior part II */
+ m_v_flag &= ~res; /* Undefined V behavior part II */
- m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(res));
+ m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
- (mc68kcpu)->not_z_flag |= res;
- (mc68kcpu)->c_flag = CFLAG_SET;
- (mc68kcpu)->x_flag = XFLAG_SET;
+ m_not_z_flag |= res;
+ m_c_flag = CFLAG_SET;
+ m_x_flag = XFLAG_SET;
}
else
{
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->x_flag = XFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_x_flag = XFLAG_CLEAR;
}
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
+ m_n_flag = NFLAG_8(res); /* Undefined N behavior */
}
M68KMAKE_OP(neg, 8, ., d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
+ uint32_t* r_dst = &DY();
uint32_t res = 0 - MASK_OUT_ABOVE_8(*r_dst);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = *r_dst & res;
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_c_flag = m_x_flag = CFLAG_8(res);
+ m_v_flag = *r_dst & res;
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
+ *r_dst = MASK_OUT_BELOW_8(*r_dst) | m_not_z_flag;
}
M68KMAKE_OP(neg, 8, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- uint32_t src = m68ki_read_8((mc68kcpu), ea);
+ uint32_t src = m68ki_read_8(ea);
uint32_t res = 0 - src;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = src & res;
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_c_flag = m_x_flag = CFLAG_8(res);
+ m_v_flag = src & res;
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
+ m68ki_write_8(ea, m_not_z_flag);
}
M68KMAKE_OP(neg, 16, ., d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
+ uint32_t* r_dst = &DY();
uint32_t res = 0 - MASK_OUT_ABOVE_16(*r_dst);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_16(res);
- (mc68kcpu)->v_flag = (*r_dst & res)>>8;
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_n_flag = NFLAG_16(res);
+ m_c_flag = m_x_flag = CFLAG_16(res);
+ m_v_flag = (*r_dst & res)>>8;
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
+ *r_dst = MASK_OUT_BELOW_16(*r_dst) | m_not_z_flag;
}
M68KMAKE_OP(neg, 16, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- uint32_t src = m68ki_read_16((mc68kcpu), ea);
+ uint32_t src = m68ki_read_16(ea);
uint32_t res = 0 - src;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_16(res);
- (mc68kcpu)->v_flag = (src & res)>>8;
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_n_flag = NFLAG_16(res);
+ m_c_flag = m_x_flag = CFLAG_16(res);
+ m_v_flag = (src & res)>>8;
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
+ m68ki_write_16(ea, m_not_z_flag);
}
M68KMAKE_OP(neg, 32, ., d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
+ uint32_t* r_dst = &DY();
uint32_t res = 0 - *r_dst;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_SUB_32(*r_dst, 0, res);
- (mc68kcpu)->v_flag = (*r_dst & res)>>24;
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_n_flag = NFLAG_32(res);
+ m_c_flag = m_x_flag = CFLAG_SUB_32(*r_dst, 0, res);
+ m_v_flag = (*r_dst & res)>>24;
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
- *r_dst = (mc68kcpu)->not_z_flag;
+ *r_dst = m_not_z_flag;
}
M68KMAKE_OP(neg, 32, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_32;
- uint32_t src = m68ki_read_32((mc68kcpu), ea);
+ uint32_t src = m68ki_read_32(ea);
uint32_t res = 0 - src;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = CFLAG_SUB_32(src, 0, res);
- (mc68kcpu)->v_flag = (src & res)>>24;
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_n_flag = NFLAG_32(res);
+ m_c_flag = m_x_flag = CFLAG_SUB_32(src, 0, res);
+ m_v_flag = (src & res)>>24;
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
+ m68ki_write_32(ea, m_not_z_flag);
}
M68KMAKE_OP(negx, 8, ., d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t res = 0 - MASK_OUT_ABOVE_8(*r_dst) - XFLAG_1(mc68kcpu);
+ uint32_t* r_dst = &DY();
+ uint32_t res = 0 - MASK_OUT_ABOVE_8(*r_dst) - XFLAG_1();
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = *r_dst & res;
+ m_n_flag = NFLAG_8(res);
+ m_x_flag = m_c_flag = CFLAG_8(res);
+ m_v_flag = *r_dst & res;
res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
}
@@ -7779,31 +7774,31 @@ M68KMAKE_OP(negx, 8, ., d)
M68KMAKE_OP(negx, 8, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- uint32_t src = m68ki_read_8((mc68kcpu), ea);
- uint32_t res = 0 - src - XFLAG_1(mc68kcpu);
+ uint32_t src = m68ki_read_8(ea);
+ uint32_t res = 0 - src - XFLAG_1();
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = src & res;
+ m_n_flag = NFLAG_8(res);
+ m_x_flag = m_c_flag = CFLAG_8(res);
+ m_v_flag = src & res;
res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
}
M68KMAKE_OP(negx, 16, ., d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t res = 0 - MASK_OUT_ABOVE_16(*r_dst) - XFLAG_1(mc68kcpu);
+ uint32_t* r_dst = &DY();
+ uint32_t res = 0 - MASK_OUT_ABOVE_16(*r_dst) - XFLAG_1();
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->v_flag = (*r_dst & res)>>8;
+ m_n_flag = NFLAG_16(res);
+ m_x_flag = m_c_flag = CFLAG_16(res);
+ m_v_flag = (*r_dst & res)>>8;
res = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
}
@@ -7812,31 +7807,31 @@ M68KMAKE_OP(negx, 16, ., d)
M68KMAKE_OP(negx, 16, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- uint32_t src = m68ki_read_16((mc68kcpu), ea);
- uint32_t res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_1(mc68kcpu);
+ uint32_t src = m68ki_read_16(ea);
+ uint32_t res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_1();
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->v_flag = (src & res)>>8;
+ m_n_flag = NFLAG_16(res);
+ m_x_flag = m_c_flag = CFLAG_16(res);
+ m_v_flag = (src & res)>>8;
res = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
}
M68KMAKE_OP(negx, 32, ., d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t res = 0 - MASK_OUT_ABOVE_32(*r_dst) - XFLAG_1(mc68kcpu);
+ uint32_t* r_dst = &DY();
+ uint32_t res = 0 - MASK_OUT_ABOVE_32(*r_dst) - XFLAG_1();
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(*r_dst, 0, res);
- (mc68kcpu)->v_flag = (*r_dst & res)>>24;
+ m_n_flag = NFLAG_32(res);
+ m_x_flag = m_c_flag = CFLAG_SUB_32(*r_dst, 0, res);
+ m_v_flag = (*r_dst & res)>>24;
res = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
*r_dst = res;
}
@@ -7845,392 +7840,392 @@ M68KMAKE_OP(negx, 32, ., d)
M68KMAKE_OP(negx, 32, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_32;
- uint32_t src = m68ki_read_32((mc68kcpu), ea);
- uint32_t res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_1(mc68kcpu);
+ uint32_t src = m68ki_read_32(ea);
+ uint32_t res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_1();
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, 0, res);
- (mc68kcpu)->v_flag = (src & res)>>24;
+ m_n_flag = NFLAG_32(res);
+ m_x_flag = m_c_flag = CFLAG_SUB_32(src, 0, res);
+ m_v_flag = (src & res)>>24;
res = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
}
M68KMAKE_OP(nop, 0, ., .)
{
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
}
M68KMAKE_OP(not, 8, ., d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
+ uint32_t* r_dst = &DY();
uint32_t res = MASK_OUT_ABOVE_8(~*r_dst);
*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(not, 8, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- uint32_t res = MASK_OUT_ABOVE_8(~m68ki_read_8((mc68kcpu), ea));
+ uint32_t res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(not, 16, ., d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
+ uint32_t* r_dst = &DY();
uint32_t res = MASK_OUT_ABOVE_16(~*r_dst);
*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(not, 16, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- uint32_t res = MASK_OUT_ABOVE_16(~m68ki_read_16((mc68kcpu), ea));
+ uint32_t res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(not, 32, ., d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
+ uint32_t* r_dst = &DY();
uint32_t res = *r_dst = MASK_OUT_ABOVE_32(~*r_dst);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(not, 32, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_32;
- uint32_t res = MASK_OUT_ABOVE_32(~m68ki_read_32((mc68kcpu), ea));
+ uint32_t res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(or, 8, er, d)
{
- uint32_t res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= MASK_OUT_ABOVE_8(DY(mc68kcpu))));
+ uint32_t res = MASK_OUT_ABOVE_8((DX() |= MASK_OUT_ABOVE_8(DY())));
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(or, 8, er, .)
{
- uint32_t res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= M68KMAKE_GET_OPER_AY_8));
+ uint32_t res = MASK_OUT_ABOVE_8((DX() |= M68KMAKE_GET_OPER_AY_8));
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(or, 16, er, d)
{
- uint32_t res = MASK_OUT_ABOVE_16((DX(mc68kcpu) |= MASK_OUT_ABOVE_16(DY(mc68kcpu))));
+ uint32_t res = MASK_OUT_ABOVE_16((DX() |= MASK_OUT_ABOVE_16(DY())));
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(or, 16, er, .)
{
- uint32_t res = MASK_OUT_ABOVE_16((DX(mc68kcpu) |= M68KMAKE_GET_OPER_AY_16));
+ uint32_t res = MASK_OUT_ABOVE_16((DX() |= M68KMAKE_GET_OPER_AY_16));
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(or, 32, er, d)
{
- uint32_t res = DX(mc68kcpu) |= DY(mc68kcpu);
+ uint32_t res = DX() |= DY();
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(or, 32, er, .)
{
- uint32_t res = DX(mc68kcpu) |= M68KMAKE_GET_OPER_AY_32;
+ uint32_t res = DX() |= M68KMAKE_GET_OPER_AY_32;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(or, 8, re, .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- uint32_t res = MASK_OUT_ABOVE_8(DX(mc68kcpu) | m68ki_read_8((mc68kcpu), ea));
+ uint32_t res = MASK_OUT_ABOVE_8(DX() | m68ki_read_8(ea));
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(or, 16, re, .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- uint32_t res = MASK_OUT_ABOVE_16(DX(mc68kcpu) | m68ki_read_16((mc68kcpu), ea));
+ uint32_t res = MASK_OUT_ABOVE_16(DX() | m68ki_read_16(ea));
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(or, 32, re, .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_32;
- uint32_t res = DX(mc68kcpu) | m68ki_read_32((mc68kcpu), ea);
+ uint32_t res = DX() | m68ki_read_32(ea);
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(ori, 8, ., d)
{
- uint32_t res = MASK_OUT_ABOVE_8((DY(mc68kcpu) |= OPER_I_8(mc68kcpu)));
+ uint32_t res = MASK_OUT_ABOVE_8((DY() |= OPER_I_8()));
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(ori, 8, ., .)
{
- uint32_t src = OPER_I_8(mc68kcpu);
+ uint32_t src = OPER_I_8();
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- uint32_t res = MASK_OUT_ABOVE_8(src | m68ki_read_8((mc68kcpu), ea));
+ uint32_t res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(ori, 16, ., d)
{
- uint32_t res = MASK_OUT_ABOVE_16(DY(mc68kcpu) |= OPER_I_16(mc68kcpu));
+ uint32_t res = MASK_OUT_ABOVE_16(DY() |= OPER_I_16());
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(ori, 16, ., .)
{
- uint32_t src = OPER_I_16(mc68kcpu);
+ uint32_t src = OPER_I_16();
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- uint32_t res = MASK_OUT_ABOVE_16(src | m68ki_read_16((mc68kcpu), ea));
+ uint32_t res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(ori, 32, ., d)
{
- uint32_t res = DY(mc68kcpu) |= OPER_I_32(mc68kcpu);
+ uint32_t res = DY() |= OPER_I_32();
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(ori, 32, ., .)
{
- uint32_t src = OPER_I_32(mc68kcpu);
+ uint32_t src = OPER_I_32();
uint32_t ea = M68KMAKE_GET_EA_AY_32;
- uint32_t res = src | m68ki_read_32((mc68kcpu), ea);
+ uint32_t res = src | m68ki_read_32(ea);
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(ori, 16, toc, .)
{
- m68ki_set_ccr((mc68kcpu), m68ki_get_ccr(mc68kcpu) | OPER_I_16(mc68kcpu));
+ m68ki_set_ccr(m68ki_get_ccr() | OPER_I_16());
}
M68KMAKE_OP(ori, 16, tos, .)
{
- if((mc68kcpu)->s_flag)
+ if(m_s_flag)
{
- uint32_t src = OPER_I_16(mc68kcpu);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_set_sr((mc68kcpu), m68ki_get_sr(mc68kcpu) | src);
+ uint32_t src = OPER_I_16();
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_set_sr(m68ki_get_sr() | src);
return;
}
- m68ki_exception_privilege_violation(mc68kcpu);
+ m68ki_exception_privilege_violation();
}
M68KMAKE_OP(pack, 16, rr, .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- /* Note: DX(mc68kcpu) and DY(mc68kcpu) are reversed in Motorola's docs */
- uint32_t src = DY(mc68kcpu) + OPER_I_16(mc68kcpu);
- uint32_t* r_dst = &DX(mc68kcpu);
+ /* Note: DX() and DY() are reversed in Motorola's docs */
+ uint32_t src = DY() + OPER_I_16();
+ uint32_t* r_dst = &DX();
*r_dst = MASK_OUT_BELOW_8(*r_dst) | ((src >> 4) & 0x00f0) | (src & 0x000f);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(pack, 16, mm, ax7)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
/* Note: AX and AY are reversed in Motorola's docs */
- uint32_t ea_src = EA_AY_PD_8(mc68kcpu);
- uint32_t src = m68ki_read_8((mc68kcpu), ea_src);
- ea_src = EA_AY_PD_8(mc68kcpu);
- src = ((src << 8) | m68ki_read_8((mc68kcpu), ea_src)) + OPER_I_16(mc68kcpu);
+ uint32_t ea_src = EA_AY_PD_8();
+ uint32_t src = m68ki_read_8(ea_src);
+ ea_src = EA_AY_PD_8();
+ src = ((src << 8) | m68ki_read_8(ea_src)) + OPER_I_16();
- m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
+ m68ki_write_8(EA_A7_PD_8(), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(pack, 16, mm, ay7)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
/* Note: AX and AY are reversed in Motorola's docs */
- uint32_t ea_src = EA_A7_PD_8(mc68kcpu);
- uint32_t src = m68ki_read_8((mc68kcpu), ea_src);
- ea_src = EA_A7_PD_8(mc68kcpu);
- src = ((src << 8) | m68ki_read_8((mc68kcpu), ea_src)) + OPER_I_16(mc68kcpu);
+ uint32_t ea_src = EA_A7_PD_8();
+ uint32_t src = m68ki_read_8(ea_src);
+ ea_src = EA_A7_PD_8();
+ src = ((src << 8) | m68ki_read_8(ea_src)) + OPER_I_16();
- m68ki_write_8((mc68kcpu), EA_AX_PD_8(mc68kcpu), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
+ m68ki_write_8(EA_AX_PD_8(), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(pack, 16, mm, axy7)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t ea_src = EA_A7_PD_8(mc68kcpu);
- uint32_t src = m68ki_read_8((mc68kcpu), ea_src);
- ea_src = EA_A7_PD_8(mc68kcpu);
- src = ((src << 8) | m68ki_read_8((mc68kcpu), ea_src)) + OPER_I_16(mc68kcpu);
+ uint32_t ea_src = EA_A7_PD_8();
+ uint32_t src = m68ki_read_8(ea_src);
+ ea_src = EA_A7_PD_8();
+ src = ((src << 8) | m68ki_read_8(ea_src)) + OPER_I_16();
- m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
+ m68ki_write_8(EA_A7_PD_8(), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(pack, 16, mm, .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
/* Note: AX and AY are reversed in Motorola's docs */
- uint32_t ea_src = EA_AY_PD_8(mc68kcpu);
- uint32_t src = m68ki_read_8((mc68kcpu), ea_src);
- ea_src = EA_AY_PD_8(mc68kcpu);
- src = ((src << 8) | m68ki_read_8((mc68kcpu), ea_src)) + OPER_I_16(mc68kcpu);
+ uint32_t ea_src = EA_AY_PD_8();
+ uint32_t src = m68ki_read_8(ea_src);
+ ea_src = EA_AY_PD_8();
+ src = ((src << 8) | m68ki_read_8(ea_src)) + OPER_I_16();
- m68ki_write_8((mc68kcpu), EA_AX_PD_8(mc68kcpu), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
+ m68ki_write_8(EA_AX_PD_8(), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
@@ -8238,975 +8233,975 @@ M68KMAKE_OP(pea, 32, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_32;
- m68ki_push_32((mc68kcpu), ea);
+ m68ki_push_32(ea);
}
M68KMAKE_OP(pflusha, 32, ., .)
{
- if ((CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type)) && ((mc68kcpu)->has_pmmu))
+ if ((CPU_TYPE_IS_EC020_PLUS()) && (m_has_pmmu))
{
- mc68kcpu->logerror("68040: unhandled PFLUSHA (ir=%04x)\n", mc68kcpu->ir);
+ logerror("68040: unhandled PFLUSHA (ir=%04x)\n", m_ir);
return;
}
- m68ki_exception_1111(mc68kcpu);
+ m68ki_exception_1111();
}
M68KMAKE_OP(pflushan, 32, ., .)
{
- if ((CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type)) && ((mc68kcpu)->has_pmmu))
+ if ((CPU_TYPE_IS_EC020_PLUS()) && (m_has_pmmu))
{
- mc68kcpu->logerror("68040: unhandled PFLUSHAN (ir=%04x)\n", mc68kcpu->ir);
+ logerror("68040: unhandled PFLUSHAN (ir=%04x)\n", m_ir);
return;
}
- m68ki_exception_1111(mc68kcpu);
+ m68ki_exception_1111();
}
M68KMAKE_OP(pmmu, 32, ., .)
{
- if ((CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type)) && ((mc68kcpu)->has_pmmu))
+ if ((CPU_TYPE_IS_EC020_PLUS()) && (m_has_pmmu))
{
- m68881_mmu_ops(mc68kcpu);
+ m68881_mmu_ops();
}
else
{
- m68ki_exception_1111(mc68kcpu);
+ m68ki_exception_1111();
}
}
M68KMAKE_OP(ptest, 32, ., .)
{
- if ((CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type)) && ((mc68kcpu)->has_pmmu))
+ if ((CPU_TYPE_IS_040_PLUS()) && (m_has_pmmu))
{
- mc68kcpu->logerror("68040: unhandled PTEST\n");
+ logerror("68040: unhandled PTEST\n");
return;
}
else
{
- m68ki_exception_1111(mc68kcpu);
+ m68ki_exception_1111();
}
}
M68KMAKE_OP(reset, 0, ., .)
{
- if((mc68kcpu)->s_flag)
+ if(m_s_flag)
{
- if (!(mc68kcpu)->reset_instr_callback.isnull())
- ((mc68kcpu)->reset_instr_callback)(1);
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_reset;
+ if (!m_reset_instr_callback.isnull())
+ (m_reset_instr_callback)(1);
+ m_remaining_cycles -= m_cyc_reset;
return;
}
- m68ki_exception_privilege_violation(mc68kcpu);
+ m68ki_exception_privilege_violation();
}
M68KMAKE_OP(ror, 8, s, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t orig_shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t orig_shift = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t shift = orig_shift & 7;
uint32_t src = MASK_OUT_ABOVE_8(*r_dst);
uint32_t res = ROR_8(src, shift);
if(orig_shift != 0)
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= orig_shift<<m_cyc_shift;
*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = src << (9-orig_shift);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_c_flag = src << (9-orig_shift);
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(ror, 16, s, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t src = MASK_OUT_ABOVE_16(*r_dst);
uint32_t res = ROR_16(src, shift);
if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = src << (9-shift);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_c_flag = src << (9-shift);
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(ror, 32, s, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = (((m_ir >> 9) - 1) & 7) + 1;
uint64_t src = *r_dst;
uint32_t res = ROR_32(src, shift);
if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
*r_dst = res;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = src << (9-shift);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_c_flag = src << (9-shift);
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(ror, 8, r, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t orig_shift = DX(mc68kcpu) & 0x3f;
+ uint32_t* r_dst = &DY();
+ uint32_t orig_shift = DX() & 0x3f;
uint32_t shift = orig_shift & 7;
uint32_t src = MASK_OUT_ABOVE_8(*r_dst);
uint32_t res = ROR_8(src, shift);
if(orig_shift != 0)
{
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= orig_shift<<m_cyc_shift;
*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
- (mc68kcpu)->c_flag = src << (8-((shift-1)&7));
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = src << (8-((shift-1)&7));
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
return;
}
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_8(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(src);
+ m_not_z_flag = src;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(ror, 16, r, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t orig_shift = DX(mc68kcpu) & 0x3f;
+ uint32_t* r_dst = &DY();
+ uint32_t orig_shift = DX() & 0x3f;
uint32_t shift = orig_shift & 15;
uint32_t src = MASK_OUT_ABOVE_16(*r_dst);
uint32_t res = ROR_16(src, shift);
if(orig_shift != 0)
{
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= orig_shift<<m_cyc_shift;
*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- (mc68kcpu)->c_flag = (src >> ((shift - 1) & 15)) << 8;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = (src >> ((shift - 1) & 15)) << 8;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
return;
}
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_16(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(src);
+ m_not_z_flag = src;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(ror, 32, r, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t orig_shift = DX(mc68kcpu) & 0x3f;
+ uint32_t* r_dst = &DY();
+ uint32_t orig_shift = DX() & 0x3f;
uint32_t shift = orig_shift & 31;
uint64_t src = *r_dst;
uint32_t res = ROR_32(src, shift);
if(orig_shift != 0)
{
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= orig_shift<<m_cyc_shift;
*r_dst = res;
- (mc68kcpu)->c_flag = (src >> ((shift - 1) & 31)) << 8;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = (src >> ((shift - 1) & 31)) << 8;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
return;
}
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_32(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(src);
+ m_not_z_flag = src;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(ror, 16, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- uint32_t src = m68ki_read_16((mc68kcpu), ea);
+ uint32_t src = m68ki_read_16(ea);
uint32_t res = ROR_16(src, 1);
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = src << 8;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_c_flag = src << 8;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(rol, 8, s, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t orig_shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t orig_shift = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t shift = orig_shift & 7;
uint32_t src = MASK_OUT_ABOVE_8(*r_dst);
uint32_t res = ROL_8(src, shift);
if(orig_shift != 0)
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= orig_shift<<m_cyc_shift;
*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = src << orig_shift;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_c_flag = src << orig_shift;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(rol, 16, s, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t src = MASK_OUT_ABOVE_16(*r_dst);
uint32_t res = ROL_16(src, shift);
if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = src >> (8-shift);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_c_flag = src >> (8-shift);
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(rol, 32, s, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = (((m_ir >> 9) - 1) & 7) + 1;
uint64_t src = *r_dst;
uint32_t res = ROL_32(src, shift);
if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
*r_dst = res;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = src >> (24-shift);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_c_flag = src >> (24-shift);
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(rol, 8, r, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t orig_shift = DX(mc68kcpu) & 0x3f;
+ uint32_t* r_dst = &DY();
+ uint32_t orig_shift = DX() & 0x3f;
uint32_t shift = orig_shift & 7;
uint32_t src = MASK_OUT_ABOVE_8(*r_dst);
uint32_t res = ROL_8(src, shift);
if(orig_shift != 0)
{
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= orig_shift<<m_cyc_shift;
if(shift != 0)
{
*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
- (mc68kcpu)->c_flag = src << shift;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = src << shift;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
return;
}
- (mc68kcpu)->c_flag = (src & 1)<<8;
- (mc68kcpu)->n_flag = NFLAG_8(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = (src & 1)<<8;
+ m_n_flag = NFLAG_8(src);
+ m_not_z_flag = src;
+ m_v_flag = VFLAG_CLEAR;
return;
}
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_8(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(src);
+ m_not_z_flag = src;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(rol, 16, r, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t orig_shift = DX(mc68kcpu) & 0x3f;
+ uint32_t* r_dst = &DY();
+ uint32_t orig_shift = DX() & 0x3f;
uint32_t shift = orig_shift & 15;
uint32_t src = MASK_OUT_ABOVE_16(*r_dst);
uint32_t res = MASK_OUT_ABOVE_16(ROL_16(src, shift));
if(orig_shift != 0)
{
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= orig_shift<<m_cyc_shift;
if(shift != 0)
{
*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- (mc68kcpu)->c_flag = (src << shift) >> 8;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = (src << shift) >> 8;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
return;
}
- (mc68kcpu)->c_flag = (src & 1)<<8;
- (mc68kcpu)->n_flag = NFLAG_16(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = (src & 1)<<8;
+ m_n_flag = NFLAG_16(src);
+ m_not_z_flag = src;
+ m_v_flag = VFLAG_CLEAR;
return;
}
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_16(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(src);
+ m_not_z_flag = src;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(rol, 32, r, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t orig_shift = DX(mc68kcpu) & 0x3f;
+ uint32_t* r_dst = &DY();
+ uint32_t orig_shift = DX() & 0x3f;
uint32_t shift = orig_shift & 31;
uint64_t src = *r_dst;
uint32_t res = ROL_32(src, shift);
if(orig_shift != 0)
{
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= orig_shift<<m_cyc_shift;
*r_dst = res;
- (mc68kcpu)->c_flag = (src >> ((32 - shift) & 0x1f)) << 8;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = (src >> ((32 - shift) & 0x1f)) << 8;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
return;
}
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_32(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(src);
+ m_not_z_flag = src;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(rol, 16, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- uint32_t src = m68ki_read_16((mc68kcpu), ea);
+ uint32_t src = m68ki_read_16(ea);
uint32_t res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = src >> 7;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_c_flag = src >> 7;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(roxr, 8, s, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t src = MASK_OUT_ABOVE_8(*r_dst);
- uint32_t res = ROR_9(src | (XFLAG_1(mc68kcpu) << 8), shift);
+ uint32_t res = ROR_9(src | (XFLAG_1() << 8), shift);
if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res;
+ m_c_flag = m_x_flag = res;
res = MASK_OUT_ABOVE_8(res);
*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(roxr, 16, s, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t src = MASK_OUT_ABOVE_16(*r_dst);
- uint32_t res = ROR_17(src | (XFLAG_1(mc68kcpu) << 16), shift);
+ uint32_t res = ROR_17(src | (XFLAG_1() << 16), shift);
if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
+ m_c_flag = m_x_flag = res >> 8;
res = MASK_OUT_ABOVE_16(res);
*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(roxr, 32, s, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = (((m_ir >> 9) - 1) & 7) + 1;
uint64_t src = *r_dst;
- uint64_t res = src | (((uint64_t)XFLAG_1(mc68kcpu)) << 32);
+ uint64_t res = src | (((uint64_t)XFLAG_1()) << 32);
if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
res = ROR_33_64(res, shift);
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 24;
+ m_c_flag = m_x_flag = res >> 24;
res = MASK_OUT_ABOVE_32(res);
*r_dst = res;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(roxr, 8, r, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t orig_shift = DX(mc68kcpu) & 0x3f;
+ uint32_t* r_dst = &DY();
+ uint32_t orig_shift = DX() & 0x3f;
if(orig_shift != 0)
{
uint32_t shift = orig_shift % 9;
uint32_t src = MASK_OUT_ABOVE_8(*r_dst);
- uint32_t res = ROR_9(src | (XFLAG_1(mc68kcpu) << 8), shift);
+ uint32_t res = ROR_9(src | (XFLAG_1() << 8), shift);
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= orig_shift<<m_cyc_shift;
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res;
+ m_c_flag = m_x_flag = res;
res = MASK_OUT_ABOVE_8(res);
*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
return;
}
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag;
- (mc68kcpu)->n_flag = NFLAG_8(*r_dst);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(*r_dst);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = m_x_flag;
+ m_n_flag = NFLAG_8(*r_dst);
+ m_not_z_flag = MASK_OUT_ABOVE_8(*r_dst);
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(roxr, 16, r, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t orig_shift = DX(mc68kcpu) & 0x3f;
+ uint32_t* r_dst = &DY();
+ uint32_t orig_shift = DX() & 0x3f;
if(orig_shift != 0)
{
uint32_t shift = orig_shift % 17;
uint32_t src = MASK_OUT_ABOVE_16(*r_dst);
- uint32_t res = ROR_17(src | (XFLAG_1(mc68kcpu) << 16), shift);
+ uint32_t res = ROR_17(src | (XFLAG_1() << 16), shift);
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= orig_shift<<m_cyc_shift;
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
+ m_c_flag = m_x_flag = res >> 8;
res = MASK_OUT_ABOVE_16(res);
*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
return;
}
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag;
- (mc68kcpu)->n_flag = NFLAG_16(*r_dst);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(*r_dst);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = m_x_flag;
+ m_n_flag = NFLAG_16(*r_dst);
+ m_not_z_flag = MASK_OUT_ABOVE_16(*r_dst);
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(roxr, 32, r, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t orig_shift = DX(mc68kcpu) & 0x3f;
+ uint32_t* r_dst = &DY();
+ uint32_t orig_shift = DX() & 0x3f;
if(orig_shift != 0)
{
uint32_t shift = orig_shift % 33;
uint64_t src = *r_dst;
- uint64_t res = src | (((uint64_t)XFLAG_1(mc68kcpu)) << 32);
+ uint64_t res = src | (((uint64_t)XFLAG_1()) << 32);
res = ROR_33_64(res, shift);
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= orig_shift<<m_cyc_shift;
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 24;
+ m_c_flag = m_x_flag = res >> 24;
res = MASK_OUT_ABOVE_32(res);
*r_dst = res;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
return;
}
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag;
- (mc68kcpu)->n_flag = NFLAG_32(*r_dst);
- (mc68kcpu)->not_z_flag = *r_dst;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = m_x_flag;
+ m_n_flag = NFLAG_32(*r_dst);
+ m_not_z_flag = *r_dst;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(roxr, 16, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- uint32_t src = m68ki_read_16((mc68kcpu), ea);
- uint32_t res = ROR_17(src | (XFLAG_1(mc68kcpu) << 16), 1);
+ uint32_t src = m68ki_read_16(ea);
+ uint32_t res = ROR_17(src | (XFLAG_1() << 16), 1);
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
+ m_c_flag = m_x_flag = res >> 8;
res = MASK_OUT_ABOVE_16(res);
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(roxl, 8, s, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t src = MASK_OUT_ABOVE_8(*r_dst);
- uint32_t res = ROL_9(src | (XFLAG_1(mc68kcpu) << 8), shift);
+ uint32_t res = ROL_9(src | (XFLAG_1() << 8), shift);
if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res;
+ m_c_flag = m_x_flag = res;
res = MASK_OUT_ABOVE_8(res);
*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(roxl, 16, s, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t src = MASK_OUT_ABOVE_16(*r_dst);
- uint32_t res = ROL_17(src | (XFLAG_1(mc68kcpu) << 16), shift);
+ uint32_t res = ROL_17(src | (XFLAG_1() << 16), shift);
if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
+ m_c_flag = m_x_flag = res >> 8;
res = MASK_OUT_ABOVE_16(res);
*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(roxl, 32, s, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t shift = (((m_ir >> 9) - 1) & 7) + 1;
uint64_t src = *r_dst;
- uint64_t res = src | (((uint64_t)XFLAG_1(mc68kcpu)) << 32);
+ uint64_t res = src | (((uint64_t)XFLAG_1()) << 32);
if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= shift<<m_cyc_shift;
res = ROL_33_64(res, shift);
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 24;
+ m_c_flag = m_x_flag = res >> 24;
res = MASK_OUT_ABOVE_32(res);
*r_dst = res;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(roxl, 8, r, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t orig_shift = DX(mc68kcpu) & 0x3f;
+ uint32_t* r_dst = &DY();
+ uint32_t orig_shift = DX() & 0x3f;
if(orig_shift != 0)
{
uint32_t shift = orig_shift % 9;
uint32_t src = MASK_OUT_ABOVE_8(*r_dst);
- uint32_t res = ROL_9(src | (XFLAG_1(mc68kcpu) << 8), shift);
+ uint32_t res = ROL_9(src | (XFLAG_1() << 8), shift);
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= orig_shift<<m_cyc_shift;
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res;
+ m_c_flag = m_x_flag = res;
res = MASK_OUT_ABOVE_8(res);
*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
return;
}
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag;
- (mc68kcpu)->n_flag = NFLAG_8(*r_dst);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(*r_dst);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = m_x_flag;
+ m_n_flag = NFLAG_8(*r_dst);
+ m_not_z_flag = MASK_OUT_ABOVE_8(*r_dst);
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(roxl, 16, r, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t orig_shift = DX(mc68kcpu) & 0x3f;
+ uint32_t* r_dst = &DY();
+ uint32_t orig_shift = DX() & 0x3f;
if(orig_shift != 0)
{
uint32_t shift = orig_shift % 17;
uint32_t src = MASK_OUT_ABOVE_16(*r_dst);
- uint32_t res = ROL_17(src | (XFLAG_1(mc68kcpu) << 16), shift);
+ uint32_t res = ROL_17(src | (XFLAG_1() << 16), shift);
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= orig_shift<<m_cyc_shift;
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
+ m_c_flag = m_x_flag = res >> 8;
res = MASK_OUT_ABOVE_16(res);
*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
return;
}
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag;
- (mc68kcpu)->n_flag = NFLAG_16(*r_dst);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(*r_dst);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = m_x_flag;
+ m_n_flag = NFLAG_16(*r_dst);
+ m_not_z_flag = MASK_OUT_ABOVE_16(*r_dst);
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(roxl, 32, r, .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t orig_shift = DX(mc68kcpu) & 0x3f;
+ uint32_t* r_dst = &DY();
+ uint32_t orig_shift = DX() & 0x3f;
if(orig_shift != 0)
{
uint32_t shift = orig_shift % 33;
uint64_t src = *r_dst;
- uint64_t res = src | (((uint64_t)XFLAG_1(mc68kcpu)) << 32);
+ uint64_t res = src | (((uint64_t)XFLAG_1()) << 32);
res = ROL_33_64(res, shift);
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
+ m_remaining_cycles -= orig_shift<<m_cyc_shift;
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 24;
+ m_c_flag = m_x_flag = res >> 24;
res = MASK_OUT_ABOVE_32(res);
*r_dst = res;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
return;
}
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag;
- (mc68kcpu)->n_flag = NFLAG_32(*r_dst);
- (mc68kcpu)->not_z_flag = *r_dst;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_c_flag = m_x_flag;
+ m_n_flag = NFLAG_32(*r_dst);
+ m_not_z_flag = *r_dst;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(roxl, 16, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- uint32_t src = m68ki_read_16((mc68kcpu), ea);
- uint32_t res = ROL_17(src | (XFLAG_1(mc68kcpu) << 16), 1);
+ uint32_t src = m68ki_read_16(ea);
+ uint32_t res = ROL_17(src | (XFLAG_1() << 16), 1);
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
+ m_c_flag = m_x_flag = res >> 8;
res = MASK_OUT_ABOVE_16(res);
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(rtd, 32, ., .)
{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_010_PLUS())
{
- uint32_t new_pc = m68ki_pull_32(mc68kcpu);
+ uint32_t new_pc = m68ki_pull_32();
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- REG_A(mc68kcpu)[7] = MASK_OUT_ABOVE_32(REG_A(mc68kcpu)[7] + MAKE_INT_16(OPER_I_16(mc68kcpu)));
- m68ki_jump((mc68kcpu), new_pc);
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ REG_A()[7] = MASK_OUT_ABOVE_32(REG_A()[7] + MAKE_INT_16(OPER_I_16()));
+ m68ki_jump(new_pc);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(rte, 32, ., .)
{
- if((mc68kcpu)->s_flag)
+ if(m_s_flag)
{
uint32_t new_sr;
uint32_t new_pc;
uint32_t format_word;
- if (!(mc68kcpu)->rte_instr_callback.isnull())
- ((mc68kcpu)->rte_instr_callback)(1);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
+ if (!m_rte_instr_callback.isnull())
+ (m_rte_instr_callback)(1);
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_000())
{
- new_sr = m68ki_pull_16(mc68kcpu);
- new_pc = m68ki_pull_32(mc68kcpu);
- m68ki_jump((mc68kcpu), new_pc);
- m68ki_set_sr((mc68kcpu), new_sr);
+ new_sr = m68ki_pull_16();
+ new_pc = m68ki_pull_32();
+ m68ki_jump(new_pc);
+ m68ki_set_sr(new_sr);
- (mc68kcpu)->instr_mode = INSTRUCTION_YES;
- (mc68kcpu)->run_mode = RUN_MODE_NORMAL;
+ m_instr_mode = INSTRUCTION_YES;
+ m_run_mode = RUN_MODE_NORMAL;
return;
}
- if(CPU_TYPE_IS_010((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_010())
{
- format_word = m68ki_read_16((mc68kcpu), REG_A(mc68kcpu)[7]+6) >> 12;
+ format_word = m68ki_read_16(REG_A()[7]+6) >> 12;
if(format_word == 0)
{
- new_sr = m68ki_pull_16(mc68kcpu);
- new_pc = m68ki_pull_32(mc68kcpu);
- m68ki_fake_pull_16(mc68kcpu); /* format word */
- m68ki_jump((mc68kcpu), new_pc);
- m68ki_set_sr((mc68kcpu), new_sr);
- (mc68kcpu)->instr_mode = INSTRUCTION_YES;
- (mc68kcpu)->run_mode = RUN_MODE_NORMAL;
+ new_sr = m68ki_pull_16();
+ new_pc = m68ki_pull_32();
+ m68ki_fake_pull_16(); /* format word */
+ m68ki_jump(new_pc);
+ m68ki_set_sr(new_sr);
+ m_instr_mode = INSTRUCTION_YES;
+ m_run_mode = RUN_MODE_NORMAL;
return;
}
- (mc68kcpu)->instr_mode = INSTRUCTION_YES;
- (mc68kcpu)->run_mode = RUN_MODE_NORMAL;
+ m_instr_mode = INSTRUCTION_YES;
+ m_run_mode = RUN_MODE_NORMAL;
/* Not handling bus fault (9) */
- m68ki_exception_format_error(mc68kcpu);
+ m68ki_exception_format_error();
return;
}
/* Otherwise it's 020 */
rte_loop:
- format_word = m68ki_read_16((mc68kcpu), REG_A(mc68kcpu)[7]+6) >> 12;
+ format_word = m68ki_read_16(REG_A()[7]+6) >> 12;
switch(format_word)
{
case 0: /* Normal */
- new_sr = m68ki_pull_16(mc68kcpu);
- new_pc = m68ki_pull_32(mc68kcpu);
- m68ki_fake_pull_16(mc68kcpu); /* format word */
- m68ki_jump((mc68kcpu), new_pc);
- m68ki_set_sr((mc68kcpu), new_sr);
- (mc68kcpu)->instr_mode = INSTRUCTION_YES;
- (mc68kcpu)->run_mode = RUN_MODE_NORMAL;
+ new_sr = m68ki_pull_16();
+ new_pc = m68ki_pull_32();
+ m68ki_fake_pull_16(); /* format word */
+ m68ki_jump(new_pc);
+ m68ki_set_sr(new_sr);
+ m_instr_mode = INSTRUCTION_YES;
+ m_run_mode = RUN_MODE_NORMAL;
return;
case 1: /* Throwaway */
- new_sr = m68ki_pull_16(mc68kcpu);
- m68ki_fake_pull_32(mc68kcpu); /* program counter */
- m68ki_fake_pull_16(mc68kcpu); /* format word */
- m68ki_set_sr_noint((mc68kcpu), new_sr);
+ new_sr = m68ki_pull_16();
+ m68ki_fake_pull_32(); /* program counter */
+ m68ki_fake_pull_16(); /* format word */
+ m68ki_set_sr_noint(new_sr);
goto rte_loop;
case 2: /* Trap */
- new_sr = m68ki_pull_16(mc68kcpu);
- new_pc = m68ki_pull_32(mc68kcpu);
- m68ki_fake_pull_16(mc68kcpu); /* format word */
- m68ki_fake_pull_32(mc68kcpu); /* address */
- m68ki_jump((mc68kcpu), new_pc);
- m68ki_set_sr((mc68kcpu), new_sr);
- (mc68kcpu)->instr_mode = INSTRUCTION_YES;
- (mc68kcpu)->run_mode = RUN_MODE_NORMAL;
+ new_sr = m68ki_pull_16();
+ new_pc = m68ki_pull_32();
+ m68ki_fake_pull_16(); /* format word */
+ m68ki_fake_pull_32(); /* address */
+ m68ki_jump(new_pc);
+ m68ki_set_sr(new_sr);
+ m_instr_mode = INSTRUCTION_YES;
+ m_run_mode = RUN_MODE_NORMAL;
return;
case 7: /* 68040 access error */
- new_sr = m68ki_pull_16(mc68kcpu);
- new_pc = m68ki_pull_32(mc68kcpu);
- m68ki_fake_pull_16(mc68kcpu); /* $06: format word */
- m68ki_fake_pull_32(mc68kcpu); /* $08: effective address */
- m68ki_fake_pull_16(mc68kcpu); /* $0c: special status word */
- m68ki_fake_pull_16(mc68kcpu); /* $0e: wb3s */
- m68ki_fake_pull_16(mc68kcpu); /* $10: wb2s */
- m68ki_fake_pull_16(mc68kcpu); /* $12: wb1s */
- m68ki_fake_pull_32(mc68kcpu); /* $14: data fault address */
- m68ki_fake_pull_32(mc68kcpu); /* $18: wb3a */
- m68ki_fake_pull_32(mc68kcpu); /* $1c: wb3d */
- m68ki_fake_pull_32(mc68kcpu); /* $20: wb2a */
- m68ki_fake_pull_32(mc68kcpu); /* $24: wb2d */
- m68ki_fake_pull_32(mc68kcpu); /* $28: wb1a */
- m68ki_fake_pull_32(mc68kcpu); /* $2c: wb1d/pd0 */
- m68ki_fake_pull_32(mc68kcpu); /* $30: pd1 */
- m68ki_fake_pull_32(mc68kcpu); /* $34: pd2 */
- m68ki_fake_pull_32(mc68kcpu); /* $38: pd3 */
- m68ki_jump((mc68kcpu), new_pc);
- m68ki_set_sr((mc68kcpu), new_sr);
- (mc68kcpu)->instr_mode = INSTRUCTION_YES;
- (mc68kcpu)->run_mode = RUN_MODE_NORMAL;
+ new_sr = m68ki_pull_16();
+ new_pc = m68ki_pull_32();
+ m68ki_fake_pull_16(); /* $06: format word */
+ m68ki_fake_pull_32(); /* $08: effective address */
+ m68ki_fake_pull_16(); /* $0c: special status word */
+ m68ki_fake_pull_16(); /* $0e: wb3s */
+ m68ki_fake_pull_16(); /* $10: wb2s */
+ m68ki_fake_pull_16(); /* $12: wb1s */
+ m68ki_fake_pull_32(); /* $14: data fault address */
+ m68ki_fake_pull_32(); /* $18: wb3a */
+ m68ki_fake_pull_32(); /* $1c: wb3d */
+ m68ki_fake_pull_32(); /* $20: wb2a */
+ m68ki_fake_pull_32(); /* $24: wb2d */
+ m68ki_fake_pull_32(); /* $28: wb1a */
+ m68ki_fake_pull_32(); /* $2c: wb1d/pd0 */
+ m68ki_fake_pull_32(); /* $30: pd1 */
+ m68ki_fake_pull_32(); /* $34: pd2 */
+ m68ki_fake_pull_32(); /* $38: pd3 */
+ m68ki_jump(new_pc);
+ m68ki_set_sr(new_sr);
+ m_instr_mode = INSTRUCTION_YES;
+ m_run_mode = RUN_MODE_NORMAL;
return;
case 0x0a: /* Bus Error at instruction boundary */
- new_sr = m68ki_pull_16(mc68kcpu);
- new_pc = m68ki_pull_32(mc68kcpu);
- m68ki_fake_pull_16(mc68kcpu); /* $06: format word */
- m68ki_fake_pull_16(mc68kcpu); /* $08: internal register */
- m68ki_fake_pull_16(mc68kcpu); /* $0a: special status word */
- m68ki_fake_pull_16(mc68kcpu); /* $0c: instruction pipe stage c */
- m68ki_fake_pull_16(mc68kcpu); /* $0e: instruction pipe stage b */
- m68ki_fake_pull_32(mc68kcpu); /* $10: data fault address */
- m68ki_fake_pull_32(mc68kcpu); /* $14: internal registers */
- m68ki_fake_pull_32(mc68kcpu); /* $18: data output buffer */
- m68ki_fake_pull_32(mc68kcpu); /* $1c: internal registers */
-
- m68ki_jump((mc68kcpu), new_pc);
- m68ki_set_sr((mc68kcpu), new_sr);
- (mc68kcpu)->instr_mode = INSTRUCTION_YES;
- (mc68kcpu)->run_mode = RUN_MODE_NORMAL;
+ new_sr = m68ki_pull_16();
+ new_pc = m68ki_pull_32();
+ m68ki_fake_pull_16(); /* $06: format word */
+ m68ki_fake_pull_16(); /* $08: internal register */
+ m68ki_fake_pull_16(); /* $0a: special status word */
+ m68ki_fake_pull_16(); /* $0c: instruction pipe stage c */
+ m68ki_fake_pull_16(); /* $0e: instruction pipe stage b */
+ m68ki_fake_pull_32(); /* $10: data fault address */
+ m68ki_fake_pull_32(); /* $14: internal registers */
+ m68ki_fake_pull_32(); /* $18: data output buffer */
+ m68ki_fake_pull_32(); /* $1c: internal registers */
+
+ m68ki_jump(new_pc);
+ m68ki_set_sr(new_sr);
+ m_instr_mode = INSTRUCTION_YES;
+ m_run_mode = RUN_MODE_NORMAL;
return;
case 0x0b: /* Bus Error - Instruction Execution in Progress */
- new_sr = m68ki_pull_16(mc68kcpu);
- new_pc = m68ki_pull_32(mc68kcpu);
- m68ki_fake_pull_16(mc68kcpu); /* $06: format word */
- m68ki_fake_pull_16(mc68kcpu); /* $08: internal register */
- m68ki_fake_pull_16(mc68kcpu); /* $0a: special status word */
- m68ki_fake_pull_16(mc68kcpu); /* $0c: instruction pipe stage c */
- m68ki_fake_pull_16(mc68kcpu); /* $0e: instruction pipe stage b */
- m68ki_fake_pull_32(mc68kcpu); /* $10: data fault address */
- m68ki_fake_pull_32(mc68kcpu); /* $14: internal registers */
- m68ki_fake_pull_32(mc68kcpu); /* $18: data output buffer */
- m68ki_fake_pull_32(mc68kcpu); /* $1c: internal registers */
- m68ki_fake_pull_32(mc68kcpu); /* $20: */
- m68ki_fake_pull_32(mc68kcpu); /* $24: stage B address */
- m68ki_fake_pull_32(mc68kcpu); /* $28: */
- m68ki_fake_pull_32(mc68kcpu); /* $2c: data input buffer */
- m68ki_fake_pull_32(mc68kcpu); /* $30: */
- m68ki_fake_pull_16(mc68kcpu); /* $34: */
- m68ki_fake_pull_16(mc68kcpu); /* $36: version #, internal information */
- m68ki_fake_pull_32(mc68kcpu); /* $38: */
- m68ki_fake_pull_32(mc68kcpu); /* $3c: */
- m68ki_fake_pull_32(mc68kcpu); /* $40: */
- m68ki_fake_pull_32(mc68kcpu); /* $44: */
- m68ki_fake_pull_32(mc68kcpu); /* $48: */
- m68ki_fake_pull_32(mc68kcpu); /* $4c: */
- m68ki_fake_pull_32(mc68kcpu); /* $50: */
- m68ki_fake_pull_32(mc68kcpu); /* $54: */
- m68ki_fake_pull_32(mc68kcpu); /* $58: */
-
- m68ki_jump((mc68kcpu), new_pc);
- m68ki_set_sr((mc68kcpu), new_sr);
- (mc68kcpu)->instr_mode = INSTRUCTION_YES;
- (mc68kcpu)->run_mode = RUN_MODE_NORMAL;
+ new_sr = m68ki_pull_16();
+ new_pc = m68ki_pull_32();
+ m68ki_fake_pull_16(); /* $06: format word */
+ m68ki_fake_pull_16(); /* $08: internal register */
+ m68ki_fake_pull_16(); /* $0a: special status word */
+ m68ki_fake_pull_16(); /* $0c: instruction pipe stage c */
+ m68ki_fake_pull_16(); /* $0e: instruction pipe stage b */
+ m68ki_fake_pull_32(); /* $10: data fault address */
+ m68ki_fake_pull_32(); /* $14: internal registers */
+ m68ki_fake_pull_32(); /* $18: data output buffer */
+ m68ki_fake_pull_32(); /* $1c: internal registers */
+ m68ki_fake_pull_32(); /* $20: */
+ m68ki_fake_pull_32(); /* $24: stage B address */
+ m68ki_fake_pull_32(); /* $28: */
+ m68ki_fake_pull_32(); /* $2c: data input buffer */
+ m68ki_fake_pull_32(); /* $30: */
+ m68ki_fake_pull_16(); /* $34: */
+ m68ki_fake_pull_16(); /* $36: version #, internal information */
+ m68ki_fake_pull_32(); /* $38: */
+ m68ki_fake_pull_32(); /* $3c: */
+ m68ki_fake_pull_32(); /* $40: */
+ m68ki_fake_pull_32(); /* $44: */
+ m68ki_fake_pull_32(); /* $48: */
+ m68ki_fake_pull_32(); /* $4c: */
+ m68ki_fake_pull_32(); /* $50: */
+ m68ki_fake_pull_32(); /* $54: */
+ m68ki_fake_pull_32(); /* $58: */
+
+ m68ki_jump(new_pc);
+ m68ki_set_sr(new_sr);
+ m_instr_mode = INSTRUCTION_YES;
+ m_run_mode = RUN_MODE_NORMAL;
return;
}
/* Not handling long or short bus fault */
- (mc68kcpu)->instr_mode = INSTRUCTION_YES;
- (mc68kcpu)->run_mode = RUN_MODE_NORMAL;
- m68ki_exception_format_error(mc68kcpu);
+ m_instr_mode = INSTRUCTION_YES;
+ m_run_mode = RUN_MODE_NORMAL;
+ m68ki_exception_format_error();
return;
}
- m68ki_exception_privilege_violation(mc68kcpu);
+ m68ki_exception_privilege_violation();
}
M68KMAKE_OP(rtm, 32, ., .)
{
- if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_020_VARIANT())
{
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (rtm)\n",
- (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ logerror("%s at %08x: called unimplemented instruction %04x (rtm)\n",
+ tag(), m_ppc, m_ir);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(rtr, 32, ., .)
{
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_set_ccr((mc68kcpu), m68ki_pull_16(mc68kcpu));
- m68ki_jump((mc68kcpu), m68ki_pull_32(mc68kcpu));
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_set_ccr(m68ki_pull_16());
+ m68ki_jump(m68ki_pull_32());
}
M68KMAKE_OP(rts, 32, ., .)
{
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_jump((mc68kcpu), m68ki_pull_32(mc68kcpu));
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_jump(m68ki_pull_32());
}
M68KMAKE_OP(sbcd, 8, rr, .)
{
- uint32_t* r_dst = &DX(mc68kcpu);
- uint32_t src = DY(mc68kcpu);
+ uint32_t* r_dst = &DX();
+ uint32_t src = DY();
uint32_t dst = *r_dst;
- uint32_t res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_1(mc68kcpu);
+ uint32_t res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_1();
uint32_t corf = 0;
if(res > 0xf)
corf = 6;
res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
- (mc68kcpu)->v_flag = res; /* Undefined V behavior */
+ m_v_flag = res; /* Undefined V behavior */
if(res > 0xff)
{
res += 0xa0;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SET;
+ m_x_flag = m_c_flag = CFLAG_SET;
}
else if(res < corf)
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SET;
+ m_x_flag = m_c_flag = CFLAG_SET;
else
- (mc68kcpu)->n_flag = (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = 0;
+ m_n_flag = m_x_flag = m_c_flag = 0;
res = MASK_OUT_ABOVE_8(res - corf);
- (mc68kcpu)->v_flag &= ~res; /* Undefined V behavior part II */
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
- (mc68kcpu)->not_z_flag |= res;
+ m_v_flag &= ~res; /* Undefined V behavior part II */
+ m_n_flag = NFLAG_8(res); /* Undefined N behavior */
+ m_not_z_flag |= res;
*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
}
@@ -9214,153 +9209,153 @@ M68KMAKE_OP(sbcd, 8, rr, .)
M68KMAKE_OP(sbcd, 8, mm, ax7)
{
- uint32_t src = OPER_AY_PD_8(mc68kcpu);
- uint32_t ea = EA_A7_PD_8(mc68kcpu);
- uint32_t dst = m68ki_read_8((mc68kcpu), ea);
- uint32_t res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_1(mc68kcpu);
+ uint32_t src = OPER_AY_PD_8();
+ uint32_t ea = EA_A7_PD_8();
+ uint32_t dst = m68ki_read_8(ea);
+ uint32_t res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_1();
uint32_t corf = 0;
if(res > 0xf)
corf = 6;
res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
- (mc68kcpu)->v_flag = res; /* Undefined V behavior */
+ m_v_flag = res; /* Undefined V behavior */
if(res > 0xff)
{
res += 0xa0;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SET;
+ m_x_flag = m_c_flag = CFLAG_SET;
}
else if(res < corf)
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SET;
+ m_x_flag = m_c_flag = CFLAG_SET;
else
- (mc68kcpu)->n_flag = (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = 0;
+ m_n_flag = m_x_flag = m_c_flag = 0;
res = MASK_OUT_ABOVE_8(res - corf);
- (mc68kcpu)->v_flag &= ~res; /* Undefined V behavior part II */
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
- (mc68kcpu)->not_z_flag |= res;
+ m_v_flag &= ~res; /* Undefined V behavior part II */
+ m_n_flag = NFLAG_8(res); /* Undefined N behavior */
+ m_not_z_flag |= res;
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
}
M68KMAKE_OP(sbcd, 8, mm, ay7)
{
- uint32_t src = OPER_A7_PD_8(mc68kcpu);
- uint32_t ea = EA_AX_PD_8(mc68kcpu);
- uint32_t dst = m68ki_read_8((mc68kcpu), ea);
- uint32_t res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_1(mc68kcpu);
+ uint32_t src = OPER_A7_PD_8();
+ uint32_t ea = EA_AX_PD_8();
+ uint32_t dst = m68ki_read_8(ea);
+ uint32_t res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_1();
uint32_t corf = 0;
if(res > 0xf)
corf = 6;
res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
- (mc68kcpu)->v_flag = res; /* Undefined V behavior */
+ m_v_flag = res; /* Undefined V behavior */
if(res > 0xff)
{
res += 0xa0;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SET;
+ m_x_flag = m_c_flag = CFLAG_SET;
}
else if(res < corf)
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SET;
+ m_x_flag = m_c_flag = CFLAG_SET;
else
- (mc68kcpu)->n_flag = (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = 0;
+ m_n_flag = m_x_flag = m_c_flag = 0;
res = MASK_OUT_ABOVE_8(res - corf);
- (mc68kcpu)->v_flag &= ~res; /* Undefined V behavior part II */
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
- (mc68kcpu)->not_z_flag |= res;
+ m_v_flag &= ~res; /* Undefined V behavior part II */
+ m_n_flag = NFLAG_8(res); /* Undefined N behavior */
+ m_not_z_flag |= res;
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
}
M68KMAKE_OP(sbcd, 8, mm, axy7)
{
- uint32_t src = OPER_A7_PD_8(mc68kcpu);
- uint32_t ea = EA_A7_PD_8(mc68kcpu);
- uint32_t dst = m68ki_read_8((mc68kcpu), ea);
- uint32_t res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_1(mc68kcpu);
+ uint32_t src = OPER_A7_PD_8();
+ uint32_t ea = EA_A7_PD_8();
+ uint32_t dst = m68ki_read_8(ea);
+ uint32_t res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_1();
uint32_t corf = 0;
if(res > 0xf)
corf = 6;
res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
- (mc68kcpu)->v_flag = res; /* Undefined V behavior */
+ m_v_flag = res; /* Undefined V behavior */
if(res > 0xff)
{
res += 0xa0;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SET;
+ m_x_flag = m_c_flag = CFLAG_SET;
}
else if(res < corf)
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SET;
+ m_x_flag = m_c_flag = CFLAG_SET;
else
- (mc68kcpu)->n_flag = (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = 0;
+ m_n_flag = m_x_flag = m_c_flag = 0;
res = MASK_OUT_ABOVE_8(res - corf);
- (mc68kcpu)->v_flag &= ~res; /* Undefined V behavior part II */
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
- (mc68kcpu)->not_z_flag |= res;
+ m_v_flag &= ~res; /* Undefined V behavior part II */
+ m_n_flag = NFLAG_8(res); /* Undefined N behavior */
+ m_not_z_flag |= res;
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
}
M68KMAKE_OP(sbcd, 8, mm, .)
{
- uint32_t src = OPER_AY_PD_8(mc68kcpu);
- uint32_t ea = EA_AX_PD_8(mc68kcpu);
- uint32_t dst = m68ki_read_8((mc68kcpu), ea);
- uint32_t res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_1(mc68kcpu);
+ uint32_t src = OPER_AY_PD_8();
+ uint32_t ea = EA_AX_PD_8();
+ uint32_t dst = m68ki_read_8(ea);
+ uint32_t res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_1();
uint32_t corf = 0;
if(res > 0xf)
corf = 6;
res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
- (mc68kcpu)->v_flag = res; /* Undefined V behavior */
+ m_v_flag = res; /* Undefined V behavior */
if(res > 0xff)
{
res += 0xa0;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SET;
+ m_x_flag = m_c_flag = CFLAG_SET;
}
else if(res < corf)
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SET;
+ m_x_flag = m_c_flag = CFLAG_SET;
else
- (mc68kcpu)->n_flag = (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = 0;
+ m_n_flag = m_x_flag = m_c_flag = 0;
res = MASK_OUT_ABOVE_8(res - corf);
- (mc68kcpu)->v_flag &= ~res; /* Undefined V behavior part II */
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
- (mc68kcpu)->not_z_flag |= res;
+ m_v_flag &= ~res; /* Undefined V behavior part II */
+ m_n_flag = NFLAG_8(res); /* Undefined N behavior */
+ m_not_z_flag |= res;
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
}
M68KMAKE_OP(st, 8, ., d)
{
- DY(mc68kcpu) |= 0xff;
+ DY() |= 0xff;
}
M68KMAKE_OP(st, 8, ., .)
{
- m68ki_write_8((mc68kcpu), M68KMAKE_GET_EA_AY_8, 0xff);
+ m68ki_write_8(M68KMAKE_GET_EA_AY_8, 0xff);
}
M68KMAKE_OP(sf, 8, ., d)
{
- DY(mc68kcpu) &= 0xffffff00;
+ DY() &= 0xffffff00;
}
M68KMAKE_OP(sf, 8, ., .)
{
- m68ki_write_8((mc68kcpu), M68KMAKE_GET_EA_AY_8, 0);
+ m68ki_write_8(M68KMAKE_GET_EA_AY_8, 0);
}
@@ -9368,230 +9363,230 @@ M68KMAKE_OP(scc, 8, ., d)
{
if(M68KMAKE_CC)
{
- DY(mc68kcpu) |= 0xff;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
+ DY() |= 0xff;
+ m_remaining_cycles -= m_cyc_scc_r_true;
return;
}
- DY(mc68kcpu) &= 0xffffff00;
+ DY() &= 0xffffff00;
}
M68KMAKE_OP(scc, 8, ., .)
{
- m68ki_write_8((mc68kcpu), M68KMAKE_GET_EA_AY_8, M68KMAKE_CC ? 0xff : 0);
+ m68ki_write_8(M68KMAKE_GET_EA_AY_8, M68KMAKE_CC ? 0xff : 0);
}
M68KMAKE_OP(stop, 0, ., .)
{
- if((mc68kcpu)->s_flag)
+ if(m_s_flag)
{
- uint32_t new_sr = OPER_I_16(mc68kcpu);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- (mc68kcpu)->stopped |= STOP_LEVEL_STOP;
- m68ki_set_sr((mc68kcpu), new_sr);
- (mc68kcpu)->remaining_cycles = 0;
+ uint32_t new_sr = OPER_I_16();
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m_stopped |= STOP_LEVEL_STOP;
+ m68ki_set_sr(new_sr);
+ m_remaining_cycles = 0;
return;
}
- m68ki_exception_privilege_violation(mc68kcpu);
+ m68ki_exception_privilege_violation();
}
M68KMAKE_OP(sub, 8, er, d)
{
- uint32_t* r_dst = &DX(mc68kcpu);
- uint32_t src = MASK_OUT_ABOVE_8(DY(mc68kcpu));
+ uint32_t* r_dst = &DX();
+ uint32_t src = MASK_OUT_ABOVE_8(DY());
uint32_t dst = MASK_OUT_ABOVE_8(*r_dst);
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_x_flag = m_c_flag = CFLAG_8(res);
+ m_v_flag = VFLAG_SUB_8(src, dst, res);
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
+ *r_dst = MASK_OUT_BELOW_8(*r_dst) | m_not_z_flag;
}
M68KMAKE_OP(sub, 8, er, .)
{
- uint32_t* r_dst = &DX(mc68kcpu);
+ uint32_t* r_dst = &DX();
uint32_t src = M68KMAKE_GET_OPER_AY_8;
uint32_t dst = MASK_OUT_ABOVE_8(*r_dst);
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_n_flag = NFLAG_8(res);
+ m_x_flag = m_c_flag = CFLAG_8(res);
+ m_v_flag = VFLAG_SUB_8(src, dst, res);
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
+ *r_dst = MASK_OUT_BELOW_8(*r_dst) | m_not_z_flag;
}
M68KMAKE_OP(sub, 16, er, d)
{
- uint32_t* r_dst = &DX(mc68kcpu);
- uint32_t src = MASK_OUT_ABOVE_16(DY(mc68kcpu));
+ uint32_t* r_dst = &DX();
+ uint32_t src = MASK_OUT_ABOVE_16(DY());
uint32_t dst = MASK_OUT_ABOVE_16(*r_dst);
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_n_flag = NFLAG_16(res);
+ m_x_flag = m_c_flag = CFLAG_16(res);
+ m_v_flag = VFLAG_SUB_16(src, dst, res);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
+ *r_dst = MASK_OUT_BELOW_16(*r_dst) | m_not_z_flag;
}
M68KMAKE_OP(sub, 16, er, a)
{
- uint32_t* r_dst = &DX(mc68kcpu);
- uint32_t src = MASK_OUT_ABOVE_16(AY(mc68kcpu));
+ uint32_t* r_dst = &DX();
+ uint32_t src = MASK_OUT_ABOVE_16(AY());
uint32_t dst = MASK_OUT_ABOVE_16(*r_dst);
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_n_flag = NFLAG_16(res);
+ m_x_flag = m_c_flag = CFLAG_16(res);
+ m_v_flag = VFLAG_SUB_16(src, dst, res);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
+ *r_dst = MASK_OUT_BELOW_16(*r_dst) | m_not_z_flag;
}
M68KMAKE_OP(sub, 16, er, .)
{
- uint32_t* r_dst = &DX(mc68kcpu);
+ uint32_t* r_dst = &DX();
uint32_t src = M68KMAKE_GET_OPER_AY_16;
uint32_t dst = MASK_OUT_ABOVE_16(*r_dst);
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_n_flag = NFLAG_16(res);
+ m_x_flag = m_c_flag = CFLAG_16(res);
+ m_v_flag = VFLAG_SUB_16(src, dst, res);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
+ *r_dst = MASK_OUT_BELOW_16(*r_dst) | m_not_z_flag;
}
M68KMAKE_OP(sub, 32, er, d)
{
- uint32_t* r_dst = &DX(mc68kcpu);
- uint32_t src = DY(mc68kcpu);
+ uint32_t* r_dst = &DX();
+ uint32_t src = DY();
uint32_t dst = *r_dst;
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_n_flag = NFLAG_32(res);
+ m_x_flag = m_c_flag = CFLAG_SUB_32(src, dst, res);
+ m_v_flag = VFLAG_SUB_32(src, dst, res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
- *r_dst = (mc68kcpu)->not_z_flag;
+ *r_dst = m_not_z_flag;
}
M68KMAKE_OP(sub, 32, er, a)
{
- uint32_t* r_dst = &DX(mc68kcpu);
- uint32_t src = AY(mc68kcpu);
+ uint32_t* r_dst = &DX();
+ uint32_t src = AY();
uint32_t dst = *r_dst;
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_n_flag = NFLAG_32(res);
+ m_x_flag = m_c_flag = CFLAG_SUB_32(src, dst, res);
+ m_v_flag = VFLAG_SUB_32(src, dst, res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
- *r_dst = (mc68kcpu)->not_z_flag;
+ *r_dst = m_not_z_flag;
}
M68KMAKE_OP(sub, 32, er, .)
{
- uint32_t* r_dst = &DX(mc68kcpu);
+ uint32_t* r_dst = &DX();
uint32_t src = M68KMAKE_GET_OPER_AY_32;
uint32_t dst = *r_dst;
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_n_flag = NFLAG_32(res);
+ m_x_flag = m_c_flag = CFLAG_SUB_32(src, dst, res);
+ m_v_flag = VFLAG_SUB_32(src, dst, res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
- *r_dst = (mc68kcpu)->not_z_flag;
+ *r_dst = m_not_z_flag;
}
M68KMAKE_OP(sub, 8, re, .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- uint32_t src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- uint32_t dst = m68ki_read_8((mc68kcpu), ea);
+ uint32_t src = MASK_OUT_ABOVE_8(DX());
+ uint32_t dst = m68ki_read_8(ea);
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_x_flag = m_c_flag = CFLAG_8(res);
+ m_v_flag = VFLAG_SUB_8(src, dst, res);
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
+ m68ki_write_8(ea, m_not_z_flag);
}
M68KMAKE_OP(sub, 16, re, .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- uint32_t src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- uint32_t dst = m68ki_read_16((mc68kcpu), ea);
+ uint32_t src = MASK_OUT_ABOVE_16(DX());
+ uint32_t dst = m68ki_read_16(ea);
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_x_flag = m_c_flag = CFLAG_16(res);
+ m_v_flag = VFLAG_SUB_16(src, dst, res);
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
+ m68ki_write_16(ea, m_not_z_flag);
}
M68KMAKE_OP(sub, 32, re, .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_32;
- uint32_t src = DX(mc68kcpu);
- uint32_t dst = m68ki_read_32((mc68kcpu), ea);
+ uint32_t src = DX();
+ uint32_t dst = m68ki_read_32(ea);
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_x_flag = m_c_flag = CFLAG_SUB_32(src, dst, res);
+ m_v_flag = VFLAG_SUB_32(src, dst, res);
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
+ m68ki_write_32(ea, m_not_z_flag);
}
M68KMAKE_OP(suba, 16, ., d)
{
- uint32_t* r_dst = &AX(mc68kcpu);
+ uint32_t* r_dst = &AX();
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(DY(mc68kcpu)));
+ *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(DY()));
}
M68KMAKE_OP(suba, 16, ., a)
{
- uint32_t* r_dst = &AX(mc68kcpu);
+ uint32_t* r_dst = &AX();
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(AY(mc68kcpu)));
+ *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(AY()));
}
M68KMAKE_OP(suba, 16, ., .)
{
- uint32_t* r_dst = &AX(mc68kcpu);
+ uint32_t* r_dst = &AX();
uint32_t src = MAKE_INT_16(M68KMAKE_GET_OPER_AY_16);
*r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
@@ -9600,23 +9595,23 @@ M68KMAKE_OP(suba, 16, ., .)
M68KMAKE_OP(suba, 32, ., d)
{
- uint32_t* r_dst = &AX(mc68kcpu);
+ uint32_t* r_dst = &AX();
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - DY(mc68kcpu));
+ *r_dst = MASK_OUT_ABOVE_32(*r_dst - DY());
}
M68KMAKE_OP(suba, 32, ., a)
{
- uint32_t* r_dst = &AX(mc68kcpu);
+ uint32_t* r_dst = &AX();
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - AY(mc68kcpu));
+ *r_dst = MASK_OUT_ABOVE_32(*r_dst - AY());
}
M68KMAKE_OP(suba, 32, ., .)
{
- uint32_t* r_dst = &AX(mc68kcpu);
+ uint32_t* r_dst = &AX();
uint32_t src = M68KMAKE_GET_OPER_AY_32;
*r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
@@ -9625,225 +9620,225 @@ M68KMAKE_OP(suba, 32, ., .)
M68KMAKE_OP(subi, 8, ., d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t src = OPER_I_8(mc68kcpu);
+ uint32_t* r_dst = &DY();
+ uint32_t src = OPER_I_8();
uint32_t dst = MASK_OUT_ABOVE_8(*r_dst);
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_x_flag = m_c_flag = CFLAG_8(res);
+ m_v_flag = VFLAG_SUB_8(src, dst, res);
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
+ *r_dst = MASK_OUT_BELOW_8(*r_dst) | m_not_z_flag;
}
M68KMAKE_OP(subi, 8, ., .)
{
- uint32_t src = OPER_I_8(mc68kcpu);
+ uint32_t src = OPER_I_8();
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- uint32_t dst = m68ki_read_8((mc68kcpu), ea);
+ uint32_t dst = m68ki_read_8(ea);
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_x_flag = m_c_flag = CFLAG_8(res);
+ m_v_flag = VFLAG_SUB_8(src, dst, res);
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
+ m68ki_write_8(ea, m_not_z_flag);
}
M68KMAKE_OP(subi, 16, ., d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t src = OPER_I_16(mc68kcpu);
+ uint32_t* r_dst = &DY();
+ uint32_t src = OPER_I_16();
uint32_t dst = MASK_OUT_ABOVE_16(*r_dst);
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_x_flag = m_c_flag = CFLAG_16(res);
+ m_v_flag = VFLAG_SUB_16(src, dst, res);
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
+ *r_dst = MASK_OUT_BELOW_16(*r_dst) | m_not_z_flag;
}
M68KMAKE_OP(subi, 16, ., .)
{
- uint32_t src = OPER_I_16(mc68kcpu);
+ uint32_t src = OPER_I_16();
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- uint32_t dst = m68ki_read_16((mc68kcpu), ea);
+ uint32_t dst = m68ki_read_16(ea);
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_x_flag = m_c_flag = CFLAG_16(res);
+ m_v_flag = VFLAG_SUB_16(src, dst, res);
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
+ m68ki_write_16(ea, m_not_z_flag);
}
M68KMAKE_OP(subi, 32, ., d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t src = OPER_I_32(mc68kcpu);
+ uint32_t* r_dst = &DY();
+ uint32_t src = OPER_I_32();
uint32_t dst = *r_dst;
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_x_flag = m_c_flag = CFLAG_SUB_32(src, dst, res);
+ m_v_flag = VFLAG_SUB_32(src, dst, res);
- *r_dst = (mc68kcpu)->not_z_flag;
+ *r_dst = m_not_z_flag;
}
M68KMAKE_OP(subi, 32, ., .)
{
- uint32_t src = OPER_I_32(mc68kcpu);
+ uint32_t src = OPER_I_32();
uint32_t ea = M68KMAKE_GET_EA_AY_32;
- uint32_t dst = m68ki_read_32((mc68kcpu), ea);
+ uint32_t dst = m68ki_read_32(ea);
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_x_flag = m_c_flag = CFLAG_SUB_32(src, dst, res);
+ m_v_flag = VFLAG_SUB_32(src, dst, res);
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
+ m68ki_write_32(ea, m_not_z_flag);
}
M68KMAKE_OP(subq, 8, ., d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t src = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t dst = MASK_OUT_ABOVE_8(*r_dst);
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_x_flag = m_c_flag = CFLAG_8(res);
+ m_v_flag = VFLAG_SUB_8(src, dst, res);
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
+ *r_dst = MASK_OUT_BELOW_8(*r_dst) | m_not_z_flag;
}
M68KMAKE_OP(subq, 8, ., .)
{
- uint32_t src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t src = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- uint32_t dst = m68ki_read_8((mc68kcpu), ea);
+ uint32_t dst = m68ki_read_8(ea);
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = MASK_OUT_ABOVE_8(res);
+ m_x_flag = m_c_flag = CFLAG_8(res);
+ m_v_flag = VFLAG_SUB_8(src, dst, res);
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
+ m68ki_write_8(ea, m_not_z_flag);
}
M68KMAKE_OP(subq, 16, ., d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t src = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t dst = MASK_OUT_ABOVE_16(*r_dst);
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_x_flag = m_c_flag = CFLAG_16(res);
+ m_v_flag = VFLAG_SUB_16(src, dst, res);
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
+ *r_dst = MASK_OUT_BELOW_16(*r_dst) | m_not_z_flag;
}
M68KMAKE_OP(subq, 16, ., a)
{
- uint32_t* r_dst = &AY(mc68kcpu);
+ uint32_t* r_dst = &AY();
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - (((((mc68kcpu)->ir >> 9) - 1) & 7) + 1));
+ *r_dst = MASK_OUT_ABOVE_32(*r_dst - ((((m_ir >> 9) - 1) & 7) + 1));
}
M68KMAKE_OP(subq, 16, ., .)
{
- uint32_t src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t src = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t ea = M68KMAKE_GET_EA_AY_16;
- uint32_t dst = m68ki_read_16((mc68kcpu), ea);
+ uint32_t dst = m68ki_read_16(ea);
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = MASK_OUT_ABOVE_16(res);
+ m_x_flag = m_c_flag = CFLAG_16(res);
+ m_v_flag = VFLAG_SUB_16(src, dst, res);
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
+ m68ki_write_16(ea, m_not_z_flag);
}
M68KMAKE_OP(subq, 32, ., d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
- uint32_t src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t* r_dst = &DY();
+ uint32_t src = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t dst = *r_dst;
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_x_flag = m_c_flag = CFLAG_SUB_32(src, dst, res);
+ m_v_flag = VFLAG_SUB_32(src, dst, res);
- *r_dst = (mc68kcpu)->not_z_flag;
+ *r_dst = m_not_z_flag;
}
M68KMAKE_OP(subq, 32, ., a)
{
- uint32_t* r_dst = &AY(mc68kcpu);
+ uint32_t* r_dst = &AY();
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - (((((mc68kcpu)->ir >> 9) - 1) & 7) + 1));
+ *r_dst = MASK_OUT_ABOVE_32(*r_dst - ((((m_ir >> 9) - 1) & 7) + 1));
}
M68KMAKE_OP(subq, 32, ., .)
{
- uint32_t src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
+ uint32_t src = (((m_ir >> 9) - 1) & 7) + 1;
uint32_t ea = M68KMAKE_GET_EA_AY_32;
- uint32_t dst = m68ki_read_32((mc68kcpu), ea);
+ uint32_t dst = m68ki_read_32(ea);
uint32_t res = dst - src;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = MASK_OUT_ABOVE_32(res);
+ m_x_flag = m_c_flag = CFLAG_SUB_32(src, dst, res);
+ m_v_flag = VFLAG_SUB_32(src, dst, res);
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
+ m68ki_write_32(ea, m_not_z_flag);
}
M68KMAKE_OP(subx, 8, rr, .)
{
- uint32_t* r_dst = &DX(mc68kcpu);
- uint32_t src = MASK_OUT_ABOVE_8(DY(mc68kcpu));
+ uint32_t* r_dst = &DX();
+ uint32_t src = MASK_OUT_ABOVE_8(DY());
uint32_t dst = MASK_OUT_ABOVE_8(*r_dst);
- uint32_t res = dst - src - XFLAG_1(mc68kcpu);
+ uint32_t res = dst - src - XFLAG_1();
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
+ m_n_flag = NFLAG_8(res);
+ m_x_flag = m_c_flag = CFLAG_8(res);
+ m_v_flag = VFLAG_SUB_8(src, dst, res);
res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
}
@@ -9851,17 +9846,17 @@ M68KMAKE_OP(subx, 8, rr, .)
M68KMAKE_OP(subx, 16, rr, .)
{
- uint32_t* r_dst = &DX(mc68kcpu);
- uint32_t src = MASK_OUT_ABOVE_16(DY(mc68kcpu));
+ uint32_t* r_dst = &DX();
+ uint32_t src = MASK_OUT_ABOVE_16(DY());
uint32_t dst = MASK_OUT_ABOVE_16(*r_dst);
- uint32_t res = dst - src - XFLAG_1(mc68kcpu);
+ uint32_t res = dst - src - XFLAG_1();
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
+ m_n_flag = NFLAG_16(res);
+ m_x_flag = m_c_flag = CFLAG_16(res);
+ m_v_flag = VFLAG_SUB_16(src, dst, res);
res = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
}
@@ -9869,17 +9864,17 @@ M68KMAKE_OP(subx, 16, rr, .)
M68KMAKE_OP(subx, 32, rr, .)
{
- uint32_t* r_dst = &DX(mc68kcpu);
- uint32_t src = DY(mc68kcpu);
+ uint32_t* r_dst = &DX();
+ uint32_t src = DY();
uint32_t dst = *r_dst;
- uint32_t res = dst - src - XFLAG_1(mc68kcpu);
+ uint32_t res = dst - src - XFLAG_1();
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
+ m_n_flag = NFLAG_32(res);
+ m_x_flag = m_c_flag = CFLAG_SUB_32(src, dst, res);
+ m_v_flag = VFLAG_SUB_32(src, dst, res);
res = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
*r_dst = res;
}
@@ -9887,134 +9882,134 @@ M68KMAKE_OP(subx, 32, rr, .)
M68KMAKE_OP(subx, 8, mm, ax7)
{
- uint32_t src = OPER_AY_PD_8(mc68kcpu);
- uint32_t ea = EA_A7_PD_8(mc68kcpu);
- uint32_t dst = m68ki_read_8((mc68kcpu), ea);
- uint32_t res = dst - src - XFLAG_1(mc68kcpu);
+ uint32_t src = OPER_AY_PD_8();
+ uint32_t ea = EA_A7_PD_8();
+ uint32_t dst = m68ki_read_8(ea);
+ uint32_t res = dst - src - XFLAG_1();
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
+ m_n_flag = NFLAG_8(res);
+ m_x_flag = m_c_flag = CFLAG_8(res);
+ m_v_flag = VFLAG_SUB_8(src, dst, res);
res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
}
M68KMAKE_OP(subx, 8, mm, ay7)
{
- uint32_t src = OPER_A7_PD_8(mc68kcpu);
- uint32_t ea = EA_AX_PD_8(mc68kcpu);
- uint32_t dst = m68ki_read_8((mc68kcpu), ea);
- uint32_t res = dst - src - XFLAG_1(mc68kcpu);
+ uint32_t src = OPER_A7_PD_8();
+ uint32_t ea = EA_AX_PD_8();
+ uint32_t dst = m68ki_read_8(ea);
+ uint32_t res = dst - src - XFLAG_1();
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
+ m_n_flag = NFLAG_8(res);
+ m_x_flag = m_c_flag = CFLAG_8(res);
+ m_v_flag = VFLAG_SUB_8(src, dst, res);
res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
}
M68KMAKE_OP(subx, 8, mm, axy7)
{
- uint32_t src = OPER_A7_PD_8(mc68kcpu);
- uint32_t ea = EA_A7_PD_8(mc68kcpu);
- uint32_t dst = m68ki_read_8((mc68kcpu), ea);
- uint32_t res = dst - src - XFLAG_1(mc68kcpu);
+ uint32_t src = OPER_A7_PD_8();
+ uint32_t ea = EA_A7_PD_8();
+ uint32_t dst = m68ki_read_8(ea);
+ uint32_t res = dst - src - XFLAG_1();
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
+ m_n_flag = NFLAG_8(res);
+ m_x_flag = m_c_flag = CFLAG_8(res);
+ m_v_flag = VFLAG_SUB_8(src, dst, res);
res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
}
M68KMAKE_OP(subx, 8, mm, .)
{
- uint32_t src = OPER_AY_PD_8(mc68kcpu);
- uint32_t ea = EA_AX_PD_8(mc68kcpu);
- uint32_t dst = m68ki_read_8((mc68kcpu), ea);
- uint32_t res = dst - src - XFLAG_1(mc68kcpu);
+ uint32_t src = OPER_AY_PD_8();
+ uint32_t ea = EA_AX_PD_8();
+ uint32_t dst = m68ki_read_8(ea);
+ uint32_t res = dst - src - XFLAG_1();
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
+ m_n_flag = NFLAG_8(res);
+ m_x_flag = m_c_flag = CFLAG_8(res);
+ m_v_flag = VFLAG_SUB_8(src, dst, res);
res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
- m68ki_write_8((mc68kcpu), ea, res);
+ m68ki_write_8(ea, res);
}
M68KMAKE_OP(subx, 16, mm, .)
{
- uint32_t src = OPER_AY_PD_16(mc68kcpu);
- uint32_t ea = EA_AX_PD_16(mc68kcpu);
- uint32_t dst = m68ki_read_16((mc68kcpu), ea);
- uint32_t res = dst - src - XFLAG_1(mc68kcpu);
+ uint32_t src = OPER_AY_PD_16();
+ uint32_t ea = EA_AX_PD_16();
+ uint32_t dst = m68ki_read_16(ea);
+ uint32_t res = dst - src - XFLAG_1();
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
+ m_n_flag = NFLAG_16(res);
+ m_x_flag = m_c_flag = CFLAG_16(res);
+ m_v_flag = VFLAG_SUB_16(src, dst, res);
res = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
- m68ki_write_16((mc68kcpu), ea, res);
+ m68ki_write_16(ea, res);
}
M68KMAKE_OP(subx, 32, mm, .)
{
- uint32_t src = OPER_AY_PD_32(mc68kcpu);
- uint32_t ea = EA_AX_PD_32(mc68kcpu);
- uint32_t dst = m68ki_read_32((mc68kcpu), ea);
- uint32_t res = dst - src - XFLAG_1(mc68kcpu);
+ uint32_t src = OPER_AY_PD_32();
+ uint32_t ea = EA_AX_PD_32();
+ uint32_t dst = m68ki_read_32(ea);
+ uint32_t res = dst - src - XFLAG_1();
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, dst, res);
- (mc68kcpu)->v_flag = VFLAG_SUB_32(src, dst, res);
+ m_n_flag = NFLAG_32(res);
+ m_x_flag = m_c_flag = CFLAG_SUB_32(src, dst, res);
+ m_v_flag = VFLAG_SUB_32(src, dst, res);
res = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->not_z_flag |= res;
+ m_not_z_flag |= res;
- m68ki_write_32((mc68kcpu), ea, res);
+ m68ki_write_32(ea, res);
}
M68KMAKE_OP(swap, 32, ., .)
{
- uint32_t* r_dst = &DY(mc68kcpu);
+ uint32_t* r_dst = &DY();
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(*r_dst<<16);
- *r_dst = (*r_dst>>16) | (mc68kcpu)->not_z_flag;
+ m_not_z_flag = MASK_OUT_ABOVE_32(*r_dst<<16);
+ *r_dst = (*r_dst>>16) | m_not_z_flag;
- (mc68kcpu)->not_z_flag = *r_dst;
- (mc68kcpu)->n_flag = NFLAG_32(*r_dst);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
+ m_not_z_flag = *r_dst;
+ m_n_flag = NFLAG_32(*r_dst);
+ m_c_flag = CFLAG_CLEAR;
+ m_v_flag = VFLAG_CLEAR;
}
M68KMAKE_OP(tas, 8, ., d)
{
- uint32_t* r_dst = &DY(mc68kcpu);
+ uint32_t* r_dst = &DY();
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(*r_dst);
- (mc68kcpu)->n_flag = NFLAG_8(*r_dst);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_not_z_flag = MASK_OUT_ABOVE_8(*r_dst);
+ m_n_flag = NFLAG_8(*r_dst);
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
*r_dst |= 0x80;
}
@@ -10022,159 +10017,159 @@ M68KMAKE_OP(tas, 8, ., d)
M68KMAKE_OP(tas, 8, ., .)
{
uint32_t ea = M68KMAKE_GET_EA_AY_8;
- uint32_t dst = m68ki_read_8((mc68kcpu), ea);
+ uint32_t dst = m68ki_read_8(ea);
- (mc68kcpu)->not_z_flag = dst;
- (mc68kcpu)->n_flag = NFLAG_8(dst);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_not_z_flag = dst;
+ m_n_flag = NFLAG_8(dst);
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
/* On the 68000 and 68010, the TAS instruction uses a unique bus cycle that may have
side effects (e.g. delaying DMA) or may fail to write back at all depending on the
bus implementation.
In particular, the Genesis/Megadrive games Gargoyles and Ex-Mutants need the TAS
to fail to write back in order to function properly. */
- if (CPU_TYPE_IS_010_LESS((mc68kcpu)->cpu_type) && !(mc68kcpu)->tas_write_callback.isnull())
- ((mc68kcpu)->tas_write_callback)(*(mc68kcpu)->program, ea, dst | 0x80, 0xff);
+ if (CPU_TYPE_IS_010_LESS() && !m_tas_write_callback.isnull())
+ (m_tas_write_callback)(*m_program, ea, dst | 0x80, 0xff);
else
- m68ki_write_8((mc68kcpu), ea, dst | 0x80);
+ m68ki_write_8(ea, dst | 0x80);
}
M68KMAKE_OP(trap, 0, ., .)
{
/* Trap#n stacks exception frame type 0 */
- m68ki_exception_trapN((mc68kcpu), EXCEPTION_TRAP_BASE + ((mc68kcpu)->ir & 0xf)); /* HJB 990403 */
+ m68ki_exception_trapN(EXCEPTION_TRAP_BASE + (m_ir & 0xf)); /* HJB 990403 */
}
M68KMAKE_OP(trapt, 0, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
+ m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(trapt, 16, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
+ m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(trapt, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
+ m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(trapf, 0, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(trapf, 16, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- REG_PC(mc68kcpu) += 2;
+ m_pc += 2;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(trapf, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- REG_PC(mc68kcpu) += 4;
+ m_pc += 4;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(trapcc, 0, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
if(M68KMAKE_CC)
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
+ m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(trapcc, 16, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
if(M68KMAKE_CC)
{
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
+ m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
return;
}
- REG_PC(mc68kcpu) += 2;
+ m_pc += 2;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(trapcc, 32, ., .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
if(M68KMAKE_CC)
{
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
+ m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
return;
}
- REG_PC(mc68kcpu) += 4;
+ m_pc += 4;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(trapv, 0, ., .)
{
- if(COND_VC(mc68kcpu))
+ if(COND_VC())
{
return;
}
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
+ m68ki_exception_trap(EXCEPTION_TRAPV); /* HJB 990403 */
}
M68KMAKE_OP(tst, 8, ., d)
{
- uint32_t res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
+ uint32_t res = MASK_OUT_ABOVE_8(DY());
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
@@ -10182,85 +10177,85 @@ M68KMAKE_OP(tst, 8, ., .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_8;
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(tst, 8, ., pcdi)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t res = OPER_PCDI_8(mc68kcpu);
+ uint32_t res = OPER_PCDI_8();
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(tst, 8, ., pcix)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t res = OPER_PCIX_8(mc68kcpu);
+ uint32_t res = OPER_PCIX_8();
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(tst, 8, ., i)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t res = OPER_I_8(mc68kcpu);
+ uint32_t res = OPER_I_8();
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_8(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(tst, 16, ., d)
{
- uint32_t res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
+ uint32_t res = MASK_OUT_ABOVE_16(DY());
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(tst, 16, ., a)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t res = MAKE_INT_16(AY(mc68kcpu));
+ uint32_t res = MAKE_INT_16(AY());
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
@@ -10268,85 +10263,85 @@ M68KMAKE_OP(tst, 16, ., .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_16;
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(tst, 16, ., pcdi)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t res = OPER_PCDI_16(mc68kcpu);
+ uint32_t res = OPER_PCDI_16();
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(tst, 16, ., pcix)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t res = OPER_PCIX_16(mc68kcpu);
+ uint32_t res = OPER_PCIX_16();
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(tst, 16, ., i)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t res = OPER_I_16(mc68kcpu);
+ uint32_t res = OPER_I_16();
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_16(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(tst, 32, ., d)
{
- uint32_t res = DY(mc68kcpu);
+ uint32_t res = DY();
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(tst, 32, ., a)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t res = AY(mc68kcpu);
+ uint32_t res = AY();
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
@@ -10354,195 +10349,195 @@ M68KMAKE_OP(tst, 32, ., .)
{
uint32_t res = M68KMAKE_GET_OPER_AY_32;
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
}
M68KMAKE_OP(tst, 32, ., pcdi)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t res = OPER_PCDI_32(mc68kcpu);
+ uint32_t res = OPER_PCDI_32();
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(tst, 32, ., pcix)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t res = OPER_PCIX_32(mc68kcpu);
+ uint32_t res = OPER_PCIX_32();
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(tst, 32, ., i)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t res = OPER_I_32(mc68kcpu);
+ uint32_t res = OPER_I_32();
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
+ m_n_flag = NFLAG_32(res);
+ m_not_z_flag = res;
+ m_v_flag = VFLAG_CLEAR;
+ m_c_flag = CFLAG_CLEAR;
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(unlk, 32, ., a7)
{
- REG_A(mc68kcpu)[7] = m68ki_read_32((mc68kcpu), REG_A(mc68kcpu)[7]);
+ REG_A()[7] = m68ki_read_32(REG_A()[7]);
}
M68KMAKE_OP(unlk, 32, ., .)
{
- uint32_t* r_dst = &AY(mc68kcpu);
+ uint32_t* r_dst = &AY();
- REG_A(mc68kcpu)[7] = *r_dst;
- *r_dst = m68ki_pull_32(mc68kcpu);
+ REG_A()[7] = *r_dst;
+ *r_dst = m68ki_pull_32();
}
M68KMAKE_OP(unpk, 16, rr, .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- /* Note: DX(mc68kcpu) and DY(mc68kcpu) are reversed in Motorola's docs */
- uint32_t src = DY(mc68kcpu);
- uint32_t* r_dst = &DX(mc68kcpu);
+ /* Note: DX() and DY() are reversed in Motorola's docs */
+ uint32_t src = DY();
+ uint32_t* r_dst = &DX();
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (((((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu)) & 0xffff);
+ *r_dst = MASK_OUT_BELOW_16(*r_dst) | (((((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16()) & 0xffff);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(unpk, 16, mm, ax7)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
/* Note: AX and AY are reversed in Motorola's docs */
- uint32_t src = OPER_AY_PD_8(mc68kcpu);
+ uint32_t src = OPER_AY_PD_8();
uint32_t ea_dst;
- src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu);
- ea_dst = EA_A7_PD_8(mc68kcpu);
- m68ki_write_8((mc68kcpu), ea_dst, src & 0xff);
- ea_dst = EA_A7_PD_8(mc68kcpu);
- m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
+ src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16();
+ ea_dst = EA_A7_PD_8();
+ m68ki_write_8(ea_dst, src & 0xff);
+ ea_dst = EA_A7_PD_8();
+ m68ki_write_8(ea_dst, (src >> 8) & 0xff);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(unpk, 16, mm, ay7)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
/* Note: AX and AY are reversed in Motorola's docs */
- uint32_t src = OPER_A7_PD_8(mc68kcpu);
+ uint32_t src = OPER_A7_PD_8();
uint32_t ea_dst;
- src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu);
- ea_dst = EA_AX_PD_8(mc68kcpu);
- m68ki_write_8((mc68kcpu), ea_dst, src & 0xff);
- ea_dst = EA_AX_PD_8(mc68kcpu);
- m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
+ src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16();
+ ea_dst = EA_AX_PD_8();
+ m68ki_write_8(ea_dst, src & 0xff);
+ ea_dst = EA_AX_PD_8();
+ m68ki_write_8(ea_dst, (src >> 8) & 0xff);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(unpk, 16, mm, axy7)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
- uint32_t src = OPER_A7_PD_8(mc68kcpu);
+ uint32_t src = OPER_A7_PD_8();
uint32_t ea_dst;
- src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu);
- ea_dst = EA_A7_PD_8(mc68kcpu);
- m68ki_write_8((mc68kcpu), ea_dst, src & 0xff);
- ea_dst = EA_A7_PD_8(mc68kcpu);
- m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
+ src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16();
+ ea_dst = EA_A7_PD_8();
+ m68ki_write_8(ea_dst, src & 0xff);
+ ea_dst = EA_A7_PD_8();
+ m68ki_write_8(ea_dst, (src >> 8) & 0xff);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(unpk, 16, mm, .)
{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
/* Note: AX and AY are reversed in Motorola's docs */
- uint32_t src = OPER_AY_PD_8(mc68kcpu);
+ uint32_t src = OPER_AY_PD_8();
uint32_t ea_dst;
- src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu);
- ea_dst = EA_AX_PD_8(mc68kcpu);
- m68ki_write_8((mc68kcpu), ea_dst, src & 0xff);
- ea_dst = EA_AX_PD_8(mc68kcpu);
- m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
+ src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16();
+ ea_dst = EA_AX_PD_8();
+ m68ki_write_8(ea_dst, src & 0xff);
+ ea_dst = EA_AX_PD_8();
+ m68ki_write_8(ea_dst, (src >> 8) & 0xff);
return;
}
- m68ki_exception_illegal(mc68kcpu);
+ m68ki_exception_illegal();
}
M68KMAKE_OP(cinv, 32, ., .)
{
- if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_040_PLUS())
{
- uint16_t ir = mc68kcpu->ir;
+ uint16_t ir = m_ir;
uint8_t cache = (ir >> 6) & 3;
// uint8_t scope = (ir >> 3) & 3;
-// mc68kcpu->logerror("68040 %s: pc=%08x ir=%04x cache=%d scope=%d register=%d\n", ir & 0x0020 ? "cpush" : "cinv", REG_PPC(mc68kcpu), ir, cache, scope, ir & 7);
+// logerror("68040 %s: pc=%08x ir=%04x cache=%d scope=%d register=%d\n", ir & 0x0020 ? "cpush" : "cinv", m_ppc, ir, cache, scope, ir & 7);
switch (cache)
{
case 2:
case 3:
// we invalidate/push the whole instruction cache
- m68ki_ic_clear(mc68kcpu);
+ m68ki_ic_clear();
}
return;
}
- m68ki_exception_1111(mc68kcpu);
+ m68ki_exception_1111();
}
M68KMAKE_OP(cpush, 32, ., .)
{
- if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
+ if(CPU_TYPE_IS_040_PLUS())
{
- mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (cpush)\n",
- (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
+ logerror("%s at %08x: called unimplemented instruction %04x (cpush)\n",
+ tag(), m_ppc, m_ir);
return;
}
- m68ki_exception_1111(mc68kcpu);
+ m68ki_exception_1111();
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
diff --git a/src/devices/cpu/m68000/m68kcpu.cpp b/src/devices/cpu/m68000/m68kcpu.cpp
index e387f946784..8a0008bdfb5 100644
--- a/src/devices/cpu/m68000/m68kcpu.cpp
+++ b/src/devices/cpu/m68000/m68kcpu.cpp
@@ -26,23 +26,15 @@ static const char copyright_notice[] =
#include "emu.h"
#include "debugger.h"
-#include "m68kcpu.h"
-#include "m68kops.h"
-
-#include "m68kfpu.hxx"
-#include "m68kmmu.h"
+#include "m68000.h"
#include "m68kdasm.h"
-extern void m68040_fpu_op0(m68000_base_device *m68k);
-extern void m68040_fpu_op1(m68000_base_device *m68k);
-extern void m68881_mmu_ops(m68000_base_device *m68k);
-
/* ======================================================================== */
/* ================================= DATA ================================= */
/* ======================================================================== */
/* Used by shift & rotate instructions */
-const uint8_t m68ki_shift_8_table[65] =
+const uint8_t m68000_base_device::m68ki_shift_8_table[65] =
{
0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
@@ -51,7 +43,7 @@ const uint8_t m68ki_shift_8_table[65] =
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff
};
-const uint16_t m68ki_shift_16_table[65] =
+const uint16_t m68000_base_device::m68ki_shift_16_table[65] =
{
0x0000, 0x8000, 0xc000, 0xe000, 0xf000, 0xf800, 0xfc00, 0xfe00, 0xff00,
0xff80, 0xffc0, 0xffe0, 0xfff0, 0xfff8, 0xfffc, 0xfffe, 0xffff, 0xffff,
@@ -62,7 +54,7 @@ const uint16_t m68ki_shift_16_table[65] =
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff
};
-const uint32_t m68ki_shift_32_table[65] =
+const uint32_t m68000_base_device::m68ki_shift_32_table[65] =
{
0x00000000, 0x80000000, 0xc0000000, 0xe0000000, 0xf0000000, 0xf8000000,
0xfc000000, 0xfe000000, 0xff000000, 0xff800000, 0xffc00000, 0xffe00000,
@@ -81,7 +73,7 @@ const uint32_t m68ki_shift_32_table[65] =
/* Number of clock cycles to use for exception processing.
* I used 4 for any vectors that are undocumented for processing times.
*/
-const uint8_t m68ki_exception_cycle_table[7][256] =
+const uint8_t m68000_base_device::m68ki_exception_cycle_table[7][256] =
{
{ /* 000 */
40, /* 0: Reset - Initial Stack Pointer */
@@ -596,7 +588,7 @@ const uint8_t m68ki_exception_cycle_table[7][256] =
},
};
-const uint8_t m68ki_ea_idx_cycle_table[64] =
+const uint8_t m68000_base_device::m68ki_ea_idx_cycle_table[64] =
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, /* ..01.000 no memory indirect, base nullptr */
@@ -636,73 +628,73 @@ const uint8_t m68ki_ea_idx_cycle_table[64] =
/* ================================= API ================================== */
/* ======================================================================== */
-static void set_irq_line(m68000_base_device *m68k, int irqline, int state)
+void m68000_base_device::set_irq_line(int irqline, int state)
{
- uint32_t old_level = m68k->int_level;
- uint32_t vstate = m68k->virq_state;
+ uint32_t old_level = m_int_level;
+ uint32_t vstate = m_virq_state;
uint32_t blevel;
if(state == ASSERT_LINE)
vstate |= 1 << irqline;
else
vstate &= ~(1 << irqline);
- m68k->virq_state = vstate;
+ m_virq_state = vstate;
for(blevel = 7; blevel > 0; blevel--)
if(vstate & (1 << blevel))
break;
- m68k->int_level = blevel << 8;
+ m_int_level = blevel << 8;
/* A transition from < 7 to 7 always interrupts (NMI) */
/* Note: Level 7 can also level trigger like a normal IRQ */
- if(old_level != 0x0700 && m68k->int_level == 0x0700)
- m68k->nmi_pending = true;
+ if(old_level != 0x0700 && m_int_level == 0x0700)
+ m_nmi_pending = true;
}
void m68000_base_device::presave()
{
- save_sr = m68ki_get_sr(this);
- save_stopped = (stopped & STOP_LEVEL_STOP) != 0;
- save_halted = (stopped & STOP_LEVEL_HALT) != 0;
+ m_save_sr = m68ki_get_sr();
+ m_save_stopped = (m_stopped & STOP_LEVEL_STOP) != 0;
+ m_save_halted = (m_stopped & STOP_LEVEL_HALT) != 0;
}
void m68000_base_device::postload()
{
- m68ki_set_sr_noint_nosp(this, save_sr);
+ m68ki_set_sr_noint_nosp(m_save_sr);
//fprintf(stderr, "Reloaded, pc=%x\n", REG_PC(m68k));
- stopped = (save_stopped ? STOP_LEVEL_STOP : 0) | (save_halted ? STOP_LEVEL_HALT : 0);
- m68ki_jump(this, REG_PC(this));
+ m_stopped = (m_save_stopped ? STOP_LEVEL_STOP : 0) | (m_save_halted ? STOP_LEVEL_HALT : 0);
+ m68ki_jump(m_pc);
}
-static void m68k_cause_bus_error(m68000_base_device *m68k)
+void m68000_base_device::m68k_cause_bus_error()
{
uint32_t sr;
- sr = m68ki_init_exception(m68k);
+ sr = m68ki_init_exception();
- m68k->run_mode = RUN_MODE_BERR_AERR_RESET;
+ m_run_mode = RUN_MODE_BERR_AERR_RESET;
- if (!CPU_TYPE_IS_010_PLUS(m68k->cpu_type))
+ if (!CPU_TYPE_IS_010_PLUS())
{
/* Note: This is implemented for 68000 only! */
- m68ki_stack_frame_buserr(m68k, sr);
+ m68ki_stack_frame_buserr(sr);
}
- else if (CPU_TYPE_IS_010(m68k->cpu_type))
+ else if (CPU_TYPE_IS_010())
{
/* only the 68010 throws this unique type-1000 frame */
- m68ki_stack_frame_1000(m68k, REG_PPC(m68k), sr, EXCEPTION_BUS_ERROR);
+ m68ki_stack_frame_1000(m_ppc, sr, EXCEPTION_BUS_ERROR);
}
- else if (m68k->mmu_tmp_buserror_address == REG_PPC(m68k))
+ else if (m_mmu_tmp_buserror_address == m_ppc)
{
- m68ki_stack_frame_1010(m68k, sr, EXCEPTION_BUS_ERROR, REG_PPC(m68k), m68k->mmu_tmp_buserror_address);
+ m68ki_stack_frame_1010(sr, EXCEPTION_BUS_ERROR, m_ppc, m_mmu_tmp_buserror_address);
}
else
{
- m68ki_stack_frame_1011(m68k, sr, EXCEPTION_BUS_ERROR, REG_PPC(m68k), m68k->mmu_tmp_buserror_address);
+ m68ki_stack_frame_1011(sr, EXCEPTION_BUS_ERROR, m_ppc, m_mmu_tmp_buserror_address);
}
- m68ki_jump_vector(m68k, EXCEPTION_BUS_ERROR);
+ m68ki_jump_vector(EXCEPTION_BUS_ERROR);
}
bool m68000_base_device::memory_translate(int space, int intention, offs_t &address)
@@ -710,28 +702,28 @@ bool m68000_base_device::memory_translate(int space, int intention, offs_t &addr
/* only applies to the program address space and only does something if the MMU's enabled */
{
/* 68040 needs to call the MMU even when disabled so transparent translation works */
- if ((space == AS_PROGRAM) && ((pmmu_enabled) || (CPU_TYPE_IS_040_PLUS(cpu_type))))
+ if ((space == AS_PROGRAM) && ((m_pmmu_enabled) || (CPU_TYPE_IS_040_PLUS())))
{
- // FIXME: mmu_tmp_sr will be overwritten in pmmu_translate_addr_with_fc
- uint16_t temp_mmu_tmp_sr = mmu_tmp_sr;
- int mode = s_flag ? FUNCTION_CODE_SUPERVISOR_PROGRAM : FUNCTION_CODE_USER_PROGRAM;
+ // FIXME: m_mmu_tmp_sr will be overwritten in pmmu_translate_addr_with_fc
+ uint16_t temp_mmu_tmp_sr = m_mmu_tmp_sr;
+ int mode = m_s_flag ? FUNCTION_CODE_SUPERVISOR_PROGRAM : FUNCTION_CODE_USER_PROGRAM;
// uint32_t va=address;
- if (CPU_TYPE_IS_040_PLUS(cpu_type))
+ if (CPU_TYPE_IS_040_PLUS())
{
- address = pmmu_translate_addr_with_fc_040(this, address, mode, 1);
+ address = pmmu_translate_addr_with_fc_040(address, mode, 1);
}
else
{
- address = pmmu_translate_addr_with_fc(this, address, mode, 1);
+ address = pmmu_translate_addr_with_fc(address, mode, 1);
}
- if ((mmu_tmp_sr & M68K_MMU_SR_INVALID) != 0) {
-// logerror("cpu_translate_m68k failed with mmu_sr=%04x va=%08x pa=%08x\n",mmu_tmp_sr,va ,address);
+ if ((m_mmu_tmp_sr & M68K_MMU_SR_INVALID) != 0) {
+// logerror("cpu_translate_m68k failed with mmu_sr=%04x va=%08x pa=%08x\n",m_mmu_tmp_sr,va ,address);
address = 0;
}
- mmu_tmp_sr = temp_mmu_tmp_sr;
+ m_mmu_tmp_sr = temp_mmu_tmp_sr;
}
}
return true;
@@ -745,24 +737,24 @@ bool m68000_base_device::memory_translate(int space, int intention, offs_t &addr
-inline void m68000_base_device::cpu_execute(void)
+void m68000_base_device::execute_run()
{
- initial_cycles = remaining_cycles;
+ m_initial_cycles = m_remaining_cycles;
/* eat up any reset cycles */
- if (reset_cycles) {
- int rc = reset_cycles;
- reset_cycles = 0;
- remaining_cycles -= rc;
+ if (m_reset_cycles) {
+ int rc = m_reset_cycles;
+ m_reset_cycles = 0;
+ m_remaining_cycles -= rc;
- if (remaining_cycles <= 0) return;
+ if (m_remaining_cycles <= 0) return;
}
/* See if interrupts came in */
- m68ki_check_interrupts(this);
+ m68ki_check_interrupts();
/* Make sure we're not stopped */
- if(!stopped)
+ if(!m_stopped)
{
/* Return point if we had an address error */
check_address_error:
@@ -770,123 +762,119 @@ inline void m68000_base_device::cpu_execute(void)
{
m_address_error = 0;
try {
- m68ki_exception_address_error(this);
+ m68ki_exception_address_error();
}
catch(int error)
{
if (error==10)
{
m_address_error = 1;
- REG_PPC(this) = REG_PC(this);
+ m_ppc = m_pc;
goto check_address_error;
}
else
throw;
}
- if(stopped)
+ if(m_stopped)
{
- if (remaining_cycles > 0)
- remaining_cycles = 0;
+ if (m_remaining_cycles > 0)
+ m_remaining_cycles = 0;
return;
}
}
/* Main loop. Keep going until we run out of clock cycles */
- while (remaining_cycles > 0)
+ while (m_remaining_cycles > 0)
{
/* Set tracing accodring to T1. (T0 is done inside instruction) */
- m68ki_trace_t1(this); /* auto-disable (see m68kcpu.h) */
+ m68ki_trace_t1(); /* auto-disable (see m68kcpu.h) */
/* Record previous program counter */
- REG_PPC(this) = REG_PC(this);
+ m_ppc = m_pc;
/* Call external hook to peek at CPU */
- debugger_instruction_hook(this, REG_PC(this));
-
- /* call external instruction hook (independent of debug mode) */
- if (!instruction_hook.isnull())
- instruction_hook(*program, REG_PC(this), 0xffffffff);
+ debugger_instruction_hook(this, m_pc);
try
{
- if (!pmmu_enabled)
+ if (!m_pmmu_enabled)
{
- run_mode = RUN_MODE_NORMAL;
+ m_run_mode = RUN_MODE_NORMAL;
/* Read an instruction and call its handler */
- ir = m68ki_read_imm_16(this);
- jump_table[ir](this);
- remaining_cycles -= cyc_instruction[ir];
+ m_ir = m68ki_read_imm_16();
+ (this->*m_jump_table[m_ir])();
+ m_remaining_cycles -= m_cyc_instruction[m_ir];
}
else
{
- run_mode = RUN_MODE_NORMAL;
+ m_run_mode = RUN_MODE_NORMAL;
// save CPU address registers values at start of instruction
int i;
uint32_t tmp_dar[16];
for (i = 15; i >= 0; i--)
{
- tmp_dar[i] = REG_DA(this)[i];
+ tmp_dar[i] = REG_DA()[i];
}
- mmu_tmp_buserror_occurred = 0;
+ m_mmu_tmp_buserror_occurred = 0;
/* Read an instruction and call its handler */
- ir = m68ki_read_imm_16(this);
+ m_ir = m68ki_read_imm_16();
- if (!mmu_tmp_buserror_occurred)
+ if (!m_mmu_tmp_buserror_occurred)
{
- jump_table[ir](this);
- remaining_cycles -= cyc_instruction[ir];
+ (this->*m_jump_table[m_ir])();
+ m_remaining_cycles -= m_cyc_instruction[m_ir];
}
- if (mmu_tmp_buserror_occurred)
+ if (m_mmu_tmp_buserror_occurred)
{
uint32_t sr;
- mmu_tmp_buserror_occurred = 0;
+ m_mmu_tmp_buserror_occurred = 0;
// restore cpu address registers to value at start of instruction
for (i = 15; i >= 0; i--)
{
- if (REG_DA(this)[i] != tmp_dar[i])
+ if (REG_DA()[i] != tmp_dar[i])
{
// logerror("PMMU: pc=%08x sp=%08x bus error: fixed %s[%d]: %08x -> %08x\n",
-// REG_PPC(this), REG_A(this)[7], i < 8 ? "D" : "A", i & 7, REG_DA(this)[i], tmp_dar[i]);
- REG_DA(this)[i] = tmp_dar[i];
+// m_ppc, REG_A()[7], i < 8 ? "D" : "A", i & 7, REG_DA()[i], tmp_dar[i]);
+ REG_DA()[i] = tmp_dar[i];
}
}
- sr = m68ki_init_exception(this);
+ sr = m68ki_init_exception();
- run_mode = RUN_MODE_BERR_AERR_RESET;
+ m_run_mode = RUN_MODE_BERR_AERR_RESET;
- if (!CPU_TYPE_IS_020_PLUS(cpu_type))
+ if (!CPU_TYPE_IS_020_PLUS())
{
/* Note: This is implemented for 68000 only! */
- m68ki_stack_frame_buserr(this, sr);
+ m68ki_stack_frame_buserr(sr);
}
- else if(!CPU_TYPE_IS_040_PLUS(cpu_type)) {
- if (mmu_tmp_buserror_address == REG_PPC(this))
+ else if(!CPU_TYPE_IS_040_PLUS()) {
+ if (m_mmu_tmp_buserror_address == m_ppc)
{
- m68ki_stack_frame_1010(this, sr, EXCEPTION_BUS_ERROR, REG_PPC(this), mmu_tmp_buserror_address);
+ m68ki_stack_frame_1010(sr, EXCEPTION_BUS_ERROR, m_ppc, m_mmu_tmp_buserror_address);
}
else
{
- m68ki_stack_frame_1011(this, sr, EXCEPTION_BUS_ERROR, REG_PPC(this), mmu_tmp_buserror_address);
+ m68ki_stack_frame_1011(sr, EXCEPTION_BUS_ERROR, m_ppc, m_mmu_tmp_buserror_address);
}
}
else
{
- m68ki_stack_frame_0111(this, sr, EXCEPTION_BUS_ERROR, REG_PPC(this), mmu_tmp_buserror_address, true);
+ m68ki_stack_frame_0111(sr, EXCEPTION_BUS_ERROR, m_ppc, m_mmu_tmp_buserror_address, true);
}
- m68ki_jump_vector(this, EXCEPTION_BUS_ERROR);
+ m68ki_jump_vector(EXCEPTION_BUS_ERROR);
// TODO:
/* Use up some clock cycles and undo the instruction's cycles */
- // remaining_cycles -= cyc_exception[EXCEPTION_BUS_ERROR] - cyc_instruction[ir];
+ // m_remaining_cycles -= m_cyc_exception[EXCEPTION_BUS_ERROR] - m_cyc_instruction[m_ir];
}
}
}
@@ -903,14 +891,14 @@ inline void m68000_base_device::cpu_execute(void)
/* Trace m68k_exception, if necessary */
- m68ki_exception_if_trace(this); /* auto-disable (see m68kcpu.h) */
+ m68ki_exception_if_trace(); /* auto-disable (see m68kcpu.h) */
}
/* set previous PC to current PC for the next entry into the loop */
- REG_PPC(this) = REG_PC(this);
+ m_ppc = m_pc;
}
- else if (remaining_cycles > 0)
- remaining_cycles = 0;
+ else if (m_remaining_cycles > 0)
+ m_remaining_cycles = 0;
}
@@ -920,15 +908,15 @@ void m68000_base_device::init_cpu_common(void)
static uint32_t emulation_initialized = 0;
//this = device;//deviceparam;
- program = &space(AS_PROGRAM);
- oprogram = has_space(AS_OPCODES) ? &space(AS_OPCODES) : program;
- int_ack_callback = device_irq_acknowledge_delegate(FUNC(m68000_base_device::standard_irq_callback_member), this);
+ m_program = &space(AS_PROGRAM);
+ m_oprogram = has_space(AS_OPCODES) ? &space(AS_OPCODES) : m_program;
+ m_int_ack_callback = device_irq_acknowledge_delegate(FUNC(m68000_base_device::standard_irq_callback_member), this);
/* disable all MMUs */
- has_pmmu = 0;
- has_hmmu = 0;
- pmmu_enabled = 0;
- hmmu_enabled = 0;
+ m_has_pmmu = 0;
+ m_has_hmmu = 0;
+ m_pmmu_enabled = 0;
+ m_hmmu_enabled = 0;
/* The first call to this function initializes the opcode handler jump table */
if(!emulation_initialized)
@@ -938,116 +926,116 @@ void m68000_base_device::init_cpu_common(void)
}
/* Note, D covers A because the dar array is common, REG_A(m68k)=REG_D(m68k)+8 */
- save_item(NAME(REG_D(this)));
- save_item(NAME(REG_PPC(this)));
- save_item(NAME(REG_PC(this)));
- save_item(NAME(REG_USP(this)));
- save_item(NAME(REG_ISP(this)));
- save_item(NAME(REG_MSP(this)));
- save_item(NAME(vbr));
- save_item(NAME(sfc));
- save_item(NAME(dfc));
- save_item(NAME(cacr));
- save_item(NAME(caar));
- save_item(NAME(save_sr));
- save_item(NAME(int_level));
- save_item(NAME(save_stopped));
- save_item(NAME(save_halted));
- save_item(NAME(pref_addr));
- save_item(NAME(pref_data));
- save_item(NAME(reset_cycles));
- save_item(NAME(virq_state));
- save_item(NAME(nmi_pending));
- save_item(NAME(has_pmmu));
- save_item(NAME(has_hmmu));
- save_item(NAME(pmmu_enabled));
- save_item(NAME(hmmu_enabled));
-
- save_item(NAME(mmu_crp_aptr));
- save_item(NAME(mmu_crp_limit));
- save_item(NAME(mmu_srp_aptr));
- save_item(NAME(mmu_srp_limit));
- save_item(NAME(mmu_urp_aptr));
- save_item(NAME(mmu_tc));
- save_item(NAME(mmu_sr));
- save_item(NAME(mmu_sr_040));
- save_item(NAME(mmu_atc_rr));
- save_item(NAME(mmu_tt0));
- save_item(NAME(mmu_tt1));
- save_item(NAME(mmu_itt0));
- save_item(NAME(mmu_itt1));
- save_item(NAME(mmu_dtt0));
- save_item(NAME(mmu_dtt1));
- save_item(NAME(mmu_acr0));
- save_item(NAME(mmu_acr1));
- save_item(NAME(mmu_acr2));
- save_item(NAME(mmu_acr3));
- save_item(NAME(mmu_last_page_entry));
- save_item(NAME(mmu_last_page_entry_addr));
+ save_item(NAME(REG_D()));
+ save_item(NAME(m_ppc));
+ save_item(NAME(m_pc));
+ save_item(NAME(REG_USP()));
+ save_item(NAME(REG_ISP()));
+ save_item(NAME(REG_MSP()));
+ save_item(NAME(m_vbr));
+ save_item(NAME(m_sfc));
+ save_item(NAME(m_dfc));
+ save_item(NAME(m_cacr));
+ save_item(NAME(m_caar));
+ save_item(NAME(m_save_sr));
+ save_item(NAME(m_int_level));
+ save_item(NAME(m_save_stopped));
+ save_item(NAME(m_save_halted));
+ save_item(NAME(m_pref_addr));
+ save_item(NAME(m_pref_data));
+ save_item(NAME(m_reset_cycles));
+ save_item(NAME(m_virq_state));
+ save_item(NAME(m_nmi_pending));
+ save_item(NAME(m_has_pmmu));
+ save_item(NAME(m_has_hmmu));
+ save_item(NAME(m_pmmu_enabled));
+ save_item(NAME(m_hmmu_enabled));
+
+ save_item(NAME(m_mmu_crp_aptr));
+ save_item(NAME(m_mmu_crp_limit));
+ save_item(NAME(m_mmu_srp_aptr));
+ save_item(NAME(m_mmu_srp_limit));
+ save_item(NAME(m_mmu_urp_aptr));
+ save_item(NAME(m_mmu_tc));
+ save_item(NAME(m_mmu_sr));
+ save_item(NAME(m_mmu_sr_040));
+ save_item(NAME(m_mmu_atc_rr));
+ save_item(NAME(m_mmu_tt0));
+ save_item(NAME(m_mmu_tt1));
+ save_item(NAME(m_mmu_itt0));
+ save_item(NAME(m_mmu_itt1));
+ save_item(NAME(m_mmu_dtt0));
+ save_item(NAME(m_mmu_dtt1));
+ save_item(NAME(m_mmu_acr0));
+ save_item(NAME(m_mmu_acr1));
+ save_item(NAME(m_mmu_acr2));
+ save_item(NAME(m_mmu_acr3));
+ save_item(NAME(m_mmu_last_page_entry));
+ save_item(NAME(m_mmu_last_page_entry_addr));
for (int i=0; i<MMU_ATC_ENTRIES;i++) {
- save_item(NAME(mmu_atc_tag[i]), i);
- save_item(NAME(mmu_atc_data[i]), i);
+ save_item(NAME(m_mmu_atc_tag[i]), i);
+ save_item(NAME(m_mmu_atc_data[i]), i);
}
machine().save().register_presave(save_prepost_delegate(FUNC(m68000_base_device::presave), this));
machine().save().register_postload(save_prepost_delegate(FUNC(m68000_base_device::postload), this));
- m_icountptr = &remaining_cycles;
- remaining_cycles = 0;
+ m_icountptr = &m_remaining_cycles;
+ m_remaining_cycles = 0;
}
-void m68000_base_device::reset_cpu(void)
+void m68000_base_device::device_reset()
{
/* Disable the PMMU/HMMU on reset, if any */
- pmmu_enabled = 0;
- hmmu_enabled = 0;
+ m_pmmu_enabled = 0;
+ m_hmmu_enabled = 0;
- mmu_tc = 0;
- mmu_tt0 = 0;
- mmu_tt1 = 0;
+ m_mmu_tc = 0;
+ m_mmu_tt0 = 0;
+ m_mmu_tt1 = 0;
/* Clear all stop levels and eat up all remaining cycles */
- stopped = 0;
- if (remaining_cycles > 0)
- remaining_cycles = 0;
+ m_stopped = 0;
+ if (m_remaining_cycles > 0)
+ m_remaining_cycles = 0;
- run_mode = RUN_MODE_BERR_AERR_RESET;
+ m_run_mode = RUN_MODE_BERR_AERR_RESET;
/* Turn off tracing */
- t1_flag = t0_flag = 0;
- m68ki_clear_trace(this);
+ m_t1_flag = m_t0_flag = 0;
+ m68ki_clear_trace();
/* Interrupt mask to level 7 */
- int_mask = 0x0700;
- int_level = 0;
- virq_state = 0;
+ m_int_mask = 0x0700;
+ m_int_level = 0;
+ m_virq_state = 0;
/* Reset VBR */
- vbr = 0;
+ m_vbr = 0;
/* Go to supervisor mode */
- m68ki_set_sm_flag(this, SFLAG_SET | MFLAG_CLEAR);
+ m68ki_set_sm_flag(SFLAG_SET | MFLAG_CLEAR);
/* Invalidate the prefetch queue */
/* Set to arbitrary number since our first fetch is from 0 */
- pref_addr = 0x1000;
+ m_pref_addr = 0x1000;
/* Read the initial stack pointer and program counter */
- m68ki_jump(this, 0);
- REG_SP(this) = m68ki_read_imm_32(this);
- REG_PC(this) = m68ki_read_imm_32(this);
- m68ki_jump(this, REG_PC(this));
+ m68ki_jump(0);
+ REG_SP() = m68ki_read_imm_32();
+ m_pc = m68ki_read_imm_32();
+ m68ki_jump(m_pc);
- run_mode = RUN_MODE_NORMAL;
+ m_run_mode = RUN_MODE_NORMAL;
- reset_cycles = cyc_exception[EXCEPTION_RESET];
+ m_reset_cycles = m_cyc_exception[EXCEPTION_RESET];
/* flush the MMU's cache */
- pmmu_atc_flush(this);
+ pmmu_atc_flush();
- if(CPU_TYPE_IS_EC020_PLUS(cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
{
// clear instruction cache
- m68ki_ic_clear(this);
+ m68ki_ic_clear();
}
}
@@ -1062,37 +1050,37 @@ void m68000_base_device::state_import(const device_state_entry &entry)
switch (entry.index())
{
case STATE_GENPC:
- ppc = pc;
+ m_ppc = m_pc;
break;
case STATE_GENPCBASE:
- pc = ppc;
+ m_pc = m_ppc;
break;
case M68K_SR:
case STATE_GENFLAGS:
- m68ki_set_sr(this, iotemp);
+ m68ki_set_sr(m_iotemp);
break;
case M68K_ISP:
- if (s_flag && !m_flag)
- REG_SP(this) = iotemp;
+ if (m_s_flag && !m_m_flag)
+ REG_SP() = m_iotemp;
else
- REG_ISP(this) = iotemp;
+ REG_ISP() = m_iotemp;
break;
case M68K_USP:
- if (!s_flag)
- REG_SP(this) = iotemp;
+ if (!m_s_flag)
+ REG_SP() = m_iotemp;
else
- REG_USP(this) = iotemp;
+ REG_USP() = m_iotemp;
break;
case M68K_MSP:
- if (s_flag && m_flag)
- REG_SP(this) = iotemp;
+ if (m_s_flag && m_m_flag)
+ REG_SP() = m_iotemp;
else
- REG_MSP(this) = iotemp;
+ REG_MSP() = m_iotemp;
break;
default:
@@ -1109,19 +1097,19 @@ void m68000_base_device::state_export(const device_state_entry &entry)
{
case M68K_SR:
case STATE_GENFLAGS:
- iotemp = m68ki_get_sr(this);
+ m_iotemp = m68ki_get_sr();
break;
case M68K_ISP:
- iotemp = (s_flag && !m_flag) ? REG_SP(this) : REG_ISP(this);
+ m_iotemp = (m_s_flag && !m_m_flag) ? REG_SP() : REG_ISP();
break;
case M68K_USP:
- iotemp = (!s_flag) ? REG_SP(this) : REG_USP(this);
+ m_iotemp = (!m_s_flag) ? REG_SP() : REG_USP();
break;
case M68K_MSP:
- iotemp = (s_flag && m_flag) ? REG_SP(this) : REG_MSP(this);
+ m_iotemp = (m_s_flag && m_m_flag) ? REG_SP() : REG_MSP();
break;
case M68K_FP0:
@@ -1146,39 +1134,39 @@ void m68000_base_device::state_string_export(const device_state_entry &entry, st
switch (entry.index())
{
case M68K_FP0:
- str = string_format("%f", fx80_to_double(REG_FP(this)[0]));
+ str = string_format("%f", fx80_to_double(m_fpr[0]));
break;
case M68K_FP1:
- str = string_format("%f", fx80_to_double(REG_FP(this)[1]));
+ str = string_format("%f", fx80_to_double(m_fpr[1]));
break;
case M68K_FP2:
- str = string_format("%f", fx80_to_double(REG_FP(this)[2]));
+ str = string_format("%f", fx80_to_double(m_fpr[2]));
break;
case M68K_FP3:
- str = string_format("%f", fx80_to_double(REG_FP(this)[3]));
+ str = string_format("%f", fx80_to_double(m_fpr[3]));
break;
case M68K_FP4:
- str = string_format("%f", fx80_to_double(REG_FP(this)[4]));
+ str = string_format("%f", fx80_to_double(m_fpr[4]));
break;
case M68K_FP5:
- str = string_format("%f", fx80_to_double(REG_FP(this)[5]));
+ str = string_format("%f", fx80_to_double(m_fpr[5]));
break;
case M68K_FP6:
- str = string_format("%f", fx80_to_double(REG_FP(this)[6]));
+ str = string_format("%f", fx80_to_double(m_fpr[6]));
break;
case M68K_FP7:
- str = string_format("%f", fx80_to_double(REG_FP(this)[7]));
+ str = string_format("%f", fx80_to_double(m_fpr[7]));
break;
case STATE_GENFLAGS:
- sr = m68ki_get_sr(this);
+ sr = m68ki_get_sr();
str = string_format("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
sr & 0x8000 ? 'T':'.',
sr & 0x4000 ? 't':'.',
@@ -1206,22 +1194,12 @@ void m68000_base_device::state_string_export(const device_state_entry &entry, st
void m68000_base_device::set_hmmu_enable(int enable)
{
- hmmu_enabled = enable;
+ m_hmmu_enabled = enable;
}
void m68000_base_device::set_fpu_enable(int enable)
{
- has_fpu = enable;
-}
-
-int m68000_base_device::get_fpu_enable()
-{
- return has_fpu;
-}
-
-void m68000_base_device::set_instruction_hook(read32_delegate ihook)
-{
- instruction_hook = ihook;
+ m_has_fpu = enable;
}
/****************************************************************************
@@ -1239,16 +1217,15 @@ void m68000_base_device::init8(address_space &space, address_space &ospace)
m_direct = space.direct<0>();
m_ospace = &ospace;
m_odirect = ospace.direct<0>();
-// m_cpustate = this;
- opcode_xor = 0;
+ m_opcode_xor = 0;
- readimm16 = m68k_readimm16_delegate(&m68000_base_device::m68008_read_immediate_16, this);
- read8 = m68k_read8_delegate(&address_space::read_byte, &space);
- read16 = m68k_read16_delegate(&address_space::read_word, &space);
- read32 = m68k_read32_delegate(&address_space::read_dword, &space);
- write8 = m68k_write8_delegate(&address_space::write_byte, &space);
- write16 = m68k_write16_delegate(&address_space::write_word, &space);
- write32 = m68k_write32_delegate(&address_space::write_dword, &space);
+ m_readimm16 = m68k_readimm16_delegate(&m68000_base_device::m68008_read_immediate_16, this);
+ m_read8 = m68k_read8_delegate(&address_space::read_byte, &space);
+ m_read16 = m68k_read16_delegate(&address_space::read_word, &space);
+ m_read32 = m68k_read32_delegate(&address_space::read_dword, &space);
+ m_write8 = m68k_write8_delegate(&address_space::write_byte, &space);
+ m_write16 = m68k_write16_delegate(&address_space::write_word, &space);
+ m_write32 = m68k_write32_delegate(&address_space::write_dword, &space);
}
/****************************************************************************
@@ -1257,7 +1234,7 @@ void m68000_base_device::init8(address_space &space, address_space &ospace)
uint16_t m68000_base_device::read_immediate_16(offs_t address)
{
- return m_odirect->read_word((address), opcode_xor);
+ return m_odirect->read_word((address), m_opcode_xor);
}
uint16_t m68000_base_device::simple_read_immediate_16(offs_t address)
@@ -1279,15 +1256,15 @@ void m68000_base_device::init16(address_space &space, address_space &ospace)
m_ospace = &ospace;
m_odirect = ospace.direct<0>();
- opcode_xor = 0;
+ m_opcode_xor = 0;
- readimm16 = m68k_readimm16_delegate(&m68000_base_device::simple_read_immediate_16, this);
- read8 = m68k_read8_delegate(&address_space::read_byte, &space);
- read16 = m68k_read16_delegate(&address_space::read_word, &space);
- read32 = m68k_read32_delegate(&address_space::read_dword, &space);
- write8 = m68k_write8_delegate(&m68000_base_device::m68000_write_byte, this);
- write16 = m68k_write16_delegate(&address_space::write_word, &space);
- write32 = m68k_write32_delegate(&address_space::write_dword, &space);
+ m_readimm16 = m68k_readimm16_delegate(&m68000_base_device::simple_read_immediate_16, this);
+ m_read8 = m68k_read8_delegate(&address_space::read_byte, &space);
+ m_read16 = m68k_read16_delegate(&address_space::read_word, &space);
+ m_read32 = m68k_read32_delegate(&address_space::read_dword, &space);
+ m_write8 = m68k_write8_delegate(&m68000_base_device::m68000_write_byte, this);
+ m_write16 = m68k_write16_delegate(&address_space::write_word, &space);
+ m_write32 = m68k_write32_delegate(&address_space::write_dword, &space);
}
@@ -1305,24 +1282,24 @@ void m68000_base_device::init32(address_space &space, address_space &ospace)
m_direct = space.direct<0>();
m_ospace = &ospace;
m_odirect = ospace.direct<0>();
- opcode_xor = WORD_XOR_BE(0);
+ m_opcode_xor = WORD_XOR_BE(0);
- readimm16 = m68k_readimm16_delegate(&m68000_base_device::read_immediate_16, this);
- read8 = m68k_read8_delegate(&address_space::read_byte, &space);
- read16 = m68k_read16_delegate(&address_space::read_word_unaligned, &space);
- read32 = m68k_read32_delegate(&address_space::read_dword_unaligned, &space);
- write8 = m68k_write8_delegate(&address_space::write_byte, &space);
- write16 = m68k_write16_delegate(&address_space::write_word_unaligned, &space);
- write32 = m68k_write32_delegate(&address_space::write_dword_unaligned, &space);
+ m_readimm16 = m68k_readimm16_delegate(&m68000_base_device::read_immediate_16, this);
+ m_read8 = m68k_read8_delegate(&address_space::read_byte, &space);
+ m_read16 = m68k_read16_delegate(&address_space::read_word_unaligned, &space);
+ m_read32 = m68k_read32_delegate(&address_space::read_dword_unaligned, &space);
+ m_write8 = m68k_write8_delegate(&address_space::write_byte, &space);
+ m_write16 = m68k_write16_delegate(&address_space::write_word_unaligned, &space);
+ m_write32 = m68k_write32_delegate(&address_space::write_dword_unaligned, &space);
}
/* interface for 32-bit data bus with PMMU (68EC020, 68020) */
uint8_t m68000_base_device::read_byte_32_mmu(offs_t address)
{
- if (pmmu_enabled)
+ if (m_pmmu_enabled)
{
- address = pmmu_translate_addr(this, address);
- if (mmu_tmp_buserror_occurred) {
+ address = pmmu_translate_addr(address);
+ if (m_mmu_tmp_buserror_occurred) {
return ~0;
}
}
@@ -1332,10 +1309,10 @@ uint8_t m68000_base_device::read_byte_32_mmu(offs_t address)
void m68000_base_device::write_byte_32_mmu(offs_t address, uint8_t data)
{
- if (pmmu_enabled)
+ if (m_pmmu_enabled)
{
- address = pmmu_translate_addr(this, address);
- if (mmu_tmp_buserror_occurred) {
+ address = pmmu_translate_addr(address);
+ if (m_mmu_tmp_buserror_occurred) {
return;
}
}
@@ -1345,15 +1322,15 @@ void m68000_base_device::write_byte_32_mmu(offs_t address, uint8_t data)
uint16_t m68000_base_device::read_immediate_16_mmu(offs_t address)
{
- if (pmmu_enabled)
+ if (m_pmmu_enabled)
{
- address = pmmu_translate_addr(this, address);
- if (mmu_tmp_buserror_occurred) {
+ address = pmmu_translate_addr(address);
+ if (m_mmu_tmp_buserror_occurred) {
return ~0;
}
}
- return m_odirect->read_word((address), opcode_xor);
+ return m_odirect->read_word((address), m_opcode_xor);
}
/* potentially misaligned 16-bit reads with a 32-bit data bus (and 24-bit address bus) */
@@ -1361,16 +1338,16 @@ uint16_t m68000_base_device::readword_d32_mmu(offs_t address)
{
uint16_t result;
- if (pmmu_enabled)
+ if (m_pmmu_enabled)
{
- uint32_t address0 = pmmu_translate_addr(this, address);
- if (mmu_tmp_buserror_occurred) {
+ uint32_t address0 = pmmu_translate_addr(address);
+ if (m_mmu_tmp_buserror_occurred) {
return ~0;
} else if (WORD_ALIGNED(address)) {
return m_space->read_word(address0);
} else {
- uint32_t address1 = pmmu_translate_addr(this, address + 1);
- if (mmu_tmp_buserror_occurred) {
+ uint32_t address1 = pmmu_translate_addr(address + 1);
+ if (m_mmu_tmp_buserror_occurred) {
return ~0;
} else {
result = m_space->read_byte(address0) << 8;
@@ -1388,17 +1365,17 @@ uint16_t m68000_base_device::readword_d32_mmu(offs_t address)
/* potentially misaligned 16-bit writes with a 32-bit data bus (and 24-bit address bus) */
void m68000_base_device::writeword_d32_mmu(offs_t address, uint16_t data)
{
- if (pmmu_enabled)
+ if (m_pmmu_enabled)
{
- uint32_t address0 = pmmu_translate_addr(this, address);
- if (mmu_tmp_buserror_occurred) {
+ uint32_t address0 = pmmu_translate_addr(address);
+ if (m_mmu_tmp_buserror_occurred) {
return;
} else if (WORD_ALIGNED(address)) {
m_space->write_word(address0, data);
return;
} else {
- uint32_t address1 = pmmu_translate_addr(this, address + 1);
- if (mmu_tmp_buserror_occurred) {
+ uint32_t address1 = pmmu_translate_addr(address + 1);
+ if (m_mmu_tmp_buserror_occurred) {
return;
} else {
m_space->write_byte(address0, data >> 8);
@@ -1422,10 +1399,10 @@ uint32_t m68000_base_device::readlong_d32_mmu(offs_t address)
{
uint32_t result;
- if (pmmu_enabled)
+ if (m_pmmu_enabled)
{
- uint32_t address0 = pmmu_translate_addr(this, address);
- if (mmu_tmp_buserror_occurred) {
+ uint32_t address0 = pmmu_translate_addr(address);
+ if (m_mmu_tmp_buserror_occurred) {
return ~0;
} else if ((address +3) & 0xfc) {
// not at page boundary; use default code
@@ -1433,16 +1410,16 @@ uint32_t m68000_base_device::readlong_d32_mmu(offs_t address)
} else if (DWORD_ALIGNED(address)) { // 0
return m_space->read_dword(address0);
} else {
- uint32_t address2 = pmmu_translate_addr(this, address+2);
- if (mmu_tmp_buserror_occurred) {
+ uint32_t address2 = pmmu_translate_addr(address+2);
+ if (m_mmu_tmp_buserror_occurred) {
return ~0;
} else if (WORD_ALIGNED(address)) { // 2
result = m_space->read_word(address0) << 16;
return result | m_space->read_word(address2);
} else {
- uint32_t address1 = pmmu_translate_addr(this, address+1);
- uint32_t address3 = pmmu_translate_addr(this, address+3);
- if (mmu_tmp_buserror_occurred) {
+ uint32_t address1 = pmmu_translate_addr(address+1);
+ uint32_t address3 = pmmu_translate_addr(address+3);
+ if (m_mmu_tmp_buserror_occurred) {
return ~0;
} else {
result = m_space->read_byte(address0) << 24;
@@ -1468,10 +1445,10 @@ uint32_t m68000_base_device::readlong_d32_mmu(offs_t address)
/* potentially misaligned 32-bit writes with a 32-bit data bus (and 24-bit address bus) */
void m68000_base_device::writelong_d32_mmu(offs_t address, uint32_t data)
{
- if (pmmu_enabled)
+ if (m_pmmu_enabled)
{
- uint32_t address0 = pmmu_translate_addr(this, address);
- if (mmu_tmp_buserror_occurred) {
+ uint32_t address0 = pmmu_translate_addr(address);
+ if (m_mmu_tmp_buserror_occurred) {
return;
} else if ((address +3) & 0xfc) {
// not at page boundary; use default code
@@ -1480,17 +1457,17 @@ void m68000_base_device::writelong_d32_mmu(offs_t address, uint32_t data)
m_space->write_dword(address0, data);
return;
} else {
- uint32_t address2 = pmmu_translate_addr(this, address+2);
- if (mmu_tmp_buserror_occurred) {
+ uint32_t address2 = pmmu_translate_addr(address+2);
+ if (m_mmu_tmp_buserror_occurred) {
return;
} else if (WORD_ALIGNED(address)) { // 2
m_space->write_word(address0, data >> 16);
m_space->write_word(address2, data);
return;
} else {
- uint32_t address1 = pmmu_translate_addr(this, address+1);
- uint32_t address3 = pmmu_translate_addr(this, address+3);
- if (mmu_tmp_buserror_occurred) {
+ uint32_t address1 = pmmu_translate_addr(address+1);
+ uint32_t address3 = pmmu_translate_addr(address+3);
+ if (m_mmu_tmp_buserror_occurred) {
return;
} else {
m_space->write_byte(address0, data >> 24);
@@ -1524,24 +1501,24 @@ void m68000_base_device::init32mmu(address_space &space, address_space &ospace)
m_direct = space.direct<0>();
m_ospace = &ospace;
m_odirect = ospace.direct<0>();
- opcode_xor = WORD_XOR_BE(0);
+ m_opcode_xor = WORD_XOR_BE(0);
- readimm16 = m68k_readimm16_delegate(&m68000_base_device::read_immediate_16_mmu, this);
- read8 = m68k_read8_delegate(&m68000_base_device::read_byte_32_mmu, this);
- read16 = m68k_read16_delegate(&m68000_base_device::readword_d32_mmu, this);
- read32 = m68k_read32_delegate(&m68000_base_device::readlong_d32_mmu, this);
- write8 = m68k_write8_delegate(&m68000_base_device::write_byte_32_mmu, this);
- write16 = m68k_write16_delegate(&m68000_base_device::writeword_d32_mmu, this);
- write32 = m68k_write32_delegate(&m68000_base_device::writelong_d32_mmu, this);
+ m_readimm16 = m68k_readimm16_delegate(&m68000_base_device::read_immediate_16_mmu, this);
+ m_read8 = m68k_read8_delegate(&m68000_base_device::read_byte_32_mmu, this);
+ m_read16 = m68k_read16_delegate(&m68000_base_device::readword_d32_mmu, this);
+ m_read32 = m68k_read32_delegate(&m68000_base_device::readlong_d32_mmu, this);
+ m_write8 = m68k_write8_delegate(&m68000_base_device::write_byte_32_mmu, this);
+ m_write16 = m68k_write16_delegate(&m68000_base_device::writeword_d32_mmu, this);
+ m_write32 = m68k_write32_delegate(&m68000_base_device::writelong_d32_mmu, this);
}
/* interface for 32-bit data bus with PMMU (68EC020, 68020) */
uint8_t m68000_base_device::read_byte_32_hmmu(offs_t address)
{
- if (hmmu_enabled)
+ if (m_hmmu_enabled)
{
- address = hmmu_translate_addr(this, address);
+ address = hmmu_translate_addr(address);
}
return m_space->read_byte(address);
@@ -1549,9 +1526,9 @@ uint8_t m68000_base_device::read_byte_32_hmmu(offs_t address)
void m68000_base_device::write_byte_32_hmmu(offs_t address, uint8_t data)
{
- if (hmmu_enabled)
+ if (m_hmmu_enabled)
{
- address = hmmu_translate_addr(this, address);
+ address = hmmu_translate_addr(address);
}
m_space->write_byte(address, data);
@@ -1559,12 +1536,12 @@ void m68000_base_device::write_byte_32_hmmu(offs_t address, uint8_t data)
uint16_t m68000_base_device::read_immediate_16_hmmu(offs_t address)
{
- if (hmmu_enabled)
+ if (m_hmmu_enabled)
{
- address = hmmu_translate_addr(this, address);
+ address = hmmu_translate_addr(address);
}
- return m_odirect->read_word((address), opcode_xor);
+ return m_odirect->read_word((address), m_opcode_xor);
}
/* potentially misaligned 16-bit reads with a 32-bit data bus (and 24-bit address bus) */
@@ -1572,9 +1549,9 @@ uint16_t m68000_base_device::readword_d32_hmmu(offs_t address)
{
uint16_t result;
- if (hmmu_enabled)
+ if (m_hmmu_enabled)
{
- address = hmmu_translate_addr(this, address);
+ address = hmmu_translate_addr(address);
}
if (WORD_ALIGNED(address))
@@ -1586,9 +1563,9 @@ uint16_t m68000_base_device::readword_d32_hmmu(offs_t address)
/* potentially misaligned 16-bit writes with a 32-bit data bus (and 24-bit address bus) */
void m68000_base_device::writeword_d32_hmmu(offs_t address, uint16_t data)
{
- if (hmmu_enabled)
+ if (m_hmmu_enabled)
{
- address = hmmu_translate_addr(this, address);
+ address = hmmu_translate_addr(address);
}
if (WORD_ALIGNED(address))
@@ -1605,9 +1582,9 @@ uint32_t m68000_base_device::readlong_d32_hmmu(offs_t address)
{
uint32_t result;
- if (hmmu_enabled)
+ if (m_hmmu_enabled)
{
- address = hmmu_translate_addr(this, address);
+ address = hmmu_translate_addr(address);
}
if (DWORD_ALIGNED(address))
@@ -1625,9 +1602,9 @@ uint32_t m68000_base_device::readlong_d32_hmmu(offs_t address)
/* potentially misaligned 32-bit writes with a 32-bit data bus (and 24-bit address bus) */
void m68000_base_device::writelong_d32_hmmu(offs_t address, uint32_t data)
{
- if (hmmu_enabled)
+ if (m_hmmu_enabled)
{
- address = hmmu_translate_addr(this, address);
+ address = hmmu_translate_addr(address);
}
if (DWORD_ALIGNED(address))
@@ -1652,20 +1629,20 @@ void m68000_base_device::init32hmmu(address_space &space, address_space &ospace)
m_direct = space.direct<0>();
m_ospace = &ospace;
m_odirect = ospace.direct<0>();
- opcode_xor = WORD_XOR_BE(0);
+ m_opcode_xor = WORD_XOR_BE(0);
- readimm16 = m68k_readimm16_delegate(&m68000_base_device::read_immediate_16_hmmu, this);
- read8 = m68k_read8_delegate(&m68000_base_device::read_byte_32_hmmu, this);
- read16 = m68k_read16_delegate(&m68000_base_device::readword_d32_hmmu, this);
- read32 = m68k_read32_delegate(&m68000_base_device::readlong_d32_hmmu, this);
- write8 = m68k_write8_delegate(&m68000_base_device::write_byte_32_hmmu, this);
- write16 = m68k_write16_delegate(&m68000_base_device::writeword_d32_hmmu, this);
- write32 = m68k_write32_delegate(&m68000_base_device::writelong_d32_hmmu, this);
+ m_readimm16 = m68k_readimm16_delegate(&m68000_base_device::read_immediate_16_hmmu, this);
+ m_read8 = m68k_read8_delegate(&m68000_base_device::read_byte_32_hmmu, this);
+ m_read16 = m68k_read16_delegate(&m68000_base_device::readword_d32_hmmu, this);
+ m_read32 = m68k_read32_delegate(&m68000_base_device::readlong_d32_hmmu, this);
+ m_write8 = m68k_write8_delegate(&m68000_base_device::write_byte_32_hmmu, this);
+ m_write16 = m68k_write16_delegate(&m68000_base_device::writeword_d32_hmmu, this);
+ m_write32 = m68k_write32_delegate(&m68000_base_device::writelong_d32_hmmu, this);
}
void m68000_base_device::set_reset_callback(write_line_delegate callback)
{
- reset_instr_callback = callback;
+ m_reset_instr_callback = callback;
}
// fault_addr = address to indicate fault at
@@ -1673,29 +1650,30 @@ void m68000_base_device::set_reset_callback(write_line_delegate callback)
// fc = 3-bit function code of access (usually you'd just put what m68k_get_fc() returns here)
void m68000_base_device::set_buserror_details(uint32_t fault_addr, uint8_t rw, uint8_t fc)
{
- aerr_address = fault_addr;
- aerr_write_mode = rw;
- aerr_fc = fc;
+ m_aerr_address = fault_addr;
+ m_aerr_write_mode = rw;
+ m_aerr_fc = fc;
+ m_mmu_tmp_buserror_address = fault_addr; // Hack for x68030
}
void m68000_base_device::set_cmpild_callback(write32_delegate callback)
{
- cmpild_instr_callback = callback;
+ m_cmpild_instr_callback = callback;
}
void m68000_base_device::set_rte_callback(write_line_delegate callback)
{
- rte_instr_callback = callback;
+ m_rte_instr_callback = callback;
}
void m68000_base_device::set_tas_write_callback(write8_delegate callback)
{
- tas_write_callback = callback;
+ m_tas_write_callback = callback;
}
uint16_t m68000_base_device::get_fc()
{
- return mmu_tmp_fc;
+ return m_mmu_tmp_fc;
}
/****************************************************************************
@@ -1704,49 +1682,50 @@ uint16_t m68000_base_device::get_fc()
void m68000_base_device::define_state(void)
{
- uint32_t addrmask = (cpu_type & MASK_24BIT_SPACE) ? 0xffffff : 0xffffffff;
+ uint32_t addrmask = (m_cpu_type & MASK_24BIT_SPACE) ? 0xffffff : 0xffffffff;
- state_add(STATE_GENPC, "PC", pc).mask(addrmask).callimport();
- state_add(STATE_GENPCBASE, "CURPC", ppc).mask(addrmask).callimport().noshow();
- state_add(M68K_SP, "SP", dar[15]);
- state_add(STATE_GENSP, "GENSP", dar[15]).noshow();
- state_add(STATE_GENFLAGS, "GENFLAGS", iotemp).noshow().callimport().callexport().formatstr("%16s");
- state_add(M68K_ISP, "ISP", iotemp).callimport().callexport();
- state_add(M68K_USP, "USP", iotemp).callimport().callexport();
- if (cpu_type & MASK_020_OR_LATER)
- state_add(M68K_MSP, "MSP", iotemp).callimport().callexport();
- state_add(M68K_SR, "SR", iotemp).noshow().callimport().callexport();
+ state_add(STATE_GENPC, "PC", m_pc).mask(addrmask).callimport();
+ state_add(STATE_GENPCBASE, "CURPC", m_ppc).mask(addrmask).callimport().noshow();
+ state_add(M68K_SP, "SP", m_dar[15]);
+ state_add(STATE_GENSP, "GENSP", m_dar[15]).noshow();
+ state_add(STATE_GENFLAGS, "GENFLAGS", m_iotemp).noshow().callimport().callexport().formatstr("%16s");
+ state_add(M68K_ISP, "ISP", m_iotemp).callimport().callexport();
+ state_add(M68K_USP, "USP", m_iotemp).callimport().callexport();
+ if (m_cpu_type & MASK_020_OR_LATER)
+ state_add(M68K_MSP, "MSP", m_iotemp).callimport().callexport();
+ state_add(M68K_SR, "SR", m_iotemp).noshow().callimport().callexport();
for (int regnum = 0; regnum < 8; regnum++) {
- state_add(M68K_D0 + regnum, string_format("D%d", regnum).c_str(), dar[regnum]);
+ state_add(M68K_D0 + regnum, string_format("D%d", regnum).c_str(), m_dar[regnum]);
}
for (int regnum = 0; regnum < 8; regnum++) {
- state_add(M68K_A0 + regnum, string_format("A%d", regnum).c_str(), dar[8 + regnum]);
+ state_add(M68K_A0 + regnum, string_format("A%d", regnum).c_str(), m_dar[8 + regnum]);
}
- state_add(M68K_PREF_ADDR, "PREF_ADDR", pref_addr).mask(addrmask);
- state_add(M68K_PREF_DATA, "PREF_DATA", pref_data);
+ state_add(M68K_IR, "IR", m_ir);
+ state_add(M68K_PREF_ADDR, "PREF_ADDR", m_pref_addr).mask(addrmask);
+ state_add(M68K_PREF_DATA, "PREF_DATA", m_pref_data);
- if (cpu_type & MASK_010_OR_LATER)
+ if (m_cpu_type & MASK_010_OR_LATER)
{
- state_add(M68K_SFC, "SFC", sfc).mask(0x7);
- state_add(M68K_DFC, "DFC", dfc).mask(0x7);
- state_add(M68K_VBR, "VBR", vbr);
+ state_add(M68K_SFC, "SFC", m_sfc).mask(0x7);
+ state_add(M68K_DFC, "DFC", m_dfc).mask(0x7);
+ state_add(M68K_VBR, "VBR", m_vbr);
}
- if (cpu_type & MASK_020_OR_LATER)
+ if (m_cpu_type & MASK_020_OR_LATER)
{
- state_add(M68K_CACR, "CACR", cacr);
- state_add(M68K_CAAR, "CAAR", caar);
+ state_add(M68K_CACR, "CACR", m_cacr);
+ state_add(M68K_CAAR, "CAAR", m_caar);
}
- if (cpu_type & MASK_030_OR_LATER)
+ if (m_cpu_type & MASK_030_OR_LATER)
{
for (int regnum = 0; regnum < 8; regnum++) {
- state_add(M68K_FP0 + regnum, string_format("FP%d", regnum).c_str(), iotemp).callimport().callexport().formatstr("%10s");
+ state_add(M68K_FP0 + regnum, string_format("FP%d", regnum).c_str(), m_iotemp).callimport().callexport().formatstr("%10s");
}
- state_add(M68K_FPSR, "FPSR", fpsr);
- state_add(M68K_FPCR, "FPCR", fpcr);
+ state_add(M68K_FPSR, "FPSR", m_fpsr);
+ state_add(M68K_FPCR, "FPCR", m_fpcr);
}
}
@@ -1761,26 +1740,25 @@ void m68000_base_device::init_cpu_m68000(void)
{
init_cpu_common();
- cpu_type = CPU_TYPE_000;
-// dasm_type = M68K_CPU_TYPE_68000;
-
- init16(*program, *oprogram);
- sr_mask = 0xa71f; /* T1 -- S -- -- I2 I1 I0 -- -- -- X N Z V C */
- jump_table = m68ki_instruction_jump_table[0];
- cyc_instruction = m68ki_cycles[0];
- cyc_exception = m68ki_exception_cycle_table[0];
- cyc_bcc_notake_b = -2;
- cyc_bcc_notake_w = 2;
- cyc_dbcc_f_noexp = -2;
- cyc_dbcc_f_exp = 2;
- cyc_scc_r_true = 2;
- cyc_movem_w = 2;
- cyc_movem_l = 3;
- cyc_shift = 1;
- cyc_reset = 132;
- has_pmmu = 0;
- has_hmmu = 0;
- has_fpu = 0;
+ m_cpu_type = CPU_TYPE_000;
+
+ init16(*m_program, *m_oprogram);
+ m_sr_mask = 0xa71f; /* T1 -- S -- -- I2 I1 I0 -- -- -- X N Z V C */
+ m_jump_table = m68ki_instruction_jump_table[0];
+ m_cyc_instruction = m68ki_cycles[0];
+ m_cyc_exception = m68ki_exception_cycle_table[0];
+ m_cyc_bcc_notake_b = -2;
+ m_cyc_bcc_notake_w = 2;
+ m_cyc_dbcc_f_noexp = -2;
+ m_cyc_dbcc_f_exp = 2;
+ m_cyc_scc_r_true = 2;
+ m_cyc_movem_w = 2;
+ m_cyc_movem_l = 3;
+ m_cyc_shift = 1;
+ m_cyc_reset = 132;
+ m_has_pmmu = 0;
+ m_has_hmmu = 0;
+ m_has_fpu = 0;
define_state();
@@ -1791,25 +1769,24 @@ void m68000_base_device::init_cpu_m68008(void)
{
init_cpu_common();
- cpu_type = CPU_TYPE_008;
-// dasm_type = M68K_CPU_TYPE_68008;
-
- init8(*program, *oprogram);
- sr_mask = 0xa71f; /* T1 -- S -- -- I2 I1 I0 -- -- -- X N Z V C */
- jump_table = m68ki_instruction_jump_table[0];
- cyc_instruction = m68ki_cycles[0];
- cyc_exception = m68ki_exception_cycle_table[0];
- cyc_bcc_notake_b = -2;
- cyc_bcc_notake_w = 2;
- cyc_dbcc_f_noexp = -2;
- cyc_dbcc_f_exp = 2;
- cyc_scc_r_true = 2;
- cyc_movem_w = 2;
- cyc_movem_l = 3;
- cyc_shift = 1;
- cyc_reset = 132;
- has_pmmu = 0;
- has_fpu = 0;
+ m_cpu_type = CPU_TYPE_008;
+
+ init8(*m_program, *m_oprogram);
+ m_sr_mask = 0xa71f; /* T1 -- S -- -- I2 I1 I0 -- -- -- X N Z V C */
+ m_jump_table = m68ki_instruction_jump_table[0];
+ m_cyc_instruction = m68ki_cycles[0];
+ m_cyc_exception = m68ki_exception_cycle_table[0];
+ m_cyc_bcc_notake_b = -2;
+ m_cyc_bcc_notake_w = 2;
+ m_cyc_dbcc_f_noexp = -2;
+ m_cyc_dbcc_f_exp = 2;
+ m_cyc_scc_r_true = 2;
+ m_cyc_movem_w = 2;
+ m_cyc_movem_l = 3;
+ m_cyc_shift = 1;
+ m_cyc_reset = 132;
+ m_has_pmmu = 0;
+ m_has_fpu = 0;
define_state();
@@ -1819,25 +1796,24 @@ void m68000_base_device::init_cpu_m68008(void)
void m68000_base_device::init_cpu_m68010(void)
{
init_cpu_common();
- cpu_type = CPU_TYPE_010;
-// dasm_type = M68K_CPU_TYPE_68010;
-
- init16(*program, *oprogram);
- sr_mask = 0xa71f; /* T1 -- S -- -- I2 I1 I0 -- -- -- X N Z V C */
- jump_table = m68ki_instruction_jump_table[1];
- cyc_instruction = m68ki_cycles[1];
- cyc_exception = m68ki_exception_cycle_table[1];
- cyc_bcc_notake_b = -4;
- cyc_bcc_notake_w = 0;
- cyc_dbcc_f_noexp = 0;
- cyc_dbcc_f_exp = 6;
- cyc_scc_r_true = 0;
- cyc_movem_w = 2;
- cyc_movem_l = 3;
- cyc_shift = 1;
- cyc_reset = 130;
- has_pmmu = 0;
- has_fpu = 0;
+ m_cpu_type = CPU_TYPE_010;
+
+ init16(*m_program, *m_oprogram);
+ m_sr_mask = 0xa71f; /* T1 -- S -- -- I2 I1 I0 -- -- -- X N Z V C */
+ m_jump_table = m68ki_instruction_jump_table[1];
+ m_cyc_instruction = m68ki_cycles[1];
+ m_cyc_exception = m68ki_exception_cycle_table[1];
+ m_cyc_bcc_notake_b = -4;
+ m_cyc_bcc_notake_w = 0;
+ m_cyc_dbcc_f_noexp = 0;
+ m_cyc_dbcc_f_exp = 6;
+ m_cyc_scc_r_true = 0;
+ m_cyc_movem_w = 2;
+ m_cyc_movem_l = 3;
+ m_cyc_shift = 1;
+ m_cyc_reset = 130;
+ m_has_pmmu = 0;
+ m_has_fpu = 0;
define_state();
}
@@ -1846,23 +1822,22 @@ void m68000_base_device::init_cpu_m68010(void)
void m68000_base_device::init_cpu_m68020(void)
{
init_cpu_common();
- cpu_type = CPU_TYPE_020;
-// dasm_type = M68K_CPU_TYPE_68020;
-
- init32(*program, *oprogram);
- sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
- jump_table = m68ki_instruction_jump_table[2];
- cyc_instruction = m68ki_cycles[2];
- cyc_exception = m68ki_exception_cycle_table[2];
- cyc_bcc_notake_b = -2;
- cyc_bcc_notake_w = 0;
- cyc_dbcc_f_noexp = 0;
- cyc_dbcc_f_exp = 4;
- cyc_scc_r_true = 0;
- cyc_movem_w = 2;
- cyc_movem_l = 2;
- cyc_shift = 0;
- cyc_reset = 518;
+ m_cpu_type = CPU_TYPE_020;
+
+ init32(*m_program, *m_oprogram);
+ m_sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
+ m_jump_table = m68ki_instruction_jump_table[2];
+ m_cyc_instruction = m68ki_cycles[2];
+ m_cyc_exception = m68ki_exception_cycle_table[2];
+ m_cyc_bcc_notake_b = -2;
+ m_cyc_bcc_notake_w = 0;
+ m_cyc_dbcc_f_noexp = 0;
+ m_cyc_dbcc_f_exp = 4;
+ m_cyc_scc_r_true = 0;
+ m_cyc_movem_w = 2;
+ m_cyc_movem_l = 2;
+ m_cyc_shift = 0;
+ m_cyc_reset = 518;
define_state();
}
@@ -1871,18 +1846,18 @@ void m68000_base_device::init_cpu_m68020fpu(void)
{
init_cpu_m68020();
- has_fpu = 1;
+ m_has_fpu = 1;
}
void m68000_base_device::init_cpu_m68020pmmu(void)
{
init_cpu_m68020();
- has_pmmu = 1;
- has_fpu = 1;
+ m_has_pmmu = 1;
+ m_has_fpu = 1;
- init32mmu(*program, *oprogram);
+ init32mmu(*m_program, *m_oprogram);
}
@@ -1891,37 +1866,36 @@ void m68000_base_device::init_cpu_m68020hmmu(void)
{
init_cpu_m68020();
- has_hmmu = 1;
- has_fpu = 1;
+ m_has_hmmu = 1;
+ m_has_fpu = 1;
- init32hmmu(*program, *oprogram);
+ init32hmmu(*m_program, *m_oprogram);
}
void m68000_base_device::init_cpu_m68ec020(void)
{
init_cpu_common();
- cpu_type = CPU_TYPE_EC020;
-// dasm_type = M68K_CPU_TYPE_68EC020;
-
-
- init32(*program, *oprogram);
- sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
- jump_table = m68ki_instruction_jump_table[2];
- cyc_instruction = m68ki_cycles[2];
- cyc_exception = m68ki_exception_cycle_table[2];
- cyc_bcc_notake_b = -2;
- cyc_bcc_notake_w = 0;
- cyc_dbcc_f_noexp = 0;
- cyc_dbcc_f_exp = 4;
- cyc_scc_r_true = 0;
- cyc_movem_w = 2;
- cyc_movem_l = 2;
- cyc_shift = 0;
- cyc_reset = 518;
- has_pmmu = 0;
- has_fpu = 0;
+ m_cpu_type = CPU_TYPE_EC020;
+
+
+ init32(*m_program, *m_oprogram);
+ m_sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
+ m_jump_table = m68ki_instruction_jump_table[2];
+ m_cyc_instruction = m68ki_cycles[2];
+ m_cyc_exception = m68ki_exception_cycle_table[2];
+ m_cyc_bcc_notake_b = -2;
+ m_cyc_bcc_notake_w = 0;
+ m_cyc_dbcc_f_noexp = 0;
+ m_cyc_dbcc_f_exp = 4;
+ m_cyc_scc_r_true = 0;
+ m_cyc_movem_w = 2;
+ m_cyc_movem_l = 2;
+ m_cyc_shift = 0;
+ m_cyc_reset = 518;
+ m_has_pmmu = 0;
+ m_has_fpu = 0;
define_state();
}
@@ -1931,26 +1905,25 @@ void m68000_base_device::init_cpu_m68030(void)
{
init_cpu_common();
- cpu_type = CPU_TYPE_030;
-// dasm_type = M68K_CPU_TYPE_68030;
-
-
- init32mmu(*program, *oprogram);
- sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
- jump_table = m68ki_instruction_jump_table[3];
- cyc_instruction = m68ki_cycles[3];
- cyc_exception = m68ki_exception_cycle_table[3];
- cyc_bcc_notake_b = -2;
- cyc_bcc_notake_w = 0;
- cyc_dbcc_f_noexp = 0;
- cyc_dbcc_f_exp = 4;
- cyc_scc_r_true = 0;
- cyc_movem_w = 2;
- cyc_movem_l = 2;
- cyc_shift = 0;
- cyc_reset = 518;
- has_pmmu = 1;
- has_fpu = 1;
+ m_cpu_type = CPU_TYPE_030;
+
+
+ init32mmu(*m_program, *m_oprogram);
+ m_sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
+ m_jump_table = m68ki_instruction_jump_table[3];
+ m_cyc_instruction = m68ki_cycles[3];
+ m_cyc_exception = m68ki_exception_cycle_table[3];
+ m_cyc_bcc_notake_b = -2;
+ m_cyc_bcc_notake_w = 0;
+ m_cyc_dbcc_f_noexp = 0;
+ m_cyc_dbcc_f_exp = 4;
+ m_cyc_scc_r_true = 0;
+ m_cyc_movem_w = 2;
+ m_cyc_movem_l = 2;
+ m_cyc_shift = 0;
+ m_cyc_reset = 518;
+ m_has_pmmu = 1;
+ m_has_fpu = 1;
define_state();
}
@@ -1961,26 +1934,25 @@ void m68000_base_device::init_cpu_m68ec030(void)
{
init_cpu_common();
- cpu_type = CPU_TYPE_EC030;
-// dasm_type = M68K_CPU_TYPE_68EC030;
-
-
- init32(*program, *oprogram);
- sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
- jump_table = m68ki_instruction_jump_table[3];
- cyc_instruction = m68ki_cycles[3];
- cyc_exception = m68ki_exception_cycle_table[3];
- cyc_bcc_notake_b = -2;
- cyc_bcc_notake_w = 0;
- cyc_dbcc_f_noexp = 0;
- cyc_dbcc_f_exp = 4;
- cyc_scc_r_true = 0;
- cyc_movem_w = 2;
- cyc_movem_l = 2;
- cyc_shift = 0;
- cyc_reset = 518;
- has_pmmu = 0; /* EC030 lacks the PMMU and is effectively a die-shrink 68020 */
- has_fpu = 1;
+ m_cpu_type = CPU_TYPE_EC030;
+
+
+ init32(*m_program, *m_oprogram);
+ m_sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
+ m_jump_table = m68ki_instruction_jump_table[3];
+ m_cyc_instruction = m68ki_cycles[3];
+ m_cyc_exception = m68ki_exception_cycle_table[3];
+ m_cyc_bcc_notake_b = -2;
+ m_cyc_bcc_notake_w = 0;
+ m_cyc_dbcc_f_noexp = 0;
+ m_cyc_dbcc_f_exp = 4;
+ m_cyc_scc_r_true = 0;
+ m_cyc_movem_w = 2;
+ m_cyc_movem_l = 2;
+ m_cyc_shift = 0;
+ m_cyc_reset = 518;
+ m_has_pmmu = 0; /* EC030 lacks the PMMU and is effectively a die-shrink 68020 */
+ m_has_fpu = 1;
define_state();
}
@@ -1991,26 +1963,25 @@ void m68000_base_device::init_cpu_m68040(void)
{
init_cpu_common();
- cpu_type = CPU_TYPE_040;
-// dasm_type = M68K_CPU_TYPE_68040;
-
-
- init32mmu(*program, *oprogram);
- sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
- jump_table = m68ki_instruction_jump_table[4];
- cyc_instruction = m68ki_cycles[4];
- cyc_exception = m68ki_exception_cycle_table[4];
- cyc_bcc_notake_b = -2;
- cyc_bcc_notake_w = 0;
- cyc_dbcc_f_noexp = 0;
- cyc_dbcc_f_exp = 4;
- cyc_scc_r_true = 0;
- cyc_movem_w = 2;
- cyc_movem_l = 2;
- cyc_shift = 0;
- cyc_reset = 518;
- has_pmmu = 1;
- has_fpu = 1;
+ m_cpu_type = CPU_TYPE_040;
+
+
+ init32mmu(*m_program, *m_oprogram);
+ m_sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
+ m_jump_table = m68ki_instruction_jump_table[4];
+ m_cyc_instruction = m68ki_cycles[4];
+ m_cyc_exception = m68ki_exception_cycle_table[4];
+ m_cyc_bcc_notake_b = -2;
+ m_cyc_bcc_notake_w = 0;
+ m_cyc_dbcc_f_noexp = 0;
+ m_cyc_dbcc_f_exp = 4;
+ m_cyc_scc_r_true = 0;
+ m_cyc_movem_w = 2;
+ m_cyc_movem_l = 2;
+ m_cyc_shift = 0;
+ m_cyc_reset = 518;
+ m_has_pmmu = 1;
+ m_has_fpu = 1;
define_state();
}
@@ -2020,26 +1991,25 @@ void m68000_base_device::init_cpu_m68ec040(void)
{
init_cpu_common();
- cpu_type = CPU_TYPE_EC040;
-// dasm_type = M68K_CPU_TYPE_68EC040;
-
-
- init32(*program, *oprogram);
- sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
- jump_table = m68ki_instruction_jump_table[4];
- cyc_instruction = m68ki_cycles[4];
- cyc_exception = m68ki_exception_cycle_table[4];
- cyc_bcc_notake_b = -2;
- cyc_bcc_notake_w = 0;
- cyc_dbcc_f_noexp = 0;
- cyc_dbcc_f_exp = 4;
- cyc_scc_r_true = 0;
- cyc_movem_w = 2;
- cyc_movem_l = 2;
- cyc_shift = 0;
- cyc_reset = 518;
- has_pmmu = 0;
- has_fpu = 0;
+ m_cpu_type = CPU_TYPE_EC040;
+
+
+ init32(*m_program, *m_oprogram);
+ m_sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
+ m_jump_table = m68ki_instruction_jump_table[4];
+ m_cyc_instruction = m68ki_cycles[4];
+ m_cyc_exception = m68ki_exception_cycle_table[4];
+ m_cyc_bcc_notake_b = -2;
+ m_cyc_bcc_notake_w = 0;
+ m_cyc_dbcc_f_noexp = 0;
+ m_cyc_dbcc_f_exp = 4;
+ m_cyc_scc_r_true = 0;
+ m_cyc_movem_w = 2;
+ m_cyc_movem_l = 2;
+ m_cyc_shift = 0;
+ m_cyc_reset = 518;
+ m_has_pmmu = 0;
+ m_has_fpu = 0;
define_state();
}
@@ -2049,26 +2019,25 @@ void m68000_base_device::init_cpu_m68lc040(void)
{
init_cpu_common();
- cpu_type = CPU_TYPE_LC040;
-// dasm_type = M68K_CPU_TYPE_68LC040;
-
-
- init32mmu(*program, *oprogram);
- sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
- jump_table = m68ki_instruction_jump_table[4];
- cyc_instruction = m68ki_cycles[4];
- cyc_exception = m68ki_exception_cycle_table[4];
- cyc_bcc_notake_b = -2;
- cyc_bcc_notake_w = 0;
- cyc_dbcc_f_noexp = 0;
- cyc_dbcc_f_exp = 4;
- cyc_scc_r_true = 0;
- cyc_movem_w = 2;
- cyc_movem_l = 2;
- cyc_shift = 0;
- cyc_reset = 518;
- has_pmmu = 1;
- has_fpu = 0;
+ m_cpu_type = CPU_TYPE_LC040;
+
+
+ init32mmu(*m_program, *m_oprogram);
+ m_sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
+ m_jump_table = m68ki_instruction_jump_table[4];
+ m_cyc_instruction = m68ki_cycles[4];
+ m_cyc_exception = m68ki_exception_cycle_table[4];
+ m_cyc_bcc_notake_b = -2;
+ m_cyc_bcc_notake_w = 0;
+ m_cyc_dbcc_f_noexp = 0;
+ m_cyc_dbcc_f_exp = 4;
+ m_cyc_scc_r_true = 0;
+ m_cyc_movem_w = 2;
+ m_cyc_movem_l = 2;
+ m_cyc_shift = 0;
+ m_cyc_reset = 518;
+ m_has_pmmu = 1;
+ m_has_fpu = 0;
define_state();
}
@@ -2077,7 +2046,7 @@ void m68000_base_device::init_cpu_m68lc040(void)
void m68000_base_device::init_cpu_scc68070(void)
{
init_cpu_m68010();
- cpu_type = CPU_TYPE_SCC070;
+ m_cpu_type = CPU_TYPE_SCC070;
}
@@ -2085,24 +2054,23 @@ void m68000_base_device::init_cpu_fscpu32(void)
{
init_cpu_common();
- cpu_type = CPU_TYPE_FSCPU32;
-// dasm_type = M68K_CPU_TYPE_FSCPU32;
-
-
- init32(*program, *oprogram);
- sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
- jump_table = m68ki_instruction_jump_table[5];
- cyc_instruction = m68ki_cycles[5];
- cyc_exception = m68ki_exception_cycle_table[5];
- cyc_bcc_notake_b = -2;
- cyc_bcc_notake_w = 0;
- cyc_dbcc_f_noexp = 0;
- cyc_dbcc_f_exp = 4;
- cyc_scc_r_true = 0;
- cyc_movem_w = 2;
- cyc_movem_l = 2;
- cyc_shift = 0;
- cyc_reset = 518;
+ m_cpu_type = CPU_TYPE_FSCPU32;
+
+
+ init32(*m_program, *m_oprogram);
+ m_sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
+ m_jump_table = m68ki_instruction_jump_table[5];
+ m_cyc_instruction = m68ki_cycles[5];
+ m_cyc_exception = m68ki_exception_cycle_table[5];
+ m_cyc_bcc_notake_b = -2;
+ m_cyc_bcc_notake_w = 0;
+ m_cyc_dbcc_f_noexp = 0;
+ m_cyc_dbcc_f_exp = 4;
+ m_cyc_scc_r_true = 0;
+ m_cyc_movem_w = 2;
+ m_cyc_movem_l = 2;
+ m_cyc_shift = 0;
+ m_cyc_reset = 518;
define_state();
}
@@ -2113,24 +2081,23 @@ void m68000_base_device::init_cpu_coldfire(void)
{
init_cpu_common();
- cpu_type = CPU_TYPE_COLDFIRE;
-// dasm_type = M68K_CPU_TYPE_COLDFIRE;
-
-
- init32(*program, *oprogram);
- sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
- jump_table = m68ki_instruction_jump_table[6];
- cyc_instruction = m68ki_cycles[6];
- cyc_exception = m68ki_exception_cycle_table[6];
- cyc_bcc_notake_b = -2;
- cyc_bcc_notake_w = 0;
- cyc_dbcc_f_noexp = 0;
- cyc_dbcc_f_exp = 4;
- cyc_scc_r_true = 0;
- cyc_movem_w = 2;
- cyc_movem_l = 2;
- cyc_shift = 0;
- cyc_reset = 518;
+ m_cpu_type = CPU_TYPE_COLDFIRE;
+
+
+ init32(*m_program, *m_oprogram);
+ m_sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
+ m_jump_table = m68ki_instruction_jump_table[6];
+ m_cyc_instruction = m68ki_cycles[6];
+ m_cyc_exception = m68ki_exception_cycle_table[6];
+ m_cyc_bcc_notake_b = -2;
+ m_cyc_bcc_notake_w = 0;
+ m_cyc_dbcc_f_noexp = 0;
+ m_cyc_dbcc_f_exp = 4;
+ m_cyc_scc_r_true = 0;
+ m_cyc_movem_w = 2;
+ m_cyc_movem_l = 2;
+ m_cyc_shift = 0;
+ m_cyc_reset = 518;
define_state();
}
@@ -2232,26 +2199,26 @@ util::disasm_interface *mcf5206e_device::create_disassembler()
/* Service an interrupt request and start exception processing */
-void m68000_base_device::m68ki_exception_interrupt(m68000_base_device *m68k, uint32_t int_level)
+void m68000_base_device::m68ki_exception_interrupt(uint32_t int_level)
{
uint32_t vector;
uint32_t sr;
uint32_t new_pc;
- if(CPU_TYPE_IS_000(cpu_type))
+ if(CPU_TYPE_IS_000())
{
- instr_mode = INSTRUCTION_NO;
+ m_instr_mode = INSTRUCTION_NO;
}
- /* Turn off the stopped state */
- stopped &= ~STOP_LEVEL_STOP;
+ /* Turn off the m_stopped state */
+ m_stopped &= ~STOP_LEVEL_STOP;
/* If we are halted, don't do anything */
- if(stopped)
+ if(m_stopped)
return;
/* Acknowledge the interrupt */
- vector = int_ack_callback(*this, int_level);
+ vector = m_int_ack_callback(*this, int_level);
/* Get the interrupt vector */
if(vector == M68K_INT_ACK_AUTOVECTOR)
@@ -2264,52 +2231,39 @@ void m68000_base_device::m68ki_exception_interrupt(m68000_base_device *m68k, uin
return;
/* Start exception processing */
- sr = m68ki_init_exception(m68k);
+ sr = m68ki_init_exception();
/* Set the interrupt mask to the level of the one being serviced */
- int_mask = int_level<<8;
+ m_int_mask = int_level<<8;
/* Get the new PC */
- new_pc = m68ki_read_data_32(this, (vector<<2) + vbr);
+ new_pc = m68ki_read_data_32((vector<<2) + m_vbr);
/* If vector is uninitialized, call the uninitialized interrupt vector */
if(new_pc == 0)
- new_pc = m68ki_read_data_32(this, (EXCEPTION_UNINITIALIZED_INTERRUPT<<2) + vbr);
+ new_pc = m68ki_read_data_32((EXCEPTION_UNINITIALIZED_INTERRUPT<<2) + m_vbr);
/* Generate a stack frame */
- m68ki_stack_frame_0000(this, REG_PC(m68k), sr, vector);
- if(m_flag && CPU_TYPE_IS_EC020_PLUS(cpu_type))
+ m68ki_stack_frame_0000(m_pc, sr, vector);
+ if(m_m_flag && CPU_TYPE_IS_EC020_PLUS())
{
/* Create throwaway frame */
- m68ki_set_sm_flag(this, s_flag); /* clear M */
+ m68ki_set_sm_flag(m_s_flag); /* clear M */
sr |= 0x2000; /* Same as SR in master stack frame except S is forced high */
- m68ki_stack_frame_0001(this, REG_PC(m68k), sr, vector);
+ m68ki_stack_frame_0001(m_pc, sr, vector);
}
- m68ki_jump(this, new_pc);
+ m68ki_jump(new_pc);
/* Defer cycle counting until later */
- remaining_cycles -= cyc_exception[vector];
+ m_remaining_cycles -= m_cyc_exception[vector];
}
-DEFINE_DEVICE_TYPE(M68K, m68000_base_device, "m68k", "M68K")
-
//-------------------------------------------------
-// h6280_device - constructor
+// m68000_base_device - constructor
//-------------------------------------------------
-m68000_base_device::m68000_base_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : cpu_device(mconfig, M68K, tag, owner, clock),
- m_program_config("program", ENDIANNESS_BIG, 16, 24),
- m_oprogram_config("decrypted_opcodes", ENDIANNESS_BIG, 16, 24)
-{
- clear_all();
-}
-
-
-
-
m68000_base_device::m68000_base_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock,
const device_type type, uint32_t prg_data_width, uint32_t prg_address_bits, address_map_constructor internal_map)
: cpu_device(mconfig, type, tag, owner, clock),
@@ -2331,146 +2285,136 @@ m68000_base_device::m68000_base_device(const machine_config &mconfig, const char
void m68000_base_device::clear_all()
{
- cpu_type= 0;
-// dasm_type= 0;
- for (auto & elem : dar)
+ m_cpu_type= 0;
+//
+ for (auto & elem : m_dar)
elem= 0;
- ppc= 0;
- pc= 0;
- for (auto & elem : sp)
+ m_ppc= 0;
+ m_pc= 0;
+ for (auto & elem : m_sp)
elem= 0;
- vbr= 0;
- sfc= 0;
- dfc= 0;
- cacr= 0;
- caar= 0;
- ir= 0;
+ m_vbr= 0;
+ m_sfc= 0;
+ m_dfc= 0;
+ m_cacr= 0;
+ m_caar= 0;
+ m_ir= 0;
// for (int i=0;i<8;i++)
-// fpr[i]= 0;
- fpiar= 0;
- fpsr= 0;
- fpcr= 0;
- t1_flag= 0;
- t0_flag= 0;
- s_flag= 0;
- m_flag= 0;
- x_flag= 0;
- n_flag= 0;
- not_z_flag= 0;
- v_flag= 0;
- c_flag= 0;
- int_mask= 0;
- int_level= 0;
- stopped= 0;
- pref_addr= 0;
- pref_data= 0;
- sr_mask= 0;
- instr_mode= 0;
- run_mode= 0;
- has_pmmu= 0;
- has_hmmu= 0;
- pmmu_enabled= 0;
- hmmu_enabled= 0;
- has_fpu= 0;
- fpu_just_reset= 0;
-
- cyc_bcc_notake_b = 0;
- cyc_bcc_notake_w = 0;
- cyc_dbcc_f_noexp = 0;
- cyc_dbcc_f_exp = 0;
- cyc_scc_r_true = 0;
- cyc_movem_w = 0;
- cyc_movem_l = 0;
- cyc_shift = 0;
- cyc_reset = 0;
-
- initial_cycles = 0;
- remaining_cycles = 0;
- reset_cycles = 0;
- tracing = 0;
+// m_fpr[i]= 0;
+ m_fpiar= 0;
+ m_fpsr= 0;
+ m_fpcr= 0;
+ m_t1_flag= 0;
+ m_t0_flag= 0;
+ m_s_flag= 0;
+ m_m_flag= 0;
+ m_x_flag= 0;
+ m_n_flag= 0;
+ m_not_z_flag= 0;
+ m_v_flag= 0;
+ m_c_flag= 0;
+ m_int_mask= 0;
+ m_int_level= 0;
+ m_stopped= 0;
+ m_pref_addr= 0;
+ m_pref_data= 0;
+ m_sr_mask= 0;
+ m_instr_mode= 0;
+ m_run_mode= 0;
+ m_has_pmmu= 0;
+ m_has_hmmu= 0;
+ m_pmmu_enabled= 0;
+ m_hmmu_enabled= 0;
+ m_has_fpu= 0;
+ m_fpu_just_reset= 0;
+
+ m_cyc_bcc_notake_b = 0;
+ m_cyc_bcc_notake_w = 0;
+ m_cyc_dbcc_f_noexp = 0;
+ m_cyc_dbcc_f_exp = 0;
+ m_cyc_scc_r_true = 0;
+ m_cyc_movem_w = 0;
+ m_cyc_movem_l = 0;
+ m_cyc_shift = 0;
+ m_cyc_reset = 0;
+
+ m_initial_cycles = 0;
+ m_remaining_cycles = 0;
+ m_reset_cycles = 0;
+ m_tracing = 0;
m_address_error = 0;
- aerr_address = 0;
- aerr_write_mode = 0;
- aerr_fc = 0;
+ m_aerr_address = 0;
+ m_aerr_write_mode = 0;
+ m_aerr_fc = 0;
- virq_state = 0;
- nmi_pending = 0;
+ m_virq_state = 0;
+ m_nmi_pending = 0;
- cyc_instruction = nullptr;
- cyc_exception = nullptr;
+ m_cyc_instruction = nullptr;
+ m_cyc_exception = nullptr;
- int_ack_callback = device_irq_acknowledge_delegate();
- program = nullptr;
+ m_int_ack_callback = device_irq_acknowledge_delegate();
+ m_program = nullptr;
- opcode_xor = 0;
-// readimm16 = 0;
-// read8 = 0;
-// read16 = 0;
-// read32 = 0;
-// write8 = 0;
-// write16 = 0;
-// write32 = 0;
+ m_opcode_xor = 0;
+// m_readimm16 = 0;
+// m_read8 = 0;
+// m_read16 = 0;
+// m_read32 = 0;
+// m_write8 = 0;
+// m_write16 = 0;
+// m_write32 = 0;
m_space = nullptr;
m_direct = nullptr;
- iotemp = 0;
+ m_iotemp = 0;
- save_sr = 0;
- save_stopped = 0;
- save_halted = 0;
+ m_save_sr = 0;
+ m_save_stopped = 0;
+ m_save_halted = 0;
- mmu_crp_aptr = mmu_crp_limit = 0;
- mmu_srp_aptr = mmu_srp_limit = 0;
- mmu_urp_aptr = 0;
- mmu_tc = 0;
- mmu_sr = 0;
- mmu_sr_040 = 0;
+ m_mmu_crp_aptr = m_mmu_crp_limit = 0;
+ m_mmu_srp_aptr = m_mmu_srp_limit = 0;
+ m_mmu_urp_aptr = 0;
+ m_mmu_tc = 0;
+ m_mmu_sr = 0;
+ m_mmu_sr_040 = 0;
for (int i=0; i<MMU_ATC_ENTRIES;i++)
- mmu_atc_tag[i] = mmu_atc_data[i] = 0;
-
- mmu_atc_rr = 0;
- mmu_tt0 = mmu_tt1 = 0;
- mmu_itt0 = mmu_itt1 = mmu_dtt0 = mmu_dtt1 = 0;
- mmu_acr0= mmu_acr1 = mmu_acr2 = mmu_acr3 = 0;
- mmu_tmp_sr = 0;
- mmu_tmp_fc = 0;
- mmu_tmp_rw = 0;
- mmu_tmp_buserror_address = 0;
- mmu_tmp_buserror_occurred = 0;
- mmu_tmp_buserror_fc = 0;
- mmu_tmp_buserror_rw = 0;
+ m_mmu_atc_tag[i] = m_mmu_atc_data[i] = 0;
+
+ m_mmu_atc_rr = 0;
+ m_mmu_tt0 = m_mmu_tt1 = 0;
+ m_mmu_itt0 = m_mmu_itt1 = m_mmu_dtt0 = m_mmu_dtt1 = 0;
+ m_mmu_acr0 = m_mmu_acr1 = m_mmu_acr2 = m_mmu_acr3 = 0;
+ m_mmu_tmp_sr = 0;
+ m_mmu_tmp_fc = 0;
+ m_mmu_tmp_rw = 0;
+ m_mmu_tmp_buserror_address = 0;
+ m_mmu_tmp_buserror_occurred = 0;
+ m_mmu_tmp_buserror_fc = 0;
+ m_mmu_tmp_buserror_rw = 0;
for (int i=0;i<M68K_IC_SIZE;i++)
{
- ic_address[i] = 0;
- ic_data[i] = 0;
- ic_valid[i] = false;
+ m_ic_address[i] = 0;
+ m_ic_data[i] = 0;
+ m_ic_valid[i] = false;
}
- internal = nullptr;
+ m_internal = nullptr;
}
-void m68000_base_device::execute_run()
-{
- cpu_execute();
-}
-
void m68000_base_device::device_start()
{
}
-void m68000_base_device::device_reset()
-{
- reset_cpu();
-}
-
void m68000_base_device::device_stop()
{
}
@@ -2492,13 +2436,13 @@ void m68000_base_device::execute_set_input(int inputnum, int state)
case M68K_IRQ_6:
case M68K_IRQ_7:
case INPUT_LINE_NMI:
- set_irq_line(this, inputnum, state);
+ set_irq_line(inputnum, state);
break;
case M68K_LINE_BUSERROR:
if (state == ASSERT_LINE)
{
- m68k_cause_bus_error(this);
+ m68k_cause_bus_error();
}
break;
}
@@ -2653,9 +2597,9 @@ bool m68020hmmu_device::memory_translate(int space, int intention, offs_t &addre
{
/* only applies to the program address space and only does something if the MMU's enabled */
{
- if ((space == AS_PROGRAM) && (hmmu_enabled))
+ if ((space == AS_PROGRAM) && (m_hmmu_enabled))
{
- address = hmmu_translate_addr(this, address);
+ address = hmmu_translate_addr(address);
}
}
return true;
diff --git a/src/devices/cpu/m68000/m68kcpu.h b/src/devices/cpu/m68000/m68kcpu.h
index dce0c2205a8..4c6db9f4490 100644
--- a/src/devices/cpu/m68000/m68kcpu.h
+++ b/src/devices/cpu/m68000/m68kcpu.h
@@ -17,18 +17,11 @@
#pragma once
-
-class m68000_base_device;
-
-#include "m68000.h"
-
-
#include <limits.h>
#if defined(__sun__) && defined(__svr4__)
#undef REG_SP
#undef REG_PC
-#undef REG_FP
#endif
/* ======================================================================== */
@@ -36,9 +29,9 @@ class m68000_base_device;
/* ======================================================================== */
/* Check for > 32bit sizes */
-#define MAKE_INT_8(A) (int8_t)(A)
-#define MAKE_INT_16(A) (int16_t)(A)
-#define MAKE_INT_32(A) (int32_t)(A)
+static constexpr int8_t MAKE_INT_8(uint32_t A) { return (int8_t)(A); }
+static constexpr int16_t MAKE_INT_16(uint32_t A) { return (int16_t)(A); }
+static constexpr int32_t MAKE_INT_32(uint32_t A) { return (int32_t)(A); }
/* ======================================================================== */
@@ -46,65 +39,65 @@ class m68000_base_device;
/* ======================================================================== */
/* Exception Vectors handled by emulation */
-#define EXCEPTION_RESET 0
-#define EXCEPTION_BUS_ERROR 2 /* This one is not emulated! */
-#define EXCEPTION_ADDRESS_ERROR 3 /* This one is partially emulated (doesn't stack a proper frame yet) */
-#define EXCEPTION_ILLEGAL_INSTRUCTION 4
-#define EXCEPTION_ZERO_DIVIDE 5
-#define EXCEPTION_CHK 6
-#define EXCEPTION_TRAPV 7
-#define EXCEPTION_PRIVILEGE_VIOLATION 8
-#define EXCEPTION_TRACE 9
-#define EXCEPTION_1010 10
-#define EXCEPTION_1111 11
-#define EXCEPTION_FORMAT_ERROR 14
-#define EXCEPTION_UNINITIALIZED_INTERRUPT 15
-#define EXCEPTION_SPURIOUS_INTERRUPT 24
-#define EXCEPTION_INTERRUPT_AUTOVECTOR 24
-#define EXCEPTION_TRAP_BASE 32
+static constexpr int EXCEPTION_RESET = 0;
+static constexpr int EXCEPTION_BUS_ERROR = 2; /* This one is not emulated! */
+static constexpr int EXCEPTION_ADDRESS_ERROR = 3; /* This one is partially emulated (doesn't stack a proper frame yet) */
+static constexpr int EXCEPTION_ILLEGAL_INSTRUCTION = 4;
+static constexpr int EXCEPTION_ZERO_DIVIDE = 5;
+static constexpr int EXCEPTION_CHK = 6;
+static constexpr int EXCEPTION_TRAPV = 7;
+static constexpr int EXCEPTION_PRIVILEGE_VIOLATION = 8;
+static constexpr int EXCEPTION_TRACE = 9;
+static constexpr int EXCEPTION_1010 = 10;
+static constexpr int EXCEPTION_1111 = 11;
+static constexpr int EXCEPTION_FORMAT_ERROR = 14;
+static constexpr int EXCEPTION_UNINITIALIZED_INTERRUPT = 15;
+static constexpr int EXCEPTION_SPURIOUS_INTERRUPT = 24;
+static constexpr int EXCEPTION_INTERRUPT_AUTOVECTOR = 24;
+static constexpr int EXCEPTION_TRAP_BASE = 32;
/* Function codes set by CPU during data/address bus activity */
-#define FUNCTION_CODE_USER_DATA 1
-#define FUNCTION_CODE_USER_PROGRAM 2
-#define FUNCTION_CODE_SUPERVISOR_DATA 5
-#define FUNCTION_CODE_SUPERVISOR_PROGRAM 6
-#define FUNCTION_CODE_CPU_SPACE 7
+static constexpr int FUNCTION_CODE_USER_DATA = 1;
+static constexpr int FUNCTION_CODE_USER_PROGRAM = 2;
+static constexpr int FUNCTION_CODE_SUPERVISOR_DATA = 5;
+static constexpr int FUNCTION_CODE_SUPERVISOR_PROGRAM = 6;
+static constexpr int FUNCTION_CODE_CPU_SPACE = 7;
/* CPU types for deciding what to emulate */
-#define CPU_TYPE_000 (0x00000001)
-#define CPU_TYPE_008 (0x00000002)
-#define CPU_TYPE_010 (0x00000004)
-#define CPU_TYPE_EC020 (0x00000008)
-#define CPU_TYPE_020 (0x00000010)
-#define CPU_TYPE_EC030 (0x00000020)
-#define CPU_TYPE_030 (0x00000040)
-#define CPU_TYPE_EC040 (0x00000080)
-#define CPU_TYPE_LC040 (0x00000100)
-#define CPU_TYPE_040 (0x00000200)
-#define CPU_TYPE_SCC070 (0x00000400)
-#define CPU_TYPE_FSCPU32 (0x00000800)
-#define CPU_TYPE_COLDFIRE (0x00001000)
+static constexpr int CPU_TYPE_000 = (0x00000001);
+static constexpr int CPU_TYPE_008 = (0x00000002);
+static constexpr int CPU_TYPE_010 = (0x00000004);
+static constexpr int CPU_TYPE_EC020 = (0x00000008);
+static constexpr int CPU_TYPE_020 = (0x00000010);
+static constexpr int CPU_TYPE_EC030 = (0x00000020);
+static constexpr int CPU_TYPE_030 = (0x00000040);
+static constexpr int CPU_TYPE_EC040 = (0x00000080);
+static constexpr int CPU_TYPE_LC040 = (0x00000100);
+static constexpr int CPU_TYPE_040 = (0x00000200);
+static constexpr int CPU_TYPE_SCC070 = (0x00000400);
+static constexpr int CPU_TYPE_FSCPU32 = (0x00000800);
+static constexpr int CPU_TYPE_COLDFIRE = (0x00001000);
/* Different ways to stop the CPU */
-#define STOP_LEVEL_STOP 1
-#define STOP_LEVEL_HALT 2
+static constexpr int STOP_LEVEL_STOP = 1;
+static constexpr int STOP_LEVEL_HALT = 2;
/* Used for 68000 address error processing */
-#define INSTRUCTION_YES 0
-#define INSTRUCTION_NO 0x08
-#define MODE_READ 0x10
-#define MODE_WRITE 0
+static constexpr int INSTRUCTION_YES = 0;
+static constexpr int INSTRUCTION_NO = 0x08;
+static constexpr int MODE_READ = 0x10;
+static constexpr int MODE_WRITE = 0;
-#define RUN_MODE_NORMAL 0
-#define RUN_MODE_BERR_AERR_RESET 1
+static constexpr int RUN_MODE_NORMAL = 0;
+static constexpr int RUN_MODE_BERR_AERR_RESET = 1;
-#define M68K_CACR_IBE 0x10 // Instruction Burst Enable
-#define M68K_CACR_CI 0x08 // Clear Instruction Cache
-#define M68K_CACR_CEI 0x04 // Clear Entry in Instruction Cache
-#define M68K_CACR_FI 0x02 // Freeze Instruction Cache
-#define M68K_CACR_EI 0x01 // Enable Instruction Cache
+static constexpr int M68K_CACR_IBE = 0x10; // Instruction Burst Enable
+static constexpr int M68K_CACR_CI = 0x08; // Clear Instruction Cache
+static constexpr int M68K_CACR_CEI = 0x04; // Clear Entry in Instruction Cache
+static constexpr int M68K_CACR_FI = 0x02; // Freeze Instruction Cache
+static constexpr int M68K_CACR_EI = 0x01; // Enable Instruction Cache
/* ======================================================================== */
/* ================================ MACROS ================================ */
@@ -114,112 +107,103 @@ class m68000_base_device;
/* ---------------------------- General Macros ---------------------------- */
/* Bit Isolation Macros */
-#define BIT_0(A) ((A) & 0x00000001)
-#define BIT_1(A) ((A) & 0x00000002)
-#define BIT_2(A) ((A) & 0x00000004)
-#define BIT_3(A) ((A) & 0x00000008)
-#define BIT_4(A) ((A) & 0x00000010)
-#define BIT_5(A) ((A) & 0x00000020)
-#define BIT_6(A) ((A) & 0x00000040)
-#define BIT_7(A) ((A) & 0x00000080)
-#define BIT_8(A) ((A) & 0x00000100)
-#define BIT_9(A) ((A) & 0x00000200)
-#define BIT_A(A) ((A) & 0x00000400)
-#define BIT_B(A) ((A) & 0x00000800)
-#define BIT_C(A) ((A) & 0x00001000)
-#define BIT_D(A) ((A) & 0x00002000)
-#define BIT_E(A) ((A) & 0x00004000)
-#define BIT_F(A) ((A) & 0x00008000)
-#define BIT_10(A) ((A) & 0x00010000)
-#define BIT_11(A) ((A) & 0x00020000)
-#define BIT_12(A) ((A) & 0x00040000)
-#define BIT_13(A) ((A) & 0x00080000)
-#define BIT_14(A) ((A) & 0x00100000)
-#define BIT_15(A) ((A) & 0x00200000)
-#define BIT_16(A) ((A) & 0x00400000)
-#define BIT_17(A) ((A) & 0x00800000)
-#define BIT_18(A) ((A) & 0x01000000)
-#define BIT_19(A) ((A) & 0x02000000)
-#define BIT_1A(A) ((A) & 0x04000000)
-#define BIT_1B(A) ((A) & 0x08000000)
-#define BIT_1C(A) ((A) & 0x10000000)
-#define BIT_1D(A) ((A) & 0x20000000)
-#define BIT_1E(A) ((A) & 0x40000000)
-#define BIT_1F(A) ((A) & 0x80000000)
+static constexpr uint32_t BIT_0(uint32_t A) { return ((A) & 0x00000001); }
+static constexpr uint32_t BIT_1(uint32_t A) { return ((A) & 0x00000002); }
+static constexpr uint32_t BIT_2(uint32_t A) { return ((A) & 0x00000004); }
+static constexpr uint32_t BIT_3(uint32_t A) { return ((A) & 0x00000008); }
+static constexpr uint32_t BIT_4(uint32_t A) { return ((A) & 0x00000010); }
+static constexpr uint32_t BIT_5(uint32_t A) { return ((A) & 0x00000020); }
+static constexpr uint32_t BIT_6(uint32_t A) { return ((A) & 0x00000040); }
+static constexpr uint32_t BIT_7(uint32_t A) { return ((A) & 0x00000080); }
+static constexpr uint32_t BIT_8(uint32_t A) { return ((A) & 0x00000100); }
+static constexpr uint32_t BIT_9(uint32_t A) { return ((A) & 0x00000200); }
+static constexpr uint32_t BIT_A(uint32_t A) { return ((A) & 0x00000400); }
+static constexpr uint32_t BIT_B(uint32_t A) { return ((A) & 0x00000800); }
+static constexpr uint32_t BIT_C(uint32_t A) { return ((A) & 0x00001000); }
+static constexpr uint32_t BIT_D(uint32_t A) { return ((A) & 0x00002000); }
+static constexpr uint32_t BIT_E(uint32_t A) { return ((A) & 0x00004000); }
+static constexpr uint32_t BIT_F(uint32_t A) { return ((A) & 0x00008000); }
+static constexpr uint32_t BIT_10(uint32_t A) { return ((A) & 0x00010000); }
+static constexpr uint32_t BIT_11(uint32_t A) { return ((A) & 0x00020000); }
+static constexpr uint32_t BIT_12(uint32_t A) { return ((A) & 0x00040000); }
+static constexpr uint32_t BIT_13(uint32_t A) { return ((A) & 0x00080000); }
+static constexpr uint32_t BIT_14(uint32_t A) { return ((A) & 0x00100000); }
+static constexpr uint32_t BIT_15(uint32_t A) { return ((A) & 0x00200000); }
+static constexpr uint32_t BIT_16(uint32_t A) { return ((A) & 0x00400000); }
+static constexpr uint32_t BIT_17(uint32_t A) { return ((A) & 0x00800000); }
+static constexpr uint32_t BIT_18(uint32_t A) { return ((A) & 0x01000000); }
+static constexpr uint32_t BIT_19(uint32_t A) { return ((A) & 0x02000000); }
+static constexpr uint32_t BIT_1A(uint32_t A) { return ((A) & 0x04000000); }
+static constexpr uint32_t BIT_1B(uint32_t A) { return ((A) & 0x08000000); }
+static constexpr uint32_t BIT_1C(uint32_t A) { return ((A) & 0x10000000); }
+static constexpr uint32_t BIT_1D(uint32_t A) { return ((A) & 0x20000000); }
+static constexpr uint32_t BIT_1E(uint32_t A) { return ((A) & 0x40000000); }
+static constexpr uint32_t BIT_1F(uint32_t A) { return ((A) & 0x80000000); }
/* Get the most significant bit for specific sizes */
-#define GET_MSB_8(A) ((A) & 0x80)
-#define GET_MSB_9(A) ((A) & 0x100)
-#define GET_MSB_16(A) ((A) & 0x8000)
-#define GET_MSB_17(A) ((A) & 0x10000)
-#define GET_MSB_32(A) ((A) & 0x80000000)
-#define GET_MSB_33(A) ((A) & 0x100000000U)
+static constexpr uint32_t GET_MSB_8(uint32_t A) { return ((A) & 0x80); }
+static constexpr uint32_t GET_MSB_9(uint32_t A) { return ((A) & 0x100); }
+static constexpr uint32_t GET_MSB_16(uint32_t A) { return ((A) & 0x8000); }
+static constexpr uint32_t GET_MSB_17(uint32_t A) { return ((A) & 0x10000); }
+static constexpr uint32_t GET_MSB_32(uint32_t A) { return ((A) & 0x80000000); }
+static constexpr uint64_t GET_MSB_33(uint64_t A) { return ((A) & 0x100000000U); }
/* Isolate nibbles */
-#define LOW_NIBBLE(A) ((A) & 0x0f)
-#define HIGH_NIBBLE(A) ((A) & 0xf0)
+static constexpr uint32_t LOW_NIBBLE(uint32_t A) { return ((A) & 0x0f); }
+static constexpr uint32_t HIGH_NIBBLE(uint32_t A) { return ((A) & 0xf0); }
/* These are used to isolate 8, 16, and 32 bit sizes */
-#define MASK_OUT_ABOVE_2(A) ((A) & 3)
-#define MASK_OUT_ABOVE_8(A) ((A) & 0xff)
-#define MASK_OUT_ABOVE_16(A) ((A) & 0xffff)
-#define MASK_OUT_BELOW_2(A) ((A) & ~3)
-#define MASK_OUT_BELOW_8(A) ((A) & ~0xff)
-#define MASK_OUT_BELOW_16(A) ((A) & ~0xffff)
+static constexpr uint32_t MASK_OUT_ABOVE_2(uint32_t A) { return ((A) & 3); }
+static constexpr uint32_t MASK_OUT_ABOVE_8(uint32_t A) { return ((A) & 0xff); }
+static constexpr uint32_t MASK_OUT_ABOVE_16(uint32_t A) { return ((A) & 0xffff); }
+static constexpr uint32_t MASK_OUT_BELOW_2(uint32_t A) { return ((A) & ~3); }
+static constexpr uint32_t MASK_OUT_BELOW_8(uint32_t A) { return ((A) & ~0xff); }
+static constexpr uint32_t MASK_OUT_BELOW_16(uint32_t A) { return ((A) & ~0xffff); }
/* No need to mask if we are 32 bit */
-#define MASK_OUT_ABOVE_32(A) ((A) & u64(0xffffffffU))
-#define MASK_OUT_BELOW_32(A) ((A) & ~u64(0xffffffffU))
+static constexpr uint32_t MASK_OUT_ABOVE_32(uint32_t A) { return ((A) & u64(0xffffffffU)); }
+static constexpr uint64_t MASK_OUT_BELOW_32(uint64_t A) { return ((A) & ~u64(0xffffffffU)); }
/* Shift & Rotate Macros. */
-#define LSL(A, C) ((A) << (C))
-#define LSR(A, C) ((A) >> (C))
+static constexpr uint32_t LSL(uint32 A, uint32_t C) { return ((A) << (C)); }
+static constexpr uint32_t LSR(uint32 A, uint32_t C) { return ((A) >> (C)); }
/* We have to do this because the morons at ANSI decided that shifts
* by >= data size are undefined.
*/
-#define LSR_32(A, C) ((C) < 32 ? (A) >> (C) : 0)
-#define LSL_32(A, C) ((C) < 32 ? (A) << (C) : 0)
+static constexpr uint32_t LSR_32(uint32 A, uint32_t C) { return ((C) < 32 ? (A) >> (C) : 0); }
+static constexpr uint32_t LSL_32(uint32 A, uint32_t C) { return ((C) < 32 ? (A) << (C) : 0); }
-#define LSL_32_64(A, C) ((A) << (C))
-#define LSR_32_64(A, C) ((A) >> (C))
-#define ROL_33_64(A, C) (LSL_32_64(A, C) | LSR_32_64(A, 33-(C)))
-#define ROR_33_64(A, C) (LSR_32_64(A, C) | LSL_32_64(A, 33-(C)))
+static constexpr uint64_t LSL_32_64(uint64_t A, uint32_t C) { return ((A) << (C)); }
+static constexpr uint64_t LSR_32_64(uint64_t A, uint32_t C) { return ((A) >> (C)); }
+static constexpr uint64_t ROL_33_64(uint64_t A, uint32_t C) { return (LSL_32_64(A, C) | LSR_32_64(A, 33 - (C))); }
+static constexpr uint64_t ROR_33_64(uint64_t A, uint32_t C) { return (LSR_32_64(A, C) | LSL_32_64(A, 33 - (C))); }
-#define ROL_8(A, C) MASK_OUT_ABOVE_8(LSL(A, C) | LSR(A, 8-(C)))
-#define ROL_9(A, C) (LSL(A, C) | LSR(A, 9-(C)))
-#define ROL_16(A, C) MASK_OUT_ABOVE_16(LSL(A, C) | LSR(A, 16-(C)))
-#define ROL_17(A, C) (LSL(A, C) | LSR(A, 17-(C)))
-#define ROL_32(A, C) MASK_OUT_ABOVE_32(LSL_32(A, C) | LSR_32(A, 32-(C)))
-#define ROL_33(A, C) (LSL_32(A, C) | LSR_32(A, 33-(C)))
+static constexpr uint32_t ROL_8(uint32_t A, uint32_t C) { return MASK_OUT_ABOVE_8(LSL(A, C) | LSR(A, 8-(C))); }
+static constexpr uint32_t ROL_9(uint32_t A, uint32_t C) { return (LSL(A, C) | LSR(A, 9-(C))); }
+static constexpr uint32_t ROL_16(uint32_t A, uint32_t C) { return MASK_OUT_ABOVE_16(LSL(A, C) | LSR(A, 16-(C))); }
+static constexpr uint32_t ROL_17(uint32_t A, uint32_t C) { return (LSL(A, C) | LSR(A, 17-(C))); }
+static constexpr uint32_t ROL_32(uint32_t A, uint32_t C) { return MASK_OUT_ABOVE_32(LSL_32(A, C) | LSR_32(A, 32-(C))); }
-#define ROR_8(A, C) MASK_OUT_ABOVE_8(LSR(A, C) | LSL(A, 8-(C)))
-#define ROR_9(A, C) (LSR(A, C) | LSL(A, 9-(C)))
-#define ROR_16(A, C) MASK_OUT_ABOVE_16(LSR(A, C) | LSL(A, 16-(C)))
-#define ROR_17(A, C) (LSR(A, C) | LSL(A, 17-(C)))
-#define ROR_32(A, C) MASK_OUT_ABOVE_32(LSR_32(A, C) | LSL_32(A, 32-(C)))
-#define ROR_33(A, C) (LSR_32(A, C) | LSL_32(A, 33-(C)))
+static constexpr uint32_t ROR_8(uint32_t A, uint32_t C) { return MASK_OUT_ABOVE_8(LSR(A, C) | LSL(A, 8-(C))); }
+static constexpr uint32_t ROR_9(uint32_t A, uint32_t C) { return (LSR(A, C) | LSL(A, 9-(C))); }
+static constexpr uint32_t ROR_16(uint32_t A, uint32_t C) { return MASK_OUT_ABOVE_16(LSR(A, C) | LSL(A, 16-(C))); }
+static constexpr uint32_t ROR_17(uint32_t A, uint32_t C) { return (LSR(A, C) | LSL(A, 17-(C))); }
+static constexpr uint32_t ROR_32(uint32_t A, uint32_t C) { return MASK_OUT_ABOVE_32(LSR_32(A, C) | LSL_32(A, 32-(C))); }
/* ------------------------------ CPU Access ------------------------------ */
/* Access the CPU registers */
-#define REG_DA(M) (M)->dar /* easy access to data and address regs */
-#define REG_D(M) (M)->dar
-#define REG_A(M) ((M)->dar+8)
-#define REG_PPC(M) (M)->ppc
-#define REG_PC(M) (M)->pc
-#define REG_SP_BASE(M) (M)->sp
-#define REG_USP(M) (M)->sp[0]
-#define REG_ISP(M) (M)->sp[4]
-#define REG_MSP(M) (M)->sp[6]
-#define REG_SP(M) (M)->dar[15]
-
-#define REG_FP(M) (M)->fpr
-#define REG_FPCR(M) (M)->fpcr
-#define REG_FPSR(M) (M)->fpsr
-#define REG_FPIAR(M) (M)->fpiar
+inline uint32_t (&REG_DA())[16] { return m_dar; } /* easy access to data and address regs */
+inline uint32_t (&REG_D())[16] { return m_dar; }
+inline uint32_t (*REG_A()) { return (m_dar+8); }
+inline uint32_t (&REG_SP_BASE())[7]{ return m_sp; }
+inline uint32_t &REG_USP() { return m_sp[0]; }
+inline uint32_t &REG_ISP() { return m_sp[4]; }
+inline uint32_t &REG_MSP() { return m_sp[6]; }
+inline uint32_t &REG_SP() { return m_dar[15]; }
/* ----------------------------- Configuration ---------------------------- */
@@ -227,37 +211,34 @@ class m68000_base_device;
/* These defines are dependant on the configuration defines in m68kconf.h */
/* Disable certain comparisons if we're not using all CPU types */
-#define CPU_TYPE_IS_COLDFIRE(A) ((A) & (CPU_TYPE_COLDFIRE))
+inline uint32_t CPU_TYPE_IS_COLDFIRE() const { return ((m_cpu_type) & (CPU_TYPE_COLDFIRE)); }
-#define CPU_TYPE_IS_040_PLUS(A) ((A) & (CPU_TYPE_040 | CPU_TYPE_EC040))
-#define CPU_TYPE_IS_040_LESS(A) 1
+inline uint32_t CPU_TYPE_IS_040_PLUS() const { return ((m_cpu_type) & (CPU_TYPE_040 | CPU_TYPE_EC040)); }
-#define CPU_TYPE_IS_030_PLUS(A) ((A) & (CPU_TYPE_030 | CPU_TYPE_EC030 | CPU_TYPE_040 | CPU_TYPE_EC040))
-#define CPU_TYPE_IS_030_LESS(A) 1
+inline uint32_t CPU_TYPE_IS_030_PLUS() const { return ((m_cpu_type) & (CPU_TYPE_030 | CPU_TYPE_EC030 | CPU_TYPE_040 | CPU_TYPE_EC040)); }
-#define CPU_TYPE_IS_020_PLUS(A) ((A) & (CPU_TYPE_020 | CPU_TYPE_030 | CPU_TYPE_EC030 | CPU_TYPE_040 | CPU_TYPE_EC040 | CPU_TYPE_FSCPU32 | CPU_TYPE_COLDFIRE))
-#define CPU_TYPE_IS_020_LESS(A) 1
+inline uint32_t CPU_TYPE_IS_020_PLUS() const { return ((m_cpu_type) & (CPU_TYPE_020 | CPU_TYPE_030 | CPU_TYPE_EC030 | CPU_TYPE_040 | CPU_TYPE_EC040 | CPU_TYPE_FSCPU32 | CPU_TYPE_COLDFIRE)); }
-#define CPU_TYPE_IS_020_VARIANT(A) ((A) & (CPU_TYPE_EC020 | CPU_TYPE_020 | CPU_TYPE_FSCPU32))
+inline uint32_t CPU_TYPE_IS_020_VARIANT() const { return ((m_cpu_type) & (CPU_TYPE_EC020 | CPU_TYPE_020 | CPU_TYPE_FSCPU32)); }
-#define CPU_TYPE_IS_EC020_PLUS(A) ((A) & (CPU_TYPE_EC020 | CPU_TYPE_020 | CPU_TYPE_030 | CPU_TYPE_EC030 | CPU_TYPE_040 | CPU_TYPE_EC040 | CPU_TYPE_FSCPU32 | CPU_TYPE_COLDFIRE))
-#define CPU_TYPE_IS_EC020_LESS(A) ((A) & (CPU_TYPE_000 | CPU_TYPE_008 | CPU_TYPE_010 | CPU_TYPE_EC020))
+inline uint32_t CPU_TYPE_IS_EC020_PLUS() const { return ((m_cpu_type) & (CPU_TYPE_EC020 | CPU_TYPE_020 | CPU_TYPE_030 | CPU_TYPE_EC030 | CPU_TYPE_040 | CPU_TYPE_EC040 | CPU_TYPE_FSCPU32 | CPU_TYPE_COLDFIRE)); }
+inline uint32_t CPU_TYPE_IS_EC020_LESS() const { return ((m_cpu_type) & (CPU_TYPE_000 | CPU_TYPE_008 | CPU_TYPE_010 | CPU_TYPE_EC020)); }
-#define CPU_TYPE_IS_010(A) ((A) == CPU_TYPE_010)
-#define CPU_TYPE_IS_010_PLUS(A) ((A) & (CPU_TYPE_010 | CPU_TYPE_EC020 | CPU_TYPE_020 | CPU_TYPE_EC030 | CPU_TYPE_030 | CPU_TYPE_040 | CPU_TYPE_EC040 | CPU_TYPE_FSCPU32 | CPU_TYPE_COLDFIRE))
-#define CPU_TYPE_IS_010_LESS(A) ((A) & (CPU_TYPE_000 | CPU_TYPE_008 | CPU_TYPE_010))
+inline uint32_t CPU_TYPE_IS_010() const { return ((m_cpu_type) == CPU_TYPE_010); }
+inline uint32_t CPU_TYPE_IS_010_PLUS() const { return ((m_cpu_type) & (CPU_TYPE_010 | CPU_TYPE_EC020 | CPU_TYPE_020 | CPU_TYPE_EC030 | CPU_TYPE_030 | CPU_TYPE_040 | CPU_TYPE_EC040 | CPU_TYPE_FSCPU32 | CPU_TYPE_COLDFIRE)); }
+inline uint32_t CPU_TYPE_IS_010_LESS() const { return ((m_cpu_type) & (CPU_TYPE_000 | CPU_TYPE_008 | CPU_TYPE_010)); }
-#define CPU_TYPE_IS_000(A) ((A) == CPU_TYPE_000 || (A) == CPU_TYPE_008)
+inline uint32_t CPU_TYPE_IS_000() const { return ((m_cpu_type) == CPU_TYPE_000 || (m_cpu_type) == CPU_TYPE_008); }
/* Initiates trace checking before each instruction (t1) */
-#define m68ki_trace_t1(m68k) m68k->tracing = m68k->t1_flag
+inline void m68ki_trace_t1() { m_tracing = m_t1_flag; }
/* adds t0 to trace checking if we encounter change of flow */
-#define m68ki_trace_t0(m68k) m68k->tracing |= m68k->t0_flag
+inline void m68ki_trace_t0() { m_tracing |= m_t0_flag; }
/* Clear all tracing */
-#define m68ki_clear_trace(m68k) m68k->tracing = 0
+inline void m68ki_clear_trace() { m_tracing = 0; }
/* Cause a trace exception if we are tracing */
-#define m68ki_exception_if_trace(m68k) if(m68k->tracing) m68ki_exception_trace(m68k)
+inline void m68ki_exception_if_trace() { if(m_tracing) m68ki_exception_trace(); }
/* -------------------------- EA / Operand Access ------------------------- */
@@ -267,205 +248,205 @@ class m68000_base_device;
* where XXX is register X and YYY is register Y
*/
/* Data Register Isolation */
-#define DX(M) (REG_D(M)[((M)->ir >> 9) & 7])
-#define DY(M) (REG_D(M)[(M)->ir & 7])
+inline uint32_t &DX() { return (REG_D()[(m_ir >> 9) & 7]); }
+inline uint32_t &DY() { return (REG_D()[m_ir & 7]); }
/* Address Register Isolation */
-#define AX(M) (REG_A(M)[((M)->ir >> 9) & 7])
-#define AY(M) (REG_A(M)[(M)->ir & 7])
+inline uint32_t &AX() { return (REG_A()[(m_ir >> 9) & 7]); }
+inline uint32_t &AY() { return (REG_A()[m_ir & 7]); }
/* Effective Address Calculations */
-#define EA_AY_AI_8(M) AY(M) /* address register indirect */
-#define EA_AY_AI_16(M) EA_AY_AI_8(M)
-#define EA_AY_AI_32(M) EA_AY_AI_8(M)
-#define EA_AY_PI_8(M) (AY(M)++) /* postincrement (size = byte) */
-#define EA_AY_PI_16(M) ((AY(M)+=2)-2) /* postincrement (size = word) */
-#define EA_AY_PI_32(M) ((AY(M)+=4)-4) /* postincrement (size = long) */
-#define EA_AY_PD_8(M) (--AY(M)) /* predecrement (size = byte) */
-#define EA_AY_PD_16(M) (AY(M)-=2) /* predecrement (size = word) */
-#define EA_AY_PD_32(M) (AY(M)-=4) /* predecrement (size = long) */
-#define EA_AY_DI_8(M) (AY(M)+MAKE_INT_16(m68ki_read_imm_16(M))) /* displacement */
-#define EA_AY_DI_16(M) EA_AY_DI_8(M)
-#define EA_AY_DI_32(M) EA_AY_DI_8(M)
-#define EA_AY_IX_8(M) m68ki_get_ea_ix(M, AY(M)) /* indirect + index */
-#define EA_AY_IX_16(M) EA_AY_IX_8(M)
-#define EA_AY_IX_32(M) EA_AY_IX_8(M)
-
-#define EA_AX_AI_8(M) AX(M)
-#define EA_AX_AI_16(M) EA_AX_AI_8(M)
-#define EA_AX_AI_32(M) EA_AX_AI_8(M)
-#define EA_AX_PI_8(M) (AX(M)++)
-#define EA_AX_PI_16(M) ((AX(M)+=2)-2)
-#define EA_AX_PI_32(M) ((AX(M)+=4)-4)
-#define EA_AX_PD_8(M) (--AX(M))
-#define EA_AX_PD_16(M) (AX(M)-=2)
-#define EA_AX_PD_32(M) (AX(M)-=4)
-#define EA_AX_DI_8(M) (AX(M)+MAKE_INT_16(m68ki_read_imm_16(M)))
-#define EA_AX_DI_16(M) EA_AX_DI_8(M)
-#define EA_AX_DI_32(M) EA_AX_DI_8(M)
-#define EA_AX_IX_8(M) m68ki_get_ea_ix(M, AX(M))
-#define EA_AX_IX_16(M) EA_AX_IX_8(M)
-#define EA_AX_IX_32(M) EA_AX_IX_8(M)
-
-#define EA_A7_PI_8(m68k) ((REG_A(m68k)[7]+=2)-2)
-#define EA_A7_PD_8(m68k) (REG_A(m68k)[7]-=2)
-
-#define EA_AW_8(m68k) MAKE_INT_16(m68ki_read_imm_16(m68k)) /* absolute word */
-#define EA_AW_16(m68k) EA_AW_8(m68k)
-#define EA_AW_32(m68k) EA_AW_8(m68k)
-#define EA_AL_8(m68k) m68ki_read_imm_32(m68k) /* absolute long */
-#define EA_AL_16(m68k) EA_AL_8(m68k)
-#define EA_AL_32(m68k) EA_AL_8(m68k)
-#define EA_PCDI_8(m68k) m68ki_get_ea_pcdi(m68k) /* pc indirect + displacement */
-#define EA_PCDI_16(m68k) EA_PCDI_8(m68k)
-#define EA_PCDI_32(m68k) EA_PCDI_8(m68k)
-#define EA_PCIX_8(m68k) m68ki_get_ea_pcix(m68k) /* pc indirect + index */
-#define EA_PCIX_16(m68k) EA_PCIX_8(m68k)
-#define EA_PCIX_32(m68k) EA_PCIX_8(m68k)
-
-
-#define OPER_I_8(m68k) m68ki_read_imm_8(m68k)
-#define OPER_I_16(m68k) m68ki_read_imm_16(m68k)
-#define OPER_I_32(m68k) m68ki_read_imm_32(m68k)
+inline uint32_t EA_AY_AI_8() { return AY(); } /* address register indirect */
+inline uint32_t EA_AY_AI_16() { return EA_AY_AI_8(); }
+inline uint32_t EA_AY_AI_32() { return EA_AY_AI_8(); }
+inline uint32_t EA_AY_PI_8() { return (AY()++); } /* postincrement (size = byte) */
+inline uint32_t EA_AY_PI_16() { return ((AY()+=2)-2); } /* postincrement (size = word) */
+inline uint32_t EA_AY_PI_32() { return ((AY()+=4)-4); } /* postincrement (size = long) */
+inline uint32_t EA_AY_PD_8() { return (--AY()); } /* predecrement (size = byte) */
+inline uint32_t EA_AY_PD_16() { return (AY()-=2); } /* predecrement (size = word) */
+inline uint32_t EA_AY_PD_32() { return (AY()-=4); } /* predecrement (size = long) */
+inline uint32_t EA_AY_DI_8() { return (AY()+MAKE_INT_16(m68ki_read_imm_16())); } /* displacement */
+inline uint32_t EA_AY_DI_16() { return EA_AY_DI_8(); }
+inline uint32_t EA_AY_DI_32() { return EA_AY_DI_8(); }
+inline uint32_t EA_AY_IX_8() { return m68ki_get_ea_ix(AY()); } /* indirect + index */
+inline uint32_t EA_AY_IX_16() { return EA_AY_IX_8(); }
+inline uint32_t EA_AY_IX_32() { return EA_AY_IX_8(); }
+
+inline uint32_t EA_AX_AI_8() { return AX(); }
+inline uint32_t EA_AX_AI_16() { return EA_AX_AI_8(); }
+inline uint32_t EA_AX_AI_32() { return EA_AX_AI_8(); }
+inline uint32_t EA_AX_PI_8() { return (AX()++); }
+inline uint32_t EA_AX_PI_16() { return ((AX()+=2)-2); }
+inline uint32_t EA_AX_PI_32() { return ((AX()+=4)-4); }
+inline uint32_t EA_AX_PD_8() { return (--AX()); }
+inline uint32_t EA_AX_PD_16() { return (AX()-=2); }
+inline uint32_t EA_AX_PD_32() { return (AX()-=4); }
+inline uint32_t EA_AX_DI_8() { return (AX()+MAKE_INT_16(m68ki_read_imm_16())); }
+inline uint32_t EA_AX_DI_16() { return EA_AX_DI_8(); }
+inline uint32_t EA_AX_DI_32() { return EA_AX_DI_8(); }
+inline uint32_t EA_AX_IX_8() { return m68ki_get_ea_ix(AX()); }
+inline uint32_t EA_AX_IX_16() { return EA_AX_IX_8(); }
+inline uint32_t EA_AX_IX_32() { return EA_AX_IX_8(); }
+
+inline uint32_t EA_A7_PI_8() { return ((REG_A()[7]+=2)-2); }
+inline uint32_t EA_A7_PD_8() { return (REG_A()[7]-=2); }
+
+inline uint32_t EA_AW_8() { return MAKE_INT_16(m68ki_read_imm_16()); } /* absolute word */
+inline uint32_t EA_AW_16() { return EA_AW_8(); }
+inline uint32_t EA_AW_32() { return EA_AW_8(); }
+inline uint32_t EA_AL_8() { return m68ki_read_imm_32(); } /* absolute long */
+inline uint32_t EA_AL_16() { return EA_AL_8(); }
+inline uint32_t EA_AL_32() { return EA_AL_8(); }
+inline uint32_t EA_PCDI_8() { return m68ki_get_ea_pcdi(); } /* pc indirect + displacement */
+inline uint32_t EA_PCDI_16() { return EA_PCDI_8(); }
+inline uint32_t EA_PCDI_32() { return EA_PCDI_8(); }
+inline uint32_t EA_PCIX_8() { return m68ki_get_ea_pcix(); } /* pc indirect + index */
+inline uint32_t EA_PCIX_16() { return EA_PCIX_8(); }
+inline uint32_t EA_PCIX_32() { return EA_PCIX_8(); }
+
+
+inline uint32_t OPER_I_8() { return m68ki_read_imm_8(); }
+inline uint32_t OPER_I_16() { return m68ki_read_imm_16(); }
+inline uint32_t OPER_I_32() { return m68ki_read_imm_32(); }
/* --------------------------- Status Register ---------------------------- */
/* Flag Calculation Macros */
-#define CFLAG_8(A) (A)
-#define CFLAG_16(A) ((A)>>8)
+static constexpr uint32_t CFLAG_8(uint32_t A) { return (A); }
+static constexpr uint32_t CFLAG_16(uint32_t A) { return ((A)>>8); }
-#define CFLAG_ADD_32(S, D, R) (((S & D) | (~R & (S | D)))>>23)
-#define CFLAG_SUB_32(S, D, R) (((S & R) | (~D & (S | R)))>>23)
+static constexpr uint32_t CFLAG_ADD_32(uint32_t S, uint32_t D, uint32_t R) { return (((S & D) | (~R & (S | D)))>>23); }
+static constexpr uint32_t CFLAG_SUB_32(uint32_t S, uint32_t D, uint32_t R) { return (((S & R) | (~D & (S | R)))>>23); }
-#define VFLAG_ADD_8(S, D, R) ((S^R) & (D^R))
-#define VFLAG_ADD_16(S, D, R) (((S^R) & (D^R))>>8)
-#define VFLAG_ADD_32(S, D, R) (((S^R) & (D^R))>>24)
+static constexpr uint32_t VFLAG_ADD_8(uint32_t S, uint32_t D, uint32_t R) { return ((S^R) & (D^R)); }
+static constexpr uint32_t VFLAG_ADD_16(uint32_t S, uint32_t D, uint32_t R) { return (((S^R) & (D^R))>>8); }
+static constexpr uint32_t VFLAG_ADD_32(uint32_t S, uint32_t D, uint32_t R) { return (((S^R) & (D^R))>>24); }
-#define VFLAG_SUB_8(S, D, R) ((S^D) & (R^D))
-#define VFLAG_SUB_16(S, D, R) (((S^D) & (R^D))>>8)
-#define VFLAG_SUB_32(S, D, R) (((S^D) & (R^D))>>24)
+static constexpr uint32_t VFLAG_SUB_8(uint32_t S, uint32_t D, uint32_t R) { return ((S^D) & (R^D)); }
+static constexpr uint32_t VFLAG_SUB_16(uint32_t S, uint32_t D, uint32_t R) { return (((S^D) & (R^D))>>8); }
+static constexpr uint32_t VFLAG_SUB_32(uint32_t S, uint32_t D, uint32_t R) { return (((S^D) & (R^D))>>24); }
-#define NFLAG_8(A) (A)
-#define NFLAG_16(A) ((A)>>8)
-#define NFLAG_32(A) ((A)>>24)
-#define NFLAG_64(A) ((A)>>56)
+static constexpr uint32_t NFLAG_8(uint32_t A) { return (A); }
+static constexpr uint32_t NFLAG_16(uint32_t A) { return ((A)>>8); }
+static constexpr uint32_t NFLAG_32(uint32_t A) { return ((A)>>24); }
+static constexpr uint32_t NFLAG_64(uint64_t A) { return ((A)>>56); }
-#define ZFLAG_8(A) MASK_OUT_ABOVE_8(A)
-#define ZFLAG_16(A) MASK_OUT_ABOVE_16(A)
-#define ZFLAG_32(A) MASK_OUT_ABOVE_32(A)
+static constexpr uint32_t ZFLAG_8(uint32_t A) { return MASK_OUT_ABOVE_8(A); }
+static constexpr uint32_t ZFLAG_16(uint32_t A) { return MASK_OUT_ABOVE_16(A); }
+static constexpr uint32_t ZFLAG_32(uint32_t A) { return MASK_OUT_ABOVE_32(A); }
/* Flag values */
-#define NFLAG_SET 0x80
-#define NFLAG_CLEAR 0
-#define CFLAG_SET 0x100
-#define CFLAG_CLEAR 0
-#define XFLAG_SET 0x100
-#define XFLAG_CLEAR 0
-#define VFLAG_SET 0x80
-#define VFLAG_CLEAR 0
-#define ZFLAG_SET 0
-#define ZFLAG_CLEAR 0xffffffff
-
-#define SFLAG_SET 4
-#define SFLAG_CLEAR 0
-#define MFLAG_SET 2
-#define MFLAG_CLEAR 0
+static constexpr int NFLAG_SET = 0x80;
+static constexpr int NFLAG_CLEAR = 0;
+static constexpr int CFLAG_SET = 0x100;
+static constexpr int CFLAG_CLEAR = 0;
+static constexpr int XFLAG_SET = 0x100;
+static constexpr int XFLAG_CLEAR = 0;
+static constexpr int VFLAG_SET = 0x80;
+static constexpr int VFLAG_CLEAR = 0;
+static constexpr int ZFLAG_SET = 0;
+static constexpr int ZFLAG_CLEAR = 0xffffffff;
+
+static constexpr int SFLAG_SET = 4;
+static constexpr int SFLAG_CLEAR = 0;
+static constexpr int MFLAG_SET = 2;
+static constexpr int MFLAG_CLEAR = 0;
/* Turn flag values into 1 or 0 */
-#define XFLAG_1(M) (((M)->x_flag>>8)&1)
-#define NFLAG_1(M) (((M)->n_flag>>7)&1)
-#define VFLAG_1(M) (((M)->v_flag>>7)&1)
-#define ZFLAG_1(M) (!(M)->not_z_flag)
-#define CFLAG_1(M) (((M)->c_flag>>8)&1)
+inline uint32_t XFLAG_1() const { return ((m_x_flag>>8)&1); }
+inline uint32_t NFLAG_1() const { return ((m_n_flag>>7)&1); }
+inline uint32_t VFLAG_1() const { return ((m_v_flag>>7)&1); }
+inline uint32_t ZFLAG_1() const { return (!m_not_z_flag); }
+inline uint32_t CFLAG_1() const { return ((m_c_flag>>8)&1); }
/* Conditions */
-#define COND_CS(M) ((M)->c_flag&0x100)
-#define COND_CC(M) (!COND_CS(M))
-#define COND_VS(M) ((M)->v_flag&0x80)
-#define COND_VC(M) (!COND_VS(M))
-#define COND_NE(M) (M)->not_z_flag
-#define COND_EQ(M) (!COND_NE(M))
-#define COND_MI(M) ((M)->n_flag&0x80)
-#define COND_PL(M) (!COND_MI(M))
-#define COND_LT(M) (((M)->n_flag^(M)->v_flag)&0x80)
-#define COND_GE(M) (!COND_LT(M))
-#define COND_HI(M) (COND_CC(M) && COND_NE(M))
-#define COND_LS(M) (COND_CS(M) || COND_EQ(M))
-#define COND_GT(M) (COND_GE(M) && COND_NE(M))
-#define COND_LE(M) (COND_LT(M) || COND_EQ(M))
+inline uint32_t COND_CS() const { return (m_c_flag&0x100); }
+inline uint32_t COND_CC() const { return (!COND_CS()); }
+inline uint32_t COND_VS() const { return (m_v_flag&0x80); }
+inline uint32_t COND_VC() const { return (!COND_VS()); }
+inline uint32_t COND_NE() const { return m_not_z_flag; }
+inline uint32_t COND_EQ() const { return (!COND_NE()); }
+inline uint32_t COND_MI() const { return (m_n_flag&0x80); }
+inline uint32_t COND_PL() const { return (!COND_MI()); }
+inline uint32_t COND_LT() const { return ((m_n_flag^m_v_flag)&0x80); }
+inline uint32_t COND_GE() const { return (!COND_LT()); }
+inline uint32_t COND_HI() const { return (COND_CC() && COND_NE()); }
+inline uint32_t COND_LS() const { return (COND_CS() || COND_EQ()); }
+inline uint32_t COND_GT() const { return (COND_GE() && COND_NE()); }
+inline uint32_t COND_LE() const { return (COND_LT() || COND_EQ()); }
/* Reversed conditions */
-#define COND_NOT_CS(M) COND_CC(M)
-#define COND_NOT_CC(M) COND_CS(M)
-#define COND_NOT_VS(M) COND_VC(M)
-#define COND_NOT_VC(M) COND_VS(M)
-#define COND_NOT_NE(M) COND_EQ(M)
-#define COND_NOT_EQ(M) COND_NE(M)
-#define COND_NOT_MI(M) COND_PL(M)
-#define COND_NOT_PL(M) COND_MI(M)
-#define COND_NOT_LT(M) COND_GE(M)
-#define COND_NOT_GE(M) COND_LT(M)
-#define COND_NOT_HI(M) COND_LS(M)
-#define COND_NOT_LS(M) COND_HI(M)
-#define COND_NOT_GT(M) COND_LE(M)
-#define COND_NOT_LE(M) COND_GT(M)
+inline uint32_t COND_NOT_CS() const { return COND_CC(); }
+inline uint32_t COND_NOT_CC() const { return COND_CS(); }
+inline uint32_t COND_NOT_VS() const { return COND_VC(); }
+inline uint32_t COND_NOT_VC() const { return COND_VS(); }
+inline uint32_t COND_NOT_NE() const { return COND_EQ(); }
+inline uint32_t COND_NOT_EQ() const { return COND_NE(); }
+inline uint32_t COND_NOT_MI() const { return COND_PL(); }
+inline uint32_t COND_NOT_PL() const { return COND_MI(); }
+inline uint32_t COND_NOT_LT() const { return COND_GE(); }
+inline uint32_t COND_NOT_GE() const { return COND_LT(); }
+inline uint32_t COND_NOT_HI() const { return COND_LS(); }
+inline uint32_t COND_NOT_LS() const { return COND_HI(); }
+inline uint32_t COND_NOT_GT() const { return COND_LE(); }
+inline uint32_t COND_NOT_LE() const { return COND_GT(); }
/* Not real conditions, but here for convenience */
-#define COND_XS(M) ((M)->x_flag&0x100)
-#define COND_XC(M) (!COND_XS)
+inline uint32_t COND_XS() const { return (m_x_flag&0x100); }
+inline uint32_t COND_XC() const { return (!COND_XS()); }
/* Get the condition code register */
-#define m68ki_get_ccr(M) ((COND_XS(M) >> 4) | \
- (COND_MI(M) >> 4) | \
- (COND_EQ(M) << 2) | \
- (COND_VS(M) >> 6) | \
- (COND_CS(M) >> 8))
+inline uint32_t m68ki_get_ccr() const { return((COND_XS() >> 4) |
+ (COND_MI() >> 4) |
+ (COND_EQ() << 2) |
+ (COND_VS() >> 6) |
+ (COND_CS() >> 8)); }
/* Get the status register */
-#define m68ki_get_sr(M) ((M)->t1_flag | \
- (M)->t0_flag | \
- ((M)->s_flag << 11) | \
- ((M)->m_flag << 11) | \
- (M)->int_mask | \
- m68ki_get_ccr(M))
+inline uint32_t m68ki_get_sr() const { return (m_t1_flag |
+ m_t0_flag |
+ (m_s_flag << 11) |
+ (m_m_flag << 11) |
+ m_int_mask |
+ m68ki_get_ccr()); }
/* ----------------------------- Read / Write ----------------------------- */
/* Read from the current address space */
-#define m68ki_read_8(M, A) m68ki_read_8_fc (M, A, (M)->s_flag | FUNCTION_CODE_USER_DATA)
-#define m68ki_read_16(M, A) m68ki_read_16_fc(M, A, (M)->s_flag | FUNCTION_CODE_USER_DATA)
-#define m68ki_read_32(M, A) m68ki_read_32_fc(M, A, (M)->s_flag | FUNCTION_CODE_USER_DATA)
+inline uint32_t m68ki_read_8(uint32_t address) { return m68ki_read_8_fc(address, m_s_flag | FUNCTION_CODE_USER_DATA); }
+inline uint32_t m68ki_read_16(uint32_t address) { return m68ki_read_16_fc(address, m_s_flag | FUNCTION_CODE_USER_DATA); }
+inline uint32_t m68ki_read_32(uint32_t address) { return m68ki_read_32_fc(address, m_s_flag | FUNCTION_CODE_USER_DATA); }
/* Write to the current data space */
-#define m68ki_write_8(M, A, V) m68ki_write_8_fc (M, A, (M)->s_flag | FUNCTION_CODE_USER_DATA, V)
-#define m68ki_write_16(M, A, V) m68ki_write_16_fc(M, A, (M)->s_flag | FUNCTION_CODE_USER_DATA, V)
-#define m68ki_write_32(M, A, V) m68ki_write_32_fc(M, A, (M)->s_flag | FUNCTION_CODE_USER_DATA, V)
-#define m68ki_write_32_pd(M, A, V) m68ki_write_32_pd_fc(M, A, (M)->s_flag | FUNCTION_CODE_USER_DATA, V)
+inline void m68ki_write_8(uint32_t address, uint32_t value) { m68ki_write_8_fc(address, m_s_flag | FUNCTION_CODE_USER_DATA, value); }
+inline void m68ki_write_16(uint32_t address, uint32_t value) { m68ki_write_16_fc(address, m_s_flag | FUNCTION_CODE_USER_DATA, value); }
+inline void m68ki_write_32(uint32_t address, uint32_t value) { m68ki_write_32_fc(address, m_s_flag | FUNCTION_CODE_USER_DATA, value); }
+inline void m68ki_write_32_pd(uint32_t address, uint32_t value) { m68ki_write_32_pd_fc(address, m_s_flag | FUNCTION_CODE_USER_DATA, value); }
/* map read immediate 8 to read immediate 16 */
-#define m68ki_read_imm_8(M) MASK_OUT_ABOVE_8(m68ki_read_imm_16(M))
+inline uint32_t m68ki_read_imm_8() { return MASK_OUT_ABOVE_8(m68ki_read_imm_16()); }
/* Map PC-relative reads */
-#define m68ki_read_pcrel_8(M, A) m68k_read_pcrelative_8(M, A)
-#define m68ki_read_pcrel_16(M, A) m68k_read_pcrelative_16(M, A)
-#define m68ki_read_pcrel_32(M, A) m68k_read_pcrelative_32(M, A)
+inline uint32_t m68ki_read_pcrel_8(uint32_t address) { return m68k_read_pcrelative_8(address); }
+inline uint32_t m68ki_read_pcrel_16(uint32_t address) { return m68k_read_pcrelative_16(address); }
+inline uint32_t m68ki_read_pcrel_32(uint32_t address) { return m68k_read_pcrelative_32(address); }
/* Read from the program space */
-#define m68ki_read_program_8(M, A) m68ki_read_8_fc(M, A, (M)->s_flag | FUNCTION_CODE_USER_PROGRAM)
-#define m68ki_read_program_16(M, A) m68ki_read_16_fc(M, A, (M)->s_flag | FUNCTION_CODE_USER_PROGRAM)
-#define m68ki_read_program_32(M, A) m68ki_read_32_fc(M, A, (M)->s_flag | FUNCTION_CODE_USER_PROGRAM)
+inline uint32_t m68ki_read_program_8(uint32_t address) { return m68ki_read_8_fc(address, m_s_flag | FUNCTION_CODE_USER_PROGRAM); }
+inline uint32_t m68ki_read_program_16(uint32_t address) { return m68ki_read_16_fc(address, m_s_flag | FUNCTION_CODE_USER_PROGRAM); }
+inline uint32_t m68ki_read_program_32(uint32_t address) { return m68ki_read_32_fc(address, m_s_flag | FUNCTION_CODE_USER_PROGRAM); }
/* Read from the data space */
-#define m68ki_read_data_8(M, A) m68ki_read_8_fc(M, A, (M)->s_flag | FUNCTION_CODE_USER_DATA)
-#define m68ki_read_data_16(M, A) m68ki_read_16_fc(M, A, (M)->s_flag | FUNCTION_CODE_USER_DATA)
-#define m68ki_read_data_32(M, A) m68ki_read_32_fc(M, A, (M)->s_flag | FUNCTION_CODE_USER_DATA)
+inline uint32_t m68ki_read_data_8(uint32_t address) { return m68ki_read_8_fc(address, m_s_flag | FUNCTION_CODE_USER_DATA); }
+inline uint32_t m68ki_read_data_16(uint32_t address) { return m68ki_read_16_fc(address, m_s_flag | FUNCTION_CODE_USER_DATA); }
+inline uint32_t m68ki_read_data_32(uint32_t address) { return m68ki_read_32_fc(address, m_s_flag | FUNCTION_CODE_USER_DATA); }
@@ -473,181 +454,52 @@ class m68000_base_device;
/* =============================== PROTOTYPES ============================= */
/* ======================================================================== */
-union fp_reg
-{
- uint64_t i;
- double f;
-};
+void set_irq_line(int irqline, int state);
+
+void m68k_cause_bus_error();
+
-class m68000_base_device_ops
-{
-public:
- #define OPCODE_PROTOTYPES
- #include "m68kops.h"
- #undef OPCODE_PROTOTYPES
-};
-
-
-
-extern const uint8_t m68ki_shift_8_table[];
-extern const uint16_t m68ki_shift_16_table[];
-extern const uint32_t m68ki_shift_32_table[];
-extern const uint8_t m68ki_exception_cycle_table[][256];
-extern const uint8_t m68ki_ea_idx_cycle_table[];
-
-/* Read data immediately after the program counter */
-static inline uint32_t m68ki_read_imm_16(m68000_base_device *m68k);
-static inline uint32_t m68ki_read_imm_32(m68000_base_device *m68k);
-
-/* Read data with specific function code */
-static inline uint32_t m68ki_read_8_fc (m68000_base_device *m68k, uint32_t address, uint32_t fc);
-static inline uint32_t m68ki_read_16_fc (m68000_base_device *m68k, uint32_t address, uint32_t fc);
-static inline uint32_t m68ki_read_32_fc (m68000_base_device *m68k, uint32_t address, uint32_t fc);
-
-/* Write data with specific function code */
-static inline void m68ki_write_8_fc (m68000_base_device *m68k, uint32_t address, uint32_t fc, uint32_t value);
-static inline void m68ki_write_16_fc(m68000_base_device *m68k, uint32_t address, uint32_t fc, uint32_t value);
-static inline void m68ki_write_32_fc(m68000_base_device *m68k, uint32_t address, uint32_t fc, uint32_t value);
-static inline void m68ki_write_32_pd_fc(m68000_base_device *m68k, uint32_t address, uint32_t fc, uint32_t value);
-
-/* Indexed and PC-relative ea fetching */
-static inline uint32_t m68ki_get_ea_pcdi(m68000_base_device *m68k);
-static inline uint32_t m68ki_get_ea_pcix(m68000_base_device *m68k);
-static inline uint32_t m68ki_get_ea_ix(m68000_base_device *m68k, uint32_t An);
-
-/* Operand fetching */
-static inline uint32_t OPER_AY_AI_8(m68000_base_device *m68k);
-static inline uint32_t OPER_AY_AI_16(m68000_base_device *m68k);
-static inline uint32_t OPER_AY_AI_32(m68000_base_device *m68k);
-static inline uint32_t OPER_AY_PI_8(m68000_base_device *m68k);
-static inline uint32_t OPER_AY_PI_16(m68000_base_device *m68k);
-static inline uint32_t OPER_AY_PI_32(m68000_base_device *m68k);
-static inline uint32_t OPER_AY_PD_8(m68000_base_device *m68k);
-static inline uint32_t OPER_AY_PD_16(m68000_base_device *m68k);
-static inline uint32_t OPER_AY_PD_32(m68000_base_device *m68k);
-static inline uint32_t OPER_AY_DI_8(m68000_base_device *m68k);
-static inline uint32_t OPER_AY_DI_16(m68000_base_device *m68k);
-static inline uint32_t OPER_AY_DI_32(m68000_base_device *m68k);
-static inline uint32_t OPER_AY_IX_8(m68000_base_device *m68k);
-static inline uint32_t OPER_AY_IX_16(m68000_base_device *m68k);
-static inline uint32_t OPER_AY_IX_32(m68000_base_device *m68k);
-
-static inline uint32_t OPER_AX_AI_8(m68000_base_device *m68k);
-static inline uint32_t OPER_AX_AI_16(m68000_base_device *m68k);
-static inline uint32_t OPER_AX_AI_32(m68000_base_device *m68k);
-static inline uint32_t OPER_AX_PI_8(m68000_base_device *m68k);
-static inline uint32_t OPER_AX_PI_16(m68000_base_device *m68k);
-static inline uint32_t OPER_AX_PI_32(m68000_base_device *m68k);
-static inline uint32_t OPER_AX_PD_8(m68000_base_device *m68k);
-static inline uint32_t OPER_AX_PD_16(m68000_base_device *m68k);
-static inline uint32_t OPER_AX_PD_32(m68000_base_device *m68k);
-static inline uint32_t OPER_AX_DI_8(m68000_base_device *m68k);
-static inline uint32_t OPER_AX_DI_16(m68000_base_device *m68k);
-static inline uint32_t OPER_AX_DI_32(m68000_base_device *m68k);
-static inline uint32_t OPER_AX_IX_8(m68000_base_device *m68k);
-static inline uint32_t OPER_AX_IX_16(m68000_base_device *m68k);
-static inline uint32_t OPER_AX_IX_32(m68000_base_device *m68k);
-
-static inline uint32_t OPER_A7_PI_8(m68000_base_device *m68k);
-static inline uint32_t OPER_A7_PD_8(m68000_base_device *m68k);
-
-static inline uint32_t OPER_AW_8(m68000_base_device *m68k);
-static inline uint32_t OPER_AW_16(m68000_base_device *m68k);
-static inline uint32_t OPER_AW_32(m68000_base_device *m68k);
-static inline uint32_t OPER_AL_8(m68000_base_device *m68k);
-static inline uint32_t OPER_AL_16(m68000_base_device *m68k);
-static inline uint32_t OPER_AL_32(m68000_base_device *m68k);
-static inline uint32_t OPER_PCDI_8(m68000_base_device *m68k);
-static inline uint32_t OPER_PCDI_16(m68000_base_device *m68k);
-static inline uint32_t OPER_PCDI_32(m68000_base_device *m68k);
-static inline uint32_t OPER_PCIX_8(m68000_base_device *m68k);
-static inline uint32_t OPER_PCIX_16(m68000_base_device *m68k);
-static inline uint32_t OPER_PCIX_32(m68000_base_device *m68k);
-
-/* Stack operations */
-static inline void m68ki_push_16(m68000_base_device *m68k, uint32_t value);
-static inline void m68ki_push_32(m68000_base_device *m68k, uint32_t value);
-static inline uint32_t m68ki_pull_16(m68000_base_device *m68k);
-static inline uint32_t m68ki_pull_32(m68000_base_device *m68k);
-
-/* Program flow operations */
-static inline void m68ki_jump(m68000_base_device *m68k, uint32_t new_pc);
-static inline void m68ki_jump_vector(m68000_base_device *m68k, uint32_t vector);
-static inline void m68ki_branch_8(m68000_base_device *m68k, uint32_t offset);
-static inline void m68ki_branch_16(m68000_base_device *m68k, uint32_t offset);
-static inline void m68ki_branch_32(m68000_base_device *m68k, uint32_t offset);
-
-/* Status register operations. */
-static inline void m68ki_set_s_flag(m68000_base_device *m68k, uint32_t value); /* Only bit 2 of value should be set (i.e. 4 or 0) */
-static inline void m68ki_set_sm_flag(m68000_base_device *m68k, uint32_t value); /* only bits 1 and 2 of value should be set */
-static inline void m68ki_set_ccr(m68000_base_device *m68k, uint32_t value); /* set the condition code register */
-static inline void m68ki_set_sr(m68000_base_device *m68k, uint32_t value); /* set the status register */
-static inline void m68ki_set_sr_noint(m68000_base_device *m68k, uint32_t value); /* set the status register */
-
-/* Exception processing */
-static inline uint32_t m68ki_init_exception(m68000_base_device *m68k); /* Initial exception processing */
-
-static inline void m68ki_stack_frame_3word(m68000_base_device *m68k, uint32_t pc, uint32_t sr); /* Stack various frame types */
-static inline void m68ki_stack_frame_buserr(m68000_base_device *m68k, uint32_t sr);
-
-static inline void m68ki_stack_frame_0000(m68000_base_device *m68k, uint32_t pc, uint32_t sr, uint32_t vector);
-static inline void m68ki_stack_frame_0001(m68000_base_device *m68k, uint32_t pc, uint32_t sr, uint32_t vector);
-static inline void m68ki_stack_frame_0010(m68000_base_device *m68k, uint32_t sr, uint32_t vector);
-static inline void m68ki_stack_frame_1000(m68000_base_device *m68k, uint32_t pc, uint32_t sr, uint32_t vector);
-static inline void m68ki_stack_frame_1010(m68000_base_device *m68k, uint32_t sr, uint32_t vector, uint32_t pc, uint32_t fault_address);
-static inline void m68ki_stack_frame_1011(m68000_base_device *m68k, uint32_t sr, uint32_t vector, uint32_t pc, uint32_t fault_address);
-static inline void m68ki_stack_frame_0111(m68000_base_device *m68k, uint32_t sr, uint32_t vector, uint32_t pc, uint32_t fault_address, bool in_mmu);
-
-static inline void m68ki_exception_trap(m68000_base_device *m68k, uint32_t vector);
-static inline void m68ki_exception_trapN(m68000_base_device *m68k, uint32_t vector);
-static inline void m68ki_exception_trace(m68000_base_device *m68k);
-static inline void m68ki_exception_privilege_violation(m68000_base_device *m68k);
-static inline void m68ki_exception_1010(m68000_base_device *m68k);
-static inline void m68ki_exception_1111(m68000_base_device *m68k);
-static inline void m68ki_exception_illegal(m68000_base_device *m68k);
-static inline void m68ki_exception_format_error(m68000_base_device *m68k);
-static inline void m68ki_exception_address_error(m68000_base_device *m68k);
-
-static inline void m68ki_check_interrupts(m68000_base_device *m68k); /* ASG: check for interrupts */
-
-/* quick disassembly (used for logging) */
-char* m68ki_disassemble_quick(unsigned int pc, unsigned int cpu_type);
+static const uint8_t m68ki_shift_8_table[65];
+static const uint16_t m68ki_shift_16_table[65];
+static const uint32_t m68ki_shift_32_table[65];
+static const uint8_t m68ki_exception_cycle_table[7][256];
+static const uint8_t m68ki_ea_idx_cycle_table[64];
/* ======================================================================== */
/* =========================== UTILITY FUNCTIONS ========================== */
/* ======================================================================== */
-static inline unsigned int m68k_read_pcrelative_8(m68000_base_device *m68k, unsigned int address)
+inline unsigned int m68k_read_pcrelative_8(unsigned int address)
{
- return ((m68k->readimm16(address&~1)>>(8*(1-(address & 1))))&0xff);
+ return ((m_readimm16(address&~1)>>(8*(1-(address & 1))))&0xff);
}
-static inline unsigned int m68k_read_pcrelative_16(m68000_base_device *m68k, unsigned int address)
+inline unsigned int m68k_read_pcrelative_16(unsigned int address)
{
if (!WORD_ALIGNED(address))
return
- (m68k->readimm16(address-1) << 8) |
- (m68k->readimm16(address+1) >> 8);
+ (m_readimm16(address-1) << 8) |
+ (m_readimm16(address+1) >> 8);
else
return
- (m68k->readimm16(address ) );
+ (m_readimm16(address ) );
}
-static inline unsigned int m68k_read_pcrelative_32(m68000_base_device *m68k, unsigned int address)
+inline unsigned int m68k_read_pcrelative_32(unsigned int address)
{
if (!WORD_ALIGNED(address))
return
- (m68k->readimm16(address-1) << 24) |
- (m68k->readimm16(address+1) << 8) |
- (m68k->readimm16(address+3) >> 8);
+ (m_readimm16(address-1) << 24) |
+ (m_readimm16(address+1) << 8) |
+ (m_readimm16(address+3) >> 8);
else
return
- (m68k->readimm16(address ) << 16) |
- (m68k->readimm16(address+2) );
+ (m_readimm16(address ) << 16) |
+ (m_readimm16(address+2) );
}
@@ -656,59 +508,59 @@ static inline unsigned int m68k_read_pcrelative_32(m68000_base_device *m68k, uns
* A real 68k first writes the high word to [address+2], and then writes the
* low word to [address].
*/
-static inline void m68kx_write_memory_32_pd(m68000_base_device *m68k, unsigned int address, unsigned int value)
+inline void m68kx_write_memory_32_pd(unsigned int address, unsigned int value)
{
- m68k->/*memory.*/write16(address+2, value>>16);
- m68k->/*memory.*/write16(address, value&0xffff);
+ m_write16(address+2, value>>16);
+ m_write16(address, value&0xffff);
}
/* ---------------------------- Read Immediate ---------------------------- */
// clear the instruction cache
-static inline void m68ki_ic_clear(m68000_base_device *m68k)
+inline void m68ki_ic_clear()
{
int i;
for (i=0; i< M68K_IC_SIZE; i++) {
- m68k->ic_address[i] = ~0;
+ m_ic_address[i] = ~0;
}
}
// read immediate word using the instruction cache
-static inline uint32_t m68ki_ic_readimm16(m68000_base_device *m68k, uint32_t address)
+inline uint32_t m68ki_ic_readimm16(uint32_t address)
{
- if (m68k->cacr & M68K_CACR_EI)
+ if (m_cacr & M68K_CACR_EI)
{
// 68020 series I-cache (MC68020 User's Manual, Section 4 - On-Chip Cache Memory)
- if (m68k->cpu_type & (CPU_TYPE_EC020 | CPU_TYPE_020))
+ if (m_cpu_type & (CPU_TYPE_EC020 | CPU_TYPE_020))
{
- uint32_t tag = (address >> 8) | (m68k->s_flag ? 0x1000000 : 0);
+ uint32_t tag = (address >> 8) | (m_s_flag ? 0x1000000 : 0);
int idx = (address >> 2) & 0x3f; // 1-of-64 select
// do a cache fill if the line is invalid or the tags don't match
- if ((!m68k->ic_valid[idx]) || (m68k->ic_address[idx] != tag))
+ if ((!m_ic_valid[idx]) || (m_ic_address[idx] != tag))
{
// if the cache is frozen, don't update it
- if (m68k->cacr & M68K_CACR_FI)
+ if (m_cacr & M68K_CACR_FI)
{
- return m68k->readimm16(address);
+ return m_readimm16(address);
}
- uint32_t data = m68k->read32(address & ~3);
+ uint32_t data = m_read32(address & ~3);
//printf("m68k: doing cache fill at %08x (tag %08x idx %d)\n", address, tag, idx);
// if no buserror occurred, validate the tag
- if (!m68k->mmu_tmp_buserror_occurred)
+ if (!m_mmu_tmp_buserror_occurred)
{
- m68k->ic_address[idx] = tag;
- m68k->ic_data[idx] = data;
- m68k->ic_valid[idx] = true;
+ m_ic_address[idx] = tag;
+ m_ic_data[idx] = data;
+ m_ic_valid[idx] = true;
}
else
{
- return m68k->readimm16(address);
+ return m_readimm16(address);
}
}
@@ -716,71 +568,71 @@ static inline uint32_t m68ki_ic_readimm16(m68000_base_device *m68k, uint32_t add
// a hit or because we just filled it.
if (address & 2)
{
- return m68k->ic_data[idx] & 0xffff;
+ return m_ic_data[idx] & 0xffff;
}
else
{
- return m68k->ic_data[idx] >> 16;
+ return m_ic_data[idx] >> 16;
}
}
}
- return m68k->readimm16(address);
+ return m_readimm16(address);
}
/* Handles all immediate reads, does address error check, function code setting,
* and prefetching if they are enabled in m68kconf.h
*/
-static inline uint32_t m68ki_read_imm_16(m68000_base_device *m68k)
+inline uint32_t m68ki_read_imm_16()
{
uint32_t result;
- m68k->mmu_tmp_fc = m68k->s_flag | FUNCTION_CODE_USER_PROGRAM;
- m68k->mmu_tmp_rw = 1;
+ m_mmu_tmp_fc = m_s_flag | FUNCTION_CODE_USER_PROGRAM;
+ m_mmu_tmp_rw = 1;
- m68ki_check_address_error(m68k, REG_PC(m68k), MODE_READ, m68k->s_flag | FUNCTION_CODE_USER_PROGRAM); /* auto-disable (see m68kcpu.h) */
+ m68ki_check_address_error(m_pc, MODE_READ, m_s_flag | FUNCTION_CODE_USER_PROGRAM); /* auto-disable (see m68kcpu.h) */
- if(REG_PC(m68k) != m68k->pref_addr)
+ if (m_pc != m_pref_addr)
{
- m68k->pref_data = m68ki_ic_readimm16(m68k, REG_PC(m68k));
- m68k->pref_addr = m68k->mmu_tmp_buserror_occurred ? ~0 : REG_PC(m68k);
+ m_pref_data = m68ki_ic_readimm16(m_pc);
+ m_pref_addr = m_mmu_tmp_buserror_occurred ? ~0 : m_pc;
}
- result = MASK_OUT_ABOVE_16(m68k->pref_data);
- REG_PC(m68k) += 2;
- if (!m68k->mmu_tmp_buserror_occurred) {
+ result = MASK_OUT_ABOVE_16(m_pref_data);
+ m_pc += 2;
+ if (!m_mmu_tmp_buserror_occurred) {
// prefetch only if no bus error occurred in opcode fetch
- m68k->pref_data = m68ki_ic_readimm16(m68k, REG_PC(m68k));
- m68k->pref_addr = m68k->mmu_tmp_buserror_occurred ? ~0 : REG_PC(m68k);
+ m_pref_data = m68ki_ic_readimm16(m_pc);
+ m_pref_addr = m_mmu_tmp_buserror_occurred ? ~0 : m_pc;
// ignore bus error on prefetch
- m68k->mmu_tmp_buserror_occurred = 0;
+ m_mmu_tmp_buserror_occurred = 0;
}
return result;
}
-static inline uint32_t m68ki_read_imm_32(m68000_base_device *m68k)
+inline uint32_t m68ki_read_imm_32()
{
uint32_t temp_val;
- m68k->mmu_tmp_fc = m68k->s_flag | FUNCTION_CODE_USER_PROGRAM;
- m68k->mmu_tmp_rw = 1;
+ m_mmu_tmp_fc = m_s_flag | FUNCTION_CODE_USER_PROGRAM;
+ m_mmu_tmp_rw = 1;
- m68ki_check_address_error(m68k, REG_PC(m68k), MODE_READ, m68k->s_flag | FUNCTION_CODE_USER_PROGRAM); /* auto-disable (see m68kcpu.h) */
+ m68ki_check_address_error(m_pc, MODE_READ, m_s_flag | FUNCTION_CODE_USER_PROGRAM); /* auto-disable (see m68kcpu.h) */
- if(REG_PC(m68k) != m68k->pref_addr)
+ if(m_pc != m_pref_addr)
{
- m68k->pref_addr = REG_PC(m68k);
- m68k->pref_data = m68ki_ic_readimm16(m68k, m68k->pref_addr);
+ m_pref_addr = m_pc;
+ m_pref_data = m68ki_ic_readimm16(m_pref_addr);
}
- temp_val = MASK_OUT_ABOVE_16(m68k->pref_data);
- REG_PC(m68k) += 2;
- m68k->pref_addr = REG_PC(m68k);
- m68k->pref_data = m68ki_ic_readimm16(m68k, m68k->pref_addr);
+ temp_val = MASK_OUT_ABOVE_16(m_pref_data);
+ m_pc += 2;
+ m_pref_addr = m_pc;
+ m_pref_data = m68ki_ic_readimm16(m_pref_addr);
- temp_val = MASK_OUT_ABOVE_32((temp_val << 16) | MASK_OUT_ABOVE_16(m68k->pref_data));
- REG_PC(m68k) += 2;
- m68k->pref_data = m68ki_ic_readimm16(m68k, REG_PC(m68k));
- m68k->pref_addr = m68k->mmu_tmp_buserror_occurred ? ~0 : REG_PC(m68k);
+ temp_val = MASK_OUT_ABOVE_32((temp_val << 16) | MASK_OUT_ABOVE_16(m_pref_data));
+ m_pc += 2;
+ m_pref_data = m68ki_ic_readimm16(m_pc);
+ m_pref_addr = m_mmu_tmp_buserror_occurred ? ~0 : m_pc;
return temp_val;
}
@@ -795,58 +647,58 @@ static inline uint32_t m68ki_read_imm_32(m68000_base_device *m68k)
* These functions will also check for address error and set the function
* code if they are enabled in m68kconf.h.
*/
-static inline uint32_t m68ki_read_8_fc(m68000_base_device *m68k, uint32_t address, uint32_t fc)
+inline uint32_t m68ki_read_8_fc(uint32_t address, uint32_t fc)
{
- m68k->mmu_tmp_fc = fc;
- m68k->mmu_tmp_rw = 1;
- return m68k->/*memory.*/read8(address);
+ m_mmu_tmp_fc = fc;
+ m_mmu_tmp_rw = 1;
+ return m_read8(address);
}
-static inline uint32_t m68ki_read_16_fc(m68000_base_device *m68k, uint32_t address, uint32_t fc)
+inline uint32_t m68ki_read_16_fc(uint32_t address, uint32_t fc)
{
- if (CPU_TYPE_IS_010_LESS(m68k->cpu_type))
+ if (CPU_TYPE_IS_010_LESS())
{
- m68ki_check_address_error(m68k, address, MODE_READ, fc);
+ m68ki_check_address_error(address, MODE_READ, fc);
}
- m68k->mmu_tmp_fc = fc;
- m68k->mmu_tmp_rw = 1;
- return m68k->/*memory.*/read16(address);
+ m_mmu_tmp_fc = fc;
+ m_mmu_tmp_rw = 1;
+ return m_read16(address);
}
-static inline uint32_t m68ki_read_32_fc(m68000_base_device *m68k, uint32_t address, uint32_t fc)
+inline uint32_t m68ki_read_32_fc(uint32_t address, uint32_t fc)
{
- if (CPU_TYPE_IS_010_LESS(m68k->cpu_type))
+ if (CPU_TYPE_IS_010_LESS())
{
- m68ki_check_address_error(m68k, address, MODE_READ, fc);
+ m68ki_check_address_error(address, MODE_READ, fc);
}
- m68k->mmu_tmp_fc = fc;
- m68k->mmu_tmp_rw = 1;
- return m68k->/*memory.*/read32(address);
+ m_mmu_tmp_fc = fc;
+ m_mmu_tmp_rw = 1;
+ return m_read32(address);
}
-static inline void m68ki_write_8_fc(m68000_base_device *m68k, uint32_t address, uint32_t fc, uint32_t value)
+inline void m68ki_write_8_fc(uint32_t address, uint32_t fc, uint32_t value)
{
- m68k->mmu_tmp_fc = fc;
- m68k->mmu_tmp_rw = 0;
- m68k->/*memory.*/write8(address, value);
+ m_mmu_tmp_fc = fc;
+ m_mmu_tmp_rw = 0;
+ m_write8(address, value);
}
-static inline void m68ki_write_16_fc(m68000_base_device *m68k, uint32_t address, uint32_t fc, uint32_t value)
+inline void m68ki_write_16_fc(uint32_t address, uint32_t fc, uint32_t value)
{
- if (CPU_TYPE_IS_010_LESS(m68k->cpu_type))
+ if (CPU_TYPE_IS_010_LESS())
{
- m68ki_check_address_error(m68k, address, MODE_WRITE, fc);
+ m68ki_check_address_error(address, MODE_WRITE, fc);
}
- m68k->mmu_tmp_fc = fc;
- m68k->mmu_tmp_rw = 0;
- m68k->/*memory.*/write16(address, value);
+ m_mmu_tmp_fc = fc;
+ m_mmu_tmp_rw = 0;
+ m_write16(address, value);
}
-static inline void m68ki_write_32_fc(m68000_base_device *m68k, uint32_t address, uint32_t fc, uint32_t value)
+inline void m68ki_write_32_fc(uint32_t address, uint32_t fc, uint32_t value)
{
- if (CPU_TYPE_IS_010_LESS(m68k->cpu_type))
+ if (CPU_TYPE_IS_010_LESS())
{
- m68ki_check_address_error(m68k, address, MODE_WRITE, fc);
+ m68ki_check_address_error(address, MODE_WRITE, fc);
}
- m68k->mmu_tmp_fc = fc;
- m68k->mmu_tmp_rw = 0;
- m68k->/*memory.*/write32(address, value);
+ m_mmu_tmp_fc = fc;
+ m_mmu_tmp_rw = 0;
+ m_write32(address, value);
}
/* Special call to simulate undocumented 68k behavior when move.l with a
@@ -854,16 +706,16 @@ static inline void m68ki_write_32_fc(m68000_base_device *m68k, uint32_t address,
* A real 68k first writes the high word to [address+2], and then writes the
* low word to [address].
*/
-static inline void m68ki_write_32_pd_fc(m68000_base_device *m68k, uint32_t address, uint32_t fc, uint32_t value)
+inline void m68ki_write_32_pd_fc(uint32_t address, uint32_t fc, uint32_t value)
{
- if (CPU_TYPE_IS_010_LESS(m68k->cpu_type))
+ if (CPU_TYPE_IS_010_LESS())
{
- m68ki_check_address_error(m68k, address, MODE_WRITE, fc);
+ m68ki_check_address_error(address, MODE_WRITE, fc);
}
- m68k->mmu_tmp_fc = fc;
- m68k->mmu_tmp_rw = 0;
- m68k->/*memory.*/write16(address+2, value>>16);
- m68k->/*memory.*/write16(address, value&0xffff);
+ m_mmu_tmp_fc = fc;
+ m_mmu_tmp_rw = 0;
+ m_write16(address+2, value>>16);
+ m_write16(address, value&0xffff);
}
@@ -872,16 +724,16 @@ static inline void m68ki_write_32_pd_fc(m68000_base_device *m68k, uint32_t addre
/* The program counter relative addressing modes cause operands to be
* retrieved from program space, not data space.
*/
-static inline uint32_t m68ki_get_ea_pcdi(m68000_base_device *m68k)
+inline uint32_t m68ki_get_ea_pcdi()
{
- uint32_t old_pc = REG_PC(m68k);
- return old_pc + MAKE_INT_16(m68ki_read_imm_16(m68k));
+ uint32_t old_pc = m_pc;
+ return old_pc + MAKE_INT_16(m68ki_read_imm_16());
}
-static inline uint32_t m68ki_get_ea_pcix(m68000_base_device *m68k)
+inline uint32_t m68ki_get_ea_pcix()
{
- return m68ki_get_ea_ix(m68k, REG_PC(m68k));
+ return m68ki_get_ea_ix(m_pc);
}
/* Indexed addressing modes are encoded as follows:
@@ -926,18 +778,18 @@ static inline uint32_t m68ki_get_ea_pcix(m68000_base_device *m68k)
* 1 011 mem indir with long outer
* 1 100-111 reserved
*/
-static inline uint32_t m68ki_get_ea_ix(m68000_base_device *m68k, uint32_t An)
+inline uint32_t m68ki_get_ea_ix(uint32_t An)
{
/* An = base register */
- uint32_t extension = m68ki_read_imm_16(m68k);
+ uint32_t extension = m68ki_read_imm_16();
uint32_t Xn = 0; /* Index register */
uint32_t bd = 0; /* Base Displacement */
uint32_t od = 0; /* Outer Displacement */
- if(CPU_TYPE_IS_010_LESS(m68k->cpu_type))
+ if(CPU_TYPE_IS_010_LESS())
{
/* Calculate index */
- Xn = REG_DA(m68k)[extension>>12]; /* Xn */
+ Xn = REG_DA()[extension>>12]; /* Xn */
if(!BIT_B(extension)) /* W/L */
Xn = MAKE_INT_16(Xn);
@@ -949,11 +801,11 @@ static inline uint32_t m68ki_get_ea_ix(m68000_base_device *m68k, uint32_t An)
if(!BIT_8(extension))
{
/* Calculate index */
- Xn = REG_DA(m68k)[extension>>12]; /* Xn */
+ Xn = REG_DA()[extension>>12]; /* Xn */
if(!BIT_B(extension)) /* W/L */
Xn = MAKE_INT_16(Xn);
/* Add scale if proper CPU type */
- if(CPU_TYPE_IS_EC020_PLUS(m68k->cpu_type))
+ if(CPU_TYPE_IS_EC020_PLUS())
Xn <<= (extension>>9) & 3; /* SCALE */
/* Add base register and displacement and return */
@@ -962,7 +814,7 @@ static inline uint32_t m68ki_get_ea_ix(m68000_base_device *m68k, uint32_t An)
/* Full extension format */
- m68k->remaining_cycles -= m68ki_ea_idx_cycle_table[extension&0x3f];
+ m_remaining_cycles -= m68ki_ea_idx_cycle_table[extension&0x3f];
/* Check if base register is present */
if(BIT_7(extension)) /* BS */
@@ -971,7 +823,7 @@ static inline uint32_t m68ki_get_ea_ix(m68000_base_device *m68k, uint32_t An)
/* Check if index is present */
if(!BIT_6(extension)) /* IS */
{
- Xn = REG_DA(m68k)[extension>>12]; /* Xn */
+ Xn = REG_DA()[extension>>12]; /* Xn */
if(!BIT_B(extension)) /* W/L */
Xn = MAKE_INT_16(Xn);
Xn <<= (extension>>9) & 3; /* SCALE */
@@ -979,7 +831,7 @@ static inline uint32_t m68ki_get_ea_ix(m68000_base_device *m68k, uint32_t An)
/* Check if base displacement is present */
if(BIT_5(extension)) /* BD SIZE */
- bd = BIT_4(extension) ? m68ki_read_imm_32(m68k) : MAKE_INT_16(m68ki_read_imm_16(m68k));
+ bd = BIT_4(extension) ? m68ki_read_imm_32() : MAKE_INT_16(m68ki_read_imm_16());
/* If no indirect action, we are done */
if(!(extension&7)) /* No Memory Indirect */
@@ -987,117 +839,117 @@ static inline uint32_t m68ki_get_ea_ix(m68000_base_device *m68k, uint32_t An)
/* Check if outer displacement is present */
if(BIT_1(extension)) /* I/IS: od */
- od = BIT_0(extension) ? m68ki_read_imm_32(m68k) : MAKE_INT_16(m68ki_read_imm_16(m68k));
+ od = BIT_0(extension) ? m68ki_read_imm_32() : MAKE_INT_16(m68ki_read_imm_16());
/* Postindex */
if(BIT_2(extension)) /* I/IS: 0 = preindex, 1 = postindex */
- return m68ki_read_32(m68k, An + bd) + Xn + od;
+ return m68ki_read_32(An + bd) + Xn + od;
/* Preindex */
- return m68ki_read_32(m68k, An + bd + Xn) + od;
+ return m68ki_read_32(An + bd + Xn) + od;
}
/* Fetch operands */
-static inline uint32_t OPER_AY_AI_8(m68000_base_device *m68k) {uint32_t ea = EA_AY_AI_8(m68k); return m68ki_read_8(m68k, ea); }
-static inline uint32_t OPER_AY_AI_16(m68000_base_device *m68k) {uint32_t ea = EA_AY_AI_16(m68k); return m68ki_read_16(m68k, ea);}
-static inline uint32_t OPER_AY_AI_32(m68000_base_device *m68k) {uint32_t ea = EA_AY_AI_32(m68k); return m68ki_read_32(m68k, ea);}
-static inline uint32_t OPER_AY_PI_8(m68000_base_device *m68k) {uint32_t ea = EA_AY_PI_8(m68k); return m68ki_read_8(m68k, ea); }
-static inline uint32_t OPER_AY_PI_16(m68000_base_device *m68k) {uint32_t ea = EA_AY_PI_16(m68k); return m68ki_read_16(m68k, ea);}
-static inline uint32_t OPER_AY_PI_32(m68000_base_device *m68k) {uint32_t ea = EA_AY_PI_32(m68k); return m68ki_read_32(m68k, ea);}
-static inline uint32_t OPER_AY_PD_8(m68000_base_device *m68k) {uint32_t ea = EA_AY_PD_8(m68k); return m68ki_read_8(m68k, ea); }
-static inline uint32_t OPER_AY_PD_16(m68000_base_device *m68k) {uint32_t ea = EA_AY_PD_16(m68k); return m68ki_read_16(m68k, ea);}
-static inline uint32_t OPER_AY_PD_32(m68000_base_device *m68k) {uint32_t ea = EA_AY_PD_32(m68k); return m68ki_read_32(m68k, ea);}
-static inline uint32_t OPER_AY_DI_8(m68000_base_device *m68k) {uint32_t ea = EA_AY_DI_8(m68k); return m68ki_read_8(m68k, ea); }
-static inline uint32_t OPER_AY_DI_16(m68000_base_device *m68k) {uint32_t ea = EA_AY_DI_16(m68k); return m68ki_read_16(m68k, ea);}
-static inline uint32_t OPER_AY_DI_32(m68000_base_device *m68k) {uint32_t ea = EA_AY_DI_32(m68k); return m68ki_read_32(m68k, ea);}
-static inline uint32_t OPER_AY_IX_8(m68000_base_device *m68k) {uint32_t ea = EA_AY_IX_8(m68k); return m68ki_read_8(m68k, ea); }
-static inline uint32_t OPER_AY_IX_16(m68000_base_device *m68k) {uint32_t ea = EA_AY_IX_16(m68k); return m68ki_read_16(m68k, ea);}
-static inline uint32_t OPER_AY_IX_32(m68000_base_device *m68k) {uint32_t ea = EA_AY_IX_32(m68k); return m68ki_read_32(m68k, ea);}
-
-static inline uint32_t OPER_AX_AI_8(m68000_base_device *m68k) {uint32_t ea = EA_AX_AI_8(m68k); return m68ki_read_8(m68k, ea); }
-static inline uint32_t OPER_AX_AI_16(m68000_base_device *m68k) {uint32_t ea = EA_AX_AI_16(m68k); return m68ki_read_16(m68k, ea);}
-static inline uint32_t OPER_AX_AI_32(m68000_base_device *m68k) {uint32_t ea = EA_AX_AI_32(m68k); return m68ki_read_32(m68k, ea);}
-static inline uint32_t OPER_AX_PI_8(m68000_base_device *m68k) {uint32_t ea = EA_AX_PI_8(m68k); return m68ki_read_8(m68k, ea); }
-static inline uint32_t OPER_AX_PI_16(m68000_base_device *m68k) {uint32_t ea = EA_AX_PI_16(m68k); return m68ki_read_16(m68k, ea);}
-static inline uint32_t OPER_AX_PI_32(m68000_base_device *m68k) {uint32_t ea = EA_AX_PI_32(m68k); return m68ki_read_32(m68k, ea);}
-static inline uint32_t OPER_AX_PD_8(m68000_base_device *m68k) {uint32_t ea = EA_AX_PD_8(m68k); return m68ki_read_8(m68k, ea); }
-static inline uint32_t OPER_AX_PD_16(m68000_base_device *m68k) {uint32_t ea = EA_AX_PD_16(m68k); return m68ki_read_16(m68k, ea);}
-static inline uint32_t OPER_AX_PD_32(m68000_base_device *m68k) {uint32_t ea = EA_AX_PD_32(m68k); return m68ki_read_32(m68k, ea);}
-static inline uint32_t OPER_AX_DI_8(m68000_base_device *m68k) {uint32_t ea = EA_AX_DI_8(m68k); return m68ki_read_8(m68k, ea); }
-static inline uint32_t OPER_AX_DI_16(m68000_base_device *m68k) {uint32_t ea = EA_AX_DI_16(m68k); return m68ki_read_16(m68k, ea);}
-static inline uint32_t OPER_AX_DI_32(m68000_base_device *m68k) {uint32_t ea = EA_AX_DI_32(m68k); return m68ki_read_32(m68k, ea);}
-static inline uint32_t OPER_AX_IX_8(m68000_base_device *m68k) {uint32_t ea = EA_AX_IX_8(m68k); return m68ki_read_8(m68k, ea); }
-static inline uint32_t OPER_AX_IX_16(m68000_base_device *m68k) {uint32_t ea = EA_AX_IX_16(m68k); return m68ki_read_16(m68k, ea);}
-static inline uint32_t OPER_AX_IX_32(m68000_base_device *m68k) {uint32_t ea = EA_AX_IX_32(m68k); return m68ki_read_32(m68k, ea);}
-
-static inline uint32_t OPER_A7_PI_8(m68000_base_device *m68k) {uint32_t ea = EA_A7_PI_8(m68k); return m68ki_read_8(m68k, ea); }
-static inline uint32_t OPER_A7_PD_8(m68000_base_device *m68k) {uint32_t ea = EA_A7_PD_8(m68k); return m68ki_read_8(m68k, ea); }
-
-static inline uint32_t OPER_AW_8(m68000_base_device *m68k) {uint32_t ea = EA_AW_8(m68k); return m68ki_read_8(m68k, ea); }
-static inline uint32_t OPER_AW_16(m68000_base_device *m68k) {uint32_t ea = EA_AW_16(m68k); return m68ki_read_16(m68k, ea);}
-static inline uint32_t OPER_AW_32(m68000_base_device *m68k) {uint32_t ea = EA_AW_32(m68k); return m68ki_read_32(m68k, ea);}
-static inline uint32_t OPER_AL_8(m68000_base_device *m68k) {uint32_t ea = EA_AL_8(m68k); return m68ki_read_8(m68k, ea); }
-static inline uint32_t OPER_AL_16(m68000_base_device *m68k) {uint32_t ea = EA_AL_16(m68k); return m68ki_read_16(m68k, ea);}
-static inline uint32_t OPER_AL_32(m68000_base_device *m68k) {uint32_t ea = EA_AL_32(m68k); return m68ki_read_32(m68k, ea);}
-static inline uint32_t OPER_PCDI_8(m68000_base_device *m68k) {uint32_t ea = EA_PCDI_8(m68k); return m68ki_read_pcrel_8(m68k, ea); }
-static inline uint32_t OPER_PCDI_16(m68000_base_device *m68k) {uint32_t ea = EA_PCDI_16(m68k); return m68ki_read_pcrel_16(m68k, ea);}
-static inline uint32_t OPER_PCDI_32(m68000_base_device *m68k) {uint32_t ea = EA_PCDI_32(m68k); return m68ki_read_pcrel_32(m68k, ea);}
-static inline uint32_t OPER_PCIX_8(m68000_base_device *m68k) {uint32_t ea = EA_PCIX_8(m68k); return m68ki_read_pcrel_8(m68k, ea); }
-static inline uint32_t OPER_PCIX_16(m68000_base_device *m68k) {uint32_t ea = EA_PCIX_16(m68k); return m68ki_read_pcrel_16(m68k, ea);}
-static inline uint32_t OPER_PCIX_32(m68000_base_device *m68k) {uint32_t ea = EA_PCIX_32(m68k); return m68ki_read_pcrel_32(m68k, ea);}
+inline uint32_t OPER_AY_AI_8() {uint32_t ea = EA_AY_AI_8(); return m68ki_read_8(ea); }
+inline uint32_t OPER_AY_AI_16() {uint32_t ea = EA_AY_AI_16(); return m68ki_read_16(ea);}
+inline uint32_t OPER_AY_AI_32() {uint32_t ea = EA_AY_AI_32(); return m68ki_read_32(ea);}
+inline uint32_t OPER_AY_PI_8() {uint32_t ea = EA_AY_PI_8(); return m68ki_read_8(ea); }
+inline uint32_t OPER_AY_PI_16() {uint32_t ea = EA_AY_PI_16(); return m68ki_read_16(ea);}
+inline uint32_t OPER_AY_PI_32() {uint32_t ea = EA_AY_PI_32(); return m68ki_read_32(ea);}
+inline uint32_t OPER_AY_PD_8() {uint32_t ea = EA_AY_PD_8(); return m68ki_read_8(ea); }
+inline uint32_t OPER_AY_PD_16() {uint32_t ea = EA_AY_PD_16(); return m68ki_read_16(ea);}
+inline uint32_t OPER_AY_PD_32() {uint32_t ea = EA_AY_PD_32(); return m68ki_read_32(ea);}
+inline uint32_t OPER_AY_DI_8() {uint32_t ea = EA_AY_DI_8(); return m68ki_read_8(ea); }
+inline uint32_t OPER_AY_DI_16() {uint32_t ea = EA_AY_DI_16(); return m68ki_read_16(ea);}
+inline uint32_t OPER_AY_DI_32() {uint32_t ea = EA_AY_DI_32(); return m68ki_read_32(ea);}
+inline uint32_t OPER_AY_IX_8() {uint32_t ea = EA_AY_IX_8(); return m68ki_read_8(ea); }
+inline uint32_t OPER_AY_IX_16() {uint32_t ea = EA_AY_IX_16(); return m68ki_read_16(ea);}
+inline uint32_t OPER_AY_IX_32() {uint32_t ea = EA_AY_IX_32(); return m68ki_read_32(ea);}
+
+inline uint32_t OPER_AX_AI_8() {uint32_t ea = EA_AX_AI_8(); return m68ki_read_8(ea); }
+inline uint32_t OPER_AX_AI_16() {uint32_t ea = EA_AX_AI_16(); return m68ki_read_16(ea);}
+inline uint32_t OPER_AX_AI_32() {uint32_t ea = EA_AX_AI_32(); return m68ki_read_32(ea);}
+inline uint32_t OPER_AX_PI_8() {uint32_t ea = EA_AX_PI_8(); return m68ki_read_8(ea); }
+inline uint32_t OPER_AX_PI_16() {uint32_t ea = EA_AX_PI_16(); return m68ki_read_16(ea);}
+inline uint32_t OPER_AX_PI_32() {uint32_t ea = EA_AX_PI_32(); return m68ki_read_32(ea);}
+inline uint32_t OPER_AX_PD_8() {uint32_t ea = EA_AX_PD_8(); return m68ki_read_8(ea); }
+inline uint32_t OPER_AX_PD_16() {uint32_t ea = EA_AX_PD_16(); return m68ki_read_16(ea);}
+inline uint32_t OPER_AX_PD_32() {uint32_t ea = EA_AX_PD_32(); return m68ki_read_32(ea);}
+inline uint32_t OPER_AX_DI_8() {uint32_t ea = EA_AX_DI_8(); return m68ki_read_8(ea); }
+inline uint32_t OPER_AX_DI_16() {uint32_t ea = EA_AX_DI_16(); return m68ki_read_16(ea);}
+inline uint32_t OPER_AX_DI_32() {uint32_t ea = EA_AX_DI_32(); return m68ki_read_32(ea);}
+inline uint32_t OPER_AX_IX_8() {uint32_t ea = EA_AX_IX_8(); return m68ki_read_8(ea); }
+inline uint32_t OPER_AX_IX_16() {uint32_t ea = EA_AX_IX_16(); return m68ki_read_16(ea);}
+inline uint32_t OPER_AX_IX_32() {uint32_t ea = EA_AX_IX_32(); return m68ki_read_32(ea);}
+
+inline uint32_t OPER_A7_PI_8() {uint32_t ea = EA_A7_PI_8(); return m68ki_read_8(ea); }
+inline uint32_t OPER_A7_PD_8() {uint32_t ea = EA_A7_PD_8(); return m68ki_read_8(ea); }
+
+inline uint32_t OPER_AW_8() {uint32_t ea = EA_AW_8(); return m68ki_read_8(ea); }
+inline uint32_t OPER_AW_16() {uint32_t ea = EA_AW_16(); return m68ki_read_16(ea);}
+inline uint32_t OPER_AW_32() {uint32_t ea = EA_AW_32(); return m68ki_read_32(ea);}
+inline uint32_t OPER_AL_8() {uint32_t ea = EA_AL_8(); return m68ki_read_8(ea); }
+inline uint32_t OPER_AL_16() {uint32_t ea = EA_AL_16(); return m68ki_read_16(ea);}
+inline uint32_t OPER_AL_32() {uint32_t ea = EA_AL_32(); return m68ki_read_32(ea);}
+inline uint32_t OPER_PCDI_8() {uint32_t ea = EA_PCDI_8(); return m68ki_read_pcrel_8(ea); }
+inline uint32_t OPER_PCDI_16() {uint32_t ea = EA_PCDI_16(); return m68ki_read_pcrel_16(ea);}
+inline uint32_t OPER_PCDI_32() {uint32_t ea = EA_PCDI_32(); return m68ki_read_pcrel_32(ea);}
+inline uint32_t OPER_PCIX_8() {uint32_t ea = EA_PCIX_8(); return m68ki_read_pcrel_8(ea); }
+inline uint32_t OPER_PCIX_16() {uint32_t ea = EA_PCIX_16(); return m68ki_read_pcrel_16(ea);}
+inline uint32_t OPER_PCIX_32() {uint32_t ea = EA_PCIX_32(); return m68ki_read_pcrel_32(ea);}
/* ---------------------------- Stack Functions --------------------------- */
/* Push/pull data from the stack */
-static inline void m68ki_push_16(m68000_base_device *m68k, uint32_t value)
+inline void m68ki_push_16(uint32_t value)
{
- REG_SP(m68k) = MASK_OUT_ABOVE_32(REG_SP(m68k) - 2);
- m68ki_write_16(m68k, REG_SP(m68k), value);
+ REG_SP() = MASK_OUT_ABOVE_32(REG_SP() - 2);
+ m68ki_write_16(REG_SP(), value);
}
-static inline void m68ki_push_32(m68000_base_device *m68k, uint32_t value)
+inline void m68ki_push_32(uint32_t value)
{
- REG_SP(m68k) = MASK_OUT_ABOVE_32(REG_SP(m68k) - 4);
- m68ki_write_32(m68k, REG_SP(m68k), value);
+ REG_SP() = MASK_OUT_ABOVE_32(REG_SP() - 4);
+ m68ki_write_32(REG_SP(), value);
}
-static inline uint32_t m68ki_pull_16(m68000_base_device *m68k)
+inline uint32_t m68ki_pull_16()
{
- REG_SP(m68k) = MASK_OUT_ABOVE_32(REG_SP(m68k) + 2);
- return m68ki_read_16(m68k, REG_SP(m68k)-2);
+ REG_SP() = MASK_OUT_ABOVE_32(REG_SP() + 2);
+ return m68ki_read_16(REG_SP()-2);
}
-static inline uint32_t m68ki_pull_32(m68000_base_device *m68k)
+inline uint32_t m68ki_pull_32()
{
- REG_SP(m68k) = MASK_OUT_ABOVE_32(REG_SP(m68k) + 4);
- return m68ki_read_32(m68k, REG_SP(m68k)-4);
+ REG_SP() = MASK_OUT_ABOVE_32(REG_SP() + 4);
+ return m68ki_read_32(REG_SP()-4);
}
/* Increment/decrement the stack as if doing a push/pull but
* don't do any memory access.
*/
-static inline void m68ki_fake_push_16(m68000_base_device *m68k)
+inline void m68ki_fake_push_16()
{
- REG_SP(m68k) = MASK_OUT_ABOVE_32(REG_SP(m68k) - 2);
+ REG_SP() = MASK_OUT_ABOVE_32(REG_SP() - 2);
}
-static inline void m68ki_fake_push_32(m68000_base_device *m68k)
+inline void m68ki_fake_push_32()
{
- REG_SP(m68k) = MASK_OUT_ABOVE_32(REG_SP(m68k) - 4);
+ REG_SP() = MASK_OUT_ABOVE_32(REG_SP() - 4);
}
-static inline void m68ki_fake_pull_16(m68000_base_device *m68k)
+inline void m68ki_fake_pull_16()
{
- REG_SP(m68k) = MASK_OUT_ABOVE_32(REG_SP(m68k) + 2);
+ REG_SP() = MASK_OUT_ABOVE_32(REG_SP() + 2);
}
-static inline void m68ki_fake_pull_32(m68000_base_device *m68k)
+inline void m68ki_fake_pull_32()
{
- REG_SP(m68k) = MASK_OUT_ABOVE_32(REG_SP(m68k) + 4);
+ REG_SP() = MASK_OUT_ABOVE_32(REG_SP() + 4);
}
@@ -1107,15 +959,15 @@ static inline void m68ki_fake_pull_32(m68000_base_device *m68k)
* These functions will also call the pc_changed callback if it was enabled
* in m68kconf.h.
*/
-static inline void m68ki_jump(m68000_base_device *m68k, uint32_t new_pc)
+inline void m68ki_jump(uint32_t new_pc)
{
- REG_PC(m68k) = new_pc;
+ m_pc = new_pc;
}
-static inline void m68ki_jump_vector(m68000_base_device *m68k, uint32_t vector)
+inline void m68ki_jump_vector(uint32_t vector)
{
- REG_PC(m68k) = (vector<<2) + m68k->vbr;
- REG_PC(m68k) = m68ki_read_data_32(m68k, REG_PC(m68k));
+ m_pc = (vector<<2) + m_vbr;
+ m_pc = m68ki_read_data_32(m_pc);
}
@@ -1124,19 +976,19 @@ static inline void m68ki_jump_vector(m68000_base_device *m68k, uint32_t vector)
* So far I've found no problems with not calling pc_changed for 8 or 16
* bit branches.
*/
-static inline void m68ki_branch_8(m68000_base_device *m68k, uint32_t offset)
+inline void m68ki_branch_8(uint32_t offset)
{
- REG_PC(m68k) += MAKE_INT_8(offset);
+ m_pc += MAKE_INT_8(offset);
}
-static inline void m68ki_branch_16(m68000_base_device *m68k, uint32_t offset)
+inline void m68ki_branch_16(uint32_t offset)
{
- REG_PC(m68k) += MAKE_INT_16(offset);
+ m_pc += MAKE_INT_16(offset);
}
-static inline void m68ki_branch_32(m68000_base_device *m68k, uint32_t offset)
+inline void m68ki_branch_32(uint32_t offset)
{
- REG_PC(m68k) += offset;
+ m_pc += offset;
}
@@ -1146,215 +998,215 @@ static inline void m68ki_branch_32(m68000_base_device *m68k, uint32_t offset)
/* Set the S flag and change the active stack pointer.
* Note that value MUST be 4 or 0.
*/
-static inline void m68ki_set_s_flag(m68000_base_device *m68k, uint32_t value)
+inline void m68ki_set_s_flag(uint32_t value)
{
/* Backup the old stack pointer */
- REG_SP_BASE(m68k)[m68k->s_flag | ((m68k->s_flag>>1) & m68k->m_flag)] = REG_SP(m68k);
+ REG_SP_BASE()[m_s_flag | ((m_s_flag>>1) & m_m_flag)] = REG_SP();
/* Set the S flag */
- m68k->s_flag = value;
+ m_s_flag = value;
/* Set the new stack pointer */
- REG_SP(m68k) = REG_SP_BASE(m68k)[m68k->s_flag | ((m68k->s_flag>>1) & m68k->m_flag)];
+ REG_SP() = REG_SP_BASE()[m_s_flag | ((m_s_flag>>1) & m_m_flag)];
}
/* Set the S and M flags and change the active stack pointer.
* Note that value MUST be 0, 2, 4, or 6 (bit2 = S, bit1 = M).
*/
-static inline void m68ki_set_sm_flag(m68000_base_device *m68k, uint32_t value)
+inline void m68ki_set_sm_flag(uint32_t value)
{
/* Backup the old stack pointer */
- REG_SP_BASE(m68k)[m68k->s_flag | ((m68k->s_flag>>1) & m68k->m_flag)] = REG_SP(m68k);
+ REG_SP_BASE()[m_s_flag | ((m_s_flag >> 1) & m_m_flag)] = REG_SP();
/* Set the S and M flags */
- m68k->s_flag = value & SFLAG_SET;
- m68k->m_flag = value & MFLAG_SET;
+ m_s_flag = value & SFLAG_SET;
+ m_m_flag = value & MFLAG_SET;
/* Set the new stack pointer */
- REG_SP(m68k) = REG_SP_BASE(m68k)[m68k->s_flag | ((m68k->s_flag>>1) & m68k->m_flag)];
+ REG_SP() = REG_SP_BASE()[m_s_flag | ((m_s_flag>>1) & m_m_flag)];
}
/* Set the S and M flags. Don't touch the stack pointer. */
-static inline void m68ki_set_sm_flag_nosp(m68000_base_device *m68k, uint32_t value)
+inline void m68ki_set_sm_flag_nosp(uint32_t value)
{
/* Set the S and M flags */
- m68k->s_flag = value & SFLAG_SET;
- m68k->m_flag = value & MFLAG_SET;
+ m_s_flag = value & SFLAG_SET;
+ m_m_flag = value & MFLAG_SET;
}
/* Set the condition code register */
-static inline void m68ki_set_ccr(m68000_base_device *m68k, uint32_t value)
+inline void m68ki_set_ccr(uint32_t value)
{
- m68k->x_flag = BIT_4(value) << 4;
- m68k->n_flag = BIT_3(value) << 4;
- m68k->not_z_flag = !BIT_2(value);
- m68k->v_flag = BIT_1(value) << 6;
- m68k->c_flag = BIT_0(value) << 8;
+ m_x_flag = BIT_4(value)<< 4;
+ m_n_flag = BIT_3(value)<< 4;
+ m_not_z_flag = !BIT_2(value);
+ m_v_flag = BIT_1(value)<< 6;
+ m_c_flag = BIT_0(value)<< 8;
}
/* Set the status register but don't check for interrupts */
-static inline void m68ki_set_sr_noint(m68000_base_device *m68k, uint32_t value)
+inline void m68ki_set_sr_noint(uint32_t value)
{
/* Mask out the "unimplemented" bits */
- value &= m68k->sr_mask;
+ value &= m_sr_mask;
/* Now set the status register */
- m68k->t1_flag = BIT_F(value);
- m68k->t0_flag = BIT_E(value);
- m68k->int_mask = value & 0x0700;
- m68ki_set_ccr(m68k, value);
- m68ki_set_sm_flag(m68k, (value >> 11) & 6);
+ m_t1_flag = BIT_F(value);
+ m_t0_flag = BIT_E(value);
+ m_int_mask = value & 0x0700;
+ m68ki_set_ccr(value);
+ m68ki_set_sm_flag((value >> 11) & 6);
}
/* Set the status register but don't check for interrupts nor
* change the stack pointer
*/
-static inline void m68ki_set_sr_noint_nosp(m68000_base_device *m68k, uint32_t value)
+inline void m68ki_set_sr_noint_nosp(uint32_t value)
{
/* Mask out the "unimplemented" bits */
- value &= m68k->sr_mask;
+ value &= m_sr_mask;
/* Now set the status register */
- m68k->t1_flag = BIT_F(value);
- m68k->t0_flag = BIT_E(value);
- m68k->int_mask = value & 0x0700;
- m68ki_set_ccr(m68k, value);
- m68ki_set_sm_flag_nosp(m68k, (value >> 11) & 6);
+ m_t1_flag = BIT_F(value);
+ m_t0_flag = BIT_E(value);
+ m_int_mask = value & 0x0700;
+ m68ki_set_ccr(value);
+ m68ki_set_sm_flag_nosp((value >> 11) & 6);
}
/* Set the status register and check for interrupts */
-static inline void m68ki_set_sr(m68000_base_device *m68k, uint32_t value)
+inline void m68ki_set_sr(uint32_t value)
{
- m68ki_set_sr_noint(m68k, value);
- m68ki_check_interrupts(m68k);
+ m68ki_set_sr_noint(value);
+ m68ki_check_interrupts();
}
/* ------------------------- Exception Processing ------------------------- */
/* Initiate exception processing */
-static inline uint32_t m68ki_init_exception(m68000_base_device *m68k)
+inline uint32_t m68ki_init_exception()
{
/* Save the old status register */
- uint32_t sr = m68ki_get_sr(m68k);
+ uint32_t sr = m68ki_get_sr();
/* Turn off trace flag, clear pending traces */
- m68k->t1_flag = m68k->t0_flag = 0;
- m68ki_clear_trace(m68k);
+ m_t1_flag = m_t0_flag = 0;
+ m68ki_clear_trace();
/* Enter supervisor mode */
- m68ki_set_s_flag(m68k, SFLAG_SET);
+ m68ki_set_s_flag(SFLAG_SET);
return sr;
}
/* 3 word stack frame (68000 only) */
-static inline void m68ki_stack_frame_3word(m68000_base_device *m68k, uint32_t pc, uint32_t sr)
+inline void m68ki_stack_frame_3word(uint32_t pc, uint32_t sr)
{
- m68ki_push_32(m68k, pc);
- m68ki_push_16(m68k, sr);
+ m68ki_push_32(pc);
+ m68ki_push_16(sr);
}
/* Format 0 stack frame.
* This is the standard stack frame for 68010+.
*/
-static inline void m68ki_stack_frame_0000(m68000_base_device *m68k, uint32_t pc, uint32_t sr, uint32_t vector)
+inline void m68ki_stack_frame_0000(uint32_t pc, uint32_t sr, uint32_t vector)
{
/* Stack a 3-word frame if we are 68000 */
- if(m68k->cpu_type == CPU_TYPE_000 || m68k->cpu_type == CPU_TYPE_008)
+ if(m_cpu_type == CPU_TYPE_000 || m_cpu_type == CPU_TYPE_008)
{
- m68ki_stack_frame_3word(m68k, pc, sr);
+ m68ki_stack_frame_3word(pc, sr);
return;
}
- m68ki_push_16(m68k, vector<<2);
- m68ki_push_32(m68k, pc);
- m68ki_push_16(m68k, sr);
+ m68ki_push_16(vector<<2);
+ m68ki_push_32(pc);
+ m68ki_push_16(sr);
}
/* Format 1 stack frame (68020).
* For 68020, this is the 4 word throwaway frame.
*/
-static inline void m68ki_stack_frame_0001(m68000_base_device *m68k, uint32_t pc, uint32_t sr, uint32_t vector)
+inline void m68ki_stack_frame_0001(uint32_t pc, uint32_t sr, uint32_t vector)
{
- m68ki_push_16(m68k, 0x1000 | (vector<<2));
- m68ki_push_32(m68k, pc);
- m68ki_push_16(m68k, sr);
+ m68ki_push_16(0x1000 | (vector<<2));
+ m68ki_push_32(pc);
+ m68ki_push_16(sr);
}
/* Format 2 stack frame.
* This is used only by 68020 for trap exceptions.
*/
-static inline void m68ki_stack_frame_0010(m68000_base_device *m68k, uint32_t sr, uint32_t vector)
+inline void m68ki_stack_frame_0010(uint32_t sr, uint32_t vector)
{
- m68ki_push_32(m68k, REG_PPC(m68k));
- m68ki_push_16(m68k, 0x2000 | (vector<<2));
- m68ki_push_32(m68k, REG_PC(m68k));
- m68ki_push_16(m68k, sr);
+ m68ki_push_32(m_ppc);
+ m68ki_push_16(0x2000 | (vector<<2));
+ m68ki_push_32(m_pc);
+ m68ki_push_16(sr);
}
/* Bus error stack frame (68000 only).
*/
-static inline void m68ki_stack_frame_buserr(m68000_base_device *m68k, uint32_t sr)
+inline void m68ki_stack_frame_buserr(uint32_t sr)
{
- m68ki_push_32(m68k, REG_PC(m68k));
- m68ki_push_16(m68k, sr);
- m68ki_push_16(m68k, m68k->ir);
- m68ki_push_32(m68k, m68k->aerr_address); /* access address */
+ m68ki_push_32(m_pc);
+ m68ki_push_16(sr);
+ m68ki_push_16(m_ir);
+ m68ki_push_32(m_aerr_address); /* access address */
/* 0 0 0 0 0 0 0 0 0 0 0 R/W I/N FC
* R/W 0 = write, 1 = read
* I/N 0 = instruction, 1 = not
* FC 3-bit function code
*/
- m68ki_push_16(m68k, m68k->aerr_write_mode | m68k->instr_mode | m68k->aerr_fc);
+ m68ki_push_16(m_aerr_write_mode | m_instr_mode | m_aerr_fc);
}
/* Format 8 stack frame (68010).
* 68010 only. This is the 29 word bus/address error frame.
*/
-static inline void m68ki_stack_frame_1000(m68000_base_device *m68k, uint32_t pc, uint32_t sr, uint32_t vector)
+inline void m68ki_stack_frame_1000(uint32_t pc, uint32_t sr, uint32_t vector)
{
/* VERSION
* NUMBER
* INTERNAL INFORMATION, 16 WORDS
*/
- m68ki_fake_push_32(m68k);
- m68ki_fake_push_32(m68k);
- m68ki_fake_push_32(m68k);
- m68ki_fake_push_32(m68k);
- m68ki_fake_push_32(m68k);
- m68ki_fake_push_32(m68k);
- m68ki_fake_push_32(m68k);
- m68ki_fake_push_32(m68k);
+ m68ki_fake_push_32();
+ m68ki_fake_push_32();
+ m68ki_fake_push_32();
+ m68ki_fake_push_32();
+ m68ki_fake_push_32();
+ m68ki_fake_push_32();
+ m68ki_fake_push_32();
+ m68ki_fake_push_32();
/* INSTRUCTION INPUT BUFFER */
- m68ki_push_16(m68k, 0);
+ m68ki_push_16(0);
/* UNUSED, RESERVED (not written) */
- m68ki_fake_push_16(m68k);
+ m68ki_fake_push_16();
/* DATA INPUT BUFFER */
- m68ki_push_16(m68k, 0);
+ m68ki_push_16(0);
/* UNUSED, RESERVED (not written) */
- m68ki_fake_push_16(m68k);
+ m68ki_fake_push_16();
/* DATA OUTPUT BUFFER */
- m68ki_push_16(m68k, 0);
+ m68ki_push_16(0);
/* UNUSED, RESERVED (not written) */
- m68ki_fake_push_16(m68k);
+ m68ki_fake_push_16();
/* FAULT ADDRESS */
- m68ki_push_32(m68k, 0);
+ m68ki_push_32(0);
/* SPECIAL STATUS WORD */
- m68ki_push_16(m68k, 0);
+ m68ki_push_16(0);
/* 1000, VECTOR OFFSET */
- m68ki_push_16(m68k, 0x8000 | (vector<<2));
+ m68ki_push_16(0x8000 | (vector<<2));
/* PROGRAM COUNTER */
- m68ki_push_32(m68k, pc);
+ m68ki_push_32(pc);
/* STATUS REGISTER */
- m68ki_push_16(m68k, sr);
+ m68ki_push_16(sr);
}
/* Format A stack frame (short bus fault).
@@ -1362,51 +1214,51 @@ static inline void m68ki_stack_frame_1000(m68000_base_device *m68k, uint32_t pc,
* if the error happens at an instruction boundary.
* PC stacked is address of next instruction.
*/
-static inline void m68ki_stack_frame_1010(m68000_base_device *m68k, uint32_t sr, uint32_t vector, uint32_t pc, uint32_t fault_address)
+inline void m68ki_stack_frame_1010(uint32_t sr, uint32_t vector, uint32_t pc, uint32_t fault_address)
{
- int orig_rw = m68k->mmu_tmp_buserror_rw; // this gets splatted by the following pushes, so save it now
- int orig_fc = m68k->mmu_tmp_buserror_fc;
+ int orig_rw = m_mmu_tmp_buserror_rw; // this gets splatted by the following pushes, so save it now
+ int orig_fc = m_mmu_tmp_buserror_fc;
/* INTERNAL REGISTER */
- m68ki_push_16(m68k, 0);
+ m68ki_push_16(0);
/* INTERNAL REGISTER */
- m68ki_push_16(m68k, 0);
+ m68ki_push_16(0);
/* DATA OUTPUT BUFFER (2 words) */
- m68ki_push_32(m68k, 0);
+ m68ki_push_32(0);
/* INTERNAL REGISTER */
- m68ki_push_16(m68k, 0);
+ m68ki_push_16(0);
/* INTERNAL REGISTER */
- m68ki_push_16(m68k, 0);
+ m68ki_push_16(0);
/* DATA CYCLE FAULT ADDRESS (2 words) */
- m68ki_push_32(m68k, fault_address);
+ m68ki_push_32(fault_address);
/* INSTRUCTION PIPE STAGE B */
- m68ki_push_16(m68k, 0);
+ m68ki_push_16(0);
/* INSTRUCTION PIPE STAGE C */
- m68ki_push_16(m68k, 0);
+ m68ki_push_16(0);
/* SPECIAL STATUS REGISTER */
// set bit for: Rerun Faulted bus Cycle, or run pending prefetch
// set FC
- m68ki_push_16(m68k, 0x0100 | orig_fc | orig_rw<<6);
+ m68ki_push_16(0x0100 | orig_fc | orig_rw<<6);
/* INTERNAL REGISTER */
- m68ki_push_16(m68k, 0);
+ m68ki_push_16(0);
/* 1010, VECTOR OFFSET */
- m68ki_push_16(m68k, 0xa000 | (vector<<2));
+ m68ki_push_16(0xa000 | (vector<<2));
/* PROGRAM COUNTER */
- m68ki_push_32(m68k, pc);
+ m68ki_push_32(pc);
/* STATUS REGISTER */
- m68ki_push_16(m68k, sr);
+ m68ki_push_16(sr);
}
/* Format B stack frame (long bus fault).
@@ -1414,301 +1266,301 @@ static inline void m68ki_stack_frame_1010(m68000_base_device *m68k, uint32_t sr,
* if the error happens during instruction execution.
* PC stacked is address of instruction in progress.
*/
-static inline void m68ki_stack_frame_1011(m68000_base_device *m68k, uint32_t sr, uint32_t vector, uint32_t pc, uint32_t fault_address)
+inline void m68ki_stack_frame_1011(uint32_t sr, uint32_t vector, uint32_t pc, uint32_t fault_address)
{
- int orig_rw = m68k->mmu_tmp_buserror_rw; // this gets splatted by the following pushes, so save it now
- int orig_fc = m68k->mmu_tmp_buserror_fc;
+ int orig_rw = m_mmu_tmp_buserror_rw; // this gets splatted by the following pushes, so save it now
+ int orig_fc = m_mmu_tmp_buserror_fc;
/* INTERNAL REGISTERS (18 words) */
- m68ki_push_32(m68k, 0);
- m68ki_push_32(m68k, 0);
- m68ki_push_32(m68k, 0);
- m68ki_push_32(m68k, 0);
- m68ki_push_32(m68k, 0);
- m68ki_push_32(m68k, 0);
- m68ki_push_32(m68k, 0);
- m68ki_push_32(m68k, 0);
- m68ki_push_32(m68k, 0);
+ m68ki_push_32(0);
+ m68ki_push_32(0);
+ m68ki_push_32(0);
+ m68ki_push_32(0);
+ m68ki_push_32(0);
+ m68ki_push_32(0);
+ m68ki_push_32(0);
+ m68ki_push_32(0);
+ m68ki_push_32(0);
/* VERSION# (4 bits), INTERNAL INFORMATION */
- m68ki_push_16(m68k, 0);
+ m68ki_push_16(0);
/* INTERNAL REGISTERS (3 words) */
- m68ki_push_32(m68k, 0);
- m68ki_push_16(m68k, 0);
+ m68ki_push_32(0);
+ m68ki_push_16(0);
/* DATA INTPUT BUFFER (2 words) */
- m68ki_push_32(m68k, 0);
+ m68ki_push_32(0);
/* INTERNAL REGISTERS (2 words) */
- m68ki_push_32(m68k, 0);
+ m68ki_push_32(0);
/* STAGE B ADDRESS (2 words) */
- m68ki_push_32(m68k, 0);
+ m68ki_push_32(0);
/* INTERNAL REGISTER (4 words) */
- m68ki_push_32(m68k, 0);
- m68ki_push_32(m68k, 0);
+ m68ki_push_32(0);
+ m68ki_push_32(0);
/* DATA OUTPUT BUFFER (2 words) */
- m68ki_push_32(m68k, 0);
+ m68ki_push_32(0);
/* INTERNAL REGISTER */
- m68ki_push_16(m68k, 0);
+ m68ki_push_16(0);
/* INTERNAL REGISTER */
- m68ki_push_16(m68k, 0);
+ m68ki_push_16(0);
/* DATA CYCLE FAULT ADDRESS (2 words) */
- m68ki_push_32(m68k, fault_address);
+ m68ki_push_32(fault_address);
/* INSTRUCTION PIPE STAGE B */
- m68ki_push_16(m68k, 0);
+ m68ki_push_16(0);
/* INSTRUCTION PIPE STAGE C */
- m68ki_push_16(m68k, 0);
+ m68ki_push_16(0);
/* SPECIAL STATUS REGISTER */
- m68ki_push_16(m68k, 0x0100 | orig_fc | orig_rw<<6);
+ m68ki_push_16(0x0100 | orig_fc | orig_rw<<6);
/* INTERNAL REGISTER */
- m68ki_push_16(m68k, 0);
+ m68ki_push_16(0);
/* 1011, VECTOR OFFSET */
- m68ki_push_16(m68k, 0xb000 | (vector<<2));
+ m68ki_push_16(0xb000 | (vector<<2));
/* PROGRAM COUNTER */
- m68ki_push_32(m68k, pc);
+ m68ki_push_32(pc);
/* STATUS REGISTER */
- m68ki_push_16(m68k, sr);
+ m68ki_push_16(sr);
}
/* Type 7 stack frame (access fault).
* This is used by the 68040 for bus fault and mmu trap
* 30 words
*/
-static inline void m68ki_stack_frame_0111(m68000_base_device *m68k, uint32_t sr, uint32_t vector, uint32_t pc, uint32_t fault_address, bool in_mmu)
+inline void m68ki_stack_frame_0111(uint32_t sr, uint32_t vector, uint32_t pc, uint32_t fault_address, bool in_mmu)
{
- int orig_rw = m68k->mmu_tmp_buserror_rw; // this gets splatted by the following pushes, so save it now
- int orig_fc = m68k->mmu_tmp_buserror_fc;
+ int orig_rw = m_mmu_tmp_buserror_rw; // this gets splatted by the following pushes, so save it now
+ int orig_fc = m_mmu_tmp_buserror_fc;
/* INTERNAL REGISTERS (18 words) */
- m68ki_push_32(m68k, 0);
- m68ki_push_32(m68k, 0);
- m68ki_push_32(m68k, 0);
- m68ki_push_32(m68k, 0);
- m68ki_push_32(m68k, 0);
- m68ki_push_32(m68k, 0);
- m68ki_push_32(m68k, 0);
- m68ki_push_32(m68k, 0);
- m68ki_push_32(m68k, 0);
+ m68ki_push_32(0);
+ m68ki_push_32(0);
+ m68ki_push_32(0);
+ m68ki_push_32(0);
+ m68ki_push_32(0);
+ m68ki_push_32(0);
+ m68ki_push_32(0);
+ m68ki_push_32(0);
+ m68ki_push_32(0);
/* FAULT ADDRESS (2 words) */
- m68ki_push_32(m68k, fault_address);
+ m68ki_push_32(fault_address);
/* INTERNAL REGISTERS (3 words) */
- m68ki_push_32(m68k, 0);
- m68ki_push_16(m68k, 0);
+ m68ki_push_32(0);
+ m68ki_push_16(0);
/* SPECIAL STATUS REGISTER (1 word) */
- m68ki_push_16(m68k, (in_mmu ? 0x400 : 0) | orig_fc | (orig_rw<<8));
+ m68ki_push_16((in_mmu ? 0x400 : 0) | orig_fc | (orig_rw<<8));
/* EFFECTIVE ADDRESS (2 words) */
- m68ki_push_32(m68k, fault_address);
+ m68ki_push_32(fault_address);
/* 0111, VECTOR OFFSET (1 word) */
- m68ki_push_16(m68k, 0x7000 | (vector<<2));
+ m68ki_push_16(0x7000 | (vector<<2));
/* PROGRAM COUNTER (2 words) */
- m68ki_push_32(m68k, pc);
+ m68ki_push_32(pc);
/* STATUS REGISTER (1 word) */
- m68ki_push_16(m68k, sr);
+ m68ki_push_16(sr);
}
/* Used for Group 2 exceptions.
* These stack a type 2 frame on the 020.
*/
-static inline void m68ki_exception_trap(m68000_base_device *m68k, uint32_t vector)
+inline void m68ki_exception_trap(uint32_t vector)
{
- uint32_t sr = m68ki_init_exception(m68k);
+ uint32_t sr = m68ki_init_exception();
- if(CPU_TYPE_IS_010_LESS(m68k->cpu_type))
- m68ki_stack_frame_0000(m68k, REG_PC(m68k), sr, vector);
+ if(CPU_TYPE_IS_010_LESS())
+ m68ki_stack_frame_0000(m_pc, sr, vector);
else
- m68ki_stack_frame_0010(m68k, sr, vector);
+ m68ki_stack_frame_0010(sr, vector);
- m68ki_jump_vector(m68k, vector);
+ m68ki_jump_vector(vector);
/* Use up some clock cycles */
- m68k->remaining_cycles -= m68k->cyc_exception[vector];
+ m_remaining_cycles -= m_cyc_exception[vector];
}
/* Trap#n stacks a 0 frame but behaves like group2 otherwise */
-static inline void m68ki_exception_trapN(m68000_base_device *m68k, uint32_t vector)
+inline void m68ki_exception_trapN(uint32_t vector)
{
- uint32_t sr = m68ki_init_exception(m68k);
- m68ki_stack_frame_0000(m68k, REG_PC(m68k), sr, vector);
- m68ki_jump_vector(m68k, vector);
+ uint32_t sr = m68ki_init_exception();
+ m68ki_stack_frame_0000(m_pc, sr, vector);
+ m68ki_jump_vector(vector);
/* Use up some clock cycles */
- m68k->remaining_cycles -= m68k->cyc_exception[vector];
+ m_remaining_cycles -= m_cyc_exception[vector];
}
/* Exception for trace mode */
-static inline void m68ki_exception_trace(m68000_base_device *m68k)
+inline void m68ki_exception_trace()
{
- uint32_t sr = m68ki_init_exception(m68k);
+ uint32_t sr = m68ki_init_exception();
- if(CPU_TYPE_IS_010_LESS(m68k->cpu_type))
+ if(CPU_TYPE_IS_010_LESS())
{
- if(CPU_TYPE_IS_000(m68k->cpu_type))
+ if(CPU_TYPE_IS_000())
{
- m68k->instr_mode = INSTRUCTION_NO;
+ m_instr_mode = INSTRUCTION_NO;
}
- m68ki_stack_frame_0000(m68k, REG_PC(m68k), sr, EXCEPTION_TRACE);
+ m68ki_stack_frame_0000(m_pc, sr, EXCEPTION_TRACE);
}
else
- m68ki_stack_frame_0010(m68k, sr, EXCEPTION_TRACE);
+ m68ki_stack_frame_0010(sr, EXCEPTION_TRACE);
- m68ki_jump_vector(m68k, EXCEPTION_TRACE);
+ m68ki_jump_vector(EXCEPTION_TRACE);
/* Trace nullifies a STOP instruction */
- m68k->stopped &= ~STOP_LEVEL_STOP;
+ m_stopped &= ~STOP_LEVEL_STOP;
/* Use up some clock cycles */
- m68k->remaining_cycles -= m68k->cyc_exception[EXCEPTION_TRACE];
+ m_remaining_cycles -= m_cyc_exception[EXCEPTION_TRACE];
}
/* Exception for privilege violation */
-static inline void m68ki_exception_privilege_violation(m68000_base_device *m68k)
+inline void m68ki_exception_privilege_violation()
{
- uint32_t sr = m68ki_init_exception(m68k);
+ uint32_t sr = m68ki_init_exception();
- if(CPU_TYPE_IS_000(m68k->cpu_type))
+ if(CPU_TYPE_IS_000())
{
- m68k->instr_mode = INSTRUCTION_NO;
+ m_instr_mode = INSTRUCTION_NO;
}
- m68ki_stack_frame_0000(m68k, REG_PPC(m68k), sr, EXCEPTION_PRIVILEGE_VIOLATION);
- m68ki_jump_vector(m68k, EXCEPTION_PRIVILEGE_VIOLATION);
+ m68ki_stack_frame_0000(m_ppc, sr, EXCEPTION_PRIVILEGE_VIOLATION);
+ m68ki_jump_vector(EXCEPTION_PRIVILEGE_VIOLATION);
/* Use up some clock cycles and undo the instruction's cycles */
- m68k->remaining_cycles -= m68k->cyc_exception[EXCEPTION_PRIVILEGE_VIOLATION] - m68k->cyc_instruction[m68k->ir];
+ m_remaining_cycles -= m_cyc_exception[EXCEPTION_PRIVILEGE_VIOLATION] - m_cyc_instruction[m_ir];
}
/* Exception for A-Line instructions */
-static inline void m68ki_exception_1010(m68000_base_device *m68k)
+inline void m68ki_exception_1010()
{
uint32_t sr;
- sr = m68ki_init_exception(m68k);
- m68ki_stack_frame_0000(m68k, REG_PPC(m68k), sr, EXCEPTION_1010);
- m68ki_jump_vector(m68k, EXCEPTION_1010);
+ sr = m68ki_init_exception();
+ m68ki_stack_frame_0000(m_ppc, sr, EXCEPTION_1010);
+ m68ki_jump_vector(EXCEPTION_1010);
/* Use up some clock cycles and undo the instruction's cycles */
- m68k->remaining_cycles -= m68k->cyc_exception[EXCEPTION_1010] - m68k->cyc_instruction[m68k->ir];
+ m_remaining_cycles -= m_cyc_exception[EXCEPTION_1010] - m_cyc_instruction[m_ir];
}
/* Exception for F-Line instructions */
-static inline void m68ki_exception_1111(m68000_base_device *m68k)
+inline void m68ki_exception_1111()
{
uint32_t sr;
- sr = m68ki_init_exception(m68k);
- m68ki_stack_frame_0000(m68k, REG_PPC(m68k), sr, EXCEPTION_1111);
- m68ki_jump_vector(m68k, EXCEPTION_1111);
+ sr = m68ki_init_exception();
+ m68ki_stack_frame_0000(m_ppc, sr, EXCEPTION_1111);
+ m68ki_jump_vector(EXCEPTION_1111);
/* Use up some clock cycles and undo the instruction's cycles */
- m68k->remaining_cycles -= m68k->cyc_exception[EXCEPTION_1111] - m68k->cyc_instruction[m68k->ir];
+ m_remaining_cycles -= m_cyc_exception[EXCEPTION_1111] - m_cyc_instruction[m_ir];
}
/* Exception for illegal instructions */
-static inline void m68ki_exception_illegal(m68000_base_device *m68k)
+inline void m68ki_exception_illegal()
{
uint32_t sr;
- sr = m68ki_init_exception(m68k);
+ sr = m68ki_init_exception();
- if(CPU_TYPE_IS_000(m68k->cpu_type))
+ if(CPU_TYPE_IS_000())
{
- m68k->instr_mode = INSTRUCTION_NO;
+ m_instr_mode = INSTRUCTION_NO;
}
- m68ki_stack_frame_0000(m68k, REG_PPC(m68k), sr, EXCEPTION_ILLEGAL_INSTRUCTION);
- m68ki_jump_vector(m68k, EXCEPTION_ILLEGAL_INSTRUCTION);
+ m68ki_stack_frame_0000(m_ppc, sr, EXCEPTION_ILLEGAL_INSTRUCTION);
+ m68ki_jump_vector(EXCEPTION_ILLEGAL_INSTRUCTION);
/* Use up some clock cycles and undo the instruction's cycles */
- m68k->remaining_cycles -= m68k->cyc_exception[EXCEPTION_ILLEGAL_INSTRUCTION] - m68k->cyc_instruction[m68k->ir];
+ m_remaining_cycles -= m_cyc_exception[EXCEPTION_ILLEGAL_INSTRUCTION] - m_cyc_instruction[m_ir];
}
/* Exception for format errror in RTE */
-static inline void m68ki_exception_format_error(m68000_base_device *m68k)
+inline void m68ki_exception_format_error()
{
- uint32_t sr = m68ki_init_exception(m68k);
- m68ki_stack_frame_0000(m68k, REG_PC(m68k), sr, EXCEPTION_FORMAT_ERROR);
- m68ki_jump_vector(m68k, EXCEPTION_FORMAT_ERROR);
+ uint32_t sr = m68ki_init_exception();
+ m68ki_stack_frame_0000(m_pc, sr, EXCEPTION_FORMAT_ERROR);
+ m68ki_jump_vector(EXCEPTION_FORMAT_ERROR);
/* Use up some clock cycles and undo the instruction's cycles */
- m68k->remaining_cycles -= m68k->cyc_exception[EXCEPTION_FORMAT_ERROR] - m68k->cyc_instruction[m68k->ir];
+ m_remaining_cycles -= m_cyc_exception[EXCEPTION_FORMAT_ERROR] - m_cyc_instruction[m_ir];
}
/* Exception for address error */
-static inline void m68ki_exception_address_error(m68000_base_device *m68k)
+inline void m68ki_exception_address_error()
{
- uint32_t sr = m68ki_init_exception(m68k);
+ uint32_t sr = m68ki_init_exception();
/* If we were processing a bus error, address error, or reset,
* this is a catastrophic failure.
* Halt the CPU
*/
- if(m68k->run_mode == RUN_MODE_BERR_AERR_RESET)
+ if(m_run_mode == RUN_MODE_BERR_AERR_RESET)
{
- m68k->/*memory.*/read8(0x00ffff01);
- m68k->stopped = STOP_LEVEL_HALT;
+ m_read8(0x00ffff01);
+ m_stopped = STOP_LEVEL_HALT;
return;
}
- m68k->run_mode = RUN_MODE_BERR_AERR_RESET;
+ m_run_mode = RUN_MODE_BERR_AERR_RESET;
- if (!CPU_TYPE_IS_010_PLUS(m68k->cpu_type))
+ if (!CPU_TYPE_IS_010_PLUS())
{
/* Note: This is implemented for 68000 only! */
- m68ki_stack_frame_buserr(m68k, sr);
+ m68ki_stack_frame_buserr(sr);
}
- else if (CPU_TYPE_IS_010(m68k->cpu_type))
+ else if (CPU_TYPE_IS_010())
{
/* only the 68010 throws this unique type-1000 frame */
- m68ki_stack_frame_1000(m68k, REG_PPC(m68k), sr, EXCEPTION_BUS_ERROR);
+ m68ki_stack_frame_1000(m_ppc, sr, EXCEPTION_BUS_ERROR);
}
- else if (m68k->mmu_tmp_buserror_address == REG_PPC(m68k))
+ else if (m_mmu_tmp_buserror_address == m_ppc)
{
- m68ki_stack_frame_1010(m68k, sr, EXCEPTION_BUS_ERROR, REG_PPC(m68k), m68k->mmu_tmp_buserror_address);
+ m68ki_stack_frame_1010(sr, EXCEPTION_BUS_ERROR, m_ppc, m_mmu_tmp_buserror_address);
}
else
{
- m68ki_stack_frame_1011(m68k, sr, EXCEPTION_BUS_ERROR, REG_PPC(m68k), m68k->mmu_tmp_buserror_address);
+ m68ki_stack_frame_1011(sr, EXCEPTION_BUS_ERROR, m_ppc, m_mmu_tmp_buserror_address);
}
- m68ki_jump_vector(m68k, EXCEPTION_ADDRESS_ERROR);
+ m68ki_jump_vector(EXCEPTION_ADDRESS_ERROR);
/* Use up some clock cycles and undo the instruction's cycles */
- m68k->remaining_cycles -= m68k->cyc_exception[EXCEPTION_ADDRESS_ERROR] - m68k->cyc_instruction[m68k->ir];
+ m_remaining_cycles -= m_cyc_exception[EXCEPTION_ADDRESS_ERROR] - m_cyc_instruction[m_ir];
}
/* ASG: Check for interrupts */
-static inline void m68ki_check_interrupts(m68000_base_device *m68k)
+inline void m68ki_check_interrupts()
{
- if(m68k->nmi_pending)
+ if(m_nmi_pending)
{
- m68k->nmi_pending = false;
- m68k->m68ki_exception_interrupt(m68k, 7);
+ m_nmi_pending = false;
+ m68ki_exception_interrupt(7);
}
- else if(m68k->int_level > m68k->int_mask)
- m68k->m68ki_exception_interrupt(m68k, m68k->int_level>>8);
+ else if(m_int_level > m_int_mask)
+ m68ki_exception_interrupt(m_int_level>>8);
}
diff --git a/src/devices/cpu/m68000/m68kfpu.hxx b/src/devices/cpu/m68000/m68kfpu.hxx
index e53f4ad899d..5e2c74770f3 100644
--- a/src/devices/cpu/m68000/m68kfpu.hxx
+++ b/src/devices/cpu/m68000/m68kfpu.hxx
@@ -1,23 +1,20 @@
// license:BSD-3-Clause
// copyright-holders:Karl Stenerud
-#include <math.h>
-#define FPCC_N 0x08000000
-#define FPCC_Z 0x04000000
-#define FPCC_I 0x02000000
-#define FPCC_NAN 0x01000000
+static constexpr int FPCC_N = 0x08000000;
+static constexpr int FPCC_Z = 0x04000000;
+static constexpr int FPCC_I = 0x02000000;
+static constexpr int FPCC_NAN = 0x01000000;
-#define FPES_OE 0x00002000
-#define FPAE_IOP 0x00000080
+static constexpr int FPES_OE = 0x00002000;
+static constexpr int FPAE_IOP = 0x00000080;
-#define DOUBLE_INFINITY 0x7ff0000000000000U
-#define DOUBLE_EXPONENT 0x7ff0000000000000U
-#define DOUBLE_MANTISSA 0x000fffffffffffffU
-
-extern flag floatx80_is_nan( floatx80 a );
+static constexpr uint64_t DOUBLE_INFINITY = 0x7ff0000000000000U;
+static constexpr uint64_t DOUBLE_EXPONENT = 0x7ff0000000000000U;
+static constexpr uint64_t DOUBLE_MANTISSA = 0x000fffffffffffffU;
// masks for packed dwords, positive k-factor
-static const uint32_t pkmask2[18] =
+const uint32_t pkmask2[18] =
{
0xffffffff, 0, 0xf0000000, 0xff000000, 0xfff00000, 0xffff0000,
0xfffff000, 0xffffff00, 0xfffffff0, 0xffffffff,
@@ -25,7 +22,7 @@ static const uint32_t pkmask2[18] =
0xffffffff, 0xffffffff, 0xffffffff
};
-static const uint32_t pkmask3[18] =
+const uint32_t pkmask3[18] =
{
0xffffffff, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0xf0000000, 0xff000000, 0xfff00000, 0xffff0000,
@@ -53,15 +50,15 @@ static inline floatx80 double_to_fx80(double in)
return float64_to_floatx80(*d);
}
-static inline floatx80 load_extended_float80(m68000_base_device *m68k, uint32_t ea)
+inline floatx80 load_extended_float80(uint32_t ea)
{
uint32_t d1,d2;
uint16_t d3;
floatx80 fp;
- d3 = m68ki_read_16(m68k, ea);
- d1 = m68ki_read_32(m68k, ea+4);
- d2 = m68ki_read_32(m68k, ea+8);
+ d3 = m68ki_read_16(ea);
+ d1 = m68ki_read_32(ea+4);
+ d2 = m68ki_read_32(ea+8);
fp.high = d3;
fp.low = ((uint64_t)d1<<32) | (d2 & 0xffffffff);
@@ -69,24 +66,24 @@ static inline floatx80 load_extended_float80(m68000_base_device *m68k, uint32_t
return fp;
}
-static inline void store_extended_float80(m68000_base_device *m68k, uint32_t ea, floatx80 fpr)
+inline void store_extended_float80(uint32_t ea, floatx80 fpr)
{
- m68ki_write_16(m68k, ea+0, fpr.high);
- m68ki_write_16(m68k, ea+2, 0);
- m68ki_write_32(m68k, ea+4, (fpr.low>>32)&0xffffffff);
- m68ki_write_32(m68k, ea+8, fpr.low&0xffffffff);
+ m68ki_write_16(ea+0, fpr.high);
+ m68ki_write_16(ea+2, 0);
+ m68ki_write_32(ea+4, (fpr.low>>32)&0xffffffff);
+ m68ki_write_32(ea+8, fpr.low&0xffffffff);
}
-static inline floatx80 load_pack_float80(m68000_base_device *m68k, uint32_t ea)
+inline floatx80 load_pack_float80(uint32_t ea)
{
uint32_t dw1, dw2, dw3;
floatx80 result;
double tmp;
char str[128], *ch;
- dw1 = m68ki_read_32(m68k, ea);
- dw2 = m68ki_read_32(m68k, ea+4);
- dw3 = m68ki_read_32(m68k, ea+8);
+ dw1 = m68ki_read_32(ea);
+ dw2 = m68ki_read_32(ea+4);
+ dw3 = m68ki_read_32(ea+8);
ch = &str[0];
if (dw1 & 0x80000000) // mantissa sign
@@ -128,7 +125,7 @@ static inline floatx80 load_pack_float80(m68000_base_device *m68k, uint32_t ea)
return result;
}
-static inline void store_pack_float80(m68000_base_device *m68k, uint32_t ea, int k, floatx80 fpr)
+inline void store_pack_float80(uint32_t ea, int k, floatx80 fpr)
{
uint32_t dw1, dw2, dw3;
char str[128], *ch;
@@ -224,7 +221,7 @@ static inline void store_pack_float80(m68000_base_device *m68k, uint32_t ea, int
{
dw2 &= pkmask2[17];
dw3 &= pkmask3[17];
-// m68k->fpcr |= (need to set OPERR bit)
+// m_fpcr |= (need to set OPERR bit)
}
}
@@ -255,49 +252,49 @@ static inline void store_pack_float80(m68000_base_device *m68k, uint32_t ea, int
dw1 |= (j << 16);
}
- m68ki_write_32(m68k, ea, dw1);
- m68ki_write_32(m68k, ea+4, dw2);
- m68ki_write_32(m68k, ea+8, dw3);
+ m68ki_write_32(ea, dw1);
+ m68ki_write_32(ea+4, dw2);
+ m68ki_write_32(ea+8, dw3);
}
-static inline void SET_CONDITION_CODES(m68000_base_device *m68k, floatx80 reg)
+inline void SET_CONDITION_CODES(floatx80 reg)
{
// uint64_t *regi;
// regi = (uint64_t *)&reg;
- REG_FPSR(m68k) &= ~(FPCC_N|FPCC_Z|FPCC_I|FPCC_NAN);
+ m_fpsr &= ~(FPCC_N|FPCC_Z|FPCC_I|FPCC_NAN);
// sign flag
if (reg.high & 0x8000)
{
- REG_FPSR(m68k) |= FPCC_N;
+ m_fpsr |= FPCC_N;
}
// zero flag
if (((reg.high & 0x7fff) == 0) && ((reg.low<<1) == 0))
{
- REG_FPSR(m68k) |= FPCC_Z;
+ m_fpsr |= FPCC_Z;
}
// infinity flag
if (((reg.high & 0x7fff) == 0x7fff) && ((reg.low<<1) == 0))
{
- REG_FPSR(m68k) |= FPCC_I;
+ m_fpsr |= FPCC_I;
}
// NaN flag
if (floatx80_is_nan(reg))
{
- REG_FPSR(m68k) |= FPCC_NAN;
+ m_fpsr |= FPCC_NAN;
}
}
-static inline int TEST_CONDITION(m68000_base_device *m68k, int condition)
+inline int TEST_CONDITION(int condition)
{
- int n = (REG_FPSR(m68k) & FPCC_N) != 0;
- int z = (REG_FPSR(m68k) & FPCC_Z) != 0;
- int nan = (REG_FPSR(m68k) & FPCC_NAN) != 0;
+ int n = (m_fpsr & FPCC_N) != 0;
+ int z = (m_fpsr & FPCC_Z) != 0;
+ int nan = (m_fpsr & FPCC_NAN) != 0;
int r = 0;
switch (condition)
{
@@ -355,7 +352,7 @@ static inline int TEST_CONDITION(m68000_base_device *m68k, int condition)
return r;
}
-static uint8_t READ_EA_8(m68000_base_device *m68k, int ea)
+uint8_t READ_EA_8(int ea)
{
int mode = (ea >> 3) & 0x7;
int reg = (ea & 0x7);
@@ -364,32 +361,32 @@ static uint8_t READ_EA_8(m68000_base_device *m68k, int ea)
{
case 0: // Dn
{
- return REG_D(m68k)[reg];
+ return REG_D()[reg];
}
case 2: // (An)
{
- uint32_t ea = REG_A(m68k)[reg];
- return m68ki_read_8(m68k, ea);
+ uint32_t ea = REG_A()[reg];
+ return m68ki_read_8(ea);
}
case 3: // (An)+
{
- uint32_t ea = EA_AY_PI_8(m68k);
- return m68ki_read_8(m68k, ea);
+ uint32_t ea = EA_AY_PI_8();
+ return m68ki_read_8(ea);
}
case 4: // -(An)
{
- uint32_t ea = EA_AY_PD_8(m68k);
- return m68ki_read_8(m68k, ea);
+ uint32_t ea = EA_AY_PD_8();
+ return m68ki_read_8(ea);
}
case 5: // (d16, An)
{
- uint32_t ea = EA_AY_DI_8(m68k);
- return m68ki_read_8(m68k, ea);
+ uint32_t ea = EA_AY_DI_8();
+ return m68ki_read_8(ea);
}
case 6: // (An) + (Xn) + d8
{
- uint32_t ea = EA_AY_IX_8(m68k);
- return m68ki_read_8(m68k, ea);
+ uint32_t ea = EA_AY_IX_8();
+ return m68ki_read_8(ea);
}
case 7:
{
@@ -397,41 +394,41 @@ static uint8_t READ_EA_8(m68000_base_device *m68k, int ea)
{
case 0: // (xxx).W
{
- uint32_t ea = (uint32_t)OPER_I_16(m68k);
- return m68ki_read_8(m68k, ea);
+ uint32_t ea = OPER_I_16();
+ return m68ki_read_8(ea);
}
case 1: // (xxx).L
{
- uint32_t d1 = OPER_I_16(m68k);
- uint32_t d2 = OPER_I_16(m68k);
+ uint32_t d1 = OPER_I_16();
+ uint32_t d2 = OPER_I_16();
uint32_t ea = (d1 << 16) | d2;
- return m68ki_read_8(m68k, ea);
+ return m68ki_read_8(ea);
}
case 2: // (d16, PC)
{
- uint32_t ea = EA_PCDI_8(m68k);
- return m68ki_read_8(m68k, ea);
+ uint32_t ea = EA_PCDI_8();
+ return m68ki_read_8(ea);
}
case 3: // (PC) + (Xn) + d8
{
- uint32_t ea = EA_PCIX_8(m68k);
- return m68ki_read_8(m68k, ea);
+ uint32_t ea = EA_PCIX_8();
+ return m68ki_read_8(ea);
}
case 4: // #<data>
{
- return OPER_I_8(m68k);
+ return OPER_I_8();
}
- default: fatalerror("M68kFPU: READ_EA_8: unhandled mode %d, reg %d at %08X\n", mode, reg, REG_PC(m68k));
+ default: fatalerror("M68kFPU: READ_EA_8: unhandled mode %d, reg %d at %08X\n", mode, reg, m_pc);
}
break;
}
- default: fatalerror("M68kFPU: READ_EA_8: unhandled mode %d, reg %d at %08X\n", mode, reg, REG_PC(m68k));
+ default: fatalerror("M68kFPU: READ_EA_8: unhandled mode %d, reg %d at %08X\n", mode, reg, m_pc);
}
return 0;
}
-static uint16_t READ_EA_16(m68000_base_device *m68k, int ea)
+uint16_t READ_EA_16(int ea)
{
int mode = (ea >> 3) & 0x7;
int reg = (ea & 0x7);
@@ -440,32 +437,32 @@ static uint16_t READ_EA_16(m68000_base_device *m68k, int ea)
{
case 0: // Dn
{
- return (uint16_t)(REG_D(m68k)[reg]);
+ return (uint16_t)(REG_D()[reg]);
}
case 2: // (An)
{
- uint32_t ea = REG_A(m68k)[reg];
- return m68ki_read_16(m68k, ea);
+ uint32_t ea = REG_A()[reg];
+ return m68ki_read_16(ea);
}
case 3: // (An)+
{
- uint32_t ea = EA_AY_PI_16(m68k);
- return m68ki_read_16(m68k, ea);
+ uint32_t ea = EA_AY_PI_16();
+ return m68ki_read_16(ea);
}
case 4: // -(An)
{
- uint32_t ea = EA_AY_PD_16(m68k);
- return m68ki_read_16(m68k, ea);
+ uint32_t ea = EA_AY_PD_16();
+ return m68ki_read_16(ea);
}
case 5: // (d16, An)
{
- uint32_t ea = EA_AY_DI_16(m68k);
- return m68ki_read_16(m68k, ea);
+ uint32_t ea = EA_AY_DI_16();
+ return m68ki_read_16(ea);
}
case 6: // (An) + (Xn) + d8
{
- uint32_t ea = EA_AY_IX_16(m68k);
- return m68ki_read_16(m68k, ea);
+ uint32_t ea = EA_AY_IX_16();
+ return m68ki_read_16(ea);
}
case 7:
{
@@ -473,42 +470,42 @@ static uint16_t READ_EA_16(m68000_base_device *m68k, int ea)
{
case 0: // (xxx).W
{
- uint32_t ea = (uint32_t)OPER_I_16(m68k);
- return m68ki_read_16(m68k, ea);
+ uint32_t ea = OPER_I_16();
+ return m68ki_read_16(ea);
}
case 1: // (xxx).L
{
- uint32_t d1 = OPER_I_16(m68k);
- uint32_t d2 = OPER_I_16(m68k);
+ uint32_t d1 = OPER_I_16();
+ uint32_t d2 = OPER_I_16();
uint32_t ea = (d1 << 16) | d2;
- return m68ki_read_16(m68k, ea);
+ return m68ki_read_16(ea);
}
case 2: // (d16, PC)
{
- uint32_t ea = EA_PCDI_16(m68k);
- return m68ki_read_16(m68k, ea);
+ uint32_t ea = EA_PCDI_16();
+ return m68ki_read_16(ea);
}
case 3: // (PC) + (Xn) + d8
{
- uint32_t ea = EA_PCIX_16(m68k);
- return m68ki_read_16(m68k, ea);
+ uint32_t ea = EA_PCIX_16();
+ return m68ki_read_16(ea);
}
case 4: // #<data>
{
- return OPER_I_16(m68k);
+ return OPER_I_16();
}
- default: fatalerror("M68kFPU: READ_EA_16: unhandled mode %d, reg %d at %08X\n", mode, reg, REG_PC(m68k));
+ default: fatalerror("M68kFPU: READ_EA_16: unhandled mode %d, reg %d at %08X\n", mode, reg, m_pc);
}
break;
}
- default: fatalerror("M68kFPU: READ_EA_16: unhandled mode %d, reg %d at %08X\n", mode, reg, REG_PC(m68k));
+ default: fatalerror("M68kFPU: READ_EA_16: unhandled mode %d, reg %d at %08X\n", mode, reg, m_pc);
}
return 0;
}
-static uint32_t READ_EA_32(m68000_base_device *m68k, int ea)
+uint32_t READ_EA_32(int ea)
{
int mode = (ea >> 3) & 0x7;
int reg = (ea & 0x7);
@@ -517,32 +514,32 @@ static uint32_t READ_EA_32(m68000_base_device *m68k, int ea)
{
case 0: // Dn
{
- return REG_D(m68k)[reg];
+ return REG_D()[reg];
}
case 2: // (An)
{
- uint32_t ea = REG_A(m68k)[reg];
- return m68ki_read_32(m68k, ea);
+ uint32_t ea = REG_A()[reg];
+ return m68ki_read_32(ea);
}
case 3: // (An)+
{
- uint32_t ea = EA_AY_PI_32(m68k);
- return m68ki_read_32(m68k, ea);
+ uint32_t ea = EA_AY_PI_32();
+ return m68ki_read_32(ea);
}
case 4: // -(An)
{
- uint32_t ea = EA_AY_PD_32(m68k);
- return m68ki_read_32(m68k, ea);
+ uint32_t ea = EA_AY_PD_32();
+ return m68ki_read_32(ea);
}
case 5: // (d16, An)
{
- uint32_t ea = EA_AY_DI_32(m68k);
- return m68ki_read_32(m68k, ea);
+ uint32_t ea = EA_AY_DI_32();
+ return m68ki_read_32(ea);
}
case 6: // (An) + (Xn) + d8
{
- uint32_t ea = EA_AY_IX_32(m68k);
- return m68ki_read_32(m68k, ea);
+ uint32_t ea = EA_AY_IX_32();
+ return m68ki_read_32(ea);
}
case 7:
{
@@ -550,40 +547,40 @@ static uint32_t READ_EA_32(m68000_base_device *m68k, int ea)
{
case 0: // (xxx).W
{
- uint32_t ea = (uint32_t)OPER_I_16(m68k);
- return m68ki_read_32(m68k, ea);
+ uint32_t ea = OPER_I_16();
+ return m68ki_read_32(ea);
}
case 1: // (xxx).L
{
- uint32_t d1 = OPER_I_16(m68k);
- uint32_t d2 = OPER_I_16(m68k);
+ uint32_t d1 = OPER_I_16();
+ uint32_t d2 = OPER_I_16();
uint32_t ea = (d1 << 16) | d2;
- return m68ki_read_32(m68k, ea);
+ return m68ki_read_32(ea);
}
case 2: // (d16, PC)
{
- uint32_t ea = EA_PCDI_32(m68k);
- return m68ki_read_32(m68k, ea);
+ uint32_t ea = EA_PCDI_32();
+ return m68ki_read_32(ea);
}
case 3: // (PC) + (Xn) + d8
{
- uint32_t ea = EA_PCIX_32(m68k);
- return m68ki_read_32(m68k, ea);
+ uint32_t ea = EA_PCIX_32();
+ return m68ki_read_32(ea);
}
case 4: // #<data>
{
- return OPER_I_32(m68k);
+ return OPER_I_32();
}
- default: fatalerror("M68kFPU: READ_EA_32: unhandled mode %d, reg %d at %08X\n", mode, reg, REG_PC(m68k));
+ default: fatalerror("M68kFPU: READ_EA_32: unhandled mode %d, reg %d at %08X\n", mode, reg, m_pc);
}
break;
}
- default: fatalerror("M68kFPU: READ_EA_32: unhandled mode %d, reg %d at %08X\n", mode, reg, REG_PC(m68k));
+ default: fatalerror("M68kFPU: READ_EA_32: unhandled mode %d, reg %d at %08X\n", mode, reg, m_pc);
}
return 0;
}
-static uint64_t READ_EA_64(m68000_base_device *m68k, int ea)
+uint64_t READ_EA_64(int ea)
{
int mode = (ea >> 3) & 0x7;
int reg = (ea & 0x7);
@@ -593,39 +590,39 @@ static uint64_t READ_EA_64(m68000_base_device *m68k, int ea)
{
case 2: // (An)
{
- uint32_t ea = REG_A(m68k)[reg];
- h1 = m68ki_read_32(m68k, ea+0);
- h2 = m68ki_read_32(m68k, ea+4);
+ uint32_t ea = REG_A()[reg];
+ h1 = m68ki_read_32(ea+0);
+ h2 = m68ki_read_32(ea+4);
return (uint64_t)(h1) << 32 | (uint64_t)(h2);
}
case 3: // (An)+
{
- uint32_t ea = REG_A(m68k)[reg];
- REG_A(m68k)[reg] += 8;
- h1 = m68ki_read_32(m68k, ea+0);
- h2 = m68ki_read_32(m68k, ea+4);
+ uint32_t ea = REG_A()[reg];
+ REG_A()[reg] += 8;
+ h1 = m68ki_read_32(ea+0);
+ h2 = m68ki_read_32(ea+4);
return (uint64_t)(h1) << 32 | (uint64_t)(h2);
}
case 4: // -(An)
{
- uint32_t ea = REG_A(m68k)[reg]-8;
- REG_A(m68k)[reg] -= 8;
- h1 = m68ki_read_32(m68k, ea+0);
- h2 = m68ki_read_32(m68k, ea+4);
+ uint32_t ea = REG_A()[reg]-8;
+ REG_A()[reg] -= 8;
+ h1 = m68ki_read_32(ea+0);
+ h2 = m68ki_read_32(ea+4);
return (uint64_t)(h1) << 32 | (uint64_t)(h2);
}
case 5: // (d16, An)
{
- uint32_t ea = EA_AY_DI_32(m68k);
- h1 = m68ki_read_32(m68k, ea+0);
- h2 = m68ki_read_32(m68k, ea+4);
+ uint32_t ea = EA_AY_DI_32();
+ h1 = m68ki_read_32(ea+0);
+ h2 = m68ki_read_32(ea+4);
return (uint64_t)(h1) << 32 | (uint64_t)(h2);
}
case 6: // (An) + (Xn) + d8
{
- uint32_t ea = EA_AY_IX_32(m68k);
- h1 = m68ki_read_32(m68k, ea+0);
- h2 = m68ki_read_32(m68k, ea+4);
+ uint32_t ea = EA_AY_IX_32();
+ h1 = m68ki_read_32(ea+0);
+ h2 = m68ki_read_32(ea+4);
return (uint64_t)(h1) << 32 | (uint64_t)(h2);
}
case 7:
@@ -634,43 +631,43 @@ static uint64_t READ_EA_64(m68000_base_device *m68k, int ea)
{
case 1: // (xxx).L
{
- uint32_t d1 = OPER_I_16(m68k);
- uint32_t d2 = OPER_I_16(m68k);
+ uint32_t d1 = OPER_I_16();
+ uint32_t d2 = OPER_I_16();
uint32_t ea = (d1 << 16) | d2;
- return (uint64_t)(m68ki_read_32(m68k, ea)) << 32 | (uint64_t)(m68ki_read_32(m68k, ea+4));
+ return (uint64_t)(m68ki_read_32(ea)) << 32 | (uint64_t)(m68ki_read_32(ea+4));
}
case 3: // (PC) + (Xn) + d8
{
- uint32_t ea = EA_PCIX_32(m68k);
- h1 = m68ki_read_32(m68k, ea+0);
- h2 = m68ki_read_32(m68k, ea+4);
+ uint32_t ea = EA_PCIX_32();
+ h1 = m68ki_read_32(ea+0);
+ h2 = m68ki_read_32(ea+4);
return (uint64_t)(h1) << 32 | (uint64_t)(h2);
}
case 4: // #<data>
{
- h1 = OPER_I_32(m68k);
- h2 = OPER_I_32(m68k);
+ h1 = OPER_I_32();
+ h2 = OPER_I_32();
return (uint64_t)(h1) << 32 | (uint64_t)(h2);
}
case 2: // (d16, PC)
{
- uint32_t ea = EA_PCDI_32(m68k);
- h1 = m68ki_read_32(m68k, ea+0);
- h2 = m68ki_read_32(m68k, ea+4);
+ uint32_t ea = EA_PCDI_32();
+ h1 = m68ki_read_32(ea+0);
+ h2 = m68ki_read_32(ea+4);
return (uint64_t)(h1) << 32 | (uint64_t)(h2);
}
- default: fatalerror("M68kFPU: READ_EA_64: unhandled mode %d, reg %d at %08X\n", mode, reg, REG_PC(m68k));
+ default: fatalerror("M68kFPU: READ_EA_64: unhandled mode %d, reg %d at %08X\n", mode, reg, m_pc);
}
break;
}
- default: fatalerror("M68kFPU: READ_EA_64: unhandled mode %d, reg %d at %08X\n", mode, reg, REG_PC(m68k));
+ default: fatalerror("M68kFPU: READ_EA_64: unhandled mode %d, reg %d at %08X\n", mode, reg, m_pc);
}
return 0;
}
-static floatx80 READ_EA_FPE(m68000_base_device *m68k, int ea)
+floatx80 READ_EA_FPE(int ea)
{
floatx80 fpr;
int mode = (ea >> 3) & 0x7;
@@ -680,37 +677,37 @@ static floatx80 READ_EA_FPE(m68000_base_device *m68k, int ea)
{
case 2: // (An)
{
- uint32_t ea = REG_A(m68k)[reg];
- fpr = load_extended_float80(m68k, ea);
+ uint32_t ea = REG_A()[reg];
+ fpr = load_extended_float80(ea);
break;
}
case 3: // (An)+
{
- uint32_t ea = REG_A(m68k)[reg];
- REG_A(m68k)[reg] += 12;
- fpr = load_extended_float80(m68k, ea);
+ uint32_t ea = REG_A()[reg];
+ REG_A()[reg] += 12;
+ fpr = load_extended_float80(ea);
break;
}
case 4: // -(An)
{
- uint32_t ea = REG_A(m68k)[reg]-12;
- REG_A(m68k)[reg] -= 12;
- fpr = load_extended_float80(m68k, ea);
+ uint32_t ea = REG_A()[reg]-12;
+ REG_A()[reg] -= 12;
+ fpr = load_extended_float80(ea);
break;
}
case 5: // (d16, An)
{
// FIXME: will fail for fmovem
- uint32_t ea = EA_AY_DI_32(m68k);
- fpr = load_extended_float80(m68k, ea);
+ uint32_t ea = EA_AY_DI_32();
+ fpr = load_extended_float80(ea);
break;
}
case 6: // (An) + (Xn) + d8
{
// FIXME: will fail for fmovem
- uint32_t ea = EA_AY_IX_32(m68k);
- fpr = load_extended_float80(m68k, ea);
+ uint32_t ea = EA_AY_IX_32();
+ fpr = load_extended_float80(ea);
break;
}
@@ -720,41 +717,41 @@ static floatx80 READ_EA_FPE(m68000_base_device *m68k, int ea)
{
case 1: // (xxx)
{
- uint32_t d1 = OPER_I_16(m68k);
- uint32_t d2 = OPER_I_16(m68k);
+ uint32_t d1 = OPER_I_16();
+ uint32_t d2 = OPER_I_16();
uint32_t ea = (d1 << 16) | d2;
- fpr = load_extended_float80(m68k, ea);
+ fpr = load_extended_float80(ea);
}
break;
case 2: // (d16, PC)
{
- uint32_t ea = EA_PCDI_32(m68k);
- fpr = load_extended_float80(m68k, ea);
+ uint32_t ea = EA_PCDI_32();
+ fpr = load_extended_float80(ea);
}
break;
case 3: // (d16,PC,Dx.w)
{
- uint32_t ea = EA_PCIX_32(m68k);
- fpr = load_extended_float80(m68k, ea);
+ uint32_t ea = EA_PCIX_32();
+ fpr = load_extended_float80(ea);
}
break;
default:
- fatalerror("M68kFPU: READ_EA_FPE: unhandled mode %d, reg %d, at %08X\n", mode, reg, REG_PC(m68k));
+ fatalerror("M68kFPU: READ_EA_FPE: unhandled mode %d, reg %d, at %08X\n", mode, reg, m_pc);
break;
}
}
break;
- default: fatalerror("M68kFPU: READ_EA_FPE: unhandled mode %d, reg %d, at %08X\n", mode, reg, REG_PC(m68k)); break;
+ default: fatalerror("M68kFPU: READ_EA_FPE: unhandled mode %d, reg %d, at %08X\n", mode, reg, m_pc); break;
}
return fpr;
}
-static floatx80 READ_EA_PACK(m68000_base_device *m68k, int ea)
+floatx80 READ_EA_PACK(int ea)
{
floatx80 fpr;
int mode = (ea >> 3) & 0x7;
@@ -764,16 +761,16 @@ static floatx80 READ_EA_PACK(m68000_base_device *m68k, int ea)
{
case 2: // (An)
{
- uint32_t ea = REG_A(m68k)[reg];
- fpr = load_pack_float80(m68k, ea);
+ uint32_t ea = REG_A()[reg];
+ fpr = load_pack_float80(ea);
break;
}
case 3: // (An)+
{
- uint32_t ea = REG_A(m68k)[reg];
- REG_A(m68k)[reg] += 12;
- fpr = load_pack_float80(m68k, ea);
+ uint32_t ea = REG_A()[reg];
+ REG_A()[reg] += 12;
+ fpr = load_pack_float80(ea);
break;
}
@@ -783,25 +780,25 @@ static floatx80 READ_EA_PACK(m68000_base_device *m68k, int ea)
{
case 3: // (d16,PC,Dx.w)
{
- uint32_t ea = EA_PCIX_32(m68k);
- fpr = load_pack_float80(m68k, ea);
+ uint32_t ea = EA_PCIX_32();
+ fpr = load_pack_float80(ea);
}
break;
default:
- fatalerror("M68kFPU: READ_EA_PACK: unhandled mode %d, reg %d, at %08X\n", mode, reg, REG_PC(m68k));
+ fatalerror("M68kFPU: READ_EA_PACK: unhandled mode %d, reg %d, at %08X\n", mode, reg, m_pc);
break;
}
}
break;
- default: fatalerror("M68kFPU: READ_EA_PACK: unhandled mode %d, reg %d, at %08X\n", mode, reg, REG_PC(m68k)); break;
+ default: fatalerror("M68kFPU: READ_EA_PACK: unhandled mode %d, reg %d, at %08X\n", mode, reg, m_pc); break;
}
return fpr;
}
-static void WRITE_EA_8(m68000_base_device *m68k, int ea, uint8_t data)
+void WRITE_EA_8(int ea, uint8_t data)
{
int mode = (ea >> 3) & 0x7;
int reg = (ea & 0x7);
@@ -810,37 +807,37 @@ static void WRITE_EA_8(m68000_base_device *m68k, int ea, uint8_t data)
{
case 0: // Dn
{
- REG_D(m68k)[reg] = data;
+ REG_D()[reg] = data;
break;
}
case 2: // (An)
{
- uint32_t ea = REG_A(m68k)[reg];
- m68ki_write_8(m68k, ea, data);
+ uint32_t ea = REG_A()[reg];
+ m68ki_write_8(ea, data);
break;
}
case 3: // (An)+
{
- uint32_t ea = EA_AY_PI_8(m68k);
- m68ki_write_8(m68k, ea, data);
+ uint32_t ea = EA_AY_PI_8();
+ m68ki_write_8(ea, data);
break;
}
case 4: // -(An)
{
- uint32_t ea = EA_AY_PD_8(m68k);
- m68ki_write_8(m68k, ea, data);
+ uint32_t ea = EA_AY_PD_8();
+ m68ki_write_8(ea, data);
break;
}
case 5: // (d16, An)
{
- uint32_t ea = EA_AY_DI_8(m68k);
- m68ki_write_8(m68k, ea, data);
+ uint32_t ea = EA_AY_DI_8();
+ m68ki_write_8(ea, data);
break;
}
case 6: // (An) + (Xn) + d8
{
- uint32_t ea = EA_AY_IX_8(m68k);
- m68ki_write_8(m68k, ea, data);
+ uint32_t ea = EA_AY_IX_8();
+ m68ki_write_8(ea, data);
break;
}
case 7:
@@ -849,27 +846,27 @@ static void WRITE_EA_8(m68000_base_device *m68k, int ea, uint8_t data)
{
case 1: // (xxx).B
{
- uint32_t d1 = OPER_I_16(m68k);
- uint32_t d2 = OPER_I_16(m68k);
+ uint32_t d1 = OPER_I_16();
+ uint32_t d2 = OPER_I_16();
uint32_t ea = (d1 << 16) | d2;
- m68ki_write_8(m68k, ea, data);
+ m68ki_write_8(ea, data);
break;
}
case 2: // (d16, PC)
{
- uint32_t ea = EA_PCDI_16(m68k);
- m68ki_write_8(m68k, ea, data);
+ uint32_t ea = EA_PCDI_16();
+ m68ki_write_8(ea, data);
break;
}
- default: fatalerror("M68kFPU: WRITE_EA_8: unhandled mode %d, reg %d at %08X\n", mode, reg, REG_PC(m68k));
+ default: fatalerror("M68kFPU: WRITE_EA_8: unhandled mode %d, reg %d at %08X\n", mode, reg, m_pc);
}
break;
}
- default: fatalerror("M68kFPU: WRITE_EA_8: unhandled mode %d, reg %d, data %08X at %08X\n", mode, reg, data, REG_PC(m68k));
+ default: fatalerror("M68kFPU: WRITE_EA_8: unhandled mode %d, reg %d, data %08X at %08X\n", mode, reg, data, m_pc);
}
}
-static void WRITE_EA_16(m68000_base_device *m68k, int ea, uint16_t data)
+void WRITE_EA_16(int ea, uint16_t data)
{
int mode = (ea >> 3) & 0x7;
int reg = (ea & 0x7);
@@ -878,37 +875,37 @@ static void WRITE_EA_16(m68000_base_device *m68k, int ea, uint16_t data)
{
case 0: // Dn
{
- REG_D(m68k)[reg] = data;
+ REG_D()[reg] = data;
break;
}
case 2: // (An)
{
- uint32_t ea = REG_A(m68k)[reg];
- m68ki_write_16(m68k, ea, data);
+ uint32_t ea = REG_A()[reg];
+ m68ki_write_16(ea, data);
break;
}
case 3: // (An)+
{
- uint32_t ea = EA_AY_PI_16(m68k);
- m68ki_write_16(m68k, ea, data);
+ uint32_t ea = EA_AY_PI_16();
+ m68ki_write_16(ea, data);
break;
}
case 4: // -(An)
{
- uint32_t ea = EA_AY_PD_16(m68k);
- m68ki_write_16(m68k, ea, data);
+ uint32_t ea = EA_AY_PD_16();
+ m68ki_write_16(ea, data);
break;
}
case 5: // (d16, An)
{
- uint32_t ea = EA_AY_DI_16(m68k);
- m68ki_write_16(m68k, ea, data);
+ uint32_t ea = EA_AY_DI_16();
+ m68ki_write_16(ea, data);
break;
}
case 6: // (An) + (Xn) + d8
{
- uint32_t ea = EA_AY_IX_16(m68k);
- m68ki_write_16(m68k, ea, data);
+ uint32_t ea = EA_AY_IX_16();
+ m68ki_write_16(ea, data);
break;
}
case 7:
@@ -917,27 +914,27 @@ static void WRITE_EA_16(m68000_base_device *m68k, int ea, uint16_t data)
{
case 1: // (xxx).W
{
- uint32_t d1 = OPER_I_16(m68k);
- uint32_t d2 = OPER_I_16(m68k);
+ uint32_t d1 = OPER_I_16();
+ uint32_t d2 = OPER_I_16();
uint32_t ea = (d1 << 16) | d2;
- m68ki_write_16(m68k, ea, data);
+ m68ki_write_16(ea, data);
break;
}
case 2: // (d16, PC)
{
- uint32_t ea = EA_PCDI_16(m68k);
- m68ki_write_16(m68k, ea, data);
+ uint32_t ea = EA_PCDI_16();
+ m68ki_write_16(ea, data);
break;
}
- default: fatalerror("M68kFPU: WRITE_EA_16: unhandled mode %d, reg %d at %08X\n", mode, reg, REG_PC(m68k));
+ default: fatalerror("M68kFPU: WRITE_EA_16: unhandled mode %d, reg %d at %08X\n", mode, reg, m_pc);
}
break;
}
- default: fatalerror("M68kFPU: WRITE_EA_16: unhandled mode %d, reg %d, data %08X at %08X\n", mode, reg, data, REG_PC(m68k));
+ default: fatalerror("M68kFPU: WRITE_EA_16: unhandled mode %d, reg %d, data %08X at %08X\n", mode, reg, data, m_pc);
}
}
-static void WRITE_EA_32(m68000_base_device *m68k, int ea, uint32_t data)
+void WRITE_EA_32(int ea, uint32_t data)
{
int mode = (ea >> 3) & 0x7;
int reg = (ea & 0x7);
@@ -946,42 +943,42 @@ static void WRITE_EA_32(m68000_base_device *m68k, int ea, uint32_t data)
{
case 0: // Dn
{
- REG_D(m68k)[reg] = data;
+ REG_D()[reg] = data;
break;
}
case 1: // An
{
- REG_A(m68k)[reg] = data;
+ REG_A()[reg] = data;
break;
}
case 2: // (An)
{
- uint32_t ea = REG_A(m68k)[reg];
- m68ki_write_32(m68k, ea, data);
+ uint32_t ea = REG_A()[reg];
+ m68ki_write_32(ea, data);
break;
}
case 3: // (An)+
{
- uint32_t ea = EA_AY_PI_32(m68k);
- m68ki_write_32(m68k, ea, data);
+ uint32_t ea = EA_AY_PI_32();
+ m68ki_write_32(ea, data);
break;
}
case 4: // -(An)
{
- uint32_t ea = EA_AY_PD_32(m68k);
- m68ki_write_32(m68k, ea, data);
+ uint32_t ea = EA_AY_PD_32();
+ m68ki_write_32(ea, data);
break;
}
case 5: // (d16, An)
{
- uint32_t ea = EA_AY_DI_32(m68k);
- m68ki_write_32(m68k, ea, data);
+ uint32_t ea = EA_AY_DI_32();
+ m68ki_write_32(ea, data);
break;
}
case 6: // (An) + (Xn) + d8
{
- uint32_t ea = EA_AY_IX_32(m68k);
- m68ki_write_32(m68k, ea, data);
+ uint32_t ea = EA_AY_IX_32();
+ m68ki_write_32(ea, data);
break;
}
case 7:
@@ -990,33 +987,33 @@ static void WRITE_EA_32(m68000_base_device *m68k, int ea, uint32_t data)
{
case 0: // (xxx).W
{
- uint32_t ea = OPER_I_16(m68k);
- m68ki_write_32(m68k, ea, data);
+ uint32_t ea = OPER_I_16();
+ m68ki_write_32(ea, data);
break;
}
case 1: // (xxx).L
{
- uint32_t d1 = OPER_I_16(m68k);
- uint32_t d2 = OPER_I_16(m68k);
+ uint32_t d1 = OPER_I_16();
+ uint32_t d2 = OPER_I_16();
uint32_t ea = (d1 << 16) | d2;
- m68ki_write_32(m68k, ea, data);
+ m68ki_write_32(ea, data);
break;
}
case 2: // (d16, PC)
{
- uint32_t ea = EA_PCDI_32(m68k);
- m68ki_write_32(m68k, ea, data);
+ uint32_t ea = EA_PCDI_32();
+ m68ki_write_32(ea, data);
break;
}
- default: fatalerror("M68kFPU: WRITE_EA_32: unhandled mode %d, reg %d at %08X\n", mode, reg, REG_PC(m68k));
+ default: fatalerror("M68kFPU: WRITE_EA_32: unhandled mode %d, reg %d at %08X\n", mode, reg, m_pc);
}
break;
}
- default: fatalerror("M68kFPU: WRITE_EA_32: unhandled mode %d, reg %d, data %08X at %08X\n", mode, reg, data, REG_PC(m68k));
+ default: fatalerror("M68kFPU: WRITE_EA_32: unhandled mode %d, reg %d, data %08X at %08X\n", mode, reg, data, m_pc);
}
}
-static void WRITE_EA_64(m68000_base_device *m68k, int ea, uint64_t data)
+void WRITE_EA_64(int ea, uint64_t data)
{
int mode = (ea >> 3) & 0x7;
int reg = (ea & 0x7);
@@ -1025,40 +1022,40 @@ static void WRITE_EA_64(m68000_base_device *m68k, int ea, uint64_t data)
{
case 2: // (An)
{
- uint32_t ea = REG_A(m68k)[reg];
- m68ki_write_32(m68k, ea, (uint32_t)(data >> 32));
- m68ki_write_32(m68k, ea+4, (uint32_t)(data));
+ uint32_t ea = REG_A()[reg];
+ m68ki_write_32(ea, (uint32_t)(data >> 32));
+ m68ki_write_32(ea+4, (uint32_t)(data));
break;
}
case 3: // (An)+
{
- uint32_t ea = REG_A(m68k)[reg];
- REG_A(m68k)[reg] += 8;
- m68ki_write_32(m68k, ea+0, (uint32_t)(data >> 32));
- m68ki_write_32(m68k, ea+4, (uint32_t)(data));
+ uint32_t ea = REG_A()[reg];
+ REG_A()[reg] += 8;
+ m68ki_write_32(ea+0, (uint32_t)(data >> 32));
+ m68ki_write_32(ea+4, (uint32_t)(data));
break;
}
case 4: // -(An)
{
uint32_t ea;
- REG_A(m68k)[reg] -= 8;
- ea = REG_A(m68k)[reg];
- m68ki_write_32(m68k, ea+0, (uint32_t)(data >> 32));
- m68ki_write_32(m68k, ea+4, (uint32_t)(data));
+ REG_A()[reg] -= 8;
+ ea = REG_A()[reg];
+ m68ki_write_32(ea+0, (uint32_t)(data >> 32));
+ m68ki_write_32(ea+4, (uint32_t)(data));
break;
}
case 5: // (d16, An)
{
- uint32_t ea = EA_AY_DI_32(m68k);
- m68ki_write_32(m68k, ea+0, (uint32_t)(data >> 32));
- m68ki_write_32(m68k, ea+4, (uint32_t)(data));
+ uint32_t ea = EA_AY_DI_32();
+ m68ki_write_32(ea+0, (uint32_t)(data >> 32));
+ m68ki_write_32(ea+4, (uint32_t)(data));
break;
}
case 6: // (An) + (Xn) + d8
{
- uint32_t ea = EA_AY_IX_32(m68k);
- m68ki_write_32(m68k, ea+0, (uint32_t)(data >> 32));
- m68ki_write_32(m68k, ea+4, (uint32_t)(data));
+ uint32_t ea = EA_AY_IX_32();
+ m68ki_write_32(ea+0, (uint32_t)(data >> 32));
+ m68ki_write_32(ea+4, (uint32_t)(data));
break;
}
case 7:
@@ -1067,29 +1064,29 @@ static void WRITE_EA_64(m68000_base_device *m68k, int ea, uint64_t data)
{
case 1: // (xxx).L
{
- uint32_t d1 = OPER_I_16(m68k);
- uint32_t d2 = OPER_I_16(m68k);
+ uint32_t d1 = OPER_I_16();
+ uint32_t d2 = OPER_I_16();
uint32_t ea = (d1 << 16) | d2;
- m68ki_write_32(m68k, ea+0, (uint32_t)(data >> 32));
- m68ki_write_32(m68k, ea+4, (uint32_t)(data));
+ m68ki_write_32(ea+0, (uint32_t)(data >> 32));
+ m68ki_write_32(ea+4, (uint32_t)(data));
break;
}
case 2: // (d16, PC)
{
- uint32_t ea = EA_PCDI_32(m68k);
- m68ki_write_32(m68k, ea+0, (uint32_t)(data >> 32));
- m68ki_write_32(m68k, ea+4, (uint32_t)(data));
+ uint32_t ea = EA_PCDI_32();
+ m68ki_write_32(ea+0, (uint32_t)(data >> 32));
+ m68ki_write_32(ea+4, (uint32_t)(data));
break;
}
- default: fatalerror("M68kFPU: WRITE_EA_64: unhandled mode %d, reg %d at %08X\n", mode, reg, REG_PC(m68k));
+ default: fatalerror("M68kFPU: WRITE_EA_64: unhandled mode %d, reg %d at %08X\n", mode, reg, m_pc);
}
break;
}
- default: fatalerror("M68kFPU: WRITE_EA_64: unhandled mode %d, reg %d, data %08X%08X at %08X\n", mode, reg, (uint32_t)(data >> 32), (uint32_t)(data), REG_PC(m68k));
+ default: fatalerror("M68kFPU: WRITE_EA_64: unhandled mode %d, reg %d, data %08X%08X at %08X\n", mode, reg, (uint32_t)(data >> 32), (uint32_t)(data), m_pc);
}
}
-static void WRITE_EA_FPE(m68000_base_device *m68k, int ea, floatx80 fpr)
+void WRITE_EA_FPE(int ea, floatx80 fpr)
{
int mode = (ea >> 3) & 0x7;
int reg = (ea & 0x7);
@@ -1099,26 +1096,26 @@ static void WRITE_EA_FPE(m68000_base_device *m68k, int ea, floatx80 fpr)
case 2: // (An)
{
uint32_t ea;
- ea = REG_A(m68k)[reg];
- store_extended_float80(m68k, ea, fpr);
+ ea = REG_A()[reg];
+ store_extended_float80(ea, fpr);
break;
}
case 3: // (An)+
{
uint32_t ea;
- ea = REG_A(m68k)[reg];
- store_extended_float80(m68k, ea, fpr);
- REG_A(m68k)[reg] += 12;
+ ea = REG_A()[reg];
+ store_extended_float80(ea, fpr);
+ REG_A()[reg] += 12;
break;
}
case 4: // -(An)
{
uint32_t ea;
- REG_A(m68k)[reg] -= 12;
- ea = REG_A(m68k)[reg];
- store_extended_float80(m68k, ea, fpr);
+ REG_A()[reg] -= 12;
+ ea = REG_A()[reg];
+ store_extended_float80(ea, fpr);
break;
}
@@ -1126,14 +1123,14 @@ static void WRITE_EA_FPE(m68000_base_device *m68k, int ea, floatx80 fpr)
{
switch (reg)
{
- default: fatalerror("M68kFPU: WRITE_EA_FPE: unhandled mode %d, reg %d, at %08X\n", mode, reg, REG_PC(m68k));
+ default: fatalerror("M68kFPU: WRITE_EA_FPE: unhandled mode %d, reg %d, at %08X\n", mode, reg, m_pc);
}
}
- default: fatalerror("M68kFPU: WRITE_EA_FPE: unhandled mode %d, reg %d, at %08X\n", mode, reg, REG_PC(m68k));
+ default: fatalerror("M68kFPU: WRITE_EA_FPE: unhandled mode %d, reg %d, at %08X\n", mode, reg, m_pc);
}
}
-static void WRITE_EA_PACK(m68000_base_device *m68k, int ea, int k, floatx80 fpr)
+void WRITE_EA_PACK(int ea, int k, floatx80 fpr)
{
int mode = (ea >> 3) & 0x7;
int reg = (ea & 0x7);
@@ -1143,26 +1140,26 @@ static void WRITE_EA_PACK(m68000_base_device *m68k, int ea, int k, floatx80 fpr)
case 2: // (An)
{
uint32_t ea;
- ea = REG_A(m68k)[reg];
- store_pack_float80(m68k, ea, k, fpr);
+ ea = REG_A()[reg];
+ store_pack_float80(ea, k, fpr);
break;
}
case 3: // (An)+
{
uint32_t ea;
- ea = REG_A(m68k)[reg];
- store_pack_float80(m68k, ea, k, fpr);
- REG_A(m68k)[reg] += 12;
+ ea = REG_A()[reg];
+ store_pack_float80(ea, k, fpr);
+ REG_A()[reg] += 12;
break;
}
case 4: // -(An)
{
uint32_t ea;
- REG_A(m68k)[reg] -= 12;
- ea = REG_A(m68k)[reg];
- store_pack_float80(m68k, ea, k, fpr);
+ REG_A()[reg] -= 12;
+ ea = REG_A()[reg];
+ store_pack_float80(ea, k, fpr);
break;
}
@@ -1170,16 +1167,16 @@ static void WRITE_EA_PACK(m68000_base_device *m68k, int ea, int k, floatx80 fpr)
{
switch (reg)
{
- default: fatalerror("M68kFPU: WRITE_EA_PACK: unhandled mode %d, reg %d, at %08X\n", mode, reg, REG_PC(m68k));
+ default: fatalerror("M68kFPU: WRITE_EA_PACK: unhandled mode %d, reg %d, at %08X\n", mode, reg, m_pc);
}
}
- default: fatalerror("M68kFPU: WRITE_EA_PACK: unhandled mode %d, reg %d, at %08X\n", mode, reg, REG_PC(m68k));
+ default: fatalerror("M68kFPU: WRITE_EA_PACK: unhandled mode %d, reg %d, at %08X\n", mode, reg, m_pc);
}
}
-static void fpgen_rm_reg(m68000_base_device *m68k, uint16_t w2)
+void fpgen_rm_reg(uint16_t w2)
{
- int ea = m68k->ir & 0x3f;
+ int ea = m_ir & 0x3f;
int rm = (w2 >> 14) & 0x1;
int src = (w2 >> 10) & 0x7;
int dst = (w2 >> 7) & 0x7;
@@ -1194,42 +1191,42 @@ static void fpgen_rm_reg(m68000_base_device *m68k, uint16_t w2)
{
case 0: // Long-Word Integer
{
- int32_t d = READ_EA_32(m68k, ea);
+ int32_t d = READ_EA_32(ea);
source = int32_to_floatx80(d);
break;
}
case 1: // Single-precision Real
{
- uint32_t d = READ_EA_32(m68k, ea);
+ uint32_t d = READ_EA_32(ea);
source = float32_to_floatx80(d);
break;
}
case 2: // Extended-precision Real
{
- source = READ_EA_FPE(m68k, ea);
+ source = READ_EA_FPE(ea);
break;
}
case 3: // Packed-decimal Real
{
- source = READ_EA_PACK(m68k, ea);
+ source = READ_EA_PACK(ea);
break;
}
case 4: // Word Integer
{
- int16_t d = READ_EA_16(m68k, ea);
+ int16_t d = READ_EA_16(ea);
source = int32_to_floatx80((int32_t)d);
break;
}
case 5: // Double-precision Real
{
- uint64_t d = READ_EA_64(m68k, ea);
+ uint64_t d = READ_EA_64(ea);
source = float64_to_floatx80(d);
break;
}
case 6: // Byte Integer
{
- int8_t d = READ_EA_8(m68k, ea);
+ int8_t d = READ_EA_8(ea);
source = int32_to_floatx80((int32_t)d);
break;
}
@@ -1342,21 +1339,21 @@ static void fpgen_rm_reg(m68000_base_device *m68k, uint16_t w2)
break;
default:
- fatalerror("fmove_rm_reg: unknown constant ROM offset %x at %08x\n", w2&0x7f, REG_PC(m68k)-4);
+ fatalerror("fmove_rm_reg: unknown constant ROM offset %x at %08x\n", w2&0x7f, m_pc-4);
break;
}
// handle it right here, the usual opmode bits aren't valid in the FMOVECR case
- REG_FP(m68k)[dst] = source;
- m68k->remaining_cycles -= 4;
+ m_fpr[dst] = source;
+ m_remaining_cycles -= 4;
return;
}
- default: fatalerror("fmove_rm_reg: invalid source specifier %x at %08X\n", src, REG_PC(m68k)-4);
+ default: fatalerror("fmove_rm_reg: invalid source specifier %x at %08X\n", src, m_pc-4);
}
}
else
{
- source = REG_FP(m68k)[src];
+ source = m_fpr[src];
}
@@ -1365,98 +1362,98 @@ static void fpgen_rm_reg(m68000_base_device *m68k, uint16_t w2)
{
case 0x00: // FMOVE
{
- REG_FP(m68k)[dst] = source;
- SET_CONDITION_CODES(m68k, REG_FP(m68k)[dst]);
- m68k->remaining_cycles -= 4;
+ m_fpr[dst] = source;
+ SET_CONDITION_CODES(m_fpr[dst]);
+ m_remaining_cycles -= 4;
break;
}
case 0x01: // FINT
{
int32_t temp;
temp = floatx80_to_int32(source);
- REG_FP(m68k)[dst] = int32_to_floatx80(temp);
+ m_fpr[dst] = int32_to_floatx80(temp);
break;
}
case 0x03: // FINTRZ
{
int32_t temp;
temp = floatx80_to_int32_round_to_zero(source);
- REG_FP(m68k)[dst] = int32_to_floatx80(temp);
+ m_fpr[dst] = int32_to_floatx80(temp);
break;
}
case 0x04: // FSQRT
{
- REG_FP(m68k)[dst] = floatx80_sqrt(source);
- SET_CONDITION_CODES(m68k, REG_FP(m68k)[dst]);
- m68k->remaining_cycles -= 109;
+ m_fpr[dst] = floatx80_sqrt(source);
+ SET_CONDITION_CODES(m_fpr[dst]);
+ m_remaining_cycles -= 109;
break;
}
case 0x06: // FLOGNP1
{
- REG_FP(m68k)[dst] = floatx80_flognp1 (source);
- SET_CONDITION_CODES(m68k, REG_FP(m68k)[dst]);
- m68k->remaining_cycles -= 594; // for MC68881
+ m_fpr[dst] = floatx80_flognp1 (source);
+ SET_CONDITION_CODES(m_fpr[dst]);
+ m_remaining_cycles -= 594; // for MC68881
break;
}
case 0x0e: // FSIN
{
- REG_FP(m68k)[dst] = source;
- floatx80_fsin(REG_FP(m68k)[dst]);
- SET_CONDITION_CODES(m68k, REG_FP(m68k)[dst]);
- m68k->remaining_cycles -= 75;
+ m_fpr[dst] = source;
+ floatx80_fsin(m_fpr[dst]);
+ SET_CONDITION_CODES(m_fpr[dst]);
+ m_remaining_cycles -= 75;
break;
}
case 0x0f: // FTAN
{
- REG_FP(m68k)[dst] = source;
- floatx80_ftan(REG_FP(m68k)[dst]);
- SET_CONDITION_CODES(m68k, REG_FP(m68k)[dst]);
- m68k->remaining_cycles -= 75;
+ m_fpr[dst] = source;
+ floatx80_ftan(m_fpr[dst]);
+ SET_CONDITION_CODES(m_fpr[dst]);
+ m_remaining_cycles -= 75;
break;
}
case 0x14: // FLOGN
{
- REG_FP(m68k)[dst] = floatx80_flogn (source);
- SET_CONDITION_CODES(m68k, REG_FP(m68k)[dst]);
- m68k->remaining_cycles -= 548; // for MC68881
+ m_fpr[dst] = floatx80_flogn (source);
+ SET_CONDITION_CODES(m_fpr[dst]);
+ m_remaining_cycles -= 548; // for MC68881
break;
}
case 0x15: // FLOG10
{
- REG_FP(m68k)[dst] = floatx80_flog10 (source);
- SET_CONDITION_CODES(m68k, REG_FP(m68k)[dst]);
- m68k->remaining_cycles -= 604; // for MC68881
+ m_fpr[dst] = floatx80_flog10 (source);
+ SET_CONDITION_CODES(m_fpr[dst]);
+ m_remaining_cycles -= 604; // for MC68881
break;
}
case 0x16: // FLOG2
{
- REG_FP(m68k)[dst] = floatx80_flog2 (source);
- SET_CONDITION_CODES(m68k, REG_FP(m68k)[dst]);
- m68k->remaining_cycles -= 604; // for MC68881
+ m_fpr[dst] = floatx80_flog2 (source);
+ SET_CONDITION_CODES(m_fpr[dst]);
+ m_remaining_cycles -= 604; // for MC68881
break;
}
case 0x18: // FABS
{
- REG_FP(m68k)[dst] = source;
- REG_FP(m68k)[dst].high &= 0x7fff;
- SET_CONDITION_CODES(m68k, REG_FP(m68k)[dst]);
- m68k->remaining_cycles -= 3;
+ m_fpr[dst] = source;
+ m_fpr[dst].high &= 0x7fff;
+ SET_CONDITION_CODES(m_fpr[dst]);
+ m_remaining_cycles -= 3;
break;
}
case 0x1a: // FNEG
{
- REG_FP(m68k)[dst] = source;
- REG_FP(m68k)[dst].high ^= 0x8000;
- SET_CONDITION_CODES(m68k, REG_FP(m68k)[dst]);
- m68k->remaining_cycles -= 3;
+ m_fpr[dst] = source;
+ m_fpr[dst].high ^= 0x8000;
+ SET_CONDITION_CODES(m_fpr[dst]);
+ m_remaining_cycles -= 3;
break;
}
case 0x1d: // FCOS
{
- REG_FP(m68k)[dst] = source;
- floatx80_fcos(REG_FP(m68k)[dst]);
- SET_CONDITION_CODES(m68k, REG_FP(m68k)[dst]);
- m68k->remaining_cycles -= 75;
+ m_fpr[dst] = source;
+ floatx80_fcos(m_fpr[dst]);
+ SET_CONDITION_CODES(m_fpr[dst]);
+ m_remaining_cycles -= 75;
break;
}
case 0x1e: // FGETEXP
@@ -1465,93 +1462,93 @@ static void fpgen_rm_reg(m68000_base_device *m68k, uint16_t w2)
temp2 = source.high; // get the exponent
temp2 -= 0x3fff; // take off the bias
- REG_FP(m68k)[dst] = double_to_fx80((double)temp2);
- SET_CONDITION_CODES(m68k, REG_FP(m68k)[dst]);
- m68k->remaining_cycles -= 6;
+ m_fpr[dst] = double_to_fx80((double)temp2);
+ SET_CONDITION_CODES(m_fpr[dst]);
+ m_remaining_cycles -= 6;
break;
}
case 0x20: // FDIV
{
- REG_FP(m68k)[dst] = floatx80_div(REG_FP(m68k)[dst], source);
- m68k->remaining_cycles -= 43;
+ m_fpr[dst] = floatx80_div(m_fpr[dst], source);
+ m_remaining_cycles -= 43;
break;
}
case 0x22: // FADD
{
- REG_FP(m68k)[dst] = floatx80_add(REG_FP(m68k)[dst], source);
- SET_CONDITION_CODES(m68k, REG_FP(m68k)[dst]);
- m68k->remaining_cycles -= 9;
+ m_fpr[dst] = floatx80_add(m_fpr[dst], source);
+ SET_CONDITION_CODES(m_fpr[dst]);
+ m_remaining_cycles -= 9;
break;
}
case 0x23: // FMUL
{
- REG_FP(m68k)[dst] = floatx80_mul(REG_FP(m68k)[dst], source);
- SET_CONDITION_CODES(m68k, REG_FP(m68k)[dst]);
- m68k->remaining_cycles -= 11;
+ m_fpr[dst] = floatx80_mul(m_fpr[dst], source);
+ SET_CONDITION_CODES(m_fpr[dst]);
+ m_remaining_cycles -= 11;
break;
}
case 0x24: // FSGLDIV
{
- float32 a = floatx80_to_float32( REG_FP(m68k)[dst] );
+ float32 a = floatx80_to_float32( m_fpr[dst] );
float32 b = floatx80_to_float32( source );
- REG_FP(m68k)[dst] = float32_to_floatx80( float32_div(a, b) );
- m68k->remaining_cycles -= 43; // // ? (value is from FDIV)
+ m_fpr[dst] = float32_to_floatx80( float32_div(a, b) );
+ m_remaining_cycles -= 43; // // ? (value is from FDIV)
break;
}
case 0x25: // FREM
{
- REG_FP(m68k)[dst] = floatx80_rem(REG_FP(m68k)[dst], source);
- SET_CONDITION_CODES(m68k, REG_FP(m68k)[dst]);
- m68k->remaining_cycles -= 43; // guess
+ m_fpr[dst] = floatx80_rem(m_fpr[dst], source);
+ SET_CONDITION_CODES(m_fpr[dst]);
+ m_remaining_cycles -= 43; // guess
break;
}
case 0x26: // FSCALE
{
- REG_FP(m68k)[dst] = floatx80_scale(REG_FP(m68k)[dst], source);
- SET_CONDITION_CODES(m68k, REG_FP(m68k)[dst]);
- m68k->remaining_cycles -= 46; // (better?) guess
+ m_fpr[dst] = floatx80_scale(m_fpr[dst], source);
+ SET_CONDITION_CODES(m_fpr[dst]);
+ m_remaining_cycles -= 46; // (better?) guess
break;
}
case 0x27: // FSGLMUL
{
- float32 a = floatx80_to_float32( REG_FP(m68k)[dst] );
+ float32 a = floatx80_to_float32( m_fpr[dst] );
float32 b = floatx80_to_float32( source );
- REG_FP(m68k)[dst] = float32_to_floatx80( float32_mul(a, b) );
- SET_CONDITION_CODES(m68k, REG_FP(m68k)[dst]);
- m68k->remaining_cycles -= 11; // ? (value is from FMUL)
+ m_fpr[dst] = float32_to_floatx80( float32_mul(a, b) );
+ SET_CONDITION_CODES(m_fpr[dst]);
+ m_remaining_cycles -= 11; // ? (value is from FMUL)
break;
}
case 0x28: // FSUB
{
- REG_FP(m68k)[dst] = floatx80_sub(REG_FP(m68k)[dst], source);
- SET_CONDITION_CODES(m68k, REG_FP(m68k)[dst]);
- m68k->remaining_cycles -= 9;
+ m_fpr[dst] = floatx80_sub(m_fpr[dst], source);
+ SET_CONDITION_CODES(m_fpr[dst]);
+ m_remaining_cycles -= 9;
break;
}
case 0x38: // FCMP
{
floatx80 res;
- res = floatx80_sub(REG_FP(m68k)[dst], source);
- SET_CONDITION_CODES(m68k, res);
- m68k->remaining_cycles -= 7;
+ res = floatx80_sub(m_fpr[dst], source);
+ SET_CONDITION_CODES(res);
+ m_remaining_cycles -= 7;
break;
}
case 0x3a: // FTST
{
floatx80 res;
res = source;
- SET_CONDITION_CODES(m68k, res);
- m68k->remaining_cycles -= 7;
+ SET_CONDITION_CODES(res);
+ m_remaining_cycles -= 7;
break;
}
- default: fatalerror("fpgen_rm_reg: unimplemented opmode %02X at %08X\n", opmode, REG_PPC(m68k));
+ default: fatalerror("fpgen_rm_reg: unimplemented opmode %02X at %08X\n", opmode, m_ppc);
}
}
-static void fmove_reg_mem(m68000_base_device *m68k, uint16_t w2)
+void fmove_reg_mem(uint16_t w2)
{
- int ea = m68k->ir & 0x3f;
+ int ea = m_ir & 0x3f;
int src = (w2 >> 7) & 0x7;
int dst = (w2 >> 10) & 0x7;
int k = (w2 & 0x7f);
@@ -1560,70 +1557,70 @@ static void fmove_reg_mem(m68000_base_device *m68k, uint16_t w2)
{
case 0: // Long-Word Integer
{
- int32_t d = (int32_t)floatx80_to_int32(REG_FP(m68k)[src]);
- WRITE_EA_32(m68k, ea, d);
+ int32_t d = (int32_t)floatx80_to_int32(m_fpr[src]);
+ WRITE_EA_32(ea, d);
break;
}
case 1: // Single-precision Real
{
- uint32_t d = floatx80_to_float32(REG_FP(m68k)[src]);
- WRITE_EA_32(m68k, ea, d);
+ uint32_t d = floatx80_to_float32(m_fpr[src]);
+ WRITE_EA_32(ea, d);
break;
}
case 2: // Extended-precision Real
{
- WRITE_EA_FPE(m68k, ea, REG_FP(m68k)[src]);
+ WRITE_EA_FPE(ea, m_fpr[src]);
break;
}
case 3: // Packed-decimal Real with Static K-factor
{
// sign-extend k
k = (k & 0x40) ? (k | 0xffffff80) : (k & 0x7f);
- WRITE_EA_PACK(m68k, ea, k, REG_FP(m68k)[src]);
+ WRITE_EA_PACK(ea, k, m_fpr[src]);
break;
}
case 4: // Word Integer
{
- int32 value = floatx80_to_int32(REG_FP(m68k)[src]);
+ int32 value = floatx80_to_int32(m_fpr[src]);
if (value > 0x7fff || value < -0x8000 )
{
- REG_FPSR(m68k) |= FPES_OE | FPAE_IOP;
+ m_fpsr |= FPES_OE | FPAE_IOP;
}
- WRITE_EA_16(m68k, ea, (int16_t)value);
+ WRITE_EA_16(ea, (int16_t)value);
break;
}
case 5: // Double-precision Real
{
uint64_t d;
- d = floatx80_to_float64(REG_FP(m68k)[src]);
+ d = floatx80_to_float64(m_fpr[src]);
- WRITE_EA_64(m68k, ea, d);
+ WRITE_EA_64(ea, d);
break;
}
case 6: // Byte Integer
{
- int32 value = floatx80_to_int32(REG_FP(m68k)[src]);
+ int32 value = floatx80_to_int32(m_fpr[src]);
if (value > 127 || value < -128)
{
- REG_FPSR(m68k) |= FPES_OE | FPAE_IOP;
+ m_fpsr |= FPES_OE | FPAE_IOP;
}
- WRITE_EA_8(m68k, ea, (int8_t) value);
+ WRITE_EA_8(ea, (int8_t) value);
break;
}
case 7: // Packed-decimal Real with Dynamic K-factor
{
- WRITE_EA_PACK(m68k, ea, REG_D(m68k)[k>>4], REG_FP(m68k)[src]);
+ WRITE_EA_PACK(ea, REG_D()[k>>4], m_fpr[src]);
break;
}
}
- m68k->remaining_cycles -= 12;
+ m_remaining_cycles -= 12;
}
-static void fmove_fpcr(m68000_base_device *m68k, uint16_t w2)
+void fmove_fpcr(uint16_t w2)
{
- int ea = m68k->ir & 0x3f;
+ int ea = m_ir & 0x3f;
int dir = (w2 >> 13) & 0x1;
int regsel = (w2 >> 10) & 0x7;
int mode = (ea >> 3) & 0x7;
@@ -1634,39 +1631,39 @@ static void fmove_fpcr(m68000_base_device *m68k, uint16_t w2)
if (mode == 5)
{
- address = EA_AY_DI_32(m68k);
+ address = EA_AY_DI_32();
}
else if (mode == 6)
{
- address = EA_AY_IX_32(m68k);
+ address = EA_AY_IX_32();
}
if (dir) // From system control reg to <ea>
{
- if (regsel & 4) { m68ki_write_32(m68k, address, REG_FPCR(m68k)); address += 4; }
- if (regsel & 2) { m68ki_write_32(m68k, address, REG_FPSR(m68k)); address += 4; }
- if (regsel & 1) { m68ki_write_32(m68k, address, REG_FPIAR(m68k)); address += 4; }
+ if (regsel & 4) { m68ki_write_32(address, m_fpcr); address += 4; }
+ if (regsel & 2) { m68ki_write_32(address, m_fpsr); address += 4; }
+ if (regsel & 1) { m68ki_write_32(address, m_fpiar); address += 4; }
}
else // From <ea> to system control reg
{
- if (regsel & 4) { REG_FPCR(m68k) = m68ki_read_32(m68k, address); address += 4; }
- if (regsel & 2) { REG_FPSR(m68k) = m68ki_read_32(m68k, address); address += 4; }
- if (regsel & 1) { REG_FPIAR(m68k) = m68ki_read_32(m68k, address); address += 4; }
+ if (regsel & 4) { m_fpcr = m68ki_read_32(address); address += 4; }
+ if (regsel & 2) { m_fpsr = m68ki_read_32(address); address += 4; }
+ if (regsel & 1) { m_fpiar = m68ki_read_32(address); address += 4; }
}
}
else
{
if (dir) // From system control reg to <ea>
{
- if (regsel & 4) WRITE_EA_32(m68k, ea, REG_FPCR(m68k));
- if (regsel & 2) WRITE_EA_32(m68k, ea, REG_FPSR(m68k));
- if (regsel & 1) WRITE_EA_32(m68k, ea, REG_FPIAR(m68k));
+ if (regsel & 4) WRITE_EA_32(ea, m_fpcr);
+ if (regsel & 2) WRITE_EA_32(ea, m_fpsr);
+ if (regsel & 1) WRITE_EA_32(ea, m_fpiar);
}
else // From <ea> to system control reg
{
- if (regsel & 4) REG_FPCR(m68k) = READ_EA_32(m68k, ea);
- if (regsel & 2) REG_FPSR(m68k) = READ_EA_32(m68k, ea);
- if (regsel & 1) REG_FPIAR(m68k) = READ_EA_32(m68k, ea);
+ if (regsel & 4) m_fpcr = READ_EA_32(ea);
+ if (regsel & 2) m_fpsr = READ_EA_32(ea);
+ if (regsel & 1) m_fpiar = READ_EA_32(ea);
}
}
@@ -1678,10 +1675,10 @@ static void fmove_fpcr(m68000_base_device *m68k, uint16_t w2)
if ((regsel & 4) && dir == 0)
{
- int rnd = (REG_FPCR(m68k) >> 4) & 3;
- int prec = (REG_FPCR(m68k) >> 6) & 3;
+ int rnd = (m_fpcr >> 4) & 3;
+ int prec = (m_fpcr >> 6) & 3;
-// m68k->logerror("m68k_fpsp:fmove_fpcr fpcr=%04x prec=%d rnd=%d\n", REG_FPCR(m68k), prec, rnd);
+// logerror("m68k_fpsp:fmove_fpcr fpcr=%04x prec=%d rnd=%d\n", m_fpcr, prec, rnd);
#ifdef FLOATX80
switch (prec)
@@ -1718,13 +1715,13 @@ static void fmove_fpcr(m68000_base_device *m68k, uint16_t w2)
}
}
- m68k->remaining_cycles -= 10;
+ m_remaining_cycles -= 10;
}
-static void fmovem(m68000_base_device *m68k, uint16_t w2)
+void fmovem(uint16_t w2)
{
int i;
- int ea = m68k->ir & 0x3f;
+ int ea = m_ir & 0x3f;
int dir = (w2 >> 13) & 0x1;
int mode = (w2 >> 11) & 0x3;
int reglist = w2 & 0xff;
@@ -1733,10 +1730,10 @@ static void fmovem(m68000_base_device *m68k, uint16_t w2)
switch (ea >> 3)
{
case 5: // (d16, An)
- mem_addr= EA_AY_DI_32(m68k);
+ mem_addr= EA_AY_DI_32();
break;
case 6: // (An) + (Xn) + d8
- mem_addr= EA_AY_IX_32(m68k);
+ mem_addr= EA_AY_IX_32();
break;
}
@@ -1746,7 +1743,7 @@ static void fmovem(m68000_base_device *m68k, uint16_t w2)
{
case 1: // Dynamic register list, postincrement or control addressing mode.
// FIXME: not really tested, but seems to work
- reglist = REG_D(m68k)[(reglist >> 4) & 7];
+ reglist = REG_D()[(reglist >> 4) & 7];
case 0: // Static register list, predecrement or control addressing mode
{
@@ -1758,15 +1755,15 @@ static void fmovem(m68000_base_device *m68k, uint16_t w2)
{
case 5: // (d16, An)
case 6: // (An) + (Xn) + d8
- store_extended_float80(m68k, mem_addr, REG_FP(m68k)[i]);
+ store_extended_float80(mem_addr, m_fpr[i]);
mem_addr += 12;
break;
default:
- WRITE_EA_FPE(m68k, ea, REG_FP(m68k)[i]);
+ WRITE_EA_FPE(ea, m_fpr[i]);
break;
}
- m68k->remaining_cycles -= 2;
+ m_remaining_cycles -= 2;
}
}
break;
@@ -1782,21 +1779,21 @@ static void fmovem(m68000_base_device *m68k, uint16_t w2)
{
case 5: // (d16, An)
case 6: // (An) + (Xn) + d8
- store_extended_float80(m68k, mem_addr, REG_FP(m68k)[7-i]);
+ store_extended_float80(mem_addr, m_fpr[7-i]);
mem_addr += 12;
break;
default:
- WRITE_EA_FPE(m68k, ea, REG_FP(m68k)[7-i]);
+ WRITE_EA_FPE(ea, m_fpr[7-i]);
break;
}
- m68k->remaining_cycles -= 2;
+ m_remaining_cycles -= 2;
}
}
break;
}
- default: fatalerror("M680x0: FMOVEM: mode %d unimplemented at %08X\n", mode, REG_PC(m68k)-4);
+ default: fatalerror("M680x0: FMOVEM: mode %d unimplemented at %08X\n", mode, m_pc-4);
}
}
else // From mem to FP regs
@@ -1805,7 +1802,7 @@ static void fmovem(m68000_base_device *m68k, uint16_t w2)
{
case 3: // Dynamic register list, predecrement addressing mode.
// FIXME: not really tested, but seems to work
- reglist = REG_D(m68k)[(reglist >> 4) & 7];
+ reglist = REG_D()[(reglist >> 4) & 7];
case 2: // Static register list, postincrement or control addressing mode
{
@@ -1817,151 +1814,151 @@ static void fmovem(m68000_base_device *m68k, uint16_t w2)
{
case 5: // (d16, An)
case 6: // (An) + (Xn) + d8
- REG_FP(m68k)[7-i] = load_extended_float80(m68k, mem_addr);
+ m_fpr[7-i] = load_extended_float80(mem_addr);
mem_addr += 12;
break;
default:
- REG_FP(m68k)[7-i] = READ_EA_FPE(m68k, ea);
+ m_fpr[7-i] = READ_EA_FPE(ea);
break;
}
- m68k->remaining_cycles -= 2;
+ m_remaining_cycles -= 2;
}
}
break;
}
- default: fatalerror("M680x0: FMOVEM: mode %d unimplemented at %08X\n", mode, REG_PC(m68k)-4);
+ default: fatalerror("M680x0: FMOVEM: mode %d unimplemented at %08X\n", mode, m_pc-4);
}
}
}
-static void fscc(m68000_base_device *m68k)
+void fscc()
{
- int ea = m68k->ir & 0x3f;
- int condition = (int16_t)(OPER_I_16(m68k));
+ int ea = m_ir & 0x3f;
+ int condition = (int16_t)(OPER_I_16());
- WRITE_EA_8(m68k, ea, TEST_CONDITION(m68k, condition) ? 0xff : 0);
- m68k->remaining_cycles -= 7; // ???
+ WRITE_EA_8(ea, TEST_CONDITION(condition) ? 0xff : 0);
+ m_remaining_cycles -= 7; // ???
}
-static void fbcc16(m68000_base_device *m68k)
+void fbcc16()
{
int32_t offset;
- int condition = m68k->ir & 0x3f;
+ int condition = m_ir & 0x3f;
- offset = (int16_t)(OPER_I_16(m68k));
+ offset = (int16_t)(OPER_I_16());
// TODO: condition and jump!!!
- if (TEST_CONDITION(m68k, condition))
+ if (TEST_CONDITION(condition))
{
- m68ki_trace_t0(m68k); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_16(m68k, offset-2);
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_branch_16(offset-2);
}
- m68k->remaining_cycles -= 7;
+ m_remaining_cycles -= 7;
}
-static void fbcc32(m68000_base_device *m68k)
+void fbcc32()
{
int32_t offset;
- int condition = m68k->ir & 0x3f;
+ int condition = m_ir & 0x3f;
- offset = OPER_I_32(m68k);
+ offset = OPER_I_32();
// TODO: condition and jump!!!
- if (TEST_CONDITION(m68k, condition))
+ if (TEST_CONDITION(condition))
{
- m68ki_trace_t0(m68k); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_32(m68k, offset-4);
+ m68ki_trace_t0(); /* auto-disable (see m68kcpu.h) */
+ m68ki_branch_32(offset-4);
}
- m68k->remaining_cycles -= 7;
+ m_remaining_cycles -= 7;
}
-void m68040_fpu_op0(m68000_base_device *m68k)
+void m68040_fpu_op0()
{
- m68k->fpu_just_reset = 0;
+ m_fpu_just_reset = 0;
- switch ((m68k->ir >> 6) & 0x3)
+ switch ((m_ir >> 6) & 0x3)
{
case 0:
{
- uint16_t w2 = OPER_I_16(m68k);
+ uint16_t w2 = OPER_I_16();
switch ((w2 >> 13) & 0x7)
{
case 0x0: // FPU ALU FP, FP
case 0x2: // FPU ALU ea, FP
{
- fpgen_rm_reg(m68k, w2);
+ fpgen_rm_reg(w2);
break;
}
case 0x3: // FMOVE FP, ea
{
- fmove_reg_mem(m68k, w2);
+ fmove_reg_mem(w2);
break;
}
case 0x4: // FMOVEM ea, FPCR
case 0x5: // FMOVEM FPCR, ea
{
- fmove_fpcr(m68k, w2);
+ fmove_fpcr(w2);
break;
}
case 0x6: // FMOVEM ea, list
case 0x7: // FMOVEM list, ea
{
- fmovem(m68k, w2);
+ fmovem(w2);
break;
}
- default: fatalerror("M68kFPU: unimplemented subop %d at %08X\n", (w2 >> 13) & 0x7, REG_PC(m68k)-4);
+ default: fatalerror("M68kFPU: unimplemented subop %d at %08X\n", (w2 >> 13) & 0x7, m_pc-4);
}
break;
}
case 1: // FBcc disp16
{
- switch ((m68k->ir >> 3) & 0x7) {
+ switch ((m_ir >> 3) & 0x7) {
case 1: // FDBcc
// TODO:
break;
default: // FScc (?)
- fscc(m68k);
+ fscc();
return;
}
- fatalerror("M68kFPU: unimplemented main op %d with mode %d at %08X\n", (m68k->ir >> 6) & 0x3, (m68k->ir >> 3) & 0x7, REG_PPC(m68k));
+ fatalerror("M68kFPU: unimplemented main op %d with mode %d at %08X\n", (m_ir >> 6) & 0x3, (m_ir >> 3) & 0x7, m_ppc);
}
case 2: // FBcc disp16
{
- fbcc16(m68k);
+ fbcc16();
break;
}
case 3: // FBcc disp32
{
- fbcc32(m68k);
+ fbcc32();
break;
}
- default: fatalerror("M68kFPU: unimplemented main op %d\n", (m68k->ir >> 6) & 0x3);
+ default: fatalerror("M68kFPU: unimplemented main op %d\n", (m_ir >> 6) & 0x3);
}
}
-static int perform_fsave(m68000_base_device *m68k, uint32_t addr, int inc)
+int perform_fsave(uint32_t addr, int inc)
{
- if(m68k->cpu_type & CPU_TYPE_040)
+ if(m_cpu_type & CPU_TYPE_040)
{
if(inc)
{
- m68ki_write_32(m68k, addr, 0x41000000);
+ m68ki_write_32(addr, 0x41000000);
return 4;
}
else
{
- m68ki_write_32(m68k, addr-4, 0x41000000);
+ m68ki_write_32(addr-4, 0x41000000);
return -4;
}
}
@@ -1969,131 +1966,131 @@ static int perform_fsave(m68000_base_device *m68k, uint32_t addr, int inc)
if (inc)
{
// 68881 IDLE, version 0x1f
- m68ki_write_32(m68k, addr, 0x1f180000);
- m68ki_write_32(m68k, addr+4, 0);
- m68ki_write_32(m68k, addr+8, 0);
- m68ki_write_32(m68k, addr+12, 0);
- m68ki_write_32(m68k, addr+16, 0);
- m68ki_write_32(m68k, addr+20, 0);
- m68ki_write_32(m68k, addr+24, 0x70000000);
+ m68ki_write_32(addr, 0x1f180000);
+ m68ki_write_32(addr+4, 0);
+ m68ki_write_32(addr+8, 0);
+ m68ki_write_32(addr+12, 0);
+ m68ki_write_32(addr+16, 0);
+ m68ki_write_32(addr+20, 0);
+ m68ki_write_32(addr+24, 0x70000000);
return 7*4;
}
else
{
- m68ki_write_32(m68k, addr-4, 0x70000000);
- m68ki_write_32(m68k, addr-8, 0);
- m68ki_write_32(m68k, addr-12, 0);
- m68ki_write_32(m68k, addr-16, 0);
- m68ki_write_32(m68k, addr-20, 0);
- m68ki_write_32(m68k, addr-24, 0);
- m68ki_write_32(m68k, addr-28, 0x1f180000);
+ m68ki_write_32(addr-4, 0x70000000);
+ m68ki_write_32(addr-8, 0);
+ m68ki_write_32(addr-12, 0);
+ m68ki_write_32(addr-16, 0);
+ m68ki_write_32(addr-20, 0);
+ m68ki_write_32(addr-24, 0);
+ m68ki_write_32(addr-28, 0x1f180000);
return -7*4;
}
}
// FRESTORE on a nullptr frame reboots the FPU - all registers to NaN, the 3 status regs to 0
-static void do_frestore_null(m68000_base_device *m68k)
+void do_frestore_null()
{
int i;
- REG_FPCR(m68k) = 0;
- REG_FPSR(m68k) = 0;
- REG_FPIAR(m68k) = 0;
+ m_fpcr = 0;
+ m_fpsr = 0;
+ m_fpiar = 0;
for (i = 0; i < 8; i++)
{
- REG_FP(m68k)[i].high = 0x7fff;
- REG_FP(m68k)[i].low = 0xffffffffffffffffU;
+ m_fpr[i].high = 0x7fff;
+ m_fpr[i].low = 0xffffffffffffffffU;
}
// Mac IIci at 408458e6 wants an FSAVE of a just-restored nullptr frame to also be nullptr
// The PRM says it's possible to generate a nullptr frame, but not how/when/why. (need the 68881/68882 manual!)
- m68k->fpu_just_reset = 1;
+ m_fpu_just_reset = 1;
}
-static void m68040_do_fsave(m68000_base_device *m68k, uint32_t addr, int reg, int inc)
+void m68040_do_fsave(uint32_t addr, int reg, int inc)
{
- if (m68k->fpu_just_reset)
+ if (m_fpu_just_reset)
{
- m68ki_write_32(m68k, addr, 0);
+ m68ki_write_32(addr, 0);
}
else
{
// we normally generate an IDLE frame
- int delta = perform_fsave(m68k, addr, inc);
+ int delta = perform_fsave(addr, inc);
if(reg != -1)
- REG_A(m68k)[reg] += delta;
+ REG_A()[reg] += delta;
}
}
-static void m68040_do_frestore(m68000_base_device *m68k, uint32_t addr, int reg)
+void m68040_do_frestore(uint32_t addr, int reg)
{
- bool m40 = m68k->cpu_type & CPU_TYPE_040;
- uint32_t temp = m68ki_read_32(m68k, addr);
+ bool m40 = m_cpu_type & CPU_TYPE_040;
+ uint32_t temp = m68ki_read_32(addr);
// check for nullptr frame
if (temp & 0xff000000)
{
// we don't handle non-nullptr frames
- m68k->fpu_just_reset = 0;
+ m_fpu_just_reset = 0;
if (reg != -1)
{
// how about an IDLE frame?
if (!m40 && ((temp & 0x00ff0000) == 0x00180000))
{
- REG_A(m68k)[reg] += 7*4;
+ REG_A()[reg] += 7*4;
}
else if (m40 && ((temp & 0xffff0000) == 0x41000000))
{
- REG_A(m68k)[reg] += 4;
+ REG_A()[reg] += 4;
} // check UNIMP
else if ((temp & 0x00ff0000) == 0x00380000)
{
- REG_A(m68k)[reg] += 14*4;
+ REG_A()[reg] += 14*4;
} // check BUSY
else if ((temp & 0x00ff0000) == 0x00b40000)
{
- REG_A(m68k)[reg] += 45*4;
+ REG_A()[reg] += 45*4;
}
}
}
else
{
- do_frestore_null(m68k);
+ do_frestore_null();
}
}
-void m68040_fpu_op1(m68000_base_device *m68k)
+void m68040_fpu_op1()
{
- int ea = m68k->ir & 0x3f;
+ int ea = m_ir & 0x3f;
int mode = (ea >> 3) & 0x7;
int reg = (ea & 0x7);
uint32_t addr;
- switch ((m68k->ir >> 6) & 0x3)
+ switch ((m_ir >> 6) & 0x3)
{
case 0: // FSAVE <ea>
{
switch (mode)
{
case 2: // (An)
- addr = REG_A(m68k)[reg];
- m68040_do_fsave(m68k, addr, -1, 1);
+ addr = REG_A()[reg];
+ m68040_do_fsave(addr, -1, 1);
break;
case 3: // (An)+
- addr = EA_AY_PI_32(m68k);
- m68040_do_fsave(m68k, addr, reg, 1);
+ addr = EA_AY_PI_32();
+ m68040_do_fsave(addr, reg, 1);
break;
case 4: // -(An)
- addr = EA_AY_PD_32(m68k);
- m68040_do_fsave(m68k, addr, reg, 0);
+ addr = EA_AY_PD_32();
+ m68040_do_fsave(addr, reg, 0);
break;
case 5: // (D16, An)
- addr = EA_AY_DI_16(m68k);
- m68040_do_fsave(m68k, addr, -1, 1);
+ addr = EA_AY_DI_16();
+ m68040_do_fsave(addr, -1, 1);
break;
case 7: //
@@ -2101,24 +2098,24 @@ void m68040_fpu_op1(m68000_base_device *m68k)
{
case 1: // (abs32)
{
- addr = EA_AL_32(m68k);
- m68040_do_fsave(m68k, addr, -1, 1);
+ addr = EA_AL_32();
+ m68040_do_fsave(addr, -1, 1);
break;
}
case 2: // (d16, PC)
{
- addr = EA_PCDI_16(m68k);
- m68040_do_fsave(m68k, addr, -1, 1);
+ addr = EA_PCDI_16();
+ m68040_do_fsave(addr, -1, 1);
break;
}
default:
- fatalerror("M68kFPU: FSAVE unhandled mode %d reg %d at %x\n", mode, reg, REG_PC(m68k));
+ fatalerror("M68kFPU: FSAVE unhandled mode %d reg %d at %x\n", mode, reg, m_pc);
}
break;
default:
- fatalerror("M68kFPU: FSAVE unhandled mode %d reg %d at %x\n", mode, reg, REG_PC(m68k));
+ fatalerror("M68kFPU: FSAVE unhandled mode %d reg %d at %x\n", mode, reg, m_pc);
}
break;
}
@@ -2129,18 +2126,18 @@ void m68040_fpu_op1(m68000_base_device *m68k)
switch (mode)
{
case 2: // (An)
- addr = REG_A(m68k)[reg];
- m68040_do_frestore(m68k, addr, -1);
+ addr = REG_A()[reg];
+ m68040_do_frestore(addr, -1);
break;
case 3: // (An)+
- addr = EA_AY_PI_32(m68k);
- m68040_do_frestore(m68k, addr, reg);
+ addr = EA_AY_PI_32();
+ m68040_do_frestore(addr, reg);
break;
case 5: // (D16, An)
- addr = EA_AY_DI_16(m68k);
- m68040_do_frestore(m68k, addr, -1);
+ addr = EA_AY_DI_16();
+ m68040_do_frestore(addr, -1);
break;
case 7: //
@@ -2148,53 +2145,53 @@ void m68040_fpu_op1(m68000_base_device *m68k)
{
case 1: // (abs32)
{
- addr = EA_AL_32(m68k);
- m68040_do_frestore(m68k, addr, -1);
+ addr = EA_AL_32();
+ m68040_do_frestore(addr, -1);
break;
}
case 2: // (d16, PC)
{
- addr = EA_PCDI_16(m68k);
- m68040_do_frestore(m68k, addr, -1);
+ addr = EA_PCDI_16();
+ m68040_do_frestore(addr, -1);
break;
}
default:
- fatalerror("M68kFPU: FRESTORE unhandled mode %d reg %d at %x\n", mode, reg, REG_PC(m68k));
+ fatalerror("M68kFPU: FRESTORE unhandled mode %d reg %d at %x\n", mode, reg, m_pc);
}
break;
default:
- fatalerror("M68kFPU: FRESTORE unhandled mode %d reg %d at %x\n", mode, reg, REG_PC(m68k));
+ fatalerror("M68kFPU: FRESTORE unhandled mode %d reg %d at %x\n", mode, reg, m_pc);
}
break;
}
break;
- default: fatalerror("m68040_fpu_op1: unimplemented op %d at %08X\n", (m68k->ir >> 6) & 0x3, REG_PC(m68k)-2);
+ default: fatalerror("m68040_fpu_op1: unimplemented op %d at %08X\n", (m_ir >> 6) & 0x3, m_pc-2);
}
}
-void m68881_ftrap(m68000_base_device *m68k)
+void m68881_ftrap()
{
- uint16_t w2 = OPER_I_16(m68k);
+ uint16_t w2 = OPER_I_16();
// now check the condition
- if (TEST_CONDITION(m68k, w2 & 0x3f))
+ if (TEST_CONDITION(w2 & 0x3f))
{
// trap here
- m68ki_exception_trap(m68k, EXCEPTION_TRAPV);
+ m68ki_exception_trap(EXCEPTION_TRAPV);
}
else // fall through, requires eating the operand
{
- switch (m68k->ir & 0x7)
+ switch (m_ir & 0x7)
{
case 2: // word operand
- OPER_I_16(m68k);
+ OPER_I_16();
break;
case 3: // long word operand
- OPER_I_32(m68k);
+ OPER_I_32();
break;
case 4: // no operand
diff --git a/src/devices/cpu/m68000/m68kmake.cpp b/src/devices/cpu/m68000/m68kmake.cpp
index 06e5cdecb1d..9be6ca437af 100644
--- a/src/devices/cpu/m68000/m68kmake.cpp
+++ b/src/devices/cpu/m68000/m68kmake.cpp
@@ -789,8 +789,8 @@ static void get_base_name(char* base_name, opcode_struct* op)
/* Write the name of an opcode handler function */
static void write_function_name(FILE* filep, char* base_name)
{
- fprintf(filep, "void m68000_base_device_ops::%s(m68000_base_device* mc68kcpu)\n", base_name);
- fprintf(g_prototype_file, "static void %s(m68000_base_device* mc68kcpu);\n", base_name);
+ fprintf(filep, "void m68000_base_device::%s()\n", base_name);
+ fprintf(g_prototype_file, "void %s();\n", base_name);
}
static void add_opcode_output_table_entry(opcode_struct* op, char* name)
@@ -803,7 +803,7 @@ static void add_opcode_output_table_entry(opcode_struct* op, char* name)
*ptr = *op;
- sprintf( ptr->name, "m68000_base_device_ops::%s", name);
+ sprintf( ptr->name, "&m68000_base_device::%s", name);
ptr->bits = num_bits(ptr->op_mask);
}
@@ -880,17 +880,17 @@ static void generate_opcode_handler(FILE* filep, body_struct* body, replace_stru
/* Add any replace strings needed */
if(ea_mode != EA_MODE_NONE)
{
- sprintf(str, "EA_%s_8(mc68kcpu)", g_ea_info_table[ea_mode].ea_add);
+ sprintf(str, "EA_%s_8()", g_ea_info_table[ea_mode].ea_add);
add_replace_string(replace, ID_OPHANDLER_EA_AY_8, str);
- sprintf(str, "EA_%s_16(mc68kcpu)", g_ea_info_table[ea_mode].ea_add);
+ sprintf(str, "EA_%s_16()", g_ea_info_table[ea_mode].ea_add);
add_replace_string(replace, ID_OPHANDLER_EA_AY_16, str);
- sprintf(str, "EA_%s_32(mc68kcpu)", g_ea_info_table[ea_mode].ea_add);
+ sprintf(str, "EA_%s_32()", g_ea_info_table[ea_mode].ea_add);
add_replace_string(replace, ID_OPHANDLER_EA_AY_32, str);
- sprintf(str, "OPER_%s_8(mc68kcpu)", g_ea_info_table[ea_mode].ea_add);
+ sprintf(str, "OPER_%s_8()", g_ea_info_table[ea_mode].ea_add);
add_replace_string(replace, ID_OPHANDLER_OPER_AY_8, str);
- sprintf(str, "OPER_%s_16(mc68kcpu)", g_ea_info_table[ea_mode].ea_add);
+ sprintf(str, "OPER_%s_16()", g_ea_info_table[ea_mode].ea_add);
add_replace_string(replace, ID_OPHANDLER_OPER_AY_16, str);
- sprintf(str, "OPER_%s_32(mc68kcpu)", g_ea_info_table[ea_mode].ea_add);
+ sprintf(str, "OPER_%s_32()", g_ea_info_table[ea_mode].ea_add);
add_replace_string(replace, ID_OPHANDLER_OPER_AY_32, str);
}
@@ -972,8 +972,8 @@ static void generate_opcode_cc_variants(FILE* filep, body_struct* body, replace_
for(i=2;i<16;i++)
{
/* Add replace strings for this condition code */
- sprintf(repl, "COND_%s(mc68kcpu)", g_cc_table[i][1]);
- sprintf(replnot, "COND_NOT_%s(mc68kcpu)", g_cc_table[i][1]);
+ sprintf(repl, "COND_%s()", g_cc_table[i][1]);
+ sprintf(replnot, "COND_NOT_%s()", g_cc_table[i][1]);
add_replace_string(replace, ID_OPHANDLER_CC, repl);
add_replace_string(replace, ID_OPHANDLER_NOT_CC, replnot);
@@ -1358,9 +1358,7 @@ int main(int argc, char *argv[])
error_exit("Duplicate opcode handler section");
fprintf(g_table_file, "%s\n\n", ophandler_header_insert);
- fprintf(g_prototype_file, "#ifdef OPCODE_PROTOTYPES\n\n");
process_opcode_handlers(g_table_file);
- fprintf(g_prototype_file, "#else\n");
fprintf(g_table_file, "%s\n\n", ophandler_footer_insert);
ophandler_body_read = 1;
@@ -1390,7 +1388,6 @@ int main(int argc, char *argv[])
fprintf(g_table_file, "%s\n\n", table_footer_insert);
fprintf(g_prototype_file, "%s\n\n", prototype_footer_insert);
- fprintf(g_prototype_file, "#endif\n");
break;
}
diff --git a/src/devices/cpu/m68000/m68kmmu.h b/src/devices/cpu/m68000/m68kmmu.h
index d477b31f187..24601755e6d 100644
--- a/src/devices/cpu/m68000/m68kmmu.h
+++ b/src/devices/cpu/m68000/m68kmmu.h
@@ -9,44 +9,44 @@
// MMU status register bit definitions
-#define M68K_MMU_SR_BUS_ERROR 0x8000
-#define M68K_MMU_SR_SUPERVISOR_ONLY 0x2000
-#define M68K_MMU_SR_WRITE_PROTECT 0x0800
-#define M68K_MMU_SR_INVALID 0x0400
-#define M68K_MMU_SR_MODIFIED 0x0200
-#define M68K_MMU_SR_LEVEL_0 0x0000
-#define M68K_MMU_SR_LEVEL_1 0x0001
-#define M68K_MMU_SR_LEVEL_2 0x0002
-#define M68K_MMU_SR_LEVEL_3 0x0003
+static constexpr int M68K_MMU_SR_BUS_ERROR = 0x8000;
+static constexpr int M68K_MMU_SR_SUPERVISOR_ONLY = 0x2000;
+static constexpr int M68K_MMU_SR_WRITE_PROTECT = 0x0800;
+static constexpr int M68K_MMU_SR_INVALID = 0x0400;
+static constexpr int M68K_MMU_SR_MODIFIED = 0x0200;
+static constexpr int M68K_MMU_SR_LEVEL_0 = 0x0000;
+static constexpr int M68K_MMU_SR_LEVEL_1 = 0x0001;
+static constexpr int M68K_MMU_SR_LEVEL_2 = 0x0002;
+static constexpr int M68K_MMU_SR_LEVEL_3 = 0x0003;
// MMU translation table descriptor field definitions
-#define M68K_MMU_DF_DT 0x0003
-#define M68K_MMU_DF_DT0 0x0000
-#define M68K_MMU_DF_DT1 0x0001
-#define M68K_MMU_DF_DT2 0x0002
-#define M68K_MMU_DF_DT3 0x0003
-#define M68K_MMU_DF_WP 0x0004
-#define M68K_MMU_DF_USED 0x0008
-#define M68K_MMU_DF_MODIFIED 0x0010
-#define M68K_MMU_DF_CI 0x0040
-#define M68K_MMU_DF_SUPERVISOR 0x0100
+static constexpr int M68K_MMU_DF_DT = 0x0003;
+static constexpr int M68K_MMU_DF_DT0 = 0x0000;
+static constexpr int M68K_MMU_DF_DT1 = 0x0001;
+static constexpr int M68K_MMU_DF_DT2 = 0x0002;
+static constexpr int M68K_MMU_DF_DT3 = 0x0003;
+static constexpr int M68K_MMU_DF_WP = 0x0004;
+static constexpr int M68K_MMU_DF_USED = 0x0008;
+static constexpr int M68K_MMU_DF_MODIFIED = 0x0010;
+static constexpr int M68K_MMU_DF_CI = 0x0040;
+static constexpr int M68K_MMU_DF_SUPERVISOR = 0x0100;
// MMU ATC Fields
-#define M68K_MMU_ATC_BUSERROR 0x08000000
-#define M68K_MMU_ATC_CACHE_IN 0x04000000
-#define M68K_MMU_ATC_WRITE_PR 0x02000000
-#define M68K_MMU_ATC_MODIFIED 0x01000000
-#define M68K_MMU_ATC_MASK 0x00ffffff
-#define M68K_MMU_ATC_SHIFT 8
-#define M68K_MMU_ATC_VALID 0x08000000
+static constexpr int M68K_MMU_ATC_BUSERROR = 0x08000000;
+static constexpr int M68K_MMU_ATC_CACHE_IN = 0x04000000;
+static constexpr int M68K_MMU_ATC_WRITE_PR = 0x02000000;
+static constexpr int M68K_MMU_ATC_MODIFIED = 0x01000000;
+static constexpr int M68K_MMU_ATC_MASK = 0x00ffffff;
+static constexpr int M68K_MMU_ATC_SHIFT = 8;
+static constexpr int M68K_MMU_ATC_VALID = 0x08000000;
// MMU Translation Control register
-#define M68K_MMU_TC_SRE 0x02000000
+static constexpr int M68K_MMU_TC_SRE = 0x02000000;
/* decodes the effective address */
-static uint32_t DECODE_EA_32(m68000_base_device *m68k, int ea)
+uint32_t DECODE_EA_32(int ea)
{
int mode = (ea >> 3) & 0x7;
int reg = (ea & 0x7);
@@ -55,21 +55,21 @@ static uint32_t DECODE_EA_32(m68000_base_device *m68k, int ea)
{
case 2: // (An)
{
- return REG_A(m68k)[reg];
+ return REG_A()[reg];
}
case 3: // (An)+
{
- uint32_t ea = EA_AY_PI_32(m68k);
+ uint32_t ea = EA_AY_PI_32();
return ea;
}
case 5: // (d16, An)
{
- uint32_t ea = EA_AY_DI_32(m68k);
+ uint32_t ea = EA_AY_DI_32();
return ea;
}
case 6: // (An) + (Xn) + d8
{
- uint32_t ea = EA_AY_IX_32(m68k);
+ uint32_t ea = EA_AY_IX_32();
return ea;
}
case 7:
@@ -78,26 +78,26 @@ static uint32_t DECODE_EA_32(m68000_base_device *m68k, int ea)
{
case 0: // (xxx).W
{
- uint32_t ea = (uint32_t)OPER_I_16(m68k);
+ uint32_t ea = OPER_I_16();
return ea;
}
case 1: // (xxx).L
{
- uint32_t d1 = OPER_I_16(m68k);
- uint32_t d2 = OPER_I_16(m68k);
+ uint32_t d1 = OPER_I_16();
+ uint32_t d2 = OPER_I_16();
uint32_t ea = (d1 << 16) | d2;
return ea;
}
case 2: // (d16, PC)
{
- uint32_t ea = EA_PCDI_32(m68k);
+ uint32_t ea = EA_PCDI_32();
return ea;
}
- default: fatalerror("m68k: DECODE_EA_32: unhandled mode %d, reg %d at %08X\n", mode, reg, REG_PC(m68k));
+ default: fatalerror("m68k: DECODE_EA_32: unhandled mode %d, reg %d at %08X\n", mode, reg, m_pc);
}
break;
}
- default: fatalerror("m68k: DECODE_EA_32: unhandled mode %d, reg %d at %08X\n", mode, reg, REG_PC(m68k));
+ default: fatalerror("m68k: DECODE_EA_32: unhandled mode %d, reg %d at %08X\n", mode, reg, m_pc);
}
return 0;
}
@@ -105,12 +105,12 @@ static uint32_t DECODE_EA_32(m68000_base_device *m68k, int ea)
/*
pmmu_atc_add: adds this address to the ATC
*/
-void pmmu_atc_add(m68000_base_device *m68k, uint32_t logical, uint32_t physical, int fc)
+void pmmu_atc_add(uint32_t logical, uint32_t physical, int fc)
{
int i, found;
// get page size (i.e. # of bits to ignore); is 10 for Apollo
- int ps = (m68k->mmu_tc >> 20) & 0xf;
+ int ps = (m_mmu_tc >> 20) & 0xf;
// Note: exact emulation would use (logical >> ps) << (ps-8)
uint32_t atc_tag = M68K_MMU_ATC_VALID | ((fc &7) << 24)| logical >> ps;
@@ -118,7 +118,7 @@ void pmmu_atc_add(m68000_base_device *m68k, uint32_t logical, uint32_t physical,
for (i = 0; i < MMU_ATC_ENTRIES; i++)
{
// if tag bits and function code match, don't add
- if (m68k->mmu_atc_tag[i] == atc_tag)
+ if (m_mmu_atc_tag[i] == atc_tag)
{
return;
}
@@ -128,7 +128,7 @@ void pmmu_atc_add(m68000_base_device *m68k, uint32_t logical, uint32_t physical,
found = -1;
for (i = 0; i < MMU_ATC_ENTRIES; i++)
{
- if (!(m68k->mmu_atc_tag[i] & M68K_MMU_ATC_VALID))
+ if (!(m_mmu_atc_tag[i] & M68K_MMU_ATC_VALID))
{
found = i;
break;
@@ -138,22 +138,22 @@ void pmmu_atc_add(m68000_base_device *m68k, uint32_t logical, uint32_t physical,
// did we find an entry? steal one by round-robin then
if (found == -1)
{
- found = m68k->mmu_atc_rr++;
+ found = m_mmu_atc_rr++;
- if (m68k->mmu_atc_rr >= MMU_ATC_ENTRIES)
+ if (m_mmu_atc_rr >= MMU_ATC_ENTRIES)
{
- m68k->mmu_atc_rr = 0;
+ m_mmu_atc_rr = 0;
}
}
// add the entry
// printf("ATC[%2d] add: log %08x -> phys %08x (fc=%d)\n", found, (logical>>ps) << ps, (physical >> ps) << ps, fc);
- m68k->mmu_atc_tag[found] = atc_tag;
- m68k->mmu_atc_data[found] = (physical >> ps) << (ps-8);
+ m_mmu_atc_tag[found] = atc_tag;
+ m_mmu_atc_data[found] = (physical >> ps) << (ps-8);
- if (m68k->mmu_tmp_sr & M68K_MMU_SR_WRITE_PROTECT)
+ if (m_mmu_tmp_sr & M68K_MMU_SR_WRITE_PROTECT)
{
- m68k->mmu_atc_data[found] |= M68K_MMU_ATC_WRITE_PR;
+ m_mmu_atc_data[found] |= M68K_MMU_ATC_WRITE_PR;
}
}
@@ -162,61 +162,61 @@ void pmmu_atc_add(m68000_base_device *m68k, uint32_t logical, uint32_t physical,
7fff0003 001ffd10 80f05750 is what should load
*/
-void pmmu_atc_flush(m68000_base_device *m68k)
+void pmmu_atc_flush()
{
int i;
- // printf("ATC flush: pc=%08x\n", REG_PPC(m68k));
+ // printf("ATC flush: pc=%08x\n", m_ppc);
for (i = 0; i < MMU_ATC_ENTRIES; i++)
{
- m68k->mmu_atc_tag[i] = 0;
+ m_mmu_atc_tag[i] = 0;
}
- m68k->mmu_atc_rr = 0;
+ m_mmu_atc_rr = 0;
}
-static inline uint32_t get_dt2_table_entry(m68000_base_device *m68k, uint32_t tptr, uint8_t ptest)
+inline uint32_t get_dt2_table_entry(uint32_t tptr, uint8_t ptest)
{
- uint32_t tbl_entry = m68k->program->read_dword(tptr);
+ uint32_t tbl_entry = m_program->read_dword(tptr);
uint32_t dt = tbl_entry & M68K_MMU_DF_DT;
- m68k->mmu_tmp_sr |= tbl_entry & 0x0004 ? M68K_MMU_SR_WRITE_PROTECT : 0;
+ m_mmu_tmp_sr |= tbl_entry & 0x0004 ? M68K_MMU_SR_WRITE_PROTECT : 0;
if (!ptest && dt != M68K_MMU_DF_DT0)
{
- if (dt == M68K_MMU_DF_DT1 && !m68k->mmu_tmp_rw && !(m68k->mmu_tmp_sr & M68K_MMU_SR_WRITE_PROTECT))
+ if (dt == M68K_MMU_DF_DT1 && !m_mmu_tmp_rw && !(m_mmu_tmp_sr & M68K_MMU_SR_WRITE_PROTECT))
{
// set used and modified
- m68k->program->write_dword( tptr, tbl_entry | M68K_MMU_DF_USED | M68K_MMU_DF_MODIFIED);
+ m_program->write_dword( tptr, tbl_entry | M68K_MMU_DF_USED | M68K_MMU_DF_MODIFIED);
}
else if (!(tbl_entry & M68K_MMU_DF_USED))
{
- m68k->program->write_dword( tptr, tbl_entry | M68K_MMU_DF_USED);
+ m_program->write_dword( tptr, tbl_entry | M68K_MMU_DF_USED);
}
}
return tbl_entry;
}
-static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tptr, uint8_t fc, uint8_t ptest)
+inline uint32_t get_dt3_table_entry(uint32_t tptr, uint8_t fc, uint8_t ptest)
{
- uint32_t tbl_entry2 = m68k->program->read_dword(tptr);
- uint32_t tbl_entry = m68k->program->read_dword(tptr + 4);
+ uint32_t tbl_entry2 = m_program->read_dword(tptr);
+ uint32_t tbl_entry = m_program->read_dword(tptr + 4);
uint32_t dt = tbl_entry2 & M68K_MMU_DF_DT;
- m68k->mmu_tmp_sr |= ((tbl_entry2 & 0x0100) && !(fc & 4)) ? M68K_MMU_SR_SUPERVISOR_ONLY : 0;
- m68k->mmu_tmp_sr |= tbl_entry2 & 0x0004 ? M68K_MMU_SR_WRITE_PROTECT : 0;
+ m_mmu_tmp_sr |= ((tbl_entry2 & 0x0100) && !(fc & 4)) ? M68K_MMU_SR_SUPERVISOR_ONLY : 0;
+ m_mmu_tmp_sr |= tbl_entry2 & 0x0004 ? M68K_MMU_SR_WRITE_PROTECT : 0;
if (!ptest && dt != M68K_MMU_DF_DT0)
{
- if (dt == M68K_MMU_DF_DT1 && !m68k->mmu_tmp_rw && !(m68k->mmu_tmp_sr & M68K_MMU_SR_WRITE_PROTECT))
+ if (dt == M68K_MMU_DF_DT1 && !m_mmu_tmp_rw && !(m_mmu_tmp_sr & M68K_MMU_SR_WRITE_PROTECT))
{
// set modified
- m68k->program->write_dword( tptr, tbl_entry2 | M68K_MMU_DF_USED | M68K_MMU_DF_MODIFIED);
+ m_program->write_dword( tptr, tbl_entry2 | M68K_MMU_DF_USED | M68K_MMU_DF_MODIFIED);
}
else if (!(tbl_entry2 & M68K_MMU_DF_USED))
{
- m68k->program->write_dword( tptr, tbl_entry2 | M68K_MMU_DF_USED);
+ m_program->write_dword( tptr, tbl_entry2 | M68K_MMU_DF_USED);
}
}
@@ -226,7 +226,7 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
/*
pmmu_translate_addr_with_fc: perform 68851/68030-style PMMU address translation
*/
-/*static inline*/ static uint32_t pmmu_translate_addr_with_fc(m68000_base_device *m68k, uint32_t addr_in, uint8_t fc, uint8_t ptest)
+uint32_t pmmu_translate_addr_with_fc(uint32_t addr_in, uint8_t fc, uint8_t ptest)
{
uint32_t addr_out, tbl_entry = 0, tamode = 0, tbmode = 0, tcmode = 0;
uint32_t root_aptr, root_limit, tofs, ps, is, abits, bbits, cbits;
@@ -240,33 +240,33 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
resolved = 0;
addr_out = addr_in;
- m68k->mmu_tmp_sr = 0;
+ m_mmu_tmp_sr = 0;
if (fc == 7)
{
return addr_in;
}
- if (m68k->mmu_tt0 & 0x8000)
+ if (m_mmu_tt0 & 0x8000)
{
// transparent translation register 0 enabled
- uint32_t address_base = m68k->mmu_tt0 & 0xff000000;
- uint32_t address_mask = ((m68k->mmu_tt0 << 8) & 0xff000000) ^ 0xff000000;
- if ((addr_in & address_mask) == address_base && (fc & ~m68k->mmu_tt0) == ((m68k->mmu_tt0 >> 4) & 7))
+ uint32_t address_base = m_mmu_tt0 & 0xff000000;
+ uint32_t address_mask = ((m_mmu_tt0 << 8) & 0xff000000) ^ 0xff000000;
+ if ((addr_in & address_mask) == address_base && (fc & ~m_mmu_tt0) == ((m_mmu_tt0 >> 4) & 7))
{
-// printf("PMMU: pc=%x TT0 fc=%x addr_in=%08x address_mask=%08x address_base=%08x\n", m68k->ppc, fc, addr_in, address_mask, address_base);
+// printf("PMMU: pc=%x TT0 fc=%x addr_in=%08x address_mask=%08x address_base=%08x\n", m_ppc, fc, addr_in, address_mask, address_base);
return addr_in;
}
}
- if (m68k->mmu_tt1 & 0x8000)
+ if (m_mmu_tt1 & 0x8000)
{
// transparent translation register 1 enabled
- uint32_t address_base = m68k->mmu_tt1 & 0xff000000;
- uint32_t address_mask = ((m68k->mmu_tt1 << 8) & 0xff000000) ^ 0xff000000;
- if ((addr_in & address_mask) == address_base && (fc & ~m68k->mmu_tt1) == ((m68k->mmu_tt1 >> 4) & 7))
+ uint32_t address_base = m_mmu_tt1 & 0xff000000;
+ uint32_t address_mask = ((m_mmu_tt1 << 8) & 0xff000000) ^ 0xff000000;
+ if ((addr_in & address_mask) == address_base && (fc & ~m_mmu_tt1) == ((m_mmu_tt1 >> 4) & 7))
{
-// printf("PMMU: pc=%x TT1 fc=%x addr_in=%08x address_mask=%08x address_base=%08x\n", m68k->ppc, fc, addr_in, address_mask, address_base);
+// printf("PMMU: pc=%x TT1 fc=%x addr_in=%08x address_mask=%08x address_base=%08x\n", m_ppc, fc, addr_in, address_mask, address_base);
return addr_in;
}
}
@@ -277,64 +277,64 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
// }
// get page size (i.e. # of bits to ignore); ps is 10 or 12 for Apollo, 8 otherwise
- ps = (m68k->mmu_tc >> 20) & 0xf;
+ ps = (m_mmu_tc >> 20) & 0xf;
atc_tag = M68K_MMU_ATC_VALID | ((fc &7) << 24) | addr_in >> ps;
// first see if this is already in the ATC
for (i = 0; i < MMU_ATC_ENTRIES; i++)
{
- if (m68k->mmu_atc_tag[i] != atc_tag)
+ if (m_mmu_atc_tag[i] != atc_tag)
{
// tag bits and function code don't match
}
- else if (!m68k->mmu_tmp_rw && (m68k->mmu_atc_data[i] & M68K_MMU_ATC_WRITE_PR))
+ else if (!m_mmu_tmp_rw && (m_mmu_atc_data[i] & M68K_MMU_ATC_WRITE_PR))
{
// write mode, but write protected
}
- else if (!m68k->mmu_tmp_rw && !(m68k->mmu_atc_data[i] & M68K_MMU_ATC_MODIFIED))
+ else if (!m_mmu_tmp_rw && !(m_mmu_atc_data[i] & M68K_MMU_ATC_MODIFIED))
{
// first write; must set modified in PMMU tables as well
}
else
{
// read access or write access and not write protected
- if (!m68k->mmu_tmp_rw && !ptest)
+ if (!m_mmu_tmp_rw && !ptest)
{
// FIXME: must set modified in PMMU tables as well
- m68k->mmu_atc_data[i] |= M68K_MMU_ATC_MODIFIED;
+ m_mmu_atc_data[i] |= M68K_MMU_ATC_MODIFIED;
}
else
{
// FIXME: supervisor mode?
- m68k->mmu_tmp_sr = M68K_MMU_SR_MODIFIED;
+ m_mmu_tmp_sr = M68K_MMU_SR_MODIFIED;
}
- addr_out = (m68k->mmu_atc_data[i] << 8) | (addr_in & ~(~0 << ps));
-// printf("ATC[%2d] hit: log %08x -> phys %08x pc=%08x fc=%d\n", i, addr_in, addr_out, REG_PPC(m68k), fc);
+ addr_out = (m_mmu_atc_data[i] << 8) | (addr_in & ~(~0 << ps));
+// printf("ATC[%2d] hit: log %08x -> phys %08x pc=%08x fc=%d\n", i, addr_in, addr_out, m_ppc, fc);
// pmmu_atc_count++;
return addr_out;
}
}
// if SRP is enabled and we're in supervisor mode, use it
- if ((m68k->mmu_tc & M68K_MMU_TC_SRE) && (fc & 4))
+ if ((m_mmu_tc & M68K_MMU_TC_SRE) && (fc & 4))
{
- root_aptr = m68k->mmu_srp_aptr;
- root_limit = m68k->mmu_srp_limit;
+ root_aptr = m_mmu_srp_aptr;
+ root_limit = m_mmu_srp_limit;
}
else // else use the CRP
{
- root_aptr = m68k->mmu_crp_aptr;
- root_limit = m68k->mmu_crp_limit;
+ root_aptr = m_mmu_crp_aptr;
+ root_limit = m_mmu_crp_limit;
}
// get initial shift (# of top bits to ignore)
- is = (m68k->mmu_tc >> 16) & 0xf;
- ps = (m68k->mmu_tc >> 20) & 0xf;
- abits = (m68k->mmu_tc >> 12) & 0xf;
- bbits = (m68k->mmu_tc >> 8) & 0xf;
- cbits = (m68k->mmu_tc >> 4) & 0xf;
+ is = (m_mmu_tc >> 16) & 0xf;
+ ps = (m_mmu_tc >> 20) & 0xf;
+ abits = (m_mmu_tc >> 12) & 0xf;
+ bbits = (m_mmu_tc >> 8) & 0xf;
+ cbits = (m_mmu_tc >> 4) & 0xf;
- // printf("PMMU: tcr %08x limit %08x aptr %08x is %x abits %d bbits %d cbits %d\n", m68k->mmu_tc, root_limit, root_aptr, is, abits, bbits, cbits);
+ // printf("PMMU: tcr %08x limit %08x aptr %08x is %x abits %d bbits %d cbits %d\n", m_mmu_tc, root_limit, root_aptr, is, abits, bbits, cbits);
// get table A offset
tofs = (addr_in<<is)>>(32-abits);
@@ -344,18 +344,18 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
switch (root_limit & M68K_MMU_DF_DT)
{
case M68K_MMU_DF_DT0: // invalid, will cause MMU exception
- m68k->mmu_tmp_sr |= M68K_MMU_SR_INVALID;
+ m_mmu_tmp_sr |= M68K_MMU_SR_INVALID;
return root_aptr;
case M68K_MMU_DF_DT1: // page descriptor, will cause direct mapping
addr_out = tptr + addr_in;
-// printf("PMMU: PC=%x root mode %d (addr_in %08x -> %08x)\n", m68k->ppc, M68K_MMU_DF_DT1, addr_in, addr_out);
+// printf("PMMU: PC=%x root mode %d (addr_in %08x -> %08x)\n", m_ppc, M68K_MMU_DF_DT1, addr_in, addr_out);
return addr_out;
case M68K_MMU_DF_DT2: // valid 4 byte descriptors
tofs *= 4;
// if (verbose) printf("PMMU: reading table A entry at %08x\n", tofs + tptr);
- tbl_entry = get_dt2_table_entry(m68k, tptr + tofs, ptest);
+ tbl_entry = get_dt2_table_entry(tptr + tofs, ptest);
tamode = tbl_entry & M68K_MMU_DF_DT;
// if (verbose) printf("PMMU: addr %08x entry %08x mode %x tofs %x\n", addr_in, tbl_entry, tamode, tofs);
break;
@@ -363,7 +363,7 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
case M68K_MMU_DF_DT3: // valid 8 byte descriptors
tofs *= 8;
// if (verbose) printf("PMMU: reading table A entries at %08x\n", tofs + tptr);
- tbl_entry = get_dt3_table_entry(m68k, tofs + tptr, fc, ptest);
+ tbl_entry = get_dt3_table_entry(tofs + tptr, fc, ptest);
tamode = tbl_entry & M68K_MMU_DF_DT;
// if (verbose) printf("PMMU: addr %08x entry %08x entry2 %08x mode %x tofs %x\n", addr_in, tbl_entry, tbl_entry2, tamode, tofs);
break;
@@ -379,7 +379,7 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
switch (tamode)
{
case M68K_MMU_DF_DT0: // invalid, will cause MMU exception (but not for ptest)
- m68k->mmu_tmp_sr |= (M68K_MMU_SR_INVALID | M68K_MMU_SR_LEVEL_1);
+ m_mmu_tmp_sr |= (M68K_MMU_SR_INVALID | M68K_MMU_SR_LEVEL_1);
// last valid pointer (for ptest)
addr_out = last_entry_ptr;
resolved = 1;
@@ -388,7 +388,7 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
case M68K_MMU_DF_DT2: // 4-byte table B descriptor
tofs *= 4;
// if (verbose) printf("PMMU: reading table B entry at %08x\n", tofs + tptr);
- tbl_entry = get_dt2_table_entry(m68k, tptr + tofs, ptest);
+ tbl_entry = get_dt2_table_entry(tptr + tofs, ptest);
tbmode = tbl_entry & M68K_MMU_DF_DT;
// if (verbose) printf("PMMU: addr %08x entry %08x mode %x tofs %x\n", addr_in, tbl_entry, tbmode, tofs);
break;
@@ -396,7 +396,7 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
case M68K_MMU_DF_DT3: // 8-byte table B descriptor
tofs *= 8;
// if (verbose) printf("PMMU: reading table B entries at %08x\n", tofs + tptr);
- tbl_entry = get_dt3_table_entry(m68k, tptr + tofs, fc, ptest);
+ tbl_entry = get_dt3_table_entry(tptr + tofs, fc, ptest);
tbmode = tbl_entry & M68K_MMU_DF_DT;
tbl_entry &= ~M68K_MMU_DF_DT;
// if (verbose) printf("PMMU: addr %08x entry %08x entry2 %08x mode %x tofs %x\n", addr_in, tbl_entry, tbl_entry2, tbmode, tofs);
@@ -423,7 +423,7 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
switch (tbmode)
{
case M68K_MMU_DF_DT0: // invalid, will cause MMU exception (but not for ptest)
- m68k->mmu_tmp_sr |= (M68K_MMU_SR_INVALID | M68K_MMU_SR_LEVEL_2);
+ m_mmu_tmp_sr |= (M68K_MMU_SR_INVALID | M68K_MMU_SR_LEVEL_2);
// last valid pointer (for ptest)
addr_out = last_entry_ptr;
resolved = 1;
@@ -432,7 +432,7 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
case M68K_MMU_DF_DT2: // 4-byte table C descriptor
tofs *= 4;
// if (verbose) printf("PMMU: reading table C entry at %08x\n", tofs + tptr);
- tbl_entry = get_dt2_table_entry(m68k, tptr + tofs, ptest);
+ tbl_entry = get_dt2_table_entry(tptr + tofs, ptest);
tcmode = tbl_entry & M68K_MMU_DF_DT;
// if (verbose) printf("PMMU: addr %08x entry %08x mode %x tofs %x\n", addr_in, tbl_entry, tbmode, tofs);
break;
@@ -440,7 +440,7 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
case M68K_MMU_DF_DT3: // 8-byte table C descriptor
tofs *= 8;
// if (verbose) printf("PMMU: reading table C entries at %08x\n", tofs + tptr);
- tbl_entry = get_dt3_table_entry(m68k, tptr+ tofs, fc, ptest);
+ tbl_entry = get_dt3_table_entry(tptr+ tofs, fc, ptest);
tcmode = tbl_entry & M68K_MMU_DF_DT;
// if (verbose) printf("PMMU: addr %08x entry %08x entry2 %08x mode %x tofs %x\n", addr_in, tbl_entry, tbl_entry2, tcmode, tofs);
break;
@@ -460,14 +460,14 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
switch (tcmode)
{
case M68K_MMU_DF_DT0: // invalid, will cause MMU exception (unless ptest)
- m68k->mmu_tmp_sr |= (M68K_MMU_SR_INVALID | M68K_MMU_SR_LEVEL_3);
+ m_mmu_tmp_sr |= (M68K_MMU_SR_INVALID | M68K_MMU_SR_LEVEL_3);
addr_out = tptr + tofs;
resolved = 1;
break;
case M68K_MMU_DF_DT2: // 4-byte (short-form) indirect descriptor
case M68K_MMU_DF_DT3: // 8-byte (long-form) indirect descriptor
- fatalerror("PMMU: pc=%08x Unhandled Table C mode %d (addr_in %08x)\n", m68k->ppc, tcmode, addr_in);
+ fatalerror("PMMU: pc=%08x Unhandled Table C mode %d (addr_in %08x)\n", m_ppc, tcmode, addr_in);
break;
case M68K_MMU_DF_DT1: // termination descriptor
@@ -482,38 +482,38 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
if (!ptest)
{
- if (m68k->mmu_tmp_sr & M68K_MMU_SR_INVALID)
+ if (m_mmu_tmp_sr & M68K_MMU_SR_INVALID)
{
- if (++m68k->mmu_tmp_buserror_occurred == 1)
+ if (++m_mmu_tmp_buserror_occurred == 1)
{
- m68k->mmu_tmp_buserror_address = addr_in;
- m68k->mmu_tmp_buserror_rw = m68k->mmu_tmp_rw;
- m68k->mmu_tmp_buserror_fc = m68k->mmu_tmp_fc;
+ m_mmu_tmp_buserror_address = addr_in;
+ m_mmu_tmp_buserror_rw = m_mmu_tmp_rw;
+ m_mmu_tmp_buserror_fc = m_mmu_tmp_fc;
}
}
- else if (m68k->mmu_tmp_sr & M68K_MMU_SR_SUPERVISOR_ONLY)
+ else if (m_mmu_tmp_sr & M68K_MMU_SR_SUPERVISOR_ONLY)
{
- if (++m68k->mmu_tmp_buserror_occurred == 1)
+ if (++m_mmu_tmp_buserror_occurred == 1)
{
- m68k->mmu_tmp_buserror_address = addr_in;
- m68k->mmu_tmp_buserror_rw = m68k->mmu_tmp_rw;
- m68k->mmu_tmp_buserror_fc = m68k->mmu_tmp_fc;
+ m_mmu_tmp_buserror_address = addr_in;
+ m_mmu_tmp_buserror_rw = m_mmu_tmp_rw;
+ m_mmu_tmp_buserror_fc = m_mmu_tmp_fc;
}
}
- else if ((m68k->mmu_tmp_sr & M68K_MMU_SR_WRITE_PROTECT) && !m68k->mmu_tmp_rw)
+ else if ((m_mmu_tmp_sr & M68K_MMU_SR_WRITE_PROTECT) && !m_mmu_tmp_rw)
{
- if (++m68k->mmu_tmp_buserror_occurred == 1)
+ if (++m_mmu_tmp_buserror_occurred == 1)
{
- m68k->mmu_tmp_buserror_address = addr_in;
- m68k->mmu_tmp_buserror_rw = m68k->mmu_tmp_rw;
- m68k->mmu_tmp_buserror_fc = m68k->mmu_tmp_fc;
+ m_mmu_tmp_buserror_address = addr_in;
+ m_mmu_tmp_buserror_rw = m_mmu_tmp_rw;
+ m_mmu_tmp_buserror_fc = m_mmu_tmp_fc;
}
}
- if (!m68k->mmu_tmp_buserror_occurred)
+ if (!m_mmu_tmp_buserror_occurred)
{
// we add only valid entries
- pmmu_atc_add(m68k, addr_in, addr_out, fc);
+ pmmu_atc_add(addr_in, addr_out, fc);
}
}
@@ -525,25 +525,25 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
// FC bits: 2 = supervisor, 1 = program, 0 = data
// the 68040 is a subset of the 68851 and 68030 PMMUs - the page table sizes are fixed, there is no early termination, etc, etc.
-/*static inline*/ static uint32_t pmmu_translate_addr_with_fc_040(m68000_base_device *m68k, uint32_t addr_in, uint8_t fc, uint8_t ptest)
+uint32_t pmmu_translate_addr_with_fc_040(uint32_t addr_in, uint8_t fc, uint8_t ptest)
{
uint32_t addr_out, tt0, tt1;
addr_out = addr_in;
- m68k->mmu_tmp_sr = 0;
+ m_mmu_tmp_sr = 0;
// transparent translation registers are always in force even if the PMMU itself is disabled
// they don't do much in emulation because we never write out of order, but the write-protect and cache control features
// are emulatable, and apparently transparent translation regions skip the page table lookup.
if (fc & 1) // data, use DTT0/DTT1
{
- tt0 = m68k->mmu_dtt0;
- tt1 = m68k->mmu_dtt1;
+ tt0 = m_mmu_dtt0;
+ tt1 = m_mmu_dtt1;
}
else if (fc & 2) // program, use ITT0/ITT1
{
- tt0 = m68k->mmu_itt0;
- tt1 = m68k->mmu_itt1;
+ tt0 = m_mmu_itt0;
+ tt1 = m_mmu_itt1;
}
else
{
@@ -561,13 +561,13 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
if ((addr_in & mask) == (tt0 & mask) && (fc & fcmask[(tt0 >> 13) & 3]) == fcmatch[(tt0 >> 13) & 3])
{
// fprintf(stderr, "TT0 match on address %08x (TT0 = %08x, mask = %08x)\n", addr_in, tt0, mask);
- if ((tt0 & 4) && !m68k->mmu_tmp_rw && !ptest) // write protect?
+ if ((tt0 & 4) && !m_mmu_tmp_rw && !ptest) // write protect?
{
- if (++m68k->mmu_tmp_buserror_occurred == 1)
+ if (++m_mmu_tmp_buserror_occurred == 1)
{
- m68k->mmu_tmp_buserror_address = addr_in;
- m68k->mmu_tmp_buserror_rw = m68k->mmu_tmp_rw;
- m68k->mmu_tmp_buserror_fc = m68k->mmu_tmp_fc;
+ m_mmu_tmp_buserror_address = addr_in;
+ m_mmu_tmp_buserror_rw = m_mmu_tmp_rw;
+ m_mmu_tmp_buserror_fc = m_mmu_tmp_fc;
}
}
@@ -586,13 +586,13 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
if ((addr_in & mask) == (tt1 & mask) && (fc & fcmask[(tt1 >> 13) & 3]) == fcmatch[(tt1 >> 13) & 3])
{
// fprintf(stderr, "TT1 match on address %08x (TT0 = %08x, mask = %08x)\n", addr_in, tt1, mask);
- if ((tt1 & 4) && !m68k->mmu_tmp_rw && !ptest) // write protect?
+ if ((tt1 & 4) && !m_mmu_tmp_rw && !ptest) // write protect?
{
- if (++m68k->mmu_tmp_buserror_occurred == 1)
+ if (++m_mmu_tmp_buserror_occurred == 1)
{
- m68k->mmu_tmp_buserror_address = addr_in;
- m68k->mmu_tmp_buserror_rw = m68k->mmu_tmp_rw;
- m68k->mmu_tmp_buserror_fc = m68k->mmu_tmp_fc;
+ m_mmu_tmp_buserror_address = addr_in;
+ m_mmu_tmp_buserror_rw = m_mmu_tmp_rw;
+ m_mmu_tmp_buserror_fc = m_mmu_tmp_fc;
}
}
@@ -600,7 +600,7 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
}
}
- if (m68k->pmmu_enabled)
+ if (m_pmmu_enabled)
{
uint32_t root_idx = (addr_in>>25) & 0x7f;
uint32_t ptr_idx = (addr_in>>18) & 0x7f;
@@ -611,15 +611,15 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
// select supervisor or user root pointer
if (fc & 4)
{
- root_ptr = m68k->mmu_srp_aptr + (root_idx<<2);
+ root_ptr = m_mmu_srp_aptr + (root_idx<<2);
}
else
{
- root_ptr = m68k->mmu_urp_aptr + (root_idx<<2);
+ root_ptr = m_mmu_urp_aptr + (root_idx<<2);
}
// get the root entry
- root_entry = m68k->program->read_dword(root_ptr);
+ root_entry = m_program->read_dword(root_ptr);
// is UDT marked valid?
if (root_entry & 2)
@@ -628,41 +628,41 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
if ((!(root_entry & 0x8)) && (!ptest))
{
root_entry |= 0x8;
- m68k->program->write_dword(root_ptr, root_entry);
+ m_program->write_dword(root_ptr, root_entry);
}
// PTEST: any write protect bits set in the search tree will set W in SR
if ((ptest) && (root_entry & 4))
{
- m68k->mmu_tmp_sr |= 4;
+ m_mmu_tmp_sr |= 4;
}
pointer_ptr = (root_entry & ~0x1ff) + (ptr_idx<<2);
- pointer_entry = m68k->program->read_dword(pointer_ptr);
+ pointer_entry = m_program->read_dword(pointer_ptr);
// PTEST: any write protect bits set in the search tree will set W in SR
if ((ptest) && (pointer_entry & 4))
{
- m68k->mmu_tmp_sr |= 4;
+ m_mmu_tmp_sr |= 4;
}
// update U bit on this pointer entry too
if ((!(pointer_entry & 0x8)) && (!ptest))
{
pointer_entry |= 0x8;
- m68k->program->write_dword(pointer_ptr, pointer_entry);
+ m_program->write_dword(pointer_ptr, pointer_entry);
}
// logerror("pointer entry = %08x\n", pointer_entry);
// write protected by the root or pointer entries?
- if ((((root_entry & 4) && !m68k->mmu_tmp_rw) || ((pointer_entry & 4) && !m68k->mmu_tmp_rw)) && !ptest)
+ if ((((root_entry & 4) && !m_mmu_tmp_rw) || ((pointer_entry & 4) && !m_mmu_tmp_rw)) && !ptest)
{
- if (++m68k->mmu_tmp_buserror_occurred == 1)
+ if (++m_mmu_tmp_buserror_occurred == 1)
{
- m68k->mmu_tmp_buserror_address = addr_in;
- m68k->mmu_tmp_buserror_rw = m68k->mmu_tmp_rw;
- m68k->mmu_tmp_buserror_fc = m68k->mmu_tmp_fc;
+ m_mmu_tmp_buserror_address = addr_in;
+ m_mmu_tmp_buserror_rw = m_mmu_tmp_rw;
+ m_mmu_tmp_buserror_fc = m_mmu_tmp_fc;
}
return addr_in;
@@ -671,12 +671,12 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
// is UDT valid on the pointer entry?
if (!(pointer_entry & 2) && !ptest)
{
-// fprintf(stderr, "Invalid pointer entry! PC=%x, addr=%x\n", m68k->ppc, addr_in);
- if (++m68k->mmu_tmp_buserror_occurred == 1)
+// fprintf(stderr, "Invalid pointer entry! PC=%x, addr=%x\n", m_ppc, addr_in);
+ if (++m_mmu_tmp_buserror_occurred == 1)
{
- m68k->mmu_tmp_buserror_address = addr_in;
- m68k->mmu_tmp_buserror_rw = m68k->mmu_tmp_rw;
- m68k->mmu_tmp_buserror_fc = m68k->mmu_tmp_fc;
+ m_mmu_tmp_buserror_address = addr_in;
+ m_mmu_tmp_buserror_rw = m_mmu_tmp_rw;
+ m_mmu_tmp_buserror_fc = m_mmu_tmp_fc;
}
return addr_in;
@@ -686,15 +686,15 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
}
else // throw an error
{
-// fprintf(stderr, "Invalid root entry! PC=%x, addr=%x\n", m68k->ppc, addr_in);
+// fprintf(stderr, "Invalid root entry! PC=%x, addr=%x\n", m_ppc, addr_in);
if (!ptest)
{
- if (++m68k->mmu_tmp_buserror_occurred == 1)
+ if (++m_mmu_tmp_buserror_occurred == 1)
{
- m68k->mmu_tmp_buserror_address = addr_in;
- m68k->mmu_tmp_buserror_rw = m68k->mmu_tmp_rw;
- m68k->mmu_tmp_buserror_fc = m68k->mmu_tmp_fc;
+ m_mmu_tmp_buserror_address = addr_in;
+ m_mmu_tmp_buserror_rw = m_mmu_tmp_rw;
+ m_mmu_tmp_buserror_fc = m_mmu_tmp_fc;
}
}
@@ -702,7 +702,7 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
}
// now do the page lookup
- if (m68k->mmu_tc & 0x4000) // 8k pages?
+ if (m_mmu_tc & 0x4000) // 8k pages?
{
page_idx = (addr_in >> 13) & 0x1f;
page = addr_in & 0x1fff;
@@ -718,27 +718,27 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
}
page_ptr = pointer_entry + (page_idx<<2);
- page_entry = m68k->program->read_dword(page_ptr);
- m68k->mmu_last_page_entry_addr = page_ptr;
+ page_entry = m_program->read_dword(page_ptr);
+ m_mmu_last_page_entry_addr = page_ptr;
// logerror("page_entry = %08x\n", page_entry);
// resolve indirect page pointers
while ((page_entry & 3) == 2)
{
- page_entry = m68k->program->read_dword(page_entry & ~0x3);
- m68k->mmu_last_page_entry_addr = (page_entry & ~0x3);
+ page_entry = m_program->read_dword(page_entry & ~0x3);
+ m_mmu_last_page_entry_addr = (page_entry & ~0x3);
}
- m68k->mmu_last_page_entry = page_entry;
+ m_mmu_last_page_entry = page_entry;
// is the page write protected or supervisor protected?
- if ((((page_entry & 4) && !m68k->mmu_tmp_rw) || ((page_entry & 0x80) && !(fc&4))) && !ptest)
+ if ((((page_entry & 4) && !m_mmu_tmp_rw) || ((page_entry & 0x80) && !(fc&4))) && !ptest)
{
- if (++m68k->mmu_tmp_buserror_occurred == 1)
+ if (++m_mmu_tmp_buserror_occurred == 1)
{
- m68k->mmu_tmp_buserror_address = addr_in;
- m68k->mmu_tmp_buserror_rw = m68k->mmu_tmp_rw;
- m68k->mmu_tmp_buserror_fc = m68k->mmu_tmp_fc;
+ m_mmu_tmp_buserror_address = addr_in;
+ m_mmu_tmp_buserror_rw = m_mmu_tmp_rw;
+ m_mmu_tmp_buserror_fc = m_mmu_tmp_fc;
}
return addr_in;
@@ -747,14 +747,14 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
switch (page_entry & 3)
{
case 0: // invalid
-// fprintf(stderr, "Invalid page entry! PC=%x, addr=%x\n", m68k->ppc, addr_in);
+// fprintf(stderr, "Invalid page entry! PC=%x, addr=%x\n", m_ppc, addr_in);
if (!ptest)
{
- if (++m68k->mmu_tmp_buserror_occurred == 1)
+ if (++m_mmu_tmp_buserror_occurred == 1)
{
- m68k->mmu_tmp_buserror_address = addr_in;
- m68k->mmu_tmp_buserror_rw = m68k->mmu_tmp_rw;
- m68k->mmu_tmp_buserror_fc = m68k->mmu_tmp_fc;
+ m_mmu_tmp_buserror_address = addr_in;
+ m_mmu_tmp_buserror_rw = m_mmu_tmp_rw;
+ m_mmu_tmp_buserror_fc = m_mmu_tmp_fc;
}
}
@@ -762,7 +762,7 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
case 1:
case 3: // normal
- if (m68k->mmu_tc & 0x4000) // 8k pages?
+ if (m_mmu_tc & 0x4000) // 8k pages?
{
addr_out = (page_entry & ~0x1fff) | page;
}
@@ -776,23 +776,23 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
page_entry |= 0x8; // always set the U bit
// if we're writing, the M bit comes into play
- if (!m68k->mmu_tmp_rw)
+ if (!m_mmu_tmp_rw)
{
page_entry |= 0x10; // set Modified
}
// if these updates resulted in a change, write the entry back where we found it
- if (page_entry != m68k->mmu_last_page_entry)
+ if (page_entry != m_mmu_last_page_entry)
{
- m68k->mmu_last_page_entry = page_entry;
- m68k->program->write_dword(m68k->mmu_last_page_entry_addr, m68k->mmu_last_page_entry);
+ m_mmu_last_page_entry = page_entry;
+ m_program->write_dword(m_mmu_last_page_entry_addr, m_mmu_last_page_entry);
}
}
else
{
// page entry: UR G U1 U0 S CM CM M U W PDT
// SR: B G U1 U0 S CM CM M 0 W T R
- m68k->mmu_tmp_sr |= ((addr_out & ~0xfff) || (page_entry & 0x7f4));
+ m_mmu_tmp_sr |= ((addr_out & ~0xfff) || (page_entry & 0x7f4));
}
break;
@@ -809,23 +809,23 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
/*
pmmu_translate_addr: perform 68851/68030-style PMMU address translation
*/
-/*static inline*/ static uint32_t pmmu_translate_addr(m68000_base_device *m68k, uint32_t addr_in)
+uint32_t pmmu_translate_addr(uint32_t addr_in)
{
uint32_t addr_out;
- if (CPU_TYPE_IS_040_PLUS(m68k->cpu_type))
+ if (CPU_TYPE_IS_040_PLUS())
{
- addr_out = pmmu_translate_addr_with_fc_040(m68k, addr_in, m68k->mmu_tmp_fc, 0);
+ addr_out = pmmu_translate_addr_with_fc_040(addr_in, m_mmu_tmp_fc, 0);
}
else
{
- addr_out = pmmu_translate_addr_with_fc(m68k, addr_in, m68k->mmu_tmp_fc, 0);
+ addr_out = pmmu_translate_addr_with_fc(addr_in, m_mmu_tmp_fc, 0);
}
-// if (m68k->mmu_tmp_buserror_occurred > 0) {
+// if (m_mmu_tmp_buserror_occurred > 0) {
// printf("PMMU: pc=%08x sp=%08x va=%08x pa=%08x - invalid Table mode for level=%d (buserror %d)\n",
-// REG_PPC(m68k), REG_A(m68k)[7], addr_in, addr_out, m68k->mmu_tmp_sr & M68K_MMU_SR_LEVEL_3,
-// m68k->mmu_tmp_buserror_occurred);
+// m_ppc, REG_A()[7], addr_in, addr_out, m_mmu_tmp_sr & M68K_MMU_SR_LEVEL_3,
+// m_mmu_tmp_buserror_occurred);
// }
return addr_out;
@@ -835,67 +835,67 @@ static inline uint32_t get_dt3_table_entry(m68000_base_device *m68k, uint32_t tp
m68851_mmu_ops: COP 0 MMU opcode handling
*/
-void m68881_mmu_ops(m68000_base_device *m68k)
+void m68881_mmu_ops()
{
uint16_t modes;
- uint32_t ea = m68k->ir & 0x3f;
+ uint32_t ea = m_ir & 0x3f;
uint64_t temp64;
// catch the 2 "weird" encodings up front (PBcc)
- if ((m68k->ir & 0xffc0) == 0xf0c0)
+ if ((m_ir & 0xffc0) == 0xf0c0)
{
printf("680x0: unhandled PBcc\n");
return;
}
- else if ((m68k->ir & 0xffc0) == 0xf080)
+ else if ((m_ir & 0xffc0) == 0xf080)
{
printf("680x0: unhandled PBcc\n");
return;
}
- else if ((m68k->ir & 0xffe0) == 0xf500)
+ else if ((m_ir & 0xffe0) == 0xf500)
{
-// logerror("68040 pflush: pc=%08x ir=%04x opmode=%d register=%d\n", REG_PPC(m68k), m68k->ir, (m68k->ir >> 3) & 3, m68k->ir & 7);
- pmmu_atc_flush(m68k);
+// logerror("68040 pflush: pc=%08x ir=%04x opmode=%d register=%d\n", m_ppc, m_ir, (m_ir >> 3) & 3, m_ir & 7);
+ pmmu_atc_flush();
}
else // the rest are 1111000xxxXXXXXX where xxx is the instruction family
{
- switch ((m68k->ir>>9) & 0x7)
+ switch ((m_ir>>9) & 0x7)
{
case 0:
- modes = OPER_I_16(m68k);
+ modes = OPER_I_16();
if ((modes & 0xfde0) == 0x2000) // PLOAD
{
- uint32_t ltmp = DECODE_EA_32(m68k, ea);
+ uint32_t ltmp = DECODE_EA_32(ea);
uint32_t ptmp;
ptmp = ltmp;
- if (m68k->pmmu_enabled)
+ if (m_pmmu_enabled)
{
- if (CPU_TYPE_IS_040_PLUS(m68k->cpu_type))
+ if (CPU_TYPE_IS_040_PLUS())
{
- ptmp = pmmu_translate_addr_with_fc_040(m68k, ltmp, modes & 0x07, 0);
+ ptmp = pmmu_translate_addr_with_fc_040(ltmp, modes & 0x07, 0);
}
else
{
- ptmp = pmmu_translate_addr_with_fc(m68k, ltmp, modes & 0x07, 0);
+ ptmp = pmmu_translate_addr_with_fc(ltmp, modes & 0x07, 0);
}
}
// printf("680x0: PLOADing ATC with logical %08x => phys %08x\n", ltmp, ptmp);
// FIXME: rw bit?
- pmmu_atc_add(m68k, ltmp, ptmp, modes & 0x07);
+ pmmu_atc_add(ltmp, ptmp, modes & 0x07);
return;
}
else if ((modes & 0xe200) == 0x2000) // PFLUSH
{
- pmmu_atc_flush(m68k);
+ pmmu_atc_flush();
return;
}
else if (modes == 0xa000) // PFLUSHR
{
- pmmu_atc_flush(m68k);
+ pmmu_atc_flush();
return;
}
else if (modes == 0x2800) // PVALID (FORMAT 1)
@@ -910,38 +910,38 @@ void m68881_mmu_ops(m68000_base_device *m68k)
}
else if ((modes & 0xe000) == 0x8000) // PTEST
{
- uint32_t v_addr = DECODE_EA_32(m68k, ea);
+ uint32_t v_addr = DECODE_EA_32(ea);
uint32_t p_addr;
uint32_t fc = modes & 0x1f;
switch (fc >> 3) {
case 0:
- fc = fc == 0 ? m68k->sfc : m68k->dfc;
+ fc = fc == 0 ? m_sfc : m_dfc;
break;
case 1:
- fc = REG_D(m68k)[fc &7] &7;
+ fc = REG_D()[fc &7] &7;
break;
case 2:
fc &=7;
break;
}
- if (CPU_TYPE_IS_040_PLUS(m68k->cpu_type))
+ if (CPU_TYPE_IS_040_PLUS())
{
- p_addr = pmmu_translate_addr_with_fc_040(m68k, v_addr, fc, 1);
+ p_addr = pmmu_translate_addr_with_fc_040(v_addr, fc, 1);
}
else
{
- p_addr = pmmu_translate_addr_with_fc(m68k, v_addr, fc, 1);
+ p_addr = pmmu_translate_addr_with_fc(v_addr, fc, 1);
}
- m68k->mmu_sr = m68k->mmu_tmp_sr;
+ m_mmu_sr = m_mmu_tmp_sr;
// printf("PMMU: pc=%08x sp=%08x va=%08x pa=%08x PTEST fc=%x level=%x mmu_sr=%04x\n",
-// m68k->ppc, REG_A(m68k)[7], v_addr, p_addr, fc, (modes >> 10) & 0x07, m68k->mmu_sr);
+// m_ppc, REG_A()[7], v_addr, p_addr, fc, (modes >> 10) & 0x07, m_mmu_sr);
if (modes & 0x100)
{
int areg = (modes >> 5) & 7;
- WRITE_EA_32(m68k, 0x08 | areg, p_addr);
+ WRITE_EA_32(0x08 | areg, p_addr);
}
return;
}
@@ -956,30 +956,30 @@ void m68881_mmu_ops(m68000_base_device *m68k)
switch ((modes>>10) & 0x3f)
{
case 0x02: // transparent translation register 0
- WRITE_EA_32(m68k, ea, m68k->mmu_tt0);
-// printf("PMMU: pc=%x PMOVE from mmu_tt0=%08x\n", m68k->ppc, m68k->mmu_tt0);
+ WRITE_EA_32(ea, m_mmu_tt0);
+// printf("PMMU: pc=%x PMOVE from mmu_tt0=%08x\n", m_ppc, m_mmu_tt0);
break;
case 0x03: // transparent translation register 1
- WRITE_EA_32(m68k, ea, m68k->mmu_tt1);
-// printf("PMMU: pc=%x PMOVE from mmu_tt1=%08x\n", m68k->ppc, m68k->mmu_tt1);
+ WRITE_EA_32(ea, m_mmu_tt1);
+// printf("PMMU: pc=%x PMOVE from mmu_tt1=%08x\n", m_ppc, m_mmu_tt1);
break;
case 0x10: // translation control register
- WRITE_EA_32(m68k, ea, m68k->mmu_tc);
-// printf("PMMU: pc=%x PMOVE from mmu_tc=%08x\n", m68k->ppc, m68k->mmu_tc);
+ WRITE_EA_32(ea, m_mmu_tc);
+// printf("PMMU: pc=%x PMOVE from mmu_tc=%08x\n", m_ppc, m_mmu_tc);
break;
case 0x12: // supervisor root pointer
- WRITE_EA_64(m68k, ea, (uint64_t)m68k->mmu_srp_limit<<32 | (uint64_t)m68k->mmu_srp_aptr);
-// printf("PMMU: pc=%x PMOVE from SRP limit = %08x, aptr = %08x\n", REG_PPC(m68k), m68k->mmu_srp_limit, m68k->mmu_srp_aptr);
+ WRITE_EA_64(ea, (uint64_t)m_mmu_srp_limit<<32 | (uint64_t)m_mmu_srp_aptr);
+// printf("PMMU: pc=%x PMOVE from SRP limit = %08x, aptr = %08x\n", m_ppc, m_mmu_srp_limit, m_mmu_srp_aptr);
break;
case 0x13: // CPU root pointer
- WRITE_EA_64(m68k, ea, (uint64_t)m68k->mmu_crp_limit<<32 | (uint64_t)m68k->mmu_crp_aptr);
-// printf("PMMU: pc=%x PMOVE from CRP limit = %08x, aptr = %08x\n", REG_PPC(m68k), m68k->mmu_crp_limit, m68k->mmu_crp_aptr);
+ WRITE_EA_64(ea, (uint64_t)m_mmu_crp_limit<<32 | (uint64_t)m_mmu_crp_aptr);
+// printf("PMMU: pc=%x PMOVE from CRP limit = %08x, aptr = %08x\n", m_ppc, m_mmu_crp_limit, m_mmu_crp_aptr);
break;
default:
- printf("680x0: PMOVE from unknown MMU register %x, PC %x\n", (modes>>10) & 7, m68k->pc);
+ printf("680x0: PMOVE from unknown MMU register %x, PC %x\n", (modes>>10) & 7, m_pc);
break;
}
@@ -990,93 +990,93 @@ void m68881_mmu_ops(m68000_base_device *m68k)
{
case 0:
{
- uint32_t temp = READ_EA_32(m68k, ea);
+ uint32_t temp = READ_EA_32(ea);
if (((modes>>10) & 7) == 2)
{
- m68k->mmu_tt0 = temp;
+ m_mmu_tt0 = temp;
}
else if (((modes>>10) & 7) == 3)
{
- m68k->mmu_tt1 = temp;
+ m_mmu_tt1 = temp;
}
}
break;
case 1:
- printf("680x0: unknown PMOVE case 1, PC %x\n", m68k->pc);
+ printf("680x0: unknown PMOVE case 1, PC %x\n", m_pc);
break;
case 2:
switch ((modes>>10) & 7)
{
case 0: // translation control register
- m68k->mmu_tc = READ_EA_32(m68k, ea);
-// printf("PMMU: TC = %08x\n", m68k->mmu_tc);
+ m_mmu_tc = READ_EA_32(ea);
+// printf("PMMU: TC = %08x\n", m_mmu_tc);
- if (m68k->mmu_tc & 0x80000000)
+ if (m_mmu_tc & 0x80000000)
{
- m68k->pmmu_enabled = 1;
+ m_pmmu_enabled = 1;
// printf("PMMU enabled\n");
}
else
{
- m68k->pmmu_enabled = 0;
+ m_pmmu_enabled = 0;
// printf("PMMU disabled\n");
}
if (!(modes & 0x100)) // flush ATC on moves to TC, SRP, CRP with FD bit clear
{
- pmmu_atc_flush(m68k);
+ pmmu_atc_flush();
}
break;
case 2: // supervisor root pointer
- temp64 = READ_EA_64(m68k, ea);
- m68k->mmu_srp_limit = (temp64>>32) & 0xffffffff;
- m68k->mmu_srp_aptr = temp64 & 0xffffffff;
-// printf("PMMU: SRP limit = %08x aptr = %08x\n", m68k->mmu_srp_limit, m68k->mmu_srp_aptr);
+ temp64 = READ_EA_64(ea);
+ m_mmu_srp_limit = (temp64>>32) & 0xffffffff;
+ m_mmu_srp_aptr = temp64 & 0xffffffff;
+// printf("PMMU: SRP limit = %08x aptr = %08x\n", m_mmu_srp_limit, m_mmu_srp_aptr);
if (!(modes & 0x100))
{
- pmmu_atc_flush(m68k);
+ pmmu_atc_flush();
}
break;
case 3: // CPU root pointer
- temp64 = READ_EA_64(m68k, ea);
- m68k->mmu_crp_limit = (temp64>>32) & 0xffffffff;
- m68k->mmu_crp_aptr = temp64 & 0xffffffff;
-// printf("PMMU: CRP limit = %08x aptr = %08x\n", m68k->mmu_crp_limit, m68k->mmu_crp_aptr);
+ temp64 = READ_EA_64(ea);
+ m_mmu_crp_limit = (temp64>>32) & 0xffffffff;
+ m_mmu_crp_aptr = temp64 & 0xffffffff;
+// printf("PMMU: CRP limit = %08x aptr = %08x\n", m_mmu_crp_limit, m_mmu_crp_aptr);
if (!(modes & 0x100))
{
- pmmu_atc_flush(m68k);
+ pmmu_atc_flush();
}
break;
case 7: // MC68851 Access Control Register
- if (m68k->cpu_type == CPU_TYPE_020)
+ if (m_cpu_type == CPU_TYPE_020)
{
// DomainOS on Apollo DN3000 will only reset this to 0
- uint16_t mmu_ac = READ_EA_16(m68k, ea);
+ uint16_t mmu_ac = READ_EA_16(ea);
if (mmu_ac != 0)
{
printf("680x0 PMMU: pc=%x PMOVE to mmu_ac=%08x\n",
- m68k->ppc, mmu_ac);
+ m_ppc, mmu_ac);
}
break;
}
// fall through; unknown PMOVE mode unless MC68020 with MC68851
default:
- printf("680x0: PMOVE to unknown MMU register %x, PC %x\n", (modes>>10) & 7, m68k->pc);
+ printf("680x0: PMOVE to unknown MMU register %x, PC %x\n", (modes>>10) & 7, m_pc);
break;
}
break;
case 3: // MMU status
{
- uint32_t temp = READ_EA_32(m68k, ea);
- printf("680x0: unsupported PMOVE %x to MMU status, PC %x\n", temp, m68k->pc);
+ uint32_t temp = READ_EA_32(ea);
+ printf("680x0: unsupported PMOVE %x to MMU status, PC %x\n", temp, m_pc);
}
break;
}
@@ -1086,16 +1086,16 @@ void m68881_mmu_ops(m68000_base_device *m68k)
case 3: // MC68030 to/from status reg
if (modes & 0x200)
{
- WRITE_EA_16(m68k, ea, m68k->mmu_sr);
+ WRITE_EA_16(ea, m_mmu_sr);
}
else
{
- m68k->mmu_sr = READ_EA_16(m68k, ea);
+ m_mmu_sr = READ_EA_16(ea);
}
break;
default:
- printf("680x0: unknown PMOVE mode %x (modes %04x) (PC %x)\n", (modes>>13) & 0x7, modes, m68k->pc);
+ printf("680x0: unknown PMOVE mode %x (modes %04x) (PC %x)\n", (modes>>13) & 0x7, modes, m_pc);
break;
}
@@ -1103,7 +1103,7 @@ void m68881_mmu_ops(m68000_base_device *m68k)
break;
default:
- printf("680x0: unknown PMMU instruction group %d\n", (m68k->ir>>9) & 0x7);
+ printf("680x0: unknown PMMU instruction group %d\n", (m_ir>>9) & 0x7);
break;
}
}
@@ -1111,18 +1111,18 @@ void m68881_mmu_ops(m68000_base_device *m68k)
/* Apple HMMU translation is much simpler */
-static inline uint32_t hmmu_translate_addr(m68000_base_device *m68k, uint32_t addr_in)
+inline uint32_t hmmu_translate_addr(uint32_t addr_in)
{
uint32_t addr_out;
addr_out = addr_in;
// check if LC 24-bit mode is enabled - this simply blanks out A31, the V8 ignores A30-24 always
- if (m68k->hmmu_enabled == M68K_HMMU_ENABLE_LC)
+ if (m_hmmu_enabled == M68K_HMMU_ENABLE_LC)
{
addr_out = addr_in & 0xffffff;
}
- else if (m68k->hmmu_enabled == M68K_HMMU_ENABLE_II) // the original II does a more complex translation
+ else if (m_hmmu_enabled == M68K_HMMU_ENABLE_II) // the original II does a more complex translation
{
addr_out = addr_in & 0xffffff;
diff --git a/src/devices/cpu/tms1000/tms0970.cpp b/src/devices/cpu/tms1000/tms0970.cpp
index 503f95def3e..2ba98ae38a2 100644
--- a/src/devices/cpu/tms1000/tms0970.cpp
+++ b/src/devices/cpu/tms1000/tms0970.cpp
@@ -110,7 +110,7 @@ void tms0970_cpu_device::device_reset()
if (imask & 0x40 && (imask & 0x20) == 0)
msel = (op & 0xf) | (op >> 1 & 0x10);
- msel = BITSWAP8(msel,7,6,5,0,1,2,3,4); // lines are reversed
+ msel = bitswap<8>(msel,7,6,5,0,1,2,3,4); // lines are reversed
u32 mmask = m_mpla->read(msel);
mmask ^= 0x09fe; // invert active-negative
diff --git a/src/devices/cpu/tms1000/tms0980.cpp b/src/devices/cpu/tms1000/tms0980.cpp
index 622d8ca5be4..4ca31ad4330 100644
--- a/src/devices/cpu/tms1000/tms0980.cpp
+++ b/src/devices/cpu/tms1000/tms0980.cpp
@@ -110,7 +110,7 @@ u32 tms0980_cpu_device::decode_fixed(u16 op)
u32 tms0980_cpu_device::decode_micro(u8 sel)
{
u32 decode = 0;
- sel = BITSWAP8(sel,7,6,0,1,2,3,4,5); // lines are reversed
+ sel = bitswap<8>(sel,7,6,0,1,2,3,4,5); // lines are reversed
u32 mask = m_mpla->read(sel);
mask ^= 0x43fc3; // invert active-negative
@@ -175,7 +175,7 @@ void tms0980_cpu_device::read_opcode()
{
debugger_instruction_hook(this, m_rom_address);
m_opcode = m_program->read_word(m_rom_address) & 0x1ff;
- m_c4 = BITSWAP8(m_opcode,7,6,5,4,0,1,2,3) & 0xf; // opcode operand is bitswapped for most opcodes
+ m_c4 = bitswap<8>(m_opcode,7,6,5,4,0,1,2,3) & 0xf; // opcode operand is bitswapped for most opcodes
m_fixed = m_fixed_decode[m_opcode];
m_micro = read_micro();
diff --git a/src/devices/cpu/tms1000/tms1k_base.cpp b/src/devices/cpu/tms1000/tms1k_base.cpp
index bfbf6eab8af..eaac999b2ce 100644
--- a/src/devices/cpu/tms1000/tms1k_base.cpp
+++ b/src/devices/cpu/tms1000/tms1k_base.cpp
@@ -294,7 +294,7 @@ void tms1k_base_device::read_opcode()
{
debugger_instruction_hook(this, m_rom_address);
m_opcode = m_program->read_byte(m_rom_address);
- m_c4 = BITSWAP8(m_opcode,7,6,5,4,0,1,2,3) & 0xf; // opcode operand is bitswapped for most opcodes
+ m_c4 = bitswap<8>(m_opcode,7,6,5,4,0,1,2,3) & 0xf; // opcode operand is bitswapped for most opcodes
m_fixed = m_fixed_decode[m_opcode];
m_micro = m_micro_decode[m_opcode];
diff --git a/src/devices/cpu/tms1000/tp0320.cpp b/src/devices/cpu/tms1000/tp0320.cpp
index 64ebdb3365a..8f10c9f2b62 100644
--- a/src/devices/cpu/tms1000/tp0320.cpp
+++ b/src/devices/cpu/tms1000/tp0320.cpp
@@ -67,7 +67,7 @@ u32 tp0320_cpu_device::decode_micro(u8 sel)
{
u32 decode = 0;
- sel = BITSWAP8(sel,7,6,0,1,2,3,4,5); // lines are reversed
+ sel = bitswap<8>(sel,7,6,0,1,2,3,4,5); // lines are reversed
u32 mask = m_mpla->read(sel);
mask ^= 0x0bff0; // invert active-negative
diff --git a/src/devices/cpu/upd7725/upd7725.cpp b/src/devices/cpu/upd7725/upd7725.cpp
index 716fa45ccf9..c805c5bbc14 100644
--- a/src/devices/cpu/upd7725/upd7725.cpp
+++ b/src/devices/cpu/upd7725/upd7725.cpp
@@ -398,7 +398,7 @@ void necdsp_device::exec_op(uint32_t opcode) {
case 9: regs.idb = regs.dr; break;
case 10: regs.idb = regs.sr; break;
case 11: regs.idb = regs.si; break; //MSB = first bit in from serial, 'natural' SI register order
- case 12: regs.idb = BITSWAP16(regs.si, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); break; //LSB = first bit in from serial, 'reversed' SI register order
+ case 12: regs.idb = bitswap<16>(regs.si, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); break; //LSB = first bit in from serial, 'reversed' SI register order
case 13: regs.idb = regs.k; break;
case 14: regs.idb = regs.l; break;
case 15: regs.idb = dataRAM[regs.dp]; break;
@@ -586,7 +586,7 @@ void necdsp_device::exec_ld(uint32_t opcode) {
m_out_p0_cb(regs.sr.p0);
m_out_p1_cb(regs.sr.p1);
break;
- case 8: regs.so = BITSWAP16(id, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); break; //LSB first output, output tapped at bit 15 shifting left
+ case 8: regs.so = bitswap<16>(id, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); break; //LSB first output, output tapped at bit 15 shifting left
case 9: regs.so = id; break; //MSB first output, output tapped at bit 15 shifting left
case 10: regs.k = id; break;
case 11: regs.k = id; regs.l = m_data->read_word(regs.rp); break;
diff --git a/src/devices/machine/68307.cpp b/src/devices/machine/68307.cpp
index adc65ce199b..38f57097312 100644
--- a/src/devices/machine/68307.cpp
+++ b/src/devices/machine/68307.cpp
@@ -23,17 +23,13 @@ DEFINE_DEVICE_TYPE(M68307, m68307_cpu_device, "mc68307", "MC68307")
*/
READ8_MEMBER( m68307_cpu_device::m68307_internal_serial_r )
{
- m68307_cpu_device *m68k = this;
-
- if (offset&1) return m_duart->read(*m68k->program, offset>>1);
+ if (offset&1) return m_duart->read(*m_program, offset>>1);
return 0x0000;
}
WRITE8_MEMBER(m68307_cpu_device::m68307_internal_serial_w)
{
- m68307_cpu_device *m68k = this;
-
- if (offset & 1) m_duart->write(*m68k->program, offset >> 1, data);
+ if (offset & 1) m_duart->write(*m_program, offset >> 1, data);
}
@@ -55,20 +51,20 @@ MACHINE_CONFIG_END
m68307_cpu_device::m68307_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: m68000_device(mconfig, tag, owner, clock, M68307, 16, 24, ADDRESS_MAP_NAME(m68307_internal_map)),
- write_irq(*this),
- write_a_tx(*this),
- write_b_tx(*this),
- read_inport(*this),
- write_outport(*this),
+ m_write_irq(*this),
+ m_write_a_tx(*this),
+ m_write_b_tx(*this),
+ m_read_inport(*this),
+ m_write_outport(*this),
m_duart(*this, "internal68681")
{
- m68307SIM = nullptr;
- m68307MBUS = nullptr;
- m68307TIMER = nullptr;
- m68307_base = 0;
- m68307_scrhigh = 0;
- m68307_scrlow = 0;
- m68307_currentcs = 0;
+ m_m68307SIM = nullptr;
+ m_m68307MBUS = nullptr;
+ m_m68307TIMER = nullptr;
+ m_m68307_base = 0;
+ m_m68307_scrhigh = 0;
+ m_m68307_scrlow = 0;
+ m_m68307_currentcs = 0;
}
@@ -80,13 +76,13 @@ void m68307_cpu_device::device_reset()
{
m68000_device::device_reset();
- if (m68307SIM) m68307SIM->reset();
- if (m68307MBUS) m68307MBUS->reset();
- if (m68307TIMER) m68307TIMER->reset();
+ if (m_m68307SIM) m_m68307SIM->reset();
+ if (m_m68307MBUS) m_m68307MBUS->reset();
+ if (m_m68307TIMER) m_m68307TIMER->reset();
- m68307_base = 0xbfff;
- m68307_scrhigh = 0x0007;
- m68307_scrlow = 0xf010;
+ m_m68307_base = 0xbfff;
+ m_m68307_scrhigh = 0x0007;
+ m_m68307_scrlow = 0xf010;
}
@@ -97,7 +93,7 @@ void m68307_cpu_device::device_reset()
inline int m68307_cpu_device::calc_cs(offs_t address) const
{
- m68307_sim const &sim = *m68307SIM;
+ m68307_sim const &sim = *m_m68307SIM;
for (int i=0; i < 4; i++)
{
int const br = sim.m_br[i] & 1;
@@ -112,43 +108,43 @@ inline int m68307_cpu_device::calc_cs(offs_t address) const
uint16_t m68307_cpu_device::simple_read_immediate_16_m68307(offs_t address)
{
-// m68307_currentcs = calc_cs(address);
+// m_m68307_currentcs = calc_cs(address);
return m_direct->read_word(address);
}
uint8_t m68307_cpu_device::read_byte_m68307(offs_t address)
{
-// m68307_currentcs = calc_cs(address);
+// m_m68307_currentcs = calc_cs(address);
return m_space->read_byte(address);
}
uint16_t m68307_cpu_device::read_word_m68307(offs_t address)
{
-// m68307_currentcs = calc_cs(address);
+// m_m68307_currentcs = calc_cs(address);
return m_space->read_word(address);
}
uint32_t m68307_cpu_device::read_dword_m68307(offs_t address)
{
-// m68307_currentcs = calc_cs(address);
+// m_m68307_currentcs = calc_cs(address);
return m_space->read_dword(address);
}
void m68307_cpu_device::write_byte_m68307(offs_t address, uint8_t data)
{
-// m68307_currentcs = calc_cs(address);
+// m_m68307_currentcs = calc_cs(address);
m_space->write_byte(address, data);
}
void m68307_cpu_device::write_word_m68307(offs_t address, uint16_t data)
{
-// m68307_currentcs = calc_cs(address);
+// m_m68307_currentcs = calc_cs(address);
m_space->write_word(address, data);
}
void m68307_cpu_device::write_dword_m68307(offs_t address, uint32_t data)
{
-// m68307_currentcs = calc_cs(address);
+// m_m68307_currentcs = calc_cs(address);
m_space->write_dword(address, data);
}
@@ -159,15 +155,15 @@ void m68307_cpu_device::init16_m68307(address_space &space)
{
m_space = &space;
m_direct = space.direct<0>();
- opcode_xor = 0;
-
- readimm16 = m68k_readimm16_delegate(&m68307_cpu_device::simple_read_immediate_16_m68307, this);
- read8 = m68k_read8_delegate(&m68307_cpu_device::read_byte_m68307, this);
- read16 = m68k_read16_delegate(&m68307_cpu_device::read_word_m68307, this);
- read32 = m68k_read32_delegate(&m68307_cpu_device::read_dword_m68307, this);
- write8 = m68k_write8_delegate(&m68307_cpu_device::write_byte_m68307, this);
- write16 = m68k_write16_delegate(&m68307_cpu_device::write_word_m68307, this);
- write32 = m68k_write32_delegate(&m68307_cpu_device::write_dword_m68307, this);
+ m_opcode_xor = 0;
+
+ m_readimm16 = m68k_readimm16_delegate(&m68307_cpu_device::simple_read_immediate_16_m68307, this);
+ m_read8 = m68k_read8_delegate(&m68307_cpu_device::read_byte_m68307, this);
+ m_read16 = m68k_read16_delegate(&m68307_cpu_device::read_word_m68307, this);
+ m_read32 = m68k_read32_delegate(&m68307_cpu_device::read_dword_m68307, this);
+ m_write8 = m68k_write8_delegate(&m68307_cpu_device::write_byte_m68307, this);
+ m_write16 = m68k_write16_delegate(&m68307_cpu_device::write_word_m68307, this);
+ m_write32 = m68k_write32_delegate(&m68307_cpu_device::write_dword_m68307, this);
}
@@ -190,9 +186,9 @@ void m68307_cpu_device::set_port_callbacks(
uint16_t m68307_cpu_device::get_cs(offs_t address)
{
- m68307_currentcs = calc_cs(address);
+ m_m68307_currentcs = calc_cs(address);
- return m68307_currentcs;
+ return m_m68307_currentcs;
}
@@ -205,22 +201,22 @@ void m68307_cpu_device::set_interrupt(int level, int vector)
void m68307_cpu_device::timer0_interrupt()
{
- int prioritylevel = (m68307SIM->m_picr & 0x7000)>>12;
- int vector = (m68307SIM->m_pivr & 0x00f0) | 0xa;
+ int prioritylevel = (m_m68307SIM->m_picr & 0x7000)>>12;
+ int vector = (m_m68307SIM->m_pivr & 0x00f0) | 0xa;
set_interrupt(prioritylevel, vector);
}
void m68307_cpu_device::timer1_interrupt()
{
- int prioritylevel = (m68307SIM->m_picr & 0x0700)>>8;
- int vector = (m68307SIM->m_pivr & 0x00f0) | 0xb;
+ int prioritylevel = (m_m68307SIM->m_picr & 0x0700)>>8;
+ int vector = (m_m68307SIM->m_pivr & 0x00f0) | 0xb;
set_interrupt(prioritylevel, vector);
}
void m68307_cpu_device::serial_interrupt(int vector)
{
- int prioritylevel = (m68307SIM->m_picr & 0x0070)>>4;
+ int prioritylevel = (m_m68307SIM->m_picr & 0x0070)>>4;
set_interrupt(prioritylevel, vector);
}
@@ -234,16 +230,16 @@ WRITE_LINE_MEMBER(m68307_cpu_device::m68307_duart_irq_handler)
void m68307_cpu_device::mbus_interrupt()
{
- int prioritylevel = (m68307SIM->m_picr & 0x0007)>>0;
- int vector = (m68307SIM->m_pivr & 0x00f0) | 0xd;
+ int prioritylevel = (m_m68307SIM->m_picr & 0x0007)>>0;
+ int vector = (m_m68307SIM->m_pivr & 0x00f0) | 0xd;
set_interrupt(prioritylevel, vector);
}
void m68307_cpu_device::licr2_interrupt()
{
- int prioritylevel = (m68307SIM->m_licr2 & 0x0007)>>0;
- int vector = (m68307SIM->m_pivr & 0x00f0) | 0x9;
- m68307SIM->m_licr2 |= 0x8;
+ int prioritylevel = (m_m68307SIM->m_licr2 & 0x0007)>>0;
+ int vector = (m_m68307SIM->m_pivr & 0x00f0) | 0x9;
+ m_m68307SIM->m_licr2 |= 0x8;
set_interrupt(prioritylevel, vector);
@@ -257,28 +253,28 @@ void m68307_cpu_device::device_start()
set via remappable register
*/
- init16_m68307(*program);
+ init16_m68307(*m_program);
- m68307SIM = new m68307_sim();
- m68307MBUS = new m68307_mbus();
- m68307TIMER = new m68307_timer();
+ m_m68307SIM = new m68307_sim();
+ m_m68307MBUS = new m68307_mbus();
+ m_m68307TIMER = new m68307_timer();
- m68307TIMER->init(this);
+ m_m68307TIMER->init(this);
- m68307SIM->reset();
- m68307MBUS->reset();
- m68307TIMER->reset();
+ m_m68307SIM->reset();
+ m_m68307MBUS->reset();
+ m_m68307TIMER->reset();
- internal = &this->space(AS_PROGRAM);
- m68307_base = 0xbfff;
- m68307_scrhigh = 0x0007;
- m68307_scrlow = 0xf010;
+ m_internal = &space(AS_PROGRAM);
+ m_m68307_base = 0xbfff;
+ m_m68307_scrhigh = 0x0007;
+ m_m68307_scrlow = 0xf010;
- write_irq.resolve_safe();
- write_a_tx.resolve_safe();
- write_b_tx.resolve_safe();
- read_inport.resolve();
- write_outport.resolve_safe();
+ m_write_irq.resolve_safe();
+ m_write_a_tx.resolve_safe();
+ m_write_b_tx.resolve_safe();
+ m_read_inport.resolve();
+ m_write_outport.resolve_safe();
set_port_callbacks(porta_read_delegate(), porta_write_delegate(), portb_read_delegate(), portb_write_delegate());
}
@@ -287,16 +283,13 @@ void m68307_cpu_device::device_start()
READ16_MEMBER( m68307_cpu_device::m68307_internal_base_r )
{
- m68307_cpu_device *m68k = this;
-
- int pc = space.device().safe_pc();
- logerror("%08x m68307_internal_base_r %08x, (%04x)\n", pc, offset*2,mem_mask);
+ logerror("%08x m68307_internal_base_r %08x, (%04x)\n", m_ppc, offset*2,mem_mask);
switch (offset<<1)
{
- case 0x2: return m68k->m68307_base;
- case 0x4: return m68k->m68307_scrhigh;
- case 0x6: return m68k->m68307_scrlow;
+ case 0x2: return m_m68307_base;
+ case 0x4: return m_m68307_scrhigh;
+ case 0x6: return m_m68307_scrlow;
}
logerror("(read was illegal?)\n");
@@ -306,10 +299,7 @@ READ16_MEMBER( m68307_cpu_device::m68307_internal_base_r )
WRITE16_MEMBER( m68307_cpu_device::m68307_internal_base_w )
{
- m68307_cpu_device *m68k = this;
-
- int pc = space.device().safe_pc();
- logerror("%08x m68307_internal_base_w %08x, %04x (%04x)\n", pc, offset*2,data,mem_mask);
+ logerror("%08x m68307_internal_base_w %08x, %04x (%04x)\n", m_ppc, offset*2,data,mem_mask);
int base;
//int mask = 0;
@@ -317,35 +307,35 @@ WRITE16_MEMBER( m68307_cpu_device::m68307_internal_base_w )
{
case 0x2:
/* remove old internal handler */
- base = (m68k->m68307_base & 0x0fff) << 12;
- //mask = (m68k->m68307_base & 0xe000) >> 13;
- //if ( m68k->m68307_base & 0x1000 ) mask |= 7;
- m68k->internal->unmap_readwrite(base+0x000, base+0x04f);
- m68k->internal->unmap_readwrite(base+0x100, base+0x11f);
- m68k->internal->unmap_readwrite(base+0x120, base+0x13f);
- m68k->internal->unmap_readwrite(base+0x140, base+0x149);
+ base = (m_m68307_base & 0x0fff) << 12;
+ //mask = (m_m68307_base & 0xe000) >> 13;
+ //if ( m_m68307_base & 0x1000 ) mask |= 7;
+ m_internal->unmap_readwrite(base+0x000, base+0x04f);
+ m_internal->unmap_readwrite(base+0x100, base+0x11f);
+ m_internal->unmap_readwrite(base+0x120, base+0x13f);
+ m_internal->unmap_readwrite(base+0x140, base+0x149);
/* store new base address */
- COMBINE_DATA(&m68k->m68307_base);
+ COMBINE_DATA(&m_m68307_base);
/* install new internal handler */
- base = (m68k->m68307_base & 0x0fff) << 12;
- //mask = (m68k->m68307_base & 0xe000) >> 13;
- //if ( m68k->m68307_base & 0x1000 ) mask |= 7;
- m68k->internal->install_readwrite_handler(base + 0x000, base + 0x04f, read16_delegate(FUNC(m68307_cpu_device::m68307_internal_sim_r),this), write16_delegate(FUNC(m68307_cpu_device::m68307_internal_sim_w),this));
- m68k->internal->install_readwrite_handler(base + 0x100, base + 0x11f, read8_delegate(FUNC(m68307_cpu_device::m68307_internal_serial_r),this), write8_delegate(FUNC(m68307_cpu_device::m68307_internal_serial_w),this), 0xffff);
- m68k->internal->install_readwrite_handler(base + 0x120, base + 0x13f, read16_delegate(FUNC(m68307_cpu_device::m68307_internal_timer_r),this), write16_delegate(FUNC(m68307_cpu_device::m68307_internal_timer_w),this));
- m68k->internal->install_readwrite_handler(base + 0x140, base + 0x149, read8_delegate(FUNC(m68307_cpu_device::m68307_internal_mbus_r),this), write8_delegate(FUNC(m68307_cpu_device::m68307_internal_mbus_w),this), 0xffff);
+ base = (m_m68307_base & 0x0fff) << 12;
+ //mask = (m_m68307_base & 0xe000) >> 13;
+ //if ( m_m68307_base & 0x1000 ) mask |= 7;
+ m_internal->install_readwrite_handler(base + 0x000, base + 0x04f, read16_delegate(FUNC(m68307_cpu_device::m68307_internal_sim_r),this), write16_delegate(FUNC(m68307_cpu_device::m68307_internal_sim_w),this));
+ m_internal->install_readwrite_handler(base + 0x100, base + 0x11f, read8_delegate(FUNC(m68307_cpu_device::m68307_internal_serial_r),this), write8_delegate(FUNC(m68307_cpu_device::m68307_internal_serial_w),this), 0xffff);
+ m_internal->install_readwrite_handler(base + 0x120, base + 0x13f, read16_delegate(FUNC(m68307_cpu_device::m68307_internal_timer_r),this), write16_delegate(FUNC(m68307_cpu_device::m68307_internal_timer_w),this));
+ m_internal->install_readwrite_handler(base + 0x140, base + 0x149, read8_delegate(FUNC(m68307_cpu_device::m68307_internal_mbus_r),this), write8_delegate(FUNC(m68307_cpu_device::m68307_internal_mbus_w),this), 0xffff);
break;
case 0x4:
- COMBINE_DATA(&m68k->m68307_scrhigh);
+ COMBINE_DATA(&m_m68307_scrhigh);
break;
case 0x6:
- COMBINE_DATA(&m68k->m68307_scrlow);
+ COMBINE_DATA(&m_m68307_scrlow);
break;
default:
diff --git a/src/devices/machine/68307.h b/src/devices/machine/68307.h
index a64c9985ce9..4c4d9b90cb3 100644
--- a/src/devices/machine/68307.h
+++ b/src/devices/machine/68307.h
@@ -36,11 +36,11 @@ public:
m68307_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
/* trampolines so we can specify the 68681 serial configuration when adding the CPU */
- template <class Object> static devcb_base &set_irq_cb(device_t &device, Object &&cb) { return downcast<m68307_cpu_device &>(device).write_irq.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_a_tx_cb(device_t &device, Object &&cb) { return downcast<m68307_cpu_device &>(device).write_a_tx.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_b_tx_cb(device_t &device, Object &&cb) { return downcast<m68307_cpu_device &>(device).write_b_tx.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_inport_cb(device_t &device, Object &&cb) { return downcast<m68307_cpu_device &>(device).read_inport.set_callback(std::forward<Object>(cb)); }
- template <class Object> static devcb_base &set_outport_cb(device_t &device, Object &&cb) { return downcast<m68307_cpu_device &>(device).write_outport.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_irq_cb(device_t &device, Object &&cb) { return downcast<m68307_cpu_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_a_tx_cb(device_t &device, Object &&cb) { return downcast<m68307_cpu_device &>(device).m_write_a_tx.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_b_tx_cb(device_t &device, Object &&cb) { return downcast<m68307_cpu_device &>(device).m_write_b_tx.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_inport_cb(device_t &device, Object &&cb) { return downcast<m68307_cpu_device &>(device).m_read_inport.set_callback(std::forward<Object>(cb)); }
+ template <class Object> static devcb_base &set_outport_cb(device_t &device, Object &&cb) { return downcast<m68307_cpu_device &>(device).m_write_outport.set_callback(std::forward<Object>(cb)); }
uint16_t simple_read_immediate_16_m68307(offs_t address);
@@ -87,30 +87,30 @@ protected:
void mbus_interrupt();
DECLARE_WRITE_LINE_MEMBER(m68307_duart_irq_handler);
- DECLARE_WRITE_LINE_MEMBER(m68307_duart_txa) { write_a_tx(state); }
- DECLARE_WRITE_LINE_MEMBER(m68307_duart_txb) { write_b_tx(state); }
- DECLARE_READ8_MEMBER(m68307_duart_input_r) { return read_inport(); }
- DECLARE_WRITE8_MEMBER(m68307_duart_output_w) { write_outport(data); }
+ DECLARE_WRITE_LINE_MEMBER(m68307_duart_txa) { m_write_a_tx(state); }
+ DECLARE_WRITE_LINE_MEMBER(m68307_duart_txb) { m_write_b_tx(state); }
+ DECLARE_READ8_MEMBER(m68307_duart_input_r) { return m_read_inport(); }
+ DECLARE_WRITE8_MEMBER(m68307_duart_output_w) { m_write_outport(data); }
void init16_m68307(address_space &space);
int calc_cs(offs_t address) const;
- devcb_write_line write_irq, write_a_tx, write_b_tx;
- devcb_read8 read_inport;
- devcb_write8 write_outport;
+ devcb_write_line m_write_irq, m_write_a_tx, m_write_b_tx;
+ devcb_read8 m_read_inport;
+ devcb_write8 m_write_outport;
/* 68307 peripheral modules */
- m68307_sim* m68307SIM;
- m68307_mbus* m68307MBUS;
-// m68307_serial* m68307SERIAL;
- m68307_timer* m68307TIMER;
+ m68307_sim* m_m68307SIM;
+ m68307_mbus* m_m68307MBUS;
+// m68307_serial* m_m68307SERIAL;
+ m68307_timer* m_m68307TIMER;
- uint16_t m68307_base;
- uint16_t m68307_scrhigh;
- uint16_t m68307_scrlow;
+ uint16_t m_m68307_base;
+ uint16_t m_m68307_scrhigh;
+ uint16_t m_m68307_scrlow;
- int m68307_currentcs;
+ int m_m68307_currentcs;
porta_read_delegate m_porta_r;
porta_write_delegate m_porta_w;
diff --git a/src/devices/machine/68307bus.cpp b/src/devices/machine/68307bus.cpp
index 3eea5a0811d..f06f586fb7e 100644
--- a/src/devices/machine/68307bus.cpp
+++ b/src/devices/machine/68307bus.cpp
@@ -15,29 +15,26 @@
READ8_MEMBER( m68307_cpu_device::m68307_internal_mbus_r )
{
- assert(m68307MBUS);
- m68307_mbus &mbus = *m68307MBUS;
+ assert(m_m68307MBUS);
+ m68307_mbus &mbus = *m_m68307MBUS;
uint8_t retval;
- int pc = space.device().safe_pc();
-
-
switch (offset)
{
case m68307BUS_MADR:
- logerror("%08x m68307_internal_mbus_r %08x (MADR - M-Bus Address Register)\n", pc, offset);
- return space.machine().rand();
+ logerror("%08x m68307_internal_mbus_r %08x (MADR - M-Bus Address Register)\n", m_ppc, offset);
+ return machine().rand();
case m68307BUS_MFDR:
- logerror("%08x m68307_internal_mbus_r %08x (MFDR - M-Bus Frequency Divider Register)\n", pc, offset);
- return space.machine().rand();
+ logerror("%08x m68307_internal_mbus_r %08x (MFDR - M-Bus Frequency Divider Register)\n", m_ppc, offset);
+ return machine().rand();
case m68307BUS_MBCR:
- logerror("%08x m68307_internal_mbus_r %08x (MFCR - M-Bus Control Register)\n", pc, offset);
- return mbus.m_MFCR;//space.machine().rand();
+ logerror("%08x m68307_internal_mbus_r %08x (MFCR - M-Bus Control Register)\n", m_ppc, offset);
+ return mbus.m_MFCR;//machine().rand();
case m68307BUS_MBSR:
- logerror("%08x m68307_internal_mbus_r %08x (MBSR - M-Bus Status Register)\n", pc, offset);
+ logerror("%08x m68307_internal_mbus_r %08x (MBSR - M-Bus Status Register)\n", m_ppc, offset);
retval = 0;
if (mbus.m_busy) retval |= 0x20;
if (mbus.m_intpend) retval |= 0x02;
@@ -45,12 +42,12 @@ READ8_MEMBER( m68307_cpu_device::m68307_internal_mbus_r )
return retval;
case m68307BUS_MBDR:
- logerror("%08x m68307_internal_mbus_r %08x (MBDR - M-Bus Data I/O Register)\n", pc, offset);
+ logerror("%08x m68307_internal_mbus_r %08x (MBDR - M-Bus Data I/O Register)\n", m_ppc, offset);
mbus.m_intpend = true;
- return 0xff;//space.machine().rand();
+ return 0xff;//machine().rand();
default:
- logerror("%08x m68307_internal_mbus_r %08x (UNKNOWN / ILLEGAL)\n", pc, offset);
+ logerror("%08x m68307_internal_mbus_r %08x (UNKNOWN / ILLEGAL)\n", m_ppc, offset);
return 0x00;
}
@@ -59,23 +56,21 @@ READ8_MEMBER( m68307_cpu_device::m68307_internal_mbus_r )
WRITE8_MEMBER( m68307_cpu_device::m68307_internal_mbus_w )
{
- assert(m68307MBUS);
- m68307_mbus &mbus = *m68307MBUS;
-
- int pc = space.device().safe_pc();
+ assert(m_m68307MBUS);
+ m68307_mbus &mbus = *m_m68307MBUS;
switch (offset)
{
case m68307BUS_MADR:
- logerror("%08x m68307_internal_mbus_w %08x, %02x (MADR - M-Bus Address Register)\n", pc, offset,data);
+ logerror("%08x m68307_internal_mbus_w %08x, %02x (MADR - M-Bus Address Register)\n", m_ppc, offset,data);
break;
case m68307BUS_MFDR:
- logerror("%08x m68307_internal_mbus_w %08x, %02x (MFDR - M-Bus Frequency Divider Register)\n", pc, offset,data);
+ logerror("%08x m68307_internal_mbus_w %08x, %02x (MFDR - M-Bus Frequency Divider Register)\n", m_ppc, offset,data);
break;
case m68307BUS_MBCR:
- logerror("%08x m68307_internal_mbus_w %08x, %02x (MFCR - M-Bus Control Register)\n", pc, offset,data);
+ logerror("%08x m68307_internal_mbus_w %08x, %02x (MFCR - M-Bus Control Register)\n", m_ppc, offset,data);
mbus.m_MFCR = data;
if (data & 0x80)
@@ -88,18 +83,18 @@ WRITE8_MEMBER( m68307_cpu_device::m68307_internal_mbus_w )
break;
case m68307BUS_MBSR:
- logerror("%08x m68307_internal_mbus_w %08x, %02x (MBSR - M-Bus Status Register)\n", pc, offset,data);
+ logerror("%08x m68307_internal_mbus_w %08x, %02x (MBSR - M-Bus Status Register)\n", m_ppc, offset,data);
break;
case m68307BUS_MBDR:
- logerror("%08x m68307_internal_mbus_w %08x, %02x (MBDR - M-Bus Data I/O Register)\n", pc, offset,data);
+ logerror("%08x m68307_internal_mbus_w %08x, %02x (MBDR - M-Bus Data I/O Register)\n", m_ppc, offset,data);
mbus.m_intpend = true;
break;
default:
- logerror("%08x m68307_internal_mbus_w %08x, %02x (UNKNOWN / ILLEGAL)\n", pc, offset,data);
+ logerror("%08x m68307_internal_mbus_w %08x, %02x (UNKNOWN / ILLEGAL)\n", m_ppc, offset,data);
break;
}
}
diff --git a/src/devices/machine/68307sim.cpp b/src/devices/machine/68307sim.cpp
index 2913d64e0a5..e912d434006 100644
--- a/src/devices/machine/68307sim.cpp
+++ b/src/devices/machine/68307sim.cpp
@@ -32,10 +32,8 @@
READ16_MEMBER( m68307_cpu_device::m68307_internal_sim_r )
{
- assert(m68307SIM);
- m68307_sim &sim = *m68307SIM;
-
- int pc = space.device().safe_pc();
+ assert(m_m68307SIM);
+ m68307_sim &sim = *m_m68307SIM;
switch (offset<<1)
{
@@ -54,7 +52,7 @@ READ16_MEMBER( m68307_cpu_device::m68307_internal_sim_r )
case m68307SIM_OR3: return sim.m_or[3];
default:
- logerror("%08x m68307_internal_sim_r %08x, (%04x)\n", pc, offset*2, mem_mask);
+ logerror("%08x m68307_internal_sim_r %08x, (%04x)\n", m_ppc, offset*2, mem_mask);
return 0xff;
}
@@ -64,20 +62,18 @@ READ16_MEMBER( m68307_cpu_device::m68307_internal_sim_r )
WRITE16_MEMBER( m68307_cpu_device::m68307_internal_sim_w )
{
- assert(m68307SIM);
- m68307_sim &sim = *m68307SIM;
-
- int pc = space.device().safe_pc();
+ assert(m_m68307SIM);
+ m68307_sim &sim = *m_m68307SIM;
switch (offset<<1)
{
case m68307SIM_PACNT:
- logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Port A (8-bit) Control Register - PACNT)\n", pc, offset*2,data,mem_mask);
+ logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Port A (8-bit) Control Register - PACNT)\n", m_ppc, offset*2,data,mem_mask);
sim.write_pacnt(data,mem_mask);
break;
case m68307SIM_PADDR:
- logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Port A (8-bit) Direction Register - PADDR)\n", pc, offset*2,data,mem_mask);
+ logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Port A (8-bit) Direction Register - PADDR)\n", m_ppc, offset*2,data,mem_mask);
sim.write_paddr(data,mem_mask);
break;
@@ -86,12 +82,12 @@ WRITE16_MEMBER( m68307_cpu_device::m68307_internal_sim_w )
break;
case m68307SIM_PBCNT:
- logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Port B (16-bit) Control Register - PBCNT)\n", pc, offset*2,data,mem_mask);
+ logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Port B (16-bit) Control Register - PBCNT)\n", m_ppc, offset*2,data,mem_mask);
sim.write_pbcnt(data,mem_mask);
break;
case m68307SIM_PBDDR:
- logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Port B (16-bit) Direction Register - PBDDR)\n", pc, offset*2,data,mem_mask);
+ logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Port B (16-bit) Direction Register - PBDDR)\n", m_ppc, offset*2,data,mem_mask);
sim.write_pbddr(data,mem_mask);
break;
@@ -101,22 +97,22 @@ WRITE16_MEMBER( m68307_cpu_device::m68307_internal_sim_w )
case m68307SIM_LICR1:
- logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Latched Interrupt Control Register 1 - LICR1)\n", pc, offset*2,data,mem_mask);
+ logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Latched Interrupt Control Register 1 - LICR1)\n", m_ppc, offset*2,data,mem_mask);
sim.write_licr1(this,data,mem_mask);
break;
case m68307SIM_LICR2:
- logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Latched Interrupt Control Register 2 - LICR2)\n", pc, offset*2,data,mem_mask);
+ logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Latched Interrupt Control Register 2 - LICR2)\n", m_ppc, offset*2,data,mem_mask);
sim.write_licr2(this,data,mem_mask);
break;
case m68307SIM_PICR:
- logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Peripheral Interrupt Control Register - PICR)\n", pc, offset*2,data,mem_mask);
+ logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Peripheral Interrupt Control Register - PICR)\n", m_ppc, offset*2,data,mem_mask);
sim.write_picr(this,data,mem_mask);
break;
case m68307SIM_PIVR:
- logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Peripheral Interrupt Vector Register - PIVR)\n", pc, offset*2,data,mem_mask);
+ logerror("%08x m68307_internal_sim_w %08x, %04x (%04x) (Peripheral Interrupt Vector Register - PIVR)\n", m_ppc, offset*2,data,mem_mask);
sim.write_pivr(this,data,mem_mask);
break;
@@ -148,7 +144,7 @@ WRITE16_MEMBER( m68307_cpu_device::m68307_internal_sim_w )
default :
- logerror("%08x m68307_internal_sim_w %08x, %04x (%04x)\n", pc, offset*2,data,mem_mask);
+ logerror("%08x m68307_internal_sim_w %08x, %04x (%04x)\n", m_ppc, offset*2,data,mem_mask);
break;
}
}
@@ -167,8 +163,6 @@ void m68307_cpu_device::m68307_sim::write_paddr(uint16_t data, uint16_t mem_mask
uint16_t m68307_cpu_device::m68307_sim::read_padat(m68307_cpu_device* m68k, address_space &space, uint16_t mem_mask)
{
- int pc = space.device().safe_pc();
-
if (!m68k->m_porta_r.isnull())
{
// for general purpose bits, if configured as 'output' then anything output gets latched
@@ -185,7 +179,7 @@ uint16_t m68307_cpu_device::m68307_sim::read_padat(m68307_cpu_device* m68k, addr
}
else
{
- m68k->logerror("%08x m68307_internal_sim_r (%04x) (Port A (8-bit) Data Register - PADAT)\n", pc, mem_mask);
+ m68k->logerror("%08x m68307_internal_sim_r (%04x) (Port A (8-bit) Data Register - PADAT)\n", m68k->pcbase(), mem_mask);
}
return 0xffff;
}
@@ -193,7 +187,6 @@ uint16_t m68307_cpu_device::m68307_sim::read_padat(m68307_cpu_device* m68k, addr
void m68307_cpu_device::m68307_sim::write_padat(m68307_cpu_device* m68k, address_space &space, uint16_t data, uint16_t mem_mask)
{
- int pc = space.device().safe_pc();
COMBINE_DATA(&m_padat);
if (!m68k->m_porta_w.isnull())
@@ -202,7 +195,7 @@ void m68307_cpu_device::m68307_sim::write_padat(m68307_cpu_device* m68k, address
}
else
{
- m68k->logerror("%08x m68307_internal_sim_w %04x (%04x) (Port A (8-bit) Data Register - PADAT)\n", pc, data,mem_mask);
+ m68k->logerror("%08x m68307_internal_sim_w %04x (%04x) (Port A (8-bit) Data Register - PADAT)\n", m68k->pcbase(), data,mem_mask);
}
}
@@ -218,8 +211,6 @@ void m68307_cpu_device::m68307_sim::write_pbddr(uint16_t data, uint16_t mem_mask
uint16_t m68307_cpu_device::m68307_sim::read_pbdat(m68307_cpu_device* m68k, address_space &space, uint16_t mem_mask)
{
- int pc = space.device().safe_pc();
-
if (!m68k->m_portb_r.isnull())
{
// for general purpose bits, if configured as 'output' then anything output gets latched
@@ -236,7 +227,7 @@ uint16_t m68307_cpu_device::m68307_sim::read_pbdat(m68307_cpu_device* m68k, addr
}
else
{
- m68k->logerror("%08x m68307_internal_sim_r (%04x) (Port B (16-bit) Data Register - PBDAT)\n", pc, mem_mask);
+ m68k->logerror("%08x m68307_internal_sim_r (%04x) (Port B (16-bit) Data Register - PBDAT)\n", m68k->pcbase(), mem_mask);
}
return 0xffff;
}
@@ -244,7 +235,6 @@ uint16_t m68307_cpu_device::m68307_sim::read_pbdat(m68307_cpu_device* m68k, addr
void m68307_cpu_device::m68307_sim::write_pbdat(m68307_cpu_device* m68k, address_space &space, uint16_t data, uint16_t mem_mask)
{
- int pc = space.device().safe_pc();
COMBINE_DATA(&m_pbdat);
if (!m68k->m_portb_w.isnull())
@@ -253,7 +243,7 @@ void m68307_cpu_device::m68307_sim::write_pbdat(m68307_cpu_device* m68k, address
}
else
{
- m68k->logerror("%08x m68307_internal_sim_w %04x (%04x) (Port B (16-bit) Data Register - PBDAT)\n", pc, data,mem_mask);
+ m68k->logerror("%08x m68307_internal_sim_w %04x (%04x) (Port B (16-bit) Data Register - PBDAT)\n", m68k->pcbase(), data,mem_mask);
}
}
diff --git a/src/devices/machine/68307tmu.cpp b/src/devices/machine/68307tmu.cpp
index c83a0855f29..cdcb2c6c44a 100644
--- a/src/devices/machine/68307tmu.cpp
+++ b/src/devices/machine/68307tmu.cpp
@@ -17,20 +17,19 @@
READ16_MEMBER( m68307_cpu_device::m68307_internal_timer_r )
{
- assert(m68307TIMER);
- m68307_timer &timer = *m68307TIMER;
+ assert(m_m68307TIMER);
+ m68307_timer &timer = *m_m68307TIMER;
- int pc = space.device().safe_pc();
int which = offset & 0x8;
switch (offset&0x7)
{
case m68307TIMER_TCN: /* 0x3 (0x126 / 0x136) */
- //if (pc!=0x2182e) logerror("%08x m68307_internal_timer_r %08x (%04x) (TCN - Timer Counter for timer %d)\n", pc, offset*2,mem_mask, which);
+ //if (m_ppc!=0x2182e) logerror("%08x m68307_internal_timer_r %08x (%04x) (TCN - Timer Counter for timer %d)\n", m_ppc, offset*2,mem_mask, which);
return timer.read_tcn(mem_mask, which);
default:
- logerror("%08x m68307_internal_timer_r %08x, (%04x)\n", pc, offset*2,mem_mask);
+ logerror("%08x m68307_internal_timer_r %08x, (%04x)\n", m_ppc, offset*2,mem_mask);
break;
}
@@ -39,62 +38,61 @@ READ16_MEMBER( m68307_cpu_device::m68307_internal_timer_r )
WRITE16_MEMBER( m68307_cpu_device::m68307_internal_timer_w )
{
- assert(m68307TIMER);
- m68307_timer &timer = *m68307TIMER;
+ assert(m_m68307TIMER);
+ m68307_timer &timer = *m_m68307TIMER;
- int pc = space.device().safe_pc();
int which = offset & 0x8;
switch (offset&0x7)
{
case m68307TIMER_TMR: /* 0x0 (0x120 / 0x130) */
- logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (TMR - Timer Mode Register for timer %d)\n", pc, offset*2,data,mem_mask, which);
+ logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (TMR - Timer Mode Register for timer %d)\n", m_ppc, offset*2,data,mem_mask, which);
timer.write_tmr(data, mem_mask, which);
break;
case m68307TIMER_TRR: /* 0x1 (0x122 / 0x132) */
- logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (TRR - Timer Reference Register for timer %d)\n", pc, offset*2,data,mem_mask, which);
+ logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (TRR - Timer Reference Register for timer %d)\n", m_ppc, offset*2,data,mem_mask, which);
timer.write_trr(data, mem_mask, which);
break;
case m68307TIMER_TCR: /* 0x2 (0x124 / 0x134) */
- logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (TCR - Timer Capture Register for timer %d) (illegal, read-only)\n", pc, offset*2,data,mem_mask, which);
+ logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (TCR - Timer Capture Register for timer %d) (illegal, read-only)\n", m_ppc, offset*2,data,mem_mask, which);
break;
case m68307TIMER_TCN: /* 0x3 (0x126 / 0x136) */
- logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (TCN - Timer Counter for timer %d)\n", pc, offset*2,data,mem_mask, which);
+ logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (TCN - Timer Counter for timer %d)\n", m_ppc, offset*2,data,mem_mask, which);
break;
case m68307TIMER_TER: /* 0x4 (0x128 / 0x138) */
/* 8-bit only!! */
- //logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (TER - Timer Event Register for timer %d)\n", pc, offset*2,data,mem_mask, which);
+ //logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (TER - Timer Event Register for timer %d)\n", m_ppc, offset*2,data,mem_mask, which);
timer.write_ter(data, mem_mask, which);
break;
case m68307TIMER_WRR: /* 0x5 (0x12a / 0x13a) */
if (which==0)
{
- logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (WRR - Watchdog Reference Register)\n", pc, offset*2,data,mem_mask);
+ logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (WRR - Watchdog Reference Register)\n", m_ppc, offset*2,data,mem_mask);
}
else
{
- logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (illegal)\n", pc, offset*2,data,mem_mask);
+ logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (illegal)\n", m_ppc, offset*2,data,mem_mask);
}
break;
case m68307TIMER_WCR: /* 0x6 (0x12c / 0x13c) */
if (which==0)
{
- logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (WRR - Watchdog Counter Register)\n", pc, offset*2,data,mem_mask);
+ logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (WRR - Watchdog Counter Register)\n", m_ppc, offset*2,data,mem_mask);
}
else
{
- logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (illegal)\n", pc, offset*2,data,mem_mask);
+ logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (illegal)\n", m_ppc, offset*2,data,mem_mask);
}
break;
case m68307TIMER_XXX: /* 0x7 (0x12e / 0x13e) */
- logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (illegal)\n", pc, offset*2,data,mem_mask);
+ logerror("%08x m68307_internal_timer_w %08x, %04x (%04x) (illegal)\n", m_ppc, offset*2,data,mem_mask);
break;
}
}
@@ -102,7 +100,7 @@ WRITE16_MEMBER( m68307_cpu_device::m68307_internal_timer_w )
TIMER_CALLBACK_MEMBER(m68307_cpu_device::m68307_timer::timer0_callback )
{
m68307_cpu_device* m68k = (m68307_cpu_device *)ptr;
- single_timer* tptr = &m68k->m68307TIMER->singletimer[0];
+ single_timer* tptr = &m68k->m_m68307TIMER->singletimer[0];
tptr->regs[m68307TIMER_TMR] |= 0x2;
m68k->timer0_interrupt();
@@ -113,7 +111,7 @@ TIMER_CALLBACK_MEMBER(m68307_cpu_device::m68307_timer::timer0_callback )
TIMER_CALLBACK_MEMBER(m68307_cpu_device::m68307_timer::timer1_callback )
{
m68307_cpu_device* m68k = (m68307_cpu_device *)ptr;
- single_timer* tptr = &m68k->m68307TIMER->singletimer[1];
+ single_timer* tptr = &m68k->m_m68307TIMER->singletimer[1];
tptr->regs[m68307TIMER_TMR] |= 0x2;
m68k->timer1_interrupt();
diff --git a/src/devices/machine/68340.cpp b/src/devices/machine/68340.cpp
index 3427fb6c7e3..2701909f18b 100644
--- a/src/devices/machine/68340.cpp
+++ b/src/devices/machine/68340.cpp
@@ -11,17 +11,17 @@ DEFINE_DEVICE_TYPE(M68340, m68340_cpu_device, "mc68340", "MC68340")
int m68340_cpu_device::calc_cs(offs_t address) const
{
- if ( !(m68340SIM->m_ba[0] & 1) ) return 1;
+ if ( !(m_m68340SIM->m_ba[0] & 1) ) return 1;
for (int i=0;i<4;i++)
{
- if (m68340SIM->m_ba[i] & 1)
+ if (m_m68340SIM->m_ba[i] & 1)
{
- int mask = ((m68340SIM->m_am[i]&0xffffff00) | 0xff);
- int base = m68340SIM->m_ba[i] & 0xffffff00;
- int fcmask = (m68340SIM->m_am[i] & 0xf0);
- int fcbase = (m68340SIM->m_ba[i] & 0xf0) & ~(m68340SIM->m_am[i] & 0xf0);
- int fc = mmu_tmp_fc;
+ int mask = ((m_m68340SIM->m_am[i]&0xffffff00) | 0xff);
+ int base = m_m68340SIM->m_ba[i] & 0xffffff00;
+ int fcmask = (m_m68340SIM->m_am[i] & 0xf0);
+ int fcbase = (m_m68340SIM->m_ba[i] & 0xf0) & ~(m_m68340SIM->m_am[i] & 0xf0);
+ int fc = m_mmu_tmp_fc;
if ((address & ~mask) == base && ((fc << 4) & ~fcmask ) == fcbase ) return i+1;
}
@@ -45,58 +45,56 @@ uint16_t m68340_cpu_device::get_cs(offs_t address)
READ32_MEMBER( m68340_cpu_device::m68340_internal_base_r )
{
- int pc = space.device().safe_pc();
- logerror("%08x m68340_internal_base_r %08x, (%08x)\n", pc, offset*4,mem_mask);
- return m68340_base;
+ logerror("%08x m68340_internal_base_r %08x, (%08x)\n", m_ppc, offset*4,mem_mask);
+ return m_m68340_base;
}
WRITE32_MEMBER( m68340_cpu_device::m68340_internal_base_w )
{
- int pc = space.device().safe_pc();
- logerror("%08x m68340_internal_base_w %08x, %08x (%08x)\n", pc, offset*4,data,mem_mask);
+ logerror("%08x m68340_internal_base_w %08x, %08x (%08x)\n", m_ppc, offset*4,data,mem_mask);
// other conditions?
- if (dfc==0x7)
+ if (m_dfc==0x7)
{
// unmap old modules
- if (m68340_base&1)
+ if (m_m68340_base&1)
{
- int base = m68340_base & 0xfffff000;
+ int base = m_m68340_base & 0xfffff000;
- internal->unmap_readwrite(base + 0x000, base + 0x05f);
- internal->unmap_readwrite(base + 0x600, base + 0x67f);
- internal->unmap_readwrite(base + 0x700, base + 0x723);
- internal->unmap_readwrite(base + 0x780, base + 0x7bf);
+ m_internal->unmap_readwrite(base + 0x000, base + 0x05f);
+ m_internal->unmap_readwrite(base + 0x600, base + 0x67f);
+ m_internal->unmap_readwrite(base + 0x700, base + 0x723);
+ m_internal->unmap_readwrite(base + 0x780, base + 0x7bf);
}
- COMBINE_DATA(&m68340_base);
- logerror("%08x m68340_internal_base_w %08x, %08x (%08x) (m68340_base write)\n", pc, offset*4,data,mem_mask);
+ COMBINE_DATA(&m_m68340_base);
+ logerror("%08x m68340_internal_base_w %08x, %08x (%08x) (m_m68340_base write)\n", pc(), offset*4,data,mem_mask);
// map new modules
- if (m68340_base&1)
+ if (m_m68340_base&1)
{
- int base = m68340_base & 0xfffff000;
+ int base = m_m68340_base & 0xfffff000;
- internal->install_readwrite_handler(base + 0x000, base + 0x03f,
+ m_internal->install_readwrite_handler(base + 0x000, base + 0x03f,
read16_delegate(FUNC(m68340_cpu_device::m68340_internal_sim_r),this),
write16_delegate(FUNC(m68340_cpu_device::m68340_internal_sim_w),this),0xffffffff);
- internal->install_readwrite_handler(base + 0x010, base + 0x01f, // Intentionally punches a hole in previous address mapping
+ m_internal->install_readwrite_handler(base + 0x010, base + 0x01f, // Intentionally punches a hole in previous address mapping
read8_delegate(FUNC(m68340_cpu_device::m68340_internal_sim_ports_r),this),
write8_delegate(FUNC(m68340_cpu_device::m68340_internal_sim_ports_w),this),0xffffffff);
- internal->install_readwrite_handler(base + 0x040, base + 0x05f,
+ m_internal->install_readwrite_handler(base + 0x040, base + 0x05f,
read32_delegate(FUNC(m68340_cpu_device::m68340_internal_sim_cs_r),this),
write32_delegate(FUNC(m68340_cpu_device::m68340_internal_sim_cs_w),this));
- internal->install_readwrite_handler(base + 0x600, base + 0x63f,
+ m_internal->install_readwrite_handler(base + 0x600, base + 0x63f,
READ16_DEVICE_DELEGATE(m_timer1, mc68340_timer_module_device, read),
WRITE16_DEVICE_DELEGATE(m_timer1, mc68340_timer_module_device, write),0xffffffff);
- internal->install_readwrite_handler(base + 0x640, base + 0x67f,
+ m_internal->install_readwrite_handler(base + 0x640, base + 0x67f,
READ16_DEVICE_DELEGATE(m_timer2, mc68340_timer_module_device, read),
WRITE16_DEVICE_DELEGATE(m_timer2, mc68340_timer_module_device, write),0xffffffff);
- internal->install_readwrite_handler(base + 0x700, base + 0x723,
+ m_internal->install_readwrite_handler(base + 0x700, base + 0x723,
READ8_DEVICE_DELEGATE(m_serial, mc68340_serial_module_device, read),
WRITE8_DEVICE_DELEGATE(m_serial, mc68340_serial_module_device, write),0xffffffff);
- internal->install_readwrite_handler(base + 0x780, base + 0x7bf,
+ m_internal->install_readwrite_handler(base + 0x780, base + 0x7bf,
read32_delegate(FUNC(m68340_cpu_device::m68340_internal_dma_r),this),
write32_delegate(FUNC(m68340_cpu_device::m68340_internal_dma_w),this));
@@ -105,7 +103,7 @@ WRITE32_MEMBER( m68340_cpu_device::m68340_internal_base_w )
}
else
{
- logerror("%08x m68340_internal_base_w %08x, %04x (%04x) (should fall through?)\n", pc, offset*4,data,mem_mask);
+ logerror("%08x m68340_internal_base_w %08x, %04x (%04x) (should fall through?)\n", pc(), offset*4,data,mem_mask);
}
@@ -145,9 +143,9 @@ m68340_cpu_device::m68340_cpu_device(const machine_config &mconfig, const char *
, m_pb_out_cb(*this)
, m_pb_in_cb(*this)
{
- m68340SIM = nullptr;
- m68340DMA = nullptr;
- m68340_base = 0;
+ m_m68340SIM = nullptr;
+ m_m68340DMA = nullptr;
+ m_m68340_base = 0;
}
void m68340_cpu_device::device_reset()
@@ -168,15 +166,15 @@ void m68340_cpu_device::device_start()
{
fscpu32_device::device_start();
- m68340SIM = new m68340_sim();
- m68340DMA = new m68340_dma();
+ m_m68340SIM = new m68340_sim();
+ m_m68340DMA = new m68340_dma();
- m68340SIM->reset();
- m68340DMA->reset();
+ m_m68340SIM->reset();
+ m_m68340DMA->reset();
start_68340_sim();
- m68340_base = 0x00000000;
+ m_m68340_base = 0x00000000;
- internal = &this->space(AS_PROGRAM);
+ m_internal = &space(AS_PROGRAM);
}
diff --git a/src/devices/machine/68340.h b/src/devices/machine/68340.h
index f183627dcec..76255b412a7 100644
--- a/src/devices/machine/68340.h
+++ b/src/devices/machine/68340.h
@@ -125,10 +125,10 @@ protected:
uint32_t m_extal;
/* 68340 peripheral modules */
- m68340_sim* m68340SIM;
- m68340_dma* m68340DMA;
+ m68340_sim* m_m68340SIM;
+ m68340_dma* m_m68340DMA;
- uint32_t m68340_base;
+ uint32_t m_m68340_base;
emu_timer *m_irq_timer;
diff --git a/src/devices/machine/68340dma.cpp b/src/devices/machine/68340dma.cpp
index e37e573e5e6..6649aeb2a94 100644
--- a/src/devices/machine/68340dma.cpp
+++ b/src/devices/machine/68340dma.cpp
@@ -8,22 +8,20 @@
READ32_MEMBER( m68340_cpu_device::m68340_internal_dma_r )
{
- assert(m68340DMA);
- //m68340_dma &dma = *m68340DMA;
+ assert(m_m68340DMA);
+ //m68340_dma &dma = *m_m68340DMA;
- int pc = space.device().safe_pc();
- logerror("%08x m68340_internal_dma_r %08x, (%08x)\n", pc, offset*4,mem_mask);
+ logerror("%08x m68340_internal_dma_r %08x, (%08x)\n", m_ppc, offset*4,mem_mask);
return 0x00000000;
}
WRITE32_MEMBER( m68340_cpu_device::m68340_internal_dma_w )
{
- assert(m68340DMA);
- //m68340_dma &dma = *m68340DMA;
+ assert(m_m68340DMA);
+ //m68340_dma &dma = *m_m68340DMA;
- int pc = space.device().safe_pc();
- logerror("%08x m68340_internal_dma_w %08x, %08x (%08x)\n", pc, offset*4,data,mem_mask);
+ logerror("%08x m68340_internal_dma_w %08x, %08x (%08x)\n", m_ppc, offset*4,data,mem_mask);
}
void m68340_dma::reset()
diff --git a/src/devices/machine/68340ser.cpp b/src/devices/machine/68340ser.cpp
index 3b86595e07e..eb9346da978 100644
--- a/src/devices/machine/68340ser.cpp
+++ b/src/devices/machine/68340ser.cpp
@@ -43,7 +43,7 @@ READ8_MEMBER( mc68340_serial_module_device::read )
LOG("%s\n", FUNCNAME);
int val = 0;
- LOGR("%08x %s %08x, (%08x)\n", space.device().safe_pc(), FUNCNAME, offset, mem_mask);
+ LOGR("%08x %s %08x, (%08x)\n", m_cpu->pcbase(), FUNCNAME, offset, mem_mask);
/*Setting the STP bit stops all clocks within the serial module (including the crystal
or external clock and SCLK), except for the clock from the IMB. The clock from the IMB
@@ -60,19 +60,19 @@ READ8_MEMBER( mc68340_serial_module_device::read )
{
case REG_MCRH:
val = m_mcrh;
- LOGSERIAL("- %08x %s %04x, %04x (%04x) (MCRH - Module Configuration Register High byte)\n", space.device().safe_pc(), FUNCNAME, offset, val, mem_mask);
+ LOGSERIAL("- %08x %s %04x, %04x (%04x) (MCRH - Module Configuration Register High byte)\n", m_cpu->pcbase(), FUNCNAME, offset, val, mem_mask);
break;
case REG_MCRL:
val = m_mcrl;
- LOGSERIAL("- %08x %s %04x, %04x (%04x) (MCRL - Module Configuration Register Low byte)\n", space.device().safe_pc(), FUNCNAME, offset, val, mem_mask);
+ LOGSERIAL("- %08x %s %04x, %04x (%04x) (MCRL - Module Configuration Register Low byte)\n", m_cpu->pcbase(), FUNCNAME, offset, val, mem_mask);
break;
case REG_ILR:
val = m_ilr;
- LOGSERIAL("- %08x %s %04x, %04x (%04x) (ILR - Interrupt Level Register)\n", space.device().safe_pc(), FUNCNAME, offset, val, mem_mask);
+ LOGSERIAL("- %08x %s %04x, %04x (%04x) (ILR - Interrupt Level Register)\n", m_cpu->pcbase(), FUNCNAME, offset, val, mem_mask);
break;
case REG_IVR:
val = m_ivr;
- LOGSERIAL("- %08x %s %04x, %04x (%04x) (IVR - Interrupt Vector Register)\n", space.device().safe_pc(), FUNCNAME, offset, val, mem_mask);
+ LOGSERIAL("- %08x %s %04x, %04x (%04x) (IVR - Interrupt Vector Register)\n", m_cpu->pcbase(), FUNCNAME, offset, val, mem_mask);
break;
}
@@ -118,25 +118,25 @@ WRITE8_MEMBER( mc68340_serial_module_device::write )
{
case REG_MCRH:
m_mcrh = data;
- LOGSERIAL("PC: %08x %s %04x, %04x (%04x) (MCRH - Module Configuration Register High byte)\n", space.device().safe_pc(), FUNCNAME, offset, data, mem_mask);
+ LOGSERIAL("PC: %08x %s %04x, %04x (%04x) (MCRH - Module Configuration Register High byte)\n", m_cpu->pcbase(), FUNCNAME, offset, data, mem_mask);
LOGSERIAL("- Clocks are %s\n", data & REG_MCRH_STP ? "stopped" : "running");
LOGSERIAL("- Freeze signal %s - not implemented\n", data & REG_MCRH_FRZ1 ? "stops at character boundary" : "is ignored");
LOGSERIAL("- CTS capture clock: %s - not implemented\n", data & REG_MCRH_ICCS ? "SCLK" : "Crystal");
break;
case REG_MCRL:
m_mcrl = data;
- LOGSERIAL("PC: %08x %s %04x, %04x (%04x) (MCRL - Module Configuration Register Low byte)\n", space.device().safe_pc(), FUNCNAME, offset, data, mem_mask);
+ LOGSERIAL("PC: %08x %s %04x, %04x (%04x) (MCRL - Module Configuration Register Low byte)\n", m_cpu->pcbase(), FUNCNAME, offset, data, mem_mask);
LOGSERIAL("- Supervisor registers %s - not implemented\n", data & REG_MCRL_SUPV ? "requries supervisor privileges" : "can be accessed by user privileged software");
LOGSERIAL("- Interrupt Arbitration level: %02x - not implemented\n", data & REG_MCRL_ARBLV);
break;
case REG_ILR:
m_ilr = data;
- LOGSERIAL("PC: %08x %s %04x, %04x (%04x) (ILR - Interrupt Level Register)\n", space.device().safe_pc(), FUNCNAME, offset, data, mem_mask);
+ LOGSERIAL("PC: %08x %s %04x, %04x (%04x) (ILR - Interrupt Level Register)\n", m_cpu->pcbase(), FUNCNAME, offset, data, mem_mask);
LOGSERIAL("- Interrupt Level: %02x\n", data & REG_ILR_MASK);
break;
case REG_IVR:
m_ivr = data;
- LOGSERIAL("PC: %08x %s %04x, %04x (%04x) (IVR - Interrupt Vector Register)\n", space.device().safe_pc(), FUNCNAME, offset, data, mem_mask);
+ LOGSERIAL("PC: %08x %s %04x, %04x (%04x) (IVR - Interrupt Vector Register)\n", m_cpu->pcbase(), FUNCNAME, offset, data, mem_mask);
LOGSERIAL("- Interrupt Vector: %02x\n", data);
break;
default:
@@ -150,7 +150,7 @@ WRITE_LINE_MEMBER( mc68340_serial_module_device::irq_w )
LOGINT("IRQ!\n%s\n", FUNCNAME);
if (m_ilr > 0)
{
- if (((m_cpu->m68340SIM->m_avr_rsr >> (8 + m_ilr)) & 1) != 0) // use autovector ?
+ if (((m_cpu->m_m68340SIM->m_avr_rsr >> (8 + m_ilr)) & 1) != 0) // use autovector ?
{
LOGINT("- Autovector level %d\n", m_ilr);
m_cpu->set_input_line(m_ilr, HOLD_LINE);
diff --git a/src/devices/machine/68340sim.cpp b/src/devices/machine/68340sim.cpp
index ddc7516b237..a9506f32944 100644
--- a/src/devices/machine/68340sim.cpp
+++ b/src/devices/machine/68340sim.cpp
@@ -45,51 +45,50 @@
READ16_MEMBER( m68340_cpu_device::m68340_internal_sim_r )
{
LOGR("%s\n", FUNCNAME);
- assert(m68340SIM);
- m68340_sim &sim = *m68340SIM;
+ assert(m_m68340SIM);
+ m68340_sim &sim = *m_m68340SIM;
int val = 0;
- int pc = space.device().safe_pc();
switch (offset * 2)
{
case m68340_sim::REG_MCR:
- LOGSIM("- %08x %s %04x, (%04x) (MCR - Module Configuration Register) - not implemented\n", pc, FUNCNAME, offset * 2, mem_mask);
+ LOGSIM("- %08x %s %04x, (%04x) (MCR - Module Configuration Register) - not implemented\n", m_ppc, FUNCNAME, offset * 2, mem_mask);
val = sim.m_mcr;
break;
case m68340_sim::REG_SYNCR:
- LOGSIM("- %08x %s %04x, (%04x) (SYNCR - Clock Synthesizer Register) - not implemented\n", pc, FUNCNAME, offset*2,mem_mask);
+ LOGSIM("- %08x %s %04x, (%04x) (SYNCR - Clock Synthesizer Register) - not implemented\n", m_ppc, FUNCNAME, offset*2,mem_mask);
val = sim.m_syncr;
break;
case m68340_sim::REG_AVR_RSR:
- LOGSIM("- %08x %s %04x, (%04x) (AVR, RSR - Auto Vector Register, Reset Status Register) - not implemented\n", pc, FUNCNAME, offset*2,mem_mask);
+ LOGSIM("- %08x %s %04x, (%04x) (AVR, RSR - Auto Vector Register, Reset Status Register) - not implemented\n", m_ppc, FUNCNAME, offset*2,mem_mask);
val = sim.m_avr_rsr;
break;
case m68340_sim::REG_SWIV_SYPCR:
- LOGSIM("- %08x %s %04x, (%04x) (SWIV_SYPCR - Software Interrupt Vector, System Protection Control Register) - not implemented\n", pc, FUNCNAME, offset*2,mem_mask);
+ LOGSIM("- %08x %s %04x, (%04x) (SWIV_SYPCR - Software Interrupt Vector, System Protection Control Register) - not implemented\n", m_ppc, FUNCNAME, offset*2,mem_mask);
val = sim.m_swiv_sypcr;
break;
case m68340_sim::REG_PICR:
- LOGPIT("- %08x %s %04x, (%04x) (PICR - Periodic Interrupt Control Register) - not implemented\n", pc, FUNCNAME, offset*2,mem_mask);
+ LOGPIT("- %08x %s %04x, (%04x) (PICR - Periodic Interrupt Control Register) - not implemented\n", m_ppc, FUNCNAME, offset*2,mem_mask);
val = sim.m_picr;
break;
case m68340_sim::REG_PITR:
- LOGPIT("- %08x %s %04x, (%04x) (PITR - Periodic Interrupt Timer Register) - not implemented\n", pc, FUNCNAME, offset*2,mem_mask);
+ LOGPIT("- %08x %s %04x, (%04x) (PITR - Periodic Interrupt Timer Register) - not implemented\n", m_ppc, FUNCNAME, offset*2,mem_mask);
val = sim.m_pitr;
break;
case m68340_sim::REG_SWSR:
- LOGSIM("- %08x %s %04x, (%04x) (SWSR - Software Service) - not implemented\n", pc, FUNCNAME, offset*2,mem_mask);
+ LOGSIM("- %08x %s %04x, (%04x) (SWSR - Software Service) - not implemented\n", m_ppc, FUNCNAME, offset*2,mem_mask);
val = sim.m_swsr;
break;
default:
- logerror("- %08x %s %04x, (%04x) (unsupported register)\n", pc, FUNCNAME, offset * 2, mem_mask);
- LOGSIM("- %08x %s %04x, (%04x) (unsupported register)\n", pc, FUNCNAME, offset * 2, mem_mask);
+ logerror("- %08x %s %04x, (%04x) (unsupported register)\n", m_ppc, FUNCNAME, offset * 2, mem_mask);
+ LOGSIM("- %08x %s %04x, (%04x) (unsupported register)\n", m_ppc, FUNCNAME, offset * 2, mem_mask);
}
LOGR(" * Reg %02x -> %02x - %s\n", offset * 2, val,
@@ -106,16 +105,14 @@ WRITE16_MEMBER( m68340_cpu_device::m68340_internal_sim_w )
((offset * 2) >= 0x10 && (offset * 2) < 0x20) || (offset * 2) >= 0x60 ? "Error - should not happen" :
std::array<char const *, 8> {{"MCR", "reserved", "SYNCR", "AVR/RSR", "SWIV/SYPCR", "PICR", "PITR", "SWSR"}}[(offset * 2) <= m68340_sim::REG_AVR_RSR ? offset : offset - 0x10 + 0x04]);
- assert(m68340SIM);
- m68340_sim &sim = *m68340SIM;
-
- int pc = space.device().safe_pc();
+ assert(m_m68340SIM);
+ m68340_sim &sim = *m_m68340SIM;
switch (offset<<1)
{
case m68340_sim::REG_MCR:
COMBINE_DATA(&sim.m_mcr);
- LOGSIM("PC: %08x %s %04x, %04x (%04x) (MCR - Module Configuration Register)\n", pc, FUNCNAME, offset * 2, data, mem_mask);
+ LOGSIM("PC: %08x %s %04x, %04x (%04x) (MCR - Module Configuration Register)\n", m_ppc, FUNCNAME, offset * 2, data, mem_mask);
LOGPIT("- FRZ1: Watchdog and PIT timer are %s\n", (data & m68340_sim::REG_MCR_FRZ1) == 0 ? "enabled" : "disabled");
LOGSIM("- FRZ0: The BUS monitor is %s\n", (data & m68340_sim::REG_MCR_FRZ0) == 0 ? "enabled" : "disabled");
LOGSIM("- FIRQ: Full Interrupt Request Mode %s\n", data & m68340_sim::REG_MCR_FIRQ ? "used on port B" : "supressed, adding 4 chip select lines on Port B");
@@ -125,7 +122,7 @@ WRITE16_MEMBER( m68340_cpu_device::m68340_internal_sim_w )
break;
case m68340_sim::REG_SYNCR:
- LOGSIM("PC: %08x %s %04x, %04x (%04x) (SYNCR - Clock Synthesizer Register) - not implemented\n", pc, FUNCNAME, offset * 2, data, mem_mask);
+ LOGSIM("PC: %08x %s %04x, %04x (%04x) (SYNCR - Clock Synthesizer Register) - not implemented\n", m_ppc, FUNCNAME, offset * 2, data, mem_mask);
COMBINE_DATA(&sim.m_syncr);
LOGSIM("- W : VCO x %d\n", data & m68340_sim::REG_SYNCR_W ? 4 : 1);
LOGSIM("- X : System clock / %d\n", data & m68340_sim::REG_SYNCR_X ? 1 : 2);
@@ -147,14 +144,14 @@ WRITE16_MEMBER( m68340_cpu_device::m68340_internal_sim_w )
break;
case m68340_sim::REG_AVR_RSR:
- LOGSIM("PC: %08x %s %04x, %04x (%04x) (AVR, RSR - Auto Vector Register, Reset Status Register)\n", pc, FUNCNAME, offset * 2, data, mem_mask);
+ LOGSIM("PC: %08x %s %04x, %04x (%04x) (AVR, RSR - Auto Vector Register, Reset Status Register)\n", m_ppc, FUNCNAME, offset * 2, data, mem_mask);
COMBINE_DATA(&sim.m_avr_rsr);
LOGSIM("- AVR: AV7-AV1 autovector bits: %02x\n", ((data & m68340_sim::REG_AVR_VEC) >> 8) & 0xff);
LOGSIM("- RSR: Last reset type: %02x - not implemented\n", (data & m68340_sim::REG_RSR_RESBITS) & 0xff);
break;
case m68340_sim::REG_SWIV_SYPCR:
- LOGSIM("PC: %08x %s %04x, %04x (%04x) (SWIV_SYPCR - Software Interrupt Vector, System Protection Control Register) - not implemented\n", pc, FUNCNAME, offset * 2, data, mem_mask);
+ LOGSIM("PC: %08x %s %04x, %04x (%04x) (SWIV_SYPCR - Software Interrupt Vector, System Protection Control Register) - not implemented\n", m_ppc, FUNCNAME, offset * 2, data, mem_mask);
COMBINE_DATA(&sim.m_swiv_sypcr);
LOGSIM("- SWIV: Software watchdog Interrupt Vector: %02x\n", ((data & m68340_sim::REG_SWIV_VEC) >> 8) & 0xff);
LOGSIM("- SWE : Software watchdog %s\n", (data & m68340_sim::REG_SYPCR_SWE) ? "enabled" : "disabled");
@@ -164,14 +161,14 @@ WRITE16_MEMBER( m68340_cpu_device::m68340_internal_sim_w )
break;
case m68340_sim::REG_PICR:
- LOGPIT("PC: %08x %s %04x, %04x (%04x) (PICR - Periodic Interrupt Control Register)\n", pc, FUNCNAME, offset*2,data,mem_mask);
+ LOGPIT("PC: %08x %s %04x, %04x (%04x) (PICR - Periodic Interrupt Control Register)\n", m_ppc, FUNCNAME, offset*2,data,mem_mask);
COMBINE_DATA(&sim.m_picr);
LOGPIT("- PIRQL: Periodic Interrupt Level %d%s\n", (data & m68340_sim::REG_PICR_PIRQL) >> 8, (data & m68340_sim::REG_PICR_PIRQL) == 0 ? " (disabled)" : "");
LOGPIT("- PIV : Periodic Interrupt Vector %02x\n", (data & m68340_sim::REG_PICR_PIVEC));
break;
case m68340_sim::REG_PITR:
- LOGPIT("PC: %08x %s %04x, %04x (%04x) (PITR - Periodic Interrupt Timer Register)\n", pc, FUNCNAME, offset*2,data,mem_mask);
+ LOGPIT("PC: %08x %s %04x, %04x (%04x) (PITR - Periodic Interrupt Timer Register)\n", m_ppc, FUNCNAME, offset*2,data,mem_mask);
COMBINE_DATA(&sim.m_pitr);
LOGSIM("- SWP : Software watchdog prescale factor is %d\n", (data & m68340_sim::REG_PITR_SWP) ? 512 : 1);
LOGPIT("- PTP : Periodic timer prescale factor is %d\n", (data & m68340_sim::REG_PITR_PTP) ? 512 : 1);
@@ -187,11 +184,11 @@ WRITE16_MEMBER( m68340_cpu_device::m68340_internal_sim_w )
case m68340_sim::REG_SWSR:
// basically watchdog, you must write an alternating pattern of 0x55 / 0xaa to keep the watchdog from resetting the system
- //LOGSIM("- %08x %s %04x, %04x (%04x) (SWSR - Software Service)\n", pc, FUNCNAME, offset*2,data,mem_mask);
+ //LOGSIM("- %08x %s %04x, %04x (%04x) (SWSR - Software Service)\n", m_ppc, FUNCNAME, offset*2,data,mem_mask);
break;
default:
- LOGSIM("- %08x %s %04x, %04x (%04x) - not implemented\n", pc, FUNCNAME, offset*2,data,mem_mask);
+ LOGSIM("- %08x %s %04x, %04x (%04x) - not implemented\n", m_ppc, FUNCNAME, offset*2,data,mem_mask);
}
}
@@ -200,16 +197,15 @@ READ8_MEMBER( m68340_cpu_device::m68340_internal_sim_ports_r )
{
LOGR("%s\n", FUNCNAME);
offset += 0x10;
- assert(m68340SIM);
- m68340_sim &sim = *m68340SIM;
+ assert(m_m68340SIM);
+ m68340_sim &sim = *m_m68340SIM;
- int pc = space.device().safe_pc();
- int val = space.machine().rand();
+ int val = machine().rand();
switch (offset)
{
case m68340_sim::REG_PORTA:
- LOGR("- %08x %s %04x (PORTA - Port A Data)\n", pc, FUNCNAME, offset);
+ LOGR("- %08x %s %04x (PORTA - Port A Data)\n", m_ppc, FUNCNAME, offset);
sim.m_porta &= sim.m_ddra;
// TODO: call callback
@@ -227,25 +223,25 @@ READ8_MEMBER( m68340_cpu_device::m68340_internal_sim_ports_r )
break;
case m68340_sim::REG_DDRA:
- LOGR("- %08x %s %04x (DDRA - Port A Data Direction)\n", pc, FUNCNAME, offset);
+ LOGR("- %08x %s %04x (DDRA - Port A Data Direction)\n", m_ppc, FUNCNAME, offset);
val = sim.m_ddra;
break;
case m68340_sim::REG_PPARA1:
- LOGR("- %08x %s %04x (PPRA1 - Port A Pin Assignment 1)\n", pc, FUNCNAME, offset);
+ LOGR("- %08x %s %04x (PPRA1 - Port A Pin Assignment 1)\n", m_ppc, FUNCNAME, offset);
val = sim.m_ppara1;
break;
case m68340_sim::REG_PPARA2:
- LOGR("- %08x %s %04x (PPRA2 - Port A Pin Assignment 2) - not implemented\n", pc, FUNCNAME, offset);
+ LOGR("- %08x %s %04x (PPRA2 - Port A Pin Assignment 2) - not implemented\n", m_ppc, FUNCNAME, offset);
val = sim.m_ppara2;
break;
case m68340_sim::REG_PORTB1:
- LOGR("- %08x %s %04x (PORTB1 - Port B Data 1)\n", pc, FUNCNAME, offset);
+ LOGR("- %08x %s %04x (PORTB1 - Port B Data 1)\n", m_ppc, FUNCNAME, offset);
// Fallthrough to mirror register
case m68340_sim::REG_PORTB:
- LOGR("- %08x %s %04x (PORTB - Port B Data 0)\n", pc, FUNCNAME, offset);
+ LOGR("- %08x %s %04x (PORTB - Port B Data 0)\n", m_ppc, FUNCNAME, offset);
sim.m_portb &= sim.m_ddrb;
// TODO: call callback
@@ -263,18 +259,18 @@ READ8_MEMBER( m68340_cpu_device::m68340_internal_sim_ports_r )
break;
case m68340_sim::REG_DDRB:
- LOGR("- %08x %s %04x (DDR - Port B Data Direction)\n", pc, FUNCNAME, offset);
+ LOGR("- %08x %s %04x (DDR - Port B Data Direction)\n", m_ppc, FUNCNAME, offset);
val = sim.m_ddrb;
break;
case m68340_sim::REG_PPARB:
- LOGR("- %08x %s %04x (PPARB - Port B Pin Assignment)\n", pc, FUNCNAME, offset);
+ LOGR("- %08x %s %04x (PPARB - Port B Pin Assignment)\n", m_ppc, FUNCNAME, offset);
val = sim.m_pparb;
break;
default:
- LOGR("- %08x %s %04x (ILLEGAL?)\n", pc, FUNCNAME, offset);
- logerror("%08x m68340_internal_sim_r %04x (ILLEGAL?)\n", pc, FUNCNAME, offset);
+ LOGR("- %08x %s %04x (ILLEGAL?)\n", m_ppc, FUNCNAME, offset);
+ logerror("%08x m68340_internal_sim_r %04x (ILLEGAL?)\n", m_ppc, FUNCNAME, offset);
break;
}
LOGR(" * Reg %02x -> %02x - %s\n", offset, val, std::array<char const *, 16>
@@ -287,17 +283,15 @@ WRITE8_MEMBER( m68340_cpu_device::m68340_internal_sim_ports_w )
{
LOG("%s", FUNCNAME);
offset += 0x10;
- assert(m68340SIM);
- m68340_sim &sim = *m68340SIM;
-
- int pc = space.device().safe_pc();
+ assert(m_m68340SIM);
+ m68340_sim &sim = *m_m68340SIM;
LOGSETUP(" * Reg %02x <- %02x - %s\n", offset, data, std::array<char const *, 8>
{{"PORTA", "DDRA", "PPRA1", "PPRA2", "PORTB", "PORTB1", "DDRB", "PPARB"}}[(offset - 0x10) / 2]);
switch (offset)
{
case m68340_sim::REG_PORTA:
- LOGDATA("- %08x %04x, %02x (PORTA - Port A Data)\n", pc, offset,data);
+ LOGDATA("- %08x %04x, %02x (PORTA - Port A Data)\n", m_ppc, offset,data);
sim.m_porta = (data & sim.m_ddra & sim.m_ppara1);
// callback
@@ -305,25 +299,25 @@ WRITE8_MEMBER( m68340_cpu_device::m68340_internal_sim_ports_w )
break;
case m68340_sim::REG_DDRA:
- LOGPORTS("- %08x %04x, %02x (DDRA - Port A Data Direction)\n", pc, offset,data);
+ LOGPORTS("- %08x %04x, %02x (DDRA - Port A Data Direction)\n", m_ppc, offset,data);
sim.m_ddra = data;
break;
case m68340_sim::REG_PPARA1:
- LOGPORTS("- %08x %04x, %02x (PPARA1 - Port A Pin Assignment 1)\n", pc, offset,data);
+ LOGPORTS("- %08x %04x, %02x (PPARA1 - Port A Pin Assignment 1)\n", m_ppc, offset,data);
sim.m_ppara1 = data;
break;
case m68340_sim::REG_PPARA2:
- LOGPORTS("- %08x %04x, %02x (PPARA2 - Port A Pin Assignment 2)\n", pc, offset,data);
+ LOGPORTS("- %08x %04x, %02x (PPARA2 - Port A Pin Assignment 2)\n", m_ppc, offset,data);
sim.m_ppara2 = data;
break;
case m68340_sim::REG_PORTB1:
- LOGDATA("- %08x %04x, %02x (PORTB1 - Port B Data - mirror)\n", pc, offset,data);
+ LOGDATA("- %08x %04x, %02x (PORTB1 - Port B Data - mirror)\n", m_ppc, offset,data);
// Falling through to mirrored register portb
case m68340_sim::REG_PORTB:
- LOGDATA("- %08x %04x, %02x (PORTB - Port B Data)\n", pc, offset,data);
+ LOGDATA("- %08x %04x, %02x (PORTB - Port B Data)\n", m_ppc, offset,data);
sim.m_portb = (data & sim.m_ddrb & sim.m_pparb);
// callback
@@ -331,18 +325,18 @@ WRITE8_MEMBER( m68340_cpu_device::m68340_internal_sim_ports_w )
break;
case m68340_sim::REG_DDRB:
- LOGPORTS("- %08x %04x, %02x (DDR - Port B Data Direction)\n", pc, offset,data);
+ LOGPORTS("- %08x %04x, %02x (DDR - Port B Data Direction)\n", m_ppc, offset,data);
sim.m_ddrb = data;
break;
case m68340_sim::REG_PPARB:
- LOGPORTS("- %08x %04x, %02x (PPARB - Port B Pin Assignment)\n", pc, offset,data);
+ LOGPORTS("- %08x %04x, %02x (PPARB - Port B Pin Assignment)\n", m_ppc, offset,data);
sim.m_pparb = data;
break;
default:
- LOGPORTS("- %08x %s %04x, %02x (ILLEGAL?) - not implemented\n", pc, FUNCNAME, offset,data);
- logerror("%08x m68340_internal_sim_ports_w %04x, %02x (ILLEGAL?)\n", pc, offset,data);
+ LOGPORTS("- %08x %s %04x, %02x (ILLEGAL?) - not implemented\n", m_ppc, FUNCNAME, offset,data);
+ logerror("%08x m68340_internal_sim_ports_w %04x, %02x (ILLEGAL?)\n", m_ppc, offset,data);
break;
}
}
@@ -352,10 +346,8 @@ READ32_MEMBER( m68340_cpu_device::m68340_internal_sim_cs_r )
LOGR("%s\n", FUNCNAME);
offset += m68340_sim::REG_AM_CS0>>2;
- assert(m68340SIM);
- m68340_sim &sim = *m68340SIM;
-
- int pc = space.device().safe_pc();
+ assert(m_m68340SIM);
+ m68340_sim &sim = *m_m68340SIM;
switch (offset<<2)
{
@@ -369,7 +361,7 @@ READ32_MEMBER( m68340_cpu_device::m68340_internal_sim_cs_r )
case m68340_sim::REG_BA_CS3: return sim.m_ba[3];
default:
- logerror("%08x m68340_internal_sim_r %08x, (%08x)\n", pc, offset*4,mem_mask);
+ logerror("%08x m68340_internal_sim_r %08x, (%08x)\n", m_ppc, offset*4,mem_mask);
}
return 0x00000000;
@@ -382,19 +374,17 @@ WRITE32_MEMBER( m68340_cpu_device::m68340_internal_sim_cs_w )
if (offset & 1)
{
- LOGCS("%08x Base address CS%d %08x, %08x (%08x) ", pc, (offset - 0x10) / 2, offset * 4, data, mem_mask);
+ LOGCS("%08x Base address CS%d %08x, %08x (%08x) ", m_ppc, (offset - 0x10) / 2, offset * 4, data, mem_mask);
LOGCS("- Base: %08x BFC:%02x WP:%d FTE:%d NCS:%d Valid: %s\n", data & 0xffffff00, (data & 0xf0) >> 4, data & 0x08 ? 1 : 0, data & 0x04 ? 1 : 0, data & 0x02 ? 1 : 0, data & 0x01 ? "Yes" : "No");
}
else
{
- LOGCS("%08x Address mask CS%d %08x, %08x (%08x) ", pc, (offset - 0x10) / 2, offset * 4, data, mem_mask);
+ LOGCS("%08x Address mask CS%d %08x, %08x (%08x) ", m_ppc, (offset - 0x10) / 2, offset * 4, data, mem_mask);
LOGCS("- Mask: %08x FCM:%02x DD:%d PS: %s\n", data & 0xffffff00, (data & 0xf0) >> 4, (data >> 2) & 0x03, std::array<char const *, 4>{{"Reserved", "16-Bit", "8-bit", "External DSACK response"}}[data & 0x03]);
}
- assert(m68340SIM);
- m68340_sim &sim = *m68340SIM;
-
- int pc = space.device().safe_pc();
+ assert(m_m68340SIM);
+ m68340_sim &sim = *m_m68340SIM;
switch (offset << 2)
{
@@ -431,15 +421,15 @@ WRITE32_MEMBER( m68340_cpu_device::m68340_internal_sim_cs_w )
break;
default:
- logerror("%08x m68340_internal_sim_cs_w %08x, %08x (%08x)\n", pc, offset*4,data,mem_mask);
+ logerror("%08x m68340_internal_sim_cs_w %08x, %08x (%08x)\n", m_ppc, offset*4,data,mem_mask);
break;
}
}
void m68340_cpu_device::do_pit_irq()
{
- assert(m68340SIM);
- m68340_sim &sim = *m68340SIM;
+ assert(m_m68340SIM);
+ m68340_sim &sim = *m_m68340SIM;
//logerror("do_pit_irq\n");
int timer_irq_level = (sim.m_picr & 0x0700) >> 8;
@@ -485,8 +475,8 @@ void m68340_cpu_device::start_68340_sim()
m_pb_in_cb.resolve();
// Setup correct VCO/clock speed based on reset values and crystal
- assert(m68340SIM);
- m68340_sim &sim = *m68340SIM;
+ assert(m_m68340SIM);
+ m68340_sim &sim = *m_m68340SIM;
switch (m_clock_mode)
{
case m68340_sim::CLOCK_MODE_EXT:
@@ -534,8 +524,8 @@ void m68340_sim::reset()
/* do_tick_pit works on whole clock cycles, no flank support */
void m68340_cpu_device::do_tick_pit()
{
- assert(m68340SIM);
- m68340_sim &sim = *m68340SIM;
+ assert(m_m68340SIM);
+ m68340_sim &sim = *m_m68340SIM;
sim.m_pit_counter--;
if ( ( (sim.m_mcr & m68340_sim::REG_MCR_FRZ1) == 0) &&
diff --git a/src/devices/machine/68340tmu.cpp b/src/devices/machine/68340tmu.cpp
index 4c04f49669d..660079aaded 100644
--- a/src/devices/machine/68340tmu.cpp
+++ b/src/devices/machine/68340tmu.cpp
@@ -43,8 +43,7 @@ READ16_MEMBER( mc68340_timer_module_device::read )
int val = 0;
- int pc = space.device().safe_pc();
- LOGR("%08x m68340_internal_timer_r %08x, (%08x)\n", pc, offset * 2, mem_mask);
+ LOGR("%08x m68340_internal_timer_r %08x, (%08x)\n", m_cpu->pcbase(), offset * 2, mem_mask);
/*Setting the STP bit stops all clocks within the timer module except for the clock
from the IMB. The clock from the IMB remains active to allow the CPU32 access to the MCR.
@@ -59,39 +58,39 @@ READ16_MEMBER( mc68340_timer_module_device::read )
{
case REG_MCR:
val = m_mcr;
- LOGTIMER("- %08x %s %04x, %04x (%04x) (MCR - Module Configuration Register)\n", pc, FUNCNAME, offset * 2, val, mem_mask);
+ LOGTIMER("- %08x %s %04x, %04x (%04x) (MCR - Module Configuration Register)\n", m_cpu->pcbase(), FUNCNAME, offset * 2, val, mem_mask);
break;
case REG_IR:
val = m_ir;
- LOGTIMER("- %08x %s %04x, %04x (%04x) (IR - Interrupt Register)\n", pc, FUNCNAME, offset * 2, val, mem_mask);
+ LOGTIMER("- %08x %s %04x, %04x (%04x) (IR - Interrupt Register)\n", m_cpu->pcbase(), FUNCNAME, offset * 2, val, mem_mask);
break;
case REG_CR:
val = m_cr;
- LOGTIMER("- %08x %s %04x, %04x (%04x) (CR - Control Register)\n", pc, FUNCNAME, offset * 2, val, mem_mask);
+ LOGTIMER("- %08x %s %04x, %04x (%04x) (CR - Control Register)\n", m_cpu->pcbase(), FUNCNAME, offset * 2, val, mem_mask);
break;
case REG_SR:
val = m_sr;
- LOGTIMER("- %08x %s %04x, %04x (%04x) (SR - Status/Prescaler Register)\n", pc, FUNCNAME, offset * 2, val, mem_mask);
+ LOGTIMER("- %08x %s %04x, %04x (%04x) (SR - Status/Prescaler Register)\n", m_cpu->pcbase(), FUNCNAME, offset * 2, val, mem_mask);
break;
case REG_CNTR:
val = m_cntr_reg;
- LOGTIMER("- %08x %s %04x, %04x (%04x) (CNTR - Counter Register)\n", pc, FUNCNAME, offset * 2, val, mem_mask);
+ LOGTIMER("- %08x %s %04x, %04x (%04x) (CNTR - Counter Register)\n", m_cpu->pcbase(), FUNCNAME, offset * 2, val, mem_mask);
break;
case REG_PREL1:
val = m_prel1;
- LOGTIMER("- %08x %s %04x, %04x (%04x) (PREL1 - Preload 1 Register)\n", pc, FUNCNAME, offset * 2, val, mem_mask);
+ LOGTIMER("- %08x %s %04x, %04x (%04x) (PREL1 - Preload 1 Register)\n", m_cpu->pcbase(), FUNCNAME, offset * 2, val, mem_mask);
break;
case REG_PREL2:
val = m_prel2;
- LOGTIMER("- %08x %s %04x, %04x (%04x) (PREL2 - Preload 2 Register)\n", pc, FUNCNAME, offset * 2, val, mem_mask);
+ LOGTIMER("- %08x %s %04x, %04x (%04x) (PREL2 - Preload 2 Register)\n", m_cpu->pcbase(), FUNCNAME, offset * 2, val, mem_mask);
break;
case REG_COM:
val = m_com;
- LOGTIMER("- %08x %s %04x, %04x (%04x) (COM - Compare Register)\n", pc, FUNCNAME, offset * 2, val, mem_mask);
+ LOGTIMER("- %08x %s %04x, %04x (%04x) (COM - Compare Register)\n", m_cpu->pcbase(), FUNCNAME, offset * 2, val, mem_mask);
break;
default:
- LOGTIMER("- %08x FUNCNAME %08x, %08x (%08x) - not implemented\n", pc, offset * 2, val, mem_mask);
- logerror("%08x m68340_internal_timer_r %08x, %08x (%08x)\n", pc, offset * 2, val, mem_mask);
+ LOGTIMER("- %08x FUNCNAME %08x, %08x (%08x) - not implemented\n", m_cpu->pcbase(), offset * 2, val, mem_mask);
+ logerror("%08x m68340_internal_timer_r %08x, %08x (%08x)\n", m_cpu->pcbase(), offset * 2, val, mem_mask);
break;
}
LOGR(" * Timer%d Reg %02x [%02x] -> %02x - %s\n", m_cpu->get_timer_index(this) + 1, offset * 2, offset, val, (offset * 2) > 0x12 ? "reserved" : std::array<char const *, 9> {{"MCR", "reserved", "IR", "CR", "SR", "CNTR", "PREL1", "PREL2", "COM"}}[offset % 0x20]);
@@ -100,8 +99,6 @@ READ16_MEMBER( mc68340_timer_module_device::read )
WRITE16_MEMBER( mc68340_timer_module_device::write )
{
- int pc = space.device().safe_pc();
-
LOGSETUP("\n%s\n", FUNCNAME);
LOGSETUP(" * Timer%d Reg %02x [%02x] <- %02x - %s\n", m_cpu->get_timer_index(this) + 1, (offset * 2), offset, data,
(offset * 2) > 0x12 ? "reserved" : std::array<char const *, 9>
@@ -120,7 +117,7 @@ WRITE16_MEMBER( mc68340_timer_module_device::write )
{
case REG_MCR:
COMBINE_DATA(&m_mcr);
- LOGTIMER("PC: %08x %s %04x, %04x (%04x) (MCR - Module Configuration Register)\n", pc, FUNCNAME, offset * 2, data, mem_mask);
+ LOGTIMER("PC: %08x %s %04x, %04x (%04x) (MCR - Module Configuration Register)\n", m_cpu->pcbase(), FUNCNAME, offset * 2, data, mem_mask);
LOGTIMER("- Clocks are %s\n", data & REG_MCR_STP ? "stopped" : "running");
LOGTIMER("- Freeze signal %s - not implemented\n", data & REG_MCR_FRZ1 ? "stops execution" : "is ignored");
LOGTIMER("- Supervisor registers %s - not implemented\n", data & REG_MCR_SUPV ? "requries supervisor privileges" : "can be accessed by user privileged software");
@@ -128,13 +125,13 @@ WRITE16_MEMBER( mc68340_timer_module_device::write )
break;
case REG_IR:
COMBINE_DATA(&m_ir);
- LOGTIMER("PC: %08x %s %04x, %04x (%04x) (IR - Interrupt Register)\n", pc, FUNCNAME, offset * 2, data, mem_mask);
+ LOGTIMER("PC: %08x %s %04x, %04x (%04x) (IR - Interrupt Register)\n", m_cpu->pcbase(), FUNCNAME, offset * 2, data, mem_mask);
LOGTIMER("- Interrupt level : %02x\n", (data & REG_IR_INTLEV) >> 8);
LOGTIMER("- Interrupt vector: %02x\n", (data & REG_IR_INTVEC));
break;
case REG_CR:
COMBINE_DATA(&m_cr);
- LOGTIMER("PC %08x %s %04x, %04x (%04x) (CR - Module Control Register)\n", pc, FUNCNAME, offset * 2, data, mem_mask);
+ LOGTIMER("PC %08x %s %04x, %04x (%04x) (CR - Module Control Register)\n", m_cpu->pcbase(), FUNCNAME, offset * 2, data, mem_mask);
LOGTIMER("- Software reset: %s\n", (data & REG_CR_SWR) ? "inactive" : "active" );
LOGTIMER("- Enabled interrupts: %02x TO:%d TG:%d TC:%d\n",
data & REG_CR_INTMSK,
@@ -200,7 +197,7 @@ WRITE16_MEMBER( mc68340_timer_module_device::write )
}
break;
case REG_SR:
- LOGTIMER("PC %08x %s %04x, %04x (%04x) (SR - Status/Prescaler Register)\n", pc, FUNCNAME, offset * 2, data, mem_mask);
+ LOGTIMER("PC %08x %s %04x, %04x (%04x) (SR - Status/Prescaler Register)\n", m_cpu->pcbase(), FUNCNAME, offset * 2, data, mem_mask);
/* IRQ - Interrupt Request bit
1 = An interrupt condition has occurred. This bit is the logical OR of the enabled TO, TG, and TC interrupt bits.
@@ -212,7 +209,7 @@ WRITE16_MEMBER( mc68340_timer_module_device::write )
// TODO: clear IRQ line
}
COMBINE_DATA(&m_sr);
- LOGTIMER("PC %08x %s %04x, %04x (%04x) (SR - Status/Prescaler Register)\n", pc, FUNCNAME, offset * 2, data, mem_mask);
+ LOGTIMER("PC %08x %s %04x, %04x (%04x) (SR - Status/Prescaler Register)\n", m_cpu->pcbase(), FUNCNAME, offset * 2, data, mem_mask);
LOGTIMER("- IRQ: %s\n", (data & REG_SR_IRQ) ? "Yes" : "None");
LOGTIMER("- TO TimeOut int : %s\n", (data & REG_SR_TO) ? "Asserted" : "Cleared");
LOGTIMER("- TG Timer Gate int : %s\n", (data & REG_SR_TG) ? "Asserted" : "Cleared");
@@ -225,30 +222,30 @@ WRITE16_MEMBER( mc68340_timer_module_device::write )
break;
case REG_CNTR:
COMBINE_DATA(&m_cntr_reg);
- LOGTIMER("- %08x %s %04x, %04x (%04x) (CNTR - Counter Register)\n", pc, FUNCNAME, offset * 2, data, mem_mask);
+ LOGTIMER("- %08x %s %04x, %04x (%04x) (CNTR - Counter Register)\n", m_cpu->pcbase(), FUNCNAME, offset * 2, data, mem_mask);
break;
case REG_PREL1:
COMBINE_DATA(&m_prel1);
- LOGTIMER("PC %08x %s %04x, %04x (%04x) (PREL1 - Preload 1 Register)\n", pc, FUNCNAME, offset * 2, data, mem_mask);
+ LOGTIMER("PC %08x %s %04x, %04x (%04x) (PREL1 - Preload 1 Register)\n", m_cpu->pcbase(), FUNCNAME, offset * 2, data, mem_mask);
LOGTIMER("- PR1-15 to PR1-0: %04x\n", (data & 0xffff));
break;
case REG_PREL2:
COMBINE_DATA(&m_prel2);
- LOGTIMER("PC %08x %s %04x, %04x (%04x) (PREL2 - Preload 2 Register)\n", pc, FUNCNAME, offset * 2, data, mem_mask);
+ LOGTIMER("PC %08x %s %04x, %04x (%04x) (PREL2 - Preload 2 Register)\n", m_cpu->pcbase(), FUNCNAME, offset * 2, data, mem_mask);
LOGTIMER("- PR2-15 to PR2-0: %04x\n", (data & 0xffff));
break;
case REG_COM:
COMBINE_DATA(&m_com);
- LOGTIMER("PC %08x %s %04x, %04x (%04x) (COM - Compare Register)\n", pc, FUNCNAME, offset * 2, data, mem_mask);
+ LOGTIMER("PC %08x %s %04x, %04x (%04x) (COM - Compare Register)\n", m_cpu->pcbase(), FUNCNAME, offset * 2, data, mem_mask);
LOGTIMER("- COM15-COM0: %04x\n", (data & 0xfff));
break;
default:
- LOGTIMER("- %08x FUNCNAME %08x, %08x (%08x) - not implemented\n", pc, offset * 2, data, mem_mask);
- logerror("%08x m68340_internal_sim_w %08x, %08x (%08x)\n", pc, offset * 2, data, mem_mask);
+ LOGTIMER("- %08x FUNCNAME %08x, %08x (%08x) - not implemented\n", m_cpu->pcbase(), offset * 2, data, mem_mask);
+ logerror("%08x m68340_internal_sim_w %08x, %08x (%08x)\n", m_cpu->pcbase(), offset * 2, data, mem_mask);
break;
}
- LOG("%08x m68340_internal_timer_w %08x, %08x (%08x)\n", pc, offset * 2, data, mem_mask);
+ LOG("%08x m68340_internal_timer_w %08x, %08x (%08x)\n", m_cpu->pcbase(), offset * 2, data, mem_mask);
}
WRITE_LINE_MEMBER( mc68340_timer_module_device::tin_w)
@@ -310,8 +307,8 @@ void mc68340_timer_module_device::device_start()
void mc68340_timer_module_device::do_timer_irq()
{
- assert(m_cpu->m68340SIM);
- m68340_sim &sim = *m_cpu->m68340SIM;
+ assert(m_cpu->m_m68340SIM);
+ m68340_sim &sim = *m_cpu->m_m68340SIM;
int timer_irq_level = (m_ir & 0x0700) >> 8;
int timer_irq_vector = (m_ir & 0x00ff) >> 0;
diff --git a/src/devices/machine/atmel_arm_aic.cpp b/src/devices/machine/atmel_arm_aic.cpp
index 27c2dcbb826..19d7a7b588d 100644
--- a/src/devices/machine/atmel_arm_aic.cpp
+++ b/src/devices/machine/atmel_arm_aic.cpp
@@ -53,6 +53,7 @@ void arm_aic_device::device_start()
m_irq_out.resolve_safe();
save_item(NAME(m_irqs_enabled));
+ save_item(NAME(m_irqs_pending));
save_item(NAME(m_current_irq_vector));
save_item(NAME(m_current_firq_vector));
@@ -63,6 +64,7 @@ void arm_aic_device::device_start()
void arm_aic_device::device_reset()
{
m_irqs_enabled = 0;
+ m_irqs_pending = 0;
m_current_irq_vector = 0;
m_current_firq_vector = 0;
@@ -70,24 +72,38 @@ void arm_aic_device::device_reset()
for(auto & elem : m_aic_svr) { elem = 0; }
}
-void arm_aic_device::set_irq(int identity)
+void arm_aic_device::set_irq(int line, int state)
{
- for (int i = 0;i < 32;i++)
+ // note: configurable edge / level logic is not simulated, TODO
+ if (state == ASSERT_LINE)
+ m_irqs_pending |= 1 << line;
+ else
+ m_irqs_pending &= ~(1 << line);
+ recalc_irqs();
+}
+
+void arm_aic_device::recalc_irqs()
+{
+ uint32_t mask = m_irqs_enabled & m_irqs_pending;
+ if (mask)
{
- if (m_aic_smr[i] == identity)
+ int pri = -1;
+ uint8_t midx;
+ do
{
- if ((m_irqs_enabled >> i) & 1)
+ uint8_t idx = 31 - count_leading_zeros(mask);
+ if ((int)(m_aic_smr[idx] & 7) > pri)
{
- m_current_irq_vector = m_aic_svr[i];
- m_irq_out(ASSERT_LINE);
- return;
+ midx = idx;
+ pri = m_aic_smr[idx] & 7;
}
- }
+ mask &= ~(1 << idx);
+ } while (mask);
+
+ // handle FIQ (idx 0) case ??
+ m_current_irq_vector = m_aic_svr[midx];
+ m_irq_out(ASSERT_LINE);
}
+ else
+ m_irq_out(CLEAR_LINE);
}
-
-WRITE32_MEMBER(arm_aic_device::aic_iccr_w)
-{
- //logerror("%s: aic_iccr_w %08x (Interrupt Clear Command Register)\n", machine().describe_context().c_str(), data);
- m_irq_out(CLEAR_LINE);
-};
diff --git a/src/devices/machine/atmel_arm_aic.h b/src/devices/machine/atmel_arm_aic.h
index 101c57cc672..9083c44fd95 100644
--- a/src/devices/machine/atmel_arm_aic.h
+++ b/src/devices/machine/atmel_arm_aic.h
@@ -38,12 +38,12 @@ public:
DECLARE_WRITE32_MEMBER(aic_smr_w) { COMBINE_DATA(&m_aic_smr[offset]); };
DECLARE_WRITE32_MEMBER(aic_svr_w) { COMBINE_DATA(&m_aic_svr[offset]); };
- DECLARE_WRITE32_MEMBER(aic_iecr_w) { /*logerror("%s: aic_iecr_w %08x (Interrupt Enable Command Register)\n", machine().describe_context().c_str(), data);*/ COMBINE_DATA(&m_irqs_enabled); };
- DECLARE_WRITE32_MEMBER(aic_idcr_w) { /*logerror("%s: aic_idcr_w %08x (Interrupt Disable Command Register)\n", machine().describe_context().c_str(), data);*/ };
- DECLARE_WRITE32_MEMBER(aic_iccr_w);
+ DECLARE_WRITE32_MEMBER(aic_iecr_w) { m_irqs_enabled |= data & mem_mask; recalc_irqs(); };
+ DECLARE_WRITE32_MEMBER(aic_idcr_w) { m_irqs_enabled &= ~(data & mem_mask); recalc_irqs(); };
+ DECLARE_WRITE32_MEMBER(aic_iccr_w) { m_irqs_pending &= ~(data & mem_mask); recalc_irqs(); };
DECLARE_WRITE32_MEMBER(aic_eoicr_w){ /*logerror("%s: aic_eoicr_w (End of Interrupt Command Register)\n", machine().describe_context().c_str());*/ }; // value doesn't matter
- void set_irq(int identity);
+ void set_irq(int line, int state);
protected:
virtual void device_start() override;
@@ -51,6 +51,7 @@ protected:
private:
uint32_t m_irqs_enabled;
+ uint32_t m_irqs_pending;
uint32_t m_current_irq_vector;
uint32_t m_current_firq_vector;
@@ -58,6 +59,7 @@ private:
uint32_t m_aic_svr[32];
devcb_write_line m_irq_out;
+ void recalc_irqs();
};
#endif
diff --git a/src/devices/machine/autoconfig.cpp b/src/devices/machine/autoconfig.cpp
index 8125272ee83..2b272f814cc 100644
--- a/src/devices/machine/autoconfig.cpp
+++ b/src/devices/machine/autoconfig.cpp
@@ -124,7 +124,7 @@ READ16_MEMBER( amiga_autoconfig::autoconfig_read )
{
uint16_t data = m_cfg[offset] | 0x0fff;
- if (VERBOSE && !space.machine().side_effect_disabled())
+ if (VERBOSE && !dynamic_cast<device_t *>(this)->machine().side_effect_disabled())
space.device().logerror("autoconfig_read %04x @ %02x [mask = %04x]\n", data, offset, mem_mask);
return data;
@@ -132,7 +132,7 @@ READ16_MEMBER( amiga_autoconfig::autoconfig_read )
WRITE16_MEMBER( amiga_autoconfig::autoconfig_write )
{
- if (VERBOSE && !space.machine().side_effect_disabled())
+ if (VERBOSE && !dynamic_cast<device_t *>(this)->machine().side_effect_disabled())
space.device().logerror("autoconfig_write %04x @ %02x [mask = %04x]\n", data, offset, mem_mask);
switch (offset)
diff --git a/src/devices/machine/e05a03.cpp b/src/devices/machine/e05a03.cpp
index e20e1b94cb6..3b5ca84b556 100644
--- a/src/devices/machine/e05a03.cpp
+++ b/src/devices/machine/e05a03.cpp
@@ -92,7 +92,7 @@ void e05a03_device::device_reset()
WRITE8_MEMBER( e05a03_device::write )
{
- logerror("%s: e05a03_w(%02x): %02x\n", space.machine().describe_context(), offset, data);
+ logerror("%s: e05a03_w(%02x): %02x\n", machine().describe_context(), offset, data);
switch (offset)
{
@@ -131,7 +131,7 @@ READ8_MEMBER( e05a03_device::read )
{
uint8_t result = 0;
- logerror("%s: e05a03_r(%02x)\n", space.machine().describe_context(), offset);
+ logerror("%s: e05a03_r(%02x)\n", machine().describe_context(), offset);
switch (offset)
{
diff --git a/src/devices/machine/e05a30.cpp b/src/devices/machine/e05a30.cpp
index a9b59f41d02..4857c75bc3d 100644
--- a/src/devices/machine/e05a30.cpp
+++ b/src/devices/machine/e05a30.cpp
@@ -164,7 +164,7 @@ WRITE_LINE_MEMBER( e05a30_device::centronics_input_strobe )
WRITE8_MEMBER( e05a30_device::write )
{
- LOG("%s: e05a30_w([0xC0%02x]): %02x\n", space.machine().describe_context(), offset, data);
+ LOG("%s: e05a30_w([0xC0%02x]): %02x\n", machine().describe_context(), offset, data);
switch (offset) {
case 0x04:
@@ -194,7 +194,7 @@ READ8_MEMBER( e05a30_device::read )
{
uint8_t result = 0;
- LOG("%s: e05a30_r([0xC0%02x]): ", space.machine().describe_context(), offset);
+ LOG("%s: e05a30_r([0xC0%02x]): ", machine().describe_context(), offset);
switch (offset) {
case 0x02:
diff --git a/src/devices/machine/eepromser.cpp b/src/devices/machine/eepromser.cpp
index 5e6e08a6a2b..d97ea318407 100644
--- a/src/devices/machine/eepromser.cpp
+++ b/src/devices/machine/eepromser.cpp
@@ -1007,9 +1007,9 @@ void eeprom_serial_x24c44_device::handle_event(eeprom_event event)
if (bit_index % m_data_bits == 0 && (bit_index == 0 || m_streaming_enabled)){
m_shift_register=m_ram_data[m_address];
- //m_shift_register=BITSWAP16(m_shift_register,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
- //m_shift_register=BITSWAP16(m_shift_register,7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8);
- m_shift_register= BITSWAP16(m_shift_register,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7);
+ //m_shift_register=bitswap<16>(m_shift_register,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
+ //m_shift_register=bitswap<16>(m_shift_register,7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8);
+ m_shift_register= bitswap<16>(m_shift_register,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7);
m_shift_register=m_shift_register<<16;
@@ -1046,9 +1046,9 @@ void eeprom_serial_x24c44_device::handle_event(eeprom_event event)
m_shift_register = (m_shift_register << 1) | m_di_state;
if (++m_bits_accum == m_data_bits)
{
- //m_shift_register=BITSWAP16(m_shift_register, 0, 1, 2, 3, 4, 5,6,7, 8, 9,10,11,12,13,14,15);
- //m_shift_register=BITSWAP16(m_shift_register, 7, 6, 5, 4, 3, 2,1,0,15,14,13,12,11,10, 9, 8);
- m_shift_register=BITSWAP16(m_shift_register,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7);
+ //m_shift_register=bitswap<16>(m_shift_register, 0, 1, 2, 3, 4, 5,6,7, 8, 9,10,11,12,13,14,15);
+ //m_shift_register=bitswap<16>(m_shift_register, 7, 6, 5, 4, 3, 2,1,0,15,14,13,12,11,10, 9, 8);
+ m_shift_register=bitswap<16>(m_shift_register,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7);
m_ram_data[m_address]=m_shift_register;
LOG1("write to RAM addr=%02X data=%04X\n",m_address,m_shift_register);
diff --git a/src/devices/machine/ldpr8210.cpp b/src/devices/machine/ldpr8210.cpp
index 8e1b879d16d..39bb12f97ba 100644
--- a/src/devices/machine/ldpr8210.cpp
+++ b/src/devices/machine/ldpr8210.cpp
@@ -236,7 +236,7 @@ void pioneer_pr8210_device::control_w(uint8_t data)
{
// data is stored to the PIA in bit-reverse order
uint8_t newcommand = (m_accumulator >> 2) & 0x1f;
- m_pia.porta = BITSWAP8(newcommand, 0,1,2,3,4,5,6,7);
+ m_pia.porta = bitswap<8>(newcommand, 0,1,2,3,4,5,6,7);
// the MCU logic requires a 0 to execute many commands; however, nobody
// consistently sends a 0, whereas they do tend to send duplicate commands...
diff --git a/src/devices/machine/mc146818.cpp b/src/devices/machine/mc146818.cpp
index afe912a7d0d..8780643c2e3 100644
--- a/src/devices/machine/mc146818.cpp
+++ b/src/devices/machine/mc146818.cpp
@@ -528,7 +528,7 @@ READ8_MEMBER( mc146818_device::read )
// Update In Progress (UIP) time for 32768 Hz is 244+1984usec
/// TODO: support other dividers
/// TODO: don't set this if update is stopped
- if ((space.machine().time() - m_last_refresh) < attotime::from_usec(244+1984))
+ if ((machine().time() - m_last_refresh) < attotime::from_usec(244+1984))
data |= REG_A_UIP;
break;
diff --git a/src/devices/machine/mc6846.cpp b/src/devices/machine/mc6846.cpp
index 2c2c1abb497..56b2a49f786 100644
--- a/src/devices/machine/mc6846.cpp
+++ b/src/devices/machine/mc6846.cpp
@@ -290,7 +290,7 @@ READ8_MEMBER(mc6846_device::read)
case 0:
case 4:
LOG( "%s %f: mc6846 CSR read $%02X intr=%i (timer=%i, cp1=%i, cp2=%i)\n",
- machine().describe_context(), space.machine().time().as_double(),
+ machine().describe_context(), machine().time().as_double(),
m_csr, (m_csr >> 7) & 1,
m_csr & 1, (m_csr >> 1) & 1, (m_csr >> 2) & 1 );
m_csr0_to_be_cleared = m_csr & 1;
@@ -299,15 +299,15 @@ READ8_MEMBER(mc6846_device::read)
return m_csr;
case 1:
- LOG( "%s %f: mc6846 PCR read $%02X\n", machine().describe_context(), space.machine().time().as_double(), m_pcr );
+ LOG( "%s %f: mc6846 PCR read $%02X\n", machine().describe_context(), machine().time().as_double(), m_pcr );
return m_pcr;
case 2:
- LOG( "%s %f: mc6846 DDR read $%02X\n", machine().describe_context(), space.machine().time().as_double(), m_ddr );
+ LOG( "%s %f: mc6846 DDR read $%02X\n", machine().describe_context(), machine().time().as_double(), m_ddr );
return m_ddr;
case 3:
- LOG( "%s %f: mc6846 PORT read $%02X\n", machine().describe_context(), space.machine().time().as_double(), PORT );
+ LOG( "%s %f: mc6846 PORT read $%02X\n", machine().describe_context(), machine().time().as_double(), PORT );
if ( ! (m_pcr & 0x80) )
{
if ( m_csr1_to_be_cleared )
@@ -321,11 +321,11 @@ READ8_MEMBER(mc6846_device::read)
return PORT;
case 5:
- LOG( "%s %f: mc6846 TCR read $%02X\n",machine().describe_context(), space.machine().time().as_double(), m_tcr );
+ LOG( "%s %f: mc6846 TCR read $%02X\n",machine().describe_context(), machine().time().as_double(), m_tcr );
return m_tcr;
case 6:
- LOG( "%s %f: mc6846 COUNTER hi read $%02X\n", machine().describe_context(), space.machine().time().as_double(), counter() >> 8 );
+ LOG( "%s %f: mc6846 COUNTER hi read $%02X\n", machine().describe_context(), machine().time().as_double(), counter() >> 8 );
if ( m_csr0_to_be_cleared )
{
m_csr &= ~1;
@@ -335,7 +335,7 @@ READ8_MEMBER(mc6846_device::read)
return counter() >> 8;
case 7:
- LOG( "%s %f: mc6846 COUNTER low read $%02X\n", machine().describe_context(), space.machine().time().as_double(), counter() & 0xff );
+ LOG( "%s %f: mc6846 COUNTER low read $%02X\n", machine().describe_context(), machine().time().as_double(), counter() & 0xff );
if ( m_csr0_to_be_cleared )
{
m_csr &= ~1;
@@ -375,7 +375,7 @@ WRITE8_MEMBER(mc6846_device::write)
"latcged,pos-edge", "latcged,pos-edge,intr"
};
LOG( "%s %f: mc6846 PCR write $%02X reset=%i cp2=%s cp1=%s\n",
- machine().describe_context(), space.machine().time().as_double(), data,
+ machine().describe_context(), machine().time().as_double(), data,
(data >> 7) & 1, cp2[ (data >> 3) & 7 ], cp1[ data & 7 ] );
}
@@ -403,7 +403,7 @@ WRITE8_MEMBER(mc6846_device::write)
break;
case 2:
- LOG( "%s %f: mc6846 DDR write $%02X\n", machine().describe_context(), space.machine().time().as_double(), data );
+ LOG( "%s %f: mc6846 DDR write $%02X\n", machine().describe_context(), machine().time().as_double(), data );
if ( ! (m_pcr & 0x80) )
{
m_ddr = data;
@@ -413,7 +413,7 @@ WRITE8_MEMBER(mc6846_device::write)
break;
case 3:
- LOG( "%s %f: mc6846 PORT write $%02X (mask=$%02X)\n", machine().describe_context(), space.machine().time().as_double(), data,m_ddr );
+ LOG( "%s %f: mc6846 PORT write $%02X (mask=$%02X)\n", machine().describe_context(), machine().time().as_double(), data,m_ddr );
if ( ! (m_pcr & 0x80) )
{
m_pdr = data;
@@ -422,12 +422,12 @@ WRITE8_MEMBER(mc6846_device::write)
if ( m_csr1_to_be_cleared && (m_csr & 2) )
{
m_csr &= ~2;
- LOG( "%s %f: mc6846 CP1 intr reset\n", machine().describe_context(), space.machine().time().as_double() );
+ LOG( "%s %f: mc6846 CP1 intr reset\n", machine().describe_context(), machine().time().as_double() );
}
if ( m_csr2_to_be_cleared && (m_csr & 4) )
{
m_csr &= ~4;
- LOG( "%s %f: mc6846 CP2 intr reset\n", machine().describe_context(), space.machine().time().as_double() );
+ LOG( "%s %f: mc6846 CP2 intr reset\n", machine().describe_context(), machine().time().as_double() );
}
m_csr1_to_be_cleared = 0;
m_csr2_to_be_cleared = 0;
@@ -443,7 +443,7 @@ WRITE8_MEMBER(mc6846_device::write)
"freq-cmp", "freq-cmp", "pulse-cmp", "pulse-cmp"
};
LOG( "%s %f: mc6846 TCR write $%02X reset=%i clock=%s scale=%i mode=%s out=%s\n",
- machine().describe_context(), space.machine().time().as_double(), data,
+ machine().describe_context(), machine().time().as_double(), data,
(data >> 7) & 1, (data & 0x40) ? "extern" : "sys",
(data & 0x40) ? 1 : 8, mode[ (data >> 1) & 7 ],
(data & 1) ? "enabled" : "0" );
@@ -477,7 +477,7 @@ WRITE8_MEMBER(mc6846_device::write)
case 7:
m_latch = ( ((uint16_t) m_time_MSB) << 8 ) + data;
- LOG( "%s %f: mc6846 COUNT write %i\n", machine().describe_context(), space.machine().time().as_double(), m_latch );
+ LOG( "%s %f: mc6846 COUNT write %i\n", machine().describe_context(), machine().time().as_double(), m_latch );
if (!(m_tcr & 0x38))
{
/* timer initialization */
diff --git a/src/devices/machine/mc6854.cpp b/src/devices/machine/mc6854.cpp
index c5789cd0e39..43e09eba5d2 100644
--- a/src/devices/machine/mc6854.cpp
+++ b/src/devices/machine/mc6854.cpp
@@ -816,7 +816,7 @@ READ8_MEMBER( mc6854_device::read )
case 0: /* status register 1 */
update_sr1( );
LOG( "%f %s mc6854_r: get SR1=$%02X (rda=%i,s2rq=%i,fd=%i,cts=%i,tu=%i,tdra=%i,irq=%i)\n",
- space.machine().time().as_double(), machine().describe_context(), m_sr1,
+ machine().time().as_double(), machine().describe_context(), m_sr1,
( m_sr1 & RDA) ? 1 : 0, ( m_sr1 & S2RQ) ? 1 : 0,
( m_sr1 & FD ) ? 1 : 0, ( m_sr1 & CTS ) ? 1 : 0,
( m_sr1 & TU ) ? 1 : 0, ( m_sr1 & TDRA) ? 1 : 0,
@@ -826,7 +826,7 @@ READ8_MEMBER( mc6854_device::read )
case 1: /* status register 2 */
update_sr2( );
LOG( "%f %s mc6854_r: get SR2=$%02X (ap=%i,fv=%i,ridle=%i,rabt=%i,err=%i,dcd=%i,ovrn=%i,rda2=%i)\n",
- space.machine().time().as_double(), machine().describe_context(), m_sr2,
+ machine().time().as_double(), machine().describe_context(), m_sr2,
( m_sr2 & AP ) ? 1 : 0, ( m_sr2 & FV ) ? 1 : 0,
( m_sr2 & RIDLE) ? 1 : 0, ( m_sr2 & RABT) ? 1 : 0,
( m_sr2 & ERR ) ? 1 : 0, ( m_sr2 & DCD ) ? 1 : 0,
@@ -838,7 +838,7 @@ READ8_MEMBER( mc6854_device::read )
{
uint8_t data = rfifo_pop( );
LOG( "%f %s mc6854_r: get data $%02X\n",
- space.machine().time().as_double(), machine().describe_context(), data );
+ machine().time().as_double(), machine().describe_context(), data );
return data;
}
@@ -857,7 +857,7 @@ WRITE8_MEMBER( mc6854_device::write )
case 0: /* control register 1 */
m_cr1 = data;
LOG( "%f %s mc6854_w: set CR1=$%02X (ac=%i,irq=%c%c,%sreset=%c%c)\n",
- space.machine().time().as_double(), machine().describe_context(), m_cr1,
+ machine().time().as_double(), machine().describe_context(), m_cr1,
AC ? 1 : 0,
RIE ? 'r' : '-', TIE ? 't' : '-',
DISCONTINUE ? "discontinue," : "",
@@ -893,7 +893,7 @@ WRITE8_MEMBER( mc6854_device::write )
/* control register 3 */
m_cr3 = data;
LOG( "%f %s mc6854_w: set CR3=$%02X (lcf=%i,aex=%i,idl=%i,fdse=%i,loop=%i,tst=%i,dtr=%i)\n",
- space.machine().time().as_double(), machine().describe_context(), m_cr3,
+ machine().time().as_double(), machine().describe_context(), m_cr3,
LCF ? (CEX ? 16 : 8) : 0, AEX ? 1 : 0,
IDL0 ? 0 : 1, FDSE ? 1 : 0, LOOP ? 1 : 0,
TST ? 1 : 0, DTR ? 1 : 0 );
@@ -910,7 +910,7 @@ WRITE8_MEMBER( mc6854_device::write )
/* control register 2 */
m_cr2 = data;
LOG( "%f %s mc6854_w: set CR2=$%02X (pse=%i,bytes=%i,fmidle=%i,%s,tlast=%i,clr=%c%c,rts=%i)\n",
- space.machine().time().as_double(), machine().describe_context(), m_cr2,
+ machine().time().as_double(), machine().describe_context(), m_cr2,
PSE ? 1 : 0, TWOBYTES ? 2 : 1, FMIDLE ? 1 : 0,
FCTDRA ? "fc" : "tdra", TLAST ? 1 : 0,
data & 0x20 ? 'r' : '-', data & 0x40 ? 't' : '-',
@@ -940,7 +940,7 @@ WRITE8_MEMBER( mc6854_device::write )
break;
case 2: /* transmitter data: continue data */
- LOG( "%f %smc6854_w: push data=$%02X\n", space.machine().time().as_double(), machine().describe_context(), data );
+ LOG( "%f %smc6854_w: push data=$%02X\n", machine().time().as_double(), machine().describe_context(), data );
tfifo_push( data );
break;
@@ -949,7 +949,7 @@ WRITE8_MEMBER( mc6854_device::write )
{
/* control register 4 */
m_cr4 = data;
- LOG( "%f %s mc6854_w: set CR4=$%02X (interframe=%i,tlen=%i,rlen=%i,%s%s)\n", space.machine().time().as_double(), machine().describe_context(), m_cr4,
+ LOG( "%f %s mc6854_w: set CR4=$%02X (interframe=%i,tlen=%i,rlen=%i,%s%s)\n", machine().time().as_double(), machine().describe_context(), m_cr4,
TWOINTER ? 2 : 1,
TWL, RWL,
ABT ? ( ABTEX ? "abort-ext," : "abort,") : "",
@@ -964,7 +964,7 @@ WRITE8_MEMBER( mc6854_device::write )
else
{
/* transmitter data: last data */
- LOG( "%f %s mc6854_w: push last-data=$%02X\n", space.machine().time().as_double(), machine().describe_context(), data );
+ LOG( "%f %s mc6854_w: push last-data=$%02X\n", machine().time().as_double(), machine().describe_context(), data );
tfifo_push( data );
tfifo_terminate( );
}
diff --git a/src/devices/machine/mos6530.cpp b/src/devices/machine/mos6530.cpp
index fab2f925d70..2b50efd9b47 100644
--- a/src/devices/machine/mos6530.cpp
+++ b/src/devices/machine/mos6530.cpp
@@ -199,7 +199,7 @@ WRITE8_MEMBER( mos6530_device::write )
if (offset & 0x04)
{
static const uint8_t timershift[4] = { 0, 3, 6, 10 };
- attotime curtime = space.machine().time();
+ attotime curtime = machine().time();
int64_t target;
/* A0-A1 contain the timer divisor */
diff --git a/src/devices/machine/roc10937.cpp b/src/devices/machine/roc10937.cpp
index 05d332106bb..966d28c38c9 100644
--- a/src/devices/machine/roc10937.cpp
+++ b/src/devices/machine/roc10937.cpp
@@ -180,7 +180,7 @@ void rocvfd_device::device_reset()
///////////////////////////////////////////////////////////////////////////
uint32_t rocvfd_device::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);
}
diff --git a/src/devices/machine/sdlc.cpp b/src/devices/machine/sdlc.cpp
index e3cc8cc99ed..870f8aba4e3 100644
--- a/src/devices/machine/sdlc.cpp
+++ b/src/devices/machine/sdlc.cpp
@@ -282,7 +282,7 @@ void sdlc_logger_device::log_frame(bool partial) const
fcs |= std::uint16_t(m_buffer[frame_bytes - 1]) << (8 - residual_bits);
if (residual_bits)
fcs |= (std::uint16_t(m_buffer[frame_bytes]) & ((1U << residual_bits) - 1U)) << (16 - residual_bits);
- fcs = ~BITSWAP16(fcs, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
+ fcs = ~bitswap<16>(fcs, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
util::stream_format(msg, " FCS=%04X", fcs);
if (!is_frame_check_good())
util::stream_format(msg, " (expected %04X)", m_expected_fcs);
diff --git a/src/devices/machine/smc91c9x.cpp b/src/devices/machine/smc91c9x.cpp
index b94f7a29d1f..2e9cb12932d 100644
--- a/src/devices/machine/smc91c9x.cpp
+++ b/src/devices/machine/smc91c9x.cpp
@@ -15,7 +15,8 @@
#include "emu.h"
#include "smc91c9x.h"
-
+// Needed for netdev_count???
+#include "osdnet.h"
/***************************************************************************
@@ -120,17 +121,26 @@ smc91c9x_device::smc91c9x_device(const machine_config &mconfig, device_type type
void smc91c9x_device::device_start()
{
+ // TX timer
+ m_tx_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(smc91c9x_device::send_frame), this));
+
m_irq_handler.resolve_safe();
+ // Set completion queues to max size to save properly
+ m_comp_rx.resize(ETHER_BUFFERS);
+ m_comp_tx.resize(ETHER_BUFFERS);
+
/* register ide states */
save_item(NAME(m_reg));
save_item(NAME(m_regmask));
save_item(NAME(m_irq_state));
- save_item(NAME(m_alloc_count));
- save_item(NAME(m_rx));
- save_item(NAME(m_tx));
+ save_item(NAME(m_buffer));
save_item(NAME(m_sent));
save_item(NAME(m_recd));
+ save_item(NAME(m_alloc_rx));
+ save_item(NAME(m_alloc_tx));
+ save_item(NAME(m_comp_rx));
+ save_item(NAME(m_comp_tx));
}
//-------------------------------------------------
@@ -141,37 +151,13 @@ void smc91c9x_device::device_reset()
{
std::fill(std::begin(m_reg), std::end(m_reg), 0);
- std::fill(std::begin(m_rx), std::end(m_rx), 0);
- std::fill(std::begin(m_tx), std::end(m_tx), 0);
-
std::fill(std::begin(m_regmask), std::end(m_regmask), 0);
m_irq_state = 0;
- m_alloc_count = 0;
- rx_fifo_out = 0;
- rx_fifo_in = 0;
-
- tx_fifo_out = 0;
- tx_fifo_in = 0;
m_sent = 0;
m_recd = 0;
- osd_list_network_adapters();
-
- unsigned char const *const mac = (const unsigned char *)get_mac();
-
- if (VERBOSE & LOG_GENERAL)
- {
- logerror("MAC : ");
- for (int i = 0; i < ETHERNET_ADDR_SIZE; i++)
- logerror("%.2X", mac[i]);
-
- logerror("\n");
- }
-
- set_promisc(true);
-
m_reg[EREG_TCR] = 0x0000; m_regmask[EREG_TCR] = 0x3d87;
m_reg[EREG_EPH_STATUS] = 0x0000; m_regmask[EREG_EPH_STATUS] = 0x0000;
m_reg[EREG_RCR] = 0x0000; m_regmask[EREG_RCR] = 0xc307;
@@ -188,11 +174,6 @@ void smc91c9x_device::device_reset()
m_reg[EREG_IA2_3] = 0x12F7; m_regmask[EREG_IA2_3] = 0xffff;
m_reg[EREG_IA4_5] = 0x5634; m_regmask[EREG_IA4_5] = 0xffff;
- // Interface MAC
- m_reg[EREG_IA0_1] = mac[0] | (mac[1]<<8);
- m_reg[EREG_IA2_3] = mac[2] | (mac[3]<<8);
- m_reg[EREG_IA4_5] = mac[4] | (mac[5]<<8);
-
m_reg[EREG_GENERAL_PURP] = 0x0000; m_regmask[EREG_GENERAL_PURP] = 0xffff;
m_reg[EREG_CONTROL] = 0x0100; m_regmask[EREG_CONTROL] = 0x68e7;
@@ -209,12 +190,52 @@ void smc91c9x_device::device_reset()
m_reg[EREG_MT4_5] = 0x0000; m_regmask[EREG_MT4_5] = 0xffff;
m_reg[EREG_MT6_7] = 0x0000; m_regmask[EREG_MT6_7] = 0xffff;
m_reg[EREG_MGMT] = 0x3030; m_regmask[EREG_MGMT] = 0x0f0f;
- m_reg[EREG_REVISION] = 0x3340; m_regmask[EREG_REVISION] = 0x0000;
+ m_reg[EREG_REVISION] = 0x3345; m_regmask[EREG_REVISION] = 0x0000;
m_reg[EREG_ERCV] = 0x331f; m_regmask[EREG_ERCV] = 0x009f;
update_ethernet_irq();
+ m_tx_timer->reset();
+
+ // Setup real network if enabled
+ m_network_available = false;
+ if (netdev_count()) {
+ m_network_available = true;
+ osd_list_network_adapters();
+ unsigned char const *const mac = (const unsigned char *)get_mac();
+ if (VERBOSE & LOG_GENERAL)
+ {
+ logerror("MAC : ");
+ for (int i = 0; i < ETHERNET_ADDR_SIZE; i++)
+ logerror("%.2X", mac[i]);
+
+ logerror("\n");
+ }
+
+ set_promisc(true);
+ // Interface MAC
+ m_reg[EREG_IA0_1] = mac[0] | (mac[1] << 8);
+ m_reg[EREG_IA2_3] = mac[2] | (mac[3] << 8);
+ m_reg[EREG_IA4_5] = mac[4] | (mac[5] << 8);
+ }
+
+ // Reset MMU
+ mmu_reset();
}
+void smc91c9x_device::mmu_reset()
+{
+ // Reset MMU allocations
+ m_alloc_rx = 0;
+ m_alloc_tx = 0;
+
+ // Reset completion FIFOs
+ m_comp_tx.clear();
+ m_comp_rx.clear();
+
+ // Flush fifos.
+ clear_tx_fifo();
+ clear_rx_fifo();
+}
DEFINE_DEVICE_TYPE(SMC91C94, smc91c94_device, "smc91c94", "SMC91C94 Ethernet Controller")
@@ -230,21 +251,41 @@ smc91c96_device::smc91c96_device(const machine_config &mconfig, const char *tag,
{
}
+bool smc91c9x_device::alloc_req(const int tx, int &packet_num)
+{
+ u32 curr_alloc = m_alloc_rx | m_alloc_tx;
+
+ for (int index = 0; index < ETHER_BUFFERS; index++) {
+ if (!(curr_alloc & (1 << index))) {
+ packet_num = index;
+ if (tx) {
+ m_alloc_tx |= 1 << index;
+ } else {
+ m_alloc_rx |= 1 << index;
+ }
+ return true;
+ }
+ }
+
+ return false;
+}
+
+void smc91c9x_device::alloc_release(const int packet_num)
+{
+ int clear_mask = ~(1 << packet_num);
+ m_alloc_tx &= clear_mask;
+ m_alloc_rx &= clear_mask;
+}
+
void smc91c9x_device::clear_tx_fifo()
{
- tx_fifo_in = 0;
- tx_fifo_out = 0;
- std::fill(std::begin(m_tx), std::end(m_tx), 0);
}
void smc91c9x_device::clear_rx_fifo()
{
- rx_fifo_in = 0;
- rx_fifo_out = 0;
- std::fill(std::begin(m_rx), std::end(m_rx), 0);
}
-int smc91c9x_device::is_broadcast(uint8_t mac_address[])
+int smc91c9x_device::is_broadcast(const uint8_t *mac_address)
{
int i;
@@ -262,28 +303,20 @@ int smc91c9x_device::is_broadcast(uint8_t mac_address[])
}
-int smc91c9x_device::ethernet_packet_is_for_me(const uint8_t mac_address[])
+int smc91c9x_device::ethernet_packet_is_for_me(const uint8_t *mac_address)
{
// tcpdump -i eth0 -q ether host 08:00:1e:01:ae:a5 or ether broadcast or ether dst 09:00:1e:00:00:00 or ether dst 09:00:1e:00:00:01
// wireshark filter: eth.addr eq 08:00:1e:01:ae:a5 or eth.dst eq ff:ff:ff:ff:ff:ff or eth.dst eq 09:00:1e:00:00:00 or eth.dst eq 09:00:1e:00:00:01
int i;
- uint8_t local_address[ETHERNET_ADDR_SIZE];
LOG("\n");
- local_address[0] = (m_reg[EREG_IA0_1]>>0) & 0xFF;
- local_address[1] = (m_reg[EREG_IA0_1]>>8) & 0xFF;
- local_address[2] = (m_reg[EREG_IA2_3]>>0) & 0xFF;
- local_address[3] = (m_reg[EREG_IA2_3]>>8) & 0xFF;
- local_address[4] = (m_reg[EREG_IA4_5]>>0) & 0xFF;
- local_address[5] = (m_reg[EREG_IA4_5]>>8) & 0xFF;
-
if (VERBOSE & LOG_GENERAL)
{
for ( i = 0 ; i < ETHERNET_ADDR_SIZE ; i++ )
{
- logerror("%.2X",local_address[i]);
+ logerror("%.2X", ((u8 *)&m_reg[EREG_IA0_1])[i]);
}
logerror("=");
for ( i = 0 ; i < ETHERNET_ADDR_SIZE ; i++ )
@@ -294,13 +327,13 @@ int smc91c9x_device::ethernet_packet_is_for_me(const uint8_t mac_address[])
}
// skip Ethernet broadcast packets if RECV_BROAD is not set
- if (is_broadcast((uint8_t *)mac_address))
+ if (is_broadcast(mac_address))
{
LOG(" -- Broadcast rx\n");
return 2;
}
- if (memcmp(mac_address, local_address, ETHERNET_ADDR_SIZE) == 0)
+ if (memcmp(mac_address, &m_reg[EREG_IA0_1], ETHERNET_ADDR_SIZE) == 0)
{
LOG(" -- Address Match\n");
return 1;
@@ -335,7 +368,7 @@ void smc91c9x_device::recv_cb(uint8_t *data, int length)
logerror(" - IsForMe %d - %d/0x%x bytes\n", isforme, length, length);
}
- if ( (length < ETHERNET_ADDR_SIZE || !isforme) && !(m_reg[EREG_RCR] & 0x0100) )
+ if ( (length < ETHERNET_ADDR_SIZE || !isforme) && !(m_reg[EREG_RCR] & 0x0102) )
{
LOG("\n");
@@ -345,13 +378,18 @@ void smc91c9x_device::recv_cb(uint8_t *data, int length)
/* signal a receive */
+ // Try to request a packet number
+ int packet_num;
+ if (!alloc_req(0, packet_num)) {
+ logerror("recv_cb: Couldn't allocate a receive packet\n");
+ return;
+ }
+
/* compute the packet length */
if ( ( length < ( ETHER_BUFFER_SIZE - ( 2+2+2 ) ) ) )
{
- uint8_t *const packet = &m_rx[ ( rx_fifo_in & ( ETHER_RX_BUFFERS - 1 ) ) * ETHER_BUFFER_SIZE];
-
- std::fill_n(packet, ETHER_BUFFER_SIZE, 0);
+ uint8_t *const packet = &m_buffer[ packet_num * ETHER_BUFFER_SIZE];
int dst = 0;
@@ -384,17 +422,15 @@ void smc91c9x_device::recv_cb(uint8_t *data, int length)
packet[dst++] = 0x40 | 0x00; // Control
}
- dst += 2;
+ //dst += 2;
dst &= 0x7FF;
packet[2] = (dst&0xFF);
packet[3] = (dst) >> 8;
- m_reg[EREG_INTERRUPT] |= EINT_RCV;
- m_reg[EREG_FIFO_PORTS] &= ~0x8000;
-
- rx_fifo_in = (rx_fifo_in + 1) & ( ETHER_RX_BUFFERS - 1 );
+ // Push packet number to rx completion fifo
+ m_comp_rx.push_back(packet_num);
}
else
{
@@ -416,12 +452,37 @@ void smc91c9x_device::recv_cb(uint8_t *data, int length)
void smc91c9x_device::update_ethernet_irq()
{
+ // Check tx completion fifo empty
+ if (m_comp_tx.empty()) {
+ m_reg[EREG_INTERRUPT] |= EINT_TX_EMPTY;
+ }
+ else {
+ m_reg[EREG_INTERRUPT] &= ~EINT_TX_EMPTY;
+ }
+ //if (m_comp_tx.empty()) {
+ // m_reg[EREG_INTERRUPT] &= ~EINT_TX;
+ //}
+ //else {
+ // m_reg[EREG_INTERRUPT] |= EINT_TX;
+ //}
+ // Check rx completion fifo empty
+ if (m_comp_rx.empty())
+ m_reg[EREG_INTERRUPT] &= ~EINT_RCV;
+ else
+ m_reg[EREG_INTERRUPT] |= EINT_RCV;
+
uint8_t const mask = m_reg[EREG_INTERRUPT] >> 8;
uint8_t const state = m_reg[EREG_INTERRUPT] & 0xff;
+
/* update the IRQ state */
- m_irq_state = ((mask & state) != 0);
- m_irq_handler(m_irq_state ? ASSERT_LINE : CLEAR_LINE);
+ uint8_t new_state = mask & state;
+ if (m_irq_state ^ new_state)
+ {
+ logerror("update_ethernet_irq: old: %02x new: %02x\n", m_irq_state, new_state);
+ m_irq_state = new_state;
+ m_irq_handler(m_irq_state ? ASSERT_LINE : CLEAR_LINE);
+ }
}
@@ -440,74 +501,102 @@ void smc91c9x_device::update_stats()
send_frame - push a frame to the interface
-------------------------------------------------*/
-int smc91c9x_device::send_frame()
+TIMER_CALLBACK_MEMBER(smc91c9x_device::send_frame)
{
- bool const is_broadcast = (m_tx[4] == 0xff && m_tx[5] == 0xff && m_tx[6] == 0xff &&
- m_tx[7] == 0xff && m_tx[8] == 0xff && m_tx[9] == 0xff);
+ const int packet_num = m_comp_tx.front();
+ uint8_t *const tx_buffer = &m_buffer[packet_num * ETHER_BUFFER_SIZE];
- tx_fifo_in = ( tx_fifo_in + 1 ) & ( ETHER_TX_BUFFERS - 1 );
-
- uint8_t *const tx_buffer = &m_tx[(tx_fifo_out & (ETHER_TX_BUFFERS-1))* ETHER_BUFFER_SIZE];
- tx_fifo_out = ((tx_fifo_out + 1)& (ETHER_TX_BUFFERS-1));
-
- /* update the EPH register and stuff it in the first transmit word */
+ /* update the EPH register */
m_reg[EREG_EPH_STATUS] = 0x0001;
- if (is_broadcast)
+ if (is_broadcast(&tx_buffer[4]))
m_reg[EREG_EPH_STATUS] |= 0x0040;
- tx_buffer[0] = m_reg[EREG_EPH_STATUS];
- tx_buffer[1] = m_reg[EREG_EPH_STATUS] >> 8;
-
- /* signal a transmit interrupt and mark the transmit buffer empty */
+ // Set Tx Empty interrupt
+ // TODO: If more than 1 packet is enqueued should wait for all to finish
+ //m_reg[EREG_INTERRUPT] |= EINT_TX_EMPTY;
m_reg[EREG_INTERRUPT] |= EINT_TX;
- m_reg[EREG_INTERRUPT] |= EINT_TX_EMPTY;
- m_reg[EREG_FIFO_PORTS] |= 0x0080;
+ //m_comp_tx.erase(m_comp_tx.begin());
m_sent++;
update_stats();
int buffer_len = ((tx_buffer[3] << 8) | tx_buffer[2]) & 0x7ff;
-
+ // Remove status, length, [pad], control
+ if (tx_buffer[buffer_len - 1] & 0x20)
+ buffer_len -= 5;
+ else
+ buffer_len -= 6;
+ // Add padding
+ if (buffer_len < 64 && (m_reg[EREG_TCR] & 0x0080)) {
+ while (buffer_len < 64)
+ tx_buffer[4 + buffer_len++] = 0x00;
+ }
if (VERBOSE & LOG_GENERAL)
{
logerror("TX: ");
- for (int i = 4; i < (4 + ETHERNET_ADDR_SIZE); i++)
- logerror("%.2X", tx_buffer[i]);
+ for (int i = 0; i < ETHERNET_ADDR_SIZE; i++)
+ logerror("%.2X", tx_buffer[4 + i]);
logerror(" ");
- for (int i = 0; i < (buffer_len - (ETHERNET_ADDR_SIZE + 4)); i++)
- logerror("%.2X", tx_buffer[4 + ETHERNET_ADDR_SIZE + i]);
+ for (int i = ETHERNET_ADDR_SIZE; i < buffer_len; i++)
+ logerror("%.2X", tx_buffer[4 + i]);
logerror("--- %d/0x%x bytes\n", buffer_len, buffer_len);
}
- if ( buffer_len > 4 )
+ if (buffer_len > 4)
{
- // odd or even sized frame ?
- if (tx_buffer[buffer_len-1] & 0x20)
- buffer_len--;
- else
- buffer_len -= 2;
+ if (m_link_unconnected)
+ {
+ // Set lost carrier
+ if (m_reg[EREG_TCR] & 0x0400)
+ {
+ m_reg[EREG_EPH_STATUS] |= 0x400;
+ // Clear Tx Enable on error
+ m_reg[EREG_TCR] &= ~0x1;
+ }
+
+ // Set signal quality error
+ if (m_reg[EREG_TCR] & 0x1000)
+ {
+ m_reg[EREG_EPH_STATUS] |= 0x20;
+ // Clear Tx Enable on error
+ m_reg[EREG_TCR] &= ~0x1;
+ }
- if (!(m_reg[EREG_TCR] & 0x2002))
+ // signal a no transmit
+ m_reg[EREG_INTERRUPT] &= ~EINT_TX;
+ // Set a ethernet phy status interrupt
+ m_reg[EREG_INTERRUPT] |= EINT_EPH;
+
+ // Flush fifos.
+ clear_tx_fifo();
+ clear_rx_fifo();
+ }
+ else
{
- // No loopback... Send the frame
- if ( !send(&tx_buffer[4], buffer_len-4) )
+ // Send the frame
+ if (!send(&tx_buffer[4], buffer_len))
{
// FIXME: failed to send the Ethernet packet
//logerror("failed to send Ethernet packet\n");
//LOG(this,("read_command_port(): !!! failed to send Ethernet packet"));
}
- }
- else
- {
- // TODO loopback mode : Push the frame to the RX FIFO.
+
+ // Loopback if loopback is set or fduplx is set
+ // TODO: Figure out correct size
+ // TODO: Check for addtional filter options for FDUPLX mode
+ if ((m_reg[EREG_TCR] & 0x2002) || (m_network_available && (m_reg[EREG_TCR] & 0x0800)))
+ recv_cb(&tx_buffer[4], buffer_len);
}
}
+ // Update status in the transmit word
+ tx_buffer[0] = m_reg[EREG_EPH_STATUS];
+ tx_buffer[1] = m_reg[EREG_EPH_STATUS] >> 8;
- return 0;
+ update_ethernet_irq();
}
/*-------------------------------------------------
@@ -524,10 +613,20 @@ void smc91c9x_device::process_command(uint16_t data)
case ECMD_ALLOCATE:
LOG(" ALLOCATE MEMORY FOR TX (%d)\n", (data & 7));
- m_reg[EREG_PNR_ARR] &= ~0xff00;
- m_reg[EREG_PNR_ARR] |= (m_alloc_count++ & 0x7F) << 8;
- m_reg[EREG_INTERRUPT] |= 0x0008;
- update_ethernet_irq();
+ {
+ int packet_num;
+ if (alloc_req(1, packet_num)) {
+ // Set ARR register
+ m_reg[EREG_PNR_ARR] &= ~0xff00;
+ m_reg[EREG_PNR_ARR] |= packet_num << 8;
+ m_reg[EREG_INTERRUPT] |= EINT_ALLOC;
+
+ update_ethernet_irq();
+ }
+ else {
+ logerror("ECMD_ALLOCATE: Couldn't allocate TX memory\n");
+ }
+ }
break;
case ECMD_RESET_MMU:
@@ -539,33 +638,24 @@ void smc91c9x_device::process_command(uint16_t data)
*/
LOG(" RESET MMU\n");
- // Flush fifos.
- clear_tx_fifo();
- clear_rx_fifo();
+ mmu_reset();
break;
case ECMD_REMOVE_TOPFRAME_TX:
LOG(" REMOVE FRAME FROM TX FIFO\n");
+ m_comp_tx.erase(m_comp_tx.begin());
+ // TODO: Should we clear TX_INT?
break;
+ case ECMD_REMOVE_RELEASE_TOPFRAME_RX:
+ LOG(" REMOVE AND RELEASE FRAME FROM RX FIFO (PACK_NUM=%d)\n", m_comp_rx.front());
+ // Release memory allocation
+ alloc_release(m_comp_rx.front());
+ // Fall through
case ECMD_REMOVE_TOPFRAME_RX:
LOG(" REMOVE FRAME FROM RX FIFO\n");
-
- case ECMD_REMOVE_RELEASE_TOPFRAME_RX:
- LOG(" REMOVE AND RELEASE FRAME FROM RX FIFO (RXI=%d RXO=%d)\n", rx_fifo_in & (ETHER_RX_BUFFERS - 1), rx_fifo_out & (ETHER_RX_BUFFERS - 1));
-
- m_reg[EREG_INTERRUPT] &= ~EINT_RCV;
-
- if ( (rx_fifo_in & ( ETHER_RX_BUFFERS - 1 ) ) != (rx_fifo_out & ( ETHER_RX_BUFFERS - 1 ) ) )
- rx_fifo_out = ( (rx_fifo_out + 1) & ( ETHER_RX_BUFFERS - 1 ) );
-
- if ( (rx_fifo_in & ( ETHER_RX_BUFFERS - 1 ) ) != (rx_fifo_out & ( ETHER_RX_BUFFERS - 1 ) ) )
- {
- m_reg[EREG_INTERRUPT] |= EINT_RCV;
- m_reg[EREG_FIFO_PORTS] &= ~0x8000;
- }
- else
- m_reg[EREG_FIFO_PORTS] |= 0x8000;
+ // remove entry from rx queue
+ m_comp_rx.erase(m_comp_rx.begin());
update_ethernet_irq();
m_recd++;
@@ -573,49 +663,29 @@ void smc91c9x_device::process_command(uint16_t data)
break;
case ECMD_RELEASE_PACKET:
- LOG(" RELEASE SPECIFIC PACKET\n");
+ {
+ const int packet_number = m_reg[EREG_PNR_ARR] & 0xff;
+ alloc_release(packet_number);
+ LOG(" RELEASE SPECIFIC PACKET %d\n", packet_number);
+ }
break;
case ECMD_ENQUEUE_PACKET:
LOG(" ENQUEUE TX PACKET\n");
- if ( m_link_unconnected )
+ if (m_reg[EREG_TCR] & 0x0001) // TX EN ?
{
- // Set lost carrier
- if ( m_reg[EREG_TCR] & 0x0400 )
- {
- m_reg[EREG_EPH_STATUS] |= 0x400;
- // Clear Tx Enable on error
- m_reg[EREG_TCR] &= ~0x1;
- }
-
- // Set signal quality error
- if ( m_reg[EREG_TCR] & 0x1000 )
- {
- m_reg[EREG_EPH_STATUS] |= 0x20;
- // Clear Tx Enable on error
- m_reg[EREG_TCR] &= ~0x1;
- }
-
- // signal a no transmit
- m_reg[EREG_INTERRUPT] &= ~EINT_TX;
- // Set a ethernet phy status interrupt
- m_reg[EREG_INTERRUPT] |= EINT_EPH;
-
- // Flush fifos.
- clear_tx_fifo();
- clear_rx_fifo();
+ const int packet_number = m_reg[EREG_PNR_ARR] & 0xff;
+ // Push packet number tx completion fifo
+ m_comp_tx.push_back(packet_number);
+ // Calculate transmit time
+ uint8_t *const tx_buffer = &m_buffer[packet_number * ETHER_BUFFER_SIZE];
+ int buffer_len = ((tx_buffer[3] << 8) | tx_buffer[2]) & 0x7ff;
+ buffer_len -= 6;
+ // ~16 Mbps
+ int usec = ((buffer_len * 8) >> 4) + 1;
+ m_tx_timer->adjust(attotime::from_usec(usec));
}
- else
- {
- if ( m_reg[EREG_TCR] & 0x0001 ) // TX EN ?
- {
- send_frame();
- }
- }
-
- update_ethernet_irq();
-
break;
case ECMD_RESET_FIFOS:
@@ -661,11 +731,24 @@ READ16_MEMBER( smc91c9x_device::read )
case EREG_PNR_ARR:
if ( ACCESSING_BITS_8_15 )
{
- m_reg[EREG_INTERRUPT] &= ~0x0008;
+ m_reg[EREG_INTERRUPT] &= ~EINT_ALLOC;
update_ethernet_irq();
}
break;
+ case EREG_FIFO_PORTS:
+ result = 0;
+ if (!m_comp_tx.empty())
+ result |= m_comp_tx.front();
+ else
+ result |= 0x80;
+ if (!m_comp_rx.empty())
+ result |= m_comp_rx.front() << 8;
+ else
+ result |= 0x80 << 8;
+ break;
+
+
case EREG_DATA_0: /* data register */
case EREG_DATA_1: /* data register */
{
@@ -673,13 +756,9 @@ READ16_MEMBER( smc91c9x_device::read )
int addr = m_reg[EREG_POINTER] & 0x7ff;
if ( m_reg[EREG_POINTER] & 0x8000 )
- {
- buffer = &m_rx[(rx_fifo_out & ( ETHER_RX_BUFFERS - 1 )) * ETHER_BUFFER_SIZE];
- }
+ buffer = &m_buffer[m_comp_rx.front() * ETHER_BUFFER_SIZE];
else
- {
- buffer = (uint8_t *)&m_tx[(tx_fifo_in & (ETHER_TX_BUFFERS-1))* ETHER_BUFFER_SIZE];;
- }
+ buffer = &m_buffer[(m_reg[EREG_PNR_ARR] & 0x1f) * ETHER_BUFFER_SIZE];;
result = buffer[addr++];
if ( ACCESSING_BITS_8_15 )
@@ -709,7 +788,7 @@ WRITE16_MEMBER( smc91c9x_device::write )
/* update the data generically */
- if (offset != 7 && offset < sizeof(m_reg))
+ if (offset != EREG_BANK && offset < sizeof(m_reg))
LOG("%s:smc91c9x_w(%s) = [%04X]<-%04X & (%04X & %04X)\n", machine().describe_context(), ethernet_regname[offset], offset, data, mem_mask , m_regmask[offset]);
mem_mask &= m_regmask[offset];
@@ -799,15 +878,12 @@ WRITE16_MEMBER( smc91c9x_device::write )
uint8_t *buffer;
int addr = m_reg[EREG_POINTER] & 0x7ff;
- if ( m_reg[EREG_POINTER] & 0x8000 )
- {
- buffer = &m_rx[(rx_fifo_out & ( ETHER_RX_BUFFERS - 1 )) * ETHER_BUFFER_SIZE];
- }
+ if (m_reg[EREG_POINTER] & 0x8000)
+ buffer = &m_buffer[m_comp_rx.front() * ETHER_BUFFER_SIZE];
else
- {
- buffer = (uint8_t *)&m_tx[(tx_fifo_in & (ETHER_TX_BUFFERS-1))* ETHER_BUFFER_SIZE];;
- }
+ buffer = &m_buffer[(m_reg[EREG_PNR_ARR] & 0x1f) * ETHER_BUFFER_SIZE];;
+ // TODO: Should be checking if incr is set
buffer[addr++] = data;
if ( ACCESSING_BITS_8_15 )
buffer[addr++] = data >> 8;
@@ -817,10 +893,12 @@ WRITE16_MEMBER( smc91c9x_device::write )
}
case EREG_INTERRUPT:
- m_reg[EREG_INTERRUPT] &= ~(data & 0x56);
- // Need to clear tx int here for vegas cartfury
- if ( m_reg[EREG_FIFO_PORTS] & 0x0080 )
+ // Pop tx fifo packet from completion fifo if clear tx int is set
+ if (m_reg[EREG_INTERRUPT] & data & EINT_TX) {
+ m_comp_tx.erase(m_comp_tx.begin());
m_reg[EREG_INTERRUPT] &= ~EINT_TX;
+ }
+ m_reg[EREG_INTERRUPT] &= ~(data & 0x56);
update_ethernet_irq();
break;
}
diff --git a/src/devices/machine/smc91c9x.h b/src/devices/machine/smc91c9x.h
index 9ff6229d466..cd4018c4f65 100644
--- a/src/devices/machine/smc91c9x.h
+++ b/src/devices/machine/smc91c9x.h
@@ -22,8 +22,10 @@ public:
DECLARE_READ16_MEMBER( read );
DECLARE_WRITE16_MEMBER( write );
+ TIMER_CALLBACK_MEMBER(send_frame);
virtual void recv_cb(uint8_t *data, int length) override;
+ void set_link_connected(bool connected) { m_link_unconnected = !connected; };
protected:
smc91c9x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
@@ -34,10 +36,25 @@ protected:
private:
static constexpr unsigned ETHER_BUFFER_SIZE = 2048;
- static constexpr unsigned ETHER_RX_BUFFERS = 16;
- static constexpr unsigned ETHER_TX_BUFFERS = 16;
+ // TODO: 96 device is larger
+ static constexpr unsigned ETHER_BUFFERS = 16;
static constexpr unsigned ETHERNET_ADDR_SIZE = 6;
+ // external network is present
+ bool m_network_available;
+
+ // mmu
+ // The bits in these vectors indicate a packet has been allocated
+ u32 m_alloc_rx, m_alloc_tx;
+ std::vector<int> m_comp_tx, m_comp_rx;
+ // Requests a packet allocation and returns true
+ // and sets the packet number if successful
+ bool alloc_req(const int tx, int &packet_num);
+ // Releases an allocation
+ void alloc_release(const int packet_num);
+ // Resets the MMU
+ void mmu_reset();
+
// internal state
devcb_write_line m_irq_handler;
@@ -51,24 +68,17 @@ private:
/* IRQ information */
uint8_t m_irq_state;
- /* allocate information */
- uint8_t m_alloc_count;
-
- /* transmit/receive FIFOs */
- uint32_t rx_fifo_out;
- uint32_t rx_fifo_in;
- uint8_t m_rx[ETHER_BUFFER_SIZE * ETHER_RX_BUFFERS];
-
- uint32_t tx_fifo_out;
- uint32_t tx_fifo_in;
- uint8_t m_tx[ETHER_BUFFER_SIZE * ETHER_TX_BUFFERS];
+ // Main memory
+ uint8_t m_buffer[ETHER_BUFFER_SIZE * ETHER_BUFFERS];
/* counters */
uint32_t m_sent;
uint32_t m_recd;
- int ethernet_packet_is_for_me(const uint8_t mac_address[]);
- int is_broadcast(uint8_t mac_address[]);
+ emu_timer* m_tx_timer;
+
+ int ethernet_packet_is_for_me(const uint8_t *mac_address);
+ int is_broadcast(const uint8_t *mac_address);
void update_ethernet_irq();
void update_stats();
@@ -77,8 +87,6 @@ private:
void clear_tx_fifo();
void clear_rx_fifo();
- int send_frame();
-
};
diff --git a/src/devices/machine/stvcd.cpp b/src/devices/machine/stvcd.cpp
index 87b3b9e344c..e3b0cefb6d8 100644
--- a/src/devices/machine/stvcd.cpp
+++ b/src/devices/machine/stvcd.cpp
@@ -100,7 +100,7 @@ int saturn_state::get_track_index(uint32_t fad)
int saturn_state::sega_cdrom_get_adr_control(cdrom_file *file, int track)
{
- return BITSWAP8(cdrom_get_adr_control(file, cur_track),3,2,1,0,7,6,5,4);
+ return bitswap<8>(cdrom_get_adr_control(file, cur_track),3,2,1,0,7,6,5,4);
}
void saturn_state::cr_standard_return(uint16_t cur_status)
diff --git a/src/devices/machine/tms6100.cpp b/src/devices/machine/tms6100.cpp
index d2fb40cef36..0728a511e8d 100644
--- a/src/devices/machine/tms6100.cpp
+++ b/src/devices/machine/tms6100.cpp
@@ -182,7 +182,7 @@ void tms6100_device::handle_command(u8 cmd)
// M58819S reads serial data reversed
if (m_reverse_bits)
- m_sa = BITSWAP8(m_sa,0,1,2,3,4,5,6,7);
+ m_sa = bitswap<8>(m_sa,0,1,2,3,4,5,6,7);
}
else
{
diff --git a/src/devices/machine/v3021.cpp b/src/devices/machine/v3021.cpp
index 3af94decb70..7909f56ee80 100644
--- a/src/devices/machine/v3021.cpp
+++ b/src/devices/machine/v3021.cpp
@@ -174,7 +174,7 @@ WRITE8_MEMBER( v3021_device::write )
break;
case 0xf: //Load Date
- //space.machine().base_datetime(m_systime);
+ //machine().base_datetime(m_systime);
break;
}
}
diff --git a/src/devices/machine/z80sio.cpp b/src/devices/machine/z80sio.cpp
index ddf951161b4..efe83ac2486 100644
--- a/src/devices/machine/z80sio.cpp
+++ b/src/devices/machine/z80sio.cpp
@@ -1128,7 +1128,7 @@ void z80sio_channel::sync_tx_sr_empty()
LOGTX("%s() Channel %c Transmit FCS '%04x' m_wr5:%02x\n", FUNCNAME, 'A' + m_index, m_tx_crc, m_wr5);
// just for fun, SDLC sends the FCS inverted in reverse bit order
- uint16_t const fcs(BITSWAP16(m_tx_crc, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15));
+ uint16_t const fcs(bitswap<16>(m_tx_crc, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15));
tx_setup(((m_wr4 & WR4_SYNC_MODE_MASK) == WR4_SYNC_MODE_SDLC) ? ~fcs : fcs, 16, 0, false, true);
// set the underrun flag so it will send sync next time
diff --git a/src/devices/sound/astrocde.cpp b/src/devices/sound/astrocde.cpp
index 1e8349bbd9d..36b0f76601a 100644
--- a/src/devices/sound/astrocde.cpp
+++ b/src/devices/sound/astrocde.cpp
@@ -87,7 +87,7 @@ void astrocade_device::device_start()
/* generate a bitswap table for the noise */
for (i = 0; i < 256; i++)
- m_bitswap[i] = BITSWAP8(i, 0,1,2,3,4,5,6,7);
+ m_bitswap[i] = bitswap<8>(i, 0,1,2,3,4,5,6,7);
/* allocate a stream for output */
m_stream = stream_alloc(0, 1, clock());
diff --git a/src/devices/sound/scsp.cpp b/src/devices/sound/scsp.cpp
index 9ca21c9db55..78ea2dc3d77 100644
--- a/src/devices/sound/scsp.cpp
+++ b/src/devices/sound/scsp.cpp
@@ -1056,9 +1056,9 @@ unsigned short scsp_device::r16(address_space &space, unsigned int addr)
*/
logerror("SCSP: Reading from EXTS register %08x\n",addr);
if(addr == 0xee0)
- v = space.machine().device<cdda_device>("cdda")->get_channel_volume(0);
+ v = machine().device<cdda_device>("cdda")->get_channel_volume(0);
if(addr == 0xee2)
- v = space.machine().device<cdda_device>("cdda")->get_channel_volume(1);
+ v = machine().device<cdda_device>("cdda")->get_channel_volume(1);
}
}
return v;
@@ -1376,7 +1376,7 @@ void scsp_device::exec_dma(address_space &space)
if(m_udata.data[0x1e/2] & 0x10)
{
popmessage("SCSP DMA IRQ triggered, contact MAMEdev");
- space.machine().device("audiocpu")->execute().set_input_line(DecodeSCI(SCIDMA),HOLD_LINE);
+ machine().device("audiocpu")->execute().set_input_line(DecodeSCI(SCIDMA),HOLD_LINE);
}
}
diff --git a/src/devices/sound/tms5110.cpp b/src/devices/sound/tms5110.cpp
index 5f7ee0bddb0..b7bef7f741e 100644
--- a/src/devices/sound/tms5110.cpp
+++ b/src/devices/sound/tms5110.cpp
@@ -1345,7 +1345,7 @@ void tmsprom_device::device_timer(emu_timer &timer, device_timer_id id, int para
if (ctrl & (1 << m_reset_bit))
m_address = 0;
- m_ctl_cb((offs_t)0, BITSWAP8(ctrl,0,0,0,0,m_ctl8_bit,
+ m_ctl_cb((offs_t)0, bitswap<8>(ctrl,0,0,0,0,m_ctl8_bit,
m_ctl4_bit,m_ctl2_bit,m_ctl1_bit));
m_pdc_cb((ctrl >> m_pdc_bit) & 0x01);
diff --git a/src/devices/sound/ymz770.cpp b/src/devices/sound/ymz770.cpp
index ae7a995ce21..491f0f8758e 100644
--- a/src/devices/sound/ymz770.cpp
+++ b/src/devices/sound/ymz770.cpp
@@ -14,10 +14,12 @@ TODO:
- verify if pan 100% correct
- sequencer timers and triggers not implemented (seems used in Deathsmiles ending tune)
774:
-- find out how volume/pan delayed transition works (used few times in orleg2 attract mode)
- 4 channel output
- Equalizer
-- Sequencer (not used)
+- volume/pan delayed transition (used few times during orleg2 attract mode)
+- channel pause/resume (seems not used in games)
+- sequencer pause/resume (seems not used in games)
+- sequencer off trigger (seems not used in games)
***************************************************************************/
@@ -26,8 +28,8 @@ TODO:
#include "mpeg_audio.h"
// device type definition
-DEFINE_DEVICE_TYPE(YMZ770, ymz770_device, "ymz770", "Yamaha YMZ770C-F AMMS-A")
-DEFINE_DEVICE_TYPE(YMZ774, ymz774_device, "ymz774", "Yamaha YMZ774-S AMMS2")
+DEFINE_DEVICE_TYPE(YMZ770, ymz770_device, "ymz770", "Yamaha YMZ770C AMMS-A")
+DEFINE_DEVICE_TYPE(YMZ774, ymz774_device, "ymz774", "Yamaha YMZ774 AMMS2")
//-------------------------------------------------
// ymz770_device - constructor
@@ -71,6 +73,8 @@ void ymz770_device::device_start()
}
for (auto & sequence : m_sequences)
sequence.is_playing = false;
+ for (auto & sqc : m_sqcs)
+ sqc.is_playing = false;
// register for save states
save_item(NAME(m_cur_reg));
@@ -109,6 +113,15 @@ void ymz770_device::device_start()
save_item(NAME(m_sequences[ch].loop), ch);
save_item(NAME(m_sequences[ch].bank), ch);
save_item(NAME(m_sequences[ch].is_playing), ch);
+ save_item(NAME(m_sequences[ch].offset), ch);
+ }
+ for (int ch = 0; ch < 8; ch++)
+ {
+ save_item(NAME(m_sqcs[ch].sqc), ch);
+ save_item(NAME(m_sqcs[ch].loop), ch);
+ save_item(NAME(m_sqcs[ch].is_playing), ch);
+ save_item(NAME(m_sqcs[ch].is_waiting), ch);
+ save_item(NAME(m_sqcs[ch].offset), ch);
}
}
@@ -144,6 +157,11 @@ void ymz770_device::device_reset()
sequence.bank = 0;
sequence.is_playing = false;
}
+ for (auto & sqc : m_sqcs)
+ {
+ sqc.is_playing = false;
+ sqc.loop = 0;
+ }
}
@@ -264,27 +282,18 @@ void ymz770_device::sequencer()
if (sequence.is_playing)
{
if (sequence.delay > 0)
- {
sequence.delay--;
- }
else
{
- int reg = *sequence.data++;
- uint8_t data = *sequence.data++;
+ int reg = get_rom_byte(sequence.offset++);
+ uint8_t data = get_rom_byte(sequence.offset++);
switch (reg)
{
case 0x0f:
if (sequence.loop)
- {
- // loop sequence
- uint8_t sqn = sequence.sequence;
- uint32_t pptr = get_seq_offs(sqn);
- sequence.data = &m_rom[pptr];
- }
+ sequence.offset = get_seq_offs(sequence.sequence); // loop sequence
else
- {
sequence.is_playing = false;
- }
break;
case 0x0e:
sequence.delay = 32 - 1;
@@ -310,9 +319,7 @@ WRITE8_MEMBER( ymz770_device::write )
internal_reg_write(m_cur_reg, data);
}
else
- {
m_cur_reg = data;
- }
}
@@ -339,6 +346,7 @@ void ymz770_device::internal_reg_write(uint8_t reg, uint8_t data)
// unused
default:
+ logerror("unimplemented write %02X %02X\n", reg, data);
break;
}
}
@@ -374,9 +382,7 @@ void ymz770_device::internal_reg_write(uint8_t reg, uint8_t data)
m_channels[ch].is_playing = true;
}
else
- {
m_channels[ch].is_playing = false;
- }
m_channels[ch].loop = (data & 1) ? 255 : 0;
break;
@@ -396,16 +402,12 @@ void ymz770_device::internal_reg_write(uint8_t reg, uint8_t data)
case 1:
if (data & 6)
{
- uint8_t sqn = m_sequences[ch].sequence;
- uint32_t pptr = get_seq_offs(sqn);
- m_sequences[ch].data = &m_rom[pptr];
+ m_sequences[ch].offset = get_seq_offs(m_sequences[ch].sequence);
m_sequences[ch].delay = 0;
m_sequences[ch].is_playing = true;
}
else
- {
m_sequences[ch].is_playing = false;
- }
m_sequences[ch].loop = data & 1;
break;
@@ -511,62 +513,90 @@ void ymz774_device::internal_reg_write(uint8_t reg, uint8_t data)
{
if (m_bank == 0)
{
- if (reg < 0xb0)
+ int sq = reg & 7;
+ switch (reg & 0xf8)
{
- int sq = reg & 7;
- switch (reg & 0xf8)
+ case 0x60: // sequence num H and L
+ case 0x68:
+ sq = (reg >> 1) & 7;
+ if (reg & 1)
+ m_sequences[sq].sequence = (m_sequences[sq].sequence & 0xff00) | data;
+ else
+ m_sequences[sq].sequence = (m_sequences[sq].sequence & 0x00ff) | ((data & 0x0f) << 8);
+ break;
+ case 0x70: // Start / Stop
+ if (data)
{
- case 0x60: // sequence num H and L
- case 0x68:
- sq = (reg >> 1) & 7;
- if (reg & 1)
- m_sequences[sq].sequence = (m_sequences[sq].sequence & 0xff00) | data;
- else
- m_sequences[sq].sequence = (m_sequences[sq].sequence & 0x00ff) | ((data & 0x0f) << 8); // TODO check if total number really upto 0x1000
- break;
- case 0x70: // Start / Stop
- if (data)
- {
- uint32_t pptr = get_seq_offs(m_sequences[sq].sequence);
- m_sequences[sq].data = &m_rom[pptr];
- m_sequences[sq].delay = 0;
- m_sequences[sq].is_playing = true;
- }
- else
- {
- m_sequences[sq].is_playing = false;
- }
- break;
- case 0x78: // Pause / Resume
- if (data) logerror("SEQ pause/resume unimplemented %02X %02X\n", reg, data);
- break;
- case 0x80: // Loop count, 0 = off, 255 - infinite
- m_sequences[sq].loop = data;
- break;
- case 0x88: // timer H and L
- case 0x90:
- sq = (reg >> 1) & 7;
- if (reg & 1)
- m_sequences[sq].timer = (m_sequences[sq].timer & 0xff00) | data;
- else
- m_sequences[sq].timer = (m_sequences[sq].timer & 0x00ff) | (data << 8);
- break;
- case 0x98: // Off trigger, bit4 = on/off, bits0-3 channel (end sequence when channel playback ends)
- if (data) logerror("SEQ Off trigger unimplemented %02X %02X\n", reg, data);
- break;
- case 0xa0: // stop channel mask H and L, what it for ? stop chanels immediatelly or when sequence ends (so far assuming later) ?
- case 0xa8:
- sq = (reg >> 1) & 7;
- if (reg & 1)
- m_sequences[sq].stopchan = (m_sequences[sq].stopchan & 0xff00) | data;
- else
- m_sequences[sq].stopchan = (m_sequences[sq].stopchan & 0x00ff) | (data << 8);
- break;
+ //logerror("SEQ %d start (%s)\n", sq, m_sequences[sq].is_playing ? "playing":"stopped");
+ m_sequences[sq].offset = get_seq_offs(m_sequences[sq].sequence);
+ m_sequences[sq].delay = 0;
+ m_sequences[sq].is_playing = true;
}
- }
- else
- {
- if (data) logerror("SQC unimplemented %02X %02X\n", reg, data);
+ else
+ {
+ //logerror("SEQ %d stop (%s)\n", sq, m_sequences[sq].is_playing ? "playing" : "stopped");
+ if (m_sequences[sq].is_playing)
+ for (int ch = 0; ch < 16; ch++)
+ if (m_sequences[sq].stopchan & (1 << ch))
+ m_channels[ch].is_playing = false;
+ m_sequences[sq].is_playing = false;
+ }
+ break;
+ case 0x78: // Pause / Resume
+ if (data) logerror("SEQ pause/resume unimplemented %02X %02X\n", reg, data);
+ break;
+ case 0x80: // Loop count, 0 = off, 255 - infinite
+ m_sequences[sq].loop = data;
+ break;
+ case 0x88: // timer H and L
+ case 0x90:
+ sq = (reg - 0x88) >> 1;
+ if (reg & 1)
+ m_sequences[sq].timer = (m_sequences[sq].timer & 0xff00) | data;
+ else
+ m_sequences[sq].timer = (m_sequences[sq].timer & 0x00ff) | (data << 8);
+ break;
+ case 0x98: // Off trigger, bit4 = on/off, bits0-3 channel (end sequence when channel playback ends)
+ if (data) logerror("SEQ Off trigger unimplemented %02X %02X\n", reg, data);
+ break;
+ case 0xa0: // stop channel mask H and L, what it for ? stop chanels immediatelly or when sequence ends (so far assuming later) ?
+ case 0xa8:
+ sq = (reg >> 1) & 7;
+ if (reg & 1)
+ m_sequences[sq].stopchan = (m_sequences[sq].stopchan & 0xff00) | data;
+ else
+ m_sequences[sq].stopchan = (m_sequences[sq].stopchan & 0x00ff) | (data << 8);
+ if (data) logerror("Check me: SEQ Stop Channels used %02X %02X\n", reg, data);
+ break;
+ case 0xb0:
+ m_sqcs[sq].sqc = data;
+ break;
+ case 0xb8:
+ if (data)
+ {
+ //logerror("SQC %d start (%s)\n", sq, m_sqcs[sq].is_playing ? "playing" : "stopped");
+ m_sqcs[sq].offset = get_sqc_offs(m_sqcs[sq].sqc);
+ m_sqcs[sq].is_playing = true;
+ m_sqcs[sq].is_waiting = false;
+ }
+ else
+ {
+ //logerror("SQC %d stop (%s)\n", sq, m_sqcs[sq].is_playing ? "playing" : "stopped");
+ m_sqcs[sq].is_playing = false;
+ // stop SEQ too, is this right ? at least kof98umh never manually stop SEQ
+ if (m_sequences[sq].is_playing)
+ for (int ch = 0; ch < 16; ch++)
+ if (m_sequences[sq].stopchan & (1 << ch))
+ m_channels[ch].is_playing = false;
+ m_sequences[sq].is_playing = false;
+ }
+ break;
+ case 0xc0:
+ m_sqcs[sq].loop = data;
+ break;
+ default:
+ logerror("unimplemented write %02X %02X\n", reg, data);
+ break;
}
}
// else bank1 - Equalizer control
@@ -596,7 +626,31 @@ void ymz774_device::sequencer()
{
for (int i = 0; i < 8; i++)
{
+ auto & sqc = m_sqcs[i];
auto & sequence = m_sequences[i];
+
+ if (sqc.is_playing && !sqc.is_waiting)
+ {
+ sequence.sequence = ((get_rom_byte(sqc.offset) << 8) | get_rom_byte(sqc.offset + 1)) & 0xfff;
+ sqc.offset += 2;
+ sequence.loop = get_rom_byte(sqc.offset++);
+ sequence.offset = get_seq_offs(sequence.sequence);
+ sequence.delay = 0;
+ sequence.is_playing = true;
+ sqc.is_waiting = true;
+ if (get_rom_byte(sqc.offset++) == 0xff)
+ {
+ if (sqc.loop)
+ {
+ if (sqc.loop != 255)
+ --sqc.loop;
+ sqc.offset = get_sqc_offs(sqc.sqc);
+ }
+ else
+ sqc.is_playing = false;
+ }
+ }
+
if (sequence.is_playing)
{
if (sequence.delay > 0)
@@ -605,8 +659,8 @@ void ymz774_device::sequencer()
}
else
{
- int reg = *sequence.data++;
- uint8_t data = *sequence.data++;
+ int reg = get_rom_byte(sequence.offset++);
+ uint8_t data = get_rom_byte(sequence.offset++);
switch (reg)
{
case 0xff: // end
@@ -617,12 +671,12 @@ void ymz774_device::sequencer()
{
if (sequence.loop != 255)
--sequence.loop;
- uint32_t pptr = get_seq_offs(sequence.sequence);
- sequence.data = &m_rom[pptr];
+ sequence.offset = get_seq_offs(sequence.sequence);
}
else
{
sequence.is_playing = false;
+ sqc.is_waiting = false;
}
break;
case 0xfe: // timer delay
diff --git a/src/devices/sound/ymz770.h b/src/devices/sound/ymz770.h
index b640d780ef5..9fb38946dea 100644
--- a/src/devices/sound/ymz770.h
+++ b/src/devices/sound/ymz770.h
@@ -55,6 +55,7 @@ protected:
virtual uint32_t get_phrase_offs(int phrase) { return m_rom[(4 * phrase) + 1] << 16 | m_rom[(4 * phrase) + 2] << 8 | m_rom[(4 * phrase) + 3]; };
virtual uint32_t get_seq_offs(int sqn) { return m_rom[(4 * sqn) + 1 + 0x400] << 16 | m_rom[(4 * sqn) + 2 + 0x400] << 8 | m_rom[(4 * sqn) + 3 + 0x400]; };
virtual void sequencer();
+ uint8_t get_rom_byte(uint32_t offset) { return m_rom[offset % m_rom.bytes()]; }; // need optimise or its good as is ?
ymz770_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t sclock);
@@ -100,13 +101,22 @@ protected:
uint16_t timer;
uint16_t stopchan;
uint8_t loop;
- uint8_t *data;
+ uint32_t offset;
uint8_t bank;
bool is_playing;
};
+ struct ymz_sqc
+ {
+ uint8_t sqc;
+ uint8_t loop;
+ uint32_t offset;
+ bool is_playing;
+ bool is_waiting;
+ };
ymz_channel m_channels[16];
ymz_sequence m_sequences[8];
+ ymz_sqc m_sqcs[8];
};
// ======================> ymz774_device
@@ -122,6 +132,7 @@ protected:
virtual void internal_reg_write(uint8_t reg, uint8_t data) override;
virtual uint32_t get_phrase_offs(int phrase) override { int ph = phrase * 4; return ((m_rom[ph] & 0x0f) << 24 | m_rom[ph + 1] << 16 | m_rom[ph + 2] << 8 | m_rom[ph + 3]) * 2; };
virtual uint32_t get_seq_offs(int sqn) override { int sq = sqn * 4 + 0x2000; return ((m_rom[sq] & 0x0f) << 24 | m_rom[sq + 1] << 16 | m_rom[sq + 2] << 8 | m_rom[sq + 3]) * 2; };
+ uint32_t get_sqc_offs(int sqc) { int sq = sqc * 4 + 0x6000; return ((m_rom[sq] & 0x0f) << 24 | m_rom[sq + 1] << 16 | m_rom[sq + 2] << 8 | m_rom[sq + 3]) * 2; };
virtual void sequencer() override;
private:
int m_bank;
diff --git a/src/devices/video/ef9340_1.cpp b/src/devices/video/ef9340_1.cpp
index 484cc67cfbf..54c6f651dac 100644
--- a/src/devices/video/ef9340_1.cpp
+++ b/src/devices/video/ef9340_1.cpp
@@ -213,7 +213,7 @@ void ef9340_1_device::ef9341_write( uint8_t command, uint8_t b, uint8_t data )
if ( b >= 0xa0 )
{
- m_ef934x_ext_char_ram[ ( ( a & 0x80 ) << 3 ) | external_chargen_address( b, slice ) ] = BITSWAP8(m_ef9341.TA,0,1,2,3,4,5,6,7);
+ m_ef934x_ext_char_ram[ ( ( a & 0x80 ) << 3 ) | external_chargen_address( b, slice ) ] = bitswap<8>(m_ef9341.TA,0,1,2,3,4,5,6,7);
}
// Increment slice number
diff --git a/src/devices/video/epic12.cpp b/src/devices/video/epic12.cpp
index b0ca59b160a..71fbe5b80a6 100644
--- a/src/devices/video/epic12.cpp
+++ b/src/devices/video/epic12.cpp
@@ -828,7 +828,7 @@ READ32_MEMBER( epic12_device::blitter_r )
return 0xffffffff;
case 0x50:
- return space.machine().root_device().ioport(":DSW")->read();
+ return machine().root_device().ioport(":DSW")->read();
default:
logerror("unknownblitter_r %08x %08x\n", offset*4, mem_mask);
@@ -852,7 +852,7 @@ READ32_MEMBER( epic12_device::blitter_r_unsafe )
return 0xffffffff;
case 0x50:
- return space.machine().root_device().ioport(":DSW")->read();
+ return machine().root_device().ioport(":DSW")->read();
default:
logerror("unknownblitter_r %08x %08x\n", offset*4, mem_mask);
diff --git a/src/devices/video/imagetek_i4100.cpp b/src/devices/video/imagetek_i4100.cpp
index 1897f5951fc..ea9d1ad46ff 100644
--- a/src/devices/video/imagetek_i4100.cpp
+++ b/src/devices/video/imagetek_i4100.cpp
@@ -623,7 +623,7 @@ void imagetek_i4100_device::blt_write( address_space &space, const int tmap, con
case 2: vram_1_w(space, offs, data, mask); break;
case 3: vram_2_w(space, offs, data, mask); break;
}
-// logerror("%s : Blitter %X] %04X <- %04X & %04X\n", space.machine().describe_context(), tmap, offs, data, mask);
+// logerror("%s : Blitter %X] %04X <- %04X & %04X\n", machine().describe_context(), tmap, offs, data, mask);
}
/***************************************************************************
diff --git a/src/devices/video/pc_vga.cpp b/src/devices/video/pc_vga.cpp
index daf617a445b..249ebc6a0fd 100644
--- a/src/devices/video/pc_vga.cpp
+++ b/src/devices/video/pc_vga.cpp
@@ -1611,8 +1611,8 @@ READ8_MEMBER(vga_device::vga_crtc_r)
vga.attribute.state = 0;
data = 0;
- hsync = space.machine().first_screen()->hblank() & 1;
- vsync = vga_vblank(); //space.machine().first_screen()->vblank() & 1;
+ hsync = machine().first_screen()->hblank() & 1;
+ vsync = vga_vblank(); //machine().first_screen()->vblank() & 1;
data |= (hsync | vsync) & 1; // DD - display disable register
data |= (vsync & 1) << 3; // VRetrace register
@@ -1663,10 +1663,10 @@ WRITE8_MEMBER(vga_device::vga_crtc_w)
}
crtc_reg_write(vga.crtc.index,data);
- //space.machine().first_screen()->update_partial(space.machine().first_screen()->vpos());
+ //machine().first_screen()->update_partial(machine().first_screen()->vpos());
#if 0
if((vga.crtc.index & 0xfe) != 0x0e)
- printf("%02x %02x %d\n",vga.crtc.index,data,space.machine().first_screen()->vpos());
+ printf("%02x %02x %d\n",vga.crtc.index,data,machine().first_screen()->vpos());
#endif
break;
@@ -2591,7 +2591,7 @@ WRITE8_MEMBER(tseng_vga_device::port_03d0_w)
vga.crtc.data[vga.crtc.index] = data;
tseng_crtc_reg_write(vga.crtc.index,data);
//if((vga.crtc.index & 0xfe) != 0x0e)
- // printf("%02x %02x %d\n",vga.crtc.index,data,space.machine().first_screen()->vpos());
+ // printf("%02x %02x %d\n",vga.crtc.index,data,machine().first_screen()->vpos());
break;
case 8:
et4k.reg_3d8 = data;
diff --git a/src/devices/video/tms34061.cpp b/src/devices/video/tms34061.cpp
index 7947dd59875..e2d47731921 100644
--- a/src/devices/video/tms34061.cpp
+++ b/src/devices/video/tms34061.cpp
@@ -191,7 +191,7 @@ void tms34061_device::register_w(address_space &space, offs_t offset, uint8_t da
}
/* log it */
- LOG("%s:tms34061 %s = %04x\n", space.machine().describe_context(), regnames[regnum], m_regs[regnum]);
+ LOG("%s:tms34061 %s = %04x\n", machine().describe_context(), regnames[regnum], m_regs[regnum]);
/* update the state of things */
switch (regnum)
@@ -269,7 +269,7 @@ uint8_t tms34061_device::register_r(address_space &space, offs_t offset)
}
/* log it */
- LOG("%s:tms34061 %s read = %04X\n", space.machine().describe_context(), regnames[regnum], result);
+ LOG("%s:tms34061 %s read = %04X\n", machine().describe_context(), regnames[regnum], result);
return (offset & 0x02) ? (result >> 8) : result;
}
@@ -376,7 +376,7 @@ void tms34061_device::xypixel_w(address_space &space, int offset, uint8_t data)
/* mask to the VRAM size */
pixeloffs &= m_vrammask;
- LOG("%s:tms34061 xy (%04x) = %02x/%02x\n", space.machine().describe_context(), pixeloffs, data, m_latchdata);
+ LOG("%s:tms34061 xy (%04x) = %02x/%02x\n", machine().describe_context(), pixeloffs, data, m_latchdata);
/* set the pixel data */
m_vram[pixeloffs] = data;
@@ -432,7 +432,7 @@ void tms34061_device::write(address_space &space, int col, int row, int func, ui
offs = ((row << m_rowshift) | col) & m_vrammask;
if (m_regs[TMS34061_CONTROL2] & 0x0040)
offs |= (m_regs[TMS34061_CONTROL2] & 3) << 16;
- LOG("%s:tms34061 direct (%04x) = %02x/%02x\n", space.machine().describe_context(), offs, data, m_latchdata);
+ LOG("%s:tms34061 direct (%04x) = %02x/%02x\n", machine().describe_context(), offs, data, m_latchdata);
if (m_vram[offs] != data || m_latchram[offs] != m_latchdata)
{
m_vram[offs] = data;
@@ -446,7 +446,7 @@ void tms34061_device::write(address_space &space, int col, int row, int func, ui
if (m_regs[TMS34061_CONTROL2] & 0x0040)
offs |= (m_regs[TMS34061_CONTROL2] & 3) << 16;
offs &= m_vrammask;
- LOG("%s:tms34061 shiftreg write (%04x)\n", space.machine().describe_context(), offs);
+ LOG("%s:tms34061 shiftreg write (%04x)\n", machine().describe_context(), offs);
memcpy(&m_vram[offs], m_shiftreg, (size_t)1 << m_rowshift);
memset(&m_latchram[offs], m_latchdata, (size_t)1 << m_rowshift);
@@ -458,14 +458,14 @@ void tms34061_device::write(address_space &space, int col, int row, int func, ui
if (m_regs[TMS34061_CONTROL2] & 0x0040)
offs |= (m_regs[TMS34061_CONTROL2] & 3) << 16;
offs &= m_vrammask;
- LOG("%s:tms34061 shiftreg read (%04x)\n", space.machine().describe_context(), offs);
+ LOG("%s:tms34061 shiftreg read (%04x)\n", machine().describe_context(), offs);
m_shiftreg = &m_vram[offs];
break;
/* log anything else */
default:
- logerror("%s:Unsupported TMS34061 function %d\n", space.machine().describe_context(), func);
+ logerror("%s:Unsupported TMS34061 function %d\n", machine().describe_context(), func);
break;
}
}
@@ -519,7 +519,7 @@ uint8_t tms34061_device::read(address_space &space, int col, int row, int func)
/* log anything else */
default:
- logerror("%s:Unsupported TMS34061 function %d\n", space.machine().describe_context(),
+ logerror("%s:Unsupported TMS34061 function %d\n", machine().describe_context(),
func);
break;
}
diff --git a/src/emu/debug/debugcpu.cpp b/src/emu/debug/debugcpu.cpp
index 17c26191186..3c58a2168c5 100644
--- a/src/emu/debug/debugcpu.cpp
+++ b/src/emu/debug/debugcpu.cpp
@@ -2711,7 +2711,7 @@ void device_debug::watchpoint_update_flags(address_space &space)
void device_debug::watchpoint_check(address_space& space, int type, offs_t address, u64 value_to_write, u64 mem_mask)
{
- space.machine().debugger().cpu().watchpoint_check(space, type, address, value_to_write, mem_mask, m_wplist);
+ m_device.machine().debugger().cpu().watchpoint_check(space, type, address, value_to_write, mem_mask, m_wplist);
}
void debugger_cpu::watchpoint_check(address_space& space, int type, offs_t address, u64 value_to_write, u64 mem_mask, std::vector<device_debug::watchpoint *> &wplist)
@@ -2829,7 +2829,7 @@ void device_debug::hotspot_check(address_space &space, offs_t address)
// if the bottom of the list is over the threshold, print it
hotspot_entry &spot = m_hotspots[m_hotspots.size() - 1];
if (spot.m_count > m_hotspot_threshhold)
- space.machine().debugger().console().printf("Hotspot @ %s %08X (PC=%08X) hit %d times (fell off bottom)\n", space.name(), spot.m_access, spot.m_pc, spot.m_count);
+ m_device.machine().debugger().console().printf("Hotspot @ %s %08X (PC=%08X) hit %d times (fell off bottom)\n", space.name(), spot.m_access, spot.m_pc, spot.m_count);
// move everything else down and insert this one at the top
memmove(&m_hotspots[1], &m_hotspots[0], sizeof(m_hotspots[0]) * (m_hotspots.size() - 1));
diff --git a/src/emu/device.h b/src/emu/device.h
index 211da59cb38..38b20ba3111 100644
--- a/src/emu/device.h
+++ b/src/emu/device.h
@@ -635,7 +635,6 @@ public:
device_t &device() { return m_device; }
const device_t &device() const { return m_device; }
operator device_t &() { return m_device; }
- operator device_t *() { return &m_device; }
// iteration helpers
device_interface *interface_next() const { return m_interface_next; }
diff --git a/src/emu/drivers/xtal.h b/src/emu/drivers/xtal.h
index 14ef6e9528b..b2cbaeb5fb9 100644
--- a/src/emu/drivers/xtal.h
+++ b/src/emu/drivers/xtal.h
@@ -176,6 +176,7 @@ enum
XTAL_15_92MHz = 15920000, /* HP Integral PC */
XTAL_15_9744MHz = 15974400, /* Osborne 1 (9600 * 52 * 32) */
XTAL_16MHz = 16000000, /* Extremely common, used on 100's of PCBs */
+ XTAL_16_128MHz = 16128000, /* Fujitsu FM-7 */
XTAL_16_384MHz = 16384000,
XTAL_16_4MHz = 16400000, /* MS 6102 */
XTAL_16_5888MHz = 16588800, /* SM 7238 */
@@ -203,6 +204,7 @@ enum
XTAL_20_079MHz = 20790000, /* Blockade-hardware Gremlin games */
XTAL_20_625MHz = 20625000, /* SM 7238 */
XTAL_21MHz = 21000000, /* Lock-On pixel clock */
+ XTAL_21_0526MHz = 21052600, /* NEC PC-98xx pixel clock */
XTAL_21_3MHz = 21300000,
XTAL_21_4772MHz = 21477272, /* BMC bowling, some Data East 90's games, Vtech Socrates; (6x NTSC subcarrier) */
XTAL_22MHz = 22000000,
@@ -218,6 +220,7 @@ enum
XTAL_24_8832MHz = 24883200, /* DEC VT100 */
XTAL_25MHz = 25000000, /* Namco System 22, Taito GNET, Dogyuun h/w */
XTAL_25_1748MHz = 25174800, /* Sega System 16A/16B (1600x NTSC line rate) */
+ XTAL_25_2MHz = 25200000, /* Tektronix 4404 video clock */
XTAL_25_39836MHz = 25398360, /* Tandberg TDV 2324 */
XTAL_25_447MHz = 25447000, /* Namco EVA3A (Funcube2) */
XTAL_25_590906MHz = 25590906, /* Atari Jaguar NTSC */
@@ -246,6 +249,7 @@ enum
XTAL_30_4761MHz = 30476100, /* Taito JC */
XTAL_30_8MHz = 30800000, /* 15IE-00-013 */
XTAL_31_684MHz = 31684000, /* TeleVideo TVI-955 132-column display clock */
+ XTAL_31_9488MHz = 31948800, /* NEC PC-88xx, PC-98xx */
XTAL_32MHz = 32000000,
XTAL_32_22MHz = 32220000, /* Typically used on 90's Data East PCBs (close to 9x NTSC subcarrier which is 32.215905Mhz*/
XTAL_32_5304MHz = 32530400, /* Seta 2 */
@@ -260,6 +264,7 @@ enum
XTAL_39_3216MHz = 39321600, /* Sun 2/120 */
XTAL_40MHz = 40000000,
XTAL_42MHz = 42000000, /* BMC A-00211 - Popo Bear */
+ XTAL_42_1052MHz = 42105200, /* NEC PC-88xx */
XTAL_42_9545MHz = 42954545, /* CPS3 (12x NTSC subcarrier)*/
XTAL_43_320MHz = 43320000, /* DEC VT420 */
XTAL_44_1MHz = 44100000, /* Subsino's Bishou Jan */
diff --git a/src/emu/emucore.h b/src/emu/emucore.h
index 212bf31c849..b6d1e7b3154 100644
--- a/src/emu/emucore.h
+++ b/src/emu/emucore.h
@@ -255,6 +255,7 @@ template <typename T, typename U, typename... V> constexpr T bitswap(T val, U b,
return (BIT(val, b) << sizeof...(c)) | bitswap(val, c...);
}
+// explicit version that checks number of bit position arguments
template <unsigned B, typename T, typename... U> T bitswap(T val, U... b)
{
static_assert(sizeof...(b) == B, "wrong number of bits");
@@ -262,18 +263,6 @@ template <unsigned B, typename T, typename... U> T bitswap(T val, U... b)
return bitswap(val, b...);
}
-// explicit versions that check number of bit position arguments
-template <typename T, typename... U> constexpr T BITSWAP4(T val, U... b) { return bitswap<4U>(val, b...); }
-template <typename T, typename... U> constexpr T BITSWAP8(T val, U... b) { return bitswap<8U>(val, b...); }
-template <typename T, typename... U> constexpr T BITSWAP12(T val, U... b) { return bitswap<12U>(val, b...); }
-template <typename T, typename... U> constexpr T BITSWAP16(T val, U... b) { return bitswap<16U>(val, b...); }
-template <typename T, typename... U> constexpr T BITSWAP24(T val, U... b) { return bitswap<24U>(val, b...); }
-template <typename T, typename... U> constexpr T BITSWAP32(T val, U... b) { return bitswap<32U>(val, b...); }
-template <typename T, typename... U> constexpr T BITSWAP40(T val, U... b) { return bitswap<40U>(val, b...); }
-template <typename T, typename... U> constexpr T BITSWAP48(T val, U... b) { return bitswap<48U>(val, b...); }
-template <typename T, typename... U> constexpr T BITSWAP56(T val, U... b) { return bitswap<56U>(val, b...); }
-template <typename T, typename... U> constexpr T BITSWAP64(T val, U... b) { return bitswap<64U>(val, b...); }
-
//**************************************************************************
diff --git a/src/emu/emumem.cpp b/src/emu/emumem.cpp
index bbbf3b59fda..ee275044b4b 100644
--- a/src/emu/emumem.cpp
+++ b/src/emu/emumem.cpp
@@ -2348,7 +2348,7 @@ void address_space::allocate_memory()
int tail = blocklist.size();
for (address_map_entry &entry : m_map->m_entrylist)
if (entry.m_memory != nullptr)
- blocklist.push_back(std::make_unique<memory_block>(*this, entry.m_addrstart, entry.m_addrend, entry.m_memory));
+ blocklist.push_back(std::make_unique<memory_block>(machine(), *this, entry.m_addrstart, entry.m_addrend, entry.m_memory));
// loop over all blocks just allocated and assign pointers from them
address_map_entry *unassigned = nullptr;
@@ -2395,7 +2395,7 @@ void address_space::allocate_memory()
// we now have a block to allocate; do it
offs_t curaddrstart = curblockstart * MEMORY_BLOCK_CHUNK;
offs_t curaddrend = curblockend * MEMORY_BLOCK_CHUNK + (MEMORY_BLOCK_CHUNK - 1);
- auto block = std::make_unique<memory_block>(*this, curaddrstart, curaddrend);
+ auto block = std::make_unique<memory_block>(machine(), *this, curaddrstart, curaddrend);
// assign memory that intersected the new block
unassigned = block_assign_intersecting(curaddrstart, curaddrend, block.get()->data());
@@ -2721,7 +2721,7 @@ void address_space::install_ram_generic(offs_t addrstart, offs_t addrend, offs_t
{
if (machine().phase() >= machine_phase::RESET)
fatalerror("Attempted to call install_ram_generic() after initialization time without a baseptr!\n");
- auto block = std::make_unique<memory_block>(*this, addrstart, addrend);
+ auto block = std::make_unique<memory_block>(machine(), *this, addrstart, addrend);
bank.set_base(block.get()->data());
manager().m_blocklist.push_back(std::move(block));
}
@@ -2751,7 +2751,7 @@ void address_space::install_ram_generic(offs_t addrstart, offs_t addrend, offs_t
{
if (machine().phase() >= machine_phase::RESET)
fatalerror("Attempted to call install_ram_generic() after initialization time without a baseptr!\n");
- auto block = std::make_unique<memory_block>(*this, address_to_byte(addrstart), address_to_byte_end(addrend));
+ auto block = std::make_unique<memory_block>(machine(), *this, address_to_byte(addrstart), address_to_byte_end(addrend));
bank.set_base(block.get()->data());
manager().m_blocklist.push_back(std::move(block));
}
@@ -3013,7 +3013,7 @@ memory_bank &address_space::bank_find_or_allocate(const char *tag, offs_t addrst
}
// if no tag, create a unique one
- auto bank = std::make_unique<memory_bank>(*this, banknum, addrstart, addrend, tag);
+ auto bank = std::make_unique<memory_bank>(machine(), *this, banknum, addrstart, addrend, tag);
std::string temptag;
if (tag == nullptr) {
temptag = string_format("anon_%p", bank.get());
@@ -4218,8 +4218,8 @@ template class direct_read_data<-3>;
// memory_block - constructor
//-------------------------------------------------
-memory_block::memory_block(address_space &space, offs_t addrstart, offs_t addrend, void *memory)
- : m_machine(space.machine()),
+memory_block::memory_block(running_machine &_machine, address_space &space, offs_t addrstart, offs_t addrend, void *memory)
+ : m_machine(_machine),
m_space(space),
m_addrstart(addrstart),
m_addrend(addrend),
@@ -4252,7 +4252,7 @@ memory_block::memory_block(address_space &space, offs_t addrstart, offs_t addren
{
int bytes_per_element = space.data_width() / 8;
std::string name = string_format("%08x-%08x", addrstart, addrend);
- space.machine().save().save_memory(&space.device(), "memory", space.device().tag(), space.spacenum(), name.c_str(), m_data, bytes_per_element, (u32)length / bytes_per_element);
+ machine().save().save_memory(&space.device(), "memory", space.device().tag(), space.spacenum(), name.c_str(), m_data, bytes_per_element, (u32)length / bytes_per_element);
}
}
@@ -4275,8 +4275,8 @@ memory_block::~memory_block()
// memory_bank - constructor
//-------------------------------------------------
-memory_bank::memory_bank(address_space &space, int index, offs_t addrstart, offs_t addrend, const char *tag)
- : m_machine(space.machine()),
+memory_bank::memory_bank(running_machine &_machine, address_space &space, int index, offs_t addrstart, offs_t addrend, const char *tag)
+ : m_machine(_machine),
m_baseptr(space.manager().bank_pointer_addr(index)),
m_index(index),
m_anonymous(tag == nullptr),
@@ -4296,8 +4296,8 @@ memory_bank::memory_bank(address_space &space, int index, offs_t addrstart, offs
m_name = string_format("Bank '%s'", tag);
}
- if (!m_anonymous && space.machine().save().registration_allowed())
- space.machine().save().save_item(&space.device(), "memory", m_tag.c_str(), 0, NAME(m_curentry));
+ if (!m_anonymous && machine().save().registration_allowed())
+ machine().save().save_item(&space.device(), "memory", m_tag.c_str(), 0, NAME(m_curentry));
}
diff --git a/src/emu/emumem.h b/src/emu/emumem.h
index 70f44385d58..23204408a82 100644
--- a/src/emu/emumem.h
+++ b/src/emu/emumem.h
@@ -470,7 +470,7 @@ class memory_block
public:
// construction/destruction
- memory_block(address_space &space, offs_t start, offs_t end, void *memory = nullptr);
+ memory_block(running_machine &_machine, address_space &space, offs_t start, offs_t end, void *memory = nullptr);
~memory_block();
// getters
@@ -532,7 +532,7 @@ class memory_bank
public:
// construction/destruction
- memory_bank(address_space &space, int index, offs_t start, offs_t end, const char *tag = nullptr);
+ memory_bank(running_machine &_machine, address_space &space, int index, offs_t start, offs_t end, const char *tag = nullptr);
~memory_bank();
// getters
diff --git a/src/emu/softlist_dev.cpp b/src/emu/softlist_dev.cpp
index 8e02afd48ed..d9dc013a26f 100644
--- a/src/emu/softlist_dev.cpp
+++ b/src/emu/softlist_dev.cpp
@@ -44,7 +44,7 @@ image_software_list_loader image_software_list_loader::s_instance;
// false_software_list_loader::load_software
//-------------------------------------------------
-bool false_software_list_loader::load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const
+bool false_software_list_loader::load_software(device_image_interface &image, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const
{
return false;
}
@@ -54,9 +54,9 @@ bool false_software_list_loader::load_software(device_image_interface &device, s
// rom_software_list_loader::load_software
//-------------------------------------------------
-bool rom_software_list_loader::load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const
+bool rom_software_list_loader::load_software(device_image_interface &image, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const
{
- swlist.machine().rom_load().load_software_part_region(device, swlist, swname, start_entry);
+ swlist.machine().rom_load().load_software_part_region(image.device(), swlist, swname, start_entry);
return true;
}
@@ -65,9 +65,9 @@ bool rom_software_list_loader::load_software(device_image_interface &device, sof
// image_software_list_loader::load_software
//-------------------------------------------------
-bool image_software_list_loader::load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const
+bool image_software_list_loader::load_software(device_image_interface &image, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const
{
- return device.load_software(swlist, swname, start_entry);
+ return image.load_software(swlist, swname, start_entry);
}
diff --git a/src/emu/softlist_dev.h b/src/emu/softlist_dev.h
index 855fee42062..e5c893cd60a 100644
--- a/src/emu/softlist_dev.h
+++ b/src/emu/softlist_dev.h
@@ -80,7 +80,7 @@ enum software_compatibility
class software_list_loader
{
public:
- virtual bool load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const = 0;
+ virtual bool load_software(device_image_interface &image, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const = 0;
};
@@ -89,7 +89,7 @@ public:
class false_software_list_loader : public software_list_loader
{
public:
- virtual bool load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const override;
+ virtual bool load_software(device_image_interface &image, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const override;
static const software_list_loader &instance() { return s_instance; }
private:
@@ -102,7 +102,7 @@ private:
class rom_software_list_loader : public software_list_loader
{
public:
- virtual bool load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const override;
+ virtual bool load_software(device_image_interface &image, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const override;
static const software_list_loader &instance() { return s_instance; }
private:
@@ -115,7 +115,7 @@ private:
class image_software_list_loader : public software_list_loader
{
public:
- virtual bool load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const override;
+ virtual bool load_software(device_image_interface &image, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const override;
static const software_list_loader &instance() { return s_instance; }
private:
diff --git a/src/frontend/mame/mame.cpp b/src/frontend/mame/mame.cpp
index 8e6a0614260..63c765abc24 100644
--- a/src/frontend/mame/mame.cpp
+++ b/src/frontend/mame/mame.cpp
@@ -155,7 +155,14 @@ void mame_machine_manager::start_luaengine()
}
if (options().console())
{
- m_plugins->set_value("console", "1", OPTION_PRIORITY_CMDLINE);
+ if (m_plugins->exists(OPTION_CONSOLE))
+ {
+ m_plugins->set_value(OPTION_CONSOLE, "1", OPTION_PRIORITY_CMDLINE);
+ }
+ else
+ {
+ fatalerror("Console plugin not found.\n");
+ }
}
m_lua->initialize();
diff --git a/src/mame/arcade.flt b/src/mame/arcade.flt
index 453f87a2b92..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
@@ -1354,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/atarijsa.cpp b/src/mame/audio/atarijsa.cpp
index 77248c18140..1c8a3dd38f9 100644
--- a/src/mame/audio/atarijsa.cpp
+++ b/src/mame/audio/atarijsa.cpp
@@ -408,8 +408,8 @@ WRITE8_MEMBER( atari_jsa_oki_base_device::wrio_w )
m_cpu_bank->set_entry((data >> 6) & 3);
// coin counters
- space.machine().bookkeeping().coin_counter_w(1, (data >> 5) & 1);
- space.machine().bookkeeping().coin_counter_w(0, (data >> 4) & 1);
+ machine().bookkeeping().coin_counter_w(1, (data >> 5) & 1);
+ machine().bookkeeping().coin_counter_w(0, (data >> 4) & 1);
// update the OKI frequency
if (m_oki1 != nullptr)
diff --git a/src/mame/audio/dcs.cpp b/src/mame/audio/dcs.cpp
index 030d1c15f9f..ff6d2993310 100644
--- a/src/mame/audio/dcs.cpp
+++ b/src/mame/audio/dcs.cpp
@@ -245,9 +245,9 @@ enum
#define DSIO_LED ((m_dsio.reg[1] >> 13) & 1)
#define DSIO_MUTE ((m_dsio.reg[1] >> 14) & 1)
-#define DSIO_DM_PG ((m_dsio.reg[2] >> 0) & 0x7ff)
+#define DSIO_DM_PG ((m_dsio.reg[2] >> 0) & 0x1fff)
-#define DSIO_BANK_END 0x7ff
+#define DSIO_BANK_END 0x3ff
/* these macros are used to reference the DENVER ASIC */
#define DENV_DSP_SPEED ((m_dsio.reg[1] >> 2) & 3) /* read only: 1=33.33MHz */
@@ -256,9 +256,9 @@ enum
#define DENV_LED ((m_dsio.reg[1] >> 13) & 1)
#define DENV_MUTE ((m_dsio.reg[1] >> 14) & 1)
-#define DENV_DM_PG ((m_dsio.reg[2] >> 0) & 0x7ff)
+#define DENV_DM_PG ((m_dsio.reg[2] >> 0) & 0x1fff)
-#define DENV_BANK_END 0xfff
+#define DENV_BANK_END 0x3ff
/*************************************
*
@@ -394,7 +394,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( dsio_rambank_map, AS_PROGRAM, 16, dcs_audio_device )
AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x2000 + DSIO_BANK_END) AM_RAMBANK("databank")
+ AM_RANGE(0x2000, 0x3fff) AM_RAMBANK("databank")
ADDRESS_MAP_END
static ADDRESS_MAP_START( dsio_io_map, AS_IO, 16, dcs_audio_device )
@@ -430,7 +430,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START(denver_rambank_map, AS_PROGRAM, 16, dcs_audio_device)
AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x2000 + DENV_BANK_END) AM_RAMBANK("databank")
+ AM_RANGE(0x2000, 0x3fff) AM_RAMBANK("databank")
ADDRESS_MAP_END
@@ -456,8 +456,8 @@ void dcs_audio_device::dcs_boot()
switch (m_rev)
{
/* rev 1/1.5: use the last set data bank to boot from */
- case 1:
- case 15:
+ case REV_DCS1:
+ case REV_DCS1P5:
{
/* determine the base */
// max_banks = m_bootrom_words / 0x1000;
@@ -475,7 +475,7 @@ void dcs_audio_device::dcs_boot()
}
/* rev 2: use the ROM page in the SDRC to boot from */
- case 2:
+ case REV_DCS2:
{
/* determine the base */
uint16_t* base;
@@ -502,8 +502,8 @@ void dcs_audio_device::dcs_boot()
}
/* rev 3/4: HALT the ADSP-2181 until program is downloaded via IDMA */
- case 3:
- case 4:
+ case REV_DSIO:
+ case REV_DENV:
m_cpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
m_dsio.start_on_next_write = 0;
break;
@@ -527,24 +527,24 @@ TIMER_CALLBACK_MEMBER( dcs_audio_device::dcs_reset )
switch (m_rev)
{
/* rev 1/1.5: just reset the bank to 0 */
- case 1:
- case 15:
+ case REV_DCS1:
+ case REV_DCS1P5:
m_sounddata_bank = 0;
m_data_bank->set_entry(0);
break;
/* rev 2: reset the SDRC ASIC */
- case 2:
+ case REV_DCS2:
sdrc_reset();
break;
/* rev 3: reset the DSIO ASIC */
- case 3:
+ case REV_DSIO:
dsio_reset();
break;
/* rev 4: reset the Denver ASIC */
- case 4:
+ case REV_DENV:
denver_reset();
break;
}
@@ -641,10 +641,10 @@ void dcs_audio_device::dcs_register_state()
if (m_sram != nullptr)
save_pointer(NAME(m_sram), 0x8000*4 / sizeof(m_sram[0]));
- if (m_rev == 2)
+ if (m_rev == REV_DCS2)
machine().save().register_postload(save_prepost_delegate(FUNC(dcs_audio_device::sdrc_remap_memory), this));
- if (m_rev == 4)
+ if (m_rev == REV_DENV)
machine().save().register_postload(save_prepost_delegate(FUNC(dcs_audio_device::denver_postload), this));
}
@@ -751,7 +751,7 @@ void dcs_audio_device::device_start()
m_bootrom_words = machine().root_device().memregion("dcs")->bytes() / 2;
m_sounddata = m_bootrom;
m_sounddata_words = m_bootrom_words;
- if (m_rev == 1)
+ if (m_rev == REV_DCS1)
{
m_sounddata_banks = m_sounddata_words / 0x1000;
m_data_bank->configure_entries(0, m_sounddata_banks, m_sounddata, 0x1000*2);
@@ -797,18 +797,18 @@ void dcs2_audio_device::device_start()
/* find the DCS CPU and the sound ROMs */
m_cpu = subdevice<adsp21xx_device>("dcs2");
- m_rev = 2;
+ m_rev = REV_DCS2;
soundbank_words = 0x1000;
if (m_cpu == nullptr)
{
m_cpu = subdevice<adsp21xx_device>("dsio");
- m_rev = 3;
+ m_rev = REV_DSIO;
soundbank_words = DSIO_BANK_END + 1;
}
if (m_cpu == nullptr)
{
m_cpu = subdevice<adsp21xx_device>("denver");
- m_rev = 4;
+ m_rev = REV_DENV;
soundbank_words = DENV_BANK_END + 1;
}
if (m_cpu != nullptr && !m_cpu->started())
@@ -841,11 +841,12 @@ void dcs2_audio_device::device_start()
m_sounddata_words = m_bootrom_words;
}
m_sounddata_banks = m_sounddata_words / soundbank_words;
- if (m_rev != 2)
+ if (m_rev != REV_DCS2)
{
if (m_ram_map)
m_ram_map->set_bank(0);
m_data_bank->configure_entries(0, m_sounddata_banks, m_sounddata, soundbank_words * 2);
+ logerror("device_start: audio ram banks: %x size: %x\n", m_sounddata_banks, soundbank_words);
}
@@ -879,7 +880,7 @@ void dcs2_audio_device::device_start()
void dcs_audio_device::install_speedup(void)
{
if (m_polling_offset) {
- if (m_rev < 3) {
+ if (m_rev < REV_DSIO) {
m_cpu->space(AS_DATA).install_readwrite_handler(m_polling_offset, m_polling_offset, read16_delegate(FUNC(dcs_audio_device::dcs_polling_r), this), write16_delegate(FUNC(dcs_audio_device::dcs_polling_w), this));
}
else {
@@ -920,7 +921,7 @@ WRITE16_MEMBER( dcs_audio_device::dcs_dataram_w )
WRITE16_MEMBER( dcs_audio_device::dcs_data_bank_select_w )
{
- if (m_rev != 15)
+ if (m_rev != REV_DCS1P5)
m_sounddata_bank = data & 0x7ff;
else
m_sounddata_bank = (m_sounddata_bank & 0xff00) | (data & 0xff);
@@ -929,7 +930,7 @@ WRITE16_MEMBER( dcs_audio_device::dcs_data_bank_select_w )
/* bit 11 = sound board led */
#if 0
- if (m_rev != 15)
+ if (m_rev != REV_DCS1P5)
output().set_led_value(2, data & 0x800);
#endif
}
@@ -1268,7 +1269,7 @@ READ16_MEMBER( dcs_audio_device::denver_r )
// SDRC Revision
result = 0x0003;
}
- if (LOG_DCS_IO) logerror("%04X: denver_r 0x%x = %04x\n", space.device().safe_pc(), offset, result);
+ if (LOG_DCS_IO) logerror("%04X: denver_r %s 0x%x = %04x\n", space.device().safe_pc(), denver_regname[offset], offset, result);
return result;
}
@@ -1315,7 +1316,7 @@ WRITE16_MEMBER( dcs_audio_device::denver_w )
m_fifo_reset_w(1);
break;
}
- if (LOG_DCS_IO) logerror("%04X: denver_w 0x%x = %04x\n", space.device().safe_pc(), offset, data);
+ if (LOG_DCS_IO) logerror("%04X: denver_w %s 0x%x = %04x\n", space.device().safe_pc(), denver_regname[offset], offset, data);
}
@@ -1431,7 +1432,7 @@ int dcs_audio_device::control_r()
/* only boost for DCS2 boards */
if (!m_auto_ack && !m_transfer.hle_enabled)
machine().scheduler().boost_interleave(attotime::from_nsec(500), attotime::from_usec(5));
- if ( /* m_rev == 1 || */ m_rev == 15) // == 1 check breaks mk3
+ if ( /* m_rev == REV_DSC1 || */ m_rev == REV_DCS1P5) // == 1 check breaks mk3
return IS_OUTPUT_FULL() ? 0x80 : 0x00;
return m_latch_control;
}
@@ -1654,7 +1655,7 @@ int dcs_audio_device::data2_r()
{
if (LOG_DCS_IO)
logerror("%08X dcs:data2_r = %04X\n", machine().device("maincpu")->safe_pc(), m_output_control);
- if (m_rev >= 3) {
+ if (m_rev >= REV_DSIO) {
// Not sure about this but allows sf2049 and roadburn to pass audio initialization tests at boot
return m_output_control << 8;
}
@@ -1816,7 +1817,7 @@ READ16_MEMBER( dcs_audio_device::adsp_control_r )
break;
case IDMA_CONTROL_REG:
- if (m_rev == 3 || m_rev == 4)
+ if (m_rev == REV_DSIO || m_rev == REV_DENV)
result = downcast<adsp2181_device *>(m_cpu)->idma_addr_r();
break;
@@ -1843,7 +1844,7 @@ WRITE16_MEMBER(dcs_audio_device:: adsp_control_w )
{
case SYSCONTROL_REG:
/* bit 9 forces a reset (not on 2181) */
- if ((data & 0x0200) && !(m_rev == 3 || m_rev == 4))
+ if ((data & 0x0200) && !(m_rev == REV_DSIO || m_rev == REV_DENV))
{
logerror("%04X:Rebooting DCS due to SYSCONTROL write = %04X\n", space.device().safe_pc(), data);
m_cpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE);
@@ -1915,7 +1916,7 @@ WRITE16_MEMBER(dcs_audio_device:: adsp_control_w )
break;
case IDMA_CONTROL_REG:
- if (m_rev == 3 || m_rev == 4)
+ if (m_rev == REV_DSIO || m_rev == REV_DENV)
downcast<adsp2181_device *>(m_cpu)->idma_addr_w(data);
break;
}
diff --git a/src/mame/audio/dcs.h b/src/mame/audio/dcs.h
index ec2983faee6..33636e5d1c9 100644
--- a/src/mame/audio/dcs.h
+++ b/src/mame/audio/dcs.h
@@ -119,6 +119,11 @@ protected:
virtual void device_reset() override;
void add_mconfig_dcs(machine_config &config);
+ // Formerly DCS1=1 DCS1P5=15 DCS2=2 DSIO=3 DENV=4
+ enum { REV_DCS1, REV_DCS1P5, REV_DCS2, REV_DSIO, REV_DENV };
+ static constexpr const char *const denver_regname[4] =
+ { "SDRC_ROM", "SDRC_IO", "RAM_PAGE", "VER/FIFO_RESET" };
+
struct sdrc_state
{
uint16_t reg[4];
diff --git a/src/mame/audio/exidy.cpp b/src/mame/audio/exidy.cpp
index aa425ab0767..a40869dd62d 100644
--- a/src/mame/audio/exidy.cpp
+++ b/src/mame/audio/exidy.cpp
@@ -406,11 +406,11 @@ void exidy_sound_device::r6532_irq(int state)
WRITE8_MEMBER( exidy_sound_device::r6532_porta_w )
{
if (m_cvsd != nullptr)
- space.machine().device("cvsdcpu")->execute().set_input_line(INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
+ machine().device("cvsdcpu")->execute().set_input_line(INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
if (m_tms != nullptr)
{
- logerror("(%f)%s:TMS5220 data write = %02X\n", space.machine().time().as_double(), space.machine().describe_context(), m_riot->porta_out_get());
+ logerror("(%f)%s:TMS5220 data write = %02X\n", machine().time().as_double(), machine().describe_context(), m_riot->porta_out_get());
m_tms->data_w(space, 0, data);
}
}
@@ -419,7 +419,7 @@ READ8_MEMBER( exidy_sound_device::r6532_porta_r )
{
if (m_tms != nullptr)
{
- logerror("(%f)%s:TMS5220 status read = %02X\n", space.machine().time().as_double(), space.machine().describe_context(), m_tms->status_r(space, 0));
+ logerror("(%f)%s:TMS5220 status read = %02X\n", machine().time().as_double(), machine().describe_context(), m_tms->status_r(space, 0));
return m_tms->status_r(space, 0);
}
else
@@ -874,7 +874,7 @@ WRITE8_MEMBER( victory_sound_device::command_w )
{
if (VICTORY_LOG_SOUND) logerror("%04X:!!!! Sound command = %02X\n", m_maincpu->pcbase(), data);
- space.machine().scheduler().synchronize(timer_expired_delegate(FUNC(victory_sound_device::delayed_command_w), this), data);
+ machine().scheduler().synchronize(timer_expired_delegate(FUNC(victory_sound_device::delayed_command_w), this), data);
}
diff --git a/src/mame/audio/exidy440.cpp b/src/mame/audio/exidy440.cpp
index ec0894613ad..313be4ebb15 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 */
@@ -217,7 +217,7 @@ void exidy440_sound_device::mix_to_16(int length, stream_sample_t *dest_left, st
READ8_MEMBER( exidy440_sound_device::sound_command_r )
{
/* clear the FIRQ that got us here and acknowledge the read to the main CPU */
- space.machine().device("audiocpu")->execute().set_input_line(1, CLEAR_LINE);
+ machine().device("audiocpu")->execute().set_input_line(1, CLEAR_LINE);
m_sound_command_ack = 1;
return m_sound_command;
@@ -272,7 +272,7 @@ WRITE8_MEMBER( exidy440_sound_device::sound_volume_w )
WRITE8_MEMBER( exidy440_sound_device::sound_interrupt_clear_w )
{
- space.machine().device("audiocpu")->execute().set_input_line(0, CLEAR_LINE);
+ machine().device("audiocpu")->execute().set_input_line(0, CLEAR_LINE);
}
@@ -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/hng64.cpp b/src/mame/audio/hng64.cpp
index 877c11ebf82..d08bb3b4ead 100644
--- a/src/mame/audio/hng64.cpp
+++ b/src/mame/audio/hng64.cpp
@@ -91,7 +91,7 @@ WRITE32_MEMBER(hng64_state::hng64_soundram_w)
logerror("dumping sound program in m_soundram\n");
FILE *fp;
char filename[256];
- sprintf(filename,"soundram_%s", space.machine().system().name);
+ sprintf(filename,"soundram_%s", machine().system().name);
fp=fopen(filename, "w+b");
if (fp)
{
diff --git a/src/mame/audio/leland.cpp b/src/mame/audio/leland.cpp
index 3013f95dcd5..2a42453fbd1 100644
--- a/src/mame/audio/leland.cpp
+++ b/src/mame/audio/leland.cpp
@@ -452,7 +452,7 @@ WRITE8_MEMBER( leland_80186_sound_device::leland_80186_control_w )
the next command, it uses an NMI to force the issue; unfortunately, this
seems to really screw up the sound system. It turns out it's better to
just wait for the original interrupt to occur naturally */
-/* space.machine().device("audiocpu")->execute().set_input_line(INPUT_LINE_NMI, (data & 0x40) ? CLEAR_LINE : ASSERT_LINE);*/
+/* machine().device("audiocpu")->execute().set_input_line(INPUT_LINE_NMI, (data & 0x40) ? CLEAR_LINE : ASSERT_LINE);*/
/* INT0 */
m_audiocpu->int0_w(data & 0x20);
diff --git a/src/mame/audio/m72.cpp b/src/mame/audio/m72.cpp
index d7a30e94673..ba5f99bd90f 100644
--- a/src/mame/audio/m72.cpp
+++ b/src/mame/audio/m72.cpp
@@ -128,12 +128,12 @@ WRITE_LINE_MEMBER(m72_audio_device::ym2151_irq_handler)
WRITE8_MEMBER( m72_audio_device::sound_command_w )
{
m_soundlatch->write(*m_space, offset, data);
- space.machine().scheduler().synchronize(timer_expired_delegate(FUNC(m72_audio_device::setvector_callback), this), Z80_ASSERT);
+ machine().scheduler().synchronize(timer_expired_delegate(FUNC(m72_audio_device::setvector_callback), this), Z80_ASSERT);
}
WRITE8_MEMBER( m72_audio_device::sound_irq_ack_w )
{
- space.machine().scheduler().synchronize(timer_expired_delegate(FUNC(m72_audio_device::setvector_callback), this), Z80_CLEAR);
+ machine().scheduler().synchronize(timer_expired_delegate(FUNC(m72_audio_device::setvector_callback), this), Z80_CLEAR);
}
diff --git a/src/mame/audio/mario.cpp b/src/mame/audio/mario.cpp
index d309c8f7402..504c372a6bb 100644
--- a/src/mame/audio/mario.cpp
+++ b/src/mame/audio/mario.cpp
@@ -33,7 +33,7 @@
#if (USE_8039)
#define I8035_P2_W(M,D) do { m_soundlatch4->write(M,0,D); } while (0)
#else
-#define I8035_P2_W(M,D) do { set_ea(M, ((D) & 0x20) ? 0 : 1); m_soundlatch4->write(M,0,D); } while (0)
+#define I8035_P2_W(M,D) do { set_ea(((D) & 0x20) ? 0 : 1); m_soundlatch4->write(M,0,D); } while (0)
#endif
#define I8035_P1_W_AH(M,B,D) I8035_P1_W(M,ACTIVEHIGH_PORT_BIT(I8035_P1_R(M),B,(D)))
@@ -402,13 +402,12 @@ DISCRETE_SOUND_END
*
****************************************************************/
-static void set_ea(address_space &space, int ea)
+void mario_state::set_ea(int ea)
{
- mario_state *state = space.machine().driver_data<mario_state>();
//printf("ea: %d\n", ea);
- //machine.device("audiocpu")->execute().set_input_line(MCS48_INPUT_EA, (ea) ? ASSERT_LINE : CLEAR_LINE);
- if (state->m_eabank != nullptr)
- state->membank(state->m_eabank)->set_entry(ea);
+ //machine().device("audiocpu")->execute().set_input_line(MCS48_INPUT_EA, (ea) ? ASSERT_LINE : CLEAR_LINE);
+ if (m_eabank != nullptr)
+ membank(m_eabank)->set_entry(ea);
}
/****************************************************************
@@ -445,7 +444,7 @@ void mario_state::sound_reset()
address_space &space = machine().device("audiocpu")->memory().space(AS_PROGRAM);
#if USE_8039
- set_ea(space, 1);
+ set_ea(1);
#endif
/* FIXME: convert to latch8 */
diff --git a/src/mame/audio/segasnd.cpp b/src/mame/audio/segasnd.cpp
index 8feb39e98df..1671c23c25f 100644
--- a/src/mame/audio/segasnd.cpp
+++ b/src/mame/audio/segasnd.cpp
@@ -173,7 +173,7 @@ TIMER_CALLBACK_MEMBER( speech_sound_device::delayed_speech_w )
WRITE8_MEMBER( speech_sound_device::data_w )
{
- space.machine().scheduler().synchronize(timer_expired_delegate(FUNC(speech_sound_device::delayed_speech_w), this), data);
+ machine().scheduler().synchronize(timer_expired_delegate(FUNC(speech_sound_device::delayed_speech_w), this), data);
}
@@ -418,10 +418,10 @@ TIMER_CALLBACK_MEMBER( usb_sound_device::delayed_usb_data_w )
WRITE8_MEMBER( usb_sound_device::data_w )
{
LOG("%04X:usb_data_w = %02X\n", m_maincpu->safe_pc(), data);
- space.machine().scheduler().synchronize(timer_expired_delegate(FUNC(usb_sound_device::delayed_usb_data_w), this), data);
+ machine().scheduler().synchronize(timer_expired_delegate(FUNC(usb_sound_device::delayed_usb_data_w), this), data);
/* boost the interleave so that sequences can be sent */
- space.machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(250));
+ machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(250));
}
diff --git a/src/mame/audio/seibu.cpp b/src/mame/audio/seibu.cpp
index a7336ef80fd..d6534dec5e2 100644
--- a/src/mame/audio/seibu.cpp
+++ b/src/mame/audio/seibu.cpp
@@ -217,8 +217,8 @@ WRITE8_MEMBER( seibu_sound_device::bank_w )
WRITE8_MEMBER( seibu_sound_device::coin_w )
{
- space.machine().bookkeeping().coin_counter_w(0, data & 1);
- space.machine().bookkeeping().coin_counter_w(1, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 2);
}
READ8_MEMBER( seibu_sound_device::soundlatch_r )
@@ -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/snes_snd.cpp b/src/mame/audio/snes_snd.cpp
index 65c746dfbf6..86f6fb80536 100644
--- a/src/mame/audio/snes_snd.cpp
+++ b/src/mame/audio/snes_snd.cpp
@@ -1134,7 +1134,7 @@ WRITE8_MEMBER( snes_sound_device::spc_io_w )
case 0x7: /* Port 3 */
// osd_printf_debug("SPC: %02x to APU @ %d (PC=%x)\n", data, offset & 3, space.device().safe_pc());
m_port_out[offset - 4] = data;
- space.machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(20));
+ machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(20));
break;
case 0xa: /* Timer 0 */
case 0xb: /* Timer 1 */
diff --git a/src/mame/audio/svis_snd.cpp b/src/mame/audio/svis_snd.cpp
index 8d1f30aa204..2f881e9db95 100644
--- a/src/mame/audio/svis_snd.cpp
+++ b/src/mame/audio/svis_snd.cpp
@@ -161,7 +161,7 @@ void svision_sound_device::sound_stream_update(sound_stream &stream, stream_samp
WRITE8_MEMBER( svision_sound_device::sounddma_w )
{
- logerror("%.6f svision snddma write %04x %02x\n", space.machine().time().as_double(),offset+0x18,data);
+ logerror("%.6f svision snddma write %04x %02x\n", machine().time().as_double(),offset+0x18,data);
m_dma.reg[offset] = data;
switch (offset)
{
@@ -173,7 +173,7 @@ WRITE8_MEMBER( svision_sound_device::sounddma_w )
m_dma.size = (data ? data : 0x100) * 32;
break;
case 3:
- m_dma.step = space.machine().device("maincpu")->unscaled_clock() / (256.0 * space.machine().sample_rate() * (1 + (data & 3)));
+ m_dma.step = machine().device("maincpu")->unscaled_clock() / (256.0 * machine().sample_rate() * (1 + (data & 3)));
m_dma.right = data & 4;
m_dma.left = data & 8;
m_dma.ca14to16 = ((data & 0x70) >> 4) << 14;
@@ -197,7 +197,7 @@ WRITE8_MEMBER( svision_sound_device::noise_w )
{
case 0:
m_noise.volume=data&0xf;
- m_noise.step= space.machine().device("maincpu")->unscaled_clock() / (256.0*space.machine().sample_rate()*(1+(data>>4)));
+ m_noise.step= machine().device("maincpu")->unscaled_clock() / (256.0*machine().sample_rate()*(1+(data>>4)));
break;
case 1:
m_noise.count = data + 1;
diff --git a/src/mame/audio/trackfld.cpp b/src/mame/audio/trackfld.cpp
index 5e979f97b48..44a0dee3b03 100644
--- a/src/mame/audio/trackfld.cpp
+++ b/src/mame/audio/trackfld.cpp
@@ -58,7 +58,7 @@ void trackfld_audio_device::device_reset()
READ8_MEMBER( trackfld_audio_device::trackfld_sh_timer_r )
{
- uint32_t clock = space.machine().device<cpu_device>("audiocpu")->total_cycles() / TIMER_RATE;
+ uint32_t clock = machine().device<cpu_device>("audiocpu")->total_cycles() / TIMER_RATE;
return clock & 0xF;
}
diff --git a/src/mame/audio/tx1.cpp b/src/mame/audio/tx1.cpp
index 486da6330e6..8c6da07ca78 100644
--- a/src/mame/audio/tx1.cpp
+++ b/src/mame/audio/tx1.cpp
@@ -435,18 +435,18 @@ WRITE8_MEMBER( buggyboy_sound_device::ym2_a_w )
WRITE8_MEMBER( buggyboy_sound_device::ym2_b_w )
{
- device_t *ym1 = space.machine().device("ym1");
- device_t *ym2 = space.machine().device("ym2");
+ device_t *ym1 = machine().device("ym1");
+ device_t *ym2 = machine().device("ym2");
double gain;
m_stream->update();
m_ym2_outputb = data ^ 0xff;
- if (!strcmp(space.machine().system().name, "buggyboyjr"))
+ if (!strcmp(machine().system().name, "buggyboyjr"))
{
- space.machine().bookkeeping().coin_counter_w(0, data & 0x01);
- space.machine().bookkeeping().coin_counter_w(1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
}
/*
diff --git a/src/mame/audio/wswan.cpp b/src/mame/audio/wswan.cpp
index 37f7c6288ab..f86afd635af 100644
--- a/src/mame/audio/wswan.cpp
+++ b/src/mame/audio/wswan.cpp
@@ -326,7 +326,7 @@ WRITE8_MEMBER( wswan_sound_device::port_w )
break;
case 0x8D: /* Sweep time */
- m_sweep_time = space.machine().sample_rate() / ( 3072000 / ( 8192 * (data + 1) ) );
+ m_sweep_time = machine().sample_rate() / ( 3072000 / ( 8192 * (data + 1) ) );
break;
case 0x8E: /* Noise control */
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/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 9299a474805..c4790652148 100644
--- a/src/mame/drivers/agat.cpp
+++ b/src/mame/drivers/agat.cpp
@@ -425,16 +425,16 @@ READ8_MEMBER(agat7_state::flags_r)
return ((m_joybuttons->read() & 0x40) || !(m_kbspecial->read() & 0x06)) ? 0x80 : 0;
case 4: // joy 1 X axis
- return (space.machine().time().as_double() < m_joystick_x1_time) ? 0x80 : 0;
+ return (machine().time().as_double() < m_joystick_x1_time) ? 0x80 : 0;
case 5: // joy 1 Y axis
- return (space.machine().time().as_double() < m_joystick_y1_time) ? 0x80 : 0;
+ return (machine().time().as_double() < m_joystick_y1_time) ? 0x80 : 0;
case 6: // joy 2 X axis
- return (space.machine().time().as_double() < m_joystick_x2_time) ? 0x80 : 0;
+ return (machine().time().as_double() < m_joystick_x2_time) ? 0x80 : 0;
case 7: // joy 2 Y axis
- return (space.machine().time().as_double() < m_joystick_y2_time) ? 0x80 : 0;
+ return (machine().time().as_double() < m_joystick_y2_time) ? 0x80 : 0;
}
// this is never reached
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/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/apple2.cpp b/src/mame/drivers/apple2.cpp
index 0527d461daf..12e44b49892 100644
--- a/src/mame/drivers/apple2.cpp
+++ b/src/mame/drivers/apple2.cpp
@@ -636,16 +636,16 @@ READ8_MEMBER(napple2_state::flags_r)
return (m_joybuttons->read() & 0x40) ? 0x80 : 0;
case 4: // joy 1 X axis
- return (space.machine().time().as_double() < m_joystick_x1_time) ? 0x80 : 0;
+ return (machine().time().as_double() < m_joystick_x1_time) ? 0x80 : 0;
case 5: // joy 1 Y axis
- return (space.machine().time().as_double() < m_joystick_y1_time) ? 0x80 : 0;
+ return (machine().time().as_double() < m_joystick_y1_time) ? 0x80 : 0;
case 6: // joy 2 X axis
- return (space.machine().time().as_double() < m_joystick_x2_time) ? 0x80 : 0;
+ return (machine().time().as_double() < m_joystick_x2_time) ? 0x80 : 0;
case 7: // joy 2 Y axis
- return (space.machine().time().as_double() < m_joystick_y2_time) ? 0x80 : 0;
+ return (machine().time().as_double() < m_joystick_y2_time) ? 0x80 : 0;
}
// this is never reached
diff --git a/src/mame/drivers/apple2e.cpp b/src/mame/drivers/apple2e.cpp
index dcfde97b251..8eb1f04fb0b 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
@@ -1528,7 +1528,7 @@ READ8_MEMBER(apple2e_state::c000_r)
return m_80store ? 0x80 : 0x00;
case 0x19: // read VBLBAR
- return space.machine().first_screen()->vblank() ? 0x00 : 0x80;
+ return machine().first_screen()->vblank() ? 0x00 : 0x80;
case 0x1a: // read TEXT
return m_video->m_graphics ? 0x00 : 0x80;
@@ -1570,19 +1570,19 @@ READ8_MEMBER(apple2e_state::c000_r)
case 0x64: // joy 1 X axis
case 0x6c:
- return (space.machine().time().as_double() < m_joystick_x1_time) ? 0x80 : 0;
+ return (machine().time().as_double() < m_joystick_x1_time) ? 0x80 : 0;
case 0x65: // joy 1 Y axis
case 0x6d:
- return (space.machine().time().as_double() < m_joystick_y1_time) ? 0x80 : 0;
+ return (machine().time().as_double() < m_joystick_y1_time) ? 0x80 : 0;
case 0x66: // joy 2 X axis
case 0x6e:
- return (space.machine().time().as_double() < m_joystick_x2_time) ? 0x80 : 0;
+ return (machine().time().as_double() < m_joystick_x2_time) ? 0x80 : 0;
case 0x67: // joy 2 Y axis
case 0x6f:
- return (space.machine().time().as_double() < m_joystick_y2_time) ? 0x80 : 0;
+ return (machine().time().as_double() < m_joystick_y2_time) ? 0x80 : 0;
case 0x7e: // read IOUDIS
return m_ioudis ? 0x80 : 0x00;
@@ -1838,11 +1838,11 @@ READ8_MEMBER(apple2e_state::c000_iic_r)
case 0x64: // joy 1 X axis
case 0x6c:
- return (space.machine().time().as_double() < m_joystick_x1_time) ? 0x80 : 0;
+ return (machine().time().as_double() < m_joystick_x1_time) ? 0x80 : 0;
case 0x65: // joy 1 Y axis
case 0x6d:
- return (space.machine().time().as_double() < m_joystick_y1_time) ? 0x80 : 0;
+ return (machine().time().as_double() < m_joystick_y1_time) ? 0x80 : 0;
case 0x66: // mouse X1 (IIc only)
case 0x6e:
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/aristmk5.cpp b/src/mame/drivers/aristmk5.cpp
index 28b55596557..af23b2a405b 100644
--- a/src/mame/drivers/aristmk5.cpp
+++ b/src/mame/drivers/aristmk5.cpp
@@ -2958,6 +2958,28 @@ ROM_START( chickna5qld )
ROM_END
+// 596/1 50 Credit Multiplier/9 Line Multiline
+// Chicken / Local / B - 23/12/96
+// 01J01886
+ROM_START( chickna5b )
+ ARISTOCRAT_MK5_BIOS
+ /*
+
+ */
+ ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
+ ROM_LOAD32_WORD( "01j01886.u7", 0x000000, 0x80000, CRC(6852bf73) SHA1(a53c8467f4a128da26707a1fe239f32330dffe0a) )
+ ROM_LOAD32_WORD( "01j01886.u11", 0x000002, 0x80000, CRC(c065aaa2) SHA1(875c2e9e432d4532e116dc197613327a06841fc2) )
+ ROM_LOAD32_WORD( "01j01886.u8", 0x100000, 0x80000, CRC(81ad8cc2) SHA1(006dbc0b352187425bc410903178bad912677a29) )
+ ROM_LOAD32_WORD( "01j01886.u12", 0x100002, 0x80000, CRC(1f03e878) SHA1(b9beee74f5cfd942ba50f8d2955ff588dea32842) )
+ ROM_LOAD32_WORD( "01j01886.u9", 0x200000, 0x80000, CRC(2471f934) SHA1(486757b919f4c4af40b707175d38eca26cda1ea3) )
+ ROM_LOAD32_WORD( "01j01886.u13", 0x200002, 0x80000, CRC(231ca698) SHA1(eb237652974228994e793f0dc87de93095db3c9c) )
+
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
+ ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+ ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
+ROM_END
+
+
// 596 - 10 Credit Multiplier / 9 Line Multiline.
// Chicken - Export C - 23/02/98.
// Marked as RHG0730, 92.588% and 'touch'
@@ -3910,6 +3932,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 )
@@ -3980,6 +4030,27 @@ 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
@@ -4264,6 +4335,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 )
@@ -6832,6 +6932,29 @@ ROM_START( venicea5 )
ROM_END
+// AHG1535 / MV4076 / 9 Line / 5,10,20 Credit Multiplier
+// Wild Africa / Export / C - 17/07/01
+// All devices are 27c4096
+ROM_START( wafricau )
+ ARISTOCRAT_MK5_BIOS
+ /*
+ Checksum code found at 0x000d18
+ Checksum is stored at 0x000020-0x000027
+ Expected Checksum 0x1b3b15a2
+ Calculated Checksum 0x1b3b15a2 (OK)
+ */
+ ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
+ ROM_LOAD32_WORD( "ahg1535.u7", 0x000000, 0x80000, CRC(57c04faa) SHA1(aa86747b21718f9dfa75b41f7280a00f531e13fe) ) // game
+ ROM_LOAD32_WORD( "ahg1535.u11", 0x000002, 0x80000, CRC(066917c5) SHA1(a821635edc0199427b43eb324922af99679def21) ) // game
+ ROM_LOAD32_WORD( "ahg1535.u8", 0x100000, 0x80000, CRC(64c8c12f) SHA1(3a6e54205c28ae3dfb51ef1895e147e6a9f446a9) ) // base
+ ROM_LOAD32_WORD( "ahg1535.u12", 0x100002, 0x80000, CRC(f569843c) SHA1(ccf1b727ad1dc49bca609ee0887b36a29223cace) ) // base
+
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
+ ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+ ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
+ROM_END
+
+
// 0200507V / 506/8 / 3 Credit Multiplier/3 Line Multiline
// Wild Amazon / Local / A - 10/10/96
ROM_START( wamazon )
@@ -7226,6 +7349,7 @@ GAMEL( 1998, chariotc, aristmk5, aristmk5, chariotc, aristmk5_s
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
GAMEL( 2001, checkma5, aristmk5, aristmk5, checkma5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Checkmate (01J00681, NSW/ACT)", MACHINE_FLAGS, layout_checkma5 ) // JB011, B - 06/07/01, Rev 17
GAMEL( 1996, chickna5, aristmk5, aristmk5, chickna5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Chicken (0100351V, NSW/ACT)", MACHINE_FLAGS, layout_snowcat ) // 596, A - 27/08/96, Rev 1.24
+GAMEL( 1996, chickna5b, chickna5, aristmk5, chickna5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Chicken (01J01886, NSW/ACT)", MACHINE_FLAGS, layout_snowcat ) // 596/1 B - 23/12/96
GAMEL( 1998, chickna5qld, chickna5, aristmk5, chickna5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Chicken (0200530V, Queensland)", MACHINE_FLAGS, layout_snowcat ) // 596, C - 23/02/98, Rev 1.0
GAMEL( 1998, chickna5u, chickna5, aristmk5_usa, chickna5u, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Chicken (RHG0730-03, US)", MACHINE_FLAGS, layout_aristmk5_us ) // 596, C - 23/02/98
GAMEL( 1998, coralrc2, aristmk5, aristmk5, coralrc2, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Coral Riches II (0100919V, NSW/ACT)", MACHINE_FLAGS, layout_coralrc2 ) // 577/7, A - 29/12/98, Rev 12
@@ -7261,9 +7385,11 @@ GAMEL( 1997, goldpyra, goldpyr, aristmk5_usa, bootsctnua, aristmk5_s
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_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
@@ -7274,6 +7400,7 @@ 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
@@ -7370,6 +7497,7 @@ GAMEL( 1998, unicornda, unicornd, aristmk5, aristmk5_9, aristmk5_s
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( 2001, wafricau, aristmk5, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Wild Africa (AHG1535, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4076, C - 17/07/01
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
GAMEL( 1996, wamazonv, wamazon, aristmk5, wamazon, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Wild Amazon (01J01996, Venezuela)", MACHINE_FLAGS, layout_wamazon ) // 506/8, A - 10/10/96, Rev 3
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/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/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/atlantis.cpp b/src/mame/drivers/atlantis.cpp
index fb790e6fd2a..ccefb5ebeb6 100644
--- a/src/mame/drivers/atlantis.cpp
+++ b/src/mame/drivers/atlantis.cpp
@@ -21,6 +21,7 @@
* Actiontec PM560LKI PCI Data/Fax Modem (PCI\VEN_11C1&DEV_0480&SUBSYS_04801668)
* TL16c552 dual UART
* ADSP-2181 based DCS2 audio (unclear which variant)
+ * Micron MT48LC1M16A1 1Mx16 SDRAM, 2X (4MB) for audio
* ICS AV9110 Serially Programmable Frequency Generator. Programmed through ADSP FL0,FL1,FL2 pins.
* Cirrus Logic CS4338 16 bit stereo audio serial DAC, PCB has space for 3 chips (6-channels), only 1 is populated
* Maxim MAX192 8 channel 10 bit serial ADC
@@ -814,7 +815,7 @@ static MACHINE_CONFIG_START( mwskins )
MCFG_M48T37_RESET_HANDLER(WRITELINE(atlantis_state, watchdog_reset))
MCFG_M48T37_IRQ_HANDLER(WRITELINE(atlantis_state, watchdog_irq))
- MCFG_IDE_PCI_ADD(PCI_ID_IDE, 0x10950646, 0x05, 0x0)
+ MCFG_IDE_PCI_ADD(PCI_ID_IDE, 0x10950646, 0x07, 0x0)
MCFG_IDE_PCI_IRQ_HANDLER(DEVWRITELINE(":", atlantis_state, ide_irq))
// The pci-ide by default expects the system controller to be pci:00.0 so need to fix here
MCFG_DEVICE_MODIFY(PCI_ID_IDE":ide")
@@ -833,9 +834,8 @@ static MACHINE_CONFIG_START( mwskins )
MCFG_SCREEN_UPDATE_DEVICE("zeus2", zeus2_device, screen_update)
/* sound hardware */
- //MCFG_DEVICE_ADD("dcs", DCS2_AUDIO_DSIO, 0)
MCFG_DEVICE_ADD("dcs", DCS2_AUDIO_DENVER, 0)
- MCFG_DCS2_AUDIO_DRAM_IN_MB(8)
+ MCFG_DCS2_AUDIO_DRAM_IN_MB(4)
MCFG_DCS2_AUDIO_POLLING_OFFSET(0x200d)
MCFG_DEVICE_ADD("ioasic", MIDWAY_IOASIC, 0)
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/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/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/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 ea5d9a8e4a6..41f89e0c2e9 100644
--- a/src/mame/drivers/bmcpokr.cpp
+++ b/src/mame/drivers/bmcpokr.cpp
@@ -301,7 +301,7 @@ uint32_t bmcpokr_state::screen_update_bmcpokr(screen_device &screen, bitmap_ind1
READ16_MEMBER(bmcpokr_state::unk_r)
{
- return space.machine().rand();
+ return machine().rand();
}
// Hack!
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/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
index fe57bb41aa8..0d034777231 100644
--- a/src/mame/drivers/calcune.cpp
+++ b/src/mame/drivers/calcune.cpp
@@ -1,5 +1,17 @@
// 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"
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/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/cdi.cpp b/src/mame/drivers/cdi.cpp
index f4aab089c3e..d7083bbb429 100644
--- a/src/mame/drivers/cdi.cpp
+++ b/src/mame/drivers/cdi.cpp
@@ -370,7 +370,7 @@ MACHINE_RESET_MEMBER( cdi_state, quizard4 )
READ8_MEMBER( cdi_state::servo_io_r )
{
- if (space.machine().side_effect_disabled())
+ if (machine().side_effect_disabled())
{
return 0;
}
@@ -570,7 +570,7 @@ WRITE8_MEMBER( cdi_state::servo_io_w )
READ8_MEMBER( cdi_state::slave_io_r )
{
- if (space.machine().side_effect_disabled())
+ if (machine().side_effect_disabled())
{
return 0;
}
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/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/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/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/cobra.cpp b/src/mame/drivers/cobra.cpp
index 3f03cdbc884..117571c8cb4 100644
--- a/src/mame/drivers/cobra.cpp
+++ b/src/mame/drivers/cobra.cpp
@@ -1670,7 +1670,7 @@ WRITE64_MEMBER(cobra_state::main_fifo_w)
if (m_main_debug_state == 0x6b)
{
// install HD patches for bujutsu
- if (strcmp(space.machine().system().name, "bujutsu") == 0)
+ if (strcmp(machine().system().name, "bujutsu") == 0)
{
uint32_t *main_ram = (uint32_t*)(uint64_t*)m_main_ram;
uint32_t *sub_ram = (uint32_t*)m_sub_ram;
@@ -1685,7 +1685,7 @@ WRITE64_MEMBER(cobra_state::main_fifo_w)
gfx_ram[(0x38632c^4) / 4] = 0x38600000; // skip check_one_scene()
}
// racjamdx
- else if (strcmp(space.machine().system().name, "racjamdx") == 0)
+ else if (strcmp(machine().system().name, "racjamdx") == 0)
{
}
}
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/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/coolridr.cpp b/src/mame/drivers/coolridr.cpp
index 4fdeb9a63a0..0e55422b88b 100644
--- a/src/mame/drivers/coolridr.cpp
+++ b/src/mame/drivers/coolridr.cpp
@@ -1355,7 +1355,7 @@ void *coolridr_state::draw_object_threaded(void *param, int threadid)
if (b2colorNumber != b1colorNumber)
{
- // b1colorNumber = space.machine().rand()&0xfff;
+ // b1colorNumber = machine().rand()&0xfff;
}
// if(b1colorNumber > 0x60 || b2colorNumber)
diff --git a/src/mame/drivers/cops.cpp b/src/mame/drivers/cops.cpp
index e1238dc481f..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);
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/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/ddenlovr.cpp b/src/mame/drivers/ddenlovr.cpp
index 1129d1aef94..98ed50d17de 100644
--- a/src/mame/drivers/ddenlovr.cpp
+++ b/src/mame/drivers/ddenlovr.cpp
@@ -1806,8 +1806,8 @@ READ8_MEMBER(ddenlovr_state::quiz365_input_r )
if (!BIT(m_dsw_sel, 0)) return ioport("DSW1")->read();
if (!BIT(m_dsw_sel, 1)) return ioport("DSW2")->read();
if (!BIT(m_dsw_sel, 2)) return ioport("DSW3")->read();
- if (!BIT(m_dsw_sel, 3)) return 0xff;//space.machine().rand();
- if (!BIT(m_dsw_sel, 4)) return 0xff;//space.machine().rand();
+ if (!BIT(m_dsw_sel, 3)) return 0xff;//machine().rand();
+ if (!BIT(m_dsw_sel, 4)) return 0xff;//machine().rand();
return 0xff;
}
@@ -3159,7 +3159,7 @@ READ8_MEMBER(ddenlovr_state::hginga_dsw_r )
if (!BIT(m_dsw_sel, 3)) return ioport("DSW1")->read();
if (!BIT(m_dsw_sel, 4)) return ioport("DSW5")->read();
- logerror("%s: warning, unknown bits read, ddenlovr_select = %02x\n", space.machine().describe_context(), m_dsw_sel);
+ logerror("%s: warning, unknown bits read, ddenlovr_select = %02x\n", machine().describe_context(), m_dsw_sel);
return 0xff;
}
@@ -4054,7 +4054,7 @@ READ8_MEMBER(ddenlovr_state::seljan2_dsw_r )
if (!BIT(m_dsw_sel, 3)) return ioport("DSW4")->read();
if (!BIT(m_dsw_sel, 4)) return ioport("DSWTOP")->read();
- logerror("%s: warning, unknown bits read, ddenlovr_select = %02x\n", space.machine().describe_context(), m_dsw_sel);
+ logerror("%s: warning, unknown bits read, ddenlovr_select = %02x\n", machine().describe_context(), m_dsw_sel);
return 0xff;
}
diff --git a/src/mame/drivers/ddragon.cpp b/src/mame/drivers/ddragon.cpp
index 6af28a90358..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);
}
@@ -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/de_2.cpp b/src/mame/drivers/de_2.cpp
index c3e0dc5c1f5..1a458e877fa 100644
--- a/src/mame/drivers/de_2.cpp
+++ b/src/mame/drivers/de_2.cpp
@@ -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;
}
}
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/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/eolith.cpp b/src/mame/drivers/eolith.cpp
index 51c36f22378..d046e0e777d 100644
--- a/src/mame/drivers/eolith.cpp
+++ b/src/mame/drivers/eolith.cpp
@@ -1613,7 +1613,7 @@ void eolith_state::speedup_read()
{
/* for debug */
//if ((space.device().safe_pc()!=m_speedup_address) && (m_speedup_vblank!=1) )
- // printf("%s:eolith speedup_read data %02x\n",space.machine().describe_context(), m_speedup_vblank);
+ // printf("%s:eolith speedup_read data %02x\n",machine().describe_context(), m_speedup_vblank);
if (m_speedup_vblank==0 && m_speedup_scanline < m_speedup_resume_scanline)
{
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/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/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/fcrash.cpp b/src/mame/drivers/fcrash.cpp
index c40715b13cc..1bc85c6beb6 100644
--- a/src/mame/drivers/fcrash.cpp
+++ b/src/mame/drivers/fcrash.cpp
@@ -196,7 +196,7 @@ WRITE16_MEMBER(cps_state::dinopic_layer_w)
m_cps_a_regs[0x14 / 2] = data;
break;
default:
- logerror("%s: Unknown layer cmd %X %X\n",space.machine().describe_context(),offset<<1,data);
+ logerror("%s: Unknown layer cmd %X %X\n",machine().describe_context(),offset<<1,data);
}
}
@@ -321,7 +321,7 @@ WRITE16_MEMBER(cps_state::punipic_layer_w)
// unknown
break;
default:
- logerror("%s: Unknown layer cmd %X %X\n",space.machine().describe_context(),offset<<1,data);
+ logerror("%s: Unknown layer cmd %X %X\n",machine().describe_context(),offset<<1,data);
}
}
@@ -379,7 +379,7 @@ WRITE16_MEMBER(cps_state::sf2m1_layer_w)
m_cps_a_regs[0x06 / 2] = data;
break;
default:
- logerror("%s: Unknown layer cmd %X %X\n",space.machine().describe_context(),offset<<1,data);
+ logerror("%s: Unknown layer cmd %X %X\n",machine().describe_context(),offset<<1,data);
}
}
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 45d7e0a7f90..47cb3612e95 100644
--- a/src/mame/drivers/fidel6502.cpp
+++ b/src/mame/drivers/fidel6502.cpp
@@ -581,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();
}
@@ -687,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();
}
@@ -912,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++)
@@ -1009,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 971b871821b..f8017727bab 100644
--- a/src/mame/drivers/fidel68k.cpp
+++ b/src/mame/drivers/fidel68k.cpp
@@ -45,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.
+
******************************************************************************
@@ -180,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
@@ -202,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)
@@ -241,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;
@@ -272,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(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);
@@ -296,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)];
}
@@ -317,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);
}
@@ -392,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
@@ -468,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")
@@ -556,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")
@@ -565,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 */
@@ -661,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 )
@@ -714,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/fitfight.cpp b/src/mame/drivers/fitfight.cpp
index d1ee97d6419..63bcdc943d5 100644
--- a/src/mame/drivers/fitfight.cpp
+++ b/src/mame/drivers/fitfight.cpp
@@ -96,7 +96,7 @@ Stephh's notes :
READ16_MEMBER( fitfight_state::hotmindff_unk_r )
{
// won't boot unless things in here change, this is p1/p2 inputs in fitfight
- return space.machine().rand();
+ return machine().rand();
}
READ16_MEMBER(fitfight_state::fitfight_700000_r)
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 2a831e969b2..c5ef4ff682d 100644
--- a/src/mame/drivers/fmtowns.cpp
+++ b/src/mame/drivers/fmtowns.cpp
@@ -1850,7 +1850,7 @@ READ8_MEMBER(towns_state::towns_cdrom_r)
m_towns_cd.cmd_status_ptr = 0;
/* if(m_towns_cd.extra_status != 0)
{
- towns_cdrom_set_irq(space.machine(),TOWNS_CD_IRQ_MPU,1);
+ towns_cdrom_set_irq(machine(),TOWNS_CD_IRQ_MPU,1);
m_towns_cd.status |= 0x02;
}*/
}
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/funworld.cpp b/src/mame/drivers/funworld.cpp
index 93874b820c4..23418f8fb80 100644
--- a/src/mame/drivers/funworld.cpp
+++ b/src/mame/drivers/funworld.cpp
@@ -6463,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);
}
{
@@ -6475,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];
}
}
@@ -6493,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];
}
}
@@ -6507,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);
}
{
@@ -6519,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];
}
}
@@ -6545,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];
@@ -6577,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
@@ -6642,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);
}
{
@@ -6654,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];
}
}
@@ -6672,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];
}
}
@@ -6702,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);
@@ -6746,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);
}
{
@@ -6758,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];
}
@@ -6776,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];
}
}
@@ -6787,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;
}
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 eb23347aa9b..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);
}
@@ -2096,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);
}
@@ -6352,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;
}
}
@@ -6437,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;
}
}
@@ -6450,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
@@ -6461,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);
}
@@ -6472,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);
}
@@ -6557,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);
}
}
diff --git a/src/mame/drivers/ghosteo.cpp b/src/mame/drivers/ghosteo.cpp
index 27d6c3eb1cc..b984c977d1c 100644
--- a/src/mame/drivers/ghosteo.cpp
+++ b/src/mame/drivers/ghosteo.cpp
@@ -271,7 +271,7 @@ READ32_MEMBER(ghosteo_state::s3c2410_core_pin_r)
WRITE8_MEMBER(ghosteo_state::s3c2410_nand_command_w )
{
struct nand_t &nand = m_nand;
-// device_t *nand = space.machine().device( "nand");
+// device_t *nand = machine().device( "nand");
#if NAND_LOG
logerror( "s3c2410_nand_command_w %02X\n", data);
#endif
@@ -296,7 +296,7 @@ WRITE8_MEMBER(ghosteo_state::s3c2410_nand_command_w )
WRITE8_MEMBER(ghosteo_state::s3c2410_nand_address_w )
{
struct nand_t &nand = m_nand;
-// device_t *nand = space.machine().device( "nand");
+// device_t *nand = machine().device( "nand");
#if NAND_LOG
logerror( "s3c2410_nand_address_w %02X\n", data);
#endif
@@ -331,7 +331,7 @@ WRITE8_MEMBER(ghosteo_state::s3c2410_nand_address_w )
READ8_MEMBER(ghosteo_state::s3c2410_nand_data_r )
{
struct nand_t &nand = m_nand;
-// device_t *nand = space.machine().device( "nand");
+// device_t *nand = machine().device( "nand");
uint8_t data = 0;
switch (nand.mode)
{
@@ -377,7 +377,7 @@ READ8_MEMBER(ghosteo_state::s3c2410_nand_data_r )
WRITE8_MEMBER(ghosteo_state::s3c2410_nand_data_w )
{
-// device_t *nand = space.machine().device( "nand");
+// device_t *nand = machine().device( "nand");
#if NAND_LOG
logerror( "s3c2410_nand_data_w %02X\n", data);
#endif
diff --git a/src/mame/drivers/gladiatr.cpp b/src/mame/drivers/gladiatr.cpp
index fa20baf2184..e77bcdd8560 100644
--- a/src/mame/drivers/gladiatr.cpp
+++ b/src/mame/drivers/gladiatr.cpp
@@ -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);
}
diff --git a/src/mame/drivers/gng.cpp b/src/mame/drivers/gng.cpp
index 95c8874a3a7..a899095f732 100644
--- a/src/mame/drivers/gng.cpp
+++ b/src/mame/drivers/gng.cpp
@@ -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 046830f919f..5d56ee2cd97 100644
--- a/src/mame/drivers/goldstar.cpp
+++ b/src/mame/drivers/goldstar.cpp
@@ -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/gts3.cpp b/src/mame/drivers/gts3.cpp
index 427912fd653..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);
}
diff --git a/src/mame/drivers/gts3a.cpp b/src/mame/drivers/gts3a.cpp
index 2ef0a33691a..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);
}
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 75e1a646fea..6c677e85a62 100644
--- a/src/mame/drivers/halleys.cpp
+++ b/src/mame/drivers/halleys.cpp
@@ -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 8d6dddefe55..5f70d409338 100644
--- a/src/mame/drivers/hh_hmcs40.cpp
+++ b/src/mame/drivers/hh_hmcs40.cpp
@@ -375,7 +375,7 @@ WRITE8_MEMBER(bambball_state::plate_w)
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);
}
@@ -484,8 +484,8 @@ 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);
}
@@ -623,8 +623,8 @@ 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);
}
@@ -755,8 +755,8 @@ WRITE8_MEMBER(packmon_state::plate_w)
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);
}
@@ -865,8 +865,8 @@ 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);
}
@@ -997,8 +997,8 @@ WRITE8_MEMBER(bzaxxon_state::plate_w)
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);
}
@@ -1117,8 +1117,8 @@ WRITE8_MEMBER(zackman_state::plate_w)
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);
}
@@ -1232,8 +1232,8 @@ 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);
}
@@ -1360,8 +1360,8 @@ 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);
}
@@ -1485,8 +1485,8 @@ WRITE8_MEMBER(bdoramon_state::plate_w)
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);
}
@@ -1584,8 +1584,8 @@ WRITE8_MEMBER(bultrman_state::plate_w)
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);
}
@@ -1672,7 +1672,7 @@ 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);
}
@@ -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)
@@ -1924,7 +1924,7 @@ WRITE8_MEMBER(alnattck_state::plate_w)
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);
}
@@ -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);
}
@@ -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);
}
@@ -2307,8 +2307,8 @@ WRITE8_MEMBER(cpacman_state::plate_w)
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);
}
@@ -2424,8 +2424,8 @@ WRITE8_MEMBER(cmspacmn_state::plate_w)
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);
}
@@ -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;
@@ -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);
}
@@ -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
}
@@ -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);
}
@@ -3166,8 +3166,8 @@ WRITE8_MEMBER(ghalien_state::plate_w)
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);
}
@@ -3285,8 +3285,8 @@ WRITE8_MEMBER(gckong_state::plate_w)
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);
}
@@ -3408,7 +3408,7 @@ WRITE8_MEMBER(gdigdug_state::plate_w)
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);
}
@@ -3528,7 +3528,7 @@ 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);
}
@@ -3688,7 +3688,7 @@ WRITE8_MEMBER(pbqbert_state::plate_w)
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);
}
@@ -3776,8 +3776,8 @@ 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);
}
@@ -3897,8 +3897,8 @@ 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);
}
@@ -4023,7 +4023,7 @@ WRITE8_MEMBER(vinvader_state::plate_w)
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);
}
diff --git a/src/mame/drivers/hh_melps4.cpp b/src/mame/drivers/hh_melps4.cpp
index f5028008831..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);
}
@@ -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);
}
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 9fc771ed7e3..97cf885532a 100644
--- a/src/mame/drivers/hh_sm510.cpp
+++ b/src/mame/drivers/hh_sm510.cpp
@@ -13,6 +13,7 @@
TODO:
- 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)
+ - identify lcd segments for tgaiden
***************************************************************************/
@@ -1896,6 +1897,107 @@ 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
@@ -2075,6 +2177,98 @@ 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
@@ -2401,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
@@ -2410,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
@@ -2747,6 +2941,99 @@ 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
@@ -3099,6 +3386,15 @@ ROM_START( tkarnov )
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) )
@@ -3117,6 +3413,15 @@ ROM_START( tsharr2 )
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) )
@@ -3183,6 +3488,15 @@ 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) )
@@ -3224,8 +3538,10 @@ CONS( 1989, tgaunt, 0, 0, tgaunt, tgaunt, tgaunt_state, 0, "T
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, tbtoads, 0, 0, tbtoads, tbtoads, tbtoads_state, 0, "Tiger Electronics (licensed from Rare/Tradewest)", "Battletoads (handheld)", MACHINE_SUPPORTS_SAVE )
@@ -3233,4 +3549,5 @@ CONS( 1992, tsonic, 0, 0, tsonic, tsonic, tsonic_state, 0, "T
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 )
diff --git a/src/mame/drivers/hh_tms1k.cpp b/src/mame/drivers/hh_tms1k.cpp
index be2a9f5bf23..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
@@ -1775,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;
}
@@ -1807,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();
}
@@ -3894,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();
}
@@ -4133,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);
}
@@ -4385,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);
}
@@ -4637,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;
@@ -4774,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)
@@ -5332,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);
@@ -6519,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);
@@ -7090,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;
diff --git a/src/mame/drivers/hh_ucom4.cpp b/src/mame/drivers/hh_ucom4.cpp
index bad818daab8..79293b89db2 100644
--- a/src/mame/drivers/hh_ucom4.cpp
+++ b/src/mame/drivers/hh_ucom4.cpp
@@ -281,8 +281,8 @@ 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);
}
@@ -394,7 +394,7 @@ 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);
}
@@ -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);
}
@@ -661,8 +661,8 @@ 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);
}
@@ -771,7 +771,7 @@ 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);
}
@@ -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);
}
@@ -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);
}
@@ -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);
}
@@ -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);
}
@@ -1467,8 +1467,8 @@ 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);
}
@@ -1746,8 +1746,8 @@ 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);
}
@@ -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);
}
@@ -2229,8 +2229,8 @@ 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);
}
@@ -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);
}
@@ -2436,8 +2436,8 @@ 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);
}
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/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,
7, 6, 5, 4,
3, 2, 1, 0 );
@@ -162,13 +162,13 @@ DRIVER_INIT_MEMBER(md_boot_state,hshavoc)
/* START e? from e80000 to end you need THIS ALONE to match the genesis rom */
for (x = rom_size / 2; x < 0x100000 / 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,
11,0, 8, 9 );
- src[x] = BITSWAP16(src[x],
+ src[x] = bitswap<16>(src[x],
15,14,13,12,
11,10,9, 2,
7, 6, 5, 4,
@@ -192,7 +192,7 @@ DRIVER_INIT_MEMBER(md_boot_state,hshavoc)
{
src[x] ^= 0x0107; //? seems conditional..
- src[x] = BITSWAP16(src[x],
+ src[x] = bitswap<16>(src[x],
15,13,14,12,
11,10,9, 0,
8, 6, 5, 4,
diff --git a/src/mame/drivers/hyprduel.cpp b/src/mame/drivers/hyprduel.cpp
index 18ff03e7846..4d31a179bc8 100644
--- a/src/mame/drivers/hyprduel.cpp
+++ b/src/mame/drivers/hyprduel.cpp
@@ -276,7 +276,7 @@ void hyprduel_state::blt_write( address_space &space, const int tmap, const offs
case 2: vram_1_w(space, offs, data, mask); break;
case 3: vram_2_w(space, offs, data, mask); break;
}
-// logerror("%s : Blitter %X] %04X <- %04X & %04X\n", space.machine().describe_context(), tmap, offs, data, mask);
+// logerror("%s : Blitter %X] %04X <- %04X & %04X\n", machine().describe_context(), tmap, offs, data, mask);
}
diff --git a/src/mame/drivers/igs011.cpp b/src/mame/drivers/igs011.cpp
index 5e4ae3856fd..dd9ead31478 100644
--- a/src/mame/drivers/igs011.cpp
+++ b/src/mame/drivers/igs011.cpp
@@ -827,7 +827,7 @@ void igs011_state::lhb2_decrypt()
if ((i & 0x3080) != 0x3080 && (i & 0x3090) != 0x3010)
x ^= 0x0020;
- j = BITSWAP24(i, 23,22,21,20,19,18,17,16,15,14,13, 8, 11,10, 9, 2, 7,6,5,4,3, 12, 1,0);
+ j = bitswap<24>(i, 23,22,21,20,19,18,17,16,15,14,13, 8, 11,10, 9, 2, 7,6,5,4,3, 12, 1,0);
result_data[j] = x;
}
@@ -849,7 +849,7 @@ void igs011_state::nkishusp_decrypt()
uint16_t x = src[i];
// lhb2 address scrambling
- j = BITSWAP24(i, 23,22,21,20,19,18,17,16,15,14,13, 8, 11,10, 9, 2, 7,6,5,4,3, 12, 1,0);
+ j = bitswap<24>(i, 23,22,21,20,19,18,17,16,15,14,13, 8, 11,10, 9, 2, 7,6,5,4,3, 12, 1,0);
// ryukobou xor:
@@ -1047,7 +1047,7 @@ void igs011_state::lhb2_gfx_decrypt()
std::vector<uint8_t> result_data(rom_size);
for (i=0; i<rom_size; i++)
- result_data[i] = src[BITSWAP24(i, 23,22,21,20, 19, 17,16,15, 13,12, 10,9,8,7,6,5,4, 2,1, 3, 11, 14, 18, 0)];
+ result_data[i] = src[bitswap<24>(i, 23,22,21,20, 19, 17,16,15, 13,12, 10,9,8,7,6,5,4, 2,1, 3, 11, 14, 18, 0)];
memcpy(src,&result_data[0],rom_size);
}
@@ -1060,7 +1060,7 @@ void igs011_state::drgnwrld_gfx_decrypt()
std::vector<uint8_t> result_data(rom_size);
for (i=0; i<rom_size; i++)
- result_data[i] = src[BITSWAP24(i, 23,22,21,20,19,18,17,16,15, 12, 13, 14, 11,10,9,8,7,6,5,4,3,2,1,0)];
+ result_data[i] = src[bitswap<24>(i, 23,22,21,20,19,18,17,16,15, 12, 13, 14, 11,10,9,8,7,6,5,4,3,2,1,0)];
memcpy(src,&result_data[0],rom_size);
}
@@ -1742,7 +1742,7 @@ READ16_MEMBER(igs011_state::lhb2_igs003_r)
break;
case 0x03:
- return BITSWAP16(m_igs003_prot_hold, 14,11,8,6,4,3,1,0, 5,2,9,7,10,13,12,15) & 0xff;
+ return bitswap<16>(m_igs003_prot_hold, 14,11,8,6,4,3,1,0, 5,2,9,7,10,13,12,15) & 0xff;
// Protection:
// 0544FE: 20 21 22 24 25 26 27 28 2A 2B 2C 2D 2E 30 31 32 33 34
@@ -2010,7 +2010,7 @@ READ16_MEMBER(igs011_state::vbowl_igs003_r)
case 0x01: return ioport("IN1")->read();
case 0x03:
- return BITSWAP16(m_igs003_prot_hold, 14,11,8,6,4,3,1,0, 5,2,9,7,10,13,12,15) & 0xff;
+ return bitswap<16>(m_igs003_prot_hold, 14,11,8,6,4,3,1,0, 5,2,9,7,10,13,12,15) & 0xff;
case 0x20: return 0x49;
case 0x21: return 0x47;
diff --git a/src/mame/drivers/igs017.cpp b/src/mame/drivers/igs017.cpp
index f88b3511c7e..f71cb186a5e 100644
--- a/src/mame/drivers/igs017.cpp
+++ b/src/mame/drivers/igs017.cpp
@@ -225,24 +225,24 @@ uint16_t igs017_state::mgcs_palette_bitswap(uint16_t bgr)
{
bgr = ((bgr & 0xff00) >> 8) | ((bgr & 0x00ff) << 8);
- return BITSWAP16(bgr, 7, 8, 9, 2, 14, 3, 13, 15, 12, 11, 10, 0, 1, 4, 5, 6);
+ return bitswap<16>(bgr, 7, 8, 9, 2, 14, 3, 13, 15, 12, 11, 10, 0, 1, 4, 5, 6);
}
uint16_t igs017_state::lhzb2a_palette_bitswap(uint16_t bgr)
{
// bgr = ((bgr & 0xff00) >> 8) | ((bgr & 0x00ff) << 8);
- return BITSWAP16(bgr, 15,9,13,12,11,5,4,8,7,6,0,14,3,2,1,10);
+ return bitswap<16>(bgr, 15,9,13,12,11,5,4,8,7,6,0,14,3,2,1,10);
}
uint16_t igs017_state::tjsb_palette_bitswap(uint16_t bgr)
{
// bitswap
- return BITSWAP16(bgr, 15,12,3,6,10,5,4,2,9,13,8,7,11,1,0,14);
+ return bitswap<16>(bgr, 15,12,3,6,10,5,4,2,9,13,8,7,11,1,0,14);
}
uint16_t igs017_state::slqz2_palette_bitswap(uint16_t bgr)
{
- return BITSWAP16(bgr, 15,14,9,4,11,10,12,3,7,6,5,8,13,2,1,0);
+ return bitswap<16>(bgr, 15,14,9,4,11,10,12,3,7,6,5,8,13,2,1,0);
}
@@ -297,7 +297,7 @@ void igs017_state::decrypt_program_rom(int mask, int a7, int a6, int a5, int a4,
// address lines swap
for (i = 0;i < length;i++)
{
- int addr = (i & ~0xff) | BITSWAP8(i,a7,a6,a5,a4,a3,a2,a1,a0);
+ int addr = (i & ~0xff) | bitswap<8>(i,a7,a6,a5,a4,a3,a2,a1,a0);
rom[i] = tmp[addr];
}
@@ -363,7 +363,7 @@ void igs017_state::tjsb_decrypt_sprites()
memcpy(tmp.get(), rom, length);
for (i = 0; i < length; i++)
{
- addr = (i & ~0xff) | BITSWAP8(i,7,6,5,2,1,4,3,0);
+ addr = (i & ~0xff) | bitswap<8>(i,7,6,5,2,1,4,3,0);
rom[i] = tmp[addr];
}
@@ -371,7 +371,7 @@ void igs017_state::tjsb_decrypt_sprites()
for (i = 0; i < length; i += 2)
{
uint16_t data = (rom[i+1] << 8) | rom[i+0]; // x-22222-11111-00000
- data = BITSWAP16(data, 15, 14,13,12,11,10, 9,1,7,6,5, 4,3,2,8,0);
+ data = bitswap<16>(data, 15, 14,13,12,11,10, 9,1,7,6,5, 4,3,2,8,0);
rom[i+0] = data;
rom[i+1] = data >> 8;
}
@@ -447,8 +447,8 @@ void igs017_state::mgcs_decrypt_tiles()
memcpy(&tmp[0],rom,length);
for (i = 0;i < length;i++)
{
- int addr = (i & ~0xffff) | BITSWAP16(i,15,14,13,12,11,10,6,7,8,9,5,4,3,2,1,0);
- rom[i^1] = BITSWAP8(tmp[addr],0,1,2,3,4,5,6,7);
+ int addr = (i & ~0xffff) | bitswap<16>(i,15,14,13,12,11,10,6,7,8,9,5,4,3,2,1,0);
+ rom[i^1] = bitswap<8>(tmp[addr],0,1,2,3,4,5,6,7);
}
}
@@ -463,10 +463,10 @@ void igs017_state::mgcs_flip_sprites()
uint16_t pixels = (rom[i+1] << 8) | rom[i+0];
// flip bits
- pixels = BITSWAP16(pixels,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
+ pixels = bitswap<16>(pixels,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
// flip pixels
- pixels = BITSWAP16(pixels,15, 0,1,2,3,4, 5,6,7,8,9, 10,11,12,13,14);
+ pixels = bitswap<16>(pixels,15, 0,1,2,3,4, 5,6,7,8,9, 10,11,12,13,14);
rom[i+0] = pixels;
rom[i+1] = pixels >> 8;
@@ -507,8 +507,8 @@ void igs017_state::tarzan_decrypt_tiles()
memcpy(&tmp[0],rom,length);
for (i = 0;i < length;i++)
{
- int addr = (i & ~0xffff) | BITSWAP16(i,15,14,13,12,11,7,8,6,10,9,5,4,3,2,1,0);
- rom[i] = BITSWAP8(tmp[addr],0,1,2,3,4,5,6,7);
+ int addr = (i & ~0xffff) | bitswap<16>(i,15,14,13,12,11,7,8,6,10,9,5,4,3,2,1,0);
+ rom[i] = bitswap<8>(tmp[addr],0,1,2,3,4,5,6,7);
}
}
@@ -765,7 +765,7 @@ void igs017_state::lhzb2_decrypt_tiles()
memcpy(&tmp[0], rom, length);
for (i = 0; i < length; i++)
{
- addr = (i & ~0xffffff) | BITSWAP24(i,23,22,21,20,19,18,17,1,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,0);
+ addr = (i & ~0xffffff) | bitswap<24>(i,23,22,21,20,19,18,17,1,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,0);
rom[i] = tmp[addr];
}
}
@@ -781,7 +781,7 @@ void igs017_state::lhzb2_decrypt_sprites()
memcpy(tmp.get(), rom, length);
for (i = 0; i < length; i++)
{
- addr = (i & ~0xffff) | BITSWAP16(i,15,14,13,6,7,10,9,8,11,12,5,4,3,2,1,0);
+ addr = (i & ~0xffff) | bitswap<16>(i,15,14,13,6,7,10,9,8,11,12,5,4,3,2,1,0);
rom[i] = tmp[addr];
}
@@ -789,7 +789,7 @@ void igs017_state::lhzb2_decrypt_sprites()
for (i = 0;i < length;i+=2)
{
uint16_t data = (rom[i+1] << 8) | rom[i+0]; // x-22222-11111-00000
- data = BITSWAP16(data, 15, 7,6,5,4,3, 2,1,0,14,13, 12,11,10,9,8);
+ data = bitswap<16>(data, 15, 7,6,5,4,3, 2,1,0,14,13, 12,11,10,9,8);
rom[i+0] = data;
rom[i+1] = data >> 8;
}
@@ -989,7 +989,7 @@ void igs017_state::slqz2_decrypt_tiles()
memcpy(&tmp[0],rom,length);
for (i = 0;i < length;i++)
{
- int addr = (i & ~0xff) | BITSWAP8(i,7,4,5,6,3,2,1,0);
+ int addr = (i & ~0xff) | bitswap<8>(i,7,4,5,6,3,2,1,0);
rom[i] = tmp[addr];
}
}
@@ -1096,9 +1096,9 @@ void igs017_state::spkrform_decrypt_sprites()
for (i = 0; i < length; i++)
{
if (i & 0x80000)
- addr = (i & ~0xff) | BITSWAP8(i,7,6,3,4,5,2,1,0);
+ addr = (i & ~0xff) | bitswap<8>(i,7,6,3,4,5,2,1,0);
else
- addr = (i & ~0xffff) | BITSWAP16(i,15,14,13,12,11,10, 4, 8,7,6,5, 9,3,2,1,0);
+ addr = (i & ~0xffff) | bitswap<16>(i,15,14,13,12,11,10, 4, 8,7,6,5, 9,3,2,1,0);
rom[i] = tmp[addr];
}
@@ -1412,7 +1412,7 @@ READ16_MEMBER(igs017_state::mgcs_magic_r)
case 0x01:
{
- uint16_t ret = BITSWAP8( (BITSWAP8(m_scramble_data, 0,1,2,3,4,5,6,7) + 1) & 3, 4,5,6,7, 0,1,2,3);
+ uint16_t ret = bitswap<8>( (bitswap<8>(m_scramble_data, 0,1,2,3,4,5,6,7) + 1) & 3, 4,5,6,7, 0,1,2,3);
logerror("%s: reading %02x from igs_magic = %02x\n", machine().describe_context(), ret, m_igs_magic[0]);
return ret;
}
@@ -1627,7 +1627,7 @@ READ16_MEMBER(igs017_state::mgdha_magic_r)
return ioport("BUTTONS")->read();
case 0x02:
- return BITSWAP8(ioport("DSW2")->read(), 0,1,2,3,4,5,6,7);
+ return bitswap<8>(ioport("DSW2")->read(), 0,1,2,3,4,5,6,7);
case 0x03:
{
diff --git a/src/mame/drivers/igs_m027.cpp b/src/mame/drivers/igs_m027.cpp
index a2389ee2a6a..d3932cfb485 100644
--- a/src/mame/drivers/igs_m027.cpp
+++ b/src/mame/drivers/igs_m027.cpp
@@ -212,7 +212,7 @@ void igs_m027_state::sdwx_gfx_decrypt()
std::vector<uint8_t> result_data(rom_size);
for (i=0; i<rom_size; i++)
- result_data[i] = src[BITSWAP24(i, 23,22,21,20,19,18,17,16,15,14,13,12,11,8,7,6,10,9,5,4,3,2,1,0)];
+ result_data[i] = src[bitswap<24>(i, 23,22,21,20,19,18,17,16,15,14,13,12,11,8,7,6,10,9,5,4,3,2,1,0)];
for (i=0; i<rom_size; i+=0x200)
{
diff --git a/src/mame/drivers/igspoker.cpp b/src/mame/drivers/igspoker.cpp
index 5b805f32731..882bf27b7b1 100644
--- a/src/mame/drivers/igspoker.cpp
+++ b/src/mame/drivers/igspoker.cpp
@@ -2605,7 +2605,7 @@ DRIVER_INIT_MEMBER(igspoker_state,number10)
memcpy(&tmp[0],rom,length);
for (A = 0; A < length; A++)
{
- int addr = (A & ~0xffff) | BITSWAP16(A,15,14,13,12,11,10,9,8,7,6,5,4,3,0,1,2);
+ int addr = (A & ~0xffff) | bitswap<16>(A,15,14,13,12,11,10,9,8,7,6,5,4,3,0,1,2);
rom[A] = tmp[addr];
}
}
diff --git a/src/mame/drivers/inder.cpp b/src/mame/drivers/inder.cpp
index ae429be67d7..230c3c4cc25 100644
--- a/src/mame/drivers/inder.cpp
+++ b/src/mame/drivers/inder.cpp
@@ -1121,7 +1121,7 @@ WRITE8_MEMBER( inder_state::sw_w )
WRITE8_MEMBER( inder_state::sn_w )
{
- m_sn->write(space, 0, BITSWAP8(data, 0, 1, 2, 3, 4, 5, 6, 7));
+ m_sn->write(space, 0, bitswap<8>(data, 0, 1, 2, 3, 4, 5, 6, 7));
}
WRITE8_MEMBER( inder_state::sndcmd_lapbylap_w )
diff --git a/src/mame/drivers/itech32.cpp b/src/mame/drivers/itech32.cpp
index 505d4751d03..70b234a9326 100644
--- a/src/mame/drivers/itech32.cpp
+++ b/src/mame/drivers/itech32.cpp
@@ -1678,7 +1678,7 @@ static MACHINE_CONFIG_START( timekill )
MCFG_CPU_PROGRAM_MAP(timekill_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", itech32_state, generate_int1)
- MCFG_CPU_ADD("soundcpu", M6809, SOUND_CLOCK/8)
+ MCFG_CPU_ADD("soundcpu", MC6809, SOUND_CLOCK/2)
MCFG_CPU_PROGRAM_MAP(sound_map)
MCFG_NVRAM_ADD_CUSTOM_DRIVER("nvram", itech32_state, nvram_init)
diff --git a/src/mame/drivers/itech8.cpp b/src/mame/drivers/itech8.cpp
index d88579c3b80..e20d83eef9e 100644
--- a/src/mame/drivers/itech8.cpp
+++ b/src/mame/drivers/itech8.cpp
@@ -536,7 +536,7 @@ void itech8_state::update_interrupts(int periodic, int tms34061, int blitter)
if (blitter != -1) m_blitter_int = blitter;
/* handle the 6809 case */
- if (main_cpu_type == M6809 || main_cpu_type == HD6309)
+ if (main_cpu_type == MC6809 || main_cpu_type == HD6309)
{
/* just modify lines that have changed */
if (periodic != -1) m_maincpu->set_input_line(INPUT_LINE_NMI, periodic ? ASSERT_LINE : CLEAR_LINE);
@@ -625,7 +625,7 @@ void itech8_state::machine_reset()
device_type main_cpu_type = m_maincpu->type();
/* make sure bank 0 is selected */
- if (main_cpu_type == M6809 || main_cpu_type == HD6309)
+ if (main_cpu_type == MC6809 || main_cpu_type == HD6309)
{
membank("bank1")->set_entry(0);
m_maincpu->reset();
@@ -1668,7 +1668,7 @@ WRITE_LINE_MEMBER(itech8_state::generate_tms34061_interrupt)
static MACHINE_CONFIG_START( itech8_core_lo )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M6809, CLOCK_8MHz/4)
+ MCFG_CPU_ADD("maincpu", MC6809, CLOCK_8MHz)
MCFG_CPU_PROGRAM_MAP(tmslo_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", itech8_state, generate_nmi)
@@ -1710,7 +1710,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( itech8_sound_ym2203 )
/* basic machine hardware */
- MCFG_CPU_ADD("soundcpu", M6809, CLOCK_8MHz/4)
+ MCFG_CPU_ADD("soundcpu", MC6809, CLOCK_8MHz)
MCFG_CPU_PROGRAM_MAP(sound2203_map)
/* sound hardware */
@@ -1730,7 +1730,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( itech8_sound_ym2608b )
/* basic machine hardware */
- MCFG_CPU_ADD("soundcpu", M6809, CLOCK_8MHz/4)
+ MCFG_CPU_ADD("soundcpu", MC6809, CLOCK_8MHz)
MCFG_CPU_PROGRAM_MAP(sound2608b_map)
/* sound hardware */
@@ -1744,7 +1744,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( itech8_sound_ym3812 )
/* basic machine hardware */
- MCFG_CPU_ADD("soundcpu", M6809, CLOCK_8MHz/4)
+ MCFG_CPU_ADD("soundcpu", MC6809, CLOCK_8MHz)
MCFG_CPU_PROGRAM_MAP(sound3812_map)
MCFG_DEVICE_ADD("pia", PIA6821, 0)
@@ -1765,7 +1765,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( itech8_sound_ym3812_external )
/* basic machine hardware */
- MCFG_CPU_ADD("soundcpu", M6809, CLOCK_8MHz/4)
+ MCFG_CPU_ADD("soundcpu", MC6809, CLOCK_8MHz)
MCFG_CPU_PROGRAM_MAP(sound3812_external_map)
/* sound hardware */
diff --git a/src/mame/drivers/jack.cpp b/src/mame/drivers/jack.cpp
index eccc17deb26..9bcf5b51ea5 100644
--- a/src/mame/drivers/jack.cpp
+++ b/src/mame/drivers/jack.cpp
@@ -1590,16 +1590,16 @@ DRIVER_INIT_MEMBER(jack_state,striv)
if (A & 0x1000)
{
if (A & 4)
- ROM[A] = BITSWAP8(data,7,2,5,1,3,6,4,0) ^ 1;
+ ROM[A] = bitswap<8>(data,7,2,5,1,3,6,4,0) ^ 1;
else
- ROM[A] = BITSWAP8(data,0,2,5,1,3,6,4,7) ^ 0x81;
+ ROM[A] = bitswap<8>(data,0,2,5,1,3,6,4,7) ^ 0x81;
}
else
{
if (A & 4)
- ROM[A] = BITSWAP8(data,7,2,5,1,3,6,4,0) ^ 1;
+ ROM[A] = bitswap<8>(data,7,2,5,1,3,6,4,0) ^ 1;
else
- ROM[A] = BITSWAP8(data,0,2,5,1,3,6,4,7);
+ ROM[A] = bitswap<8>(data,0,2,5,1,3,6,4,7);
}
}
diff --git a/src/mame/drivers/jclub2.cpp b/src/mame/drivers/jclub2.cpp
index 7ee386c5b59..096d73fbf49 100644
--- a/src/mame/drivers/jclub2.cpp
+++ b/src/mame/drivers/jclub2.cpp
@@ -1499,7 +1499,7 @@ DRIVER_INIT_MEMBER(darkhors_state,darkhors)
std::vector<uint8_t> temp(len);
for (int i = 0; i < len; i++)
- temp[i] = eeprom[BITSWAP8(i,7,5,4,3,2,1,0,6)];
+ temp[i] = eeprom[bitswap<8>(i,7,5,4,3,2,1,0,6)];
memcpy(eeprom, &temp[0], len);
}
diff --git a/src/mame/drivers/jongkyo.cpp b/src/mame/drivers/jongkyo.cpp
index 6e0eb848ba5..082da98218e 100644
--- a/src/mame/drivers/jongkyo.cpp
+++ b/src/mame/drivers/jongkyo.cpp
@@ -564,7 +564,7 @@ DRIVER_INIT_MEMBER(jongkyo_state,jongkyo)
/* first of all, do a simple bitswap */
for (int i = 0x6000; i < 0x8c00; ++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);
}
uint8_t *opcodes = auto_alloc_array(machine(), uint8_t, 0x6c00+0x400*8);
diff --git a/src/mame/drivers/jp.cpp b/src/mame/drivers/jp.cpp
index 821f220e71f..d66d3ba3477 100644
--- a/src/mame/drivers/jp.cpp
+++ b/src/mame/drivers/jp.cpp
@@ -256,7 +256,7 @@ void jp_state::update_display()
if (t == 8)
{ // ball number
segment = m_disp_data >> 6;
- output().set_digit_value(94, BITSWAP8(segment, 0, 1, 2, 3, 4, 5, 6, 7) ^ 0xff);
+ output().set_digit_value(94, bitswap<8>(segment, 0, 1, 2, 3, 4, 5, 6, 7) ^ 0xff);
}
else if (t < 8)
{ // main displays
diff --git a/src/mame/drivers/k28.cpp b/src/mame/drivers/k28.cpp
index c78a73c7f81..965bf62f0b3 100644
--- a/src/mame/drivers/k28.cpp
+++ b/src/mame/drivers/k28.cpp
@@ -337,7 +337,7 @@ WRITE_LINE_MEMBER(k28_state::mcu_prog_w)
// output 0-15: digit segment data
u16 seg_data = (u16)(m_vfd_shiftreg >> 19);
- seg_data = BITSWAP16(seg_data,0,1,13,9,10,12,14,8,3,4,5,2,15,11,6,7);
+ seg_data = bitswap<16>(seg_data,0,1,13,9,10,12,14,8,3,4,5,2,15,11,6,7);
// output 16-24: digit select
u16 digit_sel = (u16)(m_vfd_shiftreg >> 10) & 0x1ff;
diff --git a/src/mame/drivers/kaneko16.cpp b/src/mame/drivers/kaneko16.cpp
index a39e9728918..7e535c74755 100644
--- a/src/mame/drivers/kaneko16.cpp
+++ b/src/mame/drivers/kaneko16.cpp
@@ -278,14 +278,14 @@ WRITE16_MEMBER(kaneko16_berlwall_state::berlwall_oki_w)
READ16_MEMBER(kaneko16_berlwall_state::berlwall_spriteram_r)
{
- offset = BITSWAP16(offset, 15, 14, 13, 12, 2, 11, 10, 9, 8, 7, 6, 5, 4, 3, 1, 0);
+ offset = bitswap<16>(offset, 15, 14, 13, 12, 2, 11, 10, 9, 8, 7, 6, 5, 4, 3, 1, 0);
offset ^= 0x800;
return m_spriteram[offset];
}
WRITE16_MEMBER(kaneko16_berlwall_state::berlwall_spriteram_w)
{
- offset = BITSWAP16(offset, 15, 14, 13, 12, 2, 11, 10, 9, 8, 7, 6, 5, 4, 3, 1, 0);
+ offset = bitswap<16>(offset, 15, 14, 13, 12, 2, 11, 10, 9, 8, 7, 6, 5, 4, 3, 1, 0);
offset ^= 0x800;
COMBINE_DATA(&m_spriteram[offset]);
}
@@ -294,7 +294,7 @@ READ16_MEMBER(kaneko16_berlwall_state::berlwall_spriteregs_r)
{
if (offset & 0x4)
return 0;
- offset = BITSWAP8(offset, 7, 6, 5, 2, 4, 3, 1, 0);
+ offset = bitswap<8>(offset, 7, 6, 5, 2, 4, 3, 1, 0);
return m_kaneko_spr->kaneko16_sprites_regs_r(space, offset, mem_mask);
}
@@ -302,7 +302,7 @@ WRITE16_MEMBER(kaneko16_berlwall_state::berlwall_spriteregs_w)
{
if (offset & 0x4)
return;
- offset = BITSWAP8(offset, 7, 6, 5, 2, 4, 3, 1, 0);
+ offset = bitswap<8>(offset, 7, 6, 5, 2, 4, 3, 1, 0);
m_kaneko_spr->kaneko16_sprites_regs_w(space, offset, data, mem_mask);
}
diff --git a/src/mame/drivers/kas89.cpp b/src/mame/drivers/kas89.cpp
index d2a067c118f..cf1bddcac47 100644
--- a/src/mame/drivers/kas89.cpp
+++ b/src/mame/drivers/kas89.cpp
@@ -841,7 +841,7 @@ DRIVER_INIT_MEMBER(kas89_state,kas89)
/* Unscrambling data lines */
for ( i = 0; i < memsize; i++ )
{
- mem[i] = BITSWAP8(mem[i], 3, 1, 0, 5, 6, 4, 7, 2);
+ mem[i] = bitswap<8>(mem[i], 3, 1, 0, 5, 6, 4, 7, 2);
}
/* Unscrambling address lines */
@@ -849,7 +849,7 @@ DRIVER_INIT_MEMBER(kas89_state,kas89)
memcpy(&buf[0], mem, memsize);
for ( i = 0; i < memsize; i++ )
{
- mem[BITSWAP16(i, 15, 14, 5, 6, 3, 0, 12, 1, 9, 13, 4, 7, 10, 8, 2, 11)] = buf[i];
+ mem[bitswap<16>(i, 15, 14, 5, 6, 3, 0, 12, 1, 9, 13, 4, 7, 10, 8, 2, 11)] = buf[i];
}
}
diff --git a/src/mame/drivers/kingdrby.cpp b/src/mame/drivers/kingdrby.cpp
index 90f87d7b628..36f94ac3055 100644
--- a/src/mame/drivers/kingdrby.cpp
+++ b/src/mame/drivers/kingdrby.cpp
@@ -904,7 +904,7 @@ PALETTE_INIT_MEMBER(kingdrby_state,kingdrbb)
for(i = 0; i < 0x200; i++)
{
/* this set has an extra address line shuffle applied on the prom */
- prom[i] = raw_prom[BITSWAP16(i, 15,14,13,12,11,10,9,8,7,6,5,0,1,2,3,4)+0x1000];
+ prom[i] = raw_prom[bitswap<16>(i, 15,14,13,12,11,10,9,8,7,6,5,0,1,2,3,4)+0x1000];
}
for(i = 0; i < 0x200; i++)
diff --git a/src/mame/drivers/konmedal.cpp b/src/mame/drivers/konmedal.cpp
index 56192816639..65751aec191 100644
--- a/src/mame/drivers/konmedal.cpp
+++ b/src/mame/drivers/konmedal.cpp
@@ -494,4 +494,4 @@ ROM_END
GAME( 1995, tsukande, 0, tsukande, konmedal, konmedal_state, 0, ROT0, "Konami", "Tsukande Toru Chicchi", MACHINE_NOT_WORKING)
GAME( 1995, ddboy, 0, ddboy, konmedal, konmedal_state, 0, ROT0, "Konami", "Dam Dam Boy", MACHINE_NOT_WORKING)
-GAME( 1993, shuriboy, 0, shuriboy, konmedal, konmedal_state, 0, ROT0, "Konami", "Suriken Boy", MACHINE_IS_SKELETON)
+GAME( 1993, shuriboy, 0, shuriboy, konmedal, konmedal_state, 0, ROT0, "Konami", "Shuriken Boy", MACHINE_IS_SKELETON)
diff --git a/src/mame/drivers/kurukuru.cpp b/src/mame/drivers/kurukuru.cpp
index d9c774e9b76..1494be17b4c 100644
--- a/src/mame/drivers/kurukuru.cpp
+++ b/src/mame/drivers/kurukuru.cpp
@@ -604,7 +604,7 @@ WRITE8_MEMBER(kurukuru_state::kurukuru_adpcm_reset_w)
bit 2 = S2
bit 3 = S1
*/
- m_adpcm->playmode_w(BITSWAP8((data>>1), 7,6,5,4,3,0,1,2));
+ m_adpcm->playmode_w(bitswap<8>((data>>1), 7,6,5,4,3,0,1,2));
m_adpcm->reset_w(data & 1);
}
diff --git a/src/mame/drivers/laser3k.cpp b/src/mame/drivers/laser3k.cpp
index 147122baf07..665693ce2e2 100644
--- a/src/mame/drivers/laser3k.cpp
+++ b/src/mame/drivers/laser3k.cpp
@@ -465,10 +465,10 @@ READ8_MEMBER( laser3k_state::io2_r )
switch (offset)
{
case 0xc2: // h-blank status
- return space.machine().first_screen()->hblank() ? 0x80 : 0x00;
+ return machine().first_screen()->hblank() ? 0x80 : 0x00;
case 0xc3: // v-blank status
- return space.machine().first_screen()->vblank() ? 0x80 : 0x00;
+ return machine().first_screen()->vblank() ? 0x80 : 0x00;
case 0xc5: // CPU 1/2 MHz status?
return 0x00;
diff --git a/src/mame/drivers/lasso.cpp b/src/mame/drivers/lasso.cpp
index c391fdcc18d..2cf4d92ba2a 100644
--- a/src/mame/drivers/lasso.cpp
+++ b/src/mame/drivers/lasso.cpp
@@ -64,7 +64,7 @@ READ8_MEMBER(lasso_state::sound_status_r)
WRITE8_MEMBER(lasso_state::sound_select_w)
{
- uint8_t to_write = BITSWAP8(*m_chip_data, 0, 1, 2, 3, 4, 5, 6, 7);
+ uint8_t to_write = bitswap<8>(*m_chip_data, 0, 1, 2, 3, 4, 5, 6, 7);
if (~data & 0x01) /* chip #0 */
m_sn_1->write(space, 0, to_write);
diff --git a/src/mame/drivers/lbeach.cpp b/src/mame/drivers/lbeach.cpp
index fd9e89deb9f..2ecda224a5a 100644
--- a/src/mame/drivers/lbeach.cpp
+++ b/src/mame/drivers/lbeach.cpp
@@ -202,7 +202,7 @@ WRITE8_MEMBER(lbeach_state::lbeach_fg_vram_w)
READ8_MEMBER(lbeach_state::lbeach_in1_r)
{
// d6,7(steering wheel) need to be swapped
- return BITSWAP8(ioport("IN1")->read(),6,7,5,4,3,2,1,0);
+ return bitswap<8>(ioport("IN1")->read(),6,7,5,4,3,2,1,0);
}
READ8_MEMBER(lbeach_state::lbeach_in2_r)
diff --git a/src/mame/drivers/lc80.cpp b/src/mame/drivers/lc80.cpp
index ca64d778460..10335127097 100644
--- a/src/mame/drivers/lc80.cpp
+++ b/src/mame/drivers/lc80.cpp
@@ -164,7 +164,7 @@ WRITE8_MEMBER( lc80_state::pio1_pa_w )
*/
- m_segment = BITSWAP8(~data, 4, 3, 1, 6, 7, 5, 0, 2);
+ m_segment = bitswap<8>(~data, 4, 3, 1, 6, 7, 5, 0, 2);
update_display();
}
diff --git a/src/mame/drivers/legionna.cpp b/src/mame/drivers/legionna.cpp
index 21936a8ed6b..e8646105192 100644
--- a/src/mame/drivers/legionna.cpp
+++ b/src/mame/drivers/legionna.cpp
@@ -1054,7 +1054,7 @@ void legionna_state::descramble_legionnaire_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,
6,5,15,14,13,12,
diff --git a/src/mame/drivers/lemmings.cpp b/src/mame/drivers/lemmings.cpp
index 900a4649a1f..023acc82e7c 100644
--- a/src/mame/drivers/lemmings.cpp
+++ b/src/mame/drivers/lemmings.cpp
@@ -51,7 +51,7 @@ READ16_MEMBER(lemmings_state::lemmings_trackball_r)
READ16_MEMBER( lemmings_state::lem_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;
@@ -60,7 +60,7 @@ READ16_MEMBER( lemmings_state::lem_protection_region_0_146_r )
WRITE16_MEMBER( lemmings_state::lem_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/looping.cpp b/src/mame/drivers/looping.cpp
index 9f0e58c0e4a..610e063c384 100644
--- a/src/mame/drivers/looping.cpp
+++ b/src/mame/drivers/looping.cpp
@@ -913,7 +913,7 @@ DRIVER_INIT_MEMBER(looping_state,looping)
/* bitswap the TMS9995 ROMs */
for (i = 0; i < length; i++)
- rom[i] = BITSWAP8(rom[i], 0,1,2,3,4,5,6,7);
+ rom[i] = bitswap<8>(rom[i], 0,1,2,3,4,5,6,7);
/* install protection handlers */
m_maincpu->space(AS_PROGRAM).install_read_handler(0x7000, 0x7007, read8_delegate(FUNC(looping_state::protection_r), this));
diff --git a/src/mame/drivers/ltcasino.cpp b/src/mame/drivers/ltcasino.cpp
index 05df8f26cd7..37035b365e8 100644
--- a/src/mame/drivers/ltcasino.cpp
+++ b/src/mame/drivers/ltcasino.cpp
@@ -723,7 +723,7 @@ DRIVER_INIT_MEMBER(ltcasino_state,mv4in1)
int i;
uint8_t *rom = memregion("maincpu")->base();
for(i=0;i<0x10000;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);
}
diff --git a/src/mame/drivers/ltd.cpp b/src/mame/drivers/ltd.cpp
index 83c848d8958..f8b14c62515 100644
--- a/src/mame/drivers/ltd.cpp
+++ b/src/mame/drivers/ltd.cpp
@@ -306,7 +306,7 @@ WRITE8_MEMBER( ltd_state::port1_w )
if (m_port2 & 0x10)
{
uint8_t row = m_digit & 15;
- uint8_t segment = BITSWAP8(data, 7, 0, 1, 2, 3, 4, 5, 6);
+ uint8_t segment = bitswap<8>(data, 7, 0, 1, 2, 3, 4, 5, 6);
switch (m_counter)
{
diff --git a/src/mame/drivers/m90.cpp b/src/mame/drivers/m90.cpp
index b121752189a..2ed7cb6e896 100644
--- a/src/mame/drivers/m90.cpp
+++ b/src/mame/drivers/m90.cpp
@@ -1248,10 +1248,10 @@ DRIVER_INIT_MEMBER(m90_state,bomblord)
for (int i = 0; i < 0x100000 / 2; i += 4)
{
- ROM[i+0]=BITSWAP16(ROM[i+0],0xc,0x8,0xd,0xe,0xf,0xb,0xa,0x9,0x6,0x4,0x7,0x3,0x1,0x2,0x0,0x5);
- ROM[i+1]=BITSWAP16(ROM[i+1],0xc,0xb,0xd,0xa,0xe,0x9,0xf,0x8,0x0,0x6,0x1,0x5,0x3,0x4,0x2,0x7);
- ROM[i+2]=BITSWAP16(ROM[i+2],0xd,0x9,0xc,0x8,0xe,0xf,0xa,0xb,0x4,0x7,0x3,0x2,0x5,0x6,0x1,0x0);
- ROM[i+3]=BITSWAP16(ROM[i+3],0xe,0xd,0xf,0x8,0xb,0xa,0x9,0xc,0x6,0x3,0x7,0x5,0x0,0x1,0x4,0x2);
+ ROM[i+0]=bitswap<16>(ROM[i+0],0xc,0x8,0xd,0xe,0xf,0xb,0xa,0x9,0x6,0x4,0x7,0x3,0x1,0x2,0x0,0x5);
+ ROM[i+1]=bitswap<16>(ROM[i+1],0xc,0xb,0xd,0xa,0xe,0x9,0xf,0x8,0x0,0x6,0x1,0x5,0x3,0x4,0x2,0x7);
+ ROM[i+2]=bitswap<16>(ROM[i+2],0xd,0x9,0xc,0x8,0xe,0xf,0xa,0xb,0x4,0x7,0x3,0x2,0x5,0x6,0x1,0x0);
+ ROM[i+3]=bitswap<16>(ROM[i+3],0xe,0xd,0xf,0x8,0xb,0xa,0x9,0xc,0x6,0x3,0x7,0x5,0x0,0x1,0x4,0x2);
}
}
diff --git a/src/mame/drivers/mac128.cpp b/src/mame/drivers/mac128.cpp
index 66321691122..d3404856ef2 100644
--- a/src/mame/drivers/mac128.cpp
+++ b/src/mame/drivers/mac128.cpp
@@ -636,7 +636,7 @@ READ16_MEMBER ( mac128_state::mac_iwm_r )
*/
uint16_t result = 0;
- applefdc_base_device *fdc = space.machine().device<applefdc_base_device>("fdc");
+ applefdc_base_device *fdc = machine().device<applefdc_base_device>("fdc");
result = fdc->read(offset >> 8);
@@ -648,7 +648,7 @@ READ16_MEMBER ( mac128_state::mac_iwm_r )
WRITE16_MEMBER ( mac128_state::mac_iwm_w )
{
- applefdc_base_device *fdc = space.machine().device<applefdc_base_device>("fdc");
+ applefdc_base_device *fdc = machine().device<applefdc_base_device>("fdc");
if (LOG_MAC_IWM)
printf("mac_iwm_w: offset=0x%08x data=0x%04x mask %04x (PC=%x)\n", offset, data, mem_mask, space.device().safe_pc());
diff --git a/src/mame/drivers/madalien.cpp b/src/mame/drivers/madalien.cpp
index 7ca8b8299c8..497830f4e04 100644
--- a/src/mame/drivers/madalien.cpp
+++ b/src/mame/drivers/madalien.cpp
@@ -43,11 +43,11 @@ READ8_MEMBER(madalien_state::shift_r)
READ8_MEMBER(madalien_state::shift_rev_r)
{
uint8_t hi = *m_shift_hi ^ 0x07;
- uint8_t lo = BITSWAP8(*m_shift_lo,0,1,2,3,4,5,6,7);
+ uint8_t lo = bitswap<8>(*m_shift_lo,0,1,2,3,4,5,6,7);
uint8_t ret = shift_common(hi, lo);
- return BITSWAP8(ret,7,0,1,2,3,4,5,6) & 0x7f;
+ return bitswap<8>(ret,7,0,1,2,3,4,5,6) & 0x7f;
}
diff --git a/src/mame/drivers/magictg.cpp b/src/mame/drivers/magictg.cpp
index c5c8b27649a..02d87412bf9 100644
--- a/src/mame/drivers/magictg.cpp
+++ b/src/mame/drivers/magictg.cpp
@@ -351,7 +351,7 @@ static void voodoo_0_pci_w(device_t *busdevice, device_t *device, int function,
#if defined(USE_TWO_3DFX)
static uint32_t voodoo_1_pci_r(device_t *busdevice, device_t *device, int function, int reg, uint32_t mem_mask)
{
- magictg_state* state = space.machine().driver_data<magictg_state>();
+ magictg_state* state = machine().driver_data<magictg_state>();
uint32_t val = 0;
switch (reg)
@@ -373,7 +373,7 @@ static uint32_t voodoo_1_pci_r(device_t *busdevice, device_t *device, int functi
static void voodoo_1_pci_w(device_t *busdevice, device_t *device, int function, int reg, uint32_t data, uint32_t mem_mask)
{
- magictg_state* state = space.machine().driver_data<magictg_state>();
+ magictg_state* state = machine().driver_data<magictg_state>();
switch (reg)
{
@@ -490,7 +490,7 @@ READ32_MEMBER( magictg_state::zr36120_r )
else
{
/* Post office */
- res = 0;//mame_rand(space.machine);//m_zr36120.as_regs[0x48/4];
+ res = 0;//mame_rand(machine);//m_zr36120.as_regs[0x48/4];
}
osd_printf_debug("PINKEYE_R[%x]\n", offset);
return res;
@@ -728,7 +728,7 @@ WRITE32_MEMBER( magictg_state::adsp_idma_addr_w )
READ32_MEMBER( magictg_state::adsp_status_r )
{
// ADSP_IACK = Bit 2
- return (0 << 2) | (space.machine().rand() & 1);
+ return (0 << 2) | (machine().rand() & 1);
}
READ16_MEMBER( magictg_state::adsp_control_r )
@@ -741,7 +741,7 @@ READ16_MEMBER( magictg_state::adsp_control_r )
res = m_adsp_regs.bdma_word_count;
break;
case 0x5:
- res = space.machine().rand() & 0xff;
+ res = machine().rand() & 0xff;
break;
default:
osd_printf_debug("Unhandled register: %x\n", 0x3fe0 + offset);
diff --git a/src/mame/drivers/mario.cpp b/src/mame/drivers/mario.cpp
index b3dad1b78d6..e77418c86f4 100644
--- a/src/mame/drivers/mario.cpp
+++ b/src/mame/drivers/mario.cpp
@@ -216,9 +216,10 @@ static INPUT_PORTS_START( mario )
PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x0c, DEF_STR( 1C_3C ) )
PORT_DIPNAME( 0x30, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:!5,!6")
- PORT_DIPSETTING( 0x00, "20k 40k 20k+" )
- PORT_DIPSETTING( 0x10, "30k 50k 20k+" )
- PORT_DIPSETTING( 0x20, "40k 60k 20k+" )
+ PORT_DIPSETTING( 0x00, "20k only" )
+ PORT_DIPSETTING( 0x10, "30k only" )
+ PORT_DIPSETTING( 0x20, "40k only" )
+ PORT_DIPSETTING( 0x30, DEF_STR( None ) )
PORT_DIPSETTING( 0x30, DEF_STR( None ) )
PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:!7,!8")
PORT_DIPSETTING( 0x00, DEF_STR( Easy ) )
@@ -233,20 +234,19 @@ static INPUT_PORTS_START( mario )
INPUT_PORTS_END
-static INPUT_PORTS_START( marioo )
+static INPUT_PORTS_START( mariof )
PORT_INCLUDE( mario )
PORT_MODIFY( "DSW" )
PORT_DIPNAME( 0x30, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:!5,!6")
- PORT_DIPSETTING( 0x00, "20k only" )
- PORT_DIPSETTING( 0x10, "30k only" )
- PORT_DIPSETTING( 0x20, "40k only" )
- PORT_DIPSETTING( 0x30, DEF_STR( None ) )
+ PORT_DIPSETTING( 0x00, "20k 40k 20k+" )
+ PORT_DIPSETTING( 0x10, "30k 50k 20k+" )
+ PORT_DIPSETTING( 0x20, "40k 60k 20k+" )
INPUT_PORTS_END
static INPUT_PORTS_START( marioe )
- PORT_INCLUDE( marioo )
+ PORT_INCLUDE( mario )
PORT_MODIFY ( "IN1" )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN1 )
@@ -389,10 +389,10 @@ MACHINE_CONFIG_END
ROM_START( mario )
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "tma1-c-7f_f.7f", 0x0000, 0x2000, CRC(c0c6e014) SHA1(36a04f9ca1c2a583477cb8a6f2ef94e044e08296) )
- ROM_LOAD( "tma1-c-7e_f.7e", 0x2000, 0x2000, CRC(94fb60d6) SHA1(e74d74aa27f87a164bdd453ab0076efeeb7d4ea3) )
- ROM_LOAD( "tma1-c-7d_f.7d", 0x4000, 0x2000, CRC(dcceb6c1) SHA1(b19804e69ce2c98cf276c6055c3a250316b96b45) )
- ROM_LOAD( "tma1-c-7c_f.7c", 0xf000, 0x1000, CRC(4a63d96b) SHA1(b09060b2c84ab77cc540a27b8f932cb60ec8d442) )
+ ROM_LOAD( "tma1-c-7f_g.7f", 0x0000, 0x2000, CRC(c0c6e014) SHA1(36a04f9ca1c2a583477cb8a6f2ef94e044e08296) ) /* Unknown revision */
+ ROM_LOAD( "tma1-c-7e_g.7e", 0x2000, 0x2000, CRC(116b3856) SHA1(e372f846d0e5a2b9b47ebd0330293fcc8a12363f) )
+ ROM_LOAD( "tma1-c-7d_g.7d", 0x4000, 0x2000, CRC(dcceb6c1) SHA1(b19804e69ce2c98cf276c6055c3a250316b96b45) )
+ ROM_LOAD( "tma1-c-7c_g.7c", 0xf000, 0x1000, CRC(4a63d96b) SHA1(b09060b2c84ab77cc540a27b8f932cb60ec8d442) )
ROM_REGION( 0x1800, "audiocpu", 0 ) /* sound */
/* internal rom */
@@ -415,18 +415,18 @@ ROM_START( mario )
ROM_LOAD( "tma1-v-7u.7u", 0x5000, 0x1000, CRC(7baf5309) SHA1(d9194ff7b89a18273d37b47228fc7fb7e2a0ed1f) )
ROM_REGION( 0x0200, "proms", 0 )
- ROM_LOAD( "tma1-c-4p_1.4p", 0x0000, 0x0200, CRC(8187d286) SHA1(8a6d8e622599f1aacaeb10f7b1a39a23c8a840a0) ) /* BPROM was a MB7124E read as 82S147 */
+ ROM_LOAD( "tma1-c-4p.4p", 0x0000, 0x0200, CRC(afc9bd41) SHA1(90b739c4c7f24a88b6ac5ca29b06c032906a2801) )
- ROM_REGION( 0x0020, "unk_proms", 0 ) /* is this the color prom? */
- ROM_LOAD( "tma1-c-5p.5p", 0x0000, 0x0020, CRC(58d86098) SHA1(d654995004b9052b12d3b682a2b39530e70030fc) ) /* BPROM was a TBP18S030N read as 82S123, unknown use */
+ ROM_REGION( 0x0020, "decoder_prom", 0 )
+ ROM_LOAD( "tma1-c-5p.5p", 0x0000, 0x0020, CRC(58d86098) SHA1(d654995004b9052b12d3b682a2b39530e70030fc) ) /* BPROM was a TBP18S030N read as 82S123, main cpu memory map decoding prom */
ROM_END
-ROM_START( marioe )
+ROM_START( mariof )
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "tma1-c-7f_e-1.7f", 0x0000, 0x2000, CRC(c0c6e014) SHA1(36a04f9ca1c2a583477cb8a6f2ef94e044e08296) )
- ROM_LOAD( "tma1-c-7e_e-3.7e", 0x2000, 0x2000, CRC(b09ab857) SHA1(35b91cd1c4c3dd2d543a1ea8ff7b951715727792) )
- ROM_LOAD( "tma1-c-7d_e-1.7d", 0x4000, 0x2000, CRC(dcceb6c1) SHA1(b19804e69ce2c98cf276c6055c3a250316b96b45) )
- ROM_LOAD( "tma1-c-7c_e-3.7c", 0xf000, 0x1000, CRC(0d31bd1c) SHA1(a2e238470ba2ea3c81225fec687f61f047c68c59) )
+ ROM_LOAD( "tma1-c-7f_f.7f", 0x0000, 0x2000, CRC(c0c6e014) SHA1(36a04f9ca1c2a583477cb8a6f2ef94e044e08296) )
+ ROM_LOAD( "tma1-c-7e_f.7e", 0x2000, 0x2000, CRC(94fb60d6) SHA1(e74d74aa27f87a164bdd453ab0076efeeb7d4ea3) )
+ ROM_LOAD( "tma1-c-7d_f.7d", 0x4000, 0x2000, CRC(dcceb6c1) SHA1(b19804e69ce2c98cf276c6055c3a250316b96b45) )
+ ROM_LOAD( "tma1-c-7c_f.7c", 0xf000, 0x1000, CRC(4a63d96b) SHA1(b09060b2c84ab77cc540a27b8f932cb60ec8d442) )
ROM_REGION( 0x1800, "audiocpu", 0 ) /* sound */
/* internal rom */
@@ -441,26 +441,26 @@ ROM_START( marioe )
ROM_LOAD( "tma1-v-3j.3j", 0x1000, 0x1000, CRC(0c8cc04d) SHA1(15fae47d701dc1ef15c943cee6aa991776ecffdf) )
ROM_REGION( 0x6000, "gfx2", 0 )
- ROM_LOAD( "tma1-v.7m", 0x0000, 0x1000, CRC(d01c0e2c) SHA1(cd6cc9d69c36db15543601f5da2abf109cde43c9) )
- ROM_LOAD( "tma1-v-7n.7n", 0x1000, 0x1000, CRC(4f3a1f47) SHA1(0747d693b9482f6dd28b0bc484fd1d3e29d35654) )
- ROM_LOAD( "tma1-v-7p.7p", 0x2000, 0x1000, CRC(56be6ccd) SHA1(15a6e16c189d45f72761ebcbe9db5001bdecd659) )
- ROM_LOAD( "tma1-v.7s", 0x3000, 0x1000, CRC(ff856e6f) SHA1(2bc9ff18bb1842e8de2bc61ac828f1b175290bed) )
- ROM_LOAD( "tma1-v-7t.7t", 0x4000, 0x1000, CRC(641f0008) SHA1(589fe108c7c11278fd897f2ded8f0498bc149cfd) )
- ROM_LOAD( "tma1-v.7u", 0x5000, 0x1000, CRC(d2dbeb75) SHA1(676cf3e15252cd0d9e926ca15c3aa0caa39be269) )
+ ROM_LOAD( "tma1-v-7m.7m", 0x0000, 0x1000, CRC(22b7372e) SHA1(4a1c1e239cb6d483e76f50d7a3b941025963c6a3) )
+ ROM_LOAD( "tma1-v-7n.7n", 0x1000, 0x1000, CRC(4f3a1f47) SHA1(0747d693b9482f6dd28b0bc484fd1d3e29d35654) )
+ ROM_LOAD( "tma1-v-7p.7p", 0x2000, 0x1000, CRC(56be6ccd) SHA1(15a6e16c189d45f72761ebcbe9db5001bdecd659) )
+ ROM_LOAD( "tma1-v-7s.7s", 0x3000, 0x1000, CRC(56f1d613) SHA1(9af6844dbaa3615433d0595e9e85e72493e31a54) )
+ ROM_LOAD( "tma1-v-7t.7t", 0x4000, 0x1000, CRC(641f0008) SHA1(589fe108c7c11278fd897f2ded8f0498bc149cfd) )
+ ROM_LOAD( "tma1-v-7u.7u", 0x5000, 0x1000, CRC(7baf5309) SHA1(d9194ff7b89a18273d37b47228fc7fb7e2a0ed1f) )
ROM_REGION( 0x0200, "proms", 0 )
- ROM_LOAD( "tma1-c-4p_1.4p", 0x0000, 0x0200, CRC(8187d286) SHA1(8a6d8e622599f1aacaeb10f7b1a39a23c8a840a0) ) /* BPROM was a MB7124E read as 82S147 */
+ ROM_LOAD( "tma1-c-4p_1.4p", 0x0000, 0x0200, CRC(8187d286) SHA1(8a6d8e622599f1aacaeb10f7b1a39a23c8a840a0) ) /* BPROM was a MB7124E read as 82S147 */
- ROM_REGION( 0x0020, "unk_proms", 0 ) /* is this the color prom? */
- ROM_LOAD( "tma1-c-5p.5p", 0x0000, 0x0020, CRC(58d86098) SHA1(d654995004b9052b12d3b682a2b39530e70030fc) ) /* BPROM was a TBP18S030N read as 82S123, unknown use */
+ ROM_REGION( 0x0020, "decoder_prom", 0 )
+ ROM_LOAD( "tma1-c-5p.5p", 0x0000, 0x0020, CRC(58d86098) SHA1(d654995004b9052b12d3b682a2b39530e70030fc) ) /* BPROM was a TBP18S030N read as 82S123, main cpu memory map decoding prom */
ROM_END
-ROM_START( marioo )
+ROM_START( marioe )
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "tma1-c-7f_.7f", 0x0000, 0x2000, CRC(c0c6e014) SHA1(36a04f9ca1c2a583477cb8a6f2ef94e044e08296) ) /* Unknown revision */
- ROM_LOAD( "tma1-c-7f_.7e", 0x2000, 0x2000, CRC(116b3856) SHA1(e372f846d0e5a2b9b47ebd0330293fcc8a12363f) )
- ROM_LOAD( "tma1-c-7f_.7d", 0x4000, 0x2000, CRC(dcceb6c1) SHA1(b19804e69ce2c98cf276c6055c3a250316b96b45) )
- ROM_LOAD( "tma1-c-7f_.7c", 0xf000, 0x1000, CRC(4a63d96b) SHA1(b09060b2c84ab77cc540a27b8f932cb60ec8d442) )
+ ROM_LOAD( "tma1-c-7f_e-1.7f", 0x0000, 0x2000, CRC(c0c6e014) SHA1(36a04f9ca1c2a583477cb8a6f2ef94e044e08296) )
+ ROM_LOAD( "tma1-c-7e_e-3.7e", 0x2000, 0x2000, CRC(b09ab857) SHA1(35b91cd1c4c3dd2d543a1ea8ff7b951715727792) )
+ ROM_LOAD( "tma1-c-7d_e-1.7d", 0x4000, 0x2000, CRC(dcceb6c1) SHA1(b19804e69ce2c98cf276c6055c3a250316b96b45) )
+ ROM_LOAD( "tma1-c-7c_e-3.7c", 0xf000, 0x1000, CRC(0d31bd1c) SHA1(a2e238470ba2ea3c81225fec687f61f047c68c59) )
ROM_REGION( 0x1800, "audiocpu", 0 ) /* sound */
/* internal rom */
@@ -475,18 +475,18 @@ ROM_START( marioo )
ROM_LOAD( "tma1-v-3j.3j", 0x1000, 0x1000, CRC(0c8cc04d) SHA1(15fae47d701dc1ef15c943cee6aa991776ecffdf) )
ROM_REGION( 0x6000, "gfx2", 0 )
- ROM_LOAD( "tma1-v-7m.7m", 0x0000, 0x1000, CRC(22b7372e) SHA1(4a1c1e239cb6d483e76f50d7a3b941025963c6a3) )
- ROM_LOAD( "tma1-v-7n.7n", 0x1000, 0x1000, CRC(4f3a1f47) SHA1(0747d693b9482f6dd28b0bc484fd1d3e29d35654) )
- ROM_LOAD( "tma1-v-7p.7p", 0x2000, 0x1000, CRC(56be6ccd) SHA1(15a6e16c189d45f72761ebcbe9db5001bdecd659) )
- ROM_LOAD( "tma1-v-7s.7s", 0x3000, 0x1000, CRC(56f1d613) SHA1(9af6844dbaa3615433d0595e9e85e72493e31a54) )
- ROM_LOAD( "tma1-v-7t.7t", 0x4000, 0x1000, CRC(641f0008) SHA1(589fe108c7c11278fd897f2ded8f0498bc149cfd) )
- ROM_LOAD( "tma1-v-7u.7u", 0x5000, 0x1000, CRC(7baf5309) SHA1(d9194ff7b89a18273d37b47228fc7fb7e2a0ed1f) )
+ ROM_LOAD( "tma1-v.7m", 0x0000, 0x1000, CRC(d01c0e2c) SHA1(cd6cc9d69c36db15543601f5da2abf109cde43c9) )
+ ROM_LOAD( "tma1-v-7n.7n", 0x1000, 0x1000, CRC(4f3a1f47) SHA1(0747d693b9482f6dd28b0bc484fd1d3e29d35654) )
+ ROM_LOAD( "tma1-v-7p.7p", 0x2000, 0x1000, CRC(56be6ccd) SHA1(15a6e16c189d45f72761ebcbe9db5001bdecd659) )
+ ROM_LOAD( "tma1-v.7s", 0x3000, 0x1000, CRC(ff856e6f) SHA1(2bc9ff18bb1842e8de2bc61ac828f1b175290bed) )
+ ROM_LOAD( "tma1-v-7t.7t", 0x4000, 0x1000, CRC(641f0008) SHA1(589fe108c7c11278fd897f2ded8f0498bc149cfd) )
+ ROM_LOAD( "tma1-v.7u", 0x5000, 0x1000, CRC(d2dbeb75) SHA1(676cf3e15252cd0d9e926ca15c3aa0caa39be269) )
ROM_REGION( 0x0200, "proms", 0 )
- ROM_LOAD( "tma1-c-4p.4p", 0x0000, 0x0200, CRC(afc9bd41) SHA1(90b739c4c7f24a88b6ac5ca29b06c032906a2801) )
+ ROM_LOAD( "tma1-c-4p_1.4p", 0x0000, 0x0200, CRC(8187d286) SHA1(8a6d8e622599f1aacaeb10f7b1a39a23c8a840a0) ) /* BPROM was a MB7124E read as 82S147 */
- ROM_REGION( 0x0020, "unk_proms", 0 ) /* is this the color prom? */
- ROM_LOAD( "tma1-c-5p.5p", 0x0000, 0x0020, CRC(58d86098) SHA1(d654995004b9052b12d3b682a2b39530e70030fc) ) /* BPROM was a TBP18S030N read as 82S123, unknown use */
+ ROM_REGION( 0x0020, "decoder_prom", 0 )
+ ROM_LOAD( "tma1-c-5p.5p", 0x0000, 0x0020, CRC(58d86098) SHA1(d654995004b9052b12d3b682a2b39530e70030fc) ) /* BPROM was a TBP18S030N read as 82S123, main cpu memory map decoding prom */
ROM_END
ROM_START( marioj )
@@ -519,8 +519,8 @@ ROM_START( marioj )
ROM_REGION( 0x0200, "proms", 0 )
ROM_LOAD( "tma1-c-4p.4p", 0x0000, 0x0200, CRC(afc9bd41) SHA1(90b739c4c7f24a88b6ac5ca29b06c032906a2801) )
- ROM_REGION( 0x0020, "unk_proms", 0 ) /* is this the color prom? */
- ROM_LOAD( "tma1-c-5p.5p", 0x0000, 0x0020, CRC(58d86098) SHA1(d654995004b9052b12d3b682a2b39530e70030fc) ) /* BPROM was a TBP18S030N read as 82S123, unknown use */
+ ROM_REGION( 0x0020, "decoder_prom", 0 )
+ ROM_LOAD( "tma1-c-5p.5p", 0x0000, 0x0020, CRC(58d86098) SHA1(d654995004b9052b12d3b682a2b39530e70030fc) ) /* BPROM was a TBP18S030N read as 82S123, main cpu memory map decoding prom */
ROM_END
ROM_START( masao )
@@ -556,8 +556,8 @@ ROM_END
*
*************************************/
-GAME( 1983, mario, 0, mario, mario, mario_state, 0, ROT0, "Nintendo of America", "Mario Bros. (US, Revision F)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, mario, 0, mario, mario, mario_state, 0, ROT0, "Nintendo of America", "Mario Bros. (US, Revision G)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, mariof, mario, mario, mariof, mario_state, 0, ROT0, "Nintendo of America", "Mario Bros. (US, Revision F)", MACHINE_SUPPORTS_SAVE )
GAME( 1983, marioe, mario, mario, marioe, mario_state, 0, ROT0, "Nintendo of America", "Mario Bros. (US, Revision E)", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, marioo, mario, mario, marioo, mario_state, 0, ROT0, "Nintendo of America", "Mario Bros. (US, Unknown Rev)", MACHINE_SUPPORTS_SAVE )
GAME( 1983, marioj, mario, mario, marioj, mario_state, 0, ROT0, "Nintendo", "Mario Bros. (Japan, Revision C)", MACHINE_SUPPORTS_SAVE )
GAME( 1983, masao, mario, masao, mario, mario_state, 0, ROT0, "bootleg", "Masao", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/maygay1b.cpp b/src/mame/drivers/maygay1b.cpp
index e8d95836dcf..143de6d02df 100644
--- a/src/mame/drivers/maygay1b.cpp
+++ b/src/mame/drivers/maygay1b.cpp
@@ -769,7 +769,7 @@ ADDRESS_MAP_END
MACHINE_CONFIG_START( maygay_m1 )
- MCFG_CPU_ADD("maincpu", M6809, M1_MASTER_CLOCK/2)
+ MCFG_CPU_ADD("maincpu", MC6809, M1_MASTER_CLOCK/2) // claimed to be 4 MHz
MCFG_CPU_PROGRAM_MAP(m1_memmap)
MCFG_CPU_ADD("mcu", I80C51, 2000000) // EP840034.A-P-80C51AVW
diff --git a/src/mame/drivers/mcr3.cpp b/src/mame/drivers/mcr3.cpp
index ba1aba9366a..b1d42fcde32 100644
--- a/src/mame/drivers/mcr3.cpp
+++ b/src/mame/drivers/mcr3.cpp
@@ -268,7 +268,7 @@ WRITE8_MEMBER(mcr3_state::maxrpm_op6_w)
/* when both the write and the enable are low, it's a write to the ADC0844 */
if (!(data & 0x40) && !(data & 0x20))
- m_maxrpm_adc->write(space, 0, BITSWAP8(m_maxrpm_adc_control, 7, 6, 5, 4, 2, 3, 1, 0));
+ m_maxrpm_adc->write(space, 0, bitswap<8>(m_maxrpm_adc_control, 7, 6, 5, 4, 2, 3, 1, 0));
/* low 5 bits control the turbo CS */
m_turbo_cheap_squeak->write(space, offset, data);
diff --git a/src/mame/drivers/meadows.cpp b/src/mame/drivers/meadows.cpp
index 5ae137b4ac0..39242ae9745 100644
--- a/src/mame/drivers/meadows.cpp
+++ b/src/mame/drivers/meadows.cpp
@@ -141,7 +141,7 @@
READ8_MEMBER(meadows_state::hsync_chain_r)
{
uint8_t val = m_screen->hpos();
- return BITSWAP8(val,0,1,2,3,4,5,6,7);
+ return bitswap<8>(val,0,1,2,3,4,5,6,7);
}
diff --git a/src/mame/drivers/megadrvb.cpp b/src/mame/drivers/megadrvb.cpp
index 22dfbbe709d..d0cbc41cb92 100644
--- a/src/mame/drivers/megadrvb.cpp
+++ b/src/mame/drivers/megadrvb.cpp
@@ -812,12 +812,12 @@ DRIVER_INIT_MEMBER(md_boot_state,mk3mdb)
if (x & 0x80000)
{
rom[x] = rom[x] ^ 0xff;
- rom[x] = BITSWAP8(rom[x], 0,3,2,5,4,6,7,1);
+ rom[x] = bitswap<8>(rom[x], 0,3,2,5,4,6,7,1);
}
else
{
rom[x] = rom[x] ^ 0xff;
- rom[x] = BITSWAP8(rom[x], 4,0,7,1,3,6,2,5);
+ rom[x] = bitswap<8>(rom[x], 4,0,7,1,3,6,2,5);
}
}
@@ -826,11 +826,11 @@ DRIVER_INIT_MEMBER(md_boot_state,mk3mdb)
if (x & 0x80000)
{
rom[x] = rom[x] ^ 0xff;
- rom[x] = BITSWAP8(rom[x], 2,7,5,4,1,0,3,6);
+ rom[x] = bitswap<8>(rom[x], 2,7,5,4,1,0,3,6);
}
else
{
- rom[x] = BITSWAP8(rom[x], 6,1,4,2,7,0,3,5);
+ rom[x] = bitswap<8>(rom[x], 6,1,4,2,7,0,3,5);
}
}
@@ -874,12 +874,12 @@ DRIVER_INIT_MEMBER(md_boot_state,srmdb)
for (int x = 0x00001; x < 0x40000; x += 2)
{
- rom[x] = BITSWAP8(rom[x] ^ 0xff, 5,1,6,2,4,3,7,0);
+ rom[x] = bitswap<8>(rom[x] ^ 0xff, 5,1,6,2,4,3,7,0);
}
for (int x = 0x40001; x < 0x80000; x += 2)
{
- rom[x] = BITSWAP8(rom[x] ^ 0x00, 2,6,1,5,0,7,3,4);
+ rom[x] = bitswap<8>(rom[x] ^ 0x00, 2,6,1,5,0,7,3,4);
}
// boot vectors don't seem to be valid, so they are patched...
diff --git a/src/mame/drivers/megasys1.cpp b/src/mame/drivers/megasys1.cpp
index 023c5708e0c..06828858c53 100644
--- a/src/mame/drivers/megasys1.cpp
+++ b/src/mame/drivers/megasys1.cpp
@@ -4329,7 +4329,7 @@ void megasys1_state::jitsupro_gfx_unmangle(const char *region)
/* data lines swap: 76543210 -> 43576210 */
for (i = 0;i < size;i++)
- rom[i] = BITSWAP8(rom[i],0x4,0x3,0x5,0x7,0x6,0x2,0x1,0x0);
+ rom[i] = bitswap<8>(rom[i],0x4,0x3,0x5,0x7,0x6,0x2,0x1,0x0);
std::vector<uint8_t> buffer(size);
@@ -4339,7 +4339,7 @@ void megasys1_state::jitsupro_gfx_unmangle(const char *region)
for (i = 0;i < size;i++)
{
int a = (i & ~0xffff) |
- BITSWAP16(i,0xf,0xe,0x8,0xc,0xb,0x3,0x9,0xd,0x7,0x6,0x5,0x4,0xa,0x2,0x1,0x0);
+ bitswap<16>(i,0xf,0xe,0x8,0xc,0xb,0x3,0x9,0xd,0x7,0x6,0x5,0x4,0xa,0x2,0x1,0x0);
rom[i] = buffer[a];
}
@@ -4353,7 +4353,7 @@ void megasys1_state::stdragona_gfx_unmangle(const char *region)
/* data lines swap: 76543210 -> 37564210 */
for (i = 0;i < size;i++)
- rom[i] = BITSWAP8(rom[i],3,7,5,6,4,2,1,0);
+ rom[i] = bitswap<8>(rom[i],3,7,5,6,4,2,1,0);
std::vector<uint8_t> buffer(size);
@@ -4363,7 +4363,7 @@ void megasys1_state::stdragona_gfx_unmangle(const char *region)
for (i = 0;i < size;i++)
{
int a = (i & ~0xffff) |
- BITSWAP16(i,0xf,0xe,0x3,0xc,0xb,0xd,0x9,0xa,0x7,0x6,0x5,0x4,0x8,0x2,0x1,0x0);
+ bitswap<16>(i,0xf,0xe,0x3,0xc,0xb,0xd,0x9,0xa,0x7,0x6,0x5,0x4,0x8,0x2,0x1,0x0);
rom[i] = buffer[a];
}
diff --git a/src/mame/drivers/mephisto_montec.cpp b/src/mame/drivers/mephisto_montec.cpp
index b01caadf534..c0db9fa5826 100644
--- a/src/mame/drivers/mephisto_montec.cpp
+++ b/src/mame/drivers/mephisto_montec.cpp
@@ -162,8 +162,8 @@ WRITE8_MEMBER(mephisto_montec_state::montec_lcd_clk_w)
if (m_display.shift == 8)
{
- if (m_lcd_mux & 0x01) output().set_digit_value(0 + m_display.pos, BITSWAP8(m_display.data, 0,3,2,7,6,5,4,1));
- if (m_lcd_mux & 0x02) output().set_digit_value(4 + m_display.pos, BITSWAP8(m_display.data, 0,3,2,7,6,5,4,1));
+ if (m_lcd_mux & 0x01) output().set_digit_value(0 + m_display.pos, bitswap<8>(m_display.data, 0,3,2,7,6,5,4,1));
+ if (m_lcd_mux & 0x02) output().set_digit_value(4 + m_display.pos, bitswap<8>(m_display.data, 0,3,2,7,6,5,4,1));
m_display.shift = 0;
m_display.pos = (m_display.pos + 1) & 3;
diff --git a/src/mame/drivers/merit.cpp b/src/mame/drivers/merit.cpp
index e360fc2df53..8195deb8cc1 100644
--- a/src/mame/drivers/merit.cpp
+++ b/src/mame/drivers/merit.cpp
@@ -204,20 +204,20 @@ READ8_MEMBER(merit_state::questions_r)
WRITE8_MEMBER(merit_state::low_offset_w)
{
offset = (offset & 0xf0) | ((offset - m_decryption_key) & 0x0f);
- offset = BITSWAP8(offset,7,6,5,4,0,1,2,3);
+ offset = bitswap<8>(offset,7,6,5,4,0,1,2,3);
m_question_address = (m_question_address & 0xffff00) | offset;
}
WRITE8_MEMBER(merit_state::med_offset_w)
{
offset = (offset & 0xf0) | ((offset - m_decryption_key) & 0x0f);
- offset = BITSWAP8(offset,7,6,5,4,0,1,2,3);
+ offset = bitswap<8>(offset,7,6,5,4,0,1,2,3);
m_question_address = (m_question_address & 0xff00ff) | (offset << 8);
}
WRITE8_MEMBER(merit_state::high_offset_w)
{
- offset = BITSWAP8(offset,7,6,5,4,0,1,2,3);
+ offset = bitswap<8>(offset,7,6,5,4,0,1,2,3);
m_question_address = (m_question_address & 0x00ffff) | (offset << 16);
}
diff --git a/src/mame/drivers/mermaid.cpp b/src/mame/drivers/mermaid.cpp
index eaf4c46fc59..dfc7754812d 100644
--- a/src/mame/drivers/mermaid.cpp
+++ b/src/mame/drivers/mermaid.cpp
@@ -383,12 +383,15 @@ void mermaid_state::machine_reset()
m_rougien_gfxbank1 = 0;
m_rougien_gfxbank2 = 0;
- m_adpcm_idle = 1;
- m_adpcm_rom_sel = 0;
- m_adpcm->reset_w(1);
- m_adpcm_counter->reset_w(1);
- m_adpcm_trigger = 0;
- m_adpcm_data = 0;
+ if (m_adpcm.found())
+ {
+ m_adpcm_idle = 1;
+ m_adpcm_rom_sel = 0;
+ m_adpcm->reset_w(1);
+ m_adpcm_counter->reset_w(1);
+ m_adpcm_trigger = 0;
+ m_adpcm_data = 0;
+ }
}
/* Similar to Jantotsu, apparently the HW has three ports that controls what kind of sample should be played. Every sample size is 0x1000. */
diff --git a/src/mame/drivers/metlfrzr.cpp b/src/mame/drivers/metlfrzr.cpp
index 9a0acea3669..f57c531e613 100644
--- a/src/mame/drivers/metlfrzr.cpp
+++ b/src/mame/drivers/metlfrzr.cpp
@@ -449,14 +449,14 @@ DRIVER_INIT_MEMBER(metlfrzr_state, metlfrzr)
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);
}
}
diff --git a/src/mame/drivers/metro.cpp b/src/mame/drivers/metro.cpp
index 87a6edb0c77..0b1220e0ab8 100644
--- a/src/mame/drivers/metro.cpp
+++ b/src/mame/drivers/metro.cpp
@@ -5535,7 +5535,7 @@ DRIVER_INIT_MEMBER(metro_state,balcube)
for (unsigned i = 0; i < len; i+=2)
{
- ROM[i] = BITSWAP8(ROM[i],0,1,2,3,4,5,6,7);
+ ROM[i] = bitswap<8>(ROM[i],0,1,2,3,4,5,6,7);
}
metro_common();
@@ -5552,11 +5552,11 @@ DRIVER_INIT_MEMBER(metro_state,dharmak)
{
uint8_t dat;
dat = src[i + 1];
- dat = BITSWAP8(dat, 7,3,2,4, 5,6,1,0);
+ dat = bitswap<8>(dat, 7,3,2,4, 5,6,1,0);
src[i + 1] = dat;
dat = src[i + 3];
- dat = BITSWAP8(dat, 7,2,5,4, 3,6,1,0);
+ dat = bitswap<8>(dat, 7,2,5,4, 3,6,1,0);
src[i + 3] = dat;
}
diff --git a/src/mame/drivers/minicom.cpp b/src/mame/drivers/minicom.cpp
index e094f8dffba..cdc3766b5d3 100644
--- a/src/mame/drivers/minicom.cpp
+++ b/src/mame/drivers/minicom.cpp
@@ -212,7 +212,7 @@ WRITE8_MEMBER(minicom_state::minicom_io_w)
if (BIT(changed,4) || BIT(changed,5))
{
- output().set_digit_value(m_digit_index, BITSWAP16(m_display_data, 9, 1, 3, 11, 12, 4, 2, 10, 14, 6, 7, 5, 0, 15, 13, 8) & 0x3FFF);
+ output().set_digit_value(m_digit_index, bitswap<16>(m_display_data, 9, 1, 3, 11, 12, 4, 2, 10, 14, 6, 7, 5, 0, 15, 13, 8) & 0x3FFF);
}
m_p[offset]=data;
}
diff --git a/src/mame/drivers/mirax.cpp b/src/mame/drivers/mirax.cpp
index 8c110a8120b..dd359f388a5 100644
--- a/src/mame/drivers/mirax.cpp
+++ b/src/mame/drivers/mirax.cpp
@@ -583,13 +583,13 @@ DRIVER_INIT_MEMBER(mirax_state,mirax)
int i;
for(i=0x0000;i<0x4000;i++)
- ROM[BITSWAP16(i, 15,14,13,12,11,10,9, 5,7,6,8, 4,3,2,1,0)] = (BITSWAP8(DATA[i], 1, 3, 7, 0, 5, 6, 4, 2) ^ 0xff);
+ ROM[bitswap<16>(i, 15,14,13,12,11,10,9, 5,7,6,8, 4,3,2,1,0)] = (bitswap<8>(DATA[i], 1, 3, 7, 0, 5, 6, 4, 2) ^ 0xff);
for(i=0x4000;i<0x8000;i++)
- ROM[BITSWAP16(i, 15,14,13,12,11,10,9, 5,7,6,8, 4,3,2,1,0)] = (BITSWAP8(DATA[i], 2, 1, 0, 6, 7, 5, 3, 4) ^ 0xff);
+ ROM[bitswap<16>(i, 15,14,13,12,11,10,9, 5,7,6,8, 4,3,2,1,0)] = (bitswap<8>(DATA[i], 2, 1, 0, 6, 7, 5, 3, 4) ^ 0xff);
for(i=0x8000;i<0xc000;i++)
- ROM[BITSWAP16(i, 15,14,13,12,11,10,9, 5,7,6,8, 4,3,2,1,0)] = (BITSWAP8(DATA[i], 1, 3, 7, 0, 5, 6, 4, 2) ^ 0xff);
+ ROM[bitswap<16>(i, 15,14,13,12,11,10,9, 5,7,6,8, 4,3,2,1,0)] = (bitswap<8>(DATA[i], 1, 3, 7, 0, 5, 6, 4, 2) ^ 0xff);
}
GAME( 1985, mirax, 0, mirax, mirax, mirax_state, mirax, ROT90, "Current Technologies", "Mirax (set 1)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/missb2.cpp b/src/mame/drivers/missb2.cpp
index 751ade7f286..32c7b6e5e1b 100644
--- a/src/mame/drivers/missb2.cpp
+++ b/src/mame/drivers/missb2.cpp
@@ -164,12 +164,12 @@ WRITE8_MEMBER(missb2_state::missb2_bg_bank_w)
WRITE8_MEMBER(missb2_state::missb2_oki_w)
{
- m_oki->write_command(BITSWAP8(data, 7,5,6,4,3,1,2,0));
+ m_oki->write_command(bitswap<8>(data, 7,5,6,4,3,1,2,0));
}
READ8_MEMBER(missb2_state::missb2_oki_r)
{
- return BITSWAP8(m_oki->read_status(), 7,5,6,4,3,1,2,0);
+ return bitswap<8>(m_oki->read_status(), 7,5,6,4,3,1,2,0);
}
/* Memory Maps */
diff --git a/src/mame/drivers/missile.cpp b/src/mame/drivers/missile.cpp
index 3b84b23e051..cf5cd3a8784 100644
--- a/src/mame/drivers/missile.cpp
+++ b/src/mame/drivers/missile.cpp
@@ -1466,8 +1466,8 @@ DRIVER_INIT_MEMBER(missile_state,missilem)
// decrypt rom and put in maincpu region (result looks correct, but is untested)
for (int i = 0; i < 0x10000; i++)
{
- int a = BITSWAP16(i, 15,2,3,0,8,9,7,5,1,4,6,14,13,12,10,11);
- int d = BITSWAP8(src[a], 3,2,4,5,6,1,7,0);
+ int a = bitswap<16>(i, 15,2,3,0,8,9,7,5,1,4,6,14,13,12,10,11);
+ int d = bitswap<8>(src[a], 3,2,4,5,6,1,7,0);
a = i;
a ^= (~a >> 1 & 0x400);
diff --git a/src/mame/drivers/mk1.cpp b/src/mame/drivers/mk1.cpp
index d2e41371c6f..ccad87ff1c0 100644
--- a/src/mame/drivers/mk1.cpp
+++ b/src/mame/drivers/mk1.cpp
@@ -99,10 +99,10 @@ WRITE8_MEMBER( mk1_state::mk1_f8_w )
/* 0 is high and allows also input */
m_f8[offset] = data;
- if ( ! ( m_f8[1] & 1 ) ) m_led[0] = BITSWAP8( m_f8[0],2,1,3,4,5,6,7,0 );
- if ( ! ( m_f8[1] & 2 ) ) m_led[1] = BITSWAP8( m_f8[0],2,1,3,4,5,6,7,0 );
- if ( ! ( m_f8[1] & 4 ) ) m_led[2] = BITSWAP8( m_f8[0],2,1,3,4,5,6,7,0 );
- if ( ! ( m_f8[1] & 8 ) ) m_led[3] = BITSWAP8( m_f8[0],2,1,3,4,5,6,7,0 );
+ if ( ! ( m_f8[1] & 1 ) ) m_led[0] = bitswap<8>( m_f8[0],2,1,3,4,5,6,7,0 );
+ if ( ! ( m_f8[1] & 2 ) ) m_led[1] = bitswap<8>( m_f8[0],2,1,3,4,5,6,7,0 );
+ if ( ! ( m_f8[1] & 4 ) ) m_led[2] = bitswap<8>( m_f8[0],2,1,3,4,5,6,7,0 );
+ if ( ! ( m_f8[1] & 8 ) ) m_led[3] = bitswap<8>( m_f8[0],2,1,3,4,5,6,7,0 );
}
static ADDRESS_MAP_START( mk1_mem, AS_PROGRAM, 8, mk1_state )
diff --git a/src/mame/drivers/mkit09.cpp b/src/mame/drivers/mkit09.cpp
index c87a6aef112..949553467dc 100644
--- a/src/mame/drivers/mkit09.cpp
+++ b/src/mame/drivers/mkit09.cpp
@@ -173,7 +173,7 @@ WRITE8_MEMBER( mkit09_state::pa_w )
data ^= 0xff;
if (m_keydata > 3)
{
- output().set_digit_value(m_keydata, BITSWAP8(data, 7, 0, 5, 6, 4, 2, 1, 3));
+ output().set_digit_value(m_keydata, bitswap<8>(data, 7, 0, 5, 6, 4, 2, 1, 3));
m_keydata = 0;
}
diff --git a/src/mame/drivers/model2.cpp b/src/mame/drivers/model2.cpp
index 87168015871..b7c3ad3230c 100644
--- a/src/mame/drivers/model2.cpp
+++ b/src/mame/drivers/model2.cpp
@@ -261,11 +261,11 @@ uint32_t model2_state::copro_fifoout_pop(address_space &space,uint32_t offset, u
{
if (m_copro_fifoout_num == COPRO_FIFOOUT_SIZE)
{
- space.machine().device<adsp21062_device>("dsp")->set_flag_input(1, ASSERT_LINE);
+ machine().device<adsp21062_device>("dsp")->set_flag_input(1, ASSERT_LINE);
}
else
{
- space.machine().device<adsp21062_device>("dsp")->set_flag_input(1, CLEAR_LINE);
+ machine().device<adsp21062_device>("dsp")->set_flag_input(1, CLEAR_LINE);
}
}
diff --git a/src/mame/drivers/monzagp.cpp b/src/mame/drivers/monzagp.cpp
index f3ad86581e9..2418948ce26 100644
--- a/src/mame/drivers/monzagp.cpp
+++ b/src/mame/drivers/monzagp.cpp
@@ -235,7 +235,7 @@ uint32_t monzagp_state::screen_update_monzagp(screen_device &screen, bitmap_ind1
bitmap.pix16(y, x) = color;
// collisions
- uint8_t coll_prom_addr = BITSWAP8(tile_idx, 7, 6, 5, 4, 2, 0, 1, 3);
+ uint8_t coll_prom_addr = bitswap<8>(tile_idx, 7, 6, 5, 4, 2, 0, 1, 3);
uint8_t collisions = collisions_prom[((mycar && othercars) ? 0 : 0x80) | (inv ? 0x40 : 0) | (coll_prom_addr << 2) | (mycar ? 0 : 0x02) | (tile_color & 0x01)];
m_collisions_ff |= ((m_collisions_clk ^ collisions) & collisions);
m_collisions_clk = collisions;
@@ -299,7 +299,7 @@ READ8_MEMBER(monzagp_state::port_r)
}
if (!(m_p1 & 0x40)) // digits
{
- data = m_score_ram[BITSWAP8(offset, 3,2,1,0,7,6,5,4)];
+ data = m_score_ram[bitswap<8>(offset, 3,2,1,0,7,6,5,4)];
//printf("ext 6 r P1:%02x P2:%02x %02x\n", m_p1, m_p2, offset);
}
if (!(m_p1 & 0x80))
@@ -350,7 +350,7 @@ WRITE8_MEMBER(monzagp_state::port_w)
if (!(m_p1 & 0x40)) // digits
{
//printf("ext 6 w P1:%02x P2:%02x, %02x = %02x\n", m_p1, m_p2, offset, data);
- offs_t ram_offset = BITSWAP8(offset, 3,2,1,0,7,6,5,4);
+ offs_t ram_offset = bitswap<8>(offset, 3,2,1,0,7,6,5,4);
m_score_ram[ram_offset] = data & 0x0f;
if ((ram_offset & 0x07) == 0)
diff --git a/src/mame/drivers/mpf1.cpp b/src/mame/drivers/mpf1.cpp
index 44a610eeb74..ca03e5a893c 100644
--- a/src/mame/drivers/mpf1.cpp
+++ b/src/mame/drivers/mpf1.cpp
@@ -276,7 +276,7 @@ READ8_MEMBER( mpf1_state::ppi_pa_r )
WRITE8_MEMBER( mpf1_state::ppi_pb_w )
{
/* swap bits around for the mame 7-segment emulation */
- uint8_t led_data = BITSWAP8(data, 6, 1, 2, 0, 7, 5, 4, 3);
+ uint8_t led_data = bitswap<8>(data, 6, 1, 2, 0, 7, 5, 4, 3);
/* timer to update segments */
m_led_refresh_timer->adjust(attotime::from_usec(70), led_data);
diff --git a/src/mame/drivers/mpu12wbk.cpp b/src/mame/drivers/mpu12wbk.cpp
index 1addccedda6..21ebe65a1ca 100644
--- a/src/mame/drivers/mpu12wbk.cpp
+++ b/src/mame/drivers/mpu12wbk.cpp
@@ -486,7 +486,7 @@ GFXDECODE_END
static MACHINE_CONFIG_START( mpu12wbk )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M6809, MASTER_CLOCK/2) /* guess */
+ MCFG_CPU_ADD("maincpu", MC6809, MASTER_CLOCK)
MCFG_CPU_PROGRAM_MAP(mpu12wbk_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", mpu12wbk_state, nmi_line_pulse)
diff --git a/src/mame/drivers/multfish.cpp b/src/mame/drivers/multfish.cpp
index a19bcf08ce0..2d17657197d 100644
--- a/src/mame/drivers/multfish.cpp
+++ b/src/mame/drivers/multfish.cpp
@@ -275,12 +275,12 @@ WRITE8_MEMBER(igrosoft_gamble_state::igrosoft_gamble_vid_w)
case 1:
coldat ^= m_xor_palette;
coldat ^= ((coldat&0x2) >>1) | ((coldat&0x80) >>3) ;
- coldat = BITSWAP16(coldat,10,15,5,13,8,12,11,2,0,4,7,14,9,3,1,6);
+ coldat = bitswap<16>(coldat,10,15,5,13,8,12,11,2,0,4,7,14,9,3,1,6);
break;
case 2:
coldat ^= m_xor_palette;
coldat ^= ((coldat&0x0001) <<1) ^ ((coldat&0x0010) <<1) ^ ((coldat&0x0010) <<2) ^ ((coldat&0x0020) <<1) ^ ((coldat&0x0080) >>1);
- coldat = BITSWAP16(coldat,4,10,13,14,8,11,15,12,2,6,5,0,7,3,1,9);
+ coldat = bitswap<16>(coldat,4,10,13,14,8,11,15,12,2,6,5,0,7,3,1,9);
break;
case 3:
// WRONG
@@ -463,7 +463,7 @@ A12 <-> A13
for (j = 0; j < (igrosoft_gamble_ROM_SIZE/0x40); j++)
{
- jscr = BITSWAP16(j,15,14,13,4,3,2,0,1,6,7,5,12,11,10,8,9);
+ jscr = bitswap<16>(j,15,14,13,4,3,2,0,1,6,7,5,12,11,10,8,9);
memcpy(&temprom[j*0x40],&igrosoft_gamble_gfx[romoffset+(jscr*0x40)],0x40);
}
@@ -477,7 +477,7 @@ static inline void rom_decodel(uint8_t *romptr, uint8_t *tmprom, uint8_t xor_dat
for (i = 0; i < igrosoft_gamble_ROM_SIZE; i++)
{
- jscr = BITSWAP24(i,23,22,21,20,19,17,14,18,16,15,12,13,11,9,6,10,8,7,4,5,3,2,1,0) ^ xor_add ^ 8;
+ jscr = bitswap<24>(i,23,22,21,20,19,17,14,18,16,15,12,13,11,9,6,10,8,7,4,5,3,2,1,0) ^ xor_add ^ 8;
tmprom[i] = romptr[jscr] ^ xor_data;
}
memcpy(romptr,tmprom,igrosoft_gamble_ROM_SIZE);
@@ -488,7 +488,7 @@ static inline void rom_decodeh(uint8_t *romptr, uint8_t *tmprom, uint8_t xor_dat
for (i = 0; i < igrosoft_gamble_ROM_SIZE; i++)
{
- jscr = BITSWAP24(i,23,22,21,20,19,17,14,18,16,15,12,13,11,9,6,10,8,7,4,5,2,3,1,0) ^ xor_add;
+ jscr = bitswap<24>(i,23,22,21,20,19,17,14,18,16,15,12,13,11,9,6,10,8,7,4,5,2,3,1,0) ^ xor_add;
tmprom[i] = romptr[jscr] ^ xor_data;
}
memcpy(romptr,tmprom,igrosoft_gamble_ROM_SIZE);
@@ -516,7 +516,7 @@ static inline void roment_decodel(uint8_t *romptr, uint8_t *tmprom, uint8_t xor_
for (i = 0; i < igrosoft_gamble_ROM_SIZE; i++)
{
- jscr = BITSWAP24(i,23,22,21,20,19,16,18,17,14,15,12,13,11,8,10,9,6,7,4,5,3,2,1,0) ^ xor_add ^ 8;
+ jscr = bitswap<24>(i,23,22,21,20,19,16,18,17,14,15,12,13,11,8,10,9,6,7,4,5,3,2,1,0) ^ xor_add ^ 8;
tmprom[i] = romptr[jscr] ^ xor_data;
}
memcpy(romptr,tmprom,igrosoft_gamble_ROM_SIZE);
@@ -527,7 +527,7 @@ static inline void roment_decodeh(uint8_t *romptr, uint8_t *tmprom, uint8_t xor_
for (i = 0; i < igrosoft_gamble_ROM_SIZE; i++)
{
- jscr = BITSWAP24(i,23,22,21,20,19,16,18,17,14,15,12,13,11,8,10,9,6,7,4,5,2,3,1,0) ^ xor_add;
+ jscr = bitswap<24>(i,23,22,21,20,19,16,18,17,14,15,12,13,11,8,10,9,6,7,4,5,2,3,1,0) ^ xor_add;
tmprom[i] = romptr[jscr] ^ xor_data;
}
memcpy(romptr,tmprom,igrosoft_gamble_ROM_SIZE);
diff --git a/src/mame/drivers/multi16.cpp b/src/mame/drivers/multi16.cpp
index 0e90f79d5da..5fddd89b9a0 100644
--- a/src/mame/drivers/multi16.cpp
+++ b/src/mame/drivers/multi16.cpp
@@ -76,7 +76,7 @@ uint32_t multi16_state::screen_update_multi16(screen_device &screen, bitmap_ind1
{
for(xi=0;xi<16;xi++)
{
- int dot = (BITSWAP16(m_p_vram[count],7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8) >> (15-xi)) & 0x1;
+ int dot = (bitswap<16>(m_p_vram[count],7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8) >> (15-xi)) & 0x1;
if(screen.visible_area().contains(x*16+xi, y))
bitmap.pix16(y, x*16+xi) = m_palette->pen(dot);
diff --git a/src/mame/drivers/multigam.cpp b/src/mame/drivers/multigam.cpp
index b157777e246..34a36ab29f5 100644
--- a/src/mame/drivers/multigam.cpp
+++ b/src/mame/drivers/multigam.cpp
@@ -1433,7 +1433,7 @@ DRIVER_INIT_MEMBER(multigam_state,multigmt)
memcpy(&buf[0], rom, size);
for (i = 0; i < size; i++)
{
- addr = BITSWAP24(i,23,22,21,20,19,18,17,16,15,14,13,8,11,12,10,9,7,6,5,4,3,2,1,0);
+ addr = bitswap<24>(i,23,22,21,20,19,18,17,16,15,14,13,8,11,12,10,9,7,6,5,4,3,2,1,0);
rom[i] = buf[addr];
}
@@ -1442,7 +1442,7 @@ DRIVER_INIT_MEMBER(multigam_state,multigmt)
memcpy(&buf[0], rom, size);
for (i = 0; i < size; i++)
{
- addr = BITSWAP24(i,23,22,21,20,19,18,17,16,15,14,13,8,11,12,10,9,7,6,5,4,3,2,1,0);
+ addr = bitswap<24>(i,23,22,21,20,19,18,17,16,15,14,13,8,11,12,10,9,7,6,5,4,3,2,1,0);
rom[i] = buf[addr];
}
rom = memregion("gfx1")->base();
@@ -1450,8 +1450,8 @@ DRIVER_INIT_MEMBER(multigam_state,multigmt)
memcpy(&buf[0], rom, size);
for (i = 0; i < size; i++)
{
- addr = BITSWAP24(i,23,22,21,20,19,18,17,15,16,11,10,12,13,14,8,9,1,3,5,7,6,4,2,0);
- rom[i] = BITSWAP8(buf[addr], 4, 7, 3, 2, 5, 1, 6, 0);
+ addr = bitswap<24>(i,23,22,21,20,19,18,17,15,16,11,10,12,13,14,8,9,1,3,5,7,6,4,2,0);
+ rom[i] = bitswap<8>(buf[addr], 4, 7, 3, 2, 5, 1, 6, 0);
}
multigam_switch_prg_rom(space, 0x0, 0x01);
diff --git a/src/mame/drivers/mustache.cpp b/src/mame/drivers/mustache.cpp
index 5e99fdc8072..6caa21a1f7a 100644
--- a/src/mame/drivers/mustache.cpp
+++ b/src/mame/drivers/mustache.cpp
@@ -280,10 +280,10 @@ DRIVER_INIT_MEMBER(mustache_state,mustache)
{
uint16_t w;
- buf[i] = BITSWAP8(gfx1[i], 0,5,2,6,4,1,7,3);
+ buf[i] = bitswap<8>(gfx1[i], 0,5,2,6,4,1,7,3);
w = (gfx1[i+G1] << 8) | gfx1[i+G1*2];
- w = BITSWAP16(w, 14,1,13,5,9,2,10,6, 3,8,4,15,0,11,12,7);
+ w = bitswap<16>(w, 14,1,13,5,9,2,10,6, 3,8,4,15,0,11,12,7);
buf[i+G1] = w >> 8;
buf[i+G1*2] = w & 0xff;
@@ -291,7 +291,7 @@ DRIVER_INIT_MEMBER(mustache_state,mustache)
/* BG address lines */
for (i = 0; i < 3*G1; i++)
- gfx1[i] = buf[BITSWAP16(i,15,14,13,2,1,0,12,11,10,9,8,7,6,5,4,3)];
+ gfx1[i] = buf[bitswap<16>(i,15,14,13,2,1,0,12,11,10,9,8,7,6,5,4,3)];
/* SPR data lines */
for (i=0;i<G2; i++)
@@ -299,7 +299,7 @@ DRIVER_INIT_MEMBER(mustache_state,mustache)
uint16_t w;
w = (gfx2[i] << 8) | gfx2[i+G2];
- w = BITSWAP16(w, 5,7,11,4,15,10,3,14, 9,2,13,8,1,12,0,6 );
+ w = bitswap<16>(w, 5,7,11,4,15,10,3,14, 9,2,13,8,1,12,0,6 );
buf[i] = w >> 8;
buf[i+G2] = w & 0xff;
@@ -307,7 +307,7 @@ DRIVER_INIT_MEMBER(mustache_state,mustache)
/* SPR address lines */
for (i = 0; i < 2*G2; i++)
- gfx2[i] = buf[BITSWAP24(i,23,22,21,20,19,18,17,16,15,12,11,10,9,8,7,6,5,4,13,14,3,2,1,0)];
+ gfx2[i] = buf[bitswap<24>(i,23,22,21,20,19,18,17,16,15,12,11,10,9,8,7,6,5,4,13,14,3,2,1,0)];
}
diff --git a/src/mame/drivers/mw8080bw.cpp b/src/mame/drivers/mw8080bw.cpp
index d39836e29ad..75d8c8cf7b6 100644
--- a/src/mame/drivers/mw8080bw.cpp
+++ b/src/mame/drivers/mw8080bw.cpp
@@ -179,7 +179,7 @@ READ8_MEMBER(mw8080bw_state::mw8080bw_shift_result_rev_r)
{
uint8_t ret = m_mb14241->shift_result_r(space, 0);
- return BITSWAP8(ret,0,1,2,3,4,5,6,7);
+ return bitswap<8>(ret,0,1,2,3,4,5,6,7);
}
diff --git a/src/mame/drivers/n64.cpp b/src/mame/drivers/n64.cpp
index 3aac0f61e71..d2786cbb92e 100644
--- a/src/mame/drivers/n64.cpp
+++ b/src/mame/drivers/n64.cpp
@@ -341,7 +341,7 @@ DEVICE_IMAGE_LOAD_MEMBER(n64_mess_state,n64_cart)
}
}
- periphs->m_nvram_image = image;
+ periphs->m_nvram_image = &image.device();
logerror("cart length = %d\n", length);
diff --git a/src/mame/drivers/namcona1.cpp b/src/mame/drivers/namcona1.cpp
index 43a5f1dcccb..617d6f880f3 100644
--- a/src/mame/drivers/namcona1.cpp
+++ b/src/mame/drivers/namcona1.cpp
@@ -268,7 +268,7 @@ READ16_MEMBER(namcona1_state::custom_key_r)
if( offset==3 )
{
uint16_t res;
- res = BITSWAP16(m_keyval, 22,26,31,23,18,20,16,30,24,21,25,19,17,29,28,27);
+ res = bitswap<16>(m_keyval, 22,26,31,23,18,20,16,30,24,21,25,19,17,29,28,27);
m_keyval >>= 1;
// printf("popcount(%08X) = %d\n", m_keyval & 0x58000c00, population_count_32(m_keyval & 0x58000c00));
diff --git a/src/mame/drivers/namcos10.cpp b/src/mame/drivers/namcos10.cpp
index be218dfd3be..4eae0f46de9 100644
--- a/src/mame/drivers/namcos10.cpp
+++ b/src/mame/drivers/namcos10.cpp
@@ -789,7 +789,7 @@ static void decrypt_bios( running_machine &machine, const char *regionName, int
for( int i = 0; i < len; i++ )
{
- BIOS[ i ] = BITSWAP16( BIOS[ i ] ^ 0xaaaa,
+ BIOS[ i ] = bitswap<16>( BIOS[ i ] ^ 0xaaaa,
b15, b14, b13, b12, b11, b10, b9, b8, b7, b6, b5, b4, b3, b2, b1, b0 );
}
}
diff --git a/src/mame/drivers/namcos11.cpp b/src/mame/drivers/namcos11.cpp
index 86784874484..ee1c195bd5f 100644
--- a/src/mame/drivers/namcos11.cpp
+++ b/src/mame/drivers/namcos11.cpp
@@ -516,9 +516,9 @@ ADDRESS_MAP_END
READ16_MEMBER(namcos11_state::c76_speedup_r)
{
- if ((space.device().safe_pc() == 0xc153) && (!(m_su_83 & 0xff00)))
+ if ((m_mcu->pc() == 0xc153) && (!(m_su_83 & 0xff00)))
{
- space.device().execute().spin_until_interrupt();
+ m_mcu->spin_until_interrupt();
}
return m_su_83;
diff --git a/src/mame/drivers/namcos22.cpp b/src/mame/drivers/namcos22.cpp
index 5929f68d546..50ac0075e7c 100644
--- a/src/mame/drivers/namcos22.cpp
+++ b/src/mame/drivers/namcos22.cpp
@@ -5444,9 +5444,9 @@ ROM_END
// for MCU BIOS v1.41
READ16_MEMBER(namcos22_state::mcu141_speedup_r)
{
- if ((space.device().safe_pc() == 0xc12d) && (!(m_su_82 & 0xff00)))
+ if ((m_mcu->pc() == 0xc12d) && (!(m_su_82 & 0xff00)))
{
- space.device().execute().spin_until_interrupt();
+ m_mcu->spin_until_interrupt();
}
return m_su_82;
@@ -5460,9 +5460,9 @@ WRITE16_MEMBER(namcos22_state::mcu_speedup_w)
// for MCU BIOS v1.20/v1.30
READ16_MEMBER(namcos22_state::mcu130_speedup_r)
{
- if ((space.device().safe_pc() == 0xc12a) && (!(m_su_82 & 0xff00)))
+ if ((m_mcu->pc() == 0xc12a) && (!(m_su_82 & 0xff00)))
{
- space.device().execute().spin_until_interrupt();
+ m_mcu->spin_until_interrupt();
}
return m_su_82;
@@ -5471,9 +5471,9 @@ READ16_MEMBER(namcos22_state::mcu130_speedup_r)
// for NSTX7702 v1.00 (C74)
READ16_MEMBER(namcos22_state::mcuc74_speedup_r)
{
- if (((space.device().safe_pc() == 0xc0df) || (space.device().safe_pc() == 0xc101)) && (!(m_su_82 & 0xff00)))
+ if (((m_mcu->pc() == 0xc0df) || (m_mcu->pc() == 0xc101)) && (!(m_su_82 & 0xff00)))
{
- space.device().execute().spin_until_interrupt();
+ m_mcu->spin_until_interrupt();
}
return m_su_82;
diff --git a/src/mame/drivers/namcos23.cpp b/src/mame/drivers/namcos23.cpp
index 138cb3c90d1..66ebe564f04 100644
--- a/src/mame/drivers/namcos23.cpp
+++ b/src/mame/drivers/namcos23.cpp
@@ -1997,7 +1997,7 @@ READ32_MEMBER(namcos23_state::c435_r)
return 1; // Busy flag
}
- logerror("c435_r %02x @ %08x (%08x, %08x)\n", offset, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
+ logerror("c435_r %02x @ %08x (%08x, %08x)\n", offset, mem_mask, m_maincpu->pc(), (unsigned int)m_maincpu->state_int(MIPS3_R31));
return 0;
}
@@ -2015,7 +2015,7 @@ WRITE32_MEMBER(namcos23_state::c435_w)
c435_dma(space, m_c435_address, m_c435_size);
break;
default:
- logerror("c435_w %02x, %08x @ %08x (%08x, %08x)\n", offset, data, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
+ logerror("c435_w %02x, %08x @ %08x (%08x, %08x)\n", offset, data, mem_mask, m_maincpu->pc(), (unsigned int)m_maincpu->state_int(MIPS3_R31));
break;
}
}
@@ -2492,7 +2492,7 @@ READ16_MEMBER(namcos23_state::c417_r)
case 1:
return m_c417.adr;
case 4:
- //logerror("c417_r %04x = %04x (%08x, %08x)\n", c417.adr, c417.ram[c417.adr], space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
+ //logerror("c417_r %04x = %04x (%08x, %08x)\n", c417.adr, c417.ram[c417.adr], m_maincpu->pc(), (unsigned int)m_maincpu->state_int(MIPS3_R31));
return m_c417.ram[m_c417.adr];
case 5:
if(m_c417.pointrom_adr >= m_ptrom_limit)
@@ -2504,7 +2504,7 @@ READ16_MEMBER(namcos23_state::c417_r)
return m_ptrom[m_c417.pointrom_adr];
}
- logerror("c417_r %x @ %04x (%08x, %08x)\n", offset, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
+ logerror("c417_r %x @ %04x (%08x, %08x)\n", offset, mem_mask, m_maincpu->pc(), (unsigned int)m_maincpu->state_int(MIPS3_R31));
return 0;
}
@@ -2524,7 +2524,7 @@ WRITE16_MEMBER(namcos23_state::c417_w)
m_c417.pointrom_adr = 0;
break;
case 4:
- //logerror("c417_w %04x = %04x (%08x, %08x)\n", m_c417.adr, data, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
+ //logerror("c417_w %04x = %04x (%08x, %08x)\n", m_c417.adr, data, m_maincpu->pc(), (unsigned int)m_maincpu->state_int(MIPS3_R31));
COMBINE_DATA(m_c417.ram + m_c417.adr);
break;
case 7:
@@ -2532,7 +2532,7 @@ WRITE16_MEMBER(namcos23_state::c417_w)
update_main_interrupts(m_main_irqcause & ~MAIN_C435_IRQ);
break;
default:
- logerror("c417_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
+ logerror("c417_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, m_maincpu->pc(), (unsigned int)m_maincpu->state_int(MIPS3_R31));
break;
}
}
@@ -2543,7 +2543,7 @@ WRITE16_MEMBER(namcos23_state::c417_w)
READ16_MEMBER(namcos23_state::c412_ram_r)
{
- // logerror("c412_ram_r %06x (%08x, %08x)\n", offset, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
+ // logerror("c412_ram_r %06x (%08x, %08x)\n", offset, m_maincpu->pc(), (unsigned int)m_maincpu->state_int(MIPS3_R31));
if(offset < 0x100000)
return m_c412.sdram_a[offset & 0xfffff];
else if(offset < 0x200000)
@@ -2558,7 +2558,7 @@ READ16_MEMBER(namcos23_state::c412_ram_r)
WRITE16_MEMBER(namcos23_state::c412_ram_w)
{
- // logerror("c412_ram_w %06x = %04x (%08x, %08x)\n", offset, data, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
+ // logerror("c412_ram_w %06x = %04x (%08x, %08x)\n", offset, data, m_maincpu->pc(), (unsigned int)m_maincpu->state_int(MIPS3_R31));
if(offset < 0x100000)
COMBINE_DATA(m_c412.sdram_a + (offset & 0xfffff));
else if(offset < 0x200000)
@@ -2587,7 +2587,7 @@ READ16_MEMBER(namcos23_state::c412_r)
return m_c412.status_c;
}
- logerror("c412_r %x @ %04x (%08x, %08x)\n", offset, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
+ logerror("c412_r %x @ %04x (%08x, %08x)\n", offset, mem_mask, m_maincpu->pc(), (unsigned int)m_maincpu->state_int(MIPS3_R31));
return 0;
}
@@ -2609,7 +2609,7 @@ WRITE16_MEMBER(namcos23_state::c412_w)
m_c412.adr += 2;
break;
default:
- logerror("c412_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
+ logerror("c412_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, m_maincpu->pc(), (unsigned int)m_maincpu->state_int(MIPS3_R31));
break;
}
}
@@ -2620,7 +2620,7 @@ WRITE16_MEMBER(namcos23_state::c412_w)
READ16_MEMBER(namcos23_state::c421_ram_r)
{
- // logerror("c421_ram_r %06x (%08x, %08x)\n", offset, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
+ // logerror("c421_ram_r %06x (%08x, %08x)\n", offset, m_maincpu->pc(), (unsigned int)m_maincpu->state_int(MIPS3_R31));
if(offset < 0x40000)
return m_c421.dram_a[offset & 0x3ffff];
else if(offset < 0x80000)
@@ -2633,7 +2633,7 @@ READ16_MEMBER(namcos23_state::c421_ram_r)
WRITE16_MEMBER(namcos23_state::c421_ram_w)
{
- // logerror("c421_ram_w %06x = %04x (%08x, %08x)\n", offset, data, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
+ // logerror("c421_ram_w %06x = %04x (%08x, %08x)\n", offset, data, m_maincpu->pc(), (unsigned int)m_maincpu->state_int(MIPS3_R31));
if(offset < 0x40000)
COMBINE_DATA(m_c421.dram_a + (offset & 0x3ffff));
else if(offset < 0x80000)
@@ -2654,7 +2654,7 @@ READ16_MEMBER(namcos23_state::c421_r)
return m_c421.adr;
}
- logerror("c421_r %x @ %04x (%08x, %08x)\n", offset, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
+ logerror("c421_r %x @ %04x (%08x, %08x)\n", offset, mem_mask, m_maincpu->pc(), (unsigned int)m_maincpu->state_int(MIPS3_R31));
return 0;
}
@@ -2672,7 +2672,7 @@ WRITE16_MEMBER(namcos23_state::c421_w)
m_c421.adr = (data & mem_mask) | (m_c421.adr & (0xffffffff ^ mem_mask));
break;
default:
- logerror("c421_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
+ logerror("c421_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, m_maincpu->pc(), (unsigned int)m_maincpu->state_int(MIPS3_R31));
break;
}
}
@@ -2743,7 +2743,7 @@ WRITE16_MEMBER(namcos23_state::c361_w)
break;
default:
- logerror("c361_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
+ logerror("c361_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, m_maincpu->pc(), (unsigned int)m_maincpu->state_int(MIPS3_R31));
break;
}
}
@@ -2761,7 +2761,7 @@ READ16_MEMBER(namcos23_state::c361_r)
return m_screen->vblank() ? 1 : 0;
}
- logerror("c361_r %x @ %04x (%08x, %08x)\n", offset, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
+ logerror("c361_r %x @ %04x (%08x, %08x)\n", offset, mem_mask, m_maincpu->pc(), (unsigned int)m_maincpu->state_int(MIPS3_R31));
return 0xffff;
}
@@ -2793,11 +2793,11 @@ WRITE16_MEMBER(namcos23_state::ctl_w)
case 6: // gmen wars spams this heavily with 0 prior to starting the GMEN board test
if(data != 0)
- logerror("ctl_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
+ logerror("ctl_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, m_maincpu->pc(), (unsigned int)m_maincpu->state_int(MIPS3_R31));
break;
default:
- logerror("ctl_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
+ logerror("ctl_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, m_maincpu->pc(), (unsigned int)m_maincpu->state_int(MIPS3_R31));
break;
}
}
@@ -2815,7 +2815,7 @@ READ16_MEMBER(namcos23_state::ctl_r)
}
}
- logerror("ctl_r %x @ %04x (%08x, %08x)\n", offset, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));
+ logerror("ctl_r %x @ %04x (%08x, %08x)\n", offset, mem_mask, m_maincpu->pc(), (unsigned int)m_maincpu->state_int(MIPS3_R31));
return 0xffff;
}
diff --git a/src/mame/drivers/naomi.cpp b/src/mame/drivers/naomi.cpp
index ed210008ce4..327f8292da0 100644
--- a/src/mame/drivers/naomi.cpp
+++ b/src/mame/drivers/naomi.cpp
@@ -9518,14 +9518,14 @@ DRIVER_INIT_MEMBER(atomiswave_state,atomiswave)
READ64_MEMBER(atomiswave_state::xtrmhnt2_hack_r)
{
// disable ALL.Net board check
- if (space.device().safe_pc() == 0xc03cb30)
+ if (m_maincpu->pc() == 0xc03cb30)
{
dc_ram[0x357fe/8] |= (uint64_t)0x200 << 48;
dc_ram[0x358e2/8] |= (uint64_t)0x200 << 16;
dc_ram[0x38bb2/8] |= (uint64_t)0x200 << 16;
dc_ram[0x38bee/8] |= (uint64_t)0x200 << 48;
}
- if (space.device().safe_pc() == 0xc108240)
+ if (m_maincpu->pc() == 0xc108240)
dc_ram[0x9acc8/8] = (dc_ram[0x9acc8/8] & 0xffffffffffff0000U) | (uint64_t)0x0009;
return 0;
}
diff --git a/src/mame/drivers/nbmj8688.cpp b/src/mame/drivers/nbmj8688.cpp
index 46b3a3736ed..16cd0b48db3 100644
--- a/src/mame/drivers/nbmj8688.cpp
+++ b/src/mame/drivers/nbmj8688.cpp
@@ -59,7 +59,7 @@ DRIVER_INIT_MEMBER(nbmj8688_state,mjcamera)
the checksum. */
for (i = 0;i < 0x10000;i++)
{
- rom[i] = BITSWAP8(prot[i],1,6,0,4,2,3,5,7);
+ rom[i] = bitswap<8>(prot[i],1,6,0,4,2,3,5,7);
}
}
@@ -99,7 +99,7 @@ DRIVER_INIT_MEMBER(nbmj8688_state,idhimitu)
the checksum. */
for (i = 0;i < 0x10000;i++)
{
- rom[i] = BITSWAP8(prot[i + 0x10000],4,6,2,1,7,0,3,5);
+ rom[i] = bitswap<8>(prot[i + 0x10000],4,6,2,1,7,0,3,5);
}
}
@@ -116,7 +116,7 @@ DRIVER_INIT_MEMBER(nbmj8688_state,kaguya2)
the checksum. */
for (i = 0;i < 0x10000;i++)
{
- rom[i] = BITSWAP8(prot[i],1,6,0,4,2,3,5,7);
+ rom[i] = bitswap<8>(prot[i],1,6,0,4,2,3,5,7);
}
}
diff --git a/src/mame/drivers/nbmj8891.cpp b/src/mame/drivers/nbmj8891.cpp
index 0addb1efefb..6b7ddd3bdec 100644
--- a/src/mame/drivers/nbmj8891.cpp
+++ b/src/mame/drivers/nbmj8891.cpp
@@ -64,7 +64,7 @@ DRIVER_INIT_MEMBER(nbmj8891_state,gionbana)
the checksum. */
for (i = 0;i < 0x20000;i++)
{
- prot[i] = BITSWAP8(prot[i],2,7,3,5,0,6,4,1);
+ prot[i] = bitswap<8>(prot[i],2,7,3,5,0,6,4,1);
}
}
@@ -81,7 +81,7 @@ DRIVER_INIT_MEMBER(nbmj8891_state,omotesnd)
the checksum. */
for (i = 0;i < 0x20000;i++)
{
- prot[i] = BITSWAP8(prot[i],2,7,3,5,0,6,4,1);
+ prot[i] = bitswap<8>(prot[i],2,7,3,5,0,6,4,1);
}
#endif
@@ -114,7 +114,7 @@ DRIVER_INIT_MEMBER(nbmj8891_state,telmahjn)
the checksum. */
for (i = 0;i < 0x20000;i++)
{
- prot[i] = BITSWAP8(prot[i + 0x20000],7,0,4,1,5,2,6,3);
+ prot[i] = bitswap<8>(prot[i + 0x20000],7,0,4,1,5,2,6,3);
}
}
@@ -130,7 +130,7 @@ DRIVER_INIT_MEMBER(nbmj8891_state,mgmen89)
the checksum. */
for (i = 0;i < 0x20000;i++)
{
- prot[i] = BITSWAP8(prot[i],5,6,1,0,7,3,2,4);
+ prot[i] = bitswap<8>(prot[i],5,6,1,0,7,3,2,4);
}
}
@@ -150,7 +150,7 @@ DRIVER_INIT_MEMBER(nbmj8891_state,mjfocus)
the checksum. */
for (i = 0;i < 0x20000;i++)
{
- prot[i] = BITSWAP8(prot[i + 0x20000],7,0,4,1,5,2,6,3);
+ prot[i] = bitswap<8>(prot[i + 0x20000],7,0,4,1,5,2,6,3);
}
}
@@ -190,7 +190,7 @@ DRIVER_INIT_MEMBER(nbmj8891_state,mjnanpas)
the checksum. */
for (i = 0;i < 0x20000;i++)
{
- prot[i] = BITSWAP8(prot[i + 0x20000],0,5,2,3,6,7,1,4);
+ prot[i] = bitswap<8>(prot[i + 0x20000],0,5,2,3,6,7,1,4);
}
#endif
}
@@ -207,7 +207,7 @@ DRIVER_INIT_MEMBER(nbmj8891_state,pairsnb)
the checksum. */
for (i = 0;i < 0x20000;i++)
{
- prot[i] = BITSWAP8(prot[i],5,6,1,0,7,3,2,4);
+ prot[i] = bitswap<8>(prot[i],5,6,1,0,7,3,2,4);
}
}
@@ -223,7 +223,7 @@ DRIVER_INIT_MEMBER(nbmj8891_state,pairsten)
the checksum. */
for (i = 0;i < 0x20000;i++)
{
- prot[i] = BITSWAP8(prot[i + 0x20000],5,6,0,4,3,7,1,2);
+ prot[i] = bitswap<8>(prot[i + 0x20000],5,6,0,4,3,7,1,2);
}
}
diff --git a/src/mame/drivers/nbmj8900.cpp b/src/mame/drivers/nbmj8900.cpp
index ae72ebbf2fb..47604a51cb3 100644
--- a/src/mame/drivers/nbmj8900.cpp
+++ b/src/mame/drivers/nbmj8900.cpp
@@ -49,7 +49,7 @@ DRIVER_INIT_MEMBER(nbmj8900_state,ohpaipee)
for (i = 0;i < 0x20000;i++)
{
- prot[i] = BITSWAP8(prot[i],2,7,3,5,0,6,4,1);
+ prot[i] = bitswap<8>(prot[i],2,7,3,5,0,6,4,1);
}
#else
unsigned char *ROM = memregion("maincpu")->base();
@@ -77,7 +77,7 @@ DRIVER_INIT_MEMBER(nbmj8900_state,togenkyo)
the checksum. */
for (i = 0;i < 0x20000;i++)
{
- prot[i] = BITSWAP8(prot[i],2,7,3,5,0,6,4,1);
+ prot[i] = bitswap<8>(prot[i],2,7,3,5,0,6,4,1);
}
#else
unsigned char *ROM = memregion("maincpu")->base();
diff --git a/src/mame/drivers/neogeo.cpp b/src/mame/drivers/neogeo.cpp
index 7ff8212317e..ffad1356e0c 100644
--- a/src/mame/drivers/neogeo.cpp
+++ b/src/mame/drivers/neogeo.cpp
@@ -3361,6 +3361,25 @@ ROM_START( bjourney ) /* MVS AND AES VERSION */
ROM_LOAD16_BYTE( "022-c4.c4", 0x200001, 0x080000, CRC(71bfd48a) SHA1(47288be69e6992d09ebef108b4de9ffab6293dc8) ) /* Plane 2,3 */ /* TC534200 */
ROM_END
+ROM_START( bjourneyh ) /* AES VERSION */
+ ROM_REGION( 0x100000, "cslot1:maincpu", ROMREGION_BE|ROMREGION_16BIT )
+ ROM_LOAD16_WORD_SWAP( "022-hp1.p1", 0x000000, 0x100000, CRC(62cbe7b2) SHA1(f9a8fd98702c623ae793804ba50d09751e3fee4c) ) /* TC538200 */
+
+ NEO_SFIX_128K( "022-s1.s1", CRC(843c3624) SHA1(dbdf86c193b7c1d795f8c21f2c103c1d3e18abbe) ) /* TC531000 */
+
+ NEO_BIOS_AUDIO_128K( "022-m1.m1", CRC(8e1d4ab6) SHA1(deabc11ab81e7e68a3e041c03a127ae28d0d7264) ) /* TC531001 */
+
+ ROM_REGION( 0x200000, "cslot1:ymsnd", 0 )
+ ROM_LOAD( "022-v11.v11", 0x000000, 0x100000, CRC(2cb4ad91) SHA1(169ec7303c4275155a66a88cc08270c24132bb36) ) /* TC538200 */
+ ROM_LOAD( "022-v22.v22", 0x100000, 0x100000, CRC(65a54d13) SHA1(a591fbcedca8f679dacbebcd554e3aa3fd163e92) ) /* TC538200 */
+
+ ROM_REGION( 0x300000, "cslot1:sprites", 0 )
+ ROM_LOAD16_BYTE( "022-c1.c1", 0x000000, 0x100000, CRC(4d47a48c) SHA1(6e282285be72583d828e7765b1c1695ecdc44777) ) /* Plane 0,1 */ /* TC538200 */
+ ROM_LOAD16_BYTE( "022-c2.c2", 0x000001, 0x100000, CRC(e8c1491a) SHA1(c468d2556b3de095aaa05edd1bc16d71303e9478) ) /* Plane 2,3 */ /* TC538200 */
+ ROM_LOAD16_BYTE( "022-c3.c3", 0x200000, 0x080000, CRC(66e69753) SHA1(974b823fc62236fbc23e727f25b61a805a707a9e) ) /* Plane 0,1 */ /* TC534200 */
+ ROM_LOAD16_BYTE( "022-c4.c4", 0x200001, 0x080000, CRC(71bfd48a) SHA1(47288be69e6992d09ebef108b4de9ffab6293dc8) ) /* Plane 2,3 */ /* TC534200 */
+ROM_END
+
/****************************************
ID-0023
. NGM-023
@@ -10953,6 +10972,7 @@ GAME( 1990, maglordh, maglord, neobase, neogeo, neogeo_state, neogeo, R
GAME( 1990, ncombat, neogeo, neobase, neogeo, neogeo_state, neogeo, ROT0, "Alpha Denshi Co.", "Ninja Combat (NGM-009)", MACHINE_SUPPORTS_SAVE )
GAME( 1990, ncombath, ncombat, neobase, neogeo, neogeo_state, neogeo, ROT0, "Alpha Denshi Co.", "Ninja Combat (NGH-009)", MACHINE_SUPPORTS_SAVE )
GAME( 1990, bjourney, neogeo, neobase, neogeo, neogeo_state, neogeo, ROT0, "Alpha Denshi Co.", "Blue's Journey / Raguy (ALM-001 ~ ALH-001)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, bjourneyh, bjourney, neobase, neogeo, neogeo_state, neogeo, ROT0, "Alpha Denshi Co.", "Blue's Journey / Raguy (ALH-001)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, crsword, neogeo, neobase, neogeo, neogeo_state, neogeo, ROT0, "Alpha Denshi Co.", "Crossed Swords (ALM-002 ~ ALH-002)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, trally, neogeo, neobase, neogeo, neogeo_state, neogeo, ROT0, "Alpha Denshi Co.", "Thrash Rally (ALM-003 ~ ALH-003)", MACHINE_NODEVICE_LAN | MACHINE_SUPPORTS_SAVE )
GAME( 1992, ncommand, neogeo, neobase, neogeo, neogeo_state, neogeo, ROT0, "Alpha Denshi Co.", "Ninja Commando", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/neogeocd.cpp b/src/mame/drivers/neogeocd.cpp
index 1a5cb72ceaf..ad036ce7699 100644
--- a/src/mame/drivers/neogeocd.cpp
+++ b/src/mame/drivers/neogeocd.cpp
@@ -282,7 +282,7 @@ WRITE16_MEMBER(ngcd_state::neocd_control_w)
case 0x0126:
// bprintf(PRINT_NORMAL, _T(" - NGCD Z80 BUSREQ -> 1 (PC: 0x%06X)\n"), SekGetPC(-1));
m_has_z80_bus = false;
- space.machine().scheduler().synchronize();
+ machine().scheduler().synchronize();
m_audiocpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
break;
case 0x0128:
@@ -301,7 +301,7 @@ WRITE16_MEMBER(ngcd_state::neocd_control_w)
case 0x0146:
// bprintf(PRINT_NORMAL, _T(" - NGCD Z80 BUSREQ -> 0 (PC: 0x%06X)\n"), SekGetPC(-1));
m_has_z80_bus = true;
- space.machine().scheduler().synchronize();
+ machine().scheduler().synchronize();
m_audiocpu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
break;
case 0x0148:
diff --git a/src/mame/drivers/neopcb.cpp b/src/mame/drivers/neopcb.cpp
index ae05d6209f0..ca7c8a084b2 100644
--- a/src/mame/drivers/neopcb.cpp
+++ b/src/mame/drivers/neopcb.cpp
@@ -250,7 +250,7 @@ void neopcb_state::svcpcb_gfx_decrypt()
for (int i = 0; i < rom_size; i += 4)
{
uint32_t rom32 = rom[i] | rom[i+1]<<8 | rom[i+2]<<16 | rom[i+3]<<24;
- rom32 = BITSWAP32(rom32, 0x09, 0x0d, 0x13, 0x00, 0x17, 0x0f, 0x03, 0x05, 0x04, 0x0c, 0x11, 0x1e, 0x12, 0x15, 0x0b, 0x06, 0x1b, 0x0a, 0x1a, 0x1c, 0x14, 0x02, 0x0e, 0x1d, 0x18, 0x08, 0x01, 0x10, 0x19, 0x1f, 0x07, 0x16);
+ rom32 = bitswap<32>(rom32, 0x09, 0x0d, 0x13, 0x00, 0x17, 0x0f, 0x03, 0x05, 0x04, 0x0c, 0x11, 0x1e, 0x12, 0x15, 0x0b, 0x06, 0x1b, 0x0a, 0x1a, 0x1c, 0x14, 0x02, 0x0e, 0x1d, 0x18, 0x08, 0x01, 0x10, 0x19, 0x1f, 0x07, 0x16);
buf[i] = rom32 & 0xff;
buf[i+1] = (rom32>>8) & 0xff;
buf[i+2] = (rom32>>16) & 0xff;
@@ -259,7 +259,7 @@ void neopcb_state::svcpcb_gfx_decrypt()
for (int i = 0; i < rom_size / 4; i++)
{
- int ofst = BITSWAP24((i & 0x1fffff), 0x17, 0x16, 0x15, 0x04, 0x0b, 0x0e, 0x08, 0x0c, 0x10, 0x00, 0x0a, 0x13, 0x03, 0x06, 0x02, 0x07, 0x0d, 0x01, 0x11, 0x09, 0x14, 0x0f, 0x12, 0x05);
+ int ofst = bitswap<24>((i & 0x1fffff), 0x17, 0x16, 0x15, 0x04, 0x0b, 0x0e, 0x08, 0x0c, 0x10, 0x00, 0x0a, 0x13, 0x03, 0x06, 0x02, 0x07, 0x0d, 0x01, 0x11, 0x09, 0x14, 0x0f, 0x12, 0x05);
ofst ^= 0x0c8923;
ofst += (i & 0xffe00000);
memcpy(&rom[i * 4], &buf[ofst * 4], 0x04);
@@ -274,7 +274,7 @@ void neopcb_state::svcpcb_s1data_decrypt()
size_t s1_size = memregion("fixed")->bytes();
for (int i = 0; i < s1_size; i++) // Decrypt S
- s1[i] = BITSWAP8(s1[i] ^ 0xd2, 4, 0, 7, 2, 5, 1, 6, 3);
+ s1[i] = bitswap<8>(s1[i] ^ 0xd2, 4, 0, 7, 2, 5, 1, 6, 3);
}
@@ -294,7 +294,7 @@ void neopcb_state::kf2k3pcb_gfx_decrypt()
for (int i = 0; i < rom_size; i +=4)
{
uint32_t rom32 = rom[i] | rom[i+1]<<8 | rom[i+2]<<16 | rom[i+3]<<24;
- rom32 = BITSWAP32(rom32, 0x09, 0x0d, 0x13, 0x00, 0x17, 0x0f, 0x03, 0x05, 0x04, 0x0c, 0x11, 0x1e, 0x12, 0x15, 0x0b, 0x06, 0x1b, 0x0a, 0x1a, 0x1c, 0x14, 0x02, 0x0e, 0x1d, 0x18, 0x08, 0x01, 0x10, 0x19, 0x1f, 0x07, 0x16);
+ rom32 = bitswap<32>(rom32, 0x09, 0x0d, 0x13, 0x00, 0x17, 0x0f, 0x03, 0x05, 0x04, 0x0c, 0x11, 0x1e, 0x12, 0x15, 0x0b, 0x06, 0x1b, 0x0a, 0x1a, 0x1c, 0x14, 0x02, 0x0e, 0x1d, 0x18, 0x08, 0x01, 0x10, 0x19, 0x1f, 0x07, 0x16);
buf[i] = rom32 & 0xff;
buf[i+1] = (rom32>>8) & 0xff;
buf[i+2] = (rom32>>16) & 0xff;
@@ -303,7 +303,7 @@ void neopcb_state::kf2k3pcb_gfx_decrypt()
for (int i = 0; i < rom_size; i+=4)
{
- int ofst = BITSWAP24((i & 0x7fffff), 0x17, 0x15, 0x0a, 0x14, 0x13, 0x16, 0x12, 0x11, 0x10, 0x0f, 0x0e, 0x0d, 0x0c, 0x0b, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00);
+ int ofst = bitswap<24>((i & 0x7fffff), 0x17, 0x15, 0x0a, 0x14, 0x13, 0x16, 0x12, 0x11, 0x10, 0x0f, 0x0e, 0x0d, 0x0c, 0x0b, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00);
ofst ^= 0x000000;
ofst += (i & 0xff800000);
memcpy(&rom[ofst], &buf[i], 0x04);
@@ -333,7 +333,7 @@ void neopcb_state::kf2k3pcb_decrypt_s1data()
dst = memregion("fixed")->base();
for (int i = 0; i < tx_size; i++)
- dst[i] = BITSWAP8(dst[i] ^ 0xd2, 4, 0, 7, 2, 5, 1, 6, 3);
+ dst[i] = bitswap<8>(dst[i] ^ 0xd2, 4, 0, 7, 2, 5, 1, 6, 3);
}
@@ -498,7 +498,7 @@ DRIVER_INIT_MEMBER(neopcb_state, kf2k3pcb)
// incorrect
uint8_t* rom = memregion("audiocpu")->base();
for (int i = 0; i < 0x90000; i++)
- rom[i] = BITSWAP8(rom[i], 5, 6, 1, 4, 3, 0, 7, 2);
+ rom[i] = bitswap<8>(rom[i], 5, 6, 1, 4, 3, 0, 7, 2);
kf2k3pcb_gfx_decrypt();
m_cmc_prot->cmc50_gfx_decrypt(spr_region, spr_region_size, KOF2003_GFX_KEY);
diff --git a/src/mame/drivers/newbrain.cpp b/src/mame/drivers/newbrain.cpp
index c4ebd73867a..b70ad8c064b 100644
--- a/src/mame/drivers/newbrain.cpp
+++ b/src/mame/drivers/newbrain.cpp
@@ -514,7 +514,7 @@ WRITE8_MEMBER( newbrain_state::cop_d_w )
// COP to VFD serial format, bits 15..0
// A B J I x H G2 C x F G1 E K L M D
- uint16_t value = BITSWAP16(m_402_q, 11, 7, 1, 13, 10, 3, 2, 12, 9, 5, 6, 4, 0, 8, 14, 15) & 0x3fff;
+ uint16_t value = bitswap<16>(m_402_q, 11, 7, 1, 13, 10, 3, 2, 12, 9, 5, 6, 4, 0, 8, 14, 15) & 0x3fff;
output().set_digit_value(m_405_q & 0x0f, value);
if (LOG_VFD) logerror("%s %s vfd segment %u 402.Q %04x data %04x\n", machine().time().as_string(), machine().describe_context(), m_405_q & 0x0f, m_402_q, value);
diff --git a/src/mame/drivers/niyanpai.cpp b/src/mame/drivers/niyanpai.cpp
index 043b83e347e..214ff58b00b 100644
--- a/src/mame/drivers/niyanpai.cpp
+++ b/src/mame/drivers/niyanpai.cpp
@@ -66,8 +66,8 @@ READ16_MEMBER(niyanpai_state::dipsw_r)
uint8_t dipsw_a = ioport("DSWA")->read();
uint8_t dipsw_b = ioport("DSWB")->read();
- dipsw_a = BITSWAP8(dipsw_a,0,1,2,3,4,5,6,7);
- dipsw_b = BITSWAP8(dipsw_b,0,1,2,3,4,5,6,7);
+ dipsw_a = bitswap<8>(dipsw_a,0,1,2,3,4,5,6,7);
+ dipsw_b = bitswap<8>(dipsw_b,0,1,2,3,4,5,6,7);
return ((dipsw_a << 8) | dipsw_b);
}
diff --git a/src/mame/drivers/nmk16.cpp b/src/mame/drivers/nmk16.cpp
index 21e6786440f..17820f09700 100644
--- a/src/mame/drivers/nmk16.cpp
+++ b/src/mame/drivers/nmk16.cpp
@@ -5383,7 +5383,7 @@ static void decryptcode( running_machine &machine, int a23, int a22, int a21, in
memcpy( &buffer[0], RAM, size );
for( i = 0; i < size; i++ )
{
- RAM[ i ] = buffer[ BITSWAP24( i, a23, a22, a21, a20, a19, a18, a17, a16, a15, a14, a13, a12,
+ RAM[ i ] = buffer[ bitswap<24>( i, a23, a22, a21, a20, a19, a18, a17, a16, a15, a14, a13, a12,
a11, a10, a9, a8, a7, a6, a5, a4, a3, a2, a1, a0 ) ];
}
}
diff --git a/src/mame/drivers/notetaker.cpp b/src/mame/drivers/notetaker.cpp
index ab50d57df1a..1a27b24b70e 100644
--- a/src/mame/drivers/notetaker.cpp
+++ b/src/mame/drivers/notetaker.cpp
@@ -922,16 +922,16 @@ DRIVER_INIT_MEMBER(notetaker_state,notetakr)
uint16_t *temppointer;
uint16_t wordtemp;
uint16_t addrtemp;
- // leave the src pointer alone, since we've only used a 0x1000 long address space
- romdst += 0x7f800; // set the dest pointer to 0xff000 (>>1 because 16 bits data)
- for (int i = 0; i < 0x800; i++)
- {
- wordtemp = BITSWAP16(*romsrc, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); // data bus is completely reversed
- addrtemp = BITSWAP16(i, 11, 12, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10); // address bus is completely reversed; 11-15 should always be zero
- temppointer = romdst+(addrtemp&0x7FF);
- *temppointer = wordtemp;
- romsrc++;
- }
+ // leave the src pointer alone, since we've only used a 0x1000 long address space
+ romdst += 0x7f800; // set the dest pointer to 0xff000 (>>1 because 16 bits data)
+ for (int i = 0; i < 0x800; i++)
+ {
+ wordtemp = bitswap<16>(*romsrc, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); // data bus is completely reversed
+ addrtemp = bitswap<11>(i, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10); // address bus is completely reversed; 11-15 should always be zero
+ temppointer = romdst+(addrtemp&0x7FF);
+ *temppointer = wordtemp;
+ romsrc++;
+ }
}
/* ROM definition */
diff --git a/src/mame/drivers/novag6502.cpp b/src/mame/drivers/novag6502.cpp
index a1a82d1286a..03957ed2d1e 100644
--- a/src/mame/drivers/novag6502.cpp
+++ b/src/mame/drivers/novag6502.cpp
@@ -349,7 +349,7 @@ WRITE64_MEMBER(novag6502_state::cforte_lcd_output_w)
for (int i = 0; i < 4; i++)
m_display_state[dig+3] |= ((rowdata[i] >> (2*dig) & 3) << (2*i));
- m_display_state[dig+3] = BITSWAP8(m_display_state[dig+3],7,2,0,4,6,5,3,1);
+ m_display_state[dig+3] = bitswap<8>(m_display_state[dig+3],7,2,0,4,6,5,3,1);
}
cforte_prepare_display();
diff --git a/src/mame/drivers/nsm.cpp b/src/mame/drivers/nsm.cpp
index bda6dae5913..cdf8cba7645 100644
--- a/src/mame/drivers/nsm.cpp
+++ b/src/mame/drivers/nsm.cpp
@@ -106,7 +106,7 @@ WRITE8_MEMBER( nsm_state::cru_w )
for (j = 0; j < 5; j++)
{
segments = m_cru_data[8-j]^0xff;
- output().set_digit_value(j * 10 + i, BITSWAP16(segments, 8, 8, 8, 8, 8, 8, 0, 0, 1, 1, 2, 3, 4, 5, 6, 7));
+ output().set_digit_value(j * 10 + i, bitswap<16>(segments, 8, 8, 8, 8, 8, 8, 0, 0, 1, 1, 2, 3, 4, 5, 6, 7));
}
}
}
diff --git a/src/mame/drivers/nss.cpp b/src/mame/drivers/nss.cpp
index b96ed39cc6e..57ce1816ca7 100644
--- a/src/mame/drivers/nss.cpp
+++ b/src/mame/drivers/nss.cpp
@@ -1064,7 +1064,7 @@ DRIVER_INIT_MEMBER(nss_state,nss)
uint8_t *PROM = memregion("rp5h01")->base();
for (int i = 0; i < 0x10; i++)
- PROM[i] = BITSWAP8(PROM[i],0,1,2,3,4,5,6,7) ^ 0xff;
+ PROM[i] = bitswap<8>(PROM[i],0,1,2,3,4,5,6,7) ^ 0xff;
DRIVER_INIT_CALL(snes);
}
diff --git a/src/mame/drivers/nycaptor.cpp b/src/mame/drivers/nycaptor.cpp
index 4a54583ab07..e285499589b 100644
--- a/src/mame/drivers/nycaptor.cpp
+++ b/src/mame/drivers/nycaptor.cpp
@@ -1287,7 +1287,7 @@ DRIVER_INIT_MEMBER(nycaptor_state,bronx)
uint8_t *rom = memregion("maincpu")->base();
for (i = 0; i < 0x20000; i++)
- rom[i] = BITSWAP8(rom[i], 0, 1, 2, 3, 4, 5, 6, 7);
+ rom[i] = bitswap<8>(rom[i], 0, 1, 2, 3, 4, 5, 6, 7);
m_gametype = 1;
}
@@ -1298,7 +1298,7 @@ DRIVER_INIT_MEMBER(nycaptor_state,colt)
uint8_t *rom = memregion("maincpu")->base();
for (i = 0; i < 0x20000; i++)
- rom[i] = BITSWAP8(rom[i], 0, 1, 2, 3, 4, 5, 6, 7);
+ rom[i] = bitswap<8>(rom[i], 0, 1, 2, 3, 4, 5, 6, 7);
m_gametype = 2;
}
diff --git a/src/mame/drivers/ojankohs.cpp b/src/mame/drivers/ojankohs.cpp
index 389e43d64c3..c3b5be359e3 100644
--- a/src/mame/drivers/ojankohs.cpp
+++ b/src/mame/drivers/ojankohs.cpp
@@ -604,13 +604,13 @@ READ8_MEMBER( ojankohs_state::ojankoc_keymatrix_p2_r )
READ8_MEMBER( ojankohs_state::ojankohs_dipsw1_r )
{
uint8_t data = m_dsw1->read();
- return BITSWAP8(data, 0, 1, 2, 3, 4, 5, 6, 7);
+ return bitswap<8>(data, 0, 1, 2, 3, 4, 5, 6, 7);
}
READ8_MEMBER( ojankohs_state::ojankohs_dipsw2_r )
{
uint8_t data = m_dsw2->read();
- return BITSWAP8(data, 0, 1, 2, 3, 4, 5, 6, 7);
+ return bitswap<8>(data, 0, 1, 2, 3, 4, 5, 6, 7);
}
READ8_MEMBER( ojankohs_state::ccasino_dipsw3_r )
diff --git a/src/mame/drivers/omegrace.cpp b/src/mame/drivers/omegrace.cpp
index 14377dd571d..5236b4059d5 100644
--- a/src/mame/drivers/omegrace.cpp
+++ b/src/mame/drivers/omegrace.cpp
@@ -620,7 +620,7 @@ DRIVER_INIT_MEMBER(omegrace_state,omegrace)
* in a consistent way to the decoder, we swap the bits
* here. */
for (i=0; i<len; i++)
- prom[i] = BITSWAP8(prom[i],7,6,5,4,1,0,3,2);
+ prom[i] = bitswap<8>(prom[i],7,6,5,4,1,0,3,2);
}
diff --git a/src/mame/drivers/pacman.cpp b/src/mame/drivers/pacman.cpp
index 40a4c1a120d..c5968040644 100644
--- a/src/mame/drivers/pacman.cpp
+++ b/src/mame/drivers/pacman.cpp
@@ -6914,12 +6914,12 @@ void pacman_state::eyes_decode(uint8_t *data)
for (j = 0; j < 8; j++)
{
- swapbuffer[j] = data[BITSWAP16(j,15,14,13,12,11,10,9,8,7,6,5,4,3,0,1,2)];
+ swapbuffer[j] = data[bitswap<16>(j,15,14,13,12,11,10,9,8,7,6,5,4,3,0,1,2)];
}
for (j = 0; j < 8; j++)
{
- data[j] = BITSWAP8(swapbuffer[j],7,4,5,6,3,2,1,0);
+ data[j] = bitswap<8>(swapbuffer[j],7,4,5,6,3,2,1,0);
}
}
@@ -6934,7 +6934,7 @@ DRIVER_INIT_MEMBER(pacman_state,eyes)
RAM = memregion("maincpu")->base();
for (i = 0; i < 0x4000; i++)
{
- RAM[i] = BITSWAP8(RAM[i],7,6,3,4,5,2,1,0);
+ RAM[i] = bitswap<8>(RAM[i],7,6,3,4,5,2,1,0);
}
@@ -6949,10 +6949,10 @@ DRIVER_INIT_MEMBER(pacman_state,eyes)
#define BITSWAP12(val,B11,B10,B9,B8,B7,B6,B5,B4,B3,B2,B1,B0) \
- BITSWAP16(val,15,14,13,12,B11,B10,B9,B8,B7,B6,B5,B4,B3,B2,B1,B0)
+ bitswap<16>(val,15,14,13,12,B11,B10,B9,B8,B7,B6,B5,B4,B3,B2,B1,B0)
#define BITSWAP11(val,B10,B9,B8,B7,B6,B5,B4,B3,B2,B1,B0) \
- BITSWAP16(val,15,14,13,12,11,B10,B9,B8,B7,B6,B5,B4,B3,B2,B1,B0)
+ bitswap<16>(val,15,14,13,12,11,B10,B9,B8,B7,B6,B5,B4,B3,B2,B1,B0)
void pacman_state::mspacman_install_patches(uint8_t *ROM)
{
@@ -7025,13 +7025,13 @@ DRIVER_INIT_MEMBER(pacman_state,mspacman)
DROM[0x0000+i] = ROM[0x0000+i]; /* pacman.6e */
DROM[0x1000+i] = ROM[0x1000+i]; /* pacman.6f */
DROM[0x2000+i] = ROM[0x2000+i]; /* pacman.6h */
- DROM[0x3000+i] = BITSWAP8(ROM[0xb000+BITSWAP12(i,11,3,7,9,10,8,6,5,4,2,1,0)],0,4,5,7,6,3,2,1); /* decrypt u7 */
+ DROM[0x3000+i] = bitswap<8>(ROM[0xb000+BITSWAP12(i,11,3,7,9,10,8,6,5,4,2,1,0)],0,4,5,7,6,3,2,1); /* decrypt u7 */
}
for (i = 0; i < 0x800; i++)
{
- DROM[0x8000+i] = BITSWAP8(ROM[0x8000+BITSWAP11(i, 8,7,5,9,10,6,3,4,2,1,0)],0,4,5,7,6,3,2,1); /* decrypt u5 */
- DROM[0x8800+i] = BITSWAP8(ROM[0x9800+BITSWAP12(i,11,3,7,9,10,8,6,5,4,2,1,0)],0,4,5,7,6,3,2,1); /* decrypt half of u6 */
- DROM[0x9000+i] = BITSWAP8(ROM[0x9000+BITSWAP12(i,11,3,7,9,10,8,6,5,4,2,1,0)],0,4,5,7,6,3,2,1); /* decrypt half of u6 */
+ DROM[0x8000+i] = bitswap<8>(ROM[0x8000+BITSWAP11(i, 8,7,5,9,10,6,3,4,2,1,0)],0,4,5,7,6,3,2,1); /* decrypt u5 */
+ DROM[0x8800+i] = bitswap<8>(ROM[0x9800+BITSWAP12(i,11,3,7,9,10,8,6,5,4,2,1,0)],0,4,5,7,6,3,2,1); /* decrypt half of u6 */
+ DROM[0x9000+i] = bitswap<8>(ROM[0x9000+BITSWAP12(i,11,3,7,9,10,8,6,5,4,2,1,0)],0,4,5,7,6,3,2,1); /* decrypt half of u6 */
DROM[0x9800+i] = ROM[0x1800+i]; /* mirror of pacman.6f high */
}
for (i = 0; i < 0x1000; i++)
@@ -7102,7 +7102,7 @@ DRIVER_INIT_MEMBER(pacman_state,8bpm)
/* Data lines D0 and D6 swapped */
for( i = 0; i < 0x8000; i++ )
{
- ROM[i] = BITSWAP8(ROM[i],7,0,5,4,3,2,1,6);
+ ROM[i] = bitswap<8>(ROM[i],7,0,5,4,3,2,1,6);
}
membank("bank1")->set_base(&ROM[0 * 0x2000]);
@@ -7119,7 +7119,7 @@ DRIVER_INIT_MEMBER(pacman_state,porky)
/* Data lines D0 and D4 swapped */
for(i = 0; i < 0x10000; i++)
{
- ROM[i] = BITSWAP8(ROM[i],7,6,5,0,3,2,1,4);
+ ROM[i] = bitswap<8>(ROM[i],7,6,5,0,3,2,1,4);
}
membank("bank1")->configure_entries(0, 2, &ROM[0 * 0x2000], 0x8000);
@@ -7185,7 +7185,7 @@ DRIVER_INIT_MEMBER(pacman_state,superabc)
// descramble gfx
for (int i = 0; i < 0x10000; i++)
- dest[i] = src[BITSWAP24(i,23,22,21,20,19,18,17, 12,13,14,16,15, 11,10,9,8,7,6,5,4,3,2,1,0)];
+ dest[i] = src[bitswap<24>(i,23,22,21,20,19,18,17, 12,13,14,16,15, 11,10,9,8,7,6,5,4,3,2,1,0)];
}
READ8_MEMBER(pacman_state::cannonbp_protection_r)
diff --git a/src/mame/drivers/panicr.cpp b/src/mame/drivers/panicr.cpp
index a3558fc91c3..c78b3511522 100644
--- a/src/mame/drivers/panicr.cpp
+++ b/src/mame/drivers/panicr.cpp
@@ -733,7 +733,7 @@ DRIVER_INIT_MEMBER(panicr_state,panicr)
w1 = (rom[i + 0*size/2] << 8) + rom[i + 1*size/2];
- w1 = BITSWAP16(w1, 9,12,7,3, 8,13,6,2, 11,14,1,5, 10,15,4,0);
+ w1 = bitswap<16>(w1, 9,12,7,3, 8,13,6,2, 11,14,1,5, 10,15,4,0);
buf[i + 0*size/2] = w1 >> 8;
buf[i + 1*size/2] = w1 & 0xff;
@@ -742,7 +742,7 @@ DRIVER_INIT_MEMBER(panicr_state,panicr)
// text 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,11,10,9,8,7,6, 2,3,1,0,5,4)];
+ rom[i] = buf[bitswap<24>(i,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6, 2,3,1,0,5,4)];
}
@@ -757,8 +757,8 @@ DRIVER_INIT_MEMBER(panicr_state,panicr)
w1 = (rom[i + 0*size/4] << 8) + rom[i + 3*size/4];
w2 = (rom[i + 1*size/4] << 8) + rom[i + 2*size/4];
- w1 = BITSWAP16(w1, 14,12,11,9, 3,2,1,0, 10,15,13,8, 7,6,5,4);
- w2 = BITSWAP16(w2, 3,13,15,4, 12,2,5,11, 14,6,1,10, 8,7,9,0);
+ w1 = bitswap<16>(w1, 14,12,11,9, 3,2,1,0, 10,15,13,8, 7,6,5,4);
+ w2 = bitswap<16>(w2, 3,13,15,4, 12,2,5,11, 14,6,1,10, 8,7,9,0);
buf[i + 0*size/4] = w1 >> 8;
buf[i + 1*size/4] = w1 & 0xff;
@@ -769,7 +769,7 @@ DRIVER_INIT_MEMBER(panicr_state,panicr)
// tiles 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, 5,4,3,2, 11,10,9,8,7,6, 0,1)];
+ rom[i] = buf[bitswap<24>(i,23,22,21,20,19,18,17,16,15,14,13,12, 5,4,3,2, 11,10,9,8,7,6, 0,1)];
}
@@ -784,7 +784,7 @@ DRIVER_INIT_MEMBER(panicr_state,panicr)
w1 = (rom[i + 0*size/2] << 8) + rom[i + 1*size/2];
- w1 = BITSWAP16(w1, 11,5,7,12, 4,10,13,3, 6,14,9,2, 0,15,1,8);
+ w1 = bitswap<16>(w1, 11,5,7,12, 4,10,13,3, 6,14,9,2, 0,15,1,8);
buf[i + 0*size/2] = w1 >> 8;
diff --git a/src/mame/drivers/pbaction.cpp b/src/mame/drivers/pbaction.cpp
index 37416270468..20e3944aff3 100644
--- a/src/mame/drivers/pbaction.cpp
+++ b/src/mame/drivers/pbaction.cpp
@@ -494,7 +494,7 @@ DRIVER_INIT_MEMBER(pbaction_state,pbactio3)
/* first of all, do a simple bitswap */
for (i = 0; i < 0xc000; i++)
{
- rom[i] = BITSWAP8(rom[i], 7,6,5,4,1,2,3,0);
+ rom[i] = bitswap<8>(rom[i], 7,6,5,4,1,2,3,0);
}
/* install a protection (?) workaround */
diff --git a/src/mame/drivers/pc88va.cpp b/src/mame/drivers/pc88va.cpp
index 57d5ebe0795..fc941af9405 100644
--- a/src/mame/drivers/pc88va.cpp
+++ b/src/mame/drivers/pc88va.cpp
@@ -254,7 +254,7 @@ void pc88va_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
for(x_s=0;x_s<16;x_s++)
{
- pen = (BITSWAP16(tvram[(spda+spr_count) / 2],7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8) >> (15-x_s)) & 1;
+ pen = (bitswap<16>(tvram[(spda+spr_count) / 2],7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8) >> (15-x_s)) & 1;
pen = pen & 1 ? fg_col : (bc) ? 8 : -1;
@@ -281,7 +281,7 @@ void pc88va_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
for(x_s=0;x_s<2;x_s++)
{
- pen = (BITSWAP16(tvram[(spda+spr_count) / 2],7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8)) >> (16-(x_s*8)) & 0xf;
+ pen = (bitswap<16>(tvram[(spda+spr_count) / 2],7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8)) >> (16-(x_s*8)) & 0xf;
//if(bc != -1) //transparent pen
bitmap.pix32(yp+y_i, xp+x_i+(x_s)) = m_palette->pen(pen);
diff --git a/src/mame/drivers/pc9801.cpp b/src/mame/drivers/pc9801.cpp
index 036cccbd006..124824bfe0e 100644
--- a/src/mame/drivers/pc9801.cpp
+++ b/src/mame/drivers/pc9801.cpp
@@ -855,7 +855,7 @@ WRITE8_MEMBER(pc9801_state::grcg_w)
else if(offset == 7)
{
// logerror("%02x GRCG TILE %02x\n",data,m_grcg.tile_index);
- m_grcg.tile[m_grcg.tile_index] = BITSWAP8(data,0,1,2,3,4,5,6,7);
+ m_grcg.tile[m_grcg.tile_index] = bitswap<8>(data,0,1,2,3,4,5,6,7);
m_grcg.tile_index ++;
m_grcg.tile_index &= 3;
return;
@@ -1061,24 +1061,24 @@ WRITE8_MEMBER(pc9801_state::pic_w)
READ16_MEMBER(pc9801_state::grcg_gvram_r)
{
uint16_t ret = upd7220_grcg_r(space, (offset + 0x4000) | (m_vram_bank << 16), mem_mask);
- return BITSWAP16(ret,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7);
+ return bitswap<16>(ret,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7);
}
WRITE16_MEMBER(pc9801_state::grcg_gvram_w)
{
- data = BITSWAP16(data,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7);
+ data = bitswap<16>(data,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7);
upd7220_grcg_w(space, (offset + 0x4000) | (m_vram_bank << 16), data, mem_mask);
}
READ16_MEMBER(pc9801_state::grcg_gvram0_r)
{
uint16_t ret = upd7220_grcg_r(space, offset | (m_vram_bank << 16), mem_mask);
- return BITSWAP16(ret,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7);
+ return bitswap<16>(ret,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7);
}
WRITE16_MEMBER(pc9801_state::grcg_gvram0_w)
{
- data = BITSWAP16(data,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7);
+ data = bitswap<16>(data,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7);
upd7220_grcg_w(space, offset | (m_vram_bank << 16), data, mem_mask);
}
@@ -2889,7 +2889,7 @@ DRIVER_INIT_MEMBER(pc9801_state,pc9801_kanji)
{
for(j=0;j<0x20;j++)
{
- pcg_tile = BITSWAP16(i,15,14,13,12,11,7,6,5,10,9,8,4,3,2,1,0) << 5;
+ pcg_tile = bitswap<16>(i,15,14,13,12,11,7,6,5,10,9,8,4,3,2,1,0) << 5;
kanji[j+(i << 5)] = raw_kanji[j+pcg_tile];
}
}
diff --git a/src/mame/drivers/pegasus.cpp b/src/mame/drivers/pegasus.cpp
index 2ac3e43b3ff..1e214f8375f 100644
--- a/src/mame/drivers/pegasus.cpp
+++ b/src/mame/drivers/pegasus.cpp
@@ -405,8 +405,8 @@ void pegasus_state::pegasus_decrypt_rom(uint8_t *ROM)
for (int i = 0; i < 0x1000; i++)
{
b = ROM[i];
- j = BITSWAP16(i, 15, 14, 13, 12, 11, 10, 9, 8, 0, 1, 2, 3, 4, 5, 6, 7);
- b = BITSWAP8(b, 3, 2, 1, 0, 7, 6, 5, 4);
+ j = bitswap<16>(i, 15, 14, 13, 12, 11, 10, 9, 8, 0, 1, 2, 3, 4, 5, 6, 7);
+ b = bitswap<8>(b, 3, 2, 1, 0, 7, 6, 5, 4);
temp_copy[j & 0xfff] = b;
}
memcpy(ROM, &temp_copy[0], 0x1000);
diff --git a/src/mame/drivers/pengadvb.cpp b/src/mame/drivers/pengadvb.cpp
index f10f8c72359..f24999f4e7a 100644
--- a/src/mame/drivers/pengadvb.cpp
+++ b/src/mame/drivers/pengadvb.cpp
@@ -293,7 +293,7 @@ void pengadvb_state::pengadvb_decrypt(const char* region)
// data lines swap
for (int i = 0; i < memsize; i++)
{
- mem[i] = BITSWAP8(mem[i],7,6,5,3,4,2,1,0);
+ mem[i] = bitswap<8>(mem[i],7,6,5,3,4,2,1,0);
}
// address line swap
@@ -301,7 +301,7 @@ void pengadvb_state::pengadvb_decrypt(const char* region)
memcpy(&buf[0], mem, memsize);
for (int i = 0; i < memsize; i++)
{
- mem[i] = buf[BITSWAP24(i,23,22,21,20,19,18,17,16,15,14,13,5,11,10,9,8,7,6,12,4,3,2,1,0)];
+ mem[i] = buf[bitswap<24>(i,23,22,21,20,19,18,17,16,15,14,13,5,11,10,9,8,7,6,12,4,3,2,1,0)];
}
}
diff --git a/src/mame/drivers/pet.cpp b/src/mame/drivers/pet.cpp
index 85824fd066f..8e2bed8698c 100644
--- a/src/mame/drivers/pet.cpp
+++ b/src/mame/drivers/pet.cpp
@@ -482,7 +482,10 @@ READ8_MEMBER( pet_state::read )
break;
case SEL8:
- data = m_video_ram[offset & (m_video_ram_size - 1)];
+ if (!(offset & 0x800))
+ {
+ data = m_video_ram[offset & (m_video_ram_size - 1)];
+ }
break;
case SEL9:
@@ -575,7 +578,10 @@ WRITE8_MEMBER( pet_state::write )
break;
case SEL8:
- m_video_ram[offset & (m_video_ram_size - 1)] = data;
+ if (!(offset & 0x800))
+ {
+ m_video_ram[offset & (m_video_ram_size - 1)] = data;
+ }
break;
case SELE:
@@ -635,10 +641,10 @@ void cbm8296_state::read_pla1_eprom(offs_t offset, int phi2, int brw, int noscre
// PLA-EPROM adapter by Joachim Nemetz (Jogi)
uint32_t input = (offset & 0xff00) | phi2 << 7 | brw << 6 | noscreen << 5 | noio << 4 | ramsela << 3 | ramsel9 << 2 | ramon << 1 | norom;
- input = BITSWAP16(input,13,8,9,7,12,14,11,10,6,5,4,3,2,1,0,15);
+ input = bitswap<16>(input,13,8,9,7,12,14,11,10,6,5,4,3,2,1,0,15);
uint8_t data = m_ue6_rom->base()[input];
- data = BITSWAP8(data,7,0,1,2,3,4,5,6);
+ data = bitswap<8>(data,7,0,1,2,3,4,5,6);
cswff = BIT(data, 0);
cs9 = BIT(data, 1);
@@ -657,7 +663,7 @@ void cbm8296_state::read_pla1_eprom(offs_t offset, int phi2, int brw, int noscre
void cbm8296_state::read_pla2(offs_t offset, int phi2, int brw, int casena1, int &endra, int &noscreen, int &casena2, int &fa15)
{
- uint32_t input = BITSWAP8(m_cr, 0,1,2,3,4,5,6,7) << 8 | ((offset >> 8) & 0xf8) | brw << 2 | phi2 << 1 | casena1;
+ uint32_t input = bitswap<8>(m_cr, 0,1,2,3,4,5,6,7) << 8 | ((offset >> 8) & 0xf8) | brw << 2 | phi2 << 1 | casena1;
uint32_t data = m_pla2->read(input);
endra = BIT(data, 4);
@@ -670,11 +676,11 @@ void cbm8296_state::read_pla2_eprom(offs_t offset, int phi2, int brw, int casena
{
// PLA-EPROM adapter by Joachim Nemetz (Jogi)
- uint32_t input = BITSWAP8(m_cr, 0,1,2,3,4,5,6,7) << 8 | ((offset >> 8) & 0xf8) | brw << 2 | phi2 << 1 | casena1;
- input = BITSWAP16(input,13,8,9,7,12,14,11,10,6,5,4,3,2,1,0,15);
+ uint32_t input = bitswap<8>(m_cr, 0,1,2,3,4,5,6,7) << 8 | ((offset >> 8) & 0xf8) | brw << 2 | phi2 << 1 | casena1;
+ input = bitswap<16>(input,13,8,9,7,12,14,11,10,6,5,4,3,2,1,0,15);
uint8_t data = m_ue5_rom->base()[input];
- data = BITSWAP8(data,7,0,1,2,3,4,5,6);
+ data = bitswap<8>(data,7,0,1,2,3,4,5,6);
endra = BIT(data, 4);
noscreen = BIT(data, 5);
diff --git a/src/mame/drivers/pgm2.cpp b/src/mame/drivers/pgm2.cpp
index 794de03f295..bfddc66741a 100644
--- a/src/mame/drivers/pgm2.cpp
+++ b/src/mame/drivers/pgm2.cpp
@@ -46,11 +46,7 @@
Identify which regions each game was released in and either dump alt. internal ROMs for each region, or
create them until that can be done.
properly implement RTC (integrated into the CPU)
- Memory Card system (there's an MCU on the motherboard that will need simulating or dumping somehow)
Verify Sprite Zoom (check exactly which pixels are doubled / missed on hardware for flipped , non-flipped cases etc.)
- Simplify IGS036 encryption based on tables in internal roms
- Fix ARM? bug that means Oriental Legend 2 needs a patch (might also be that it needs the card reader, and is running a
- codepath that would not exist in a real environment at the moment)
Fix Save States (is this a driver problem or an ARM core problem, they don't work unless you get through the startup tests)
Debug features (require DIP SW1:8 On and SW1:1 Off):
@@ -72,6 +68,25 @@
Oriental Legend 2 (Oversea) - V21
Oriental Legend 2 (China) - A8
+ GPU registers, located at 301200xx, 16bit access.
+ 00 - bg scroll x
+ 02 - bg scroll y
+ 04 - zoom something, 0F-7F, default 1F
+ 06 - zoom something, 0F-7F, default 1F
+ 08 - fg scroll x
+ 0a - fg scroll y
+ 0e - resolution, 0 - low (kof98), 1 - high (rest of games)
+ 10 - ? orleg2 - 0x13, kov2nl, kof - 0x14 at init (sprite related?)
+ 14 - sprite enable ? set to 0 before spriteram update, to 1 after
+ 16 - enable access to vrams/palettes/etc ? (bitmask)
+ 18 - vblank ack
+ 1a - ? 0 at init
+ 1c - ? orleg2 - 5, kov2nl, kof - 7 at init (sprite related?)
+ 1e - ? 2 at init (sprite related?)
+ 32 - shared RAM bank
+ 34, 36 - ? 0 at init, some unused xor feature ?
+ 38, 3a - sprite mask xor key
+
*/
#include "includes/pgm2.h"
@@ -105,7 +120,7 @@ WRITE32_MEMBER(pgm2_state::sprite_encryption_w)
COMBINE_DATA(&m_spritekey);
if (!m_sprite_predecrypted)
- m_realspritekey = BITSWAP32(m_spritekey ^ 0x90055555, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31);
+ m_realspritekey = bitswap<32>(m_spritekey ^ 0x90055555, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31);
}
WRITE32_MEMBER(pgm2_state::encryption_do_w)
@@ -121,7 +136,7 @@ WRITE32_MEMBER(pgm2_state::encryption_do_w)
INTERRUPT_GEN_MEMBER(pgm2_state::igs_interrupt)
{
- m_arm_aic->set_irq(0x47);
+ m_arm_aic->set_irq(12, ASSERT_LINE);
}
WRITE16_MEMBER(pgm2_state::share_bank_w)
@@ -141,7 +156,7 @@ WRITE8_MEMBER(pgm2_state::shareram_w)
TIMER_DEVICE_CALLBACK_MEMBER(pgm2_state::igs_interrupt2)
{
- m_arm_aic->set_irq(0x46);
+ m_arm_aic->set_irq(3, ASSERT_LINE);
}
// "MPU" MCU HLE starts here
@@ -172,7 +187,6 @@ void pgm2_state::mcu_command(address_space &space, bool is_command)
case 0xe0: // command port test
m_mcu_result0 = m_mcu_regs[0];
m_mcu_result1 = m_mcu_regs[1];
- delay = 30; // such quite long delay is needed for debug codes check routine
break;
case 0xe1: // shared ram access (unimplemented)
{
@@ -188,47 +202,86 @@ void pgm2_state::mcu_command(address_space &space, bool is_command)
m_mcu_result1 = 0;
}
break;
- // unknown / unimplemented, all C0-C9 commands is IC Card RW related
- // (m_mcu_regs[0] >> 8) & 0xff - target RW unit (player)
+ // C0-C9 commands is IC Card RW comms
case 0xc0: // insert card or/and check card presence. result: F7 - ok, F4 - no card
- if (m_memcard_device[arg1 & 3]->present() == -1)
+ if (m_memcard[arg1 & 3]->present() == -1)
status = 0xf4;
m_mcu_result0 = cmd;
break;
case 0xc1: // check ready/busy ?
+ if (m_memcard[arg1 & 3]->present() == -1)
+ status = 0xf4;
m_mcu_result0 = cmd;
break;
- case 0xc2: // read data to shared ram, args - offset, len
+ case 0xc2: // read data to shared ram
for (int i = 0; i < arg3; i++)
{
- if (m_memcard_device[arg1 & 3]->present() != -1)
- m_shareram[i + (~m_share_bank & 1) * 128] = m_memcard_device[arg1 & 3]->read(space, arg2 + i);
+ if (m_memcard[arg1 & 3]->present() != -1)
+ m_shareram[i + (~m_share_bank & 1) * 128] = m_memcard[arg1 & 3]->read(space, arg2 + i);
+ else
+ status = 0xf4;
}
-
m_mcu_result0 = cmd;
break;
- case 0xc3: // save data from shared ram, args - offset, len
+ case 0xc3: // save data from shared ram
for (int i = 0; i < arg3; i++)
{
- if (m_memcard_device[arg1 & 3]->present() != -1)
- m_memcard_device[arg1 & 3]->write(space, arg2 + i, m_shareram[i + (~m_share_bank & 1) * 128]);
+ if (m_memcard[arg1 & 3]->present() != -1)
+ m_memcard[arg1 & 3]->write(space, arg2 + i, m_shareram[i + (~m_share_bank & 1) * 128]);
+ else
+ status = 0xf4;
}
m_mcu_result0 = cmd;
break;
- case 0xc7: // get card ID?, no args, result1 expected to be fixed value for new card
- m_mcu_result1 = 0xf81f0000;
+ case 0xc4: // presumable read security mem (password only?)
+ if (m_memcard[arg1 & 3]->present() != -1)
+ {
+ m_mcu_result1 = m_memcard[arg1 & 3]->read_sec(space, 1) |
+ (m_memcard[arg1 & 3]->read_sec(space, 2) << 8) |
+ (m_memcard[arg1 & 3]->read_sec(space, 3) << 16);
+ }
+ else
+ status = 0xf4;
m_mcu_result0 = cmd;
break;
- case 0xc8: // write byte, args - offset, data byte
- if (m_memcard_device[arg1 & 3]->present() != -1)
- m_memcard_device[arg1 & 3]->write(space, arg2, arg3);
-
+ case 0xc5: // write security mem
+ if (m_memcard[arg1 & 3]->present() != -1)
+ m_memcard[arg1 & 3]->write_sec(space, arg2 & 3, arg3);
+ else
+ status = 0xf4;
+ m_mcu_result0 = cmd;
+ break;
+ case 0xc6: // presumable write protection mem
+ if (m_memcard[arg1 & 3]->present() != -1)
+ m_memcard[arg1 & 3]->write_prot(space, arg2 & 3, arg3);
+ else
+ status = 0xf4;
+ m_mcu_result0 = cmd;
+ break;
+ case 0xc7: // read protection mem
+ if (m_memcard[arg1 & 3]->present() != -1)
+ {
+ m_mcu_result1 = m_memcard[arg1 & 3]->read_prot(space, 0) |
+ (m_memcard[arg1 & 3]->read_prot(space, 1) << 8) |
+ (m_memcard[arg1 & 3]->read_prot(space, 2) << 16) |
+ (m_memcard[arg1 & 3]->read_prot(space, 3) << 24);
+ }
+ else
+ status = 0xf4;
+ m_mcu_result0 = cmd;
+ break;
+ case 0xc8: // write data mem
+ if (m_memcard[arg1 & 3]->present() != -1)
+ m_memcard[arg1 & 3]->write(space, arg2, arg3);
+ else
+ status = 0xf4;
m_mcu_result0 = cmd;
break;
- case 0xc4: // not used
- case 0xc5: // set new password?, args - offset, data byte (offs 0 - always 7, 1-3 password)
- case 0xc6: // not used
- case 0xc9: // card authentication, args - 3 byte password, ('I','G','S' for new cards)
+ case 0xc9: // card authentication
+ if (m_memcard[arg1 & 3]->present() != -1)
+ m_memcard[arg1 & 3]->auth(arg2, arg3, m_mcu_regs[1] & 0xff);
+ else
+ status = 0xf4;
m_mcu_result0 = cmd;
break;
default:
@@ -263,9 +316,32 @@ WRITE32_MEMBER(pgm2_state::mcu_w)
if (reg == 2 && m_mcu_regs[2]) // irq to mcu
mcu_command(space, true);
if (reg == 5 && m_mcu_regs[5]) // ack to mcu (written at the end of irq handler routine)
+ {
mcu_command(space, false);
+ m_arm_aic->set_irq(3, CLEAR_LINE);
+ }
}
+WRITE16_MEMBER(pgm2_state::vbl_ack_w)
+{
+ m_arm_aic->set_irq(12, CLEAR_LINE);
+}
+
+WRITE16_MEMBER(pgm2_state::unk30120014_w)
+{
+ if (offset == 0)
+ {
+ // 0/1 toggles (maybe sprite dma triggers?)
+ }
+ else
+ {
+ // interesting data
+ //printf("unk30120014_w %d %04x\n", offset, data);
+ }
+}
+
+
+
static ADDRESS_MAP_START( pgm2_map, AS_PROGRAM, 32, pgm2_state )
AM_RANGE(0x00000000, 0x00003fff) AM_ROM //AM_REGION("user1", 0x00000) // internal ROM
@@ -301,6 +377,10 @@ static ADDRESS_MAP_START( pgm2_map, AS_PROGRAM, 32, pgm2_state )
AM_RANGE(0x30100000, 0x301000ff) AM_READWRITE8(shareram_r, shareram_w, 0x00ff00ff)
AM_RANGE(0x30120000, 0x30120003) AM_RAM AM_SHARE("bgscroll") // scroll
+ AM_RANGE(0x30120008, 0x3012000b) AM_RAM AM_SHARE("fgscroll")
+ AM_RANGE(0x3012000c, 0x3012000f) AM_RAM AM_SHARE("vidmode")
+ AM_RANGE(0x30120014, 0x30120017) AM_WRITE16(unk30120014_w, 0xffffffff)
+ AM_RANGE(0x30120018, 0x3012001b) AM_WRITE16(vbl_ack_w, 0x0000ffff)
AM_RANGE(0x30120030, 0x30120033) AM_WRITE16(share_bank_w, 0xffff0000)
AM_RANGE(0x30120038, 0x3012003b) AM_WRITE(sprite_encryption_w)
// there are other 0x301200xx regs
@@ -318,7 +398,7 @@ static ADDRESS_MAP_START( pgm2_map, AS_PROGRAM, 32, pgm2_state )
AM_RANGE(0xfffffd28, 0xfffffd2b) AM_READ(rtc_r)
- AM_RANGE(0xfffffa08, 0xfffffa0b) AM_WRITE(encryption_do_w) // after uploading encryption? table might actually send it or enable external ROM? when read bits0-1 is ROM board status (0 if OK)
+ AM_RANGE(0xfffffa08, 0xfffffa0b) AM_WRITE(encryption_do_w) // after uploading encryption? table might actually send it or enable external ROM? when read bits0-1 called FUSE 0 and 1, must be 0
AM_RANGE(0xfffffa0c, 0xfffffa0f) AM_READ(unk_startup_r)
ADDRESS_MAP_END
@@ -427,11 +507,6 @@ void pgm2_state::machine_start()
save_item(NAME(m_mcu_last_cmd));
save_item(NAME(m_shareram));
save_item(NAME(m_share_bank));
-
- m_memcard_device[0] = m_memcard0;
- m_memcard_device[1] = m_memcard1;
- m_memcard_device[2] = m_memcard2;
- m_memcard_device[3] = m_memcard3;
}
void pgm2_state::machine_reset()
@@ -520,10 +595,15 @@ static MACHINE_CONFIG_START( pgm2 )
MCFG_PGM2_MEMCARD_ADD("memcard_p2")
MCFG_PGM2_MEMCARD_ADD("memcard_p3")
MCFG_PGM2_MEMCARD_ADD("memcard_p4")
+MACHINE_CONFIG_END
-
+// not strictly needed as the video code supports changing on the fly, but makes recording easier etc.
+static MACHINE_CONFIG_DERIVED( pgm2_lores, pgm2 )
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
MACHINE_CONFIG_END
+
/* using macros for the video / sound roms because the locations never change between sets, and
we're going to have a LOT of clones to cover all the internal rom regions and external rom revision
combinations, so it keeps things readable */
@@ -585,8 +665,8 @@ MACHINE_CONFIG_END
#define ORLEG2_INTERNAL_CHINA \
ROM_REGION( 0x04000, "maincpu", 0 ) \
ROM_LOAD( "xyj2_cn.igs036", 0x00000000, 0x0004000, CRC(bcce7641) SHA1(c3b5cf6e9f6eae09b6785314777a52b34c3c7657) ) \
- ROM_REGION( 0x100, "default_card", 0 ) \
- ROM_LOAD( "blank_orleg2_china_card.pg2", 0x000, 0x100, CRC(099156f0) SHA1(a621c9772a98719c657bba3a1bf235487eb78615) )
+ ROM_REGION( 0x108, "default_card", 0 ) \
+ ROM_LOAD( "blank_orleg2_china_card.pg2", 0x000, 0x108, CRC(dc29556f) SHA1(2335cc7af25d4dd9763c6944d3f0eb50276de80a) )
#define ORLEG2_INTERNAL_OVERSEAS \
ROM_REGION( 0x04000, "maincpu", 0 ) \
@@ -667,8 +747,8 @@ ROM_END
#define KOV2NL_INTERNAL_CHINA \
ROM_REGION( 0x04000, "maincpu", 0 ) \
ROM_LOAD( "gsyx_igs036_china.rom", 0x00000000, 0x0004000, CRC(e09fe4ce) SHA1(c0cac64ef8727cbe79d503ec4df66ddb6f2c925e) ) \
- ROM_REGION( 0x100, "default_card", 0 ) \
- ROM_LOAD( "blank_kov2nl_china_card.pg2", 0x000, 0x100, CRC(91786244) SHA1(ac0ce11b46c19ffe21f6b94bc83ef061f547b591) )
+ ROM_REGION( 0x108, "default_card", 0 ) \
+ ROM_LOAD( "blank_kov2nl_china_card.pg2", 0x000, 0x108, CRC(02842ae8) SHA1(a6cda633b09a706039a79b73db2c258094826f85) )
ROM_START( kov2nl )
@@ -752,6 +832,9 @@ ROM_START( kov3 )
ROM_REGION( 0x04000, "maincpu", 0 )
ROM_LOAD( "kov3_igs036.rom", 0x00000000, 0x0004000, NO_DUMP ) // CRC(c7d33764) SHA1(5cd48f876e637d60391d39ac6e40bf243300cc75)
+ ROM_REGION( 0x108, "default_card", 0 )
+ ROM_LOAD( "blank_kov3_china_card.pg2", 0x000, 0x108, CRC(bd5a968f) SHA1(b9045eb70e02afda7810431c592208053d863980) )
+
ROM_REGION( 0x1000000, "user1", 0 )
ROM_LOAD( "kov3_v104cn_raw.bin", 0x00000000, 0x0800000, CRC(1b5cbd24) SHA1(6471d4842a08f404420dea2bd1c8b88798c80fd5) )
@@ -792,7 +875,7 @@ all others: SPANSION S99-50070
ROM_REGION( 0x200000, "tiles", ROMREGION_ERASEFF ) \
ROM_LOAD( "ig-d3_text.u1", 0x00000000, 0x0200000, CRC(9a0ea82e) SHA1(7844fd7e46c3fbb2164060f160da528254fd177e) ) \
\
- ROM_REGION( 0x2000000, "bgtile", ROMREGION_ERASEFF ) \
+ ROM_REGION( 0x2000000, "bgtile", ROMREGION_ERASE00 ) \
/* bgl/bgh unpopulated (no background tilemap) */ \
\
ROM_REGION( 0x08000000, "sprites_mask", 0 ) /* 1bpp sprite mask data */ \
@@ -809,11 +892,15 @@ all others: SPANSION S99-50070
\
ROM_REGION( 0x08000000, "ymz774", ROMREGION_ERASEFF ) /* ymz770 */ \
ROM_LOAD16_WORD_SWAP( "ig-d3_wave0.u12", 0x00000000, 0x4000000, CRC(edf2332d) SHA1(7e01c7e03e515814d7de117c265c3668d32842fa) ) \
- ROM_LOAD16_WORD_SWAP( "ig-d3_wave1.u11", 0x04000000, 0x4000000, CRC(62321b20) SHA1(a388c8a2489430fbe92fb26b3ef81c66ce97f318) )
+ ROM_LOAD16_WORD_SWAP( "ig-d3_wave1.u11", 0x04000000, 0x4000000, CRC(62321b20) SHA1(a388c8a2489430fbe92fb26b3ef81c66ce97f318) ) \
+ \
+ ROM_REGION( 0x10000, "sram", 0 ) \
+ ROM_LOAD( "kof98umh_sram", 0x00000000, 0x10000, CRC(60460ed9) SHA1(55cd8de37cee04ff7ad940fb52f8fb8db042c26e) )
+
ROM_START( kof98umh )
ROM_REGION( 0x04000, "maincpu", 0 )
- ROM_LOAD( "kof98uhm_igs036.rom", 0x00000000, 0x0004000, NO_DUMP ) // CRC(3ed2e50f) SHA1(35310045d375d9dda36c325e35257123a7b5b8c7)
+ ROM_LOAD( "kof98umh_internal_rom.bin", 0x00000000, 0x0004000, CRC(3ed2e50f) SHA1(35310045d375d9dda36c325e35257123a7b5b8c7) )
ROM_REGION( 0x1000000, "user1", 0 )
ROM_LOAD( "kof98umh_v100cn.u4", 0x00000000, 0x1000000, CRC(2ea91e3b) SHA1(5a586bb99cc4f1b02e0db462d5aff721512e0640) )
@@ -842,7 +929,7 @@ static void iga_u16_decode(uint16_t *rom, int len, int ixor)
if ( (i>>1) & 0x000400) x ^= 0x8000;
rom[i] ^= x;
- rom[i] = BITSWAP16(rom[i], 8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7);
+ rom[i] = bitswap<16>(rom[i], 8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7);
}
}
@@ -867,7 +954,7 @@ static void iga_u12_decode(uint16_t* rom, int len, int ixor)
if ( (i>>1) & 0x000400) x ^= 0x0000;
rom[i] ^= x;
- rom[i] = BITSWAP16(rom[i], 8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7);
+ rom[i] = bitswap<16>(rom[i], 8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7);
}
}
@@ -877,7 +964,7 @@ static void sprite_colour_decode(uint16_t* rom, int len)
for (i = 0; i < len / 2; i++)
{
- rom[i] = BITSWAP16(rom[i], 15, 14, /* unused - 6bpp */
+ rom[i] = bitswap<16>(rom[i], 15, 14, /* unused - 6bpp */
13, 12, 11,
5, 4, 3,
7, 6, /* unused - 6bpp */
@@ -921,6 +1008,25 @@ READ32_MEMBER(pgm2_state::kov2nl_speedup_r)
return m_mainram[0x20470 / 4];
}
+READ32_MEMBER(pgm2_state::kof98umh_speedup_r)
+{
+ int pc = space.device().safe_pc();
+
+ if (pc == 0x100028f6)
+ {
+ if ((m_mainram[0x00060 / 4] == 0x00) && (m_mainram[0x00064 / 4] == 0x00))
+ space.device().execute().spin_until_interrupt();
+ }
+ /*
+ else
+ {
+ printf("pc is %08x\n", pc);
+ }
+ */
+
+ return m_mainram[0x00060 / 4];
+}
+
// for games with the internal ROMs fully dumped that provide the sprite key and program rom key at runtime
void pgm2_state::common_encryption_init()
@@ -1014,19 +1120,13 @@ DRIVER_INIT_MEMBER(pgm2_state, kov3_100)
DRIVER_INIT_MEMBER(pgm2_state,kof98umh)
{
- uint16_t *src = (uint16_t *)memregion("sprites_mask")->base();
+ common_encryption_init();
+ machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x20000060, 0x20000063, read32_delegate(FUNC(pgm2_state::kof98umh_speedup_r),this));
+}
+
- iga_u12_decode(src, 0x08000000, 0x21df);
- iga_u16_decode(src, 0x08000000, 0x8692);
- m_sprite_predecrypted = 1;
- src = (uint16_t *)memregion("sprites_colour")->base();
- sprite_colour_decode(src, 0x20000000);
- igs036_decryptor decrypter(kof98umh_key);
- decrypter.decrypter_rom(memregion("user1"));
- m_has_decrypted = 1;
-}
/* PGM2 */
@@ -1053,7 +1153,7 @@ GAME( 2011, kov3_102, kov3, pgm2, pgm2, pgm2_state, kov3_102, ROT0,
GAME( 2011, kov3_100, kov3, pgm2, pgm2, pgm2_state, kov3_100, ROT0, "IGS", "Knights of Valour 3 (V100, China)", MACHINE_NOT_WORKING )
// King of Fighters '98: Ultimate Match Hero
-GAME( 2009, kof98umh, 0, pgm2, pgm2, pgm2_state, kof98umh, ROT0, "IGS / SNK Playmore / NewChannel", "The King of Fighters '98: Ultimate Match HERO (China, V100, 09-08-23)", MACHINE_NOT_WORKING )
+GAME( 2009, kof98umh, 0, pgm2_lores, pgm2, pgm2_state, kof98umh, ROT0, "IGS / SNK Playmore / New Channel", "The King of Fighters '98: Ultimate Match HERO (China, V100, 09-08-23)", 0 )
// Jigsaw World Arena
diff --git a/src/mame/drivers/piggypas.cpp b/src/mame/drivers/piggypas.cpp
index 121150f25a7..ff2468638ba 100644
--- a/src/mame/drivers/piggypas.cpp
+++ b/src/mame/drivers/piggypas.cpp
@@ -59,7 +59,7 @@ WRITE8_MEMBER(piggypas_state::ctrl_w)
WRITE8_MEMBER(piggypas_state::mcs51_tx_callback)
{
// Serial output driver is UCN5833A
- output().set_digit_value(m_digit_idx++, BITSWAP8(data,7,6,4,3,2,1,0,5) & 0x7f);
+ output().set_digit_value(m_digit_idx++, bitswap<8>(data,7,6,4,3,2,1,0,5) & 0x7f);
}
static ADDRESS_MAP_START( piggypas_map, AS_PROGRAM, 8, piggypas_state )
diff --git a/src/mame/drivers/pingpong.cpp b/src/mame/drivers/pingpong.cpp
index d8e1ee47aea..0393f1f0105 100644
--- a/src/mame/drivers/pingpong.cpp
+++ b/src/mame/drivers/pingpong.cpp
@@ -568,7 +568,7 @@ DRIVER_INIT_MEMBER(pingpong_state,merlinmm)
/* decrypt program code */
for( i = 0; i < 0x4000; i++ )
- ROM[i] = BITSWAP8(ROM[i],0,1,2,3,4,5,6,7);
+ ROM[i] = bitswap<8>(ROM[i],0,1,2,3,4,5,6,7);
}
DRIVER_INIT_MEMBER(pingpong_state,cashquiz)
@@ -579,12 +579,12 @@ DRIVER_INIT_MEMBER(pingpong_state,cashquiz)
/* decrypt program code */
ROM = memregion("maincpu")->base();
for( i = 0; i < 0x4000; i++ )
- ROM[i] = BITSWAP8(ROM[i],0,1,2,3,4,5,6,7);
+ ROM[i] = bitswap<8>(ROM[i],0,1,2,3,4,5,6,7);
/* decrypt questions */
ROM = memregion("user1")->base();
for( i = 0; i < 0x40000; i++ )
- ROM[i] = BITSWAP8(ROM[i],0,1,2,3,4,5,6,7);
+ ROM[i] = bitswap<8>(ROM[i],0,1,2,3,4,5,6,7);
/* questions banking handlers */
m_maincpu->space(AS_PROGRAM).install_write_handler(0x4000, 0x4000, write8_delegate(FUNC(pingpong_state::cashquiz_question_bank_high_w),this));
diff --git a/src/mame/drivers/pirates.cpp b/src/mame/drivers/pirates.cpp
index 54f83d68175..0fa3ca0d9fe 100644
--- a/src/mame/drivers/pirates.cpp
+++ b/src/mame/drivers/pirates.cpp
@@ -365,11 +365,11 @@ void pirates_state::decrypt_68k()
int adrl, adrr;
uint8_t vl, vr;
- adrl = BITSWAP24(i,23,22,21,20,19,18,4,8,3,14,2,15,17,0,9,13,10,5,16,7,12,6,1,11);
- vl = BITSWAP8(buf[adrl], 4,2,7,1,6,5,0,3);
+ adrl = bitswap<24>(i,23,22,21,20,19,18,4,8,3,14,2,15,17,0,9,13,10,5,16,7,12,6,1,11);
+ vl = bitswap<8>(buf[adrl], 4,2,7,1,6,5,0,3);
- adrr = BITSWAP24(i,23,22,21,20,19,18,4,10,1,11,12,5,9,17,14,0,13,6,15,8,3,16,7,2);
- vr = BITSWAP8(buf[adrr]>>8, 1,4,7,0,3,5,6,2);
+ adrr = bitswap<24>(i,23,22,21,20,19,18,4,10,1,11,12,5,9,17,14,0,13,6,15,8,3,16,7,2);
+ vr = bitswap<8>(buf[adrr]>>8, 1,4,7,0,3,5,6,2);
rom[i] = (vr<<8) | vl;
}
@@ -390,11 +390,11 @@ void pirates_state::decrypt_p()
for (i=0; i<rom_size/4; i++)
{
- int adr = BITSWAP24(i,23,22,21,20,19,18,10,2,5,9,7,13,16,14,11,4,1,6,12,17,3,0,15,8);
- rom[adr+0*(rom_size/4)] = BITSWAP8(buf[i+0*(rom_size/4)], 2,3,4,0,7,5,1,6);
- rom[adr+1*(rom_size/4)] = BITSWAP8(buf[i+1*(rom_size/4)], 4,2,7,1,6,5,0,3);
- rom[adr+2*(rom_size/4)] = BITSWAP8(buf[i+2*(rom_size/4)], 1,4,7,0,3,5,6,2);
- rom[adr+3*(rom_size/4)] = BITSWAP8(buf[i+3*(rom_size/4)], 2,3,4,0,7,5,1,6);
+ int adr = bitswap<24>(i,23,22,21,20,19,18,10,2,5,9,7,13,16,14,11,4,1,6,12,17,3,0,15,8);
+ rom[adr+0*(rom_size/4)] = bitswap<8>(buf[i+0*(rom_size/4)], 2,3,4,0,7,5,1,6);
+ rom[adr+1*(rom_size/4)] = bitswap<8>(buf[i+1*(rom_size/4)], 4,2,7,1,6,5,0,3);
+ rom[adr+2*(rom_size/4)] = bitswap<8>(buf[i+2*(rom_size/4)], 1,4,7,0,3,5,6,2);
+ rom[adr+3*(rom_size/4)] = bitswap<8>(buf[i+3*(rom_size/4)], 2,3,4,0,7,5,1,6);
}
}
@@ -413,11 +413,11 @@ void pirates_state::decrypt_s()
for (i=0; i<rom_size/4; i++)
{
- int adr = BITSWAP24(i,23,22,21,20,19,18,17,5,12,14,8,3,0,7,9,16,4,2,6,11,13,1,10,15);
- rom[adr+0*(rom_size/4)] = BITSWAP8(buf[i+0*(rom_size/4)], 4,2,7,1,6,5,0,3);
- rom[adr+1*(rom_size/4)] = BITSWAP8(buf[i+1*(rom_size/4)], 1,4,7,0,3,5,6,2);
- rom[adr+2*(rom_size/4)] = BITSWAP8(buf[i+2*(rom_size/4)], 2,3,4,0,7,5,1,6);
- rom[adr+3*(rom_size/4)] = BITSWAP8(buf[i+3*(rom_size/4)], 4,2,7,1,6,5,0,3);
+ int adr = bitswap<24>(i,23,22,21,20,19,18,17,5,12,14,8,3,0,7,9,16,4,2,6,11,13,1,10,15);
+ rom[adr+0*(rom_size/4)] = bitswap<8>(buf[i+0*(rom_size/4)], 4,2,7,1,6,5,0,3);
+ rom[adr+1*(rom_size/4)] = bitswap<8>(buf[i+1*(rom_size/4)], 1,4,7,0,3,5,6,2);
+ rom[adr+2*(rom_size/4)] = bitswap<8>(buf[i+2*(rom_size/4)], 2,3,4,0,7,5,1,6);
+ rom[adr+3*(rom_size/4)] = bitswap<8>(buf[i+3*(rom_size/4)], 4,2,7,1,6,5,0,3);
}
}
@@ -437,8 +437,8 @@ void pirates_state::decrypt_oki()
for (i=0; i<rom_size; i++)
{
- int adr = BITSWAP24(i,23,22,21,20,19,10,16,13,8,4,7,11,14,17,12,6,2,0,5,18,15,3,1,9);
- rom[adr] = BITSWAP8(buf[i], 2,3,4,0,7,5,1,6);
+ int adr = bitswap<24>(i,23,22,21,20,19,10,16,13,8,4,7,11,14,17,12,6,2,0,5,18,15,3,1,9);
+ rom[adr] = bitswap<8>(buf[i], 2,3,4,0,7,5,1,6);
}
}
diff --git a/src/mame/drivers/play_2.cpp b/src/mame/drivers/play_2.cpp
index e89ca5063db..a63f90002aa 100644
--- a/src/mame/drivers/play_2.cpp
+++ b/src/mame/drivers/play_2.cpp
@@ -474,8 +474,8 @@ ROM_START(zira)
ROM_LOAD("zira_u8.bin", 0x0000, 0x0800, CRC(53f8bf17) SHA1(5eb74f27bc65374a85dd44bbc8f6142488c226a2))
ROM_LOAD("zira_u9.bin", 0x0800, 0x0800, CRC(d50a2419) SHA1(81b157f579a433389506817b1b6e02afaa2cf0d5))
- ROM_REGION(0x800, "cop402", 0) // according to the schematic this is a 2716 with a size of 0x800
- ROM_LOAD("zira.snd", 0x0000, 0x0400, CRC(c8a54854) SHA1(6c0367dcb2a11f0478c44b4e2115c1cb1e8052f3))
+ ROM_REGION(0x800, "cop402", 0) // according to the schematic this is a 2716 with a size of 0x800; according to PinMAME it contains the same code twice
+ ROM_LOAD("zira.snd", 0x0000, 0x0800, CRC(008cb743) SHA1(8e9677f08189638d669b265bb6943275a08ec8b4))
ROM_END
/*-------------------------------------------------------------------
diff --git a/src/mame/drivers/playch10.cpp b/src/mame/drivers/playch10.cpp
index 2116729f35b..3d7ae0183b1 100644
--- a/src/mame/drivers/playch10.cpp
+++ b/src/mame/drivers/playch10.cpp
@@ -1677,7 +1677,7 @@ DRIVER_INIT_MEMBER(playch10_state,virus)
uint32_t len = memregion("rp5h01")->bytes();
for (int i = 0; i < len; i++)
{
- ROM[i] = BITSWAP8(ROM[i],0,1,2,3,4,5,6,7);
+ ROM[i] = bitswap<8>(ROM[i],0,1,2,3,4,5,6,7);
ROM[i] ^= 0xff;
}
@@ -1691,7 +1691,7 @@ DRIVER_INIT_MEMBER(playch10_state,ttoon)
uint32_t len = memregion("rp5h01")->bytes();
for (int i = 0; i < len; i++)
{
- ROM[i] = BITSWAP8(ROM[i],0,1,2,3,4,5,6,7);
+ ROM[i] = bitswap<8>(ROM[i],0,1,2,3,4,5,6,7);
ROM[i] ^= 0xff;
}
diff --git a/src/mame/drivers/pntnpuzl.cpp b/src/mame/drivers/pntnpuzl.cpp
index a58618a2326..aaf8177a95a 100644
--- a/src/mame/drivers/pntnpuzl.cpp
+++ b/src/mame/drivers/pntnpuzl.cpp
@@ -220,8 +220,8 @@ READ16_MEMBER(pntnpuzl_state::pntnpuzl_280014_r)
if (ioport("IN0")->read() & 0x10)
{
m_touchscr[0] = 0x1b;
- m_touchscr[2] = BITSWAP8(ioport("TOUCHX")->read(),0,1,2,3,4,5,6,7);
- m_touchscr[4] = BITSWAP8(ioport("TOUCHY")->read(),0,1,2,3,4,5,6,7);
+ m_touchscr[2] = bitswap<8>(ioport("TOUCHX")->read(),0,1,2,3,4,5,6,7);
+ m_touchscr[4] = bitswap<8>(ioport("TOUCHY")->read(),0,1,2,3,4,5,6,7);
}
else
m_touchscr[0] = 0;
diff --git a/src/mame/drivers/poly880.cpp b/src/mame/drivers/poly880.cpp
index d3297d0cd15..cddaf752477 100644
--- a/src/mame/drivers/poly880.cpp
+++ b/src/mame/drivers/poly880.cpp
@@ -160,7 +160,7 @@ WRITE8_MEMBER( poly880_state::pio1_pa_w )
*/
- m_segment = BITSWAP8(data, 3, 4, 6, 0, 1, 2, 7, 5);
+ m_segment = bitswap<8>(data, 3, 4, 6, 0, 1, 2, 7, 5);
update_display();
}
diff --git a/src/mame/drivers/popeye.cpp b/src/mame/drivers/popeye.cpp
index 7b1acd6a166..cdbd3c35bf7 100644
--- a/src/mame/drivers/popeye.cpp
+++ b/src/mame/drivers/popeye.cpp
@@ -760,7 +760,7 @@ DRIVER_INIT_MEMBER(popeye_state,skyskipr)
std::vector<uint8_t> buffer(len);
int i;
for (i = 0;i < len; i++)
- buffer[i] = BITSWAP8(rom[BITSWAP16(i,15,14,13,12,11,10,8,7,0,1,2,4,5,9,3,6) ^ 0xfc],3,4,2,5,1,6,0,7);
+ buffer[i] = bitswap<8>(rom[bitswap<16>(i,15,14,13,12,11,10,8,7,0,1,2,4,5,9,3,6) ^ 0xfc],3,4,2,5,1,6,0,7);
memcpy(rom,&buffer[0],len);
}
@@ -779,7 +779,7 @@ DRIVER_INIT_MEMBER(popeye_state,popeye)
std::vector<uint8_t> buffer(len);
int i;
for (i = 0;i < len; i++)
- buffer[i] = BITSWAP8(rom[BITSWAP16(i,15,14,13,12,11,10,8,7,6,3,9,5,4,2,1,0) ^ 0x3f],3,4,2,5,1,6,0,7);
+ buffer[i] = bitswap<8>(rom[bitswap<16>(i,15,14,13,12,11,10,8,7,6,3,9,5,4,2,1,0) ^ 0x3f],3,4,2,5,1,6,0,7);
memcpy(rom,&buffer[0],len);
}
diff --git a/src/mame/drivers/popobear.cpp b/src/mame/drivers/popobear.cpp
index ab897bf5ee7..27983bdc3fa 100644
--- a/src/mame/drivers/popobear.cpp
+++ b/src/mame/drivers/popobear.cpp
@@ -139,7 +139,7 @@ WRITE16_MEMBER(popobear_state::vram_w)
COMBINE_DATA(&m_vram[offset]);
// the graphic data for the tiles is in a strange order, rearrange it so that we can use it as tiles..
- int swapped_offset = BITSWAP32(offset, /* unused bits */ 31,30,29,28,27,26,25,24,23,22,21,20,19, /* end unused bits */
+ int swapped_offset = bitswap<32>(offset, /* unused bits */ 31,30,29,28,27,26,25,24,23,22,21,20,19, /* end unused bits */
18,17,16,15,14,13,12,
diff --git a/src/mame/drivers/proconn.cpp b/src/mame/drivers/proconn.cpp
index dc5131cbed5..9b0ab46570c 100644
--- a/src/mame/drivers/proconn.cpp
+++ b/src/mame/drivers/proconn.cpp
@@ -136,7 +136,7 @@ public:
/* PIO 1 */
DECLARE_WRITE_LINE_MEMBER(pio_1_m_out_int_w) { /* logerror("pio_1_m_out_int_w %02x\n", state); */ }
- DECLARE_READ8_MEMBER(pio_1_m_in_pa_r) { logerror("pio_1_m_in_pa_r (INPUT MATRIX)\n"); return space.machine().rand(); }
+ DECLARE_READ8_MEMBER(pio_1_m_in_pa_r) { logerror("pio_1_m_in_pa_r (INPUT MATRIX)\n"); return machine().rand(); }
DECLARE_WRITE8_MEMBER(pio_1_m_out_pa_w) { logerror("pio_1_m_out_pa_w %02x\n", data); }
DECLARE_WRITE_LINE_MEMBER(pio_1_m_out_ardy_w) { logerror("pio_1_m_out_ardy_w %02x\n", state); }
DECLARE_READ8_MEMBER(pio_1_m_in_pb_r) { logerror("pio_1_m_in_pb_r\n"); return 0x00; }
diff --git a/src/mame/drivers/puckpkmn.cpp b/src/mame/drivers/puckpkmn.cpp
index 28d46aa27b0..3fe426789bc 100644
--- a/src/mame/drivers/puckpkmn.cpp
+++ b/src/mame/drivers/puckpkmn.cpp
@@ -382,7 +382,7 @@ DRIVER_INIT_MEMBER(md_boot_state,puckpkmn)
int i;
for (i = 0; i < len; i++)
- rom[i] = BITSWAP8(rom[i],1,4,2,0,7,5,3,6);
+ rom[i] = bitswap<8>(rom[i],1,4,2,0,7,5,3,6);
DRIVER_INIT_CALL(megadriv);
}
diff --git a/src/mame/drivers/pve500.cpp b/src/mame/drivers/pve500.cpp
index 5979c5f7b89..08b28bd9f70 100644
--- a/src/mame/drivers/pve500.cpp
+++ b/src/mame/drivers/pve500.cpp
@@ -325,7 +325,7 @@ WRITE8_MEMBER(pve500_state::io_sel_w)
io_SEL = data;
for (int i=0; i<4; i++){
if (BIT(io_SEL, i)){
- LD_data[i] = 0x7F & BITSWAP8(io_LD ^ 0xFF, 7, 0, 1, 2, 3, 4, 5, 6);
+ LD_data[i] = 0x7F & bitswap<8>(io_LD ^ 0xFF, 7, 0, 1, 2, 3, 4, 5, 6);
}
}
}
diff --git a/src/mame/drivers/qix.cpp b/src/mame/drivers/qix.cpp
index 3032ca89512..eea7cf401aa 100644
--- a/src/mame/drivers/qix.cpp
+++ b/src/mame/drivers/qix.cpp
@@ -1312,10 +1312,10 @@ int qix_state::kram3_permut1(int idx, int value)
switch (idx)
{
default:
- case 0: return BITSWAP8(value, 7,6,5,4, 3,2,1,0);
- case 1: return BITSWAP8(value, 7,6,5,4, 0,3,2,1);
- case 2: return BITSWAP8(value, 7,6,5,4, 1,0,3,2);
- case 3: return BITSWAP8(value, 7,6,5,4, 2,3,0,1);
+ case 0: return bitswap<8>(value, 7,6,5,4, 3,2,1,0);
+ case 1: return bitswap<8>(value, 7,6,5,4, 0,3,2,1);
+ case 2: return bitswap<8>(value, 7,6,5,4, 1,0,3,2);
+ case 3: return bitswap<8>(value, 7,6,5,4, 2,3,0,1);
}
}
@@ -1335,7 +1335,7 @@ int qix_state::kram3_permut2(int tbl_index, int idx, const uint8_t *xor_table)
xorval ^= 0x02;
if (idx == 3)
- xorval = BITSWAP8(xorval, 7,6,5,4, 0,2,3,1);
+ xorval = bitswap<8>(xorval, 7,6,5,4, 0,2,3,1);
return xorval;
}
diff --git a/src/mame/drivers/r2dx_v33.cpp b/src/mame/drivers/r2dx_v33.cpp
index 4c22095739c..4370adbd99e 100644
--- a/src/mame/drivers/r2dx_v33.cpp
+++ b/src/mame/drivers/r2dx_v33.cpp
@@ -903,7 +903,7 @@ DRIVER_INIT_MEMBER(r2dx_v33_state,zerotm2k)
std::vector<uint8_t> buffer(len);
int i;
for (i = 0; i < len; i ++)
- buffer[i] = src[BITSWAP32(i,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,5,6,4,3,2,1,0)];
+ buffer[i] = src[bitswap<32>(i,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,5,6,4,3,2,1,0)];
memcpy(src, &buffer[0], len);
}
diff --git a/src/mame/drivers/r9751.cpp b/src/mame/drivers/r9751.cpp
index 69940540938..5d151f20d48 100644
--- a/src/mame/drivers/r9751.cpp
+++ b/src/mame/drivers/r9751.cpp
@@ -152,17 +152,17 @@ uint32_t r9751_state::swap_uint32( uint32_t val )
uint32_t r9751_state::debug_a6()
{
- return m_maincpu->space(AS_PROGRAM).read_dword(ptr_m68000->dar[14] + 4);
+ return m_maincpu->space(AS_PROGRAM).read_dword(ptr_m68000->state_int(M68K_A6) + 4);
}
uint32_t r9751_state::debug_a5()
{
- return m_maincpu->space(AS_PROGRAM).read_dword(ptr_m68000->dar[13]);
+ return m_maincpu->space(AS_PROGRAM).read_dword(ptr_m68000->state_int(M68K_A5));
}
uint32_t r9751_state::debug_a5_20()
{
- return m_maincpu->space(AS_PROGRAM).read_dword(ptr_m68000->dar[13] + 0x20);
+ return m_maincpu->space(AS_PROGRAM).read_dword(ptr_m68000->state_int(M68K_A5) + 0x20);
}
READ8_MEMBER(r9751_state::pdc_dma_r)
@@ -228,7 +228,7 @@ READ32_MEMBER( r9751_state::r9751_mmio_5ff_r )
if(TRACE_DEVICE)
if(((offset << 2) & 0xFF) == TRACE_DEVICE * 4)
- logerror("(!) Device Read: 0x%02X - PC: %08X Register: %08X\n", TRACE_DEVICE, space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000);
+ logerror("(!) Device Read: 0x%02X - PC: %08X Register: %08X\n", TRACE_DEVICE, m_maincpu->pc(), offset << 2 | 0x5FF00000);
switch(offset << 2)
{
@@ -237,7 +237,7 @@ READ32_MEMBER( r9751_state::r9751_mmio_5ff_r )
return 0x10;
case 0x3024: /* HDD SCSI command completed successfully */
data = 0x1;
- if(TRACE_HDC) logerror("SCSI HDD command completion status - Read: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000);
+ if(TRACE_HDC) logerror("SCSI HDD command completion status - Read: %08X, From: %08X, Register: %08X\n", data, m_maincpu->pc(), offset << 2 | 0x5FF00000);
return data;
/* SMIOC region (0x98, device 26) */
case 0x0898: /* Serial status or DMA status */
@@ -256,10 +256,10 @@ READ32_MEMBER( r9751_state::r9751_mmio_5ff_r )
return 0;
case 0x30B0: /* FDD command completion status */
data = (m_pdc->reg_p5 << 8) + m_pdc->reg_p4;
- if(TRACE_FDC && data != 0) logerror("--- SCSI FDD command completion status - Read: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000);
+ if(TRACE_FDC && data != 0) logerror("--- SCSI FDD command completion status - Read: %08X, From: %08X, Register: %08X\n", data, m_maincpu->pc(), offset << 2 | 0x5FF00000);
return data;
default:
- if(TRACE_FDC || TRACE_HDC || TRACE_SMIOC) logerror("Unknown read address: %08X PC: %08X\n", offset << 2 | 0x5FF00000, space.machine().firstcpu->pc());
+ if(TRACE_FDC || TRACE_HDC || TRACE_SMIOC) logerror("Unknown read address: %08X PC: %08X\n", offset << 2 | 0x5FF00000, m_maincpu->pc());
return 0;
}
}
@@ -268,36 +268,36 @@ WRITE32_MEMBER( r9751_state::r9751_mmio_5ff_w )
{
uint8_t data_b0, data_b1;
- //logerror("(!!) 0x5ff Register Write - PC: %08X Register: %08X Data: %08X\n", space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000, data);
+ //logerror("(!!) 0x5ff Register Write - PC: %08X Register: %08X Data: %08X\n", m_maincpu->pc(), offset << 2 | 0x5FF00000, data);
if(TRACE_DEVICE)
if(((offset << 2) & 0xFF) == TRACE_DEVICE * 4)
- logerror("(!) Device Write: 0x%02X - PC: %08X Register: %08X Data: %08X\n", TRACE_DEVICE, space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000, data);
+ logerror("(!) Device Write: 0x%02X - PC: %08X Register: %08X Data: %08X\n", TRACE_DEVICE, m_maincpu->pc(), offset << 2 | 0x5FF00000, data);
/* Unknown mask */
if (mem_mask != 0xFFFFFFFF)
- logerror("Mask found: %08X Register: %08X PC: %08X\n", mem_mask, offset << 2 | 0x5FF00000, space.machine().firstcpu->pc());
+ logerror("Mask found: %08X Register: %08X PC: %08X\n", mem_mask, offset << 2 | 0x5FF00000, m_maincpu->pc());
switch(offset << 2)
{
/* PDC HDD region (0x24, device 9 */
case 0x0224: /* HDD SCSI read command */
- if(TRACE_HDC) logerror("@@@ HDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000);
+ if(TRACE_HDC) logerror("@@@ HDD Command: %08X, From: %08X, Register: %08X\n", data, m_maincpu->pc(), offset << 2 | 0x5FF00000);
break;
case 0x8024: /* HDD SCSI read command */
- if(TRACE_HDC) logerror("@@@ HDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000);
+ if(TRACE_HDC) logerror("@@@ HDD Command: %08X, From: %08X, Register: %08X\n", data, m_maincpu->pc(), offset << 2 | 0x5FF00000);
break;
case 0xC024: /* HDD SCSI read command */
- if(TRACE_HDC) logerror("@@@ HDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000);
+ if(TRACE_HDC) logerror("@@@ HDD Command: %08X, From: %08X, Register: %08X\n", data, m_maincpu->pc(), offset << 2 | 0x5FF00000);
break;
/* SMIOC region (0x98, device 26) - Output */
case 0x0298:
m_serial_status = data;
- if(TRACE_SMIOC) logerror("Serial status: %08X PC: %08X\n", data, space.machine().firstcpu->pc());
+ if(TRACE_SMIOC) logerror("Serial status: %08X PC: %08X\n", data, m_maincpu->pc());
break;
case 0x0270:
m_serial_status2 = data;
- if(TRACE_SMIOC) logerror("Serial status2: %08X PC: %08X\n", data, space.machine().firstcpu->pc());
+ if(TRACE_SMIOC) logerror("Serial status2: %08X PC: %08X\n", data, m_maincpu->pc());
break;
case 0x4090:
case 0x4098: /* Serial DMA Command */
@@ -306,19 +306,19 @@ WRITE32_MEMBER( r9751_state::r9751_mmio_5ff_w )
case 0x1000:
m_serial_status = 0x0140;
m_serial_status2 = 0x0140;
- if(TRACE_SMIOC) logerror("Serial DMA command 0x1000 PC: %08X\n", space.machine().firstcpu->pc());
+ if(TRACE_SMIOC) logerror("Serial DMA command 0x1000 PC: %08X\n", m_maincpu->pc());
break;
case 0x4100: /* Send byte to serial */
for(int i = 0; i < smioc_dma_w_length; i++)
{
- if(TRACE_SMIOC) logerror("Serial byte: %02X PC: %08X\n", m_mem->read_word(smioc_out_addr+i*2), space.machine().firstcpu->pc());
+ if(TRACE_SMIOC) logerror("Serial byte: %02X PC: %08X\n", m_mem->read_word(smioc_out_addr+i*2), m_maincpu->pc());
m_terminal->write(space,0,m_mem->read_word(smioc_out_addr+i*2));
}
m_serial_status = 0x4140;
break;
case 0x4200: /* Write XON into serial DMA input register (0x5FF0809C) memory location */
m_maincpu->space(AS_PROGRAM).write_byte(smioc_in_addr,0x11);
- if(TRACE_SMIOC) logerror("Serial DMA command 0x4200 (XON) PC: %08X\n", space.machine().firstcpu->pc());
+ if(TRACE_SMIOC) logerror("Serial DMA command 0x4200 (XON) PC: %08X\n", m_maincpu->pc());
m_serial_status = 0x4440;
break;
default:
@@ -329,39 +329,39 @@ WRITE32_MEMBER( r9751_state::r9751_mmio_5ff_w )
case 0xC098: /* Serial DMA output address */
//smioc_out_addr = data * 2;
smioc_out_addr = (smioc_dma_bank & 0x7FFFF800) | ((data&0x3FF)<<1);
- if(TRACE_SMIOC) logerror("Serial output address: %08X PC: %08X\n", smioc_out_addr, space.machine().firstcpu->pc());
+ if(TRACE_SMIOC) logerror("Serial output address: %08X PC: %08X\n", smioc_out_addr, m_maincpu->pc());
break;
/* SMIOC region (0x9C, device 27) - Input */
case 0x409C: /* Serial DMA write length */
smioc_dma_w_length = (~data+1) & 0xFFFF;
- if(TRACE_SMIOC) logerror("Serial DMA write length: %08X PC: %08X\n", smioc_dma_w_length, space.machine().firstcpu->pc());
+ if(TRACE_SMIOC) logerror("Serial DMA write length: %08X PC: %08X\n", smioc_dma_w_length, m_maincpu->pc());
if(smioc_dma_w_length > 0x400) smioc_dma_w_length = 0x400;
break;
case 0x809C: /* Serial DMA input address */
smioc_in_addr = (smioc_dma_bank & 0x7FFFF800) | ((data&0x3FF)<<1);
- if(TRACE_SMIOC) logerror("Serial input address: %08X PC: %08X\n", smioc_out_addr, space.machine().firstcpu->pc());
+ if(TRACE_SMIOC) logerror("Serial input address: %08X PC: %08X\n", smioc_out_addr, m_maincpu->pc());
break;
case 0xC09C: /* Serial DMA read length */
smioc_dma_r_length = (~data+1) & 0xFFFF;
- if(TRACE_SMIOC) logerror("Serial DMA read length: %08X PC: %08X\n", smioc_dma_r_length, space.machine().firstcpu->pc());
+ if(TRACE_SMIOC) logerror("Serial DMA read length: %08X PC: %08X\n", smioc_dma_r_length, m_maincpu->pc());
if(smioc_dma_r_length > 0x400) smioc_dma_r_length = 0x400;
break;
/* PDC FDD region (0xB0, device 44 */
case 0x01B0: /* FDD SCSI read command */
- if(TRACE_FDC) logerror("--- FDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000);
+ if(TRACE_FDC) logerror("--- FDD Command: %08X, From: %08X, Register: %08X\n", data, m_maincpu->pc(), offset << 2 | 0x5FF00000);
break;
case 0x02B0: /* FDD SCSI read command */
- if(TRACE_FDC) logerror("--- FDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000);
+ if(TRACE_FDC) logerror("--- FDD Command: %08X, From: %08X, Register: %08X\n", data, m_maincpu->pc(), offset << 2 | 0x5FF00000);
break;
case 0x04B0: /* FDD RESET PDC */
- if(TRACE_FDC) logerror("PDC RESET, PC: %08X DATA: %08X\n", space.machine().firstcpu->pc(),data);
+ if(TRACE_FDC) logerror("PDC RESET, PC: %08X DATA: %08X\n", m_maincpu->pc(), data);
m_pdc->reset();
break;
case 0x08B0: /* FDD SCSI read command */
- if(TRACE_FDC) logerror("--- FDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000);
+ if(TRACE_FDC) logerror("--- FDD Command: %08X, From: %08X, Register: %08X\n", data, m_maincpu->pc(), offset << 2 | 0x5FF00000);
break;
case 0x41B0: /* Unknown - Probably old style commands */
- if(TRACE_FDC) logerror("--- FDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000);
+ if(TRACE_FDC) logerror("--- FDD Command: %08X, From: %08X, Register: %08X\n", data, m_maincpu->pc(), offset << 2 | 0x5FF00000);
/* Clear FDD Command completion status 0x5FF030B0 (PDC 0x4, 0x5) */
m_pdc->reg_p4 = 0;
@@ -377,7 +377,7 @@ WRITE32_MEMBER( r9751_state::r9751_mmio_5ff_w )
case 0xC0B0:
case 0xC1B0: /* fdd_dest_address register */
fdd_dest_address = data << 1;
- if(TRACE_FDC) logerror("--- FDD destination address: %08X PC: %08X Register: %08X (A6+4): %08X\n", (fdd_dma_bank & 0x7FFFF800) + (fdd_dest_address&0x3FFFF), space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000, debug_a6());
+ if(TRACE_FDC) logerror("--- FDD destination address: %08X PC: %08X Register: %08X (A6+4): %08X\n", (fdd_dma_bank & 0x7FFFF800) + (fdd_dest_address&0x3FFFF), m_maincpu->pc(), offset << 2 | 0x5FF00000, debug_a6());
data_b0 = data & 0xFF;
data_b1 = (data & 0xFF00) >> 8;
m_pdc->reg_p6 = data_b0;
@@ -396,7 +396,7 @@ WRITE32_MEMBER( r9751_state::r9751_mmio_5ff_w )
m_pdc->reg_p5 = 0;
/* Send FDD SCSI command location address to PDC 0x2, 0x3 */
- if(TRACE_FDC) logerror("--- FDD command address: %08X PC: %08X Register: %08X (A6+4): %08X A4: %08X (A5): %08X (A5+20): %08X\n", (fdd_dma_bank & 0x7FFFF800) + ((data << 1)&0x3FFFF), space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000, debug_a6(), ptr_m68000->dar[12], debug_a5(), debug_a5_20());
+ if(TRACE_FDC) logerror("--- FDD command address: %08X PC: %08X Register: %08X (A6+4): %08X A4: %08X (A5): %08X (A5+20): %08X\n", (fdd_dma_bank & 0x7FFFF800) + ((data << 1)&0x3FFFF), m_maincpu->pc(), offset << 2 | 0x5FF00000, debug_a6(), ptr_m68000->state_int(M68K_A4), debug_a5(), debug_a5_20());
data_b0 = data & 0xFF;
data_b1 = (data & 0xFF00) >> 8;
m_pdc->reg_p2 = data_b0;
@@ -422,7 +422,7 @@ WRITE32_MEMBER( r9751_state::r9751_mmio_5ff_w )
break;
default:
- if(TRACE_FDC || TRACE_HDC || TRACE_SMIOC) logerror("Unknown write address: %08X Data: %08X PC: %08X\n", offset << 2 | 0x5FF00000, data, space.machine().firstcpu->pc());
+ if(TRACE_FDC || TRACE_HDC || TRACE_SMIOC) logerror("Unknown write address: %08X Data: %08X PC: %08X\n", offset << 2 | 0x5FF00000, data, m_maincpu->pc());
}
}
@@ -445,20 +445,20 @@ WRITE32_MEMBER( r9751_state::r9751_mmio_ff01_w )
{
/* Unknown mask */
if (mem_mask != 0xFFFFFFFF)
- logerror("Mask found: %08X Register: %08X PC: %08X\n", mem_mask, offset << 2 | 0xFF010000, space.machine().firstcpu->pc());
+ logerror("Mask found: %08X Register: %08X PC: %08X\n", mem_mask, offset << 2 | 0xFF010000, m_maincpu->pc());
switch(offset << 2)
{
case 0x000C: /* FDD DMA Offset */
fdd_dma_bank = data;
- if(TRACE_DMA) logerror("Banking register(FDD): %08X PC: %08X Data: %08X\n", offset << 2 | 0xFF010000, space.machine().firstcpu->pc(), data);
+ if(TRACE_DMA) logerror("Banking register(FDD): %08X PC: %08X Data: %08X\n", offset << 2 | 0xFF010000, m_maincpu->pc(), data);
return;
case 0x0010: /* SMIOC DMA Offset */
smioc_dma_bank = data;
- if(TRACE_DMA) logerror("Banking register(SMIOC): %08X PC: %08X Data: %08X\n", offset << 2 | 0xFF010000, space.machine().firstcpu->pc(), data);
+ if(TRACE_DMA) logerror("Banking register(SMIOC): %08X PC: %08X Data: %08X\n", offset << 2 | 0xFF010000, m_maincpu->pc(), data);
return;
default:
- if(TRACE_DMA) logerror("Banking register(Unknown): %08X PC: %08X Data: %08X\n", offset << 2 | 0xFF010000, space.machine().firstcpu->pc(), data);
+ if(TRACE_DMA) logerror("Banking register(Unknown): %08X PC: %08X Data: %08X\n", offset << 2 | 0xFF010000, m_maincpu->pc(), data);
return;
}
}
@@ -483,7 +483,7 @@ READ32_MEMBER( r9751_state::r9751_mmio_ff05_r )
return 0x80;
default:
data = 0;
- if(TRACE_CPU_REG) logerror("Instruction: %08x READ MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), offset << 2 | 0xFF050000, data, mem_mask);
+ if(TRACE_CPU_REG) logerror("Instruction: %08x READ MMIO(%08x): %08x & %08x\n", m_maincpu->pc(), offset << 2 | 0xFF050000, data, mem_mask);
return data;
}
}
@@ -492,7 +492,7 @@ WRITE32_MEMBER( r9751_state::r9751_mmio_ff05_w )
{
/* Unknown mask */
if (mem_mask != 0xFFFFFFFF)
- logerror("Mask found: %08X Register: %08X PC: %08X\n", mem_mask, offset << 2 | 0xFF050000, space.machine().firstcpu->pc());
+ logerror("Mask found: %08X Register: %08X PC: %08X\n", mem_mask, offset << 2 | 0xFF050000, m_maincpu->pc());
switch(offset << 2)
{
@@ -500,13 +500,13 @@ WRITE32_MEMBER( r9751_state::r9751_mmio_ff05_w )
reg_ff050004 = data;
return;
case 0x000C: /* CPU LED hex display indicator */
- if(TRACE_LED) logerror("\n*** LED: %02x, Instruction: %08x ***\n\n", data, space.machine().firstcpu->pc());
+ if(TRACE_LED) logerror("\n*** LED: %02x, Instruction: %08x ***\n\n", data, m_maincpu->pc());
return;
case 0x0320:
timer_32khz_last = machine().time();
return;
default:
- if(TRACE_CPU_REG) logerror("Instruction: %08x WRITE MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), offset << 2 | 0xFF050000, data, mem_mask);
+ if(TRACE_CPU_REG) logerror("Instruction: %08x WRITE MMIO(%08x): %08x & %08x\n", m_maincpu->pc(), offset << 2 | 0xFF050000, data, mem_mask);
return;
}
}
@@ -521,7 +521,7 @@ READ32_MEMBER( r9751_state::r9751_mmio_fff8_r )
return reg_fff80040;
default:
data = 0;
- if(TRACE_CPU_REG) logerror("Instruction: %08x READ MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), offset << 2 | 0xFFF80000, data, mem_mask);
+ if(TRACE_CPU_REG) logerror("Instruction: %08x READ MMIO(%08x): %08x & %08x\n", m_maincpu->pc(), offset << 2 | 0xFFF80000, data, mem_mask);
return data;
}
}
@@ -530,7 +530,7 @@ WRITE32_MEMBER( r9751_state::r9751_mmio_fff8_w )
{
/* Unknown mask */
if (mem_mask != 0xFFFFFFFF)
- logerror("Mask found: %08X Register: %08X PC: %08X\n", mem_mask, offset << 2 | 0xFFF80000, space.machine().firstcpu->pc());
+ logerror("Mask found: %08X Register: %08X PC: %08X\n", mem_mask, offset << 2 | 0xFFF80000, m_maincpu->pc());
switch(offset << 2)
{
@@ -538,7 +538,7 @@ WRITE32_MEMBER( r9751_state::r9751_mmio_fff8_w )
reg_fff80040 = data;
return;
default:
- if(TRACE_CPU_REG) logerror("Instruction: %08x WRITE MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), offset << 2 | 0xFFF80000, data, mem_mask);
+ if(TRACE_CPU_REG) logerror("Instruction: %08x WRITE MMIO(%08x): %08x & %08x\n", m_maincpu->pc(), offset << 2 | 0xFFF80000, data, mem_mask);
}
}
diff --git a/src/mame/drivers/raiden.cpp b/src/mame/drivers/raiden.cpp
index e775b8d73a7..88196786470 100644
--- a/src/mame/drivers/raiden.cpp
+++ b/src/mame/drivers/raiden.cpp
@@ -741,7 +741,7 @@ void raiden_state::common_decrypt()
static const uint16_t xor_table[] = { 0x200e,0x0006,0x000a,0x0002,0x240e,0x000e,0x04c2,0x00c2,0x008c,0x0004,0x0088,0x0000,0x048c,0x000c,0x04c0,0x00c0 };
uint16_t data = RAM[0xc0000/2 + i];
data ^= xor_table[i & 0x0f];
- data = BITSWAP16(data, 15,14,10,12,11,13,9,8,3,2,5,4,7,1,6,0);
+ data = bitswap<16>(data, 15,14,10,12,11,13,9,8,3,2,5,4,7,1,6,0);
RAM[0xc0000/2 + i] = data;
}
@@ -752,7 +752,7 @@ void raiden_state::common_decrypt()
static const uint16_t xor_table[] = { 0x0080,0x0080,0x0244,0x0288,0x0288,0x0288,0x1041,0x1009 };
uint16_t data = RAM[0xc0000/2 + i];
data ^= xor_table[i & 0x07];
- data = BITSWAP16(data, 15,14,13,9,11,10,12,8,2,0,5,4,7,3,1,6);
+ data = bitswap<16>(data, 15,14,13,9,11,10,12,8,2,0,5,4,7,3,1,6);
RAM[0xc0000/2 + i] = data;
}
}
diff --git a/src/mame/drivers/rainbow.cpp b/src/mame/drivers/rainbow.cpp
index b8f94aaafcf..2ee85a262c3 100644
--- a/src/mame/drivers/rainbow.cpp
+++ b/src/mame/drivers/rainbow.cpp
@@ -2863,7 +2863,7 @@ WRITE16_MEMBER(rainbow_state::vram_w)
if(m_GDC_MODE_REGISTER & GDC_MODE_VECTOR) // VT240 : if(SELECT_VECTOR_PATTERN_REGISTER)
{
- chr = BITSWAP8(m_vpat, m_patidx, m_patidx, m_patidx, m_patidx, m_patidx, m_patidx, m_patidx, m_patidx);
+ chr = bitswap<8>(m_vpat, m_patidx, m_patidx, m_patidx, m_patidx, m_patidx, m_patidx, m_patidx, m_patidx);
chr |= (chr << 8);
if(m_patcnt-- == 0)
{
@@ -3121,7 +3121,7 @@ WRITE8_MEMBER(rainbow_state::GDC_EXTRA_REGISTER_w)
// -------------------- WRITE BUFFER USED IN WORD MODE ONLY !
// "OUTPUT WRITE BUFFER IS THE INVERSE OF THE INPUT" (quote from 4-3 of the PDF)
// BITSWAP SEEMS NECESSARY (see digits in DOODLE)... !
- m_GDC_WRITE_BUFFER[m_GDC_write_buffer_index++] = ~BITSWAP8(data, 0, 1, 2, 3, 4, 5, 6, 7);
+ m_GDC_WRITE_BUFFER[m_GDC_write_buffer_index++] = ~bitswap<8>(data, 0, 1, 2, 3, 4, 5, 6, 7);
m_GDC_write_buffer_index &= 0xf; // write up to 16 bytes to port 52h.
break;
@@ -3149,10 +3149,10 @@ WRITE8_MEMBER(rainbow_state::GDC_EXTRA_REGISTER_w)
// There is no specific order for the WRITE_MASK (according to txt/code samples in DEC's PDF).
// NOTE: LOW <-> HI JUXTAPOSITION!
case 4: // 54h Write Mask LOW
- m_GDC_WRITE_MASK = ( BITSWAP8(data, 0, 1, 2, 3, 4, 5, 6, 7) << 8 ) | ( m_GDC_WRITE_MASK & 0x00FF );
+ m_GDC_WRITE_MASK = ( bitswap<8>(data, 0, 1, 2, 3, 4, 5, 6, 7) << 8 ) | ( m_GDC_WRITE_MASK & 0x00FF );
break;
case 5: // 55h Write Mask HIGH
- m_GDC_WRITE_MASK = ( m_GDC_WRITE_MASK & 0xFF00 ) | BITSWAP8(data, 0, 1, 2, 3, 4, 5, 6, 7);
+ m_GDC_WRITE_MASK = ( m_GDC_WRITE_MASK & 0xFF00 ) | bitswap<8>(data, 0, 1, 2, 3, 4, 5, 6, 7);
break;
} // switch
diff --git a/src/mame/drivers/risc2500.cpp b/src/mame/drivers/risc2500.cpp
index 56049cf2147..2a8ca42b5db 100644
--- a/src/mame/drivers/risc2500.cpp
+++ b/src/mame/drivers/risc2500.cpp
@@ -77,7 +77,7 @@ uint32_t risc2500_state::screen_update(screen_device &screen, bitmap_ind16 &bitm
// 12 characters 5 x 7
for(int x=0; x<5; x++)
{
- uint8_t gfx = BITSWAP8(m_vram[c*5 + x], 6,5,0,1,2,3,4,7);
+ uint8_t gfx = bitswap<8>(m_vram[c*5 + x], 6,5,0,1,2,3,4,7);
for(int y=0; y<7; y++)
bitmap.pix16(y, 71 - (c*6 + x)) = (gfx >> (y + 1)) & 1;
@@ -86,7 +86,7 @@ uint32_t risc2500_state::screen_update(screen_device &screen, bitmap_ind16 &bitm
// LCD digits and symbols
int data_addr = 0x40 + c * 5;
uint16_t data = ((m_vram[data_addr + 1] & 0x3) << 5) | ((m_vram[data_addr + 2] & 0x7) << 2) | (m_vram[data_addr + 4] & 0x3);
- data = BITSWAP8(data, 7,3,0,1,4,6,5,2) | ((m_vram[data_addr - 1] & 0x04) ? 0x80 : 0);
+ data = bitswap<8>(data, 7,3,0,1,4,6,5,2) | ((m_vram[data_addr - 1] & 0x04) ? 0x80 : 0);
output().set_digit_value(c, data);
output().set_indexed_value("sym", c, BIT(m_vram[data_addr + 1], 2));
diff --git a/src/mame/drivers/rmhaihai.cpp b/src/mame/drivers/rmhaihai.cpp
index 082123d23df..58cb32a4c0e 100644
--- a/src/mame/drivers/rmhaihai.cpp
+++ b/src/mame/drivers/rmhaihai.cpp
@@ -123,8 +123,8 @@ READ8_MEMBER(rmhaihai_state::keyboard_r)
{
static const char *const keynames[] = { "KEY0", "KEY1" };
- logerror("%04x: keyboard_r\n",space.device().safe_pc());
- switch(space.device().safe_pc())
+ logerror("%04x: keyboard_r\n",m_maincpu->pc());
+ switch(m_maincpu->pc())
{
/* read keyboard */
case 0x0280:
@@ -173,7 +173,7 @@ READ8_MEMBER(rmhaihai_state::keyboard_r)
WRITE8_MEMBER(rmhaihai_state::keyboard_w)
{
-logerror("%04x: keyboard_w %02x\n",space.device().safe_pc(),data);
+logerror("%04x: keyboard_w %02x\n",m_maincpu->pc(),data);
m_keyboard_cmd = data;
}
diff --git a/src/mame/drivers/rohga.cpp b/src/mame/drivers/rohga.cpp
index 84389cc6c94..b58023bcf38 100644
--- a/src/mame/drivers/rohga.cpp
+++ b/src/mame/drivers/rohga.cpp
@@ -171,7 +171,7 @@ ADDRESS_MAP_END
READ16_MEMBER( rohga_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;
@@ -180,7 +180,7 @@ READ16_MEMBER( rohga_state::wf_protection_region_0_104_r )
WRITE16_MEMBER( rohga_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 );
}
@@ -221,7 +221,7 @@ ADDRESS_MAP_END
READ16_MEMBER( rohga_state::nb_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;
@@ -230,7 +230,7 @@ READ16_MEMBER( rohga_state::nb_protection_region_0_146_r )
WRITE16_MEMBER( rohga_state::nb_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/royalmah.cpp b/src/mame/drivers/royalmah.cpp
index f78d744dc00..684b97e21e7 100644
--- a/src/mame/drivers/royalmah.cpp
+++ b/src/mame/drivers/royalmah.cpp
@@ -312,9 +312,9 @@ PALETTE_INIT_MEMBER(royalmah_state,mjderngr)
uint16_t data = (prom[i] << 8) | prom[i + 0x200];
/* the bits are in reverse order */
- uint8_t r = BITSWAP8((data >> 0) & 0x1f,7,6,5,0,1,2,3,4 );
- uint8_t g = BITSWAP8((data >> 5) & 0x1f,7,6,5,0,1,2,3,4 );
- uint8_t b = BITSWAP8((data >> 10) & 0x1f,7,6,5,0,1,2,3,4 );
+ uint8_t r = bitswap<8>((data >> 0) & 0x1f,7,6,5,0,1,2,3,4 );
+ uint8_t g = bitswap<8>((data >> 5) & 0x1f,7,6,5,0,1,2,3,4 );
+ uint8_t b = bitswap<8>((data >> 10) & 0x1f,7,6,5,0,1,2,3,4 );
palette.set_pen_color(i, pal5bit(r), pal5bit(g), pal5bit(b));
}
diff --git a/src/mame/drivers/s11.cpp b/src/mame/drivers/s11.cpp
index 8c299d7178f..0f9948eff13 100644
--- a/src/mame/drivers/s11.cpp
+++ b/src/mame/drivers/s11.cpp
@@ -242,7 +242,7 @@ WRITE8_MEMBER( s11_state::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;
}
}
@@ -266,7 +266,7 @@ WRITE8_MEMBER( s11_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;
}
}
@@ -277,7 +277,7 @@ WRITE8_MEMBER( s11_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;
}
}
@@ -300,7 +300,7 @@ WRITE8_MEMBER( s11_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/s11b.cpp b/src/mame/drivers/s11b.cpp
index c48ee63939b..08e8fe0d2ba 100644
--- a/src/mame/drivers/s11b.cpp
+++ b/src/mame/drivers/s11b.cpp
@@ -177,9 +177,9 @@ WRITE8_MEMBER( s11b_state::dig1_w )
if((seg & 0x70000) == 0x30000)
{
if(m_invert)
- output().set_digit_value(get_strobe()+16, BITSWAP16(~seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(get_strobe()+16, bitswap<16>(~seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
else
- output().set_digit_value(get_strobe()+16, BITSWAP16(seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(get_strobe()+16, bitswap<16>(seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
seg |= 0x40000;
}
set_segment2(seg);
@@ -193,9 +193,9 @@ WRITE8_MEMBER( s11b_state::pia2c_pa_w )
if((seg & 0x70000) == 0x30000)
{
if(m_invert)
- output().set_digit_value(get_strobe(), BITSWAP16(~seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(get_strobe(), bitswap<16>(~seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
else
- output().set_digit_value(get_strobe(), BITSWAP16(seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(get_strobe(), bitswap<16>(seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
seg |= 0x40000;
}
set_segment1(seg);
@@ -209,9 +209,9 @@ WRITE8_MEMBER( s11b_state::pia2c_pb_w )
if((seg & 0x70000) == 0x30000)
{
if(m_invert)
- output().set_digit_value(get_strobe(), BITSWAP16(~seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(get_strobe(), bitswap<16>(~seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
else
- output().set_digit_value(get_strobe(), BITSWAP16(seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(get_strobe(), bitswap<16>(seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
seg |= 0x40000;
}
set_segment1(seg);
@@ -225,9 +225,9 @@ WRITE8_MEMBER( s11b_state::pia34_pa_w )
if((seg & 0x70000) == 0x30000)
{
if(m_invert)
- output().set_digit_value(get_strobe()+16, BITSWAP16(~seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(get_strobe()+16, bitswap<16>(~seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
else
- output().set_digit_value(get_strobe()+16, BITSWAP16(seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(get_strobe()+16, bitswap<16>(seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
seg |= 0x40000;
}
set_segment2(seg);
diff --git a/src/mame/drivers/sc1.cpp b/src/mame/drivers/sc1.cpp
index 223c6329c18..2e92685917f 100644
--- a/src/mame/drivers/sc1.cpp
+++ b/src/mame/drivers/sc1.cpp
@@ -72,7 +72,7 @@ public:
WRITE8_MEMBER( sc1_state::pio_port_a_w )
{
- uint8_t digit = BITSWAP8( data,3,4,6,0,1,2,7,5 );
+ uint8_t digit = bitswap<8>( data,3,4,6,0,1,2,7,5 );
if (m_matrix & 0x04)
output().set_digit_value(3, digit & 0x7f);
diff --git a/src/mame/drivers/sc2.cpp b/src/mame/drivers/sc2.cpp
index 0dc458c6bff..0bbff5767da 100644
--- a/src/mame/drivers/sc2.cpp
+++ b/src/mame/drivers/sc2.cpp
@@ -118,7 +118,7 @@ void sc2_state::machine_reset()
void sc2_state::sc2_update_display()
{
- uint8_t digit_data = BITSWAP8( m_digit_data,7,0,1,2,3,4,5,6 ) & 0x7f;
+ uint8_t digit_data = bitswap<8>( m_digit_data,7,0,1,2,3,4,5,6 ) & 0x7f;
if (!BIT(m_led_selected, 0))
{
diff --git a/src/mame/drivers/scobra.cpp b/src/mame/drivers/scobra.cpp
index 4b872b0432a..0c6ad0a433b 100644
--- a/src/mame/drivers/scobra.cpp
+++ b/src/mame/drivers/scobra.cpp
@@ -4,7 +4,7 @@
Super Cobra hardware
-NOTE: Eventually to be merged into GALAXIAN.C
+NOTE: Eventually to be merged into galaxian.cpp
TODO:
----
@@ -30,7 +30,7 @@ Notes/Tidbits:
differences are the title, copyright removed, different encryptions or
no encryption, plus hustlerb has a different memory map.
-- In Tazmania, when set to Upright mode, player 2 left skips the current
+- In Tazmania and clones, when set to Upright mode, player 2 left skips the current
level
***************************************************************************/
@@ -52,7 +52,6 @@ public:
: scramble_state(mconfig, type, tag),
m_soundram(*this, "soundram") { }
- optional_shared_ptr<uint8_t> m_soundram;
DECLARE_READ8_MEMBER(scobra_soundram_r);
DECLARE_WRITE8_MEMBER(scobra_soundram_w);
DECLARE_READ8_MEMBER(scobra_type2_ppi8255_0_r);
@@ -64,6 +63,9 @@ public:
DECLARE_WRITE8_MEMBER(hustler_ppi8255_0_w);
DECLARE_WRITE8_MEMBER(hustler_ppi8255_1_w);
DECLARE_CUSTOM_INPUT_MEMBER(stratgyx_coinage_r);
+
+private:
+ optional_shared_ptr<uint8_t> m_soundram;
};
@@ -148,6 +150,26 @@ static ADDRESS_MAP_START( type2_map, AS_PROGRAM, 8, scobra_state )
AM_RANGE(0xb00e, 0xb00e) AM_WRITE(galaxold_flip_screen_x_w)
ADDRESS_MAP_END
+static ADDRESS_MAP_START( tazmani3_map, AS_PROGRAM, 8, scobra_state )
+ AM_RANGE(0x0000, 0x7fff) AM_ROM
+ AM_RANGE(0x8000, 0x87ff) AM_RAM
+ AM_RANGE(0x8800, 0x883f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
+ AM_RANGE(0x8840, 0x885f) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0x8860, 0x887f) AM_RAM AM_SHARE("bulletsram")
+ AM_RANGE(0x8880, 0x88ff) AM_RAM
+ AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
+ AM_RANGE(0x9400, 0x97ff) AM_READWRITE(galaxold_videoram_r, galaxold_videoram_w) /* mirror */
+ AM_RANGE(0x9800, 0x9800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
+ AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
+ AM_RANGE(0xa800, 0xa803) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
+ AM_RANGE(0xb000, 0xb000) AM_WRITE(galaxold_stars_enable_w)
+ AM_RANGE(0xb001, 0xb001) AM_WRITE(galaxold_nmi_enable_w)
+ AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_coin_counter_0_w)
+ AM_RANGE(0xb008, 0xb008) AM_WRITE(galaxold_coin_counter_1_w)
+ AM_RANGE(0xb00c, 0xb00c) AM_WRITE(galaxold_flip_screen_y_w)
+ AM_RANGE(0xb00e, 0xb00e) AM_WRITE(galaxold_flip_screen_x_w)
+ADDRESS_MAP_END
+
static ADDRESS_MAP_START( hustler_map, AS_PROGRAM, 8, scobra_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x87ff) AM_RAM
@@ -449,7 +471,7 @@ static INPUT_PORTS_START( darkplnt )
PORT_BIT( 0xfc, 0x00, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) /* scrambled dial */
INPUT_PORTS_END
-static INPUT_PORTS_START( tazmania )
+static INPUT_PORTS_START( tazmani2 )
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 )
@@ -497,6 +519,49 @@ static INPUT_PORTS_START( tazmania )
INPUT_PORTS_END
+static INPUT_PORTS_START( tazmani3 )
+ PORT_START("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
+
+ PORT_START("IN1")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )
+ PORT_DIPSETTING( 0x01, "3" )
+ PORT_DIPSETTING( 0x00, "5" )
+ PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
+
+ PORT_START("IN2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
+ PORT_DIPNAME( 0x06, 0x02, DEF_STR( Coinage ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x00, "Coin A 1/2 Coin B 2/1" )
+ PORT_DIPSETTING( 0x04, "Coin A 1/3 Coin B 3/1" )
+ PORT_DIPSETTING( 0x06, "Coin A 1/4 Coin B 4/1" )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Cabinet ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Upright ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
+ PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+INPUT_PORTS_END
+
/* cocktail mode is N/A */
static INPUT_PORTS_START( rescue )
PORT_START("IN0")
@@ -891,6 +956,13 @@ static MACHINE_CONFIG_DERIVED( type2, type1 )
MCFG_CPU_PROGRAM_MAP(type2_map)
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( tazmani3, type2 )
+
+ /* basic machine hardware */
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(tazmani3_map)
+MACHINE_CONFIG_END
+
static MACHINE_CONFIG_DERIVED( stratgyx, type2 )
@@ -1123,6 +1195,7 @@ ROM_START( tazmani2 )
ROM_LOAD( "colr6f.cpu", 0x0000, 0x0020, CRC(fce333c7) SHA1(f63a214dc47c5e7c80db000b0b6a261ca8da6629) )
ROM_END
+// PCBs: RODMAR 6920-00-01 P1 and 6920-01-01 P1 but Arfyc copyright
ROM_START( tazmani3 )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "2ck.cpu", 0x0000, 0x1000, CRC(e8b6f9c3) SHA1(121f83274b3fdb4b2cb4bd0160d61886825c8793) ) // sldh
@@ -1624,8 +1697,8 @@ GAME( 1982, strongx, stratgyx, stratgyx, stratgyx, scobra_state, stratgyx,
GAME( 1982, darkplnt, 0, darkplnt, darkplnt, scobra_state, darkplnt, ROT180, "Stern Electronics", "Dark Planet", MACHINE_SUPPORTS_SAVE )
-GAME( 1982, tazmani2, tazmania, type2, tazmania, scobra_state, tazmani2, ROT90, "Stern Electronics", "Tazz-Mania (set 2, alt hardware)", MACHINE_SUPPORTS_SAVE )
-GAME( 1982, tazmani3, tazmania, type2, tazmania, scobra_state, tazmani2, ROT90, "bootleg (Rodmar)", "Tazz-Mania (Rodmar bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // different i8255 hook up
+GAME( 1982, tazmani2, tazmania, type2, tazmani2, scobra_state, tazmani2, ROT90, "Stern Electronics", "Tazz-Mania (set 2, alt hardware)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, tazmani3, tazmania, tazmani3, tazmani3, scobra_state, 0, ROT90, "bootleg (Arfyc / Rodmar)", "Tazz-Mania (Arfyc / Rodmar bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, rescue, 0, rescue, rescue, scobra_state, rescue, ROT90, "Stern Electronics", "Rescue", MACHINE_SUPPORTS_SAVE )
GAME( 1982, rescueb, rescue, rescueb, rescue, scobra_state, rescue, ROT90, "bootleg (Videl Games)", "Tuono Blu (bootleg of Rescue)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/scregg.cpp b/src/mame/drivers/scregg.cpp
index 778c6cbf639..30e7c0a6275 100644
--- a/src/mame/drivers/scregg.cpp
+++ b/src/mame/drivers/scregg.cpp
@@ -419,7 +419,7 @@ DRIVER_INIT_MEMBER(scregg_state,rockduck)
for (x = 0x2000; x < 0x6000; x++)
{
- src[x] = BITSWAP8(src[x],2,0,3,6,1,4,7,5);
+ src[x] = bitswap<8>(src[x],2,0,3,6,1,4,7,5);
}
}
diff --git a/src/mame/drivers/sdk85.cpp b/src/mame/drivers/sdk85.cpp
index 8c89e634075..9c1f4948bd7 100644
--- a/src/mame/drivers/sdk85.cpp
+++ b/src/mame/drivers/sdk85.cpp
@@ -132,7 +132,7 @@ WRITE8_MEMBER( sdk85_state::scanlines_w )
WRITE8_MEMBER( sdk85_state::digit_w )
{
if (m_digit < 6)
- output().set_digit_value(m_digit, BITSWAP8(data, 3, 2, 1, 0, 7, 6, 5, 4)^0xff);
+ output().set_digit_value(m_digit, bitswap<8>(data, 3, 2, 1, 0, 7, 6, 5, 4)^0xff);
}
READ8_MEMBER( sdk85_state::kbd_r )
diff --git a/src/mame/drivers/seattle.cpp b/src/mame/drivers/seattle.cpp
index 908f13282a1..48ad4959f39 100644
--- a/src/mame/drivers/seattle.cpp
+++ b/src/mame/drivers/seattle.cpp
@@ -496,6 +496,7 @@ WRITE32_MEMBER(seattle_state::interrupt_config_w)
{
int irq;
COMBINE_DATA(&m_interrupt_config);
+ //logerror("interrupt_config_w: m_interrupt_config=%08x\n", m_interrupt_config);
/* VBLANK: clear anything pending on the old IRQ */
if (m_vblank_irq_num != 0)
@@ -1295,15 +1296,18 @@ static INPUT_PORTS_START( sfrush )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON14 ) PORT_NAME("Track 2") PORT_PLAYER(1) /* track 2 */
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON15 ) PORT_NAME("Track 3") PORT_PLAYER(1) /* track 3 */
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON16 ) PORT_NAME("Track 4") PORT_PLAYER(1) /* track 4 */
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("1st Gear") PORT_PLAYER(1) /* 1st gear */
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("2nd Gear") PORT_PLAYER(1) /* 2nd gear */
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("3rd Gear") PORT_PLAYER(1) /* 3rd gear */
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("4th Gear") PORT_PLAYER(1) /* 4th gear */
+ PORT_BIT( 0x0f00, IP_ACTIVE_LOW, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, seattle_state, gearshift_r, "GEAR" )
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_VOLUME_DOWN )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_VOLUME_UP )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_START("GEAR")
+ PORT_BIT( 0x1, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("1st Gear") PORT_PLAYER(1) /* 1st gear */
+ PORT_BIT( 0x2, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("2nd Gear") PORT_PLAYER(1) /* 2nd gear */
+ PORT_BIT( 0x4, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("3rd Gear") PORT_PLAYER(1) /* 3rd gear */
+ PORT_BIT( 0x8, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_NAME("4th Gear") PORT_PLAYER(1) /* 4th gear */
+
PORT_MODIFY("IN2")
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED )
@@ -2632,7 +2636,7 @@ GAME( 1996, mace, 0, mace, mace, seattle_state, mace,
GAME( 1997, macea, mace, mace, mace, seattle_state, mace, ROT0, "Atari Games", "Mace: The Dark Age (HDD 1.0a)", MACHINE_SUPPORTS_SAVE )
GAMEL( 1996, sfrush, 0, sfrush, sfrush, seattle_state, sfrush, ROT0, "Atari Games", "San Francisco Rush (boot rom L 1.0)", MACHINE_SUPPORTS_SAVE, layout_sfrush )
GAMEL( 1996, sfrusha, sfrush, sfrush, sfrush, seattle_state, sfrush, ROT0, "Atari Games", "San Francisco Rush (boot rom L 1.06A)", MACHINE_SUPPORTS_SAVE, layout_sfrush )
-GAMEL( 1996, sfrushrk, 0, sfrushrk, sfrushrk, seattle_state, sfrushrk, ROT0, "Atari Games", "San Francisco Rush: The Rock (boot rom L 1.0, GUTS Oct 6 1997 / MAIN Oct 16 1997)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_sfrush )
+GAMEL( 1996, sfrushrk, 0, sfrushrk, sfrushrk, seattle_state, sfrushrk, ROT0, "Atari Games", "San Francisco Rush: The Rock (boot rom L 1.0, GUTS Oct 6 1997 / MAIN Oct 16 1997)", MACHINE_SUPPORTS_SAVE, layout_sfrush )
GAMEL( 1996, sfrushrkw, sfrushrk, sfrushrkw, sfrush, seattle_state, sfrushrk, ROT0, "Atari Games", "San Francisco Rush: The Rock (Wavenet, boot rom L 1.38, GUTS Aug 19 1997 / MAIN Aug 19 1997)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_sfrush )
GAMEL( 1996, sfrushrkwo, sfrushrk, sfrushrkw, sfrush, seattle_state, sfrushrk, ROT0, "Atari Games", "San Francisco Rush: The Rock (Wavenet, boot rom L 1.38, GUTS Aug 6 1997 / MAIN Aug 5 1997)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_sfrush )
GAMEL( 1998, calspeed, 0, calspeed, calspeed, seattle_state, calspeed, ROT0, "Atari Games", "California Speed (Version 2.1a Apr 17 1998, GUTS 1.25 Apr 17 1998 / MAIN Apr 17 1998)", MACHINE_SUPPORTS_SAVE, layout_calspeed )
diff --git a/src/mame/drivers/segac2.cpp b/src/mame/drivers/segac2.cpp
index fe536d93d3e..75f3a1c900c 100644
--- a/src/mame/drivers/segac2.cpp
+++ b/src/mame/drivers/segac2.cpp
@@ -449,10 +449,10 @@ WRITE8_MEMBER(segac2_state::io_portd_w)
D1 : To CN1 pin J. (Coin meter 2)
D0 : To CN1 pin 8. (Coin meter 1)
*/
- //space.machine().bookkeeping().coin_lockout_w(1, data & 0x08);
- //space.machine().bookkeeping().coin_lockout_w(0, data & 0x04);
- space.machine().bookkeeping().coin_counter_w(1, data & 0x02);
- space.machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ //machine().bookkeeping().coin_lockout_w(1, data & 0x08);
+ //machine().bookkeeping().coin_lockout_w(0, data & 0x04);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
}
WRITE8_MEMBER(segac2_state::io_porth_w)
@@ -497,7 +497,7 @@ WRITE8_MEMBER(segac2_state::control_w)
data &= 0x0f;
/* bit 0 controls display enable */
- //segac2_enable_display(space.machine(), ~data & 1);
+ //segac2_enable_display(machine(), ~data & 1);
m_segac2_enable_display = ~data & 1;
/* bit 1 resets the protection */
@@ -587,8 +587,8 @@ WRITE8_MEMBER(segac2_state::counter_timer_w)
break;
case 0x10: /* coin counter */
-// space.machine().bookkeeping().coin_counter_w(0,1);
-// space.machine().bookkeeping().coin_counter_w(0,0);
+// machine().bookkeeping().coin_counter_w(0,1);
+// machine().bookkeeping().coin_counter_w(0,0);
break;
case 0x12: /* set coinage info -- followed by two 4-bit values */
diff --git a/src/mame/drivers/segag80r.cpp b/src/mame/drivers/segag80r.cpp
index 5622b9e2bcd..079a86fa008 100644
--- a/src/mame/drivers/segag80r.cpp
+++ b/src/mame/drivers/segag80r.cpp
@@ -317,11 +317,11 @@ WRITE8_MEMBER(segag80r_state::sindbadm_misc_w)
/* the data lines are flipped */
WRITE8_MEMBER(segag80r_state::sindbadm_sn1_SN76496_w)
{
- m_sn1->write(space, offset, BITSWAP8(data, 0,1,2,3,4,5,6,7));
+ m_sn1->write(space, offset, bitswap<8>(data, 0,1,2,3,4,5,6,7));
}
WRITE8_MEMBER(segag80r_state::sindbadm_sn2_SN76496_w)
{
- m_sn2->write(space, offset, BITSWAP8(data, 0,1,2,3,4,5,6,7));
+ m_sn2->write(space, offset, bitswap<8>(data, 0,1,2,3,4,5,6,7));
}
diff --git a/src/mame/drivers/segaorun.cpp b/src/mame/drivers/segaorun.cpp
index fcd8de73381..f6a59e4a640 100644
--- a/src/mame/drivers/segaorun.cpp
+++ b/src/mame/drivers/segaorun.cpp
@@ -2964,13 +2964,13 @@ DRIVER_INIT_MEMBER(segaorun_state,outrunb)
uint16_t *word = (uint16_t *)memregion("maincpu")->base();
uint32_t length = memregion("maincpu")->bytes() / 2;
for (uint32_t i = 0; i < length; i++)
- word[i] = BITSWAP16(word[i], 15,14,11,12,13,10,9,8,6,7,5,4,3,2,1,0);
+ word[i] = bitswap<16>(word[i], 15,14,11,12,13,10,9,8,6,7,5,4,3,2,1,0);
// sub CPU: swap bits 14,15 and 2,3
word = (uint16_t *)memregion("subcpu")->base();
length = memregion("subcpu")->bytes() / 2;
for (uint32_t i = 0; i < length; i++)
- word[i] = BITSWAP16(word[i], 14,15,13,12,11,10,9,8,7,6,5,4,2,3,1,0);
+ word[i] = bitswap<16>(word[i], 14,15,13,12,11,10,9,8,7,6,5,4,2,3,1,0);
// road gfx
// rom a-2.bin: swap bits 6,7
@@ -2979,15 +2979,15 @@ DRIVER_INIT_MEMBER(segaorun_state,outrunb)
length = memregion("gfx3")->bytes() / 2;
for (uint32_t i = 0; i < length; i++)
{
- byte[i] = BITSWAP8(byte[i], 6,7,5,4,3,2,1,0);
- byte[i+length] = BITSWAP8(byte[i+length], 7,5,6,4,3,2,1,0);
+ byte[i] = bitswap<8>(byte[i], 6,7,5,4,3,2,1,0);
+ byte[i+length] = bitswap<8>(byte[i+length], 7,5,6,4,3,2,1,0);
}
// Z80 code: swap bits 5,6
byte = memregion("soundcpu")->base();
length = memregion("soundcpu")->bytes();
for (uint32_t i = 0; i < length; i++)
- byte[i] = BITSWAP8(byte[i], 7,5,6,4,3,2,1,0);
+ byte[i] = bitswap<8>(byte[i], 7,5,6,4,3,2,1,0);
}
DRIVER_INIT_MEMBER(segaorun_state,shangon)
diff --git a/src/mame/drivers/segas16b.cpp b/src/mame/drivers/segas16b.cpp
index 19aef83036c..4e0ec52c7f7 100644
--- a/src/mame/drivers/segas16b.cpp
+++ b/src/mame/drivers/segas16b.cpp
@@ -3829,7 +3829,7 @@ void segas16b_state::tilemap_16b_fpointbl_fill_latch(int i, uint16_t* latched_pa
else if (i == 1)
{
// 6661 vs 1666
- latched_pageselect[i] = BITSWAP16(m_bootleg_page[3] ,3, 2, 1, 0 , 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 ) ;
+ latched_pageselect[i] = bitswap<16>(m_bootleg_page[3] ,3, 2, 1, 0 , 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 ) ;
latched_yscroll[i] = m_bootleg_scroll[0x10/2]+2;
latched_xscroll[i] = -m_bootleg_scroll[0x18/2]-1;
}
@@ -9021,7 +9021,7 @@ DRIVER_INIT_MEMBER(segas16b_state, fpointbla)
for (int i = 0;i < 0x10000;i++)
{
- m_decrypted_opcodes[i] = BITSWAP16(rom[i], 8,9,10,11,12,13,14,15, 0, 1, 2, 3, 4, 5, 6, 7);
+ m_decrypted_opcodes[i] = bitswap<16>(rom[i], 8,9,10,11,12,13,14,15, 0, 1, 2, 3, 4, 5, 6, 7);
}
}
@@ -9372,14 +9372,14 @@ WRITE16_MEMBER( isgsm_state::data_w )
// 8-bit rotation - used by bloxeed
switch (m_data_type & 0xe0)
{
- case 0x00: data = BITSWAP8(data,0,7,6,5,4,3,2,1); break;
- case 0x20: data = BITSWAP8(data,7,6,5,4,3,2,1,0); break;
- case 0x40: data = BITSWAP8(data,6,5,4,3,2,1,0,7); break;
- case 0x60: data = BITSWAP8(data,5,4,3,2,1,0,7,6); break;
- case 0x80: data = BITSWAP8(data,4,3,2,1,0,7,6,5); break;
- case 0xa0: data = BITSWAP8(data,3,2,1,0,7,6,5,4); break;
- case 0xc0: data = BITSWAP8(data,2,1,0,7,6,5,4,3); break;
- case 0xe0: data = BITSWAP8(data,1,0,7,6,5,4,3,2); break;
+ case 0x00: data = bitswap<8>(data,0,7,6,5,4,3,2,1); break;
+ case 0x20: data = bitswap<8>(data,7,6,5,4,3,2,1,0); break;
+ case 0x40: data = bitswap<8>(data,6,5,4,3,2,1,0,7); break;
+ case 0x60: data = bitswap<8>(data,5,4,3,2,1,0,7,6); break;
+ case 0x80: data = bitswap<8>(data,4,3,2,1,0,7,6,5); break;
+ case 0xa0: data = bitswap<8>(data,3,2,1,0,7,6,5,4); break;
+ case 0xc0: data = bitswap<8>(data,2,1,0,7,6,5,4,3); break;
+ case 0xe0: data = bitswap<8>(data,1,0,7,6,5,4,3,2); break;
}
}
@@ -9455,14 +9455,14 @@ WRITE16_MEMBER( isgsm_state::data_w )
// 8-bit rotation - used by tetris
switch (m_data_type & 0xe0)
{
- case 0x00: byte = BITSWAP8(byte,0,7,6,5,4,3,2,1); break;
- case 0x20: byte = BITSWAP8(byte,7,6,5,4,3,2,1,0); break;
- case 0x40: byte = BITSWAP8(byte,6,5,4,3,2,1,0,7); break;
- case 0x60: byte = BITSWAP8(byte,5,4,3,2,1,0,7,6); break;
- case 0x80: byte = BITSWAP8(byte,4,3,2,1,0,7,6,5); break;
- case 0xa0: byte = BITSWAP8(byte,3,2,1,0,7,6,5,4); break;
- case 0xc0: byte = BITSWAP8(byte,2,1,0,7,6,5,4,3); break;
- case 0xe0: byte = BITSWAP8(byte,1,0,7,6,5,4,3,2); break;
+ case 0x00: byte = bitswap<8>(byte,0,7,6,5,4,3,2,1); break;
+ case 0x20: byte = bitswap<8>(byte,7,6,5,4,3,2,1,0); break;
+ case 0x40: byte = bitswap<8>(byte,6,5,4,3,2,1,0,7); break;
+ case 0x60: byte = bitswap<8>(byte,5,4,3,2,1,0,7,6); break;
+ case 0x80: byte = bitswap<8>(byte,4,3,2,1,0,7,6,5); break;
+ case 0xa0: byte = bitswap<8>(byte,3,2,1,0,7,6,5,4); break;
+ case 0xc0: byte = bitswap<8>(byte,2,1,0,7,6,5,4,3); break;
+ case 0xe0: byte = bitswap<8>(byte,1,0,7,6,5,4,3,2); break;
}
}
@@ -9510,7 +9510,7 @@ WRITE16_MEMBER( isgsm_state::cart_security_high_w )
uint32_t isgsm_state::shinfz_security(uint32_t input)
{
- return BITSWAP32(input, 19, 20, 25, 26, 15, 0, 16, 2, 8, 9, 13, 14, 31, 21, 7, 18, 11, 30, 22, 17, 3, 4, 12, 28, 29, 5, 27, 10, 23, 24, 1, 6);
+ return bitswap<32>(input, 19, 20, 25, 26, 15, 0, 16, 2, 8, 9, 13, 14, 31, 21, 7, 18, 11, 30, 22, 17, 3, 4, 12, 28, 29, 5, 27, 10, 23, 24, 1, 6);
}
uint32_t isgsm_state::tetrbx_security(uint32_t input)
@@ -9734,7 +9734,7 @@ DRIVER_INIT_MEMBER(isgsm_state,isgsm)
std::vector<uint16_t> temp(0x20000/2);
uint16_t *rom = (uint16_t *)memregion("bios")->base();
for (int addr = 0; addr < 0x20000/2; addr++)
- temp[addr ^ 0x4127] = BITSWAP16(rom[addr], 6, 14, 4, 2, 12, 10, 8, 0, 1, 9, 11, 13, 3, 5, 7, 15);
+ temp[addr ^ 0x4127] = bitswap<16>(rom[addr], 6, 14, 4, 2, 12, 10, 8, 0, 1, 9, 11, 13, 3, 5, 7, 15);
memcpy(rom, &temp[0], 0x20000);
}
@@ -9745,7 +9745,7 @@ DRIVER_INIT_MEMBER(isgsm_state,shinfz)
std::vector<uint16_t> temp(0x200000/2);
uint16_t *rom = (uint16_t *)memregion("gamecart_rgn")->base();
for (int addr = 0; addr < 0x200000/2; addr++)
- temp[addr ^ 0x68956] = BITSWAP16(rom[addr], 8, 4, 12, 3, 6, 7, 1, 0, 15, 11, 5, 14, 10, 2, 9, 13);
+ temp[addr ^ 0x68956] = bitswap<16>(rom[addr], 8, 4, 12, 3, 6, 7, 1, 0, 15, 11, 5, 14, 10, 2, 9, 13);
memcpy(rom, &temp[0], 0x200000);
m_read_xor = 0x66;
@@ -9759,7 +9759,7 @@ DRIVER_INIT_MEMBER(isgsm_state,tetrbx)
std::vector<uint16_t> temp(0x80000/2);
uint16_t *rom = (uint16_t *)memregion("gamecart_rgn")->base();
for (int addr = 0; addr < 0x80000/2; addr++)
- temp[addr ^ 0x2A6E6] = BITSWAP16(rom[addr], 4, 0, 12, 5, 7, 3, 1, 14, 10, 11, 9, 6, 15, 2, 13, 8);
+ temp[addr ^ 0x2A6E6] = bitswap<16>(rom[addr], 4, 0, 12, 5, 7, 3, 1, 14, 10, 11, 9, 6, 15, 2, 13, 8);
memcpy(rom, &temp[0], 0x80000);
m_read_xor = 0x73;
diff --git a/src/mame/drivers/segaufo.cpp b/src/mame/drivers/segaufo.cpp
index f88c656f852..5d421cc57d2 100644
--- a/src/mame/drivers/segaufo.cpp
+++ b/src/mame/drivers/segaufo.cpp
@@ -375,7 +375,7 @@ WRITE8_MEMBER(ufo_state::ex_stepper_w)
{
// stepper motor sequence is: 6 c 9 3 6 c 9 3..
// which means d0 and d3 are swapped when compared with UFO board hardware
- stepper_w(space, offset, BITSWAP8(data,4,6,5,7,0,2,1,3));
+ stepper_w(space, offset, bitswap<8>(data,4,6,5,7,0,2,1,3));
}
WRITE8_MEMBER(ufo_state::ex_cp_lamps_w)
diff --git a/src/mame/drivers/segaxbd.cpp b/src/mame/drivers/segaxbd.cpp
index 17dd5761480..62fb2b6dae7 100644
--- a/src/mame/drivers/segaxbd.cpp
+++ b/src/mame/drivers/segaxbd.cpp
@@ -580,7 +580,7 @@ READ16_MEMBER( segaxbd_state::rascot_excs_r )
//logerror("%06X:rascot_excs_r(%04X)\n", m_maincpu->pc(), offset*2);
// probably receives commands from the server here
- //return space.machine().rand() & 0xff;
+ //return machine().rand() & 0xff;
return 0xff;
}
diff --git a/src/mame/drivers/seicross.cpp b/src/mame/drivers/seicross.cpp
index 9090f174012..a6caf035189 100644
--- a/src/mame/drivers/seicross.cpp
+++ b/src/mame/drivers/seicross.cpp
@@ -628,7 +628,7 @@ DRIVER_INIT_MEMBER(seicross_state,friskytb)
// this code is in ROM 6.3h, maps to MCU at dxxx
for (int i = 0; i < 0x7800; i++)
{
- m_decrypted_opcodes[i] = BITSWAP8(ROM[i], 6, 7, 5, 4, 3, 2, 0, 1);
+ m_decrypted_opcodes[i] = bitswap<8>(ROM[i], 6, 7, 5, 4, 3, 2, 0, 1);
}
}
diff --git a/src/mame/drivers/selz80.cpp b/src/mame/drivers/selz80.cpp
index 2016a75db8e..86443fed04d 100644
--- a/src/mame/drivers/selz80.cpp
+++ b/src/mame/drivers/selz80.cpp
@@ -185,7 +185,7 @@ WRITE8_MEMBER( selz80_state::scanlines_w )
WRITE8_MEMBER( selz80_state::digit_w )
{
- output().set_digit_value(m_digit, BITSWAP8(data, 3, 2, 1, 0, 7, 6, 5, 4));
+ output().set_digit_value(m_digit, bitswap<8>(data, 3, 2, 1, 0, 7, 6, 5, 4));
}
READ8_MEMBER( selz80_state::kbd_r )
diff --git a/src/mame/drivers/seta2.cpp b/src/mame/drivers/seta2.cpp
index 7da05a4fe57..855c83de125 100644
--- a/src/mame/drivers/seta2.cpp
+++ b/src/mame/drivers/seta2.cpp
@@ -28,12 +28,13 @@ Ordered by Board Year Game By
-------------------------------------------------------------------------------------------
P-FG01-1 1995 Guardians / Denjin Makai II Banpresto
P0-113A 1994 Mobile Suit Gundam EX Revue Banpresto
+P0-121A ; 2MP1-E00 (Ss) 1996 TelePachi Fever Lion Sunsoft
P0-123A 1996 Wakakusamonogatari Mahjong Yonshimai Maboroshi Ware
P0-125A ; KE (Namco) 1996 Kosodate Quiz My Angel Namco
P0-130B ; M-133 (Namco) 1997 Star Audition Namco
P0-136A ; KL (Namco) 1997 Kosodate Quiz My Angel 2 Namco
P-FG-02 1997 Reel'N Quake <unknown>
-P-FG-03 <unknown> Endless Riches E.N.Tiger
+P-FG-03 ???? Endless Riches E.N.Tiger
P0-140B 2000 Funcube Namco
P0-140B 2000 Namco Stars Namco
P0-142A 1999 Puzzle De Bowling MOSS / Nihon System
@@ -424,7 +425,7 @@ WRITE16_MEMBER(seta2_state::reelquak_leds_w)
}
if (ACCESSING_BITS_8_15)
{
- machine().device<ticket_dispenser_device>("ticket")->motor_w(BIT(data, 8)); // ticket dispenser
+ m_dispenser->motor_w(BIT(data, 8)); // ticket dispenser
}
// popmessage("LED %04X", data);
@@ -626,6 +627,79 @@ ADDRESS_MAP_END
/***************************************************************************
+ TelePachi Fever Lion
+***************************************************************************/
+
+WRITE16_MEMBER(seta2_state::telpacfl_lamp1_w)
+{
+ if (ACCESSING_BITS_0_7)
+ {
+ output().set_lamp_value(0, data & 0x0001 ); //
+ output().set_lamp_value(1, data & 0x0002 ); //
+ output().set_lamp_value(2, data & 0x0004 ); //
+ output().set_lamp_value(3, data & 0x0008 ); //
+ output().set_lamp_value(4, data & 0x0010 ); //
+ output().set_lamp_value(5, data & 0x0020 ); //
+ output().set_lamp_value(6, data & 0x0040 ); //
+ output().set_lamp_value(7, data & 0x0080 ); //
+ }
+
+// popmessage("LAMP1 %04X", data);
+}
+
+WRITE16_MEMBER(seta2_state::telpacfl_lamp2_w)
+{
+ if (ACCESSING_BITS_0_7)
+ {
+ output().set_lamp_value( 8, data & 0x0001 ); // on/off lamp (throughout)
+ output().set_lamp_value( 9, data & 0x0002 ); // bet lamp
+ output().set_lamp_value(10, data & 0x0004 ); // payout lamp
+ m_dispenser->motor_w( data & 0x0008 ); // coin out motor
+ machine().bookkeeping().coin_counter_w(0, data & 0x0010); // coin out counter
+ // data & 0x0020 ); // on credit increase
+ }
+
+// popmessage("LAMP2 %04X", data);
+}
+
+WRITE16_MEMBER(seta2_state::telpacfl_lockout_w)
+{
+ if (ACCESSING_BITS_0_7)
+ {
+ machine().bookkeeping().coin_counter_w(1, data & 0x0002); // 100yen in
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x0004); // coin blocker
+ machine().bookkeeping().coin_lockout_w(1, ~data & 0x0008); // 100yen blocker
+ // bits 0x30 ?
+ }
+
+// popmessage("LOCK %04X", data);
+}
+
+static ADDRESS_MAP_START( telpacfl_map, AS_PROGRAM, 16, seta2_state )
+ AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
+ AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
+ AM_RANGE(0x300000, 0x303fff) AM_RAM AM_SHARE("nvram") // NVRAM (Battery Backed)
+ AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW1") // DSW 1
+ AM_RANGE(0x600002, 0x600003) AM_READ_PORT("DSW2") // DSW 2
+ AM_RANGE(0x700000, 0x700001) AM_READ_PORT("COIN") // Coin
+ AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P1") // P1 + Dispenser
+ AM_RANGE(0x700004, 0x700005) AM_READ_PORT("SERVICE") // Service
+ AM_RANGE(0x700006, 0x700007) AM_READ_PORT("UNKNOWN") // (unused?)
+ AM_RANGE(0x700008, 0x700009) AM_WRITE(telpacfl_lamp1_w) // Lamps
+ AM_RANGE(0x70000c, 0x70000d) AM_WRITE(telpacfl_lamp2_w) // ""
+ AM_RANGE(0x800000, 0x800001) AM_WRITE(telpacfl_lockout_w) // Coin Blockers
+ AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
+ AM_RANGE(0xb00000, 0xb3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
+ AM_RANGE(0xb40000, 0xb4ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
+ AM_RANGE(0xb60000, 0xb6003f) AM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers
+ AM_RANGE(0xd00006, 0xd00007) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)
+// AM_RANGE(0xe00000, 0xe00001) AM_WRITE
+ AM_RANGE(0xe00010, 0xe0001f) AM_WRITE(sound_bank_w) // Samples Banks
+ AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
+ADDRESS_MAP_END
+
+
+/***************************************************************************
Funcube series
***************************************************************************/
@@ -1707,7 +1781,7 @@ static INPUT_PORTS_START( reelquak )
PORT_DIPSETTING( 0x0040, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0x0000, "1 Coin/10 Credits" )
- PORT_START("DSW2") // $400302.w PORT_START("DSW2") // $400302.w
+ PORT_START("DSW2") // $400302.w
PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:1") // used
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
@@ -1744,7 +1818,7 @@ static INPUT_PORTS_START( reelquak )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("TICKET") // $400003.b
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("ticket", ticket_dispenser_device, line_r) // ticket sensor
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("dispenser", ticket_dispenser_device, line_r) // ticket sensor
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_NAME("Knock Down") // knock down
@@ -2034,6 +2108,113 @@ INPUT_PORTS_END
/***************************************************************************
+ TelePachi Fever Lion
+***************************************************************************/
+
+static INPUT_PORTS_START( telpacfl )
+ PORT_START("DSW1") // $600001.b ($200020.b)
+ PORT_DIPNAME( 0x0001, 0x0001, "Clear NVRAM" ) PORT_DIPLOCATION("SW1:1")
+ PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0002, 0x0002, "Use Medal Sensor" ) PORT_DIPLOCATION("SW1:2")
+ PORT_DIPSETTING( 0x0000, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x0002, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:3") // used
+ PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:4")
+ PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0008, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:5") // read but unsed?
+ PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:6")
+ PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0040, 0x0040, "Force Hopper?" ) PORT_DIPLOCATION("SW1:7")
+ PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0080, 0x0080, "Freeze Screen" ) PORT_DIPLOCATION("SW1:8")
+ PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+
+ PORT_START("DSW2") // $600003.b ($200021.b)
+ PORT_DIPNAME( 0x000f, 0x000f, "Bonus Multiplier? (Low Hex Digit)" ) PORT_DIPLOCATION("SW2:1,2,3,4")
+ PORT_DIPSETTING( 0x000f, "0" )
+ PORT_DIPSETTING( 0x000e, "1" )
+ PORT_DIPSETTING( 0x000d, "2" )
+ PORT_DIPSETTING( 0x000c, "3" )
+ PORT_DIPSETTING( 0x000b, "4" )
+ PORT_DIPSETTING( 0x000a, "5" )
+ PORT_DIPSETTING( 0x0009, "6" )
+ PORT_DIPSETTING( 0x0008, "7" )
+ PORT_DIPSETTING( 0x0007, "8" )
+ PORT_DIPSETTING( 0x0006, "9" )
+ PORT_DIPSETTING( 0x0005, "A" )
+ PORT_DIPSETTING( 0x0004, "B" )
+ PORT_DIPSETTING( 0x0003, "C" )
+ PORT_DIPSETTING( 0x0002, "D" )
+ PORT_DIPSETTING( 0x0001, "E" )
+ PORT_DIPSETTING( 0x0000, "F" )
+ PORT_DIPNAME( 0x0070, 0x0070, "Bonus Multiplier? (High Hex Digit)" ) PORT_DIPLOCATION("SW2:5,6,7")
+ PORT_DIPSETTING( 0x0070, "0" )
+ PORT_DIPSETTING( 0x0060, "1" )
+ PORT_DIPSETTING( 0x0050, "2" )
+ PORT_DIPSETTING( 0x0040, "3" )
+ PORT_DIPSETTING( 0x0030, "4" )
+ PORT_DIPSETTING( 0x0020, "5" )
+ PORT_DIPSETTING( 0x0010, "6" )
+ PORT_DIPSETTING( 0x0000, "7" )
+ PORT_DIPNAME( 0x0080, 0x0080, "Use Bonus Multiplier?" ) PORT_DIPLOCATION("SW2:8")
+ PORT_DIPSETTING( 0x0080, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( Yes ) )
+
+ PORT_START("COIN") // $700000.w
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN ) // -
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_OTHER ) // coin1 connection
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Reset") // reset switch (clear errors, play sound in sound test)
+ PORT_BIT( 0x0008, IP_ACTIVE_HIGH,IPT_OTHER ) // empty switch (out of medals error when low i.e. メダル切れ)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_OTHER ) // coin2 connection
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_OTHER ) // coin3 connection
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_OTHER ) // coin4 connection
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) // pay out switch
+
+ PORT_START("P1") // $700002.w
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Bet") // bet switch (converts credits into balls)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN ) // -
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_GAMBLE_DOOR ) // door switch
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("dispenser", ticket_dispenser_device, line_r) // coin out switch (medals jam error when stuck i.e. メダルづまり)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN ) // -
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN ) // -
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) // -
+ PORT_BIT( 0x0080, IP_ACTIVE_HIGH,IPT_BUTTON2 ) PORT_NAME("Stop") // stop switch (active high)
+
+ PORT_START("SERVICE") // $700004.w
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5) // coin in switch
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5) // 100yen in switch
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 ) // service switch (next item in service mode)
+ PORT_SERVICE_NO_TOGGLE(0x0008, IP_ACTIVE_LOW ) // test switch
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN ) // -
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN ) // -
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) // -
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_OTHER ) // (freezes the game if high, eventually triggering the watchdog)
+
+ PORT_START("UNKNOWN") // $700006.w
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN ) // -
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN ) // -
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN ) // -
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN ) // -
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN ) // -
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN ) // -
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) // -
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) // -
+
+ PORT_START("KNOB") // $fffd0a (parallel port read)
+ PORT_BIT( 0xff, 0x00, IPT_PADDLE ) PORT_MINMAX(0,0xff) PORT_SENSITIVITY(15) PORT_KEYDELTA(15) PORT_CENTERDELTA(0) PORT_CODE_DEC(KEYCODE_LEFT) PORT_CODE_INC(KEYCODE_RIGHT)
+INPUT_PORTS_END
+
+
+/***************************************************************************
Funcube series
***************************************************************************/
@@ -2444,7 +2625,7 @@ static MACHINE_CONFIG_DERIVED( reelquak, seta2 )
MCFG_TMP68301_OUT_PARALLEL_CB(WRITE16(seta2_state, reelquak_leds_w))
MCFG_NVRAM_ADD_0FILL("nvram")
- MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
+ MCFG_TICKET_DISPENSER_ADD("dispenser", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
// video hardware
MCFG_SCREEN_MODIFY("screen")
@@ -2486,6 +2667,25 @@ static MACHINE_CONFIG_DERIVED( staraudi, seta2 )
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( telpacfl, seta2 )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(telpacfl_map)
+
+ MCFG_DEVICE_MODIFY("tmp68301")
+ MCFG_TMP68301_IN_PARALLEL_CB(IOPORT("KNOB"))
+
+ MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") // not hooked up, seems unused
+
+ MCFG_NVRAM_ADD_0FILL("nvram")
+ MCFG_HOPPER_ADD("dispenser", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
+
+ // video hardware
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0x0, 0x180-1, 0xff, 0x1ef-1)
+ MCFG_VIDEO_START_OVERRIDE(seta2_state,xoffset1)
+MACHINE_CONFIG_END
+
+
/***************************************************************************
Funcube series
***************************************************************************/
@@ -3398,8 +3598,8 @@ Reel'N Quake! is also known to be available on the P-FG-03 PCB which is
ROM_START( reelquak )
ROM_REGION( 0x100000, "maincpu", 0 ) // TMP68301 Code
- ROM_LOAD16_BYTE( "rq_ver1.05.u2", 0x00000, 0x80000, CRC(7740d7a4) SHA1(21c28db5d4d7eea5a2506cb51b58533eba28c2cb) ) /* Should be KF00x002, x = revision */
- ROM_LOAD16_BYTE( "rq_ver1.05.u3", 0x00001, 0x80000, CRC(8c78889e) SHA1(584ba123e9caafdbddc96a4d9b2b6f6994fa84b0) ) /* Should be KF00x004, x = revision */
+ ROM_LOAD16_BYTE( "rq_ver1.05.u2", 0x00000, 0x80000, CRC(7740d7a4) SHA1(21c28db5d4d7eea5a2506cb51b58533eba28c2cb) ) // Should be KF00x002, x = revision
+ ROM_LOAD16_BYTE( "rq_ver1.05.u3", 0x00001, 0x80000, CRC(8c78889e) SHA1(584ba123e9caafdbddc96a4d9b2b6f6994fa84b0) ) // Should be KF00x004, x = revision
ROM_REGION( 0x800000, "sprites", 0 ) // Sprites
ROM_LOAD( "kf-001-005_t42.u16", 0x000000, 0x200000, CRC(25e07d5c) SHA1(dd0818611f39be25dc6f0c737da4e79c6c0f9659) )
@@ -3879,32 +4079,78 @@ ROM_START( trophyh ) /* V1.0 is currently the only known version */
ROM_LOAD( "as1105m01.u18", 0x100000, 0x400000, CRC(633d0df8) SHA1(3401c424f5c207ef438a9269e0c0e7d482771fed) )
ROM_END
+/***************************************************************************
+
+ TelePachi Fever Lion
+ (C) 1996 Sunsoft
+
+ PCB: Sunsoft 2MP1-E00 (P0-121A, serial 0503), similar to Reel'N Quake.
+
+ CPU: Toshiba TMP68301AF-16 (100 Pin PQFP @ U1)
+ Video: Allumer X1-020 9426HK003 (@ U9 - Same as DX-101?)
+ NEC DX-102 (52 Pin PQFP @ U8)
+ Allumer X1-007 505100 (SDIP42 @ U110 - Feeds RGB DACs)
+ Sound: X1-010 (Mitsubishi M60016 Gate Array, 80 Pin PQFP @ U26)
+Inputs: Allumer X1-004 546100 (SDIP52)
+ OSC: 50.0000 MHz (@ X1) & 32.5304 MHz (@ X2)
+ Other: 8 Position Dipswitch x 2 (@ DSW1, DSW2)
+ Push Button
+ Battery (@ BT1)
+ 93C46 EEPROM (@ U101)
+ Jamma Connector
+ GALs - labeled "KC-001C", "KC-002C" (@ U51, U52)
+
+***************************************************************************/
+
+ROM_START( telpacfl )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // TMP68301 Code
+ ROM_LOAD16_BYTE( "mp3_prgeven__u2_v1.0.u2", 0x000000, 0x080000, CRC(9ab450c5) SHA1(57d9118df8a444e295cbda453a7c3238bd672ddd) )
+ ROM_LOAD16_BYTE( "mp3_prgodd__u3_v1.0.u3", 0x000001, 0x080000, CRC(2a324139) SHA1(1812a7a8a2c4e222a1e5c7cb6d39cf7bf7f037db) )
+ // Empty sockets: 27C4001 TBL EVEN (@ U4) & 27C4001 TBL ODD (@ U5)
+
+ ROM_REGION( 0x800000, "sprites", ROMREGION_ERASE00 ) // Sprites
+ ROM_LOAD( "mp3_cg-0__u16_v1.0.u16", 0x000000, 0x200000, CRC(9d8453ba) SHA1(d97240ce68d6e64527930e919710764a7b669cdf) )
+ ROM_LOAD( "mp3_cg-1__u15_v1.0.u15", 0x200000, 0x200000, CRC(8ab83f38) SHA1(5ebc682b80d0d97025a97824a899946712e7acd4) )
+ ROM_LOAD( "mp3_cg-2__u21_v1.0.u21", 0x400000, 0x200000, BAD_DUMP CRC(54dc430b) SHA1(a2e55866249d01f6f2f2dd998421baf9fe0c6972) ) // physically damaged eprom
+ ROM_FILL ( 0x400000, 0x200000, 0 ) // wipe out the bad rom
+ // Empty sockets: 23C16000 (@ U17-20, U22-23)
+
+ ROM_REGION( 0x200000, "x1snd", 0 ) // Samples
+ // Leave 1MB empty (addressable by the chip)
+ ROM_LOAD( "mp3_sound0__u111_v1.0.u111", 0x100000, 0x080000, CRC(711c915e) SHA1(d654a0c158cf54aab5faca913583c5620388aa46) )
+ ROM_LOAD( "mp3_sound1__u112_v1.0.u112", 0x180000, 0x080000, CRC(27fd83cd) SHA1(d0261b2c5354ea17061e71bcea747d70efc18a49) )
+
+ ROM_REGION( 0x117 * 2, "plds", 0 )
+ ROM_LOAD( "kc-001c.u51", 0x000, 0x117, NO_DUMP )
+ ROM_LOAD( "kc-002c.u52", 0x117, 0x117, NO_DUMP )
+ROM_END
-GAME( 1994, gundamex, 0, gundamex, gundamex, seta2_state, 0, ROT0, "Banpresto", "Mobile Suit Gundam EX Revue", 0 )
-GAME( 1995, grdians, 0, grdians, grdians, seta2_state, 0, ROT0, "Winkysoft (Banpresto license)", "Guardians / Denjin Makai II", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1996, mj4simai, 0, mj4simai, mj4simai, seta2_state, 0, ROT0, "Maboroshi Ware", "Wakakusamonogatari Mahjong Yonshimai (Japan)", MACHINE_NO_COCKTAIL )
-GAME( 1996, myangel, 0, myangel, myangel, seta2_state, 0, ROT0, "MOSS / Namco", "Kosodate Quiz My Angel (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1997, myangel2, 0, myangel2, myangel2, seta2_state, 0, ROT0, "MOSS / Namco", "Kosodate Quiz My Angel 2 (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1997, reelquak, 0, reelquak, reelquak, seta2_state, 0, ROT0, "<unknown>", "Reel'N Quake! (Version 1.05)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 199?, endrichs, 0, reelquak, endrichs, seta2_state, 0, ROT0, "E.N.Tiger", "Endless Riches (Ver 1.20)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1997, staraudi, 0, staraudi, staraudi, staraudi_state, 0, ROT0, "Namco", "Star Audition", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1999, pzlbowl, 0, pzlbowl, pzlbowl, seta2_state, 0, ROT0, "MOSS / Nihon System", "Puzzle De Bowling (Japan)", MACHINE_NO_COCKTAIL )
-GAME( 2000, penbros, 0, penbros, penbros, seta2_state, 0, ROT0, "Subsino", "Penguin Brothers (Japan)", MACHINE_NO_COCKTAIL )
-GAME( 2000, penbrosk, penbros, penbrosk, penbros, seta2_state, 0, ROT0, "bootleg", "Penguin Brothers (Japan, bootleg)", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING )
-GAME( 2000, namcostr, 0, namcostr, funcube, seta2_state, 0, ROT0, "Namco", "Namco Stars", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING )
-GAME( 2000, deerhunt, 0, samshoot, deerhunt, seta2_state, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.3", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 2000, deerhunta, deerhunt, samshoot, deerhunt, seta2_state, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.2", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 2000, deerhuntb, deerhunt, samshoot, deerhunt, seta2_state, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.0", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 2000, deerhuntc, deerhunt, samshoot, deerhunt, seta2_state, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V3", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 2000, deerhuntd, deerhunt, samshoot, deerhunt, seta2_state, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V2", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 2000, deerhunte, deerhunt, samshoot, deerhunt, seta2_state, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V1", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 2001, turkhunt, 0, samshoot, turkhunt, seta2_state, 0, ROT0, "Sammy USA Corporation", "Turkey Hunting USA V1.0", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 2001, wschamp, 0, samshoot, wschamp, seta2_state, 0, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V2.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 2001, wschampa, wschamp, samshoot, wschamp, seta2_state, 0, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V1.01", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 2001, wschampb, wschamp, samshoot, wschamp, seta2_state, 0, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V1.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 2002, trophyh, 0, samshoot, trophyh, seta2_state, 0, ROT0, "Sammy USA Corporation", "Trophy Hunting - Bear & Moose V1.0", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 2000, funcube, 0, funcube, funcube, seta2_state, funcube, ROT0, "Namco", "Funcube (v1.5)", MACHINE_NO_COCKTAIL )
-GAME( 2001, funcube2, 0, funcube2, funcube, seta2_state, funcube2, ROT0, "Namco", "Funcube 2 (v1.1)", MACHINE_NO_COCKTAIL )
-GAME( 2001, funcube3, 0, funcube3, funcube, seta2_state, funcube3, ROT0, "Namco", "Funcube 3 (v1.1)", MACHINE_NO_COCKTAIL )
-GAME( 2001, funcube4, 0, funcube2, funcube, seta2_state, funcube2, ROT0, "Namco", "Funcube 4 (v1.0)", MACHINE_NO_COCKTAIL )
-GAME( 2002, funcube5, 0, funcube2, funcube, seta2_state, funcube2, ROT0, "Namco", "Funcube 5 (v1.0)", MACHINE_NO_COCKTAIL )
+GAME( 1994, gundamex, 0, gundamex, gundamex, seta2_state, 0, ROT0, "Banpresto", "Mobile Suit Gundam EX Revue", 0 )
+GAME( 1995, grdians, 0, grdians, grdians, seta2_state, 0, ROT0, "Winkysoft (Banpresto license)", "Guardians / Denjin Makai II", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, mj4simai, 0, mj4simai, mj4simai, seta2_state, 0, ROT0, "Maboroshi Ware", "Wakakusamonogatari Mahjong Yonshimai (Japan)", MACHINE_NO_COCKTAIL )
+GAME( 1996, myangel, 0, myangel, myangel, seta2_state, 0, ROT0, "MOSS / Namco", "Kosodate Quiz My Angel (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1997, myangel2, 0, myangel2, myangel2, seta2_state, 0, ROT0, "MOSS / Namco", "Kosodate Quiz My Angel 2 (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, telpacfl, 0, telpacfl, telpacfl, seta2_state, 0, ROT270, "Sunsoft", "TelePachi Fever Lion (V1.0)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1997, reelquak, 0, reelquak, reelquak, seta2_state, 0, ROT0, "<unknown>", "Reel'N Quake! (Version 1.05)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 199?, endrichs, 0, reelquak, endrichs, seta2_state, 0, ROT0, "E.N.Tiger", "Endless Riches (Ver 1.20)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1997, staraudi, 0, staraudi, staraudi, staraudi_state, 0, ROT0, "Namco", "Star Audition", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1999, pzlbowl, 0, pzlbowl, pzlbowl, seta2_state, 0, ROT0, "MOSS / Nihon System", "Puzzle De Bowling (Japan)", MACHINE_NO_COCKTAIL )
+GAME( 2000, penbros, 0, penbros, penbros, seta2_state, 0, ROT0, "Subsino", "Penguin Brothers (Japan)", MACHINE_NO_COCKTAIL )
+GAME( 2000, penbrosk, penbros, penbrosk, penbros, seta2_state, 0, ROT0, "bootleg", "Penguin Brothers (Japan, bootleg)", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING )
+GAME( 2000, namcostr, 0, namcostr, funcube, seta2_state, 0, ROT0, "Namco", "Namco Stars", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING )
+GAME( 2000, deerhunt, 0, samshoot, deerhunt, seta2_state, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.3", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2000, deerhunta, deerhunt, samshoot, deerhunt, seta2_state, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.2", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2000, deerhuntb, deerhunt, samshoot, deerhunt, seta2_state, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.0", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2000, deerhuntc, deerhunt, samshoot, deerhunt, seta2_state, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V3", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2000, deerhuntd, deerhunt, samshoot, deerhunt, seta2_state, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V2", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2000, deerhunte, deerhunt, samshoot, deerhunt, seta2_state, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V1", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2001, turkhunt, 0, samshoot, turkhunt, seta2_state, 0, ROT0, "Sammy USA Corporation", "Turkey Hunting USA V1.0", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2001, wschamp, 0, samshoot, wschamp, seta2_state, 0, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V2.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2001, wschampa, wschamp, samshoot, wschamp, seta2_state, 0, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V1.01", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2001, wschampb, wschamp, samshoot, wschamp, seta2_state, 0, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V1.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2002, trophyh, 0, samshoot, trophyh, seta2_state, 0, ROT0, "Sammy USA Corporation", "Trophy Hunting - Bear & Moose V1.0", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2000, funcube, 0, funcube, funcube, seta2_state, funcube, ROT0, "Namco", "Funcube (v1.5)", MACHINE_NO_COCKTAIL )
+GAME( 2001, funcube2, 0, funcube2, funcube, seta2_state, funcube2, ROT0, "Namco", "Funcube 2 (v1.1)", MACHINE_NO_COCKTAIL )
+GAME( 2001, funcube3, 0, funcube3, funcube, seta2_state, funcube3, ROT0, "Namco", "Funcube 3 (v1.1)", MACHINE_NO_COCKTAIL )
+GAME( 2001, funcube4, 0, funcube2, funcube, seta2_state, funcube2, ROT0, "Namco", "Funcube 4 (v1.0)", MACHINE_NO_COCKTAIL )
+GAME( 2002, funcube5, 0, funcube2, funcube, seta2_state, funcube2, ROT0, "Namco", "Funcube 5 (v1.0)", MACHINE_NO_COCKTAIL )
diff --git a/src/mame/drivers/sfbonus.cpp b/src/mame/drivers/sfbonus.cpp
index 0ae11cd1b0e..f0f6854c677 100644
--- a/src/mame/drivers/sfbonus.cpp
+++ b/src/mame/drivers/sfbonus.cpp
@@ -5896,14 +5896,14 @@ void sfbonus_state::sfbonus_bitswap(
switch(i & 7)
{
- case 0: x = BITSWAP8(x^xor0, b00,b01,b02,b03,b04,b05,b06,b07); break;
- case 1: x = BITSWAP8(x^xor1, b10,b11,b12,b13,b14,b15,b16,b17); break;
- case 2: x = BITSWAP8(x^xor2, b20,b21,b22,b23,b24,b25,b26,b27); break;
- case 3: x = BITSWAP8(x^xor3, b30,b31,b32,b33,b34,b35,b36,b37); break;
- case 4: x = BITSWAP8(x^xor4, b40,b41,b42,b43,b44,b45,b46,b47); break;
- case 5: x = BITSWAP8(x^xor5, b50,b51,b52,b53,b54,b55,b56,b57); break;
- case 6: x = BITSWAP8(x^xor6, b60,b61,b62,b63,b64,b65,b66,b67); break;
- case 7: x = BITSWAP8(x^xor7, b70,b71,b72,b73,b74,b75,b76,b77); break;
+ case 0: x = bitswap<8>(x^xor0, b00,b01,b02,b03,b04,b05,b06,b07); break;
+ case 1: x = bitswap<8>(x^xor1, b10,b11,b12,b13,b14,b15,b16,b17); break;
+ case 2: x = bitswap<8>(x^xor2, b20,b21,b22,b23,b24,b25,b26,b27); break;
+ case 3: x = bitswap<8>(x^xor3, b30,b31,b32,b33,b34,b35,b36,b37); break;
+ case 4: x = bitswap<8>(x^xor4, b40,b41,b42,b43,b44,b45,b46,b47); break;
+ case 5: x = bitswap<8>(x^xor5, b50,b51,b52,b53,b54,b55,b56,b57); break;
+ case 6: x = bitswap<8>(x^xor6, b60,b61,b62,b63,b64,b65,b66,b67); break;
+ case 7: x = bitswap<8>(x^xor7, b70,b71,b72,b73,b74,b75,b76,b77); break;
}
ROM[i] = x;
diff --git a/src/mame/drivers/sfkick.cpp b/src/mame/drivers/sfkick.cpp
index 26e12a70051..fda6f6bd190 100644
--- a/src/mame/drivers/sfkick.cpp
+++ b/src/mame/drivers/sfkick.cpp
@@ -237,7 +237,7 @@ READ8_MEMBER(sfkick_state::ppi_port_b_r)
{
case 0: return m_in0->read();
case 1: return m_in1->read();
- case 2: return BITSWAP8(m_dial->read(),4,5,6,7,3,2,1,0);
+ case 2: return bitswap<8>(m_dial->read(),4,5,6,7,3,2,1,0);
case 3: return m_dsw1->read();
case 4: return m_dsw2->read();
}
diff --git a/src/mame/drivers/sigmab52.cpp b/src/mame/drivers/sigmab52.cpp
index f3a3cf3c69d..521cb260376 100644
--- a/src/mame/drivers/sigmab52.cpp
+++ b/src/mame/drivers/sigmab52.cpp
@@ -23,7 +23,7 @@
CPU:
- - 2x MC68B09CP ; 6809 CPU @ 2 MHz, from Motorola.
+ - 2x MC68B09P ; 6809 CPU @ 2 MHz, from Motorola.
- 1x HD63484P8 @ 8MHz ; Advanced CRT controller (ACRTC), from Hitachi Semiconductor.
RAM devices:
@@ -110,6 +110,7 @@
TODO:
+ - Verify clocks.
- Improve memory map.
- Layout.
- Bill validator.
@@ -132,10 +133,6 @@
#include "sigmab52.lh"
-#define MAIN_CLOCK XTAL_18MHz
-#define SEC_CLOCK XTAL_8MHz
-#define AUX_CLOCK XTAL_3_579545MHz
-
class sigmab52_state : public driver_device
{
public:
@@ -578,16 +575,16 @@ void sigmab52_state::machine_reset()
static MACHINE_CONFIG_START( jwildb52 )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M6809, MAIN_CLOCK/9) /* 2 MHz */
+ MCFG_CPU_ADD("maincpu", MC6809, XTAL_8MHz)
MCFG_CPU_PROGRAM_MAP(jwildb52_map)
- MCFG_CPU_ADD("audiocpu", M6809, MAIN_CLOCK/9) /* 2 MHz */
+ MCFG_CPU_ADD("audiocpu", MC6809, XTAL_8MHz)
MCFG_CPU_PROGRAM_MAP(sound_prog_map)
- MCFG_DEVICE_ADD("6840ptm_1", PTM6840, MAIN_CLOCK/9) // FIXME
+ MCFG_DEVICE_ADD("6840ptm_1", PTM6840, XTAL_8MHz/4) // FIXME
MCFG_PTM6840_IRQ_CB(INPUTLINE("maincpu", M6809_IRQ_LINE))
- MCFG_DEVICE_ADD("6840ptm_2", PTM6840, MAIN_CLOCK/18) // FIXME
+ MCFG_DEVICE_ADD("6840ptm_2", PTM6840, XTAL_8MHz/8) // FIXME
MCFG_PTM6840_IRQ_CB(WRITELINE(sigmab52_state, ptm2_irq))
MCFG_NVRAM_ADD_NO_FILL("nvram")
@@ -600,7 +597,7 @@ static MACHINE_CONFIG_START( jwildb52 )
MCFG_SCREEN_UPDATE_DEVICE("hd63484", hd63484_device, update_screen)
MCFG_SCREEN_PALETTE("palette")
- MCFG_HD63484_ADD("hd63484", SEC_CLOCK, jwildb52_hd63484_map)
+ MCFG_HD63484_ADD("hd63484", XTAL_8MHz, jwildb52_hd63484_map)
MCFG_PALETTE_ADD("palette", 16)
@@ -609,7 +606,7 @@ static MACHINE_CONFIG_START( jwildb52 )
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
- MCFG_SOUND_ADD("ymsnd", YM3812, AUX_CLOCK)
+ MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_3_579545MHz)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/simpl156.cpp b/src/mame/drivers/simpl156.cpp
index b8229342162..4abff40457a 100644
--- a/src/mame/drivers/simpl156.cpp
+++ b/src/mame/drivers/simpl156.cpp
@@ -1048,7 +1048,7 @@ DRIVER_INIT_MEMBER(simpl156_state,simpl156)
{
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/skimaxx.cpp b/src/mame/drivers/skimaxx.cpp
index 3c621dc4329..89cdd79900f 100644
--- a/src/mame/drivers/skimaxx.cpp
+++ b/src/mame/drivers/skimaxx.cpp
@@ -296,7 +296,7 @@ WRITE32_MEMBER(skimaxx_state::skimaxx_sub_ctrl_w)
*/
READ32_MEMBER(skimaxx_state::skimaxx_analog_r)
{
- return BITSWAP8(ioport(offset ? "Y" : "X")->read(), 0,1,2,3,4,5,6,7);
+ return bitswap<8>(ioport(offset ? "Y" : "X")->read(), 0,1,2,3,4,5,6,7);
}
/*************************************
diff --git a/src/mame/drivers/skyarmy.cpp b/src/mame/drivers/skyarmy.cpp
index fa494e4b695..0f73cb76649 100644
--- a/src/mame/drivers/skyarmy.cpp
+++ b/src/mame/drivers/skyarmy.cpp
@@ -93,7 +93,7 @@ WRITE_LINE_MEMBER(skyarmy_state::flip_screen_y_w)
TILE_GET_INFO_MEMBER(skyarmy_state::get_tile_info)
{
int code = m_videoram[tile_index];
- int attr = BITSWAP8(m_colorram[tile_index], 7, 6, 5, 4, 3, 0, 1, 2) & 7;
+ int attr = bitswap<8>(m_colorram[tile_index], 7, 6, 5, 4, 3, 0, 1, 2) & 7;
SET_TILE_INFO_MEMBER(0, code, attr, 0);
}
@@ -158,7 +158,7 @@ uint32_t skyarmy_state::screen_update(screen_device &screen, bitmap_ind16 &bitma
for (offs = 0 ; offs < 0x40; offs+=4)
{
- pal = BITSWAP8(m_spriteram[offs+2], 7, 6, 5, 4, 3, 0, 1, 2) & 7;
+ pal = bitswap<8>(m_spriteram[offs+2], 7, 6, 5, 4, 3, 0, 1, 2) & 7;
sx = m_spriteram[offs+3];
sy = 240-(m_spriteram[offs]+1);
diff --git a/src/mame/drivers/smsmcorp.cpp b/src/mame/drivers/smsmcorp.cpp
index 7eb2ced7cb8..e081df52254 100644
--- a/src/mame/drivers/smsmcorp.cpp
+++ b/src/mame/drivers/smsmcorp.cpp
@@ -846,6 +846,35 @@ ROM_START( trvhanga )
ROM_LOAD( "dmpal14h4nc.145.bin", 0x000000, 0x00003c, CRC(ab2af8de) SHA1(775495d47435c23eecf3defba15f5ca890836354) )
ROM_END
+
+ROM_START( sms4in1 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "set4_u19_2764.bin", 0xf8000, 0x02000, CRC(6f6116b9) SHA1(f91412ca9b911e2a822dab91c96e5f655e7ebb1b) )
+ ROM_LOAD( "set4_u18_2764.bin", 0xfa000, 0x02000, CRC(cc13a404) SHA1(1c00d173706c5e88cee69f9c52efa64dbdf4c15b) )
+ ROM_LOAD( "set4_u17_2764.bin", 0xfc000, 0x02000, CRC(fee0f422) SHA1(56ffafce78cf96c0b91b44a8408909b06499c960) )
+ ROM_LOAD( "set4_u16_2764.bin", 0xfe000, 0x02000, CRC(87ed2873) SHA1(daa13f20cac4a41335d972be6772dff5d7555c10) )
+ ROM_COPY( "maincpu", 0xf8000, 0x08000, 0x8000 )
+
+ ROM_REGION( 0x10000, "soundcpu", 0 )
+ ROM_LOAD( "set4_u26_73184_2732.bin", 0x0000, 0x1000, CRC(e04bb922) SHA1(1df90720f11a5b736273f43272d7727b3020f848) )
+ ROM_RELOAD( 0x1000, 0x1000 )
+ROM_END
+
+
+ROM_START( smsjoker )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ // U19 was not populated
+ ROM_LOAD( "set3_u18_hl_dlxe_080585.bin", 0xfa000, 0x02000, CRC(70614c00) SHA1(90c53e892ece4ceca0476be3653f160a49fd4bc9) )
+ ROM_LOAD( "set3_u17_hl_dlxe_080585.bin", 0xfc000, 0x02000, CRC(872fb1c4) SHA1(a23d093b26c42aa66279d6dfa6d59789f5862d96) )
+ ROM_LOAD( "set3_u16_hl_dlxe_080585.bin", 0xfe000, 0x02000, CRC(786c0792) SHA1(a7eea01c79b0d8baecdbda06ddbca40b39d8513a) )
+ ROM_COPY( "maincpu", 0xf8000, 0x08000, 0x8000 )
+
+ ROM_REGION( 0x10000, "soundcpu", 0 )
+ ROM_LOAD( "set3_u26_26_73184_2732.bin", 0x0000, 0x1000, CRC(e04bb922) SHA1(1df90720f11a5b736273f43272d7727b3020f848) )
+ ROM_RELOAD( 0x1000, 0x1000 )
+ROM_END
+
+
ROM_START( sureshot )
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "u-19 hldly s.shot 020687.u19.a12.bin", 0xf8000, 0x02000, CRC(028bdb61) SHA1(e39c27cc6dec12de5a5e60d544f35448e49baee1) )
@@ -909,7 +938,9 @@ ROM_START( secondch )
ROM_RELOAD( 0x1000, 0x1000 )
ROM_END
-GAME( 1984, trvhang, 0, sms, sms, smsmfg_state, 0, ROT0, "SMS Manufacturing Corp.", "Trivia Hangup (question set 1)", MACHINE_SUPPORTS_SAVE ) /* Version Trivia-1-050185 */
-GAME( 1984, trvhanga, 0, sms, sms, smsmfg_state, 0, ROT0, "SMS Manufacturing Corp.", "Trivia Hangup (question set 2)", MACHINE_NOT_WORKING ) /* Version Trivia-2-011586 */
-GAME( 1985, sureshot, 0, sureshot, sms, smsmfg_state, 0, ROT0, "SMS Manufacturing Corp.", "Sure Shot", MACHINE_SUPPORTS_SAVE )
-GAME( 1985, secondch, 0, sureshot, sms, smsmfg_state, 0, ROT0, "SMS Manufacturing Corp.", "Second Chance", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, trvhang, 0, sms, sms, smsmfg_state, 0, ROT0, "SMS Manufacturing Corp.", "Trivia Hangup (question set 1)", MACHINE_SUPPORTS_SAVE ) /* Version Trivia-1-050185 */
+GAME( 1984, trvhanga, 0, sms, sms, smsmfg_state, 0, ROT0, "SMS Manufacturing Corp.", "Trivia Hangup (question set 2)", MACHINE_NOT_WORKING ) /* Version Trivia-2-011586 */
+GAME( 1984, sms4in1, 0, sureshot, sms, smsmfg_state, 0, ROT0, "SMS Manufacturing Corp.", "4-in-1", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, smsjoker, 0, sureshot, sms, smsmfg_state, 0, ROT0, "SMS Manufacturing Corp.", "Joker Poker With Hi-Lo Double-Up", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, sureshot, 0, sureshot, sms, smsmfg_state, 0, ROT0, "SMS Manufacturing Corp.", "Sure Shot", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, secondch, 0, sureshot, sms, smsmfg_state, 0, ROT0, "SMS Manufacturing Corp.", "Second Chance", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/snes.cpp b/src/mame/drivers/snes.cpp
index 975de6f953e..668cd72e08e 100644
--- a/src/mame/drivers/snes.cpp
+++ b/src/mame/drivers/snes.cpp
@@ -210,7 +210,7 @@ WRITE8_MEMBER( snes_console_state::snes20_hi_w )
{ m_cartslot->chip_write(space, offset, data); return; }
else if (m_cartslot->get_type() == SNES_CX4
&& (offset < 0x400000 && (offset & 0xffff) >= 0x6000 && (offset & 0xffff) < 0x8000)) // hack until we emulate the real CPU
- { CX4_write(space.machine(), (offset & 0xffff) - 0x6000, data); return; }
+ { CX4_write(machine(), (offset & 0xffff) - 0x6000, data); return; }
else if (m_type == SNES_SUFAMITURBO
&& address >= 0x8000 && ((offset >= 0x600000 && offset < 0x640000) || (offset >= 0x700000 && offset < 0x740000)))
{ m_cartslot->write_h(space, offset, data); return; }
diff --git a/src/mame/drivers/snesb.cpp b/src/mame/drivers/snesb.cpp
index 22957062134..5b5461421cd 100644
--- a/src/mame/drivers/snesb.cpp
+++ b/src/mame/drivers/snesb.cpp
@@ -745,7 +745,7 @@ DRIVER_INIT_MEMBER(snesb_state,kinstb)
for (i = 0; i < 0x400000; i++)
{
- rom[i] = BITSWAP8(rom[i], 5, 0, 6, 1, 7, 4, 3, 2);
+ rom[i] = bitswap<8>(rom[i], 5, 0, 6, 1, 7, 4, 3, 2);
}
m_shared_ram = std::make_unique<int8_t[]>(0x100);
@@ -775,23 +775,23 @@ DRIVER_INIT_MEMBER(snesb_state,ffight2b)
if (i < 0x10000) /* 0x00000 - 0x0ffff */
{
- rom[i] = BITSWAP8(rom[i],3,1,6,4,7,0,2,5);
+ rom[i] = bitswap<8>(rom[i],3,1,6,4,7,0,2,5);
}
else if (i < 0x20000) /* 0x10000 - 0x1ffff */
{
- rom[i] = BITSWAP8(rom[i],3,7,0,5,1,6,2,4);
+ rom[i] = bitswap<8>(rom[i],3,7,0,5,1,6,2,4);
}
else if (i < 0x30000) /* 0x20000 - 0x2ffff */
{
- rom[i] = BITSWAP8(rom[i],1,7,6,4,5,2,3,0);
+ rom[i] = bitswap<8>(rom[i],1,7,6,4,5,2,3,0);
}
else if (i < 0x40000) /* 0x30000 - 0x3ffff */
{
- rom[i] = BITSWAP8(rom[i],0,3,2,5,4,6,7,1);
+ rom[i] = bitswap<8>(rom[i],0,3,2,5,4,6,7,1);
}
else if (i < 0x150000)
{
- rom[i] = BITSWAP8(rom[i],6,4,0,5,1,3,2,7);
+ rom[i] = bitswap<8>(rom[i],6,4,0,5,1,3,2,7);
}
}
@@ -816,11 +816,11 @@ DRIVER_INIT_MEMBER(snesb_state,iron)
{
if(i < 0x80000)
{
- rom[i] = BITSWAP8(rom[i]^0xff,2,7,1,6,3,0,5,4);
+ rom[i] = bitswap<8>(rom[i]^0xff,2,7,1,6,3,0,5,4);
}
else
{
- rom[i] = BITSWAP8(rom[i],6,3,0,5,1,4,7,2);
+ rom[i] = bitswap<8>(rom[i],6,3,0,5,1,4,7,2);
}
}
@@ -842,12 +842,12 @@ DRIVER_INIT_MEMBER(snesb_state,denseib)
rom[i] = rom[i] ^ 0xff;
switch (i >> 16)
{
- case 0x00: rom[i] = BITSWAP8(rom[i],1,7,0,6,3,4,5,2); break;
- case 0x01: rom[i] = BITSWAP8(rom[i],3,4,7,2,0,6,5,1); break;
- case 0x02: rom[i] = BITSWAP8(rom[i],5,4,2,1,7,0,6,3); break;
- case 0x03: rom[i] = BITSWAP8(rom[i],0,1,3,7,2,6,5,4); break;
+ case 0x00: rom[i] = bitswap<8>(rom[i],1,7,0,6,3,4,5,2); break;
+ case 0x01: rom[i] = bitswap<8>(rom[i],3,4,7,2,0,6,5,1); break;
+ case 0x02: rom[i] = bitswap<8>(rom[i],5,4,2,1,7,0,6,3); break;
+ case 0x03: rom[i] = bitswap<8>(rom[i],0,1,3,7,2,6,5,4); break;
- default: rom[i] = BITSWAP8(rom[i],4,5,1,0,2,3,7,6); break;
+ default: rom[i] = bitswap<8>(rom[i],4,5,1,0,2,3,7,6); break;
}
}
@@ -872,15 +872,15 @@ DRIVER_INIT_MEMBER(snesb_state,legendsb)
u8 val = rom[i] ^ 0xff;
if (i < 0x10000)
- rom[i] = BITSWAP8(val,6,5,4,2,1,0,3,7); // 0x00000 - 0x0ffff
+ rom[i] = bitswap<8>(val,6,5,4,2,1,0,3,7); // 0x00000 - 0x0ffff
else if (i < 0x20000)
- rom[i] = BITSWAP8(val,6,1,3,5,2,0,7,4); // 0x10000 - 0x1ffff
+ rom[i] = bitswap<8>(val,6,1,3,5,2,0,7,4); // 0x10000 - 0x1ffff
else if (i < 0x30000)
- rom[i] = BITSWAP8(val,2,6,3,0,4,5,7,1); // 0x20000 - 0x2ffff
+ rom[i] = bitswap<8>(val,2,6,3,0,4,5,7,1); // 0x20000 - 0x2ffff
else if (i < 0x40000)
- rom[i] = BITSWAP8(val,5,4,2,7,0,3,6,1); // 0x30000 - 0x3ffff
+ rom[i] = bitswap<8>(val,5,4,2,7,0,3,6,1); // 0x30000 - 0x3ffff
else
- rom[i] = BITSWAP8(val,3,6,0,5,1,4,7,2); // 0x40000 - 0xfffff
+ rom[i] = bitswap<8>(val,3,6,0,5,1,4,7,2); // 0x40000 - 0xfffff
}
// boot vector
@@ -926,19 +926,19 @@ DRIVER_INIT_MEMBER(snesb_state,sblast2b)
if (newAddress < 0x10000)
{
- plainText = BITSWAP8(plainText, 6,3,5,4,2,0,7,1) ^ 0xff;
+ plainText = bitswap<8>(plainText, 6,3,5,4,2,0,7,1) ^ 0xff;
}
else if (newAddress < 0x20000)
{
- plainText = BITSWAP8(plainText, 4,0,7,6,3,1,2,5) ^ 0xff;
+ plainText = bitswap<8>(plainText, 4,0,7,6,3,1,2,5) ^ 0xff;
}
else if (newAddress < 0x30000)
{
- plainText = BITSWAP8(plainText, 5,7,6,1,4,3,0,2);
+ plainText = bitswap<8>(plainText, 5,7,6,1,4,3,0,2);
}
else if (newAddress < 0x40000)
{
- plainText = BITSWAP8(plainText, 3,1,2,0,5,6,4,7) ^ 0xff;
+ plainText = bitswap<8>(plainText, 3,1,2,0,5,6,4,7) ^ 0xff;
}
dst[newAddress] = plainText;
}
@@ -996,19 +996,19 @@ DRIVER_INIT_MEMBER(snesb_state,endless)
dst[i] = data_high[src[j]>>4] | data_low[src[j]&0xf];
if (i >= 0x00000 && i < 0x10000) {
- dst[i] = BITSWAP8(dst[i],2,3,4,1,7,0,6,5);
+ dst[i] = bitswap<8>(dst[i],2,3,4,1,7,0,6,5);
}
if (i >= 0x10000 && i < 0x20000) {
- dst[i] = BITSWAP8(dst[i],1,5,6,0,2,4,7,3) ^ 0xff;
+ dst[i] = bitswap<8>(dst[i],1,5,6,0,2,4,7,3) ^ 0xff;
}
if (i >= 0x20000 && i < 0x30000) {
- dst[i] = BITSWAP8(dst[i],3,0,1,6,4,5,2,7);
+ dst[i] = bitswap<8>(dst[i],3,0,1,6,4,5,2,7);
}
if (i >= 0x30000 && i < 0x40000) {
- dst[i] = BITSWAP8(dst[i],0,4,2,3,5,6,7,1) ^ 0xff;
+ dst[i] = bitswap<8>(dst[i],0,4,2,3,5,6,7,1) ^ 0xff;
}
}
diff --git a/src/mame/drivers/snookr10.cpp b/src/mame/drivers/snookr10.cpp
index 64a44c3dc01..44e618fef70 100644
--- a/src/mame/drivers/snookr10.cpp
+++ b/src/mame/drivers/snookr10.cpp
@@ -209,7 +209,7 @@
digit #3
+-------+ swapped digits 1 & 2
| | +-------+------+
- tile_offset = BITSWAP16((tile_offset & 0xfff),15,14,13,12, 8,9,10,11, 0,1,2,3, 4,5,6,7)
+ tile_offset = bitswap<16>((tile_offset & 0xfff),15,14,13,12, 8,9,10,11, 0,1,2,3, 4,5,6,7)
| | | | | | | | || | | |
inverted inverted|inverted
bitorder bitorder|bitorder
@@ -243,7 +243,7 @@
1st nibble
inverted bitorder
| | | |
- color_index = BITSWAP8(color_index,4,5,6,7,2,3,0,1)
+ color_index = bitswap<8>(color_index,4,5,6,7,2,3,0,1)
<-> <->
2nd nibble
swappeed pairs
@@ -437,7 +437,7 @@
So, the algorithm to properly decrypt the color codes is the following one:
- color_index = BITSWAP8(color_index,7,5,6,4,3,2,1,0)
+ color_index = bitswap<8>(color_index,7,5,6,4,3,2,1,0)
| |
swapped
diff --git a/src/mame/drivers/snowbros.cpp b/src/mame/drivers/snowbros.cpp
index e5e65171cbb..464800fad8f 100644
--- a/src/mame/drivers/snowbros.cpp
+++ b/src/mame/drivers/snowbros.cpp
@@ -2782,7 +2782,7 @@ DRIVER_INIT_MEMBER(snowbros_state,4in1boot)
std::vector<uint8_t> buffer(len);
int i;
for (i = 0;i < len; i++)
- if (i&1) buffer[i] = BITSWAP8(src[i],6,7,5,4,3,2,1,0);
+ if (i&1) buffer[i] = bitswap<8>(src[i],6,7,5,4,3,2,1,0);
else buffer[i] = src[i];
memcpy(src,&buffer[0],len);
@@ -2812,7 +2812,7 @@ DRIVER_INIT_MEMBER(snowbros_state,snowbro3)
std::vector<uint8_t> buffer(len);
int i;
for (i = 0;i < len; i++)
- buffer[i] = src[BITSWAP24(i,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,3,4,1,2,0)];
+ buffer[i] = src[bitswap<24>(i,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,3,4,1,2,0)];
memcpy(src,&buffer[0],len);
}
@@ -2856,7 +2856,7 @@ DRIVER_INIT_MEMBER(snowbros_state,toto)
for (int i = 0; i < len; 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);
}
src = memregion("gfx1")->base();
@@ -2864,7 +2864,7 @@ DRIVER_INIT_MEMBER(snowbros_state,toto)
for (int i = 0; i < len; 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);
}
src = memregion("soundcpu")->base();
@@ -2872,7 +2872,7 @@ DRIVER_INIT_MEMBER(snowbros_state,toto)
for (int i = 0; i < len; 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);
}
// protection? (just return 0x07)
diff --git a/src/mame/drivers/sothello.cpp b/src/mame/drivers/sothello.cpp
index 33b5b2e3af4..28d1e676f80 100644
--- a/src/mame/drivers/sothello.cpp
+++ b/src/mame/drivers/sothello.cpp
@@ -193,7 +193,7 @@ WRITE8_MEMBER(sothello_state::msm_cfg_w)
bit 2 = S2 1
bit 3 = S1 2
*/
- m_msm->playmode_w(BITSWAP8((data>>1), 7,6,5,4,3,0,1,2));
+ m_msm->playmode_w(bitswap<8>((data>>1), 7,6,5,4,3,0,1,2));
m_msm->reset_w(data & 1);
}
diff --git a/src/mame/drivers/speedbal.cpp b/src/mame/drivers/speedbal.cpp
index cc4d2c493ae..c20cfe8dbac 100644
--- a/src/mame/drivers/speedbal.cpp
+++ b/src/mame/drivers/speedbal.cpp
@@ -301,7 +301,7 @@ DRIVER_INIT_MEMBER(speedbal_state,speedbal)
for (int i=0;i<0x200;i++)
{
- int j = BITSWAP16(i, 15,14,13,12,11,10,9,8,0,1,2,3,4,5,6,7);
+ int j = bitswap<16>(i, 15,14,13,12,11,10,9,8,0,1,2,3,4,5,6,7);
memcpy(&temp[i*128], rom+j*128, 128);
}
@@ -380,7 +380,7 @@ DRIVER_INIT_MEMBER(speedbal_state,musicbal)
int bswIdx = xorMask & 3; // ... and the bitswap
// only bits #0, #1, #2 & #7 are affected
- rom[i] = BITSWAP8(rom[i], swapTable[bswIdx][3], 6,5,4,3, swapTable[bswIdx][2], swapTable[bswIdx][1], swapTable[bswIdx][0]) ^ xorTable[addIdx];
+ rom[i] = bitswap<8>(rom[i], swapTable[bswIdx][3], 6,5,4,3, swapTable[bswIdx][2], swapTable[bswIdx][1], swapTable[bswIdx][0]) ^ xorTable[addIdx];
}
DRIVER_INIT_CALL(speedbal);
diff --git a/src/mame/drivers/sshangha.cpp b/src/mame/drivers/sshangha.cpp
index cf3769b8aa9..82079a606b6 100644
--- a/src/mame/drivers/sshangha.cpp
+++ b/src/mame/drivers/sshangha.cpp
@@ -136,7 +136,7 @@ WRITE16_MEMBER(sshangha_state::paletteram16_xbgr_word_be_tilehigh_w)
READ16_MEMBER( sshangha_state::sshangha_protection_region_d_146_r )
{
int real_address = 0x3f4000 + (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;
@@ -145,7 +145,7 @@ READ16_MEMBER( sshangha_state::sshangha_protection_region_d_146_r )
WRITE16_MEMBER( sshangha_state::sshangha_protection_region_d_146_w )
{
int real_address = 0x3f4000 + (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 );
}
@@ -153,7 +153,7 @@ WRITE16_MEMBER( sshangha_state::sshangha_protection_region_d_146_w )
READ16_MEMBER( sshangha_state::sshangha_protection_region_8_146_r )
{
int real_address = 0x3e0000 + (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;
@@ -162,7 +162,7 @@ READ16_MEMBER( sshangha_state::sshangha_protection_region_8_146_r )
WRITE16_MEMBER( sshangha_state::sshangha_protection_region_8_146_w )
{
int real_address = 0x3e0000 + (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/statriv2.cpp b/src/mame/drivers/statriv2.cpp
index 01d9fb118a3..fb8ac5c9188 100644
--- a/src/mame/drivers/statriv2.cpp
+++ b/src/mame/drivers/statriv2.cpp
@@ -1576,7 +1576,7 @@ DRIVER_INIT_MEMBER(statriv2_state, addr_lmhe)
uint32_t address;
for (address = 0; address < length; address++)
- qrom[address] ^= BITSWAP8(address, 4,3,3,2,2,1,1,0);
+ qrom[address] ^= bitswap<8>(address, 4,3,3,2,2,1,1,0);
DRIVER_INIT_CALL(addr_lmh);
}
diff --git a/src/mame/drivers/stv.cpp b/src/mame/drivers/stv.cpp
index 192cbb18320..5d779197bd4 100644
--- a/src/mame/drivers/stv.cpp
+++ b/src/mame/drivers/stv.cpp
@@ -172,7 +172,7 @@ READ8_MEMBER(stv_state::critcrsh_ioga_r)
case 0x01:
case 0x03:
res = ioport(lgnames[offset >> 1])->read();
- res = BITSWAP8(res, 2, 3, 0, 1, 6, 7, 5, 4) & 0xf3;
+ res = bitswap<8>(res, 2, 3, 0, 1, 6, 7, 5, 4) & 0xf3;
res |= (ioport("PORTC")->read() & 0x10) ? 0x0 : 0x4; // x/y hit latch actually
break;
default: res = stv_ioga_r(space,offset); break;
@@ -1897,11 +1897,11 @@ DRIVER_INIT_MEMBER(stv_state,sanjeon)
{
src[x] = src[x]^0xff;
- src[x] = BITSWAP8(src[x],7,2,5,1, 3,6,4,0);
- src[x] = BITSWAP8(src[x],4,6,5,7, 3,2,1,0);
- src[x] = BITSWAP8(src[x],7,6,5,4, 2,3,1,0);
- src[x] = BITSWAP8(src[x],7,0,5,4, 3,2,1,6);
- src[x] = BITSWAP8(src[x],3,6,5,4, 7,2,1,0);
+ src[x] = bitswap<8>(src[x],7,2,5,1, 3,6,4,0);
+ src[x] = bitswap<8>(src[x],4,6,5,7, 3,2,1,0);
+ src[x] = bitswap<8>(src[x],7,6,5,4, 2,3,1,0);
+ src[x] = bitswap<8>(src[x],7,0,5,4, 3,2,1,6);
+ src[x] = bitswap<8>(src[x],3,6,5,4, 7,2,1,0);
}
diff --git a/src/mame/drivers/sun2.cpp b/src/mame/drivers/sun2.cpp
index 740804d1665..5ad02d4b2d8 100644
--- a/src/mame/drivers/sun2.cpp
+++ b/src/mame/drivers/sun2.cpp
@@ -207,7 +207,7 @@ READ16_MEMBER( sun2_state::tl_mmu_r )
switch (offset & 7)
{
case 4:
- //printf("sun2: Read IDPROM @ %x (PC=%x)\n", offset<<1, m_maincpu->pc);
+ //printf("sun2: Read IDPROM @ %x (PC=%x)\n", offset<<1, m_maincpu->pc());
return m_idprom_ptr[(offset>>10) & 0x1f]<<8;
case 5:
@@ -215,7 +215,7 @@ READ16_MEMBER( sun2_state::tl_mmu_r )
return m_diagreg;
case 6:
- //printf("sun2: Read bus error @ PC %x\n", m_maincpu->pc);
+ //printf("sun2: Read bus error @ PC %x\n", m_maincpu->pc());
return m_buserror;
case 7:
@@ -325,7 +325,7 @@ READ16_MEMBER( sun2_state::tl_mmu_r )
if (!machine().side_effect_disabled()) printf("sun2: pagemap entry not valid!\n");
}
- if (!machine().side_effect_disabled()) printf("sun2: Unmapped read @ %08x (FC %d, mask %04x, PC=%x, seg %x)\n", offset<<1, fc, mem_mask, m_maincpu->pc, offset>>15);
+ if (!machine().side_effect_disabled()) printf("sun2: Unmapped read @ %08x (FC %d, mask %04x, PC=%x, seg %x)\n", offset<<1, fc, mem_mask, m_maincpu->pc(), offset>>15);
return 0xffff;
}
@@ -334,7 +334,7 @@ WRITE16_MEMBER( sun2_state::tl_mmu_w )
{
uint8_t fc = m_maincpu->get_fc();
- //printf("sun2: Write %04x (FC %d, mask %04x, PC=%x) to %08x\n", data, fc, mem_mask, m_maincpu->pc, offset<<1);
+ //printf("sun2: Write %04x (FC %d, mask %04x, PC=%x) to %08x\n", data, fc, mem_mask, m_maincpu->pc(), offset<<1);
if (fc == 3)
{
@@ -348,7 +348,7 @@ WRITE16_MEMBER( sun2_state::tl_mmu_w )
case 5:
// XOR to match Table 2-1 in the 2/50 Field Service Manual
- printf("sun2: CPU LEDs to %02x (PC=%x) => ", (data & 0xff) ^ 0xff, m_maincpu->pc);
+ printf("sun2: CPU LEDs to %02x (PC=%x) => ", (data & 0xff) ^ 0xff, m_maincpu->pc());
m_diagreg = data & 0xff;
for (int i = 0; i < 8; i++)
{
@@ -396,11 +396,11 @@ WRITE16_MEMBER( sun2_state::tl_mmu_w )
m_pagemap[page] &= 0x0000ffff;
m_pagemap[page] |= (data<<16);
}
- //printf("entry now %08x (adr %08x PC=%x)\n", m_pagemap[page], (m_pagemap[page] & 0xfffff) << 11, m_maincpu->pc);
+ //printf("entry now %08x (adr %08x PC=%x)\n", m_pagemap[page], (m_pagemap[page] & 0xfffff) << 11, m_maincpu->pc());
return;
case 2: // segment map
- //printf("sun2: Write %02x to segment map at %x (entry %d, user ctx %d PC=%x)\n", data & 0xff, offset<<1, offset>>14, m_context & 7, m_maincpu->pc);
+ //printf("sun2: Write %02x to segment map at %x (entry %d, user ctx %d PC=%x)\n", data & 0xff, offset<<1, offset>>14, m_context & 7, m_maincpu->pc());
m_segmap[m_context & 7][offset >> 14] = data & 0xff;
return;
@@ -452,7 +452,7 @@ WRITE16_MEMBER( sun2_state::tl_mmu_w )
if (!machine().side_effect_disabled()) printf("sun2: pagemap entry not valid!\n");
}
- printf("sun2: Unmapped write %04x (FC %d, mask %04x, PC=%x) to %08x\n", data, fc, mem_mask, m_maincpu->pc, offset<<1);
+ printf("sun2: Unmapped write %04x (FC %d, mask %04x, PC=%x) to %08x\n", data, fc, mem_mask, m_maincpu->pc(), offset<<1);
}
// BW2 video control
diff --git a/src/mame/drivers/sun3.cpp b/src/mame/drivers/sun3.cpp
index ec0835abfa9..868bf01ff74 100644
--- a/src/mame/drivers/sun3.cpp
+++ b/src/mame/drivers/sun3.cpp
@@ -308,7 +308,7 @@ READ32_MEMBER( sun3_state::ram_r )
if (!m_bInBusErr)
{
- //printf("ram_r: bus error on timeout, access to invalid addr %08x, PC=%x\n", offset<<2, m_maincpu->pc);
+ //printf("ram_r: bus error on timeout, access to invalid addr %08x, PC=%x\n", offset<<2, m_maincpu->pc());
//fflush(stdout);
m_buserr = BE_TIMEOUT;
m_maincpu->set_input_line(M68K_LINE_BUSERROR, ASSERT_LINE);
@@ -381,7 +381,7 @@ WRITE32_MEMBER( sun3_state::ram_w )
if (!m_bInBusErr)
{
- //printf("ram_w: bus error on timeout, access to invalid addr %08x, PC=%x\n", offset<<2, m_maincpu->pc);
+ //printf("ram_w: bus error on timeout, access to invalid addr %08x, PC=%x\n", offset<<2, m_maincpu->pc());
fflush(stdout);
m_buserr = BE_TIMEOUT;
m_maincpu->set_input_line(M68K_LINE_BUSERROR, ASSERT_LINE);
@@ -432,22 +432,22 @@ READ32_MEMBER( sun3_state::tl_mmu_r )
return 0;
case 8: // cache tags
- //printf("sun3: read cache tags @ %x, PC = %x\n", offset, m_maincpu->pc);
+ //printf("sun3: read cache tags @ %x, PC = %x\n", offset, m_maincpu->pc());
return m_cache_tags[(offset & 0x3fff) >> 2];
case 9: // cache data
- //printf("sun3: read cache data @ %x, PC = %x\n", offset, m_maincpu->pc);
+ //printf("sun3: read cache data @ %x, PC = %x\n", offset, m_maincpu->pc());
return m_cache_data[(offset & 0x3fff)];
case 10: // flush cache
return 0xffffffff;
case 11: // block copy
- printf("sun3: read block copy @ %x, PC = %x\n", offset, m_maincpu->pc);
+ printf("sun3: read block copy @ %x, PC = %x\n", offset, m_maincpu->pc());
return 0xffffffff;
case 15: // UART bypass
- //printf("sun3: read UART bypass @ %x, PC = %x, mask = %08x\n", offset, m_maincpu->pc, mem_mask);
+ //printf("sun3: read UART bypass @ %x, PC = %x, mask = %08x\n", offset, m_maincpu->pc(), mem_mask);
return 0xffffffff;
}
}
@@ -513,7 +513,7 @@ READ32_MEMBER( sun3_state::tl_mmu_r )
}
else
{
-// if (!machine().side_effect_disabled()) printf("sun3: pagemap entry not valid! (PC=%x)\n", m_maincpu->pc);
+// if (!machine().side_effect_disabled()) printf("sun3: pagemap entry not valid! (PC=%x)\n", m_maincpu->pc());
m_maincpu->set_input_line(M68K_LINE_BUSERROR, ASSERT_LINE);
m_maincpu->set_input_line(M68K_LINE_BUSERROR, CLEAR_LINE);
m_buserr = BE_INVALID;
@@ -521,7 +521,7 @@ READ32_MEMBER( sun3_state::tl_mmu_r )
return 0xffffffff;
}
- if (!machine().side_effect_disabled()) logerror("sun3: Unmapped read @ %08x (FC %d, mask %08x, PC=%x, seg %x)\n", offset<<2, fc, mem_mask, m_maincpu->pc, offset>>15);
+ if (!machine().side_effect_disabled()) logerror("sun3: Unmapped read @ %08x (FC %d, mask %08x, PC=%x, seg %x)\n", offset<<2, fc, mem_mask, m_maincpu->pc(), offset>>15);
return 0xffffffff;
}
@@ -530,7 +530,7 @@ WRITE32_MEMBER( sun3_state::tl_mmu_w )
{
uint8_t fc = m_maincpu->get_fc();
- //printf("sun3: Write %08x (FC %d, mask %08x, PC=%x) to %08x\n", data, fc, mem_mask, m_maincpu->pc, offset<<1);
+ //printf("sun3: Write %08x (FC %d, mask %08x, PC=%x) to %08x\n", data, fc, mem_mask, m_maincpu->pc(), offset<<1);
if (fc == 3) // control space
{
@@ -549,11 +549,11 @@ WRITE32_MEMBER( sun3_state::tl_mmu_w )
//printf("sun3: Write %04x to page map at %x (entry %d), ", data, offset<<2, page);
COMBINE_DATA(&m_pagemap[page]);
- //printf("entry now %08x (adr %08x PC=%x mask %x)\n", m_pagemap[page], (m_pagemap[page] & 0xfffff) << 13, m_maincpu->pc, mem_mask);
+ //printf("entry now %08x (adr %08x PC=%x mask %x)\n", m_pagemap[page], (m_pagemap[page] & 0xfffff) << 13, m_maincpu->pc(), mem_mask);
return;
case 2: // segment map
- //printf("sun3: Write %02x to segment map at %x (entry %d, user ctx %d PC=%x mask %x)\n", (data>>24) & 0xff, offset<<2, (offset & ~0x3c000000)>>15, m_context & 7, m_maincpu->pc, mem_mask);
+ //printf("sun3: Write %02x to segment map at %x (entry %d, user ctx %d PC=%x mask %x)\n", (data>>24) & 0xff, offset<<2, (offset & ~0x3c000000)>>15, m_context & 7, m_maincpu->pc(), mem_mask);
m_segmap[m_context & 7][(offset >> 15) & 0x7ff] = (data>>24) & 0xff;
//printf("segment map[%d][%d] now %x\n", m_context & 7, (offset & ~0x3c000000) >> 15, m_segmap[m_context & 7][(offset & ~0x3c000000) >> 15] = (data>>24) & 0xff);
return;
@@ -564,7 +564,7 @@ WRITE32_MEMBER( sun3_state::tl_mmu_w )
return;
case 4: // enable reg
- //printf("sun3: Write %x to enable, PC=%x\n", data, m_maincpu->pc);
+ //printf("sun3: Write %x to enable, PC=%x\n", data, m_maincpu->pc());
COMBINE_DATA(&m_enable);
return;
@@ -578,7 +578,7 @@ WRITE32_MEMBER( sun3_state::tl_mmu_w )
case 7: // diagnostic reg
m_diag = data >> 24;
#if 0
- printf("sun3: CPU LEDs to %02x (PC=%x) => ", ((data>>24) & 0xff) ^ 0xff, m_maincpu->pc);
+ printf("sun3: CPU LEDs to %02x (PC=%x) => ", ((data>>24) & 0xff) ^ 0xff, m_maincpu->pc());
for (int i = 0; i < 8; i++)
{
if (m_diag & (1<<i))
@@ -595,12 +595,12 @@ WRITE32_MEMBER( sun3_state::tl_mmu_w )
return;
case 8: // cache tags
- //printf("sun3: %08x to cache tags @ %x, PC = %x, mask = %08x\n", data, offset, m_maincpu->pc, mem_mask);
+ //printf("sun3: %08x to cache tags @ %x, PC = %x, mask = %08x\n", data, offset, m_maincpu->pc(), mem_mask);
m_cache_tags[(offset & 0x3fff) >> 2] = data;
return;
case 9: // cache data
- //printf("sun3: %08x to cache data @ %x, PC = %x, mask = %08x\n", data, offset, m_maincpu->pc, mem_mask);
+ //printf("sun3: %08x to cache data @ %x, PC = %x, mask = %08x\n", data, offset, m_maincpu->pc(), mem_mask);
m_cache_data[(offset & 0x3fff)] = data;
return;
@@ -608,11 +608,11 @@ WRITE32_MEMBER( sun3_state::tl_mmu_w )
return;
case 11: // block copy
- printf("sun3: %08x to block copy @ %x, PC = %x\n", data, offset, m_maincpu->pc);
+ printf("sun3: %08x to block copy @ %x, PC = %x\n", data, offset, m_maincpu->pc());
return;
case 15: // UART bypass
- //printf("sun3: %08x to UART bypass @ %x, PC = %x\n", data, offset, m_maincpu->pc);
+ //printf("sun3: %08x to UART bypass @ %x, PC = %x\n", data, offset, m_maincpu->pc());
return;
}
}
@@ -626,7 +626,7 @@ WRITE32_MEMBER( sun3_state::tl_mmu_w )
if ((!(m_pagemap[entry] & PM_WRITEMASK)) ||
((m_pagemap[entry] & PM_SYSMASK) && (fc < M68K_FC_SUPERVISOR_DATA)))
{
- //printf("sun3: write protect MMU error (PC=%x)\n", m_maincpu->pc);
+ //printf("sun3: write protect MMU error (PC=%x)\n", m_maincpu->pc());
m_buserr = BE_PROTERR;
m_maincpu->set_input_line(M68K_LINE_BUSERROR, ASSERT_LINE);
m_maincpu->set_input_line(M68K_LINE_BUSERROR, CLEAR_LINE);
@@ -671,7 +671,7 @@ WRITE32_MEMBER( sun3_state::tl_mmu_w )
return;
}
- logerror("sun3: Unmapped write %04x (FC %d, mask %04x, PC=%x) to %08x\n", data, fc, mem_mask, m_maincpu->pc, offset<<2);
+ logerror("sun3: Unmapped write %04x (FC %d, mask %04x, PC=%x) to %08x\n", data, fc, mem_mask, m_maincpu->pc(), offset<<2);
}
READ32_MEMBER(sun3_state::parity_r)
@@ -783,7 +783,7 @@ WRITE32_MEMBER(sun3_state::irqctrl_w)
READ8_MEMBER(sun3_state::rtc7170_r)
{
- //printf("read 7170 @ %x, PC=%x\n", offset, m_maincpu->pc);
+ //printf("read 7170 @ %x, PC=%x\n", offset, m_maincpu->pc());
return 0xff;
}
@@ -803,7 +803,7 @@ WRITE8_MEMBER(sun3_state::rtc7170_w)
READ32_MEMBER(sun3_state::ecc_r)
{
- //printf("read ECC @ %x, PC=%x\n", offset, m_maincpu->pc);
+ //printf("read ECC @ %x, PC=%x\n", offset, m_maincpu->pc());
// fefc34a
int mbram = (m_ram_size / (1024*1024));
int beoff = (mbram / 32) * 0x10;
diff --git a/src/mame/drivers/suna8.cpp b/src/mame/drivers/suna8.cpp
index 3652152451e..0d580f9f19e 100644
--- a/src/mame/drivers/suna8.cpp
+++ b/src/mame/drivers/suna8.cpp
@@ -76,7 +76,7 @@ DRIVER_INIT_MEMBER(suna8_state,hardhead)
int table = ((i & 0x0c00) >> 10) | ((i & 0x4000) >> 12);
if (swaptable[table])
- rom[i] = BITSWAP8(rom[i], 7,6,5,3,4,2,1,0) ^ 0x58;
+ rom[i] = bitswap<8>(rom[i], 7,6,5,3,4,2,1,0) ^ 0x58;
}
m_bank0d->set_base(memregion("maincpu")->base());
@@ -118,15 +118,15 @@ uint8_t *suna8_state::brickzn_decrypt()
if (data_swap)
{
- x = BITSWAP8(x, 7,6,5,4,3,2,0,1);
- RAM[i] = BITSWAP8(x, 7,2,3,4,5,6,1,0) ^ 0x10;
+ x = bitswap<8>(x, 7,6,5,4,3,2,0,1);
+ RAM[i] = bitswap<8>(x, 7,2,3,4,5,6,1,0) ^ 0x10;
}
if (opcode_swap)
x ^= 0x80;
if (opcode_swap || data_swap)
- x = BITSWAP8(x, 7,2,3,4,5,6,1,0) ^ 0x10;
+ x = bitswap<8>(x, 7,2,3,4,5,6,1,0) ^ 0x10;
decrypt[i] = x;
@@ -255,7 +255,7 @@ rom13: 0?, 1y, 2n, 3n ?,?,?,? (palettes)
int addr = i;
if (swaptable[(i & 0xff000) >> 12])
- addr = (addr & 0xf0000) | BITSWAP16(addr, 15,14,13,12,11,10,9,8,6,7,5,4,3,2,1,0);
+ addr = (addr & 0xf0000) | bitswap<16>(addr, 15,14,13,12,11,10,9,8,6,7,5,4,3,2,1,0);
RAM[i] = decrypt[addr];
}
@@ -277,9 +277,9 @@ rom13: 0?, 1y, 2n, 3n ?,?,?,? (palettes)
x = RAM[i];
- x = BITSWAP8(x, 7,6,5,3,4,2,1,0) ^ 0x41 ^ xortable[table];
+ x = bitswap<8>(x, 7,6,5,3,4,2,1,0) ^ 0x41 ^ xortable[table];
if (swaptable[table])
- x = BITSWAP8(x, 5,6,7,4,3,2,1,0);
+ x = bitswap<8>(x, 5,6,7,4,3,2,1,0);
decrypt[i] = x;
}
@@ -290,7 +290,7 @@ rom13: 0?, 1y, 2n, 3n ?,?,?,? (palettes)
static const uint8_t swaptable[8] = { 1,1,0,1,0,1,1,0 };
if (swaptable[(i & 0x7000) >> 12])
- RAM[i] = BITSWAP8(RAM[i], 5,6,7,4,3,2,1,0) ^ 0x41;
+ RAM[i] = bitswap<8>(RAM[i], 5,6,7,4,3,2,1,0) ^ 0x41;
}
m_bank1->configure_entries(0, 16, memregion("maincpu")->base() + 0x10000, 0x4000);
@@ -335,7 +335,7 @@ DRIVER_INIT_MEMBER(suna8_state,starfigh)
int addr = i;
if (swaptable[(i & 0xff000) >> 12])
- addr = BITSWAP24(addr, 23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,6,7,5,4,3,2,1,0);
+ addr = bitswap<24>(addr, 23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,6,7,5,4,3,2,1,0);
RAM[i] = decrypt[addr];
}
@@ -357,9 +357,9 @@ DRIVER_INIT_MEMBER(suna8_state,starfigh)
x = RAM[i];
- x = BITSWAP8(x, 5,6,7,3,4,2,1,0) ^ 0x45 ^ xortable[table];
+ x = bitswap<8>(x, 5,6,7,3,4,2,1,0) ^ 0x45 ^ xortable[table];
if (swaptable[table])
- x = BITSWAP8(x, 5,6,7,4,3,2,1,0) ^ 0x04;
+ x = bitswap<8>(x, 5,6,7,4,3,2,1,0) ^ 0x04;
decrypt[i] = x;
}
@@ -370,7 +370,7 @@ DRIVER_INIT_MEMBER(suna8_state,starfigh)
static const uint8_t swaptable[8] = { 1,1,0,1,0,1,1,0 };
if (swaptable[(i & 0x7000) >> 12])
- RAM[i] = BITSWAP8(RAM[i], 5,6,7,4,3,2,1,0) ^ 0x45;
+ RAM[i] = bitswap<8>(RAM[i], 5,6,7,4,3,2,1,0) ^ 0x45;
}
@@ -420,7 +420,7 @@ DRIVER_INIT_MEMBER(suna8_state,sparkman)
int addr = i;
if (swaptable[(i & 0xff000) >> 12])
- addr = BITSWAP24(addr, 23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,7,8,6,5,4,3,2,1,0);
+ addr = bitswap<24>(addr, 23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,7,8,6,5,4,3,2,1,0);
RAM[i] = decrypt[addr];
}
@@ -442,9 +442,9 @@ DRIVER_INIT_MEMBER(suna8_state,sparkman)
x = RAM[i];
- x = BITSWAP8(x, 5,6,7,3,4,2,1,0) ^ 0x44 ^ xortable[table];
+ x = bitswap<8>(x, 5,6,7,3,4,2,1,0) ^ 0x44 ^ xortable[table];
if (swaptable[table])
- x = BITSWAP8(x, 5,6,7,4,3,2,1,0) ^ 0x04;
+ x = bitswap<8>(x, 5,6,7,4,3,2,1,0) ^ 0x04;
decrypt[i] = x;
}
@@ -455,7 +455,7 @@ DRIVER_INIT_MEMBER(suna8_state,sparkman)
static const uint8_t swaptable[8] = { 1,1,1,0,1,1,0,1 };
if (swaptable[(i & 0x7000) >> 12])
- RAM[i] = BITSWAP8(RAM[i], 5,6,7,4,3,2,1,0) ^ 0x44;
+ RAM[i] = bitswap<8>(RAM[i], 5,6,7,4,3,2,1,0) ^ 0x44;
}
// !!!!!! PATCHES !!!!!!
@@ -785,7 +785,7 @@ WRITE8_MEMBER(suna8_state::brickzn_multi_w)
56 coin in OK?
70 monster hit NO? 58?
*/
- uint8_t remap = (m_remap_sound ? BITSWAP8(data, 7,6,3,4,5,2,1,0) : data);
+ uint8_t remap = (m_remap_sound ? bitswap<8>(data, 7,6,3,4,5,2,1,0) : data);
m_soundlatch->write(space, 0, remap);
diff --git a/src/mame/drivers/superqix.cpp b/src/mame/drivers/superqix.cpp
index 68e2598cbd3..3808243b2d8 100644
--- a/src/mame/drivers/superqix.cpp
+++ b/src/mame/drivers/superqix.cpp
@@ -423,7 +423,7 @@ READ8_MEMBER(superqix_state_base::nmi_ack_r)
READ8_MEMBER(superqix_state::bootleg_in0_r)
{
- return BITSWAP8(ioport("DSW1")->read(), 0,1,2,3,4,5,6,7);
+ return bitswap<8>(ioport("DSW1")->read(), 0,1,2,3,4,5,6,7);
}
WRITE8_MEMBER(superqix_state::bootleg_flipscreen_w)
@@ -1727,7 +1727,7 @@ DRIVER_INIT_MEMBER(superqix_state_base, perestro)
memcpy(temp,&src[i],16);
for (j = 0;j < 16;j++)
{
- src[i+j] = temp[BITSWAP8(j,7,6,5,4,3,2,0,1)];
+ src[i+j] = temp[bitswap<8>(j,7,6,5,4,3,2,0,1)];
}
}
@@ -1738,7 +1738,7 @@ DRIVER_INIT_MEMBER(superqix_state_base, perestro)
memcpy(temp,&src[i],16);
for (j = 0;j < 16;j++)
{
- src[i+j] = temp[BITSWAP8(j,7,6,5,4,0,1,2,3)];
+ src[i+j] = temp[bitswap<8>(j,7,6,5,4,0,1,2,3)];
}
}
@@ -1749,7 +1749,7 @@ DRIVER_INIT_MEMBER(superqix_state_base, perestro)
memcpy(temp,&src[i],16);
for (j = 0;j < 16;j++)
{
- src[i+j] = temp[BITSWAP8(j,7,6,5,4,1,0,3,2)];
+ src[i+j] = temp[bitswap<8>(j,7,6,5,4,1,0,3,2)];
}
}
}
diff --git a/src/mame/drivers/supertnk.cpp b/src/mame/drivers/supertnk.cpp
index 729b9d52a32..f1bb64dda51 100644
--- a/src/mame/drivers/supertnk.cpp
+++ b/src/mame/drivers/supertnk.cpp
@@ -489,7 +489,7 @@ DRIVER_INIT_MEMBER(supertnk_state,supertnk)
for (offs = 0; offs < len; offs++)
{
- rom[offs] = BITSWAP8(rom[offs],0,1,2,3,4,5,6,7);
+ rom[offs] = bitswap<8>(rom[offs],0,1,2,3,4,5,6,7);
}
}
diff --git a/src/mame/drivers/supracan.cpp b/src/mame/drivers/supracan.cpp
index 99014c2c1ab..8d33114b3be 100644
--- a/src/mame/drivers/supracan.cpp
+++ b/src/mame/drivers/supracan.cpp
@@ -1093,7 +1093,7 @@ WRITE16_MEMBER( supracan_state::supracan_pram_w )
// swap address around so that 64x64 tile can be decoded as 8x8 tiles..
void supracan_state::write_swapped_byte( int offset, uint8_t byte )
{
- int swapped_offset = BITSWAP32(offset, 31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,2,1,0,6,5,4,3);
+ int swapped_offset = bitswap<32>(offset, 31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,2,1,0,6,5,4,3);
m_vram_addr_swapped[swapped_offset] = byte;
}
diff --git a/src/mame/drivers/system16.cpp b/src/mame/drivers/system16.cpp
index 61320395e2d..a28dfe8717a 100644
--- a/src/mame/drivers/system16.cpp
+++ b/src/mame/drivers/system16.cpp
@@ -3947,7 +3947,7 @@ DRIVER_INIT_MEMBER(segas1x_bootleg_state,beautyb)
{
rom[x] = rom[x] ^ 0x2400;
- if (x & 8) rom[x] = BITSWAP16(rom[x],15,14,10,12, 11,13,9,8,
+ if (x & 8) rom[x] = bitswap<16>(rom[x],15,14,10,12, 11,13,9,8,
7,6,5,4, 3,2,1,0 );
}
diff --git a/src/mame/drivers/taito_l.cpp b/src/mame/drivers/taito_l.cpp
index 526f35a2b6b..c8a92b41c96 100644
--- a/src/mame/drivers/taito_l.cpp
+++ b/src/mame/drivers/taito_l.cpp
@@ -2443,7 +2443,7 @@ DRIVER_INIT_MEMBER(taitol_1cpu_state, plottinga)
{
u8 tab[256];
for (unsigned i = 0; i < sizeof(tab); i++)
- tab[i] = BITSWAP8(i, 0, 1, 2, 3, 4, 5, 6, 7);
+ tab[i] = bitswap<8>(i, 0, 1, 2, 3, 4, 5, 6, 7);
for (unsigned i = 0; i < m_main_prg.length(); i++)
m_main_prg[i] = tab[m_main_prg[i]];
diff --git a/src/mame/drivers/taito_x.cpp b/src/mame/drivers/taito_x.cpp
index a95431396ea..96fca4800d0 100644
--- a/src/mame/drivers/taito_x.cpp
+++ b/src/mame/drivers/taito_x.cpp
@@ -387,10 +387,10 @@ WRITE16_MEMBER( taitox_state::cchip1_ram_w )
{
m_cc_port = data;
- space.machine().bookkeeping().coin_lockout_w(1, data & 0x08);
- space.machine().bookkeeping().coin_lockout_w(0, data & 0x04);
- space.machine().bookkeeping().coin_counter_w(1, data & 0x02);
- space.machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_lockout_w(1, data & 0x08);
+ machine().bookkeeping().coin_lockout_w(0, data & 0x04);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
}
else
{
@@ -421,9 +421,9 @@ READ16_MEMBER( taitox_state::cchip1_ram_r )
{
switch (offset)
{
- case 0x00: return space.machine().root_device().ioport("IN0")->read(); /* Player 1 controls + START1 */
- case 0x01: return space.machine().root_device().ioport("IN1")->read(); /* Player 2 controls + START2 */
- case 0x02: return space.machine().root_device().ioport("IN2")->read(); /* COINn + SERVICE1 + TILT */
+ case 0x00: return machine().root_device().ioport("IN0")->read(); /* Player 1 controls + START1 */
+ case 0x01: return machine().root_device().ioport("IN1")->read(); /* Player 2 controls + START2 */
+ case 0x02: return machine().root_device().ioport("IN2")->read(); /* COINn + SERVICE1 + TILT */
case 0x03: return m_cc_port;
}
}
diff --git a/src/mame/drivers/taitotz.cpp b/src/mame/drivers/taitotz.cpp
index 7a04f0da8e0..ae4bedc7ca1 100644
--- a/src/mame/drivers/taitotz.cpp
+++ b/src/mame/drivers/taitotz.cpp
@@ -2949,9 +2949,9 @@ ROM_START( styphp )
ROM_END
GAME( 1999, taitotz, 0, taitotz, taitotz, taitotz_state, 0, ROT0, "Taito", "Type Zero BIOS", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_IS_BIOS_ROOT)
+GAME( 1998, batlgear, taitotz, taitotz, batlgr2, taitotz_state, batlgear, ROT0, "Taito", "Battle Gear (Ver 2.40 A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
GAME( 1999, landhigh, taitotz, landhigh, landhigh, taitotz_state, landhigh, ROT0, "Taito", "Landing High Japan (Ver 2.01 OK)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
GAME( 1999, landhigha, landhigh, landhigh, landhigh, taitotz_state, landhigha,ROT0, "Taito", "Landing High Japan (Ver 2.02 O)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
-GAME( 1999, batlgear, taitotz, taitotz, batlgr2, taitotz_state, batlgear, ROT0, "Taito", "Battle Gear (Ver 2.40 A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
GAME( 1999, pwrshovl, taitotz, taitotz, pwrshovl, taitotz_state, pwrshovl, ROT0, "Taito", "Power Shovel ni Norou!! - Power Shovel Simulator (v2.07J)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 1999/8/5 19:13:35
GAME( 1999, pwrshovla, pwrshovl, taitotz, pwrshovl, taitotz_state, pwrshovl, ROT0, "Taito", "Power Shovel ni Norou!! - Power Shovel Simulator (v2.07J, alt)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // seem to be some differences in drive content, but identifies as the same revision, is it just user data changes??
GAME( 2000, batlgr2, taitotz, taitotz, batlgr2, taitotz_state, batlgr2, ROT0, "Taito", "Battle Gear 2 (v2.04J)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mame/drivers/tandy1t.cpp b/src/mame/drivers/tandy1t.cpp
index 657dc23b197..174858595ab 100644
--- a/src/mame/drivers/tandy1t.cpp
+++ b/src/mame/drivers/tandy1t.cpp
@@ -408,7 +408,7 @@ READ8_MEMBER( tandy1000_state::tandy1000_bank_r )
{
uint8_t data = 0xFF;
- logerror( "%s: tandy1000_bank_r: offset = %x\n", space.machine().describe_context(), offset );
+ logerror( "%s: tandy1000_bank_r: offset = %x\n", machine().describe_context(), offset );
switch( offset )
{
@@ -423,7 +423,7 @@ READ8_MEMBER( tandy1000_state::tandy1000_bank_r )
WRITE8_MEMBER( tandy1000_state::tandy1000_bank_w )
{
- logerror( "%s: tandy1000_bank_w: offset = %x, data = %02x\n", space.machine().describe_context(), offset, data );
+ logerror( "%s: tandy1000_bank_w: offset = %x, data = %02x\n", machine().describe_context(), offset, data );
switch( offset )
{
diff --git a/src/mame/drivers/tasman.cpp b/src/mame/drivers/tasman.cpp
index d8c9eac7839..c2ad4663d43 100644
--- a/src/mame/drivers/tasman.cpp
+++ b/src/mame/drivers/tasman.cpp
@@ -186,13 +186,13 @@ WRITE8_MEMBER(kongambl_state::eeprom_w)
READ32_MEMBER(kongambl_state::test_r)
{
- return -1;//space.machine().rand();
+ return -1;//machine().rand();
}
/*
READ32_MEMBER(kongambl_state::rng_r)
{
- return space.machine().rand();
+ return machine().rand();
}
*/
diff --git a/src/mame/drivers/tcl.cpp b/src/mame/drivers/tcl.cpp
index e97a409d942..d0fed6c6e3a 100644
--- a/src/mame/drivers/tcl.cpp
+++ b/src/mame/drivers/tcl.cpp
@@ -166,7 +166,7 @@ ROM_START( tcl )
ROM_LOAD( "tcl_pr3.9e", 0x200, 0x100, CRC(50ec383b) SHA1(ae95b92bd3946b40134bcdc22708d5c6b0f4c23e) )
ROM_END
-#define ROL(x,n) (BITSWAP8((x),(7+8-n)&7,(6+8-n)&7,(5+8-n)&7,(4+8-n)&7,(3+8-n)&7,(2+8-n)&7,(1+8-n)&7,(0+8-n)&7))
+#define ROL(x,n) (bitswap<8>((x),(7+8-n)&7,(6+8-n)&7,(5+8-n)&7,(4+8-n)&7,(3+8-n)&7,(2+8-n)&7,(1+8-n)&7,(0+8-n)&7))
#define WRITEDEST( n ) \
dest[idx]=n; \
diff --git a/src/mame/drivers/tec1.cpp b/src/mame/drivers/tec1.cpp
index 1425c2b85db..2a914bd4f1d 100644
--- a/src/mame/drivers/tec1.cpp
+++ b/src/mame/drivers/tec1.cpp
@@ -145,7 +145,7 @@ WRITE8_MEMBER( tec1_state::tec1_segment_w )
d1 segment f
d0 segment a */
- m_segment = BITSWAP8(data, 4, 2, 1, 6, 7, 5, 3, 0);
+ m_segment = bitswap<8>(data, 4, 2, 1, 6, 7, 5, 3, 0);
}
WRITE8_MEMBER( tec1_state::tec1_digit_w )
diff --git a/src/mame/drivers/techno.cpp b/src/mame/drivers/techno.cpp
index eba5c5ef94b..e2b245a6cfd 100644
--- a/src/mame/drivers/techno.cpp
+++ b/src/mame/drivers/techno.cpp
@@ -90,12 +90,12 @@ ADDRESS_MAP_END
WRITE16_MEMBER( techno_state::disp1_w )
{
- output().set_digit_value(m_digit, BITSWAP16(data, 12, 10, 8, 14, 13, 9, 11, 15, 7, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(m_digit, bitswap<16>(data, 12, 10, 8, 14, 13, 9, 11, 15, 7, 6, 5, 4, 3, 2, 1, 0));
}
WRITE16_MEMBER( techno_state::disp2_w )
{
- output().set_digit_value(m_digit+30, BITSWAP16(data, 12, 10, 8, 14, 13, 9, 11, 15, 7, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(m_digit+30, bitswap<16>(data, 12, 10, 8, 14, 13, 9, 11, 15, 7, 6, 5, 4, 3, 2, 1, 0));
}
WRITE16_MEMBER( techno_state::sound_w )
diff --git a/src/mame/drivers/tek440x.cpp b/src/mame/drivers/tek440x.cpp
index 4096b6ca375..babe0752852 100644
--- a/src/mame/drivers/tek440x.cpp
+++ b/src/mame/drivers/tek440x.cpp
@@ -53,7 +53,7 @@
#include "speaker.h"
-#define VIDEO_CLOCK 25200000
+#define VIDEO_CLOCK XTAL_25_2MHz
class tek440x_state : public driver_device
{
@@ -188,7 +188,7 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( tek4404 )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M68010, 16666666)
+ MCFG_CPU_ADD("maincpu", M68010, XTAL_40MHz / 4) // MC68010L10
MCFG_CPU_PROGRAM_MAP(maincpu_map)
MCFG_CPU_ADD("fdccpu", M6502, 1000000)
@@ -209,7 +209,7 @@ static MACHINE_CONFIG_START( tek4404 )
MCFG_MOS6551_XTAL(XTAL_1_8432MHz)
MCFG_MOS6551_TXD_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_txd))
- MCFG_DEVICE_ADD("timer", AM9513, 16666666 / 10) // from CPU E output
+ MCFG_DEVICE_ADD("timer", AM9513, XTAL_40MHz / 4 / 10) // from CPU E output
MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, nullptr)
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("aica", mos6551_device, write_rxd))
diff --git a/src/mame/drivers/ticalc1x.cpp b/src/mame/drivers/ticalc1x.cpp
index 5e058597450..00b78aaee1b 100644
--- a/src/mame/drivers/ticalc1x.cpp
+++ b/src/mame/drivers/ticalc1x.cpp
@@ -98,7 +98,7 @@ WRITE16_MEMBER(cmulti8_state::write_r)
WRITE16_MEMBER(cmulti8_state::write_o)
{
// O0-O7: digit segments
- m_o = BITSWAP8(data,0,4,5,6,7,1,2,3);
+ m_o = bitswap<8>(data,0,4,5,6,7,1,2,3);
prepare_display();
}
@@ -719,7 +719,7 @@ WRITE16_MEMBER(ti1000_state::write_o)
// O0-O3,O5(?): input mux
// O0-O7: digit segments
m_inp_mux = (data & 0xf) | (data >> 1 & 0x10);
- m_o = BITSWAP8(data,7,4,3,2,1,0,6,5);
+ m_o = bitswap<8>(data,7,4,3,2,1,0,6,5);
}
READ8_MEMBER(ti1000_state::read_k)
@@ -984,7 +984,7 @@ public:
WRITE16_MEMBER(lilprof78_state::write_r)
{
// update leds state
- u8 seg = BITSWAP8(m_o,7,4,3,2,1,0,6,5) & 0x7f;
+ u8 seg = bitswap<8>(m_o,7,4,3,2,1,0,6,5) & 0x7f;
u16 r = (data & 7) | (data << 1 & 0x1f0);
set_display_segmask(0x1ff, 0x7f);
display_matrix(7, 9, seg, r, false);
@@ -993,7 +993,7 @@ WRITE16_MEMBER(lilprof78_state::write_r)
m_display_state[3] = (r != 0 && m_o & 0x80) ? 0x41 : 0;
// 6th digit is a custom 7seg for math symbols (see wizatron_state write_r)
- m_display_state[6] = BITSWAP8(m_display_state[6],7,6,1,4,2,3,5,0);
+ m_display_state[6] = bitswap<8>(m_display_state[6],7,6,1,4,2,3,5,0);
display_update();
}
@@ -1108,7 +1108,7 @@ WRITE16_MEMBER(dataman_state::write_r)
WRITE16_MEMBER(dataman_state::write_o)
{
// O0-O6: digit segments A-G
- m_o = BITSWAP8(data,7,1,6,5,4,3,2,0) & 0x7f;
+ m_o = bitswap<8>(data,7,1,6,5,4,3,2,0) & 0x7f;
prepare_display();
}
@@ -1297,7 +1297,7 @@ WRITE16_MEMBER(ti30_state::write_o)
// O0-O2,O4-O7: input mux
// O0-O7: digit segments
m_inp_mux = (data & 7) | (data >> 1 & 0x78);
- m_o = BITSWAP8(data,7,5,2,1,4,0,6,3);
+ m_o = bitswap<8>(data,7,5,2,1,4,0,6,3);
}
READ8_MEMBER(ti30_state::read_k)
diff --git a/src/mame/drivers/tispeak.cpp b/src/mame/drivers/tispeak.cpp
index 3fc841eabe3..ad22a585acc 100644
--- a/src/mame/drivers/tispeak.cpp
+++ b/src/mame/drivers/tispeak.cpp
@@ -585,7 +585,7 @@ WRITE16_MEMBER(tispeak_state::snspell_write_o)
// reorder opla to led14seg, plus DP as d14 and AP as d15:
// note: lantutor and snread VFD has an accent triangle instead of DP, and no AP
// E,D,C,G,B,A,I,M,L,K,N,J,[AP],H,F,[DP] (sidenote: TI KLMN = MAME MLNK)
- m_plate = BITSWAP16(data,12,15,10,7,8,9,11,6,13,3,14,0,1,2,4,5);
+ m_plate = bitswap<16>(data,12,15,10,7,8,9,11,6,13,3,14,0,1,2,4,5);
prepare_display();
}
@@ -602,7 +602,7 @@ WRITE16_MEMBER(tispeak_state::snmath_write_o)
{
// reorder opla to led14seg, plus DP as d14 and CT as d15:
// [DP],D,C,H,F,B,I,M,L,K,N,J,[CT],E,G,A (sidenote: TI KLMN = MAME MLNK)
- m_plate = BITSWAP16(data,12,0,10,7,8,9,11,6,3,14,4,13,1,2,5,15);
+ m_plate = bitswap<16>(data,12,0,10,7,8,9,11,6,3,14,4,13,1,2,5,15);
prepare_display();
}
@@ -636,8 +636,7 @@ WRITE16_MEMBER(tispeak_state::snspellc_write_r)
WRITE16_MEMBER(tispeak_state::snspellc_write_o)
{
// O3210: TMS5100 CTL8124
- m_o = BITSWAP8(data,7,6,5,4,3,0,1,2);
- m_tms5100->ctl_w(space, 0, m_o & 0xf);
+ m_tms5100->ctl_w(space, 0, bitswap<4>(data,3,0,1,2));
}
READ8_MEMBER(tispeak_state::snspellc_read_k)
@@ -689,7 +688,7 @@ void tispeak_state::k28_prepare_display(u8 old, u8 data)
WRITE16_MEMBER(tispeak_state::k28_write_r)
{
// R1234: TMS5100 CTL8421
- m_tms5100->ctl_w(space, 0, BITSWAP8(data,0,0,0,0,1,2,3,4) & 0xf);
+ m_tms5100->ctl_w(space, 0, bitswap<4>(data,1,2,3,4));
// R0: TMS5100 PDC pin
m_tms5100->pdc_w(data & 1);
diff --git a/src/mame/drivers/tispellb.cpp b/src/mame/drivers/tispellb.cpp
index a34da8e9603..1c73e9d6692 100644
--- a/src/mame/drivers/tispellb.cpp
+++ b/src/mame/drivers/tispellb.cpp
@@ -150,7 +150,7 @@ void tispellb_state::prepare_display()
WRITE16_MEMBER(tispellb_state::main_write_o)
{
// reorder opla to led14seg, plus DP as d14 and AP as d15, same as snspell
- m_plate = BITSWAP16(data,12,15,10,7,8,9,11,6,13,3,14,0,1,2,4,5);
+ m_plate = bitswap<16>(data,12,15,10,7,8,9,11,6,13,3,14,0,1,2,4,5);
prepare_display();
}
@@ -199,7 +199,7 @@ WRITE16_MEMBER(tispellb_state::sub_write_o)
READ8_MEMBER(tispellb_state::rev1_ctl_r)
{
// main CTL3210 <- sub O6043
- return BITSWAP8(m_sub_o,7,5,2,1,6,0,4,3) & 0xf;
+ return bitswap<4>(m_sub_o,6,0,4,3);
}
WRITE16_MEMBER(tispellb_state::sub_write_r)
diff --git a/src/mame/drivers/tmnt.cpp b/src/mame/drivers/tmnt.cpp
index e351f646682..282073276e3 100644
--- a/src/mame/drivers/tmnt.cpp
+++ b/src/mame/drivers/tmnt.cpp
@@ -4098,7 +4098,7 @@ static void chunky_to_planar(memory_region *rgn)
for (int i = 0; i < len; i++)
{
uint32_t data = little_endianize_int32(ROM[i]);
- data = BITSWAP32(data,31,27,23,19,15,11,7,3,30,26,22,18,14,10,6,2,29,25,21,17,13,9,5,1,28,24,20,16,12,8,4,0);
+ data = bitswap<32>(data,31,27,23,19,15,11,7,3,30,26,22,18,14,10,6,2,29,25,21,17,13,9,5,1,28,24,20,16,12,8,4,0);
ROM[i] = little_endianize_int32(data);
}
}
@@ -4120,9 +4120,9 @@ DRIVER_INIT_MEMBER(tmnt_state, mia)
int B = A & 0x3ff00;
if ((A & 0x3c000) == 0x3c000)
- B |= BITSWAP8(A,7,6,4,2,1,0,5,3);
+ B |= bitswap<8>(A,7,6,4,2,1,0,5,3);
else
- B |= BITSWAP8(A,6,4,2,1,0,7,5,3);
+ B |= bitswap<8>(A,6,4,2,1,0,7,5,3);
gfxdata[A] = temp[B];
}
diff --git a/src/mame/drivers/toaplan2.cpp b/src/mame/drivers/toaplan2.cpp
index e9e9d56cffa..11128be90ef 100644
--- a/src/mame/drivers/toaplan2.cpp
+++ b/src/mame/drivers/toaplan2.cpp
@@ -473,10 +473,10 @@ DRIVER_INIT_MEMBER(toaplan2_state,pipibibsbl)
for (int i = 0; i < (0x040000/2); i += 4)
{
- ROM[i+0] = BITSWAP16(ROM[i+0],0x1,0x5,0x6,0x7,0x8,0x2,0x0,0x9,0xe,0xd,0x4,0x3,0xf,0xa,0xb,0xc);
- ROM[i+1] = BITSWAP16(ROM[i+1],0x5,0x3,0x1,0xf,0xd,0xb,0x9,0x0,0x2,0x4,0x6,0x8,0xa,0xc,0xe,0x7);
- ROM[i+2] = BITSWAP16(ROM[i+2],0xc,0xd,0xe,0xf,0x8,0x9,0xa,0xb,0x3,0x2,0x1,0x0,0x7,0x6,0x5,0x4);
- ROM[i+3] = BITSWAP16(ROM[i+3],0x8,0x9,0xa,0xb,0xc,0xd,0xe,0xf,0x3,0x2,0x1,0x0,0x7,0x6,0x5,0x4);
+ ROM[i+0] = bitswap<16>(ROM[i+0],0x1,0x5,0x6,0x7,0x8,0x2,0x0,0x9,0xe,0xd,0x4,0x3,0xf,0xa,0xb,0xc);
+ ROM[i+1] = bitswap<16>(ROM[i+1],0x5,0x3,0x1,0xf,0xd,0xb,0x9,0x0,0x2,0x4,0x6,0x8,0xa,0xc,0xe,0x7);
+ ROM[i+2] = bitswap<16>(ROM[i+2],0xc,0xd,0xe,0xf,0x8,0x9,0xa,0xb,0x3,0x2,0x1,0x0,0x7,0x6,0x5,0x4);
+ ROM[i+3] = bitswap<16>(ROM[i+3],0x8,0x9,0xa,0xb,0xc,0xd,0xe,0xf,0x3,0x2,0x1,0x0,0x7,0x6,0x5,0x4);
}
}
@@ -4069,10 +4069,10 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( batrider )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) /* 16MHz , 32MHz Oscillator */
+ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) /* 16MHz , 32MHz Oscillator (verified) */
MCFG_CPU_PROGRAM_MAP(batrider_68k_mem)
- MCFG_CPU_ADD("audiocpu", Z80, XTAL_32MHz/8) /* 4MHz , 32MHz Oscillator */
+ MCFG_CPU_ADD("audiocpu", Z80, XTAL_32MHz/6) /* 5.333MHz , 32MHz Oscillator (verified) */
MCFG_CPU_PROGRAM_MAP(batrider_sound_z80_mem)
MCFG_CPU_IO_MAP(batrider_sound_z80_port)
@@ -4109,7 +4109,7 @@ static MACHINE_CONFIG_START( batrider )
MCFG_GENERIC_LATCH_8_ADD("soundlatch3")
MCFG_GENERIC_LATCH_8_ADD("soundlatch4")
- MCFG_YM2151_ADD("ymsnd", XTAL_32MHz/8)
+ MCFG_YM2151_ADD("ymsnd", XTAL_32MHz/8) /* 4MHz , 32MHz Oscillator (verified) */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MCFG_OKIM6295_ADD("oki1", XTAL_32MHz/10, PIN7_HIGH)
diff --git a/src/mame/drivers/toki.cpp b/src/mame/drivers/toki.cpp
index 31e6ccd013c..5d82724f2e3 100644
--- a/src/mame/drivers/toki.cpp
+++ b/src/mame/drivers/toki.cpp
@@ -959,7 +959,7 @@ DRIVER_INIT_MEMBER(toki_state,toki)
memcpy(&buffer[0],ROM,0x20000);
for( i = 0; i < 0x20000; i++ )
{
- ROM[i] = buffer[BITSWAP24(i,23,22,21,20,19,18,17,16,13,14,15,12,11,10,9,8,7,6,5,4,3,2,1,0)];
+ ROM[i] = buffer[bitswap<24>(i,23,22,21,20,19,18,17,16,13,14,15,12,11,10,9,8,7,6,5,4,3,2,1,0)];
}
}
@@ -1014,7 +1014,7 @@ DRIVER_INIT_MEMBER(toki_state,jujuba)
for (i = 0; i < 0x60000/2; i++)
{
- prgrom[i] = BITSWAP16(prgrom[i],15,12,13,14,
+ prgrom[i] = bitswap<16>(prgrom[i],15,12,13,14,
11,10, 9, 8,
7, 6, 5, 3,
4, 2, 1, 0);
@@ -1029,7 +1029,7 @@ DRIVER_INIT_MEMBER(toki_state,jujuba)
memcpy(&buffer[0],ROM,0x20000);
for( i = 0; i < 0x20000; i++ )
{
- ROM[i] = buffer[BITSWAP24(i,23,22,21,20,19,18,17,16,13,14,15,12,11,10,9,8,7,6,5,4,3,2,1,0)];
+ ROM[i] = buffer[bitswap<24>(i,23,22,21,20,19,18,17,16,13,14,15,12,11,10,9,8,7,6,5,4,3,2,1,0)];
}
}
}
diff --git a/src/mame/drivers/tourvis.cpp b/src/mame/drivers/tourvis.cpp
index 05837d2d190..781a7e81f1e 100644
--- a/src/mame/drivers/tourvis.cpp
+++ b/src/mame/drivers/tourvis.cpp
@@ -14,129 +14,7 @@
By now, six known BIOS versions, U4-52 (dumped from a board with-subboard PCB),
U4-55 (dumped from an integrated PCB) and U4-60 (dumped from a board with-subboard PCB).
- Known games (followed by game ID, some are duplicate):
-
- 1943 Kai (65)
- Adventure Island (64)
- Aero Blaster (32)
- After Burner II (46)
- Alice in Wonderland (61)
- Ankoku Densetsu (Legendary Axe II) (33)
- Armed-F (?)
- Ballistix (186)
- Barunba (39)
- Batman (30)
- Be Ball (93)
- * Blodia
- Bomberman (71)
- Bomberman 93 (204)
- Bull Fight (185)
- Burning Angels (49)
- Cadash (203)
- Chozetsurinjin Beraboh Man (Super Foolish Man) (27)
- Chuka Taisen (37)
- Columns (90)
- Coryoon (43)
- * Cross Wiber
- Cyber Core (13)
- Daisempuu (3)
- Dead Moon (?)
- Devil Crash (47)
- Die Hard (73)
- Dodge Ball (194)
- Doraemon Meikyuu Daisakusen (20)
- Doreamon - Nobita's Dorabian Night (Doraemon II, 43)
- Down Load (43)
- Dragon Egg! (98)
- Dragon Saber (65)
- Dragon Spirit (?)
- Drop Rock Hora Hora (12)
- Dungeon Explorer (209)
- * F1 Triple Battle
- Fighting Run (195)
- Final Blaster (29)
- Final Lap Twin (79)
- Final Match Tennis (62)
- Final Soldier (45)
- Formation Soccer (1)
- Gomola Speed (27)
- Gradius (187)
- Gunhed (148)
- Hana Taka Daka (Super Long Nose Goblin) (6)
- * Hatris
- Hit The Ice (97)
- Image Fight (99)
- Jackie Chan (54)
- Jinmu Densho (19)
- Kato & Ken (42)
- Kiki Kaikai (120)
- Knight Rider Special (193)
- Legend Of Hero Tomna (56)
- Makyo Densetsu - The Legendary Axe (40)
- Mashin Eiyuden Wataru (27)
- Mesopotamia (197)
- Mizubaku Daibouken Liquid Kids (10) (marketed as "Parasol Stars II")
- Mr. Heli (23)
- Ninja Ryukenden (10)
- Operation Wolf (26)
- Ordyne (94)
- Out Run (38)
- Override (53)
- Pac-Land (16)
- * Paranoia (18)
- PC Genjin (8)
- PC Genjin 2 (84)
- PC Denjin Punkic Cyborg (201)
- Power Drift (200)
- Power Eleven (83)
- * Power Golf
- Power League IV (?)
- Power Sports (199)
- Power Tennis (183)
- Pro Yakyuu World Stadium '91 (192)
- Psycho Chaser (14)
- Puzzle Boy (57)
- Puzznic (69)
- R-Type II (61)
- * Rabio Lepus Special
- Raiden (111)
- Rastan Saga II (33, possibly incorrect riser)
- Saigo no Nindou (44)
- Saint Dragon (36)
- Salamander (184)
- Shinobi (5)
- Side Arms (2)
- Skweek (89)
- Sokoban World (66)
- Soldier Blade (23)
- Son Son II (80)
- Special Criminal Investigation (58)
- Spin Pair (50)
- Splatterhouse (148)
- Super Star Soldier (42)
- Super Volley ball (9)
- Tatsujin (31)
- Terra Cresta II (27)
- The NewZealand Story (11)
- Thunder Blade (34)
- Tiger Road (10)
- * Titan
- Toilet Kids (196)
- Toy Shop Boys (51)
- Tricky (42)
- * TV Sports
- USA Pro Basketball (206) - marketed as NBA
- Veigues (40)
- Vigilante (8)
- Violent Soldier (no ID, V1 cart)
- Volfied (68)
- W-Ring (21)
- Winning Shot (28)
- World Jockey (202)
- Xevious (?)
-
- Rumored games:
- * Parasol Stars - often been mentioned, but still not confirmed, for Tourvision. For now it's been added from its NEC PC-Engine dump, which it would be likely identical.
+ Known games list can be found in hash/pce_tourvision.xml.
* Denotes Not Dumped
@@ -327,11 +205,13 @@ public:
DECLARE_WRITE8_MEMBER(tourvision_i8155_b_w);
DECLARE_WRITE8_MEMBER(tourvision_i8155_c_w);
DECLARE_WRITE_LINE_MEMBER(tourvision_timer_out);
+
+ DECLARE_DEVICE_IMAGE_LOAD_MEMBER(tourvision_cart);
+
+private:
required_device<cpu_device> m_subcpu;
required_device<generic_slot_device> m_cart;
uint32_t m_rom_size;
-
- DECLARE_DEVICE_IMAGE_LOAD_MEMBER(tourvision_cart);
};
DEVICE_IMAGE_LOAD_MEMBER( tourvision_state, tourvision_cart )
@@ -577,4 +457,4 @@ ROM_START(tourvis)
ROM_END
-GAME( 19??, tourvis, 0, tourvision, tourvision, tourvision_state, pce_common, ROT0, "bootleg (Tourvision)", "Tourvision PCE bootleg", MACHINE_IS_BIOS_ROOT | MACHINE_NOT_WORKING )
+GAME( 19??, tourvis, 0, tourvision, tourvision, tourvision_state, pce_common, ROT0, "bootleg (Tourvision)", "Tourvision PCE bootleg", MACHINE_IS_BIOS_ROOT | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/trackfld.cpp b/src/mame/drivers/trackfld.cpp
index 462be54bfc8..36cdc4f07c4 100644
--- a/src/mame/drivers/trackfld.cpp
+++ b/src/mame/drivers/trackfld.cpp
@@ -1574,7 +1574,7 @@ DRIVER_INIT_MEMBER(trackfld_state, trackfldnz)
/* decrypt program rom */
for (i = 0x6000; i < 0x10000; 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);
}
DRIVER_INIT_MEMBER(trackfld_state,atlantol)
@@ -1627,13 +1627,13 @@ DRIVER_INIT_MEMBER(trackfld_state,wizzquiz)
/* decrypt program rom */
for (i = 0; i < 0x2000; i++)
- ROM[i] = BITSWAP8(ROM[i],0,1,2,3,4,5,6,7);
+ ROM[i] = bitswap<8>(ROM[i],0,1,2,3,4,5,6,7);
ROM = memregion("user1")->base();
/* decrypt questions roms */
for (i = 0; i < 0x40000; i++)
- ROM[i] = BITSWAP8(ROM[i],0,1,2,3,4,5,6,7);
+ ROM[i] = bitswap<8>(ROM[i],0,1,2,3,4,5,6,7);
membank("bank1")->configure_entries(0, 8, ROM, 0x8000);
}
diff --git a/src/mame/drivers/travrusa.cpp b/src/mame/drivers/travrusa.cpp
index 19f2bd3e96b..cb068c27f03 100644
--- a/src/mame/drivers/travrusa.cpp
+++ b/src/mame/drivers/travrusa.cpp
@@ -587,8 +587,8 @@ DRIVER_INIT_MEMBER(travrusa_state,motorace)
/* The first CPU ROM has the address and data lines scrambled */
for (A = 0; A < 0x2000; A++)
{
- j = BITSWAP16(A,15,14,13,9,7,5,3,1,12,10,8,6,4,2,0,11);
- rom[j] = BITSWAP8(buffer[A],2,7,4,1,6,3,0,5);
+ j = bitswap<16>(A,15,14,13,9,7,5,3,1,12,10,8,6,4,2,0,11);
+ rom[j] = bitswap<8>(buffer[A],2,7,4,1,6,3,0,5);
}
}
@@ -599,7 +599,7 @@ DRIVER_INIT_MEMBER(travrusa_state,shtridra)
/* D3/D4 and D5/D6 swapped */
for (A = 0; A < 0x2000; A++)
- rom[A] = BITSWAP8(rom[A],7,5,6,3,4,2,1,0);
+ rom[A] = bitswap<8>(rom[A],7,5,6,3,4,2,1,0);
}
READ8_MEMBER(travrusa_state::shtridrb_port11_r)
diff --git a/src/mame/drivers/tsispch.cpp b/src/mame/drivers/tsispch.cpp
index d118f933ae7..ac131b6956d 100644
--- a/src/mame/drivers/tsispch.cpp
+++ b/src/mame/drivers/tsispch.cpp
@@ -270,19 +270,19 @@ DRIVER_INIT_MEMBER(tsispch_state,prose2k)
uint16_t byte23t;
for (int i = 0; i < 0x600; i+= 3)
{
- byte1t = BITSWAP8(dspsrc[0+i], 0, 1, 2, 3, 4, 5, 6, 7);
+ byte1t = bitswap<8>(dspsrc[0+i], 0, 1, 2, 3, 4, 5, 6, 7);
// here's where things get disgusting: if the first byte was an OP or RT, do the following:
if ((byte1t&0x80) == 0x00) // op or rt instruction
{
- byte23t = BITSWAP16( (((uint16_t)dspsrc[1+i]<<8)|dspsrc[2+i]), 8, 9, 10, 15, 11, 12, 13, 14, 0, 1, 2, 3, 4, 5, 6, 7);
+ byte23t = bitswap<16>( (((uint16_t)dspsrc[1+i]<<8)|dspsrc[2+i]), 8, 9, 10, 15, 11, 12, 13, 14, 0, 1, 2, 3, 4, 5, 6, 7);
}
else if ((byte1t&0xC0) == 0x80) // jp instruction
{
- byte23t = BITSWAP16( (((uint16_t)dspsrc[1+i]<<8)|dspsrc[2+i]), 8, 9, 15, 15, 15, 10, 11, 12, 13, 14, 0, 1, 2, 3, 6, 7);
+ byte23t = bitswap<16>( (((uint16_t)dspsrc[1+i]<<8)|dspsrc[2+i]), 8, 9, 15, 15, 15, 10, 11, 12, 13, 14, 0, 1, 2, 3, 6, 7);
}
else // ld instruction
{
- byte23t = BITSWAP16( (((uint16_t)dspsrc[1+i]<<8)|dspsrc[2+i]), 8, 9, 10, 11, 12, 13, 14, 0, 1, 2, 3, 3, 4, 5, 6, 7);
+ byte23t = bitswap<16>( (((uint16_t)dspsrc[1+i]<<8)|dspsrc[2+i]), 8, 9, 10, 11, 12, 13, 14, 0, 1, 2, 3, 3, 4, 5, 6, 7);
}
*dspprg = byte1t<<24 | byte23t<<8;
diff --git a/src/mame/drivers/twins.cpp b/src/mame/drivers/twins.cpp
index 2f8dc45249f..66d96567f0b 100644
--- a/src/mame/drivers/twins.cpp
+++ b/src/mame/drivers/twins.cpp
@@ -154,13 +154,13 @@ WRITE16_MEMBER(twins_state::twins_pal_w)
dat = m_paletteram[m_paloff];
r = dat & 0x1f;
- r = BITSWAP8(r,7,6,5,0,1,2,3,4);
+ r = bitswap<8>(r,7,6,5,0,1,2,3,4);
g = (dat>>5) & 0x1f;
- g = BITSWAP8(g,7,6,5,0,1,2,3,4);
+ g = bitswap<8>(g,7,6,5,0,1,2,3,4);
b = (dat>>10) & 0x1f;
- b = BITSWAP8(b,7,6,5,0,1,2,3,4);
+ b = bitswap<8>(b,7,6,5,0,1,2,3,4);
m_palette->set_pen_color(m_paloff, pal5bit(r),pal5bit(g),pal5bit(b));
diff --git a/src/mame/drivers/vaportra.cpp b/src/mame/drivers/vaportra.cpp
index 97b54521db3..2fee7ce3501 100644
--- a/src/mame/drivers/vaportra.cpp
+++ b/src/mame/drivers/vaportra.cpp
@@ -864,7 +864,7 @@ DRIVER_INIT_MEMBER(vaportra_state,vaportra)
uint8_t *RAM = memregion("maincpu")->base();
for (int i = 0x00000; i < 0x80000; i++)
- RAM[i] = BITSWAP8(RAM[i],0,6,5,4,3,2,1,7);
+ RAM[i] = bitswap<8>(RAM[i],0,6,5,4,3,2,1,7);
}
/******************************************************************************/
diff --git a/src/mame/drivers/vboy.cpp b/src/mame/drivers/vboy.cpp
index de760174e13..3aabbdaa6df 100644
--- a/src/mame/drivers/vboy.cpp
+++ b/src/mame/drivers/vboy.cpp
@@ -62,7 +62,7 @@
m_font[((woffs) + 0x4000)] = dat; /* normal */ \
m_font[((woffs) + 0x8000) ^ 7] = dat; /* flip y */ \
m_font[((woffs) + 0xc000) ^ 7] = dat; /* flip y */ \
- dat = BITSWAP16(dat,1,0,3,2,5,4,7,6,9,8,11,10,13,12,15,14); \
+ dat = bitswap<16>(dat,1,0,3,2,5,4,7,6,9,8,11,10,13,12,15,14); \
m_font[((woffs) + 0x10000)] = dat; /* flip x */ \
m_font[((woffs) + 0x14000)] = dat; /* flip x */ \
m_font[((woffs) + 0x18000) ^ 7] = dat; /* flip x+y */ \
diff --git a/src/mame/drivers/vcs80.cpp b/src/mame/drivers/vcs80.cpp
index 2fbbcf7fa48..701887f9e91 100644
--- a/src/mame/drivers/vcs80.cpp
+++ b/src/mame/drivers/vcs80.cpp
@@ -178,7 +178,7 @@ WRITE8_MEMBER( vcs80_state::pio_pb_w )
*/
- uint8_t led_data = BITSWAP8(data & 0x7f, 7, 5, 6, 4, 3, 2, 1, 0);
+ uint8_t led_data = bitswap<8>(data & 0x7f, 7, 5, 6, 4, 3, 2, 1, 0);
int digit = m_keylatch;
/* skip middle digit */
diff --git a/src/mame/drivers/vega.cpp b/src/mame/drivers/vega.cpp
index 5f0b3bd8991..3f24fef6303 100644
--- a/src/mame/drivers/vega.cpp
+++ b/src/mame/drivers/vega.cpp
@@ -315,7 +315,7 @@ READ8_MEMBER(vega_state::extern_r)
{
/* AY 3-8910 */
m_ay8910->data_w(space, 0, offset);
- return 0xff;//mame_rand(space.machine);
+ return 0xff;//mame_rand(machine);
}
case 2: /* 08-0b */
@@ -506,7 +506,7 @@ void vega_state::draw_tilemap(screen_device& screen, bitmap_ind16& bitmap, const
int flip=BIT(id,5);
- int num=(BITSWAP8( ((id>>2) &7), 7,6,5,4,3,0,1,2 ));
+ int num=(bitswap<8>( ((id>>2) &7), 7,6,5,4,3,0,1,2 ));
int bank=id&3;
@@ -556,7 +556,7 @@ uint32_t vega_state::screen_update_vega(screen_device &screen, bitmap_ind16 &bit
for(x=0;x<40;++x)
{
int character=m_txt_ram[idx];
- //int color=BITSWAP8(color_lookup[character],7,6,5,4,0,1,2,3)>>1;
+ //int color=bitswap<8>(color_lookup[character],7,6,5,4,0,1,2,3)>>1;
int color=color_lookup[character]&0xf;
/*
bit 0 - unknown
@@ -565,7 +565,7 @@ uint32_t vega_state::screen_update_vega(screen_device &screen, bitmap_ind16 &bit
bit 3 - red
*/
- color=BITSWAP8(color,7,6,5,4,0,1,2,3)&0x7;
+ color=bitswap<8>(color,7,6,5,4,0,1,2,3)&0x7;
color^=0xf;
diff --git a/src/mame/drivers/vegas.cpp b/src/mame/drivers/vegas.cpp
index acf6e55bf9f..a5f4cad6d95 100644
--- a/src/mame/drivers/vegas.cpp
+++ b/src/mame/drivers/vegas.cpp
@@ -1334,12 +1334,11 @@ static INPUT_PORTS_START( warfa )
PORT_DIPNAME( 0x0002, 0x0002, "Quantum 3dfx card rev" )
PORT_DIPSETTING( 0x0002, "4" )
PORT_DIPSETTING( 0x0000, "?" )
- PORT_DIPNAME( 0x0040, 0x0040, "Boot ROM Test" )
- PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0080, 0x0080, "Boot ROM Test v1.3" )
- PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x00c0, 0x00c0, "Test Mode" )
+ PORT_DIPSETTING( 0x00c0, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0040, "Disk-based Test" )
+ PORT_DIPSETTING( 0x0080, "EPROM-based Test" )
+ PORT_DIPSETTING( 0x0000, "Interactive Diagnostics" )
PORT_DIPNAME( 0xc000, 0x4000, "Resolution" )
PORT_DIPSETTING( 0xc000, "Standard Res 512x256" )
PORT_DIPSETTING( 0x4000, "Medium Res 512x384" )
@@ -1605,7 +1604,7 @@ static INPUT_PORTS_START( cartfury )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON9 ) PORT_NAME("View 1") PORT_PLAYER(1) /* view 1 */
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON10 ) PORT_NAME("View 2") PORT_PLAYER(1) /* view 2 */
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON11 ) PORT_NAME("View 3") PORT_PLAYER(1) /* view 3 */
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON12 ) PORT_NAME("Music") PORT_PLAYER(1) /* music */
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON12 ) PORT_NAME("Boost") PORT_PLAYER(1) /* boost */
PORT_BIT( 0x0f00, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, vegas_state, gearshift_r, "GEAR" )
PORT_START("GEAR")
@@ -1928,7 +1927,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( sf2049 , denver )
MCFG_DEVICE_ADD("dcs", DCS2_AUDIO_DENVER, 0)
- MCFG_DCS2_AUDIO_DRAM_IN_MB(16)
+ MCFG_DCS2_AUDIO_DRAM_IN_MB(8)
MCFG_DCS2_AUDIO_POLLING_OFFSET(0x200d)
MCFG_DEVICE_ADD("ioasic", MIDWAY_IOASIC, 0)
@@ -1942,7 +1941,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( sf2049se, denver )
MCFG_DEVICE_ADD("dcs", DCS2_AUDIO_DENVER, 0)
- MCFG_DCS2_AUDIO_DRAM_IN_MB(16)
+ MCFG_DCS2_AUDIO_DRAM_IN_MB(8)
MCFG_DEVICE_ADD("ioasic", MIDWAY_IOASIC, 0)
MCFG_MIDWAY_IOASIC_SHUFFLE(MIDWAY_IOASIC_SFRUSHRK)
@@ -1955,7 +1954,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( sf2049te, denver )
MCFG_DEVICE_ADD("dcs", DCS2_AUDIO_DENVER, 0)
- MCFG_DCS2_AUDIO_DRAM_IN_MB(16)
+ MCFG_DCS2_AUDIO_DRAM_IN_MB(8)
MCFG_DEVICE_ADD("ioasic", MIDWAY_IOASIC, 0)
MCFG_MIDWAY_IOASIC_SHUFFLE(MIDWAY_IOASIC_SFRUSHRK)
@@ -2306,6 +2305,8 @@ DRIVER_INIT_MEMBER(vegas_state,warfa)
{
/* speedups */
m_maincpu->mips3drc_add_hotspot(0x8009436C, 0x0C031663, 250); /* confirmed */
+ // TODO: For some reason game hangs if ethernet is on
+ m_ethernet->set_link_connected(false);
}
diff --git a/src/mame/drivers/vt240.cpp b/src/mame/drivers/vt240.cpp
index 6e088eac2f7..c9f5e21aeae 100644
--- a/src/mame/drivers/vt240.cpp
+++ b/src/mame/drivers/vt240.cpp
@@ -338,7 +338,7 @@ READ8_MEMBER(vt240_state::char_buf_r)
WRITE8_MEMBER(vt240_state::char_buf_w)
{
- m_char_buf[m_char_idx++] = BITSWAP8(data, 0, 1, 2, 3, 4, 5, 6, 7);
+ m_char_buf[m_char_idx++] = bitswap<8>(data, 0, 1, 2, 3, 4, 5, 6, 7);
m_char_idx &= 0xf;
}
@@ -370,7 +370,7 @@ WRITE8_MEMBER(vt240_state::vom_w)
if(!BIT(m_reg0, 2))
{
m_vom[offset] = data;
- data = ~BITSWAP8(data, 1, 0, 3, 2, 5, 4, 7, 6);
+ data = ~bitswap<8>(data, 1, 0, 3, 2, 5, 4, 7, 6);
m_palette->set_pen_color(offset, pal2bit(data >> 6), pal2bit(data >> 6), pal2bit(data >> 6));
m_palette->set_pen_color((offset + 16), pal2bit(data >> 0), pal2bit(data >> 2), pal2bit(data >> 4));
}
@@ -410,7 +410,7 @@ WRITE16_MEMBER(vt240_state::vram_w)
{
if(BIT(m_reg0, 6))
{
- chr = BITSWAP8(m_vpat, m_patidx, m_patidx, m_patidx, m_patidx, m_patidx, m_patidx, m_patidx, m_patidx);
+ chr = bitswap<8>(m_vpat, m_patidx, m_patidx, m_patidx, m_patidx, m_patidx, m_patidx, m_patidx, m_patidx);
if(m_patcnt-- == 0)
{
m_patcnt = m_patmult;
@@ -494,7 +494,7 @@ WRITE16_MEMBER(vt240_state::vram_w)
WRITE8_MEMBER(vt240_state::mask_w)
{
- m_mask = BITSWAP8(data, 0, 1, 2, 3, 4, 5, 6, 7);
+ m_mask = bitswap<8>(data, 0, 1, 2, 3, 4, 5, 6, 7);
}
READ8_MEMBER(vt240_state::nvr_store_r)
diff --git a/src/mame/drivers/wallc.cpp b/src/mame/drivers/wallc.cpp
index 99576cc3165..7aadabad847 100644
--- a/src/mame/drivers/wallc.cpp
+++ b/src/mame/drivers/wallc.cpp
@@ -438,7 +438,7 @@ DRIVER_INIT_MEMBER(wallc_state, wallc)
for (i=0; i<0x2000*2; i++)
{
c = ROM[ i ] ^ 0x55 ^ 0xff; /* NOTE: this can be shortened but now it fully reflects what the bigger module really does */
- c = BITSWAP8(c, 4,2,6,0,7,1,3,5); /* also swapped inside of the bigger module */
+ c = bitswap<8>(c, 4,2,6,0,7,1,3,5); /* also swapped inside of the bigger module */
ROM[ i ] = c;
}
}
@@ -455,12 +455,12 @@ DRIVER_INIT_MEMBER(wallc_state, wallca)
if(i & 0x100)
{
c = ROM[ i ] ^ 0x4a;
- c = BITSWAP8(c, 4,7,1,3,2,0,5,6);
+ c = bitswap<8>(c, 4,7,1,3,2,0,5,6);
}
else
{
c = ROM[ i ] ^ 0xa5;
- c = BITSWAP8(c, 0,2,3,6,1,5,7,4);
+ c = bitswap<8>(c, 0,2,3,6,1,5,7,4);
}
ROM[ i ] = c;
diff --git a/src/mame/drivers/wecleman.cpp b/src/mame/drivers/wecleman.cpp
index b16c15053ed..46cb033f29f 100644
--- a/src/mame/drivers/wecleman.cpp
+++ b/src/mame/drivers/wecleman.cpp
@@ -1386,7 +1386,7 @@ void wecleman_state::bitswap(uint8_t *src,size_t len,int _14,int _13,int _12,int
for (i = 0;i < len;i++)
{
src[i] =
- buffer[BITSWAP24(i,23,22,21,_14,_13,_12,_11,_10,_f,_e,_d,_c,_b,_a,_9,_8,_7,_6,_5,_4,_3,_2,_1,_0)];
+ buffer[::bitswap<24>(i,23,22,21,_14,_13,_12,_11,_10,_f,_e,_d,_c,_b,_a,_9,_8,_7,_6,_5,_4,_3,_2,_1,_0)];
}
}
@@ -1412,7 +1412,7 @@ DRIVER_INIT_MEMBER(wecleman_state,wecleman)
/* TODO: could be wrong, colors have to be fixed. */
/* The only certain thing is that 87 must convert to f0 */
/* otherwise stray lines appear, made of pens 7 & 8 */
- RAM[i] = BITSWAP8(RAM[i],7,0,1,2,3,4,5,6);
+ RAM[i] = ::bitswap<8>(RAM[i],7,0,1,2,3,4,5,6);
}
bitswap(memregion("gfx1")->base(), memregion("gfx1")->bytes(),
diff --git a/src/mame/drivers/wico.cpp b/src/mame/drivers/wico.cpp
index 98f66c27363..b7362edd9cc 100644
--- a/src/mame/drivers/wico.cpp
+++ b/src/mame/drivers/wico.cpp
@@ -385,7 +385,7 @@ READ8_MEMBER( wico_state::lampst_r )
j = m_shared_ram[0x7f9 + i];
else
j = 0;
- output().set_digit_value(i * 10 + (m_shared_ram[0x96] & 7), BITSWAP16(j, 8, 8, 8, 8, 8, 8, 7, 7, 6, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(i * 10 + (m_shared_ram[0x96] & 7), bitswap<16>(j, 8, 8, 8, 8, 8, 8, 7, 7, 6, 6, 5, 4, 3, 2, 1, 0));
}
return 0xff;
}
diff --git a/src/mame/drivers/williams.cpp b/src/mame/drivers/williams.cpp
index 9f56fc9bf86..4e5bcd76e76 100644
--- a/src/mame/drivers/williams.cpp
+++ b/src/mame/drivers/williams.cpp
@@ -3047,7 +3047,7 @@ DRIVER_INIT_MEMBER(williams_state,defndjeu)
/* apply simple decryption by swapping bits 0 and 7 */
for (i = 0xd000; i < 0x19000; i++)
- rom[i] = BITSWAP8(rom[i],0,6,5,4,3,2,1,7);
+ rom[i] = bitswap<8>(rom[i],0,6,5,4,3,2,1,7);
}
diff --git a/src/mame/drivers/wink.cpp b/src/mame/drivers/wink.cpp
index 6ea8c59db63..af611ebee0c 100644
--- a/src/mame/drivers/wink.cpp
+++ b/src/mame/drivers/wink.cpp
@@ -437,19 +437,19 @@ DRIVER_INIT_MEMBER(wink_state,wink)
memcpy(&buffer[0],ROM,0x8000);
for (i = 0x0000; i <= 0x1fff; i++)
- ROM[i] = buffer[BITSWAP16(i,15,14,13, 11,12, 7, 9, 8,10, 6, 4, 5, 1, 2, 3, 0)];
+ ROM[i] = buffer[bitswap<16>(i,15,14,13, 11,12, 7, 9, 8,10, 6, 4, 5, 1, 2, 3, 0)];
for (i = 0x2000; i <= 0x3fff; i++)
- ROM[i] = buffer[BITSWAP16(i,15,14,13, 10, 7,12, 9, 8,11, 6, 3, 1, 5, 2, 4, 0)];
+ ROM[i] = buffer[bitswap<16>(i,15,14,13, 10, 7,12, 9, 8,11, 6, 3, 1, 5, 2, 4, 0)];
for (i = 0x4000; i <= 0x5fff; i++)
- ROM[i] = buffer[BITSWAP16(i,15,14,13, 7,10,11, 9, 8,12, 6, 1, 3, 4, 2, 5, 0)];
+ ROM[i] = buffer[bitswap<16>(i,15,14,13, 7,10,11, 9, 8,12, 6, 1, 3, 4, 2, 5, 0)];
for (i = 0x6000; i <= 0x7fff; i++)
- ROM[i] = buffer[BITSWAP16(i,15,14,13, 11,12, 7, 9, 8,10, 6, 4, 5, 1, 2, 3, 0)];
+ ROM[i] = buffer[bitswap<16>(i,15,14,13, 11,12, 7, 9, 8,10, 6, 4, 5, 1, 2, 3, 0)];
for (i = 0; i < 0x8000; i++)
- ROM[i] += BITSWAP8(i & 0xff, 7,5,3,1,6,4,2,0);
+ ROM[i] += bitswap<8>(i & 0xff, 7,5,3,1,6,4,2,0);
}
GAME( 1985, wink, 0, wink, wink, wink_state, wink, ROT0, "Midcoin", "Wink (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/witch.cpp b/src/mame/drivers/witch.cpp
index c220eed5371..0c7f4a46939 100644
--- a/src/mame/drivers/witch.cpp
+++ b/src/mame/drivers/witch.cpp
@@ -450,7 +450,7 @@ READ8_MEMBER(witch_state::prot_read_700x)
Otherwise later in game some I/O (controls) reads are skipped.
*/
- switch(space.device().safe_pc())
+ switch(m_subcpu->pc())
{
case 0x23f:
case 0x246:
diff --git a/src/mame/drivers/wiz.cpp b/src/mame/drivers/wiz.cpp
index 9cb19c8cab0..256b9bb885a 100644
--- a/src/mame/drivers/wiz.cpp
+++ b/src/mame/drivers/wiz.cpp
@@ -1155,7 +1155,7 @@ DRIVER_INIT_MEMBER(wiz_state,stinger)
/* decode the opcodes */
tbl = swap_xor_table[row];
- m_decrypted_opcodes[a] = BITSWAP8(src, tbl[0], 6, tbl[1], 4, tbl[2], 2, 1, 0) ^ tbl[3];
+ m_decrypted_opcodes[a] = bitswap<8>(src, tbl[0], 6, tbl[1], 4, tbl[2], 2, 1, 0) ^ tbl[3];
}
}
}
diff --git a/src/mame/drivers/wpc_an.cpp b/src/mame/drivers/wpc_an.cpp
index 9af1417157a..3d2475be108 100644
--- a/src/mame/drivers/wpc_an.cpp
+++ b/src/mame/drivers/wpc_an.cpp
@@ -199,8 +199,8 @@ void wpc_an_state::device_timer(emu_timer &timer, device_timer_id id, int param,
// update LED segments
for(x=0;x<16;x++)
{
- output().set_digit_value(x,BITSWAP16(m_wpc->get_alphanumeric(x), 15, 7, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
- output().set_digit_value(x+16,BITSWAP16(m_wpc->get_alphanumeric(20+x), 15, 7, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(x,bitswap<16>(m_wpc->get_alphanumeric(x), 15, 7, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(x+16,bitswap<16>(m_wpc->get_alphanumeric(20+x), 15, 7, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
}
m_wpc->reset_alphanumeric();
m_vblank_count++;
diff --git a/src/mame/drivers/x1.cpp b/src/mame/drivers/x1.cpp
index afc1194e709..bbbb229a2fa 100644
--- a/src/mame/drivers/x1.cpp
+++ b/src/mame/drivers/x1.cpp
@@ -1697,7 +1697,7 @@ READ8_MEMBER( x1_state::x1_io_r )
else if(offset >= 0x4000 && offset <= 0xffff) { return m_gfx_bitmap_ram[offset-0x4000+(m_scrn_reg.gfx_bank*0xc000)]; }
else
{
- //logerror("(PC=%06x) Read i/o address %04x\n",space.device().safe_pc(),offset);
+ //logerror("(PC=%06x) Read i/o address %04x\n",m_maincpu->pc(),offset);
}
return 0xff;
}
@@ -1740,7 +1740,7 @@ WRITE8_MEMBER( x1_state::x1_io_w )
else if(offset >= 0x4000 && offset <= 0xffff) { m_gfx_bitmap_ram[offset-0x4000+(m_scrn_reg.gfx_bank*0xc000)] = data; }
else
{
- //logerror("(PC=%06x) Write %02x at i/o address %04x\n",space.device().safe_pc(),data,offset);
+ //logerror("(PC=%06x) Write %02x at i/o address %04x\n",m_maincpu->pc(),data,offset);
}
}
@@ -1787,7 +1787,7 @@ READ8_MEMBER( x1_state::x1turbo_io_r )
else if(offset >= 0x4000 && offset <= 0xffff) { return m_gfx_bitmap_ram[offset-0x4000+(m_scrn_reg.gfx_bank*0xc000)]; }
else
{
- //logerror("(PC=%06x) Read i/o address %04x\n",space.device().safe_pc(),offset);
+ //logerror("(PC=%06x) Read i/o address %04x\n",m_maincpu->pc(),offset);
}
return 0xff;
}
@@ -1843,7 +1843,7 @@ WRITE8_MEMBER( x1_state::x1turbo_io_w )
else if(offset >= 0x4000 && offset <= 0xffff) { m_gfx_bitmap_ram[offset-0x4000+(m_scrn_reg.gfx_bank*0xc000)] = data; }
else
{
- //logerror("(PC=%06x) Write %02x at i/o address %04x\n",space.device().safe_pc(),data,offset);
+ //logerror("(PC=%06x) Write %02x at i/o address %04x\n",m_maincpu->pc(),data,offset);
}
}
diff --git a/src/mame/drivers/x68k.cpp b/src/mame/drivers/x68k.cpp
index 19da99f1a6e..010709f2301 100644
--- a/src/mame/drivers/x68k.cpp
+++ b/src/mame/drivers/x68k.cpp
@@ -829,7 +829,7 @@ WRITE16_MEMBER(x68k_state::x68k_sysport_w)
COMBINE_DATA(&m_sysport.sram_writeprotect);
break;
default:
-// logerror("SYS: [%08x] Wrote %04x to invalid or unimplemented system port %04x\n",space.device().safe_pc(),data,offset);
+// logerror("SYS: [%08x] Wrote %04x to invalid or unimplemented system port %04x\n",m_maincpu->pc(),data,offset);
break;
}
}
@@ -968,7 +968,6 @@ void x68k_state::set_bus_error(uint32_t address, bool write, uint16_t mem_mask)
address++;
m_bus_error = true;
m_maincpu->set_buserror_details(address, write, m_maincpu->get_fc());
- m_maincpu->mmu_tmp_buserror_address = address; // Hack for x68030
m_maincpu->set_input_line(M68K_LINE_BUSERROR, ASSERT_LINE);
m_maincpu->set_input_line(M68K_LINE_BUSERROR, CLEAR_LINE);
m_bus_error_timer->adjust(m_maincpu->cycles_to_attotime(16)); // let rmw cycles complete
diff --git a/src/mame/drivers/xexex.cpp b/src/mame/drivers/xexex.cpp
index 4757bfbaf6b..815578c6ef3 100644
--- a/src/mame/drivers/xexex.cpp
+++ b/src/mame/drivers/xexex.cpp
@@ -224,7 +224,7 @@ WRITE16_MEMBER(xexex_state::spriteram_mirror_w)
READ16_MEMBER(xexex_state::xexex_waitskip_r)
{
- if (space.device().safe_pc() == 0x1158)
+ if (m_maincpu->pc() == 0x1158)
{
space.device().execute().spin_until_trigger(m_resume_trigger);
m_suspension_active = 1;
diff --git a/src/mame/drivers/xmen.cpp b/src/mame/drivers/xmen.cpp
index 212c25e53cb..aca0f39192b 100644
--- a/src/mame/drivers/xmen.cpp
+++ b/src/mame/drivers/xmen.cpp
@@ -36,7 +36,7 @@ likewise a 2 screen game
WRITE16_MEMBER(xmen_state::eeprom_w)
{
- logerror("%06x: write %04x to 108000\n",space.device().safe_pc(),data);
+ logerror("%06x: write %04x to 108000\n", m_maincpu->pc(),data);
if (ACCESSING_BITS_0_7)
{
/* bit 0 = coin counter */
diff --git a/src/mame/drivers/xtheball.cpp b/src/mame/drivers/xtheball.cpp
index 56209fdd64d..b3a1a5ba6f3 100644
--- a/src/mame/drivers/xtheball.cpp
+++ b/src/mame/drivers/xtheball.cpp
@@ -128,7 +128,7 @@ TMS340X0_TO_SHIFTREG_CB_MEMBER(xtheball_state::to_shiftreg)
else if (address >= 0x02000000 && address <= 0x020fffff)
memcpy(shiftreg, &m_vram_fg[(address & 0xff000) >> 4], 0x200);
else
- logerror("%s:to_shiftreg(%08X)\n", space.machine().describe_context(), address);
+ logerror("%s:to_shiftreg(%08X)\n", machine().describe_context(), address);
}
@@ -139,7 +139,7 @@ TMS340X0_FROM_SHIFTREG_CB_MEMBER(xtheball_state::from_shiftreg)
else if (address >= 0x02000000 && address <= 0x020fffff)
memcpy(&m_vram_fg[(address & 0xff000) >> 4], shiftreg, 0x200);
else
- logerror("%s:from_shiftreg(%08X)\n", space.machine().describe_context(), address);
+ logerror("%s:from_shiftreg(%08X)\n", machine().describe_context(), address);
}
diff --git a/src/mame/drivers/xyonix.cpp b/src/mame/drivers/xyonix.cpp
index 6b674a975af..24aca691bb6 100644
--- a/src/mame/drivers/xyonix.cpp
+++ b/src/mame/drivers/xyonix.cpp
@@ -86,7 +86,7 @@ void xyonix_state::handle_coins(int coin)
READ8_MEMBER(xyonix_state::io_r)
{
- int regPC = space.device().safe_pc();
+ int regPC = m_maincpu->pc();
if (regPC == 0x27ba)
return 0x88;
@@ -137,7 +137,7 @@ READ8_MEMBER(xyonix_state::io_r)
WRITE8_MEMBER(xyonix_state::io_w)
{
- //logerror ("xyonix_port_e0_w %02x - PC = %04x\n", data, space.device().safe_pc());
+ //logerror ("xyonix_port_e0_w %02x - PC = %04x\n", data, m_maincpu->pc());
m_e0_data = data;
}
diff --git a/src/mame/drivers/yunsung8.cpp b/src/mame/drivers/yunsung8.cpp
index 30837a49e7e..53a77152b65 100644
--- a/src/mame/drivers/yunsung8.cpp
+++ b/src/mame/drivers/yunsung8.cpp
@@ -53,7 +53,7 @@ WRITE8_MEMBER(yunsung8_state::bankswitch_w)
membank("mainbank")->set_entry(data & 0x07);
if (data & ~0x37)
- logerror("CPU #0 - PC %04X: Bank %02X\n", space.device().safe_pc(), data);
+ logerror("CPU #0 - PC %04X: Bank %02X\n", m_maincpu->pc(), data);
}
READ8_MEMBER(yunsung8_state::sound_command_r)
diff --git a/src/mame/drivers/yuvomz80.cpp b/src/mame/drivers/yuvomz80.cpp
new file mode 100644
index 00000000000..5662ce7ee4e
--- /dev/null
+++ b/src/mame/drivers/yuvomz80.cpp
@@ -0,0 +1,150 @@
+// license:BSD-3-Clause
+// copyright-holders:
+
+// Skeleton driver for Yuvo / Yubis Z80 based medal games.
+
+#include "emu.h"
+#include "cpu/z80/z80.h"
+#include "machine/i8255.h"
+#include "sound/2610intf.h"
+#include "sound/ymz280b.h"
+#include "speaker.h"
+
+/*
+This tries to document the available info, but even game titles should be taken with a grain of salt.
+YouTube video references:
+Hexa President: http://www.youtube.com/watch?v=5Ea5HxH2zwM&t=8s
+Golden Hexa: http://www.youtube.com/watch?v=3u1ccTo3SGI
+*/
+
+/*
+Golden Hexa by Yubis
+
+PCBs:
+
+Yuvo PCC116B - maincpu board
+- TMPZ84C00AP-8
+- 8 MHz XTAL
+- maincpu ROM
+- 2 x TMP82C55AN-2
+- 2 x 8 dips bank
+
+Yuvo PCO124B - sound board
+- TMPZ84C00AP-8
+- 8 MHz, 16.9344 MHz XTALs
+- audiocpu ROM
+- YMZ280B-F
+- sample ROMs
+
+Yuvo PCI117B - I/O board
+- connectors and ttl chips
+*/
+
+class yuvomz80_state : public driver_device
+{
+public:
+ yuvomz80_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu")
+ { }
+
+private:
+ required_device<cpu_device> m_maincpu;
+};
+
+static ADDRESS_MAP_START( mem_map, AS_PROGRAM, 8, yuvomz80_state )
+ AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("maincpu", 0)
+ AM_RANGE(0x8000, 0x87ff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( io_map, AS_PROGRAM, 8, yuvomz80_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi0", i8255_device, read, write)
+ AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi1", i8255_device, read, write)
+ AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi2", i8255_device, read, write)
+ AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("ppi3", i8255_device, read, write)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( audio_mem_map, AS_PROGRAM, 8, yuvomz80_state )
+ AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("audiocpu", 0)
+ AM_RANGE(0x8000, 0x87ff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( audio_io_map, AS_PROGRAM, 8, yuvomz80_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymz", ymz280b_device, read, write)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( hexapres_audio_io_map, AS_PROGRAM, 8, yuvomz80_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
+ADDRESS_MAP_END
+
+static INPUT_PORTS_START( goldhexa )
+INPUT_PORTS_END
+
+static MACHINE_CONFIG_START( goldhexa )
+ MCFG_CPU_ADD("maincpu", Z80, XTAL_8MHz)
+ MCFG_CPU_PROGRAM_MAP(mem_map)
+ MCFG_CPU_IO_MAP(io_map)
+
+ MCFG_CPU_ADD("audiocpu", Z80, XTAL_8MHz)
+ MCFG_CPU_PROGRAM_MAP(audio_mem_map)
+ MCFG_CPU_IO_MAP(audio_io_map)
+
+ MCFG_DEVICE_ADD("ppi0", I8255A, 0)
+ MCFG_DEVICE_ADD("ppi1", I8255A, 0)
+ MCFG_DEVICE_ADD("ppi2", I8255A, 0)
+ MCFG_DEVICE_ADD("ppi3", I8255A, 0)
+
+ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+ MCFG_SOUND_ADD("ymz", YMZ280B, XTAL_16_9344MHz)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.00)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.00)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( hexapres )
+ MCFG_CPU_ADD("maincpu", Z80, XTAL_8MHz)
+ MCFG_DEVICE_DISABLE()
+
+ MCFG_CPU_ADD("audiocpu", Z80, XTAL_8MHz)
+ MCFG_CPU_PROGRAM_MAP(audio_mem_map)
+ MCFG_CPU_IO_MAP(hexapres_audio_io_map)
+
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("ymsnd", YM2610, 8000000) // type guessed
+ MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
+ MCFG_SOUND_ROUTE(0, "mono", 0.25)
+ MCFG_SOUND_ROUTE(1, "mono", 1.0)
+ MCFG_SOUND_ROUTE(2, "mono", 1.0)
+MACHINE_CONFIG_END
+
+
+ROM_START( goldhexa )
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD( "ghp_program_ver.1.02.ic8", 0x0000, 0x10000, CRC(a21a8cfd) SHA1(324f54ca6e17373138df2854f8c5e77cf78e9434) ) // 1111xxxxxxxxxxxx = 0xFF
+
+ ROM_REGION(0x10000, "audiocpu", 0)
+ ROM_LOAD( "hp-sp_ver.1.01.ic7", 0x0000, 0x2000, CRC(05133b91) SHA1(2fe931e55c503f15aedfb1c1ea14c257f57c564b) ) // 1xxxxxxxxxxxx = 0xFF
+
+ ROM_REGION(0x100000, "ymz", 0)
+ ROM_LOAD( "ghp_pcm-a_ver.1.01.ic12", 0x00000, 0x80000, CRC(08de888b) SHA1(a6b68accb136481f45b65eab33e0bab5212a1daf) )
+ ROM_LOAD( "ghp_pcm-b_ver.1.01.ic13", 0x80000, 0x80000, CRC(161838c9) SHA1(52b9c324b01702c1164a462af371d82e8c2eea43) )
+ROM_END
+
+ROM_START( hexapres )
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD( "hexapres.bin", 0x0000, 0x10000, NO_DUMP )
+
+ ROM_REGION(0x10000, "audiocpu", 0)
+ ROM_LOAD( "ghp_snd.bin", 0x0000, 0x10000, CRC(8933b6ea) SHA1(a66157f2b7407ab374db07bcda34f066740f14dc) )
+
+ ROM_REGION(0x80000, "ymsnd", 0)
+ ROM_LOAD( "ghp_voia.bin", 0x00000, 0x80000, CRC(cf3e4c43) SHA1(6d348054704d1d0082d6166701ab84cb162b3a26) )
+
+ ROM_REGION(0x80000, "ymsnd.deltat", 0)
+ ROM_LOAD( "ghp_voib.bin", 0x00000, 0x80000, CRC(8be745fe) SHA1(840bbb212c8c519f2e4633f8db731fcf3f55635a) )
+ROM_END
+
+GAME( 200?, goldhexa, 0, goldhexa, goldhexa, yuvomz80_state, 0, ROT0, "Yubis", "Golden Hexa", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, hexapres, 0, hexapres, goldhexa, yuvomz80_state, 0, ROT0, "Yubis", "Hexa President", MACHINE_IS_SKELETON_MECHANICAL )
diff --git a/src/mame/drivers/z100.cpp b/src/mame/drivers/z100.cpp
index 5042eeaa6e6..622fe87d98a 100644
--- a/src/mame/drivers/z100.cpp
+++ b/src/mame/drivers/z100.cpp
@@ -616,9 +616,9 @@ WRITE8_MEMBER( z100_state::video_pia_A_w )
*/
m_vram_enable = ((data & 0x80) >> 7) ^ 1;
- m_gbank = BITSWAP8(((data & 0x70) >> 4) ^ 0x7,7,6,5,4,3,1,0,2);
+ m_gbank = bitswap<8>(((data & 0x70) >> 4) ^ 0x7,7,6,5,4,3,1,0,2);
m_flash = ((data & 8) >> 3) ^ 1;
- m_display_mask = BITSWAP8((data & 7) ^ 7,7,6,5,4,3,1,0,2);
+ m_display_mask = bitswap<8>((data & 7) ^ 7,7,6,5,4,3,1,0,2);
}
WRITE8_MEMBER( z100_state::video_pia_B_w )
diff --git a/src/mame/drivers/z80dev.cpp b/src/mame/drivers/z80dev.cpp
index f51237299ac..87d1fbb455d 100644
--- a/src/mame/drivers/z80dev.cpp
+++ b/src/mame/drivers/z80dev.cpp
@@ -50,7 +50,7 @@ WRITE8_MEMBER( z80dev_state::display_w )
READ8_MEMBER( z80dev_state::test_r )
{
- return space.machine().rand();
+ return machine().rand();
}
static ADDRESS_MAP_START( mem_map, AS_PROGRAM, 8, z80dev_state )
diff --git a/src/mame/drivers/zapcomputer.cpp b/src/mame/drivers/zapcomputer.cpp
index 455531b56e9..4987095d1b9 100644
--- a/src/mame/drivers/zapcomputer.cpp
+++ b/src/mame/drivers/zapcomputer.cpp
@@ -63,7 +63,7 @@ uint8_t zapcomp_state::decode7seg(uint8_t data)
// Bit order for the FAIRCHILD FND-70
// 7-SEGMENT LCD: . g f e d c b a
- return BITSWAP8(patterns[data & 0x0F], 7, 3, 4, 2, 1, 0, 6, 5);
+ return bitswap<8>(patterns[data & 0x0F], 7, 3, 4, 2, 1, 0, 6, 5);
}
WRITE8_MEMBER( zapcomp_state::display_7seg_w )
diff --git a/src/mame/drivers/zn.cpp b/src/mame/drivers/zn.cpp
index 82057625afe..e6874bfed50 100644
--- a/src/mame/drivers/zn.cpp
+++ b/src/mame/drivers/zn.cpp
@@ -1647,7 +1647,7 @@ WRITE16_MEMBER(zn_state::bam2_mcu_w)
case 1:
m_bam2_mcu_command = data;
- logerror("MCU command: %04x (PC %08x)\n", m_bam2_mcu_command, space.device().safe_pc());
+ logerror("MCU command: %04x (PC %08x)\n", m_bam2_mcu_command, m_maincpu->pc());
break;
}
}
@@ -1657,11 +1657,11 @@ READ16_MEMBER(zn_state::bam2_mcu_r)
switch (offset)
{
case 0:
- logerror("MCU port 0 read @ PC %08x mask %08x\n", space.device().safe_pc(), mem_mask);
+ logerror("MCU port 0 read @ PC %08x mask %08x\n", m_maincpu->pc(), mem_mask);
break;
case 2:
- logerror("MCU status read @ PC %08x mask %08x\n", space.device().safe_pc(), mem_mask);
+ logerror("MCU status read @ PC %08x mask %08x\n", m_maincpu->pc(), mem_mask);
switch (m_bam2_mcu_command)
{
diff --git a/src/mame/etc/fd1094dp.cpp b/src/mame/etc/fd1094dp.cpp
index 34074d787e2..ffaf2e187e9 100644
--- a/src/mame/etc/fd1094dp.cpp
+++ b/src/mame/etc/fd1094dp.cpp
@@ -21,7 +21,7 @@ char srcpath[250],dstfilename[250];
#define BIT(x,n) (((x)>>(n))&1)
-#define BITSWAP16(val,B15,B14,B13,B12,B11,B10,B9,B8,B7,B6,B5,B4,B3,B2,B1,B0) \
+#define bitswap<16>(val,B15,B14,B13,B12,B11,B10,B9,B8,B7,B6,B5,B4,B3,B2,B1,B0) \
((BIT(val,B15) << 15) | \
(BIT(val,B14) << 14) | \
(BIT(val,B13) << 13) | \
@@ -265,7 +265,7 @@ static int parametric_decode(int val,int mainkey,int key_F,int gkey1,int gkey2,i
if ((val & 0xe000) == 0x0000)
- val = BITSWAP16(val, 12,15,14,13,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0);
+ val = bitswap<16>(val, 12,15,14,13,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0);
else
{
if (val & 0x8000)
@@ -274,9 +274,9 @@ static int parametric_decode(int val,int mainkey,int key_F,int gkey1,int gkey2,i
if (~val & 0x0004) val ^= 0x0022; // 5,1
if (!key_1b) if (~val & 0x1000) val ^= 0x0848; // 11,6,3
if (!global_swap2) if (!key_0c) val ^= 0x4101; // 14,8,0
- if (!key_2b) val = BITSWAP16(val, 15,14,13, 9,11,10,12, 8, 2, 6, 5, 4, 3, 7, 1, 0); // 12,9,7,2
+ if (!key_2b) val = bitswap<16>(val, 15,14,13, 9,11,10,12, 8, 2, 6, 5, 4, 3, 7, 1, 0); // 12,9,7,2
- val = 0x6561 ^ BITSWAP16(val, 15, 9,10,13, 3,12, 0,14, 6, 5, 2,11, 8, 1, 4, 7);
+ val = 0x6561 ^ bitswap<16>(val, 15, 9,10,13, 3,12, 0,14, 6, 5, 2,11, 8, 1, 4, 7);
}
if (val & 0x4000)
{
@@ -284,9 +284,9 @@ static int parametric_decode(int val,int mainkey,int key_F,int gkey1,int gkey2,i
if (!key_3a) if (val & 0x0004) val ^= 0x0202; // 9,1
if (!key_6a) if (val & 0x0400) val ^= 0x0004; // 2
if (!key_5b) if (!key_0b) val ^= 0x08a1; // 11,7,5,0
- if (!global_swap0b) val = BITSWAP16(val, 15,14,10,12,11,13, 9, 4, 7, 6, 5, 8, 3, 2, 1, 0); // 13,10,8,4
+ if (!global_swap0b) val = bitswap<16>(val, 15,14,10,12,11,13, 9, 4, 7, 6, 5, 8, 3, 2, 1, 0); // 13,10,8,4
- val = 0x3523 ^ BITSWAP16(val, 13,14, 7, 0, 8, 6, 4, 2, 1,15, 3,11,12,10, 5, 9);
+ val = 0x3523 ^ bitswap<16>(val, 13,14, 7, 0, 8, 6, 4, 2, 1,15, 3,11,12,10, 5, 9);
}
if (val & 0x2000)
{
@@ -295,22 +295,22 @@ static int parametric_decode(int val,int mainkey,int key_F,int gkey1,int gkey2,i
if (!key_7a) if (val & 0x0001) val ^= 0x110a; // 12,8,3,1
if (!key_4b) if (!key_0a) val ^= 0x0040; // 6
if (!global_swap0a) if (!key_6b) val ^= 0x0404; // 10,2
- if (!key_5b) val = BITSWAP16(val, 0,14,13,12,15,10, 9, 8, 7, 6,11, 4, 3, 2, 1, 5); // 15,11,5,0
+ if (!key_5b) val = bitswap<16>(val, 0,14,13,12,15,10, 9, 8, 7, 6,11, 4, 3, 2, 1, 5); // 15,11,5,0
- val = 0x99a5 ^ BITSWAP16(val, 10, 2,13, 7, 8, 0, 3,14, 6,15, 1,11, 9, 4, 5,12);
+ val = 0x99a5 ^ bitswap<16>(val, 10, 2,13, 7, 8, 0, 3,14, 6,15, 1,11, 9, 4, 5,12);
}
- val = 0x87ff ^ BITSWAP16(val, 5,15,13,14, 6, 0, 9,10, 4,11, 1, 2,12, 3, 7, 8);
+ val = 0x87ff ^ bitswap<16>(val, 5,15,13,14, 6, 0, 9,10, 4,11, 1, 2,12, 3, 7, 8);
- if (!global_swap4) val = BITSWAP16(val, 6,14,13,12,11,10, 9, 5, 7,15, 8, 4, 3, 2, 1, 0); // 15-6, 8-5
- if (!global_swap3) val = BITSWAP16(val, 15,12,14,13,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); // 12-13-14
- if (!global_swap2) val = BITSWAP16(val, 15,14,13,12,11, 2, 9, 8,10, 6, 5, 4, 3, 0, 1, 7); // 10-2-0-7
- if (!key_3b) val = BITSWAP16(val, 15,14,13,12,11,10, 4, 8, 7, 6, 5, 9, 1, 2, 3, 0); // 9-4, 3-1
+ if (!global_swap4) val = bitswap<16>(val, 6,14,13,12,11,10, 9, 5, 7,15, 8, 4, 3, 2, 1, 0); // 15-6, 8-5
+ if (!global_swap3) val = bitswap<16>(val, 15,12,14,13,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); // 12-13-14
+ if (!global_swap2) val = bitswap<16>(val, 15,14,13,12,11, 2, 9, 8,10, 6, 5, 4, 3, 0, 1, 7); // 10-2-0-7
+ if (!key_3b) val = bitswap<16>(val, 15,14,13,12,11,10, 4, 8, 7, 6, 5, 9, 1, 2, 3, 0); // 9-4, 3-1
- if (!key_2a) val = BITSWAP16(val, 15,12,13,14,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); // 14-12
- if (!global_swap1) val = BITSWAP16(val, 15,14,13,12, 9, 8,11,10, 7, 6, 5, 4, 3, 2, 1, 0); // 11...8
- if (!key_5a) val = BITSWAP16(val, 15,14,13,12,11,10, 9, 8, 4, 5, 7, 6, 3, 2, 1, 0); // 7...4
- if (!global_swap0a) val = BITSWAP16(val, 15,14,13,12,11,10, 9, 8, 7, 6, 5, 4, 0, 3, 2, 1); // 3...0
+ if (!key_2a) val = bitswap<16>(val, 15,12,13,14,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); // 14-12
+ if (!global_swap1) val = bitswap<16>(val, 15,14,13,12, 9, 8,11,10, 7, 6, 5, 4, 3, 2, 1, 0); // 11...8
+ if (!key_5a) val = bitswap<16>(val, 15,14,13,12,11,10, 9, 8, 4, 5, 7, 6, 3, 2, 1, 0); // 7...4
+ if (!global_swap0a) val = bitswap<16>(val, 15,14,13,12,11,10, 9, 8, 7, 6, 5, 4, 0, 3, 2, 1); // 3...0
}
return final_decrypt(val,key_F);
diff --git a/src/mame/includes/apollo.h b/src/mame/includes/apollo.h
index d00be887813..ea06e5f7f9f 100644
--- a/src/mame/includes/apollo.h
+++ b/src/mame/includes/apollo.h
@@ -87,8 +87,10 @@ uint8_t apollo_get_ram_config_byte(void);
//apollo_get_node_id - get the node id
uint32_t apollo_get_node_id(void);
+#if 0
// should be called by the CPU core before executing each instruction
int apollo_instruction_hook(m68000_base_device *device, offs_t curpc);
+#endif
void apollo_set_cache_status_register(device_t *device,uint8_t mask, uint8_t data);
diff --git a/src/mame/includes/bbc.h b/src/mame/includes/bbc.h
index 7fdc56713b4..071e731f640 100644
--- a/src/mame/includes/bbc.h
+++ b/src/mame/includes/bbc.h
@@ -43,23 +43,6 @@
#define RS232_TAG "rs232"
-enum machine_type_t
-{
- MODELA,
- MODELB,
- BPLUS,
- MASTER,
- COMPACT
-};
-
-enum monitor_type_t
-{
- COLOUR = 0,
- BLACKWHITE = 1,
- GREEN = 2,
- AMBER = 3
-};
-
class bbc_state : public driver_device
{
public:
@@ -111,6 +94,23 @@ public:
m_bbcconfig(*this, "BBCCONFIG")
{ }
+ enum machine_type_t
+ {
+ MODELA,
+ MODELB,
+ BPLUS,
+ MASTER,
+ COMPACT
+ };
+
+ enum monitor_type_t
+ {
+ COLOUR = 0,
+ BLACKWHITE = 1,
+ GREEN = 2,
+ AMBER = 3
+ };
+
DECLARE_FLOPPY_FORMATS(floppy_formats_bbc);
DECLARE_FLOPPY_FORMATS(floppy_formats_bbcm);
DECLARE_FLOPPY_FORMATS(floppy_formats_bbcmc);
diff --git a/src/mame/includes/electron.h b/src/mame/includes/electron.h
index f0f92d3dd77..6782f660e82 100644
--- a/src/mame/includes/electron.h
+++ b/src/mame/includes/electron.h
@@ -30,36 +30,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 cassette_motor_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 electron_state : public driver_device
{
public:
@@ -80,6 +50,35 @@ public:
m_ram(*this, RAM_TAG)
{ }
+ /* 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 cassette_motor_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;
emu_timer *m_tape_timer;
int m_map4[256];
diff --git a/src/mame/includes/fmtowns.h b/src/mame/includes/fmtowns.h
index ea04463de5f..15f6735a6c9 100644
--- a/src/mame/includes/fmtowns.h
+++ b/src/mame/includes/fmtowns.h
@@ -372,8 +372,8 @@ public:
void towns_crtc_refresh_mode();
void towns_update_kanji_offset();
void towns_update_palette();
- void render_sprite_4(uint32_t poffset, uint32_t coffset, uint16_t x, uint16_t y, uint16_t xflip, uint16_t yflip, const rectangle* rect);
- void render_sprite_16(uint32_t poffset, uint16_t x, uint16_t y, uint16_t xflip, uint16_t yflip, const rectangle* rect);
+ void render_sprite_4(uint32_t poffset, uint32_t coffset, uint16_t x, uint16_t y, bool xflip, bool yflip, bool xhalfsize, bool yhalfsize, bool rotation, const rectangle* rect);
+ void render_sprite_16(uint32_t poffset, uint16_t x, uint16_t y, bool xflip, bool yflip, bool xhalfsize, bool yhalfsize, bool rotation, const rectangle* rect);
void draw_sprites(const rectangle* rect);
void towns_crtc_draw_scan_layer_hicolour(bitmap_rgb32 &bitmap,const rectangle* rect,int layer,int line,int scanline);
void towns_crtc_draw_scan_layer_256(bitmap_rgb32 &bitmap,const rectangle* rect,int layer,int line,int scanline);
diff --git a/src/mame/includes/mac.h b/src/mame/includes/mac.h
index 6c3cb4f9e41..9a8baeb4380 100644
--- a/src/mame/includes/mac.h
+++ b/src/mame/includes/mac.h
@@ -48,96 +48,6 @@
#define ADB_IS_PM_VIA2_CLASS (m_model >= MODEL_MAC_PB140 && m_model <= MODEL_MAC_PBDUO_270c)
#define ADB_IS_PM_CLASS ((m_model >= MODEL_MAC_PORTABLE && m_model <= MODEL_MAC_PB100) || (m_model >= MODEL_MAC_PB140 && m_model <= MODEL_MAC_PBDUO_270c))
-/* for Egret and CUDA streaming MCU commands, command types */
-enum mac_streaming_t
-{
- MCU_STREAMING_NONE = 0,
- MCU_STREAMING_PRAMRD,
- MCU_STREAMING_PRAMWR,
- MCU_STREAMING_WRAMRD,
- MCU_STREAMING_WRAMWR
-};
-
-enum
-{
- RBV_TYPE_RBV = 0,
- RBV_TYPE_V8,
- RBV_TYPE_SONORA,
- RBV_TYPE_DAFB
-};
-
-/* tells which model is being emulated (set by macxxx_init) */
-enum model_t
-{
- MODEL_MAC_128K512K, // 68000 machines
- MODEL_MAC_512KE,
- MODEL_MAC_PLUS,
- MODEL_MAC_SE,
- MODEL_MAC_CLASSIC,
-
- MODEL_MAC_PORTABLE, // Portable/PB100 are sort of hybrid classic and Mac IIs
- MODEL_MAC_PB100,
-
- MODEL_MAC_II, // Mac II class 68020/030 machines
- MODEL_MAC_II_FDHD,
- MODEL_MAC_IIX,
- MODEL_MAC_IICX,
- MODEL_MAC_IICI,
- MODEL_MAC_IISI,
- MODEL_MAC_IIVX,
- MODEL_MAC_IIVI,
- MODEL_MAC_IIFX,
- MODEL_MAC_SE30,
-
- MODEL_MAC_LC, // LC class 68030 machines, generally using a V8 or compatible gate array
- MODEL_MAC_LC_II,
- MODEL_MAC_LC_III,
- MODEL_MAC_LC_III_PLUS,
- MODEL_MAC_CLASSIC_II,
- MODEL_MAC_COLOR_CLASSIC,
-
- MODEL_MAC_LC_475, // LC III clones with Cuda instead of Egret and 68LC040 on most models
- MODEL_MAC_LC_520,
- MODEL_MAC_LC_550,
- MODEL_MAC_TV,
- MODEL_MAC_LC_575,
- MODEL_MAC_LC_580,
-
- MODEL_MAC_PB140, // 68030 PowerBooks. 140/145/145B/170 all have the same machine ID
- MODEL_MAC_PB160, // 160/180/165 all have the same machine ID too
- MODEL_MAC_PB165c,
- MODEL_MAC_PB180c,
- MODEL_MAC_PB150, // 150 is fairly radically different from the other 1x0s
-
- MODEL_MAC_PBDUO_210, // 68030 PowerBook Duos
- MODEL_MAC_PBDUO_230,
- MODEL_MAC_PBDUO_250,
- MODEL_MAC_PBDUO_270c,
-
- MODEL_MAC_QUADRA_700, // 68(LC)040 desktops
- MODEL_MAC_QUADRA_610,
- MODEL_MAC_QUADRA_650,
- MODEL_MAC_QUADRA_800,
- MODEL_MAC_QUADRA_900,
- MODEL_MAC_QUADRA_950,
- MODEL_MAC_QUADRA_660AV,
- MODEL_MAC_QUADRA_840AV,
- MODEL_MAC_QUADRA_605,
- MODEL_MAC_QUADRA_630,
-
- MODEL_MAC_PB550c, // 68(LC)040 PowerBooks
- MODEL_MAC_PB520,
- MODEL_MAC_PB520c,
- MODEL_MAC_PB540,
- MODEL_MAC_PB540c,
- MODEL_MAC_PB190,
- MODEL_MAC_PB190cs,
-
- MODEL_MAC_POWERMAC_6100, // NuBus PowerMacs
- MODEL_MAC_POWERMAC_7100,
- MODEL_MAC_POWERMAC_8100
-};
-
// video parameters for classic Macs
#define MAC_H_VIS (512)
#define MAC_V_VIS (342)
@@ -206,6 +116,96 @@ public:
virtual void machine_start() override;
virtual void machine_reset() override;
+ /* for Egret and CUDA streaming MCU commands, command types */
+ enum mac_streaming_t
+ {
+ MCU_STREAMING_NONE = 0,
+ MCU_STREAMING_PRAMRD,
+ MCU_STREAMING_PRAMWR,
+ MCU_STREAMING_WRAMRD,
+ MCU_STREAMING_WRAMWR
+ };
+
+ enum
+ {
+ RBV_TYPE_RBV = 0,
+ RBV_TYPE_V8,
+ RBV_TYPE_SONORA,
+ RBV_TYPE_DAFB
+ };
+
+ /* tells which model is being emulated (set by macxxx_init) */
+ enum model_t
+ {
+ MODEL_MAC_128K512K, // 68000 machines
+ MODEL_MAC_512KE,
+ MODEL_MAC_PLUS,
+ MODEL_MAC_SE,
+ MODEL_MAC_CLASSIC,
+
+ MODEL_MAC_PORTABLE, // Portable/PB100 are sort of hybrid classic and Mac IIs
+ MODEL_MAC_PB100,
+
+ MODEL_MAC_II, // Mac II class 68020/030 machines
+ MODEL_MAC_II_FDHD,
+ MODEL_MAC_IIX,
+ MODEL_MAC_IICX,
+ MODEL_MAC_IICI,
+ MODEL_MAC_IISI,
+ MODEL_MAC_IIVX,
+ MODEL_MAC_IIVI,
+ MODEL_MAC_IIFX,
+ MODEL_MAC_SE30,
+
+ MODEL_MAC_LC, // LC class 68030 machines, generally using a V8 or compatible gate array
+ MODEL_MAC_LC_II,
+ MODEL_MAC_LC_III,
+ MODEL_MAC_LC_III_PLUS,
+ MODEL_MAC_CLASSIC_II,
+ MODEL_MAC_COLOR_CLASSIC,
+
+ MODEL_MAC_LC_475, // LC III clones with Cuda instead of Egret and 68LC040 on most models
+ MODEL_MAC_LC_520,
+ MODEL_MAC_LC_550,
+ MODEL_MAC_TV,
+ MODEL_MAC_LC_575,
+ MODEL_MAC_LC_580,
+
+ MODEL_MAC_PB140, // 68030 PowerBooks. 140/145/145B/170 all have the same machine ID
+ MODEL_MAC_PB160, // 160/180/165 all have the same machine ID too
+ MODEL_MAC_PB165c,
+ MODEL_MAC_PB180c,
+ MODEL_MAC_PB150, // 150 is fairly radically different from the other 1x0s
+
+ MODEL_MAC_PBDUO_210, // 68030 PowerBook Duos
+ MODEL_MAC_PBDUO_230,
+ MODEL_MAC_PBDUO_250,
+ MODEL_MAC_PBDUO_270c,
+
+ MODEL_MAC_QUADRA_700, // 68(LC)040 desktops
+ MODEL_MAC_QUADRA_610,
+ MODEL_MAC_QUADRA_650,
+ MODEL_MAC_QUADRA_800,
+ MODEL_MAC_QUADRA_900,
+ MODEL_MAC_QUADRA_950,
+ MODEL_MAC_QUADRA_660AV,
+ MODEL_MAC_QUADRA_840AV,
+ MODEL_MAC_QUADRA_605,
+ MODEL_MAC_QUADRA_630,
+
+ MODEL_MAC_PB550c, // 68(LC)040 PowerBooks
+ MODEL_MAC_PB520,
+ MODEL_MAC_PB520c,
+ MODEL_MAC_PB540,
+ MODEL_MAC_PB540c,
+ MODEL_MAC_PB190,
+ MODEL_MAC_PB190cs,
+
+ MODEL_MAC_POWERMAC_6100, // NuBus PowerMacs
+ MODEL_MAC_POWERMAC_7100,
+ MODEL_MAC_POWERMAC_8100
+ };
+
model_t m_model;
uint32_t m_overlay;
diff --git a/src/mame/includes/macpci.h b/src/mame/includes/macpci.h
index 52ecba8773a..08c93a93c7e 100644
--- a/src/mame/includes/macpci.h
+++ b/src/mame/includes/macpci.h
@@ -25,52 +25,6 @@
#define MAC_539X_1_TAG "539x_1"
#define MAC_539X_2_TAG "539x_2"
-/* tells which model is being emulated (set by macxxx_init) */
-enum model_t
-{
- PCIMODEL_MAC_PM5200,
- PCIMODEL_MAC_PM6200,
- PCIMODEL_MAC_PM5300,
- PCIMODEL_MAC_PM7200,
- PCIMODEL_MAC_PM7500,
- PCIMODEL_MAC_PM8500,
- PCIMODEL_MAC_PM9500,
- PCIMODEL_MAC_PM7215,
- PCIMODEL_MAC_PM5260,
- PCIMODEL_MAC_PM5400,
- PCIMODEL_MAC_PM7600,
- PCIMODEL_MAC_PM8200,
- PCIMODEL_MAC_PM6300,
- PCIMODEL_MAC_PM6400,
- PCIMODEL_MAC_PM4400,
- PCIMODEL_MAC_PM5500,
- PCIMODEL_MAC_PM7220,
- PCIMODEL_MAC_PM7300,
- PCIMODEL_MAC_PM6500,
- PCIMODEL_MAC_PM8600,
- PCIMODEL_MAC_PM9600,
-
- PCIMODEL_MAC_20TH,
-
- PCIMODEL_MAC_G3_GOSSAMER,
- PCIMODEL_MAC_G3_ALLINONE,
-
- PCIMODEL_MAC_PB5x0PPC,
- PCIMODEL_MAC_PB1400,
- PCIMODEL_MAC_PB2300,
- PCIMODEL_MAC_PB2400,
- PCIMODEL_MAC_PB3400,
- PCIMODEL_MAC_PB5300,
-
- PCIMODEL_MAC_PBG3KANGA,
- PCIMODEL_MAC_PBG3WALLST1,
- PCIMODEL_MAC_PBG3WALLST2,
-
- PCIMODEL_MAC_PIPPIN // Apple/Bandai Pippin
-
-};
-
-
/* Mac driver data */
class macpci_state : public driver_device
@@ -98,6 +52,51 @@ public:
virtual void machine_start() override;
virtual void machine_reset() override;
+ /* tells which model is being emulated (set by macxxx_init) */
+ enum model_t
+ {
+ PCIMODEL_MAC_PM5200,
+ PCIMODEL_MAC_PM6200,
+ PCIMODEL_MAC_PM5300,
+ PCIMODEL_MAC_PM7200,
+ PCIMODEL_MAC_PM7500,
+ PCIMODEL_MAC_PM8500,
+ PCIMODEL_MAC_PM9500,
+ PCIMODEL_MAC_PM7215,
+ PCIMODEL_MAC_PM5260,
+ PCIMODEL_MAC_PM5400,
+ PCIMODEL_MAC_PM7600,
+ PCIMODEL_MAC_PM8200,
+ PCIMODEL_MAC_PM6300,
+ PCIMODEL_MAC_PM6400,
+ PCIMODEL_MAC_PM4400,
+ PCIMODEL_MAC_PM5500,
+ PCIMODEL_MAC_PM7220,
+ PCIMODEL_MAC_PM7300,
+ PCIMODEL_MAC_PM6500,
+ PCIMODEL_MAC_PM8600,
+ PCIMODEL_MAC_PM9600,
+
+ PCIMODEL_MAC_20TH,
+
+ PCIMODEL_MAC_G3_GOSSAMER,
+ PCIMODEL_MAC_G3_ALLINONE,
+
+ PCIMODEL_MAC_PB5x0PPC,
+ PCIMODEL_MAC_PB1400,
+ PCIMODEL_MAC_PB2300,
+ PCIMODEL_MAC_PB2400,
+ PCIMODEL_MAC_PB3400,
+ PCIMODEL_MAC_PB5300,
+
+ PCIMODEL_MAC_PBG3KANGA,
+ PCIMODEL_MAC_PBG3WALLST1,
+ PCIMODEL_MAC_PBG3WALLST2,
+
+ PCIMODEL_MAC_PIPPIN // Apple/Bandai Pippin
+
+ };
+
model_t m_model;
// 60.15 Hz timer for RBV/V8/Sonora/Eagle/VASP/etc.
diff --git a/src/mame/includes/mario.h b/src/mame/includes/mario.h
index 6bfbe421c62..3bfc327a97d 100644
--- a/src/mame/includes/mario.h
+++ b/src/mame/includes/mario.h
@@ -137,6 +137,7 @@ public:
DECLARE_READ8_MEMBER(memory_read_byte);
DECLARE_WRITE8_MEMBER(memory_write_byte);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void set_ea(int ea);
};
/*----------- defined in audio/mario.c -----------*/
diff --git a/src/mame/includes/pgm2.h b/src/mame/includes/pgm2.h
index c31ee657c4a..921b20c6c9f 100644
--- a/src/mame/includes/pgm2.h
+++ b/src/mame/includes/pgm2.h
@@ -32,6 +32,8 @@ public:
m_bg_videoram(*this, "bg_videoram"),
m_sp_videoram(*this, "sp_videoram"),
m_bgscroll(*this, "bgscroll"),
+ m_fgscroll(*this, "fgscroll"),
+ m_vidmode(*this, "vidmode"),
m_gfxdecode2(*this, "gfxdecode2"),
m_gfxdecode3(*this, "gfxdecode3"),
m_arm_aic(*this, "arm_aic"),
@@ -41,10 +43,7 @@ public:
m_bg_palette(*this, "bg_palette"),
m_tx_palette(*this, "tx_palette"),
m_mcu_timer(*this, "mcu_timer"),
- m_memcard0(*this, "memcard_p1"),
- m_memcard1(*this, "memcard_p2"),
- m_memcard2(*this, "memcard_p3"),
- m_memcard3(*this, "memcard_p4")
+ m_memcard(*this, "memcard_p%u", 1U)
{ }
DECLARE_READ32_MEMBER(unk_startup_r);
@@ -56,9 +55,12 @@ public:
DECLARE_WRITE16_MEMBER(share_bank_w);
DECLARE_READ8_MEMBER(shareram_r);
DECLARE_WRITE8_MEMBER(shareram_w);
-
+ DECLARE_WRITE16_MEMBER(vbl_ack_w);
+ DECLARE_WRITE16_MEMBER(unk30120014_w);
+
DECLARE_READ32_MEMBER(orleg2_speedup_r);
DECLARE_READ32_MEMBER(kov2nl_speedup_r);
+ DECLARE_READ32_MEMBER(kof98umh_speedup_r);
DECLARE_READ8_MEMBER(encryption_r);
DECLARE_WRITE8_MEMBER(encryption_w);
@@ -133,6 +135,8 @@ private:
required_shared_ptr<uint32_t> m_bg_videoram;
required_shared_ptr<uint32_t> m_sp_videoram;
required_shared_ptr<uint32_t> m_bgscroll;
+ required_shared_ptr<uint32_t> m_fgscroll;
+ required_shared_ptr<uint32_t> m_vidmode;
required_device<gfxdecode_device> m_gfxdecode2;
required_device<gfxdecode_device> m_gfxdecode3;
required_device<arm_aic_device> m_arm_aic;
@@ -143,12 +147,7 @@ private:
required_device<palette_device> m_tx_palette;
required_device<timer_device> m_mcu_timer;
- optional_device<pgm2_memcard_device> m_memcard0;
- optional_device<pgm2_memcard_device> m_memcard1;
- optional_device<pgm2_memcard_device> m_memcard2;
- optional_device<pgm2_memcard_device> m_memcard3;
- pgm2_memcard_device *m_memcard_device[4];
-
+ optional_device_array<pgm2_memcard_device, 4> m_memcard;
};
#endif
diff --git a/src/mame/includes/seta2.h b/src/mame/includes/seta2.h
index 549073be754..be759c2efcb 100644
--- a/src/mame/includes/seta2.h
+++ b/src/mame/includes/seta2.h
@@ -9,6 +9,7 @@
#include "machine/tmp68301.h"
#include "machine/eepromser.h"
#include "machine/intelfsh.h"
+#include "machine/ticket.h"
#include "machine/timer.h"
#include "machine/upd4992.h"
#include "sound/okim9810.h"
@@ -21,14 +22,17 @@ public:
seta2_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this,"maincpu"),
+ m_gfxdecode(*this, "gfxdecode"),
+ m_screen(*this, "screen"),
+ m_palette(*this, "palette"),
+
m_tmp68301(*this, "tmp68301"),
m_oki(*this, "oki"),
m_eeprom(*this, "eeprom"),
m_flash(*this, "flash"),
m_rtc(*this, "rtc"),
- m_gfxdecode(*this, "gfxdecode"),
- m_screen(*this, "screen"),
- m_palette(*this, "palette"),
+ m_dispenser(*this, "dispenser"),
+
m_nvram(*this, "nvram"),
m_spriteram(*this, "spriteram", 0),
m_tileram(*this, "tileram", 0),
@@ -38,14 +42,16 @@ public:
{ }
required_device<cpu_device> m_maincpu;
+ required_device<gfxdecode_device> m_gfxdecode;
+ required_device<screen_device> m_screen;
+ required_device<palette_device> m_palette;
+
optional_device<tmp68301_device> m_tmp68301;
optional_device<okim9810_device> m_oki;
optional_device<eeprom_serial_93cxx_device> m_eeprom;
optional_device<intelfsh16_device> m_flash;
optional_device<upd4992_device> m_rtc;
- required_device<gfxdecode_device> m_gfxdecode;
- required_device<screen_device> m_screen;
- required_device<palette_device> m_palette;
+ optional_device<ticket_dispenser_device> m_dispenser;
optional_shared_ptr<uint16_t> m_nvram;
optional_shared_ptr<uint16_t> m_spriteram;
@@ -84,6 +90,10 @@ public:
DECLARE_WRITE16_MEMBER(samshoot_coin_w);
+ DECLARE_WRITE16_MEMBER(telpacfl_lamp1_w);
+ DECLARE_WRITE16_MEMBER(telpacfl_lamp2_w);
+ DECLARE_WRITE16_MEMBER(telpacfl_lockout_w);
+
DECLARE_READ16_MEMBER(gundamex_eeprom_r);
DECLARE_WRITE16_MEMBER(gundamex_eeprom_w);
@@ -107,6 +117,7 @@ public:
virtual void video_start() override;
DECLARE_VIDEO_START(yoffset);
DECLARE_VIDEO_START(xoffset);
+ DECLARE_VIDEO_START(xoffset1);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE_LINE_MEMBER(screen_vblank);
diff --git a/src/mame/layout/fidel_desdis_68kg.lay b/src/mame/layout/fidel_desdis_68kg.lay
new file mode 100644
index 00000000000..e3f2d8cdc9b
--- /dev/null
+++ b/src/mame/layout/fidel_desdis_68kg.lay
@@ -0,0 +1,463 @@
+<?xml version="1.0"?>
+<mamelayout version="2">
+
+<!-- define elements -->
+
+ <element name="static_black"><rect><color red="0" green="0" blue="0" /></rect></element>
+
+ <!-- our digit element is bright-on-dark, this means the lcd panel is the wrong colour here -->
+
+ <element name="digit" defstate="0">
+ <led7seg><color red="1.0" green="1.0" blue="1.0" /></led7seg>
+ </element>
+ <element name="ldot" defstate="0">
+ <rect state="1"><color red="1.0" green="1.0" blue="1.0" /></rect>
+ <rect state="0"><color red="0.1" green="0.1" blue="0.1" /></rect>
+ </element>
+
+ <element name="led" defstate="0">
+ <disk state="1"><color red="1.0" green="0.1" blue="0.15" /></disk>
+ <disk state="0"><color red="0.1" green="0.01" blue="0.015" /></disk>
+ </element>
+ <element name="ledg" defstate="0">
+ <disk state="1"><color red="0.15" green="1.0" blue="0.1" /></disk>
+ <disk state="0"><color red="0.015" green="0.1" blue="0.01" /></disk>
+ </element>
+
+ <element name="hl" defstate="0">
+ <text string=" ">
+ <bounds x="0.0" y="0.0" width="1.0" height="1.0" />
+ <color red="0.0" green="0.0" blue="0.0" />
+ </text>
+ <disk state="1">
+ <bounds x="0.12" y="0.12" width="0.76" height="0.76" />
+ <color red="1.0" green="1.0" blue="1.0" />
+ </disk>
+ </element>
+ <element name="hlb" defstate="0">
+ <text string=" ">
+ <bounds x="0.0" y="0.0" width="1.0" height="1.0" />
+ <color red="0.0" green="0.0" blue="0.0" />
+ </text>
+ <disk state="1">
+ <bounds x="0.0" y="0.0" width="1.0" height="1.0" />
+ <color red="1.0" green="1.0" blue="1.0" />
+ </disk>
+ </element>
+ <element name="hlr" defstate="0">
+ <text string=" ">
+ <bounds x="0" y="0" width="8" height="6" />
+ <color red="0.0" green="0.0" blue="0.0" />
+ </text>
+ <disk state="1">
+ <bounds x="2" y="1" width="4" height="4" />
+ <color red="1.0" green="1.0" blue="1.0" />
+ </disk>
+ </element>
+
+ <element name="black"><rect><color red="0.17" green="0.15" blue="0.15" /></rect></element>
+ <element name="white"><rect><color red="0.81" green="0.8" blue="0.79" /></rect></element>
+ <element name="greenb"><rect><color red="0.10" green="0.30" blue="0.15" /></rect></element>
+ <element name="disk_black"><disk><color red="0.17" green="0.15" blue="0.15" /></disk></element>
+ <element name="disk_white"><disk><color red="0.81" green="0.8" blue="0.79" /></disk></element>
+
+ <element name="text_1">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="1"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_2">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="2"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_3">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="3"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_4">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="4"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_5">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="5"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_6">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="6"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_7">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="7"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_8">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="8"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+
+ <element name="text_a">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="A"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_b">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="B"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_c">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="C"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_d">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="D"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_e">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="E"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_f">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="F"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_g">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="G"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_h">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="H"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+
+ <element name="text_white">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="WHITE"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_black">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="BLACK"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_clear">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="CLEAR"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_u1">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="VERIFY"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_u2">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="OPTION"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_u3">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="LEVEL"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_u4">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="TAKE BACK"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_u5">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="HINT"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_u6">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="MOVE"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+
+ <element name="text_shift">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="SHIFT"><color red="0.10" green="0.30" blue="0.15" /></text>
+ </element>
+ <element name="text_s1">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="PROBLEM"><color red="0.10" green="0.30" blue="0.15" /></text>
+ </element>
+ <element name="text_s2">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="TIME"><color red="0.10" green="0.30" blue="0.15" /></text>
+ </element>
+ <element name="text_s3">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="NEW"><color red="0.10" green="0.30" blue="0.15" /></text>
+ </element>
+ <element name="text_s4">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="REPLAY"><color red="0.10" green="0.30" blue="0.15" /></text>
+ </element>
+ <element name="text_s5">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="INFO"><color red="0.10" green="0.30" blue="0.15" /></text>
+ </element>
+ <element name="text_s6">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="ALTERNATE"><color red="0.10" green="0.30" blue="0.15" /></text>
+ </element>
+
+ <element name="text_king">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="&#x265a;"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_queen">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="&#x265b;"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_rook">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="&#x265c;"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_bishop">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="&#x265d;"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_knight">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="&#x265e;"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_pawn">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="&#x265f;"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+
+
+<!-- build screen -->
+
+ <view name="Internal Layout">
+ <bounds left="-7" right="93" top="-2" bottom="103" />
+
+ <bezel element="white"><bounds x="-7.5" y="-2.5" width="101" height="106" /></bezel>
+
+ <!-- chessboard coords -->
+
+ <bezel element="text_8"><bounds x="-3.25" y="7" width="2" height="2" /></bezel>
+ <bezel element="text_7"><bounds x="-3.25" y="17" width="2" height="2" /></bezel>
+ <bezel element="text_6"><bounds x="-3.25" y="27" width="2" height="2" /></bezel>
+ <bezel element="text_5"><bounds x="-3.25" y="37" width="2" height="2" /></bezel>
+ <bezel element="text_4"><bounds x="-3.25" y="47" width="2" height="2" /></bezel>
+ <bezel element="text_3"><bounds x="-3.25" y="57" width="2" height="2" /></bezel>
+ <bezel element="text_2"><bounds x="-3.25" y="67" width="2" height="2" /></bezel>
+ <bezel element="text_1"><bounds x="-3.25" y="77" width="2" height="2" /></bezel>
+
+ <bezel element="text_a"><bounds x="5" y="85" width="2" height="2" /></bezel>
+ <bezel element="text_b"><bounds x="15" y="85" width="2" height="2" /></bezel>
+ <bezel element="text_c"><bounds x="25" y="85" width="2" height="2" /></bezel>
+ <bezel element="text_d"><bounds x="35" y="85" width="2" height="2" /></bezel>
+ <bezel element="text_e"><bounds x="45" y="85" width="2" height="2" /></bezel>
+ <bezel element="text_f"><bounds x="55" y="85" width="2" height="2" /></bezel>
+ <bezel element="text_g"><bounds x="65" y="85" width="2" height="2" /></bezel>
+ <bezel element="text_h"><bounds x="75" y="85" width="2" height="2" /></bezel>
+
+ <!-- chessboard leds -->
+
+ <bezel name="0.7" element="led"><bounds x="-1" y="7.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="0.6" element="led"><bounds x="-1" y="17.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="0.5" element="led"><bounds x="-1" y="27.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="0.4" element="led"><bounds x="-1" y="37.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="0.3" element="led"><bounds x="-1" y="47.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="0.2" element="led"><bounds x="-1" y="57.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="0.1" element="led"><bounds x="-1" y="67.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="0.0" element="led"><bounds x="-1" y="77.25" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="1.0" element="led"><bounds x="7.25" y="85.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.1" element="led"><bounds x="17.25" y="85.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.2" element="led"><bounds x="27.25" y="85.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.3" element="led"><bounds x="37.25" y="85.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.4" element="led"><bounds x="47.25" y="85.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.5" element="led"><bounds x="57.25" y="85.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.6" element="led"><bounds x="67.25" y="85.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.7" element="led"><bounds x="77.25" y="85.5" width="1.5" height="1.5" /></bezel>
+
+ <!-- chessboard bezel -->
+
+ <bezel element="black"><bounds x="2" y="2" width="82" height="82" /></bezel>
+ <bezel element="white"><bounds x="3" y="3" width="80" height="80" /></bezel>
+
+ <bezel element="black"><bounds x="13" y="2.5" width="10" height="10.5" /></bezel>
+ <bezel element="black"><bounds x="33" y="2.5" width="10" height="10.5" /></bezel>
+ <bezel element="black"><bounds x="53" y="2.5" width="10" height="10.5" /></bezel>
+ <bezel element="black"><bounds x="73" y="2.5" width="10.5" height="10.5" /></bezel>
+
+ <bezel element="black"><bounds x="2.5" y="13" width="10.5" height="10" /></bezel>
+ <bezel element="black"><bounds x="23" y="13" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="43" y="13" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="63" y="13" width="10" height="10" /></bezel>
+
+ <bezel element="black"><bounds x="13" y="23" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="33" y="23" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="53" y="23" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="73" y="23" width="10.5" height="10" /></bezel>
+
+ <bezel element="black"><bounds x="2.5" y="33" width="10.5" height="10" /></bezel>
+ <bezel element="black"><bounds x="23" y="33" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="43" y="33" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="63" y="33" width="10" height="10" /></bezel>
+
+ <bezel element="black"><bounds x="13" y="43" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="33" y="43" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="53" y="43" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="73" y="43" width="10.5" height="10" /></bezel>
+
+ <bezel element="black"><bounds x="2.5" y="53" width="10.5" height="10" /></bezel>
+ <bezel element="black"><bounds x="23" y="53" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="43" y="53" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="63" y="53" width="10" height="10" /></bezel>
+
+ <bezel element="black"><bounds x="13" y="63" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="33" y="63" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="53" y="63" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="73" y="63" width="10.5" height="10" /></bezel>
+
+ <bezel element="black"><bounds x="2.5" y="73" width="10.5" height="10.5" /></bezel>
+ <bezel element="black"><bounds x="23" y="73" width="10" height="10.5" /></bezel>
+ <bezel element="black"><bounds x="43" y="73" width="10" height="10.5" /></bezel>
+ <bezel element="black"><bounds x="63" y="73" width="10" height="10.5" /></bezel>
+
+ <!-- chessboard sensors -->
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x80"><bounds x="3" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.0" inputmask="0x40"><bounds x="13" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.0" inputmask="0x20"><bounds x="23" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.0" inputmask="0x10"><bounds x="33" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.0" inputmask="0x08"><bounds x="43" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.0" inputmask="0x04"><bounds x="53" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.0" inputmask="0x02"><bounds x="63" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.0" inputmask="0x01"><bounds x="73" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.1" inputmask="0x80"><bounds x="3" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x40"><bounds x="13" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x20"><bounds x="23" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x10"><bounds x="33" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x08"><bounds x="43" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x04"><bounds x="53" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x02"><bounds x="63" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x01"><bounds x="73" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <bezel element="hl" inputtag="IN.2" inputmask="0x80"><bounds x="3" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x40"><bounds x="13" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x20"><bounds x="23" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x10"><bounds x="33" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x08"><bounds x="43" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x04"><bounds x="53" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x02"><bounds x="63" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x01"><bounds x="73" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.3" inputmask="0x80"><bounds x="3" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x40"><bounds x="13" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x20"><bounds x="23" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x10"><bounds x="33" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x08"><bounds x="43" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x04"><bounds x="53" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x02"><bounds x="63" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x01"><bounds x="73" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <bezel element="hl" inputtag="IN.4" inputmask="0x80"><bounds x="3" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x40"><bounds x="13" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x20"><bounds x="23" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x10"><bounds x="33" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x08"><bounds x="43" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x04"><bounds x="53" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x02"><bounds x="63" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x01"><bounds x="73" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.5" inputmask="0x80"><bounds x="3" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x40"><bounds x="13" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x20"><bounds x="23" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x10"><bounds x="33" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x08"><bounds x="43" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x04"><bounds x="53" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x02"><bounds x="63" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x01"><bounds x="73" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <bezel element="hl" inputtag="IN.6" inputmask="0x80"><bounds x="3" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x40"><bounds x="13" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x20"><bounds x="23" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x10"><bounds x="33" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x08"><bounds x="43" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x04"><bounds x="53" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x02"><bounds x="63" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x01"><bounds x="73" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.7" inputmask="0x80"><bounds x="3" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x40"><bounds x="13" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x20"><bounds x="23" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x10"><bounds x="33" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x08"><bounds x="43" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x04"><bounds x="53" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x02"><bounds x="63" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x01"><bounds x="73" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <!-- bottom side -->
+
+ <bezel element="text_white"><bounds x="33" y="87.5" width="10" height="2" /></bezel>
+ <bezel element="text_black"><bounds x="43" y="87.5" width="10" height="2" /></bezel>
+
+ <bezel element="text_s1"><bounds x="3" y="89.7" width="10" height="1.8" /></bezel>
+ <bezel element="text_s2"><bounds x="12" y="89.7" width="10" height="1.8" /></bezel>
+ <bezel element="text_s3"><bounds x="21" y="89.7" width="10" height="1.8" /></bezel>
+ <bezel element="text_s4"><bounds x="55" y="89.7" width="10" height="1.8" /></bezel>
+ <bezel element="text_s5"><bounds x="64" y="89.7" width="10" height="1.8" /></bezel>
+ <bezel element="text_s6"><bounds x="73" y="89.7" width="10" height="1.8" /></bezel>
+
+ <bezel element="text_u1"><bounds x="3" y="96.3" width="10" height="1.8" /></bezel>
+ <bezel element="text_u2"><bounds x="12" y="96.3" width="10" height="1.8" /></bezel>
+ <bezel element="text_u3"><bounds x="21" y="96.3" width="10" height="1.8" /></bezel>
+ <bezel element="text_u4"><bounds x="55" y="96.3" width="10" height="1.8" /></bezel>
+ <bezel element="text_u5"><bounds x="64" y="96.3" width="10" height="1.8" /></bezel>
+ <bezel element="text_u6"><bounds x="73" y="96.3" width="10" height="1.8" /></bezel>
+
+ <bezel element="text_king"><bounds x="3" y="98" width="10" height="4" /></bezel>
+ <bezel element="text_queen"><bounds x="12" y="98" width="10" height="4" /></bezel>
+ <bezel element="text_rook"><bounds x="21" y="98" width="10" height="4" /></bezel>
+ <bezel element="text_bishop"><bounds x="55" y="98" width="10" height="4" /></bezel>
+ <bezel element="text_knight"><bounds x="64" y="98" width="10" height="4" /></bezel>
+ <bezel element="text_pawn"><bounds x="73" y="98" width="10" height="4" /></bezel>
+
+ <bezel element="disk_black"><bounds x="6" y="92" width="4" height="4" /></bezel>
+ <bezel element="disk_black"><bounds x="15" y="92" width="4" height="4" /></bezel>
+ <bezel element="disk_black"><bounds x="24" y="92" width="4" height="4" /></bezel>
+ <bezel element="disk_black"><bounds x="58" y="92" width="4" height="4" /></bezel>
+ <bezel element="disk_black"><bounds x="67" y="92" width="4" height="4" /></bezel>
+ <bezel element="disk_black"><bounds x="76" y="92" width="4" height="4" /></bezel>
+
+ <bezel element="disk_white"><bounds x="6.5" y="92.5" width="3" height="3" /></bezel>
+ <bezel element="disk_white"><bounds x="15.5" y="92.5" width="3" height="3" /></bezel>
+ <bezel element="disk_white"><bounds x="24.5" y="92.5" width="3" height="3" /></bezel>
+ <bezel element="disk_white"><bounds x="58.5" y="92.5" width="3" height="3" /></bezel>
+ <bezel element="disk_white"><bounds x="67.5" y="92.5" width="3" height="3" /></bezel>
+ <bezel element="disk_white"><bounds x="76.5" y="92.5" width="3" height="3" /></bezel>
+
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x40"><bounds x="6" y="92" width="4" height="4" /><color alpha="0.3" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x20"><bounds x="15" y="92" width="4" height="4" /><color alpha="0.3" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x10"><bounds x="24" y="92" width="4" height="4" /><color alpha="0.3" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x08"><bounds x="58" y="92" width="4" height="4" /><color alpha="0.3" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x04"><bounds x="67" y="92" width="4" height="4" /><color alpha="0.3" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x02"><bounds x="76" y="92" width="4" height="4" /><color alpha="0.3" /></bezel>
+
+ <bezel element="greenb"><bounds x="-5" y="91" width="8" height="6" /></bezel>
+ <bezel element="white"><bounds x="-4.25" y="91.75" width="6.5" height="4.5" /></bezel>
+ <bezel element="text_shift"><bounds x="-4" y="93" width="6" height="2" /></bezel>
+ <bezel name="1.8" element="ledg"><bounds x="0.65" y="94.65" width="1.5" height="1.5" /></bezel>
+ <bezel element="hlr" inputtag="IN.8" inputmask="0x80"><bounds x="-5" y="91" width="8" height="6" /><color alpha="0.3" /></bezel>
+
+ <bezel element="black"><bounds x="83" y="91" width="8" height="6" /></bezel>
+ <bezel element="white"><bounds x="83.75" y="91.75" width="6.5" height="4.5" /></bezel>
+ <bezel element="text_clear"><bounds x="84" y="93" width="6" height="2" /></bezel>
+ <bezel element="hlr" inputtag="IN.8" inputmask="0x01"><bounds x="83" y="91" width="8" height="6" /><color alpha="0.3" /></bezel>
+
+ <!-- lcd panel -->
+
+ <bezel element="static_black"><bounds x="30.5" y="90" width="25" height="8" /></bezel>
+
+ <bezel name="digit2" element="digit"><bounds x="32" y="91" width="4" height="6" /></bezel>
+ <bezel name="digit3" element="digit"><bounds x="38" y="91" width="4" height="6" /></bezel>
+ <bezel name="digit4" element="digit"><bounds x="44" y="91" width="4" height="6" /></bezel>
+ <bezel name="digit5" element="digit"><bounds x="50" y="91" width="4" height="6" /></bezel>
+
+ <bezel name="2.7" element="ldot"><bounds x="36.5" y="96.5" width="0.6" height="0.6" /></bezel>
+ <bezel name="3.7" element="ldot"><bounds x="42.5" y="96.5" width="0.6" height="0.6" /></bezel>
+ <bezel name="4.7" element="ldot"><bounds x="48.5" y="96.5" width="0.6" height="0.6" /></bezel>
+
+ <bezel name="5.7" element="ldot"><bounds x="42.9" y="92.8" width="0.6" height="0.6" /></bezel>
+ <bezel name="5.7" element="ldot"><bounds x="42.7" y="94.65" width="0.6" height="0.6" /></bezel>
+
+ </view>
+</mamelayout>
diff --git a/src/mame/layout/fidel_desdis_68k.lay b/src/mame/layout/fidel_desdis_68kr.lay
index 84b93b034fc..d07f864435a 100644
--- a/src/mame/layout/fidel_desdis_68k.lay
+++ b/src/mame/layout/fidel_desdis_68kr.lay
@@ -53,7 +53,6 @@
<element name="black"><rect><color red="0.17" green="0.15" blue="0.15" /></rect></element>
<element name="white"><rect><color red="0.81" green="0.8" blue="0.79" /></rect></element>
- <element name="redb"><rect><color red="0.81" green="0.3" blue="0.29" /></rect></element>
<element name="disk_black"><disk><color red="0.17" green="0.15" blue="0.15" /></disk></element>
<element name="disk_white"><disk><color red="0.81" green="0.8" blue="0.79" /></disk></element>
@@ -428,7 +427,7 @@
<bezel element="hlb" inputtag="IN.8" inputmask="0x04"><bounds x="67" y="92" width="4" height="4" /><color alpha="0.3" /></bezel>
<bezel element="hlb" inputtag="IN.8" inputmask="0x02"><bounds x="76" y="92" width="4" height="4" /><color alpha="0.3" /></bezel>
- <bezel element="redb"><bounds x="-5" y="91" width="8" height="6" /></bezel>
+ <bezel element="black"><bounds x="-5" y="91" width="8" height="6" /></bezel>
<bezel element="white"><bounds x="-4.25" y="91.75" width="6.5" height="4.5" /></bezel>
<bezel element="text_shift"><bounds x="-4" y="93" width="6" height="2" /></bezel>
<bezel name="1.8" element="led"><bounds x="0.65" y="94.65" width="1.5" height="1.5" /></bezel>
diff --git a/src/mame/machine/315-5881_crypt.cpp b/src/mame/machine/315-5881_crypt.cpp
index 275c5614442..2d3144a7134 100644
--- a/src/mame/machine/315-5881_crypt.cpp
+++ b/src/mame/machine/315-5881_crypt.cpp
@@ -617,7 +617,7 @@ uint16_t sega_315_5881_crypt_device::block_decrypt(uint32_t game_key, uint16_t s
// First Feistel Network
- aux = BITSWAP16(counter, 5, 12, 14, 13, 9, 3, 6, 4, 8, 1, 15, 11, 0, 7, 10, 2);
+ aux = bitswap<16>(counter, 5, 12, 14, 13, 9, 3, 6, 4, 8, 1, 15, 11, 0, 7, 10, 2);
// 1st round
B = aux >> 8;
@@ -647,7 +647,7 @@ uint16_t sega_315_5881_crypt_device::block_decrypt(uint32_t game_key, uint16_t s
// Second Feistel Network
- aux = BITSWAP16(data, 14, 3, 8, 12, 13, 7, 15, 4, 6, 2, 9, 5, 11, 0, 1, 10);
+ aux = bitswap<16>(data, 14, 3, 8, 12, 13, 7, 15, 4, 6, 2, 9, 5, 11, 0, 1, 10);
// 1st round
B = aux >> 8;
@@ -664,7 +664,7 @@ uint16_t sega_315_5881_crypt_device::block_decrypt(uint32_t game_key, uint16_t s
aux = (B << 8) | A;
- aux = BITSWAP16(aux, 15, 7, 6, 14, 13, 12, 5, 4, 3, 2, 11, 10, 9, 1, 0, 8);
+ aux = bitswap<16>(aux, 15, 7, 6, 14, 13, 12, 5, 4, 3, 2, 11, 10, 9, 1, 0, 8);
return aux;
}
diff --git a/src/mame/machine/amiga.cpp b/src/mame/machine/amiga.cpp
index dc279456348..e84416d629b 100644
--- a/src/mame/machine/amiga.cpp
+++ b/src/mame/machine/amiga.cpp
@@ -1042,7 +1042,7 @@ READ16_MEMBER( amiga_state::cia_r )
data |= m_cia_1->read(space, offset >> 7) << 8;
if (LOG_CIA)
- logerror("%s: cia_r(%06x) = %04x & %04x\n", space.machine().describe_context(), offset, data, mem_mask);
+ logerror("%s: cia_r(%06x) = %04x & %04x\n", machine().describe_context(), offset, data, mem_mask);
return data;
}
@@ -1050,7 +1050,7 @@ READ16_MEMBER( amiga_state::cia_r )
WRITE16_MEMBER( amiga_state::cia_w )
{
if (LOG_CIA)
- logerror("%s: cia_w(%06x) = %04x & %04x\n", space.machine().describe_context(), offset, data, mem_mask);
+ logerror("%s: cia_w(%06x) = %04x & %04x\n", machine().describe_context(), offset, data, mem_mask);
if ((offset & 0x1000/2) == 0 && ACCESSING_BITS_0_7)
m_cia_0->write(space, offset >> 7, data & 0xff);
@@ -1232,11 +1232,11 @@ READ16_MEMBER( amiga_state::custom_chip_r )
return CUSTOM_REG(REG_INTREQ);
case REG_COPJMP1:
- amiga_copper_setpc(space.machine(), CUSTOM_REG_LONG(REG_COP1LCH));
+ amiga_copper_setpc(machine(), CUSTOM_REG_LONG(REG_COP1LCH));
break;
case REG_COPJMP2:
- amiga_copper_setpc(space.machine(), CUSTOM_REG_LONG(REG_COP2LCH));
+ amiga_copper_setpc(machine(), CUSTOM_REG_LONG(REG_COP2LCH));
break;
case REG_CLXDAT:
@@ -1393,19 +1393,19 @@ WRITE16_MEMBER( amiga_state::custom_chip_w )
case REG_SPR0PTL: case REG_SPR1PTL: case REG_SPR2PTL: case REG_SPR3PTL:
case REG_SPR4PTL: case REG_SPR5PTL: case REG_SPR6PTL: case REG_SPR7PTL:
- amiga_sprite_dma_reset(space.machine(), (offset - REG_SPR0PTL) / 2);
+ amiga_sprite_dma_reset(machine(), (offset - REG_SPR0PTL) / 2);
break;
case REG_SPR0CTL: case REG_SPR1CTL: case REG_SPR2CTL: case REG_SPR3CTL:
case REG_SPR4CTL: case REG_SPR5CTL: case REG_SPR6CTL: case REG_SPR7CTL:
/* disable comparitor on writes here */
- amiga_sprite_enable_comparitor(space.machine(), (offset - REG_SPR0CTL) / 4, false);
+ amiga_sprite_enable_comparitor(machine(), (offset - REG_SPR0CTL) / 4, false);
break;
case REG_SPR0DATA: case REG_SPR1DATA: case REG_SPR2DATA: case REG_SPR3DATA:
case REG_SPR4DATA: case REG_SPR5DATA: case REG_SPR6DATA: case REG_SPR7DATA:
/* enable comparitor on writes here */
- amiga_sprite_enable_comparitor(space.machine(), (offset - REG_SPR0DATA) / 4, true);
+ amiga_sprite_enable_comparitor(machine(), (offset - REG_SPR0DATA) / 4, true);
break;
case REG_COP1LCH:
@@ -1414,11 +1414,11 @@ WRITE16_MEMBER( amiga_state::custom_chip_w )
break;
case REG_COPJMP1:
- amiga_copper_setpc(space.machine(), CUSTOM_REG_LONG(REG_COP1LCH));
+ amiga_copper_setpc(machine(), CUSTOM_REG_LONG(REG_COP1LCH));
break;
case REG_COPJMP2:
- amiga_copper_setpc(space.machine(), CUSTOM_REG_LONG(REG_COP2LCH));
+ amiga_copper_setpc(machine(), CUSTOM_REG_LONG(REG_COP2LCH));
break;
case REG_DDFSTRT:
@@ -1516,7 +1516,7 @@ WRITE16_MEMBER( amiga_state::custom_chip_w )
case REG_COLOR28: case REG_COLOR29: case REG_COLOR30: case REG_COLOR31:
if (IS_AGA(state))
{
- amiga_aga_palette_write(space.machine(), offset - REG_COLOR00, data);
+ amiga_aga_palette_write(machine(), offset - REG_COLOR00, data);
}
else
{
diff --git a/src/mame/machine/apollo_dbg.cpp b/src/mame/machine/apollo_dbg.cpp
index 208a563b7c3..345788256f2 100644
--- a/src/mame/machine/apollo_dbg.cpp
+++ b/src/mame/machine/apollo_dbg.cpp
@@ -13,7 +13,9 @@
#include "emu.h"
#include "debug/debugbuf.h"
#include "includes/apollo.h"
-#include "cpu/m68000/m68kcpu.h"
+#include "cpu/m68000/m68000.h"
+
+#if 0
//------------------------------------------------------
// TRAP 0
@@ -1168,3 +1170,4 @@ int apollo_debug_instruction_hook(m68000_base_device *device, offs_t curpc)
}
return 0;
}
+#endif
diff --git a/src/mame/machine/apple2.cpp b/src/mame/machine/apple2.cpp
index 16b99b9c9c1..0995660c1a6 100644
--- a/src/mame/machine/apple2.cpp
+++ b/src/mame/machine/apple2.cpp
@@ -1723,7 +1723,7 @@ READ8_MEMBER( apple2_state::apple2_c01x_r )
case 0x06: result |= (m_flags & VAR_ALTZP) ? 0x80 : 0x00; break;
case 0x07: result |= (m_flags & VAR_SLOTC3ROM) ? 0x80 : 0x00; break;
case 0x08: result |= (m_flags & VAR_80STORE) ? 0x80 : 0x00; break;
- case 0x09: result |= !space.machine().first_screen()->vblank() ? 0x80 : 0x00; break;
+ case 0x09: result |= !machine().first_screen()->vblank() ? 0x80 : 0x00; break;
case 0x0A: result |= (m_flags & VAR_TEXT) ? 0x80 : 0x00; break;
case 0x0B: result |= (m_flags & VAR_MIXED) ? 0x80 : 0x00; break;
case 0x0C: result |= (m_flags & VAR_PAGE2) ? 0x80 : 0x00; break;
@@ -1795,7 +1795,7 @@ READ8_MEMBER ( apple2_state::apple2_c03x_r )
{
if (!offset)
{
- speaker_sound_device *speaker = space.machine().device<speaker_sound_device>("a2speaker");
+ speaker_sound_device *speaker = machine().device<speaker_sound_device>("a2speaker");
m_a2_speaker_state ^= 1;
speaker->level_w(m_a2_speaker_state);
@@ -1902,19 +1902,19 @@ READ8_MEMBER ( apple2_state::apple2_c06x_r )
break;
case 0x04:
/* X Joystick 1 axis */
- result = space.machine().time().as_double() < m_joystick_x1_time;
+ result = machine().time().as_double() < m_joystick_x1_time;
break;
case 0x05:
/* Y Joystick 1 axis */
- result = space.machine().time().as_double() < m_joystick_y1_time;
+ result = machine().time().as_double() < m_joystick_y1_time;
break;
case 0x06:
/* X Joystick 2 axis */
- result = space.machine().time().as_double() < m_joystick_x2_time;
+ result = machine().time().as_double() < m_joystick_x2_time;
break;
case 0x07:
/* Y Joystick 2 axis */
- result = space.machine().time().as_double() < m_joystick_y2_time;
+ result = machine().time().as_double() < m_joystick_y2_time;
break;
default:
/* c060 Empty Cassette head read
diff --git a/src/mame/machine/apple2gs.cpp b/src/mame/machine/apple2gs.cpp
index 5913d958ff6..3c094195d34 100644
--- a/src/mame/machine/apple2gs.cpp
+++ b/src/mame/machine/apple2gs.cpp
@@ -919,7 +919,7 @@ READ8_MEMBER( apple2gs_state::apple2gs_c0xx_r )
#endif
case 0x19: /* C019 - RDVBLBAR */
- result = (space.machine().first_screen()->vpos() >= (192+BORDER_TOP)) ? 0x80 : 0x00;
+ result = (machine().first_screen()->vpos() >= (192+BORDER_TOP)) ? 0x80 : 0x00;
break;
case 0x22: /* C022 - TBCOLOR */
@@ -1020,7 +1020,7 @@ READ8_MEMBER( apple2gs_state::apple2gs_c0xx_r )
break;
case 0x2F: /* C02F - HORIZCNT */
- result = space.machine().first_screen()->hpos() / 11;
+ result = machine().first_screen()->hpos() / 11;
if (result > 0)
{
result += 0x40;
diff --git a/src/mame/machine/atarifdc.cpp b/src/mame/machine/atarifdc.cpp
index 0603ebda199..207d9ad5ab1 100644
--- a/src/mame/machine/atarifdc.cpp
+++ b/src/mame/machine/atarifdc.cpp
@@ -111,7 +111,7 @@ static void _atari_load_proc(device_image_interface &image, bool is_created)
void atari_fdc_device::atari_load_proc(device_image_interface &image, bool is_created)
{
- int id = floppy_get_drive(image);
+ int id = floppy_get_drive(&image.device());
int size, i;
m_drv[id].image = std::make_unique<uint8_t[]>(MAXSIZE);
diff --git a/src/mame/machine/awboard.cpp b/src/mame/machine/awboard.cpp
index ddc49a3cfa0..e03f11d22c0 100644
--- a/src/mame/machine/awboard.cpp
+++ b/src/mame/machine/awboard.cpp
@@ -241,10 +241,10 @@ uint16_t aw_rom_board::decrypt(uint16_t cipherText, uint32_t address, const uint
const int* pbox = permutation_table[key>>18];
const sbox_set* ss = &sboxes_table[(key>>16)&3];
- aux = BITSWAP16(cipherText,
+ aux = bitswap<16>(cipherText,
pbox[15],pbox[14],pbox[13],pbox[12],pbox[11],pbox[10],pbox[9],pbox[8],
pbox[7],pbox[6],pbox[5],pbox[4],pbox[3],pbox[2],pbox[1],pbox[0]);
- aux = aux ^ BITSWAP16(address, 13,5,2, 14,10,9,4, 15,11,6,1, 12,8,7,3,0);
+ aux = aux ^ bitswap<16>(address, 13,5,2, 14,10,9,4, 15,11,6,1, 12,8,7,3,0);
b0 = aux&0x1f;
b1 = (aux>>5)&0xf;
diff --git a/src/mame/machine/bbc.cpp b/src/mame/machine/bbc.cpp
index 6a99a712bb2..943ae075275 100644
--- a/src/mame/machine/bbc.cpp
+++ b/src/mame/machine/bbc.cpp
@@ -741,7 +741,7 @@ void bbc_state::bbcb_IC32_initialise(bbc_state *state)
void bbc_state::MC146818_set(address_space &space)
{
//logerror ("146181 WR=%d DS=%d AS=%d CE=%d \n",m_MC146818_WR,m_MC146818_DS,m_MC146818_AS,m_MC146818_CE);
- //mc146818_device *rtc = space.machine().device<mc146818_device>("rtc");
+ //mc146818_device *rtc = machine().device<mc146818_device>("rtc");
// if chip enabled
if (m_MC146818_CE)
diff --git a/src/mame/machine/bfm_bd1.cpp b/src/mame/machine/bfm_bd1.cpp
index b9abdaa0deb..10d18618fa0 100644
--- a/src/mame/machine/bfm_bd1.cpp
+++ b/src/mame/machine/bfm_bd1.cpp
@@ -164,7 +164,7 @@ void bfm_bd1_device::device_reset()
uint16_t bfm_bd1_device::set_display(uint16_t segin)
{
- return BITSWAP16(segin,8,12,11,7,6,4,10,3,14,15,0,13,9,5,1,2);
+ return bitswap<16>(segin,8,12,11,7,6,4,10,3,14,15,0,13,9,5,1,2);
}
void bfm_bd1_device::device_post_load()
diff --git a/src/mame/machine/bfm_bda.cpp b/src/mame/machine/bfm_bda.cpp
index 263db3a7a0c..6d2794b7dd1 100644
--- a/src/mame/machine/bfm_bda.cpp
+++ b/src/mame/machine/bfm_bda.cpp
@@ -146,7 +146,7 @@ void bfm_bda_device::device_reset()
uint16_t bfm_bda_device::set_display(uint16_t segin)
{
- return BITSWAP16(segin,8,12,11,7,6,4,10,3,14,15,0,13,9,5,1,2);
+ return bitswap<16>(segin,8,12,11,7,6,4,10,3,14,15,0,13,9,5,1,2);
}
void bfm_bda_device::device_post_load()
diff --git a/src/mame/machine/cps2crypt.cpp b/src/mame/machine/cps2crypt.cpp
index ceccdea6b5b..96d94a20f47 100644
--- a/src/mame/machine/cps2crypt.cpp
+++ b/src/mame/machine/cps2crypt.cpp
@@ -557,8 +557,8 @@ static uint16_t feistel(uint16_t val, const int *bitsA, const int *bitsB,
const struct optimised_sbox* boxes1, const struct optimised_sbox* boxes2, const struct optimised_sbox* boxes3, const struct optimised_sbox* boxes4,
uint32_t key1, uint32_t key2, uint32_t key3, uint32_t key4)
{
- uint8_t l = BITSWAP8(val, bitsB[7],bitsB[6],bitsB[5],bitsB[4],bitsB[3],bitsB[2],bitsB[1],bitsB[0]);
- uint8_t r = BITSWAP8(val, bitsA[7],bitsA[6],bitsA[5],bitsA[4],bitsA[3],bitsA[2],bitsA[1],bitsA[0]);
+ uint8_t l = bitswap<8>(val, bitsB[7],bitsB[6],bitsB[5],bitsB[4],bitsB[3],bitsB[2],bitsB[1],bitsB[0]);
+ uint8_t r = bitswap<8>(val, bitsA[7],bitsA[6],bitsA[5],bitsA[4],bitsA[3],bitsA[2],bitsA[1],bitsA[0]);
l ^= fn(r, boxes1, key1);
r ^= fn(l, boxes2, key2);
diff --git a/src/mame/machine/deco102.cpp b/src/mame/machine/deco102.cpp
index 210ee3f6afa..0c643c529aa 100644
--- a/src/mame/machine/deco102.cpp
+++ b/src/mame/machine/deco102.cpp
@@ -44,7 +44,7 @@ static uint16_t decrypt(uint16_t data, int address, int select_xor)
xorval = xors[j];
// decrypt
- return xorval ^ BITSWAP16(data,
+ return xorval ^ bitswap<16>(data,
bs[0],bs[1],bs[2],bs[3],bs[4],bs[5],bs[6],bs[7],
bs[8],bs[9],bs[10],bs[11],bs[12],bs[13],bs[14],bs[15]);
}
diff --git a/src/mame/machine/deco146.cpp b/src/mame/machine/deco146.cpp
index 05bc061ce3e..fd15795691a 100644
--- a/src/mame/machine/deco146.cpp
+++ b/src/mame/machine/deco146.cpp
@@ -1142,7 +1142,7 @@ inline uint16_t reorder(uint16_t input, uint8_t const *weights)
void deco_146_base_device::write_data(address_space &space, uint16_t address, uint16_t data, uint16_t mem_mask, uint8_t &csflags)
{
- address = BITSWAP16(address>>1, 15,14,13,12,11,10, m_external_addrswap[9],m_external_addrswap[8] ,m_external_addrswap[7],m_external_addrswap[6],m_external_addrswap[5],m_external_addrswap[4],m_external_addrswap[3],m_external_addrswap[2],m_external_addrswap[1],m_external_addrswap[0]) << 1;
+ address = bitswap<16>(address>>1, 15,14,13,12,11,10, m_external_addrswap[9],m_external_addrswap[8] ,m_external_addrswap[7],m_external_addrswap[6],m_external_addrswap[5],m_external_addrswap[4],m_external_addrswap[3],m_external_addrswap[2],m_external_addrswap[1],m_external_addrswap[0]) << 1;
csflags = 0;
int upper_addr_bits = (address & 0x7800) >> 11;
@@ -1268,7 +1268,7 @@ void deco_146_base_device::write_protport(address_space &space, uint16_t address
uint16_t deco_146_base_device::read_data(uint16_t address, uint16_t mem_mask, uint8_t &csflags)
{
- address = BITSWAP16(address>>1, 15,14,13,12,11,10, m_external_addrswap[9],m_external_addrswap[8] ,m_external_addrswap[7],m_external_addrswap[6],m_external_addrswap[5],m_external_addrswap[4],m_external_addrswap[3],m_external_addrswap[2],m_external_addrswap[1],m_external_addrswap[0]) << 1;
+ address = bitswap<16>(address>>1, 15,14,13,12,11,10, m_external_addrswap[9],m_external_addrswap[8] ,m_external_addrswap[7],m_external_addrswap[6],m_external_addrswap[5],m_external_addrswap[4],m_external_addrswap[3],m_external_addrswap[2],m_external_addrswap[1],m_external_addrswap[0]) << 1;
uint16_t retdata = 0;
csflags = 0;
diff --git a/src/mame/machine/deco156.cpp b/src/mame/machine/deco156.cpp
index 3258c55a66d..d763611d517 100644
--- a/src/mame/machine/deco156.cpp
+++ b/src/mame/machine/deco156.cpp
@@ -87,7 +87,7 @@ static void decrypt(uint32_t *src, uint32_t *dst, int length)
switch (a & 3)
{
case 0:
- dword = BITSWAP32( dword ^ 0xec63197a,
+ dword = bitswap<32>( dword ^ 0xec63197a,
1, 4, 7, 28, 22, 18, 20, 9,
16, 10, 30, 2, 31, 24, 19, 29,
6, 21, 23, 11, 12, 13, 5, 0,
@@ -95,7 +95,7 @@ static void decrypt(uint32_t *src, uint32_t *dst, int length)
break;
case 1:
- dword = BITSWAP32( dword ^ 0x58a5a55f,
+ dword = bitswap<32>( dword ^ 0x58a5a55f,
14, 23, 28, 29, 6, 24, 10, 1,
5, 16, 7, 2, 30, 8, 18, 3,
31, 22, 25, 20, 17, 0, 19, 27,
@@ -103,7 +103,7 @@ static void decrypt(uint32_t *src, uint32_t *dst, int length)
break;
case 2:
- dword = BITSWAP32( dword ^ 0xe3a65f16,
+ dword = bitswap<32>( dword ^ 0xe3a65f16,
19, 30, 21, 4, 2, 18, 15, 1,
12, 25, 8, 0, 24, 20, 17, 23,
22, 26, 28, 16, 9, 27, 6, 11,
@@ -111,7 +111,7 @@ static void decrypt(uint32_t *src, uint32_t *dst, int length)
break;
case 3:
- dword = BITSWAP32( dword ^ 0x28d93783,
+ dword = bitswap<32>( dword ^ 0x28d93783,
30, 6, 15, 0, 31, 18, 26, 22,
14, 23, 19, 17, 10, 8, 11, 20,
1, 28, 2, 4, 9, 24, 25, 27,
diff --git a/src/mame/machine/deco222.cpp b/src/mame/machine/deco222.cpp
index 5be4df0bb60..1371f8087b4 100644
--- a/src/mame/machine/deco222.cpp
+++ b/src/mame/machine/deco222.cpp
@@ -31,7 +31,7 @@ void deco_222_device::device_reset()
uint8_t deco_222_device::mi_decrypt::read_sync(uint16_t adr)
{
- return BITSWAP8(direct->read_byte(adr) ,7,5,6,4,3,2,1,0);
+ return bitswap<8>(direct->read_byte(adr) ,7,5,6,4,3,2,1,0);
}
util::disasm_interface *deco_222_device::create_disassembler()
@@ -46,7 +46,7 @@ u32 deco_222_device::disassembler::interface_flags() const
u8 deco_222_device::disassembler::decrypt8(u8 value, offs_t pc, bool opcode) const
{
- return opcode ? BITSWAP8(value,7,5,6,4,3,2,1,0) : value;
+ return opcode ? bitswap<8>(value,7,5,6,4,3,2,1,0) : value;
}
deco_c10707_device::deco_c10707_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
@@ -68,7 +68,7 @@ void deco_c10707_device::device_reset()
uint8_t deco_c10707_device::mi_decrypt::read_sync(uint16_t adr)
{
- return BITSWAP8(direct->read_byte(adr) ,7,5,6,4,3,2,1,0);
+ return bitswap<8>(direct->read_byte(adr) ,7,5,6,4,3,2,1,0);
}
util::disasm_interface *deco_c10707_device::create_disassembler()
@@ -83,5 +83,5 @@ u32 deco_c10707_device::disassembler::interface_flags() const
u8 deco_c10707_device::disassembler::decrypt8(u8 value, offs_t pc, bool opcode) const
{
- return opcode ? BITSWAP8(value,7,5,6,4,3,2,1,0) : value;
+ return opcode ? bitswap<8>(value,7,5,6,4,3,2,1,0) : value;
}
diff --git a/src/mame/machine/decocass.cpp b/src/mame/machine/decocass.cpp
index 56488a60027..ee81c9d4b7d 100644
--- a/src/mame/machine/decocass.cpp
+++ b/src/mame/machine/decocass.cpp
@@ -164,7 +164,7 @@ READ8_MEMBER(decocass_state::decocass_input_r)
switch (offset & 7)
{
case 0: case 1: case 2:
- data = space.machine().root_device().ioport(portnames[offset & 7])->read();
+ data = machine().root_device().ioport(portnames[offset & 7])->read();
break;
case 3: case 4: case 5: case 6:
data = m_quadrature_decoder[(offset & 7) - 3];
@@ -192,7 +192,7 @@ READ8_MEMBER(decocass_state::decocass_input_r)
WRITE8_MEMBER(decocass_state::decocass_reset_w)
{
- LOG(1,("%10s 6502-PC: %04x decocass_reset_w(%02x): $%02x\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
+ LOG(1,("%10s 6502-PC: %04x decocass_reset_w(%02x): $%02x\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
m_decocass_reset = data;
/* CPU #1 active high reset */
@@ -257,7 +257,7 @@ READ8_MEMBER(decocass_type1_state::decocass_type1_r)
data = (BIT(data, 0) << 0) | (BIT(data, 1) << 1) | 0x7c;
LOG(4,("%10s 6502-PC: %04x decocass_type1_r(%02x): $%02x <- (%s %s)\n",
- space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data,
+ machine().time().as_string(6), space.device().safe_pcbase(), offset, data,
(data & 1) ? "OBF" : "-",
(data & 2) ? "IBF" : "-"));
}
@@ -265,7 +265,7 @@ READ8_MEMBER(decocass_type1_state::decocass_type1_r)
{
offs_t promaddr;
uint8_t save;
- uint8_t *prom = space.machine().root_device().memregion("dongle")->base();
+ uint8_t *prom = machine().root_device().memregion("dongle")->base();
if (m_firsttime)
{
@@ -310,7 +310,7 @@ READ8_MEMBER(decocass_type1_state::decocass_type1_r)
}
LOG(3,("%10s 6502-PC: %04x decocass_type1_r(%02x): $%02x\n",
- space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
+ machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
m_latch1 = save; /* latch the data for the next A0 == 0 read */
}
@@ -518,7 +518,7 @@ READ8_MEMBER(decocass_type2_state::decocass_type2_r)
{
uint8_t *prom = memregion("dongle")->base();
data = prom[256 * m_type2_d2_latch + m_type2_promaddr];
- LOG(3,("%10s 6502-PC: %04x decocass_type2_r(%02x): $%02x <- prom[%03x]\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, 256 * m_type2_d2_latch + m_type2_promaddr));
+ LOG(3,("%10s 6502-PC: %04x decocass_type2_r(%02x): $%02x <- prom[%03x]\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, 256 * m_type2_d2_latch + m_type2_promaddr));
}
else
{
@@ -532,7 +532,7 @@ READ8_MEMBER(decocass_type2_state::decocass_type2_r)
else
data = offset & 0xff;
- LOG(3,("%10s 6502-PC: %04x decocass_type2_r(%02x): $%02x <- 8041-%s\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, offset & 1 ? "STATUS" : "DATA"));
+ LOG(3,("%10s 6502-PC: %04x decocass_type2_r(%02x): $%02x <- 8041-%s\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, offset & 1 ? "STATUS" : "DATA"));
}
return data;
}
@@ -543,18 +543,18 @@ WRITE8_MEMBER(decocass_type2_state::decocass_type2_w)
{
if (1 == (offset & 1))
{
- LOG(4,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> set PROM+D2 latch", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
+ LOG(4,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> set PROM+D2 latch", machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
}
else
{
m_type2_promaddr = data;
- LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> set PROM addr $%02x\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, m_type2_promaddr));
+ LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> set PROM addr $%02x\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, m_type2_promaddr));
return;
}
}
else
{
- LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> %s ", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, offset & 1 ? "8041-CMND" : "8041 DATA"));
+ LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> %s ", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, offset & 1 ? "8041-CMND" : "8041 DATA"));
}
if (1 == (offset & 1))
{
@@ -600,7 +600,7 @@ READ8_MEMBER(decocass_type3_state::decocass_type3_r)
{
uint8_t *prom = memregion("dongle")->base();
data = prom[m_type3_ctrs];
- LOG(3,("%10s 6502-PC: %04x decocass_type3_r(%02x): $%02x <- prom[$%03x]\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, m_type3_ctrs));
+ LOG(3,("%10s 6502-PC: %04x decocass_type3_r(%02x): $%02x <- prom[$%03x]\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, m_type3_ctrs));
if (++m_type3_ctrs == 4096)
m_type3_ctrs = 0;
}
@@ -609,12 +609,12 @@ READ8_MEMBER(decocass_type3_state::decocass_type3_r)
if (0 == (offset & E5XX_MASK))
{
data = m_mcu->upi41_master_r(space,1);
- LOG(4,("%10s 6502-PC: %04x decocass_type3_r(%02x): $%02x <- 8041 STATUS\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
+ LOG(4,("%10s 6502-PC: %04x decocass_type3_r(%02x): $%02x <- 8041 STATUS\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
}
else
{
data = 0xff; /* open data bus? */
- LOG(4,("%10s 6502-PC: %04x decocass_type3_r(%02x): $%02x <- open bus\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
+ LOG(4,("%10s 6502-PC: %04x decocass_type3_r(%02x): $%02x <- open bus\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
}
}
}
@@ -623,7 +623,7 @@ READ8_MEMBER(decocass_type3_state::decocass_type3_r)
if (1 == m_type3_pal_19)
{
save = data = 0xff; /* open data bus? */
- LOG(3,("%10s 6502-PC: %04x decocass_type3_r(%02x): $%02x <- open bus", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
+ LOG(3,("%10s 6502-PC: %04x decocass_type3_r(%02x): $%02x <- open bus", machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
}
else
{
@@ -765,7 +765,7 @@ READ8_MEMBER(decocass_type3_state::decocass_type3_r)
(BIT(save, 7) << 7);
}
m_type3_d0_latch = save & 1;
- LOG(3,("%10s 6502-PC: %04x decocass_type3_r(%02x): $%02x '%c' <- 8041-DATA\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, (data >= 32) ? data : '.'));
+ LOG(3,("%10s 6502-PC: %04x decocass_type3_r(%02x): $%02x '%c' <- 8041-DATA\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, (data >= 32) ? data : '.'));
}
else
{
@@ -779,7 +779,7 @@ READ8_MEMBER(decocass_type3_state::decocass_type3_r)
(BIT(save, 5) << 5) |
(BIT(save, 6) << 7) |
(BIT(save, 7) << 6);
- LOG(3,("%10s 6502-PC: %04x decocass_type3_r(%02x): $%02x '%c' <- open bus (D0 replaced with latch)\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, (data >= 32) ? data : '.'));
+ LOG(3,("%10s 6502-PC: %04x decocass_type3_r(%02x): $%02x '%c' <- open bus (D0 replaced with latch)\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, (data >= 32) ? data : '.'));
m_type3_d0_latch = save & 1;
}
}
@@ -795,7 +795,7 @@ WRITE8_MEMBER(decocass_type3_state::decocass_type3_w)
if (1 == m_type3_pal_19)
{
m_type3_ctrs = data << 4;
- LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> %s\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, "LDCTRS"));
+ LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> %s\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, "LDCTRS"));
return;
}
else
@@ -807,11 +807,11 @@ WRITE8_MEMBER(decocass_type3_state::decocass_type3_w)
if (1 == m_type3_pal_19)
{
/* write nowhere?? */
- LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> %s\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, "nowhere?"));
+ LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> %s\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, "nowhere?"));
return;
}
}
- LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> %s\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, offset & 1 ? "8041-CMND" : "8041-DATA"));
+ LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> %s\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, offset & 1 ? "8041-CMND" : "8041-DATA"));
m_mcu->upi41_master_w(space,offset, data);
}
@@ -837,22 +837,22 @@ READ8_MEMBER(decocass_type4_state::decocass_type4_r)
if (0 == (offset & E5XX_MASK))
{
data = m_mcu->upi41_master_r(space,1);
- LOG(4,("%10s 6502-PC: %04x decocass_type4_r(%02x): $%02x <- 8041 STATUS\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
+ LOG(4,("%10s 6502-PC: %04x decocass_type4_r(%02x): $%02x <- 8041 STATUS\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
}
else
{
data = 0xff; /* open data bus? */
- LOG(4,("%10s 6502-PC: %04x decocass_type4_r(%02x): $%02x <- open bus\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
+ LOG(4,("%10s 6502-PC: %04x decocass_type4_r(%02x): $%02x <- open bus\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
}
}
else
{
if (m_type4_latch)
{
- uint8_t *prom = space.machine().root_device().memregion("dongle")->base();
+ uint8_t *prom = machine().root_device().memregion("dongle")->base();
data = prom[m_type4_ctrs];
- LOG(3,("%10s 6502-PC: %04x decocass_type4_r(%02x): $%02x '%c' <- PROM[%04x]\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, (data >= 32) ? data : '.', m_type4_ctrs));
+ LOG(3,("%10s 6502-PC: %04x decocass_type4_r(%02x): $%02x '%c' <- PROM[%04x]\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, (data >= 32) ? data : '.', m_type4_ctrs));
m_type4_ctrs = (m_type4_ctrs + 1) & 0x7fff;
}
else
@@ -860,12 +860,12 @@ READ8_MEMBER(decocass_type4_state::decocass_type4_r)
if (0 == (offset & E5XX_MASK))
{
data = m_mcu->upi41_master_r(space,0);
- LOG(3,("%10s 6502-PC: %04x decocass_type4_r(%02x): $%02x '%c' <- open bus (D0 replaced with latch)\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, (data >= 32) ? data : '.'));
+ LOG(3,("%10s 6502-PC: %04x decocass_type4_r(%02x): $%02x '%c' <- open bus (D0 replaced with latch)\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, (data >= 32) ? data : '.'));
}
else
{
data = 0xff; /* open data bus? */
- LOG(4,("%10s 6502-PC: %04x decocass_type4_r(%02x): $%02x <- open bus\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
+ LOG(4,("%10s 6502-PC: %04x decocass_type4_r(%02x): $%02x <- open bus\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
}
}
}
@@ -880,7 +880,7 @@ WRITE8_MEMBER(decocass_type4_state::decocass_type4_w)
if (1 == m_type4_latch)
{
m_type4_ctrs = (m_type4_ctrs & 0x00ff) | ((data & 0x7f) << 8);
- LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> CTRS MSB (%04x)\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, m_type4_ctrs));
+ LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> CTRS MSB (%04x)\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, m_type4_ctrs));
return;
}
else
@@ -894,11 +894,11 @@ WRITE8_MEMBER(decocass_type4_state::decocass_type4_w)
if (m_type4_latch)
{
m_type4_ctrs = (m_type4_ctrs & 0xff00) | data;
- LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> CTRS LSB (%04x)\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, m_type4_ctrs));
+ LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> CTRS LSB (%04x)\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, m_type4_ctrs));
return;
}
}
- LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> %s\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, offset & 1 ? "8041-CMND" : "8041-DATA"));
+ LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> %s\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, offset & 1 ? "8041-CMND" : "8041-DATA"));
m_mcu->upi41_master_w(space,offset, data);
}
@@ -920,12 +920,12 @@ READ8_MEMBER(decocass_type5_state::decocass_type5_r)
if (0 == (offset & E5XX_MASK))
{
data = m_mcu->upi41_master_r(space,1);
- LOG(4,("%10s 6502-PC: %04x decocass_type5_r(%02x): $%02x <- 8041 STATUS\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
+ LOG(4,("%10s 6502-PC: %04x decocass_type5_r(%02x): $%02x <- 8041 STATUS\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
}
else
{
data = 0xff; /* open data bus? */
- LOG(4,("%10s 6502-PC: %04x decocass_type5_r(%02x): $%02x <- open bus\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
+ LOG(4,("%10s 6502-PC: %04x decocass_type5_r(%02x): $%02x <- open bus\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
}
}
else
@@ -933,19 +933,19 @@ READ8_MEMBER(decocass_type5_state::decocass_type5_r)
if (m_type5_latch)
{
data = 0x55; /* Only a fixed value? It looks like this is all we need to do */
- LOG(3,("%10s 6502-PC: %04x decocass_type5_r(%02x): $%02x '%c' <- fixed value???\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, (data >= 32) ? data : '.'));
+ LOG(3,("%10s 6502-PC: %04x decocass_type5_r(%02x): $%02x '%c' <- fixed value???\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, (data >= 32) ? data : '.'));
}
else
{
if (0 == (offset & E5XX_MASK))
{
data = m_mcu->upi41_master_r(space,0);
- LOG(3,("%10s 6502-PC: %04x decocass_type5_r(%02x): $%02x '%c' <- open bus (D0 replaced with latch)\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, (data >= 32) ? data : '.'));
+ LOG(3,("%10s 6502-PC: %04x decocass_type5_r(%02x): $%02x '%c' <- open bus (D0 replaced with latch)\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, (data >= 32) ? data : '.'));
}
else
{
data = 0xff; /* open data bus? */
- LOG(4,("%10s 6502-PC: %04x decocass_type5_r(%02x): $%02x <- open bus\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
+ LOG(4,("%10s 6502-PC: %04x decocass_type5_r(%02x): $%02x <- open bus\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
}
}
}
@@ -959,7 +959,7 @@ WRITE8_MEMBER(decocass_type5_state::decocass_type5_w)
{
if (1 == m_type5_latch)
{
- LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> %s\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, "latch #2??"));
+ LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> %s\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, "latch #2??"));
return;
}
else
@@ -971,11 +971,11 @@ WRITE8_MEMBER(decocass_type5_state::decocass_type5_w)
if (m_type5_latch)
{
/* write nowhere?? */
- LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> %s\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, "nowhere?"));
+ LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> %s\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, "nowhere?"));
return;
}
}
- LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> %s\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, offset & 1 ? "8041-CMND" : "8041-DATA"));
+ LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> %s\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, offset & 1 ? "8041-CMND" : "8041-DATA"));
m_mcu->upi41_master_w(space,offset, data);
}
@@ -996,12 +996,12 @@ READ8_MEMBER(decocass_nodong_state::decocass_nodong_r)
if (0 == (offset & E5XX_MASK))
{
data = m_mcu->upi41_master_r(space,1);
- LOG(4,("%10s 6502-PC: %04x decocass_nodong_r(%02x): $%02x <- 8041 STATUS\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
+ LOG(4,("%10s 6502-PC: %04x decocass_nodong_r(%02x): $%02x <- 8041 STATUS\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
}
else
{
data = 0xff; /* open data bus? */
- LOG(4,("%10s 6502-PC: %04x decocass_nodong_r(%02x): $%02x <- open bus\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
+ LOG(4,("%10s 6502-PC: %04x decocass_nodong_r(%02x): $%02x <- open bus\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
}
}
else
@@ -1009,12 +1009,12 @@ READ8_MEMBER(decocass_nodong_state::decocass_nodong_r)
if (0 == (offset & E5XX_MASK))
{
data = m_mcu->upi41_master_r(space,0);
- LOG(3,("%10s 6502-PC: %04x decocass_nodong_r(%02x): $%02x '%c' <- open bus (D0 replaced with latch)\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, (data >= 32) ? data : '.'));
+ LOG(3,("%10s 6502-PC: %04x decocass_nodong_r(%02x): $%02x '%c' <- open bus (D0 replaced with latch)\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, (data >= 32) ? data : '.'));
}
else
{
data = 0xff; /* open data bus? */
- LOG(4,("%10s 6502-PC: %04x decocass_nodong_r(%02x): $%02x <- open bus\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
+ LOG(4,("%10s 6502-PC: %04x decocass_nodong_r(%02x): $%02x <- open bus\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
}
}
@@ -1040,22 +1040,22 @@ READ8_MEMBER(decocass_widel_state::decocass_widel_r)
if (m_widel_latch && !machine().side_effect_disabled())
m_widel_ctrs = (m_widel_ctrs + 0x100) & 0xfffff;
data = m_mcu->upi41_master_r(space,1);
- LOG(4,("%10s 6502-PC: %04x decocass_widel_r(%02x): $%02x <- 8041 STATUS\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
+ LOG(4,("%10s 6502-PC: %04x decocass_widel_r(%02x): $%02x <- 8041 STATUS\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
}
else
{
data = 0xff; /* open data bus? */
- LOG(4,("%10s 6502-PC: %04x decocass_widel_r(%02x): $%02x <- open bus\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
+ LOG(4,("%10s 6502-PC: %04x decocass_widel_r(%02x): $%02x <- open bus\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
}
}
else
{
if (m_widel_latch)
{
- uint8_t *prom = space.machine().root_device().memregion("dongle")->base();
+ uint8_t *prom = machine().root_device().memregion("dongle")->base();
data = prom[m_widel_ctrs];
- LOG(3,("%10s 6502-PC: %04x decocass_widel_r(%02x): $%02x '%c' <- PROM[%04x]\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, (data >= 32) ? data : '.', m_widel_ctrs));
+ LOG(3,("%10s 6502-PC: %04x decocass_widel_r(%02x): $%02x '%c' <- PROM[%04x]\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, (data >= 32) ? data : '.', m_widel_ctrs));
if (!machine().side_effect_disabled())
m_widel_ctrs = (m_widel_ctrs + 1) & 0xfffff;
@@ -1065,12 +1065,12 @@ READ8_MEMBER(decocass_widel_state::decocass_widel_r)
if (0 == (offset & E5XX_MASK))
{
data = m_mcu->upi41_master_r(space,0);
- LOG(3,("%10s 6502-PC: %04x decocass_widel_r(%02x): $%02x '%c' <- open bus (D0 replaced with latch)\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, (data >= 32) ? data : '.'));
+ LOG(3,("%10s 6502-PC: %04x decocass_widel_r(%02x): $%02x '%c' <- open bus (D0 replaced with latch)\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, (data >= 32) ? data : '.'));
}
else
{
data = 0xff; /* open data bus? */
- LOG(4,("%10s 6502-PC: %04x decocass_widel_r(%02x): $%02x <- open bus\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
+ LOG(4,("%10s 6502-PC: %04x decocass_widel_r(%02x): $%02x <- open bus\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
}
}
}
@@ -1089,7 +1089,7 @@ WRITE8_MEMBER(decocass_widel_state::decocass_widel_w)
// Counterintuitive though it may seem, the value written is probably just ignored.
// Treasure Island depends on this clearing the lower bits as well.
m_widel_ctrs = 0;
- LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> CTRS MSB (%04x)\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, m_widel_ctrs));
+ LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> CTRS MSB (%04x)\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, m_widel_ctrs));
return;
}
else
@@ -1103,11 +1103,11 @@ WRITE8_MEMBER(decocass_widel_state::decocass_widel_w)
if (m_widel_latch)
{
m_widel_ctrs = (m_widel_ctrs & 0xfff00) | data;
- LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> CTRS LSB (%04x)\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, m_widel_ctrs));
+ LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> CTRS LSB (%04x)\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, m_widel_ctrs));
return;
}
}
- LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> %s\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, offset & 1 ? "8041-CMND" : "8041-DATA"));
+ LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> %s\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, offset & 1 ? "8041-CMND" : "8041-DATA"));
m_mcu->upi41_master_w(space,offset, data);
}
@@ -1137,7 +1137,7 @@ READ8_MEMBER(decocass_state::decocass_e5xx_r)
(!m_cassette->is_present() << 7); /* D7 = cassette present */
LOG(4,("%10s 6502-PC: %04x decocass_e5xx_r(%02x): $%02x <- STATUS (%s%s%s%s%s%s%s%s)\n",
- space.machine().time().as_string(6),
+ machine().time().as_string(6),
space.device().safe_pcbase(),
offset, data,
data & 0x01 ? "" : "REQ/",
@@ -1169,7 +1169,7 @@ WRITE8_MEMBER(decocass_state::decocass_e5xx_w)
if (0 == (offset & E5XX_MASK))
{
- LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> %s\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data, offset & 1 ? "8041-CMND" : "8041-DATA"));
+ LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> %s\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data, offset & 1 ? "8041-CMND" : "8041-DATA"));
m_mcu->upi41_master_w(space,offset & 1, data);
#ifdef MAME_DEBUG
decocass_fno(offset, data);
@@ -1177,7 +1177,7 @@ WRITE8_MEMBER(decocass_state::decocass_e5xx_w)
}
else
{
- LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> dongle\n", space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
+ LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> dongle\n", machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
}
}
@@ -1641,7 +1641,7 @@ WRITE8_MEMBER(decocass_state::i8041_p1_w)
if (data != m_i8041_p1_write_latch)
{
LOG(4,("%10s 8041-PC: %03x i8041_p1_w: $%02x (%s%s%s%s%s%s%s%s)\n",
- space.machine().time().as_string(6),
+ machine().time().as_string(6),
space.device().safe_pcbase(),
data,
data & 0x01 ? "" : "DATA-WRT",
@@ -1677,7 +1677,7 @@ READ8_MEMBER(decocass_state::i8041_p1_r)
if (data != m_i8041_p1_read_latch)
{
LOG(4,("%10s 8041-PC: %03x i8041_p1_r: $%02x (%s%s%s%s%s%s%s%s)\n",
- space.machine().time().as_string(6),
+ machine().time().as_string(6),
space.device().safe_pcbase(),
data,
data & 0x01 ? "" : "DATA-WRT",
@@ -1698,7 +1698,7 @@ WRITE8_MEMBER(decocass_state::i8041_p2_w)
if (data != m_i8041_p2_write_latch)
{
LOG(4,("%10s 8041-PC: %03x i8041_p2_w: $%02x (%s%s%s%s%s%s%s%s)\n",
- space.machine().time().as_string(6),
+ machine().time().as_string(6),
space.device().safe_pcbase(),
data,
data & 0x01 ? "" : "FNO/",
@@ -1723,7 +1723,7 @@ READ8_MEMBER(decocass_state::i8041_p2_r)
if (data != m_i8041_p2_read_latch)
{
LOG(4,("%10s 8041-PC: %03x i8041_p2_r: $%02x (%s%s%s%s%s%s%s%s)\n",
- space.machine().time().as_string(6),
+ machine().time().as_string(6),
space.device().safe_pcbase(),
data,
data & 0x01 ? "" : "FNO/",
diff --git a/src/mame/machine/decocpu6.cpp b/src/mame/machine/decocpu6.cpp
index 9e068e73adb..f583887188f 100644
--- a/src/mame/machine/decocpu6.cpp
+++ b/src/mame/machine/decocpu6.cpp
@@ -31,7 +31,7 @@ void deco_cpu6_device::device_reset()
uint8_t deco_cpu6_device::mi_decrypt::read_sync(uint16_t adr)
{
if (adr&1)
- return BITSWAP8(direct->read_byte(adr),6,4,7,5,3,2,1,0);
+ return bitswap<8>(direct->read_byte(adr),6,4,7,5,3,2,1,0);
else
return direct->read_byte(adr);
}
@@ -48,5 +48,5 @@ u32 deco_cpu6_device::disassembler::interface_flags() const
u8 deco_cpu6_device::disassembler::decrypt8(u8 value, offs_t pc, bool opcode) const
{
- return opcode && (pc & 1) ? BITSWAP8(value,6,4,7,5,3,2,1,0) : value;
+ return opcode && (pc & 1) ? bitswap<8>(value,6,4,7,5,3,2,1,0) : value;
}
diff --git a/src/mame/machine/decocpu7.cpp b/src/mame/machine/decocpu7.cpp
index 50144063bb4..dd0031ff7b8 100644
--- a/src/mame/machine/decocpu7.cpp
+++ b/src/mame/machine/decocpu7.cpp
@@ -30,7 +30,7 @@ uint8_t deco_cpu7_device::mi_decrypt::read_sync(uint16_t adr)
if(had_written) {
had_written = false;
if((adr & 0x0104) == 0x0104)
- res = BITSWAP8(res, 6,5,3,4,2,7,1,0);
+ res = bitswap<8>(res, 6,5,3,4,2,7,1,0);
}
return res;
}
@@ -57,5 +57,5 @@ u32 deco_cpu7_device::disassembler::interface_flags() const
u8 deco_cpu7_device::disassembler::decrypt8(u8 value, offs_t pc, bool opcode) const
{
- return opcode && mintf->had_written && ((pc & 0x104) == 0x104) ? BITSWAP8(value,6,5,3,4,2,7,1,0) : value;
+ return opcode && mintf->had_written && ((pc & 0x104) == 0x104) ? bitswap<8>(value,6,5,3,4,2,7,1,0) : value;
}
diff --git a/src/mame/machine/decocrpt.cpp b/src/mame/machine/decocrpt.cpp
index dda584c2d76..ad5e212414b 100644
--- a/src/mame/machine/decocrpt.cpp
+++ b/src/mame/machine/decocrpt.cpp
@@ -622,7 +622,7 @@ static void deco_decrypt(running_machine &machine,const char *rgntag,const uint8
if (remap_only)
rom[i] = buffer[addr];
else
- rom[i] = BITSWAP16(buffer[addr] ^ xor_masks[xor_table[addr & 0x7ff]],
+ rom[i] = bitswap<16>(buffer[addr] ^ xor_masks[xor_table[addr & 0x7ff]],
swap_patterns[pat][0],
swap_patterns[pat][1],
swap_patterns[pat][2],
diff --git a/src/mame/machine/epos.cpp b/src/mame/machine/epos.cpp
index 3ead45d89be..da7f5f12326 100644
--- a/src/mame/machine/epos.cpp
+++ b/src/mame/machine/epos.cpp
@@ -36,7 +36,7 @@ static void epos_decrypt_rom(uint8_t *ROM, uint8_t invert, int offset, int *bs)
{
for (int mem = 0; mem < 0x4000; mem++ )
{
- ROM[mem + offset] = BITSWAP8(ROM[mem] ^ invert, bs[0], bs[1], bs[2], bs[3], bs[4], bs[5], bs[6], bs[7]);
+ ROM[mem + offset] = bitswap<8>(ROM[mem] ^ invert, bs[0], bs[1], bs[2], bs[3], bs[4], bs[5], bs[6], bs[7]);
}
}
diff --git a/src/mame/machine/fd1089.cpp b/src/mame/machine/fd1089.cpp
index e364581916c..15938db5773 100644
--- a/src/mame/machine/fd1089.cpp
+++ b/src/mame/machine/fd1089.cpp
@@ -290,10 +290,10 @@ uint8_t fd1089_base_device::rearrange_key(uint8_t table, bool opcode)
if (BIT(table,6))
table ^= (1<<7);
- table = BITSWAP8(table,1,0,6,4,3,5,2,7);
+ table = bitswap<8>(table,1,0,6,4,3,5,2,7);
if (BIT(table,6))
- table = BITSWAP8(table,7,6,2,4,5,3,1,0);
+ table = bitswap<8>(table,7,6,2,4,5,3,1,0);
}
else
{
@@ -307,10 +307,10 @@ uint8_t fd1089_base_device::rearrange_key(uint8_t table, bool opcode)
if (BIT(~table,7))
table ^= (1<<6);
- table = BITSWAP8(table,5,6,7,4,2,3,1,0);
+ table = bitswap<8>(table,5,6,7,4,2,3,1,0);
if (BIT(table,6))
- table = BITSWAP8(table,7,6,5,3,2,4,1,0);
+ table = bitswap<8>(table,7,6,5,3,2,4,1,0);
}
if (BIT(table,6))
@@ -342,7 +342,7 @@ uint8_t fd1089a_device::decode(uint8_t val, uint8_t key, bool opcode)
uint8_t table = rearrange_key(key, opcode);
const decrypt_parameters &p = s_addr_params[table >> 4];
- val = BITSWAP8(val, p.s7,p.s6,p.s5,p.s4,p.s3,p.s2,p.s1,p.s0) ^ p.xorval;
+ val = bitswap<8>(val, p.s7,p.s6,p.s5,p.s4,p.s3,p.s2,p.s1,p.s0) ^ p.xorval;
if (BIT(table,3)) val ^= 0x01;
if (BIT(table,0)) val ^= 0xb1;
@@ -369,20 +369,20 @@ uint8_t fd1089a_device::decode(uint8_t val, uint8_t key, bool opcode)
{
if (BIT(val,0)) val ^= 0xc0;
if (BIT(~val,6) ^ BIT(val,4))
- val = BITSWAP8(val, 7,6,5,4,1,0,2,3);
+ val = bitswap<8>(val, 7,6,5,4,1,0,2,3);
}
else
{
if (BIT(~val,6) ^ BIT(val,4))
- val = BITSWAP8(val, 7,6,5,4,0,1,3,2);
+ val = bitswap<8>(val, 7,6,5,4,0,1,3,2);
}
if (BIT(~val,6))
- val = BITSWAP8(val, 7,6,5,4,2,3,0,1);
+ val = bitswap<8>(val, 7,6,5,4,2,3,0,1);
const decrypt_parameters &q = s_data_params_a[family];
val ^= q.xorval;
- val = BITSWAP8(val, q.s7,q.s6,q.s5,q.s4,q.s3,q.s2,q.s1,q.s0);
+ val = bitswap<8>(val, q.s7,q.s6,q.s5,q.s4,q.s3,q.s2,q.s1,q.s0);
return val;
}
@@ -402,7 +402,7 @@ uint8_t fd1089b_device::decode(uint8_t val, uint8_t key, bool opcode)
uint8_t table = rearrange_key(key, opcode);
const decrypt_parameters &p = s_addr_params[table >> 4];
- val = BITSWAP8(val, p.s7,p.s6,p.s5,p.s4,p.s3,p.s2,p.s1,p.s0) ^ p.xorval;
+ val = bitswap<8>(val, p.s7,p.s6,p.s5,p.s4,p.s3,p.s2,p.s1,p.s0) ^ p.xorval;
if (BIT(table,3)) val ^= 0x01;
if (BIT(table,0)) val ^= 0xb1;
@@ -429,17 +429,17 @@ uint8_t fd1089b_device::decode(uint8_t val, uint8_t key, bool opcode)
if (BIT(table,2))
{
- val = BITSWAP8(val, 7,6,5,4,1,0,3,2);
+ val = bitswap<8>(val, 7,6,5,4,1,0,3,2);
if (BIT(table,0) ^ BIT(table,1))
- val = BITSWAP8(val, 7,6,5,4,0,1,3,2);
+ val = bitswap<8>(val, 7,6,5,4,0,1,3,2);
}
else
{
- val = BITSWAP8(val, 7,6,5,4,3,2,0,1);
+ val = bitswap<8>(val, 7,6,5,4,3,2,0,1);
if (BIT(table,0) ^ BIT(table,1))
- val = BITSWAP8(val, 7,6,5,4,1,0,2,3);
+ val = bitswap<8>(val, 7,6,5,4,1,0,2,3);
}
return val;
diff --git a/src/mame/machine/fd1094.cpp b/src/mame/machine/fd1094.cpp
index ed8dfe87617..20d33cec87a 100644
--- a/src/mame/machine/fd1094.cpp
+++ b/src/mame/machine/fd1094.cpp
@@ -815,7 +815,7 @@ uint16_t fd1094_device::decrypt_one(offs_t address, uint16_t val, const uint8_t
if (val & 0x8000) // block invariant: val & 0x8000 != 0
{
- val = BITSWAP16(val, 15, 9,10,13, 3,12, 0,14, 6, 5, 2,11, 8, 1, 4, 7);
+ val = bitswap<16>(val, 15, 9,10,13, 3,12, 0,14, 6, 5, 2,11, 8, 1, 4, 7);
if (!global_xor1) if (~val & 0x0800) val ^= 0x3002; // 1,12,13
if (true) if (~val & 0x0020) val ^= 0x0044; // 2,6
@@ -823,12 +823,12 @@ uint16_t fd1094_device::decrypt_one(offs_t address, uint16_t val, const uint8_t
if (!global_swap2) if (!key_0c) val ^= 0x0308; // 3,8,9
val ^= 0x6561;
- if (!key_2b) val = BITSWAP16(val,15,10,13,12,11,14,9,8,7,6,0,4,3,2,1,5); // 0-5, 10-14
+ if (!key_2b) val = bitswap<16>(val,15,10,13,12,11,14,9,8,7,6,0,4,3,2,1,5); // 0-5, 10-14
}
if (val & 0x4000) // block invariant: val & 0x4000 != 0
{
- val = BITSWAP16(val, 13,14, 7, 0, 8, 6, 4, 2, 1,15, 3,11,12,10, 5, 9);
+ val = bitswap<16>(val, 13,14, 7, 0, 8, 6, 4, 2, 1,15, 3,11,12,10, 5, 9);
if (!global_xor0) if (val & 0x0010) val ^= 0x0468; // 3,5,6,10
if (!key_3a) if (val & 0x0100) val ^= 0x0081; // 0,7
@@ -836,12 +836,12 @@ uint16_t fd1094_device::decrypt_one(offs_t address, uint16_t val, const uint8_t
if (!key_5b) if (!key_0b) val ^= 0x3012; // 1,4,12,13
val ^= 0x3523;
- if (!global_swap0b) val = BITSWAP16(val, 2,14,13,12, 9,10,11, 8, 7, 6, 5, 4, 3,15, 1, 0); // 2-15, 9-11
+ if (!global_swap0b) val = bitswap<16>(val, 2,14,13,12, 9,10,11, 8, 7, 6, 5, 4, 3,15, 1, 0); // 2-15, 9-11
}
if (val & 0x2000) // block invariant: val & 0x2000 != 0
{
- val = BITSWAP16(val, 10, 2,13, 7, 8, 0, 3,14, 6,15, 1,11, 9, 4, 5,12);
+ val = bitswap<16>(val, 10, 2,13, 7, 8, 0, 3,14, 6,15, 1,11, 9, 4, 5,12);
if (!key_4a) if (val & 0x0800) val ^= 0x010c; // 2,3,8
if (!key_1a) if (val & 0x0080) val ^= 0x1000; // 12
@@ -850,27 +850,27 @@ uint16_t fd1094_device::decrypt_one(offs_t address, uint16_t val, const uint8_t
if (!global_swap0a) if (!key_6b) val ^= 0xc000; // 14,15
val ^= 0x99a5;
- if (!key_5b) val = BITSWAP16(val,15,14,13,12,11, 1, 9, 8, 7,10, 5, 6, 3, 2, 4, 0); // 1,4,6,10
+ if (!key_5b) val = bitswap<16>(val,15,14,13,12,11, 1, 9, 8, 7,10, 5, 6, 3, 2, 4, 0); // 1,4,6,10
}
if (val & 0xe000) // block invariant: val & 0xe000 != 0
{
- val = BITSWAP16(val,15,13,14, 5, 6, 0, 9,10, 4,11, 1, 2,12, 3, 7, 8);
+ val = bitswap<16>(val,15,13,14, 5, 6, 0, 9,10, 4,11, 1, 2,12, 3, 7, 8);
val ^= 0x17ff;
- if (!global_swap4) val = BITSWAP16(val, 15,14,13, 6,11,10, 9, 5, 7,12, 8, 4, 3, 2, 1, 0); // 5-8, 6-12
- if (!global_swap3) val = BITSWAP16(val, 13,15,14,12,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); // 15-14-13
- if (!global_swap2) val = BITSWAP16(val, 15,14,13,12,11, 2, 9, 8,10, 6, 5, 4, 3, 0, 1, 7); // 10-2-0-7
- if (!key_3b) val = BITSWAP16(val, 15,14,13,12,11,10, 4, 8, 7, 6, 5, 9, 1, 2, 3, 0); // 9-4, 3-1
- if (!key_2a) val = BITSWAP16(val, 13,14,15,12,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); // 13-15
+ if (!global_swap4) val = bitswap<16>(val, 15,14,13, 6,11,10, 9, 5, 7,12, 8, 4, 3, 2, 1, 0); // 5-8, 6-12
+ if (!global_swap3) val = bitswap<16>(val, 13,15,14,12,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); // 15-14-13
+ if (!global_swap2) val = bitswap<16>(val, 15,14,13,12,11, 2, 9, 8,10, 6, 5, 4, 3, 0, 1, 7); // 10-2-0-7
+ if (!key_3b) val = bitswap<16>(val, 15,14,13,12,11,10, 4, 8, 7, 6, 5, 9, 1, 2, 3, 0); // 9-4, 3-1
+ if (!key_2a) val = bitswap<16>(val, 13,14,15,12,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); // 13-15
- if (!global_swap1) val = BITSWAP16(val, 15,14,13,12, 9, 8,11,10, 7, 6, 5, 4, 3, 2, 1, 0); // 11...8
- if (!key_5a) val = BITSWAP16(val, 15,14,13,12,11,10, 9, 8, 4, 5, 7, 6, 3, 2, 1, 0); // 7...4
- if (!global_swap0a) val = BITSWAP16(val, 15,14,13,12,11,10, 9, 8, 7, 6, 5, 4, 0, 3, 2, 1); // 3...0
+ if (!global_swap1) val = bitswap<16>(val, 15,14,13,12, 9, 8,11,10, 7, 6, 5, 4, 3, 2, 1, 0); // 11...8
+ if (!key_5a) val = bitswap<16>(val, 15,14,13,12,11,10, 9, 8, 4, 5, 7, 6, 3, 2, 1, 0); // 7...4
+ if (!global_swap0a) val = bitswap<16>(val, 15,14,13,12,11,10, 9, 8, 7, 6, 5, 4, 0, 3, 2, 1); // 3...0
}
- val = BITSWAP16(val, 12,15,14,13,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0);
+ val = bitswap<16>(val, 12,15,14,13,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0);
if ((val & 0xb080) == 0x8000) val ^= 0x4000;
if ((val & 0xf000) == 0xc000) val ^= 0x0080;
diff --git a/src/mame/machine/gaelcrpt.cpp b/src/mame/machine/gaelcrpt.cpp
index 2dbe0f1153f..63733b18b11 100644
--- a/src/mame/machine/gaelcrpt.cpp
+++ b/src/mame/machine/gaelcrpt.cpp
@@ -20,10 +20,10 @@ static int decrypt(int const param1, int const param2, int const enc_prev_word,
switch (swap)
{
- case 0: res = BITSWAP16(enc_word, 1, 2, 0,14,12,15, 4, 8,13, 7, 3, 6,11, 5,10, 9); break;
- case 1: res = BITSWAP16(enc_word, 14,10, 4,15, 1, 6,12,11, 8, 0, 9,13, 7, 3, 5, 2); break;
- case 2: res = BITSWAP16(enc_word, 2,13,15, 1,12, 8,14, 4, 6, 0, 9, 5,10, 7, 3,11); break;
- case 3: res = BITSWAP16(enc_word, 3, 8, 1,13,14, 4,15, 0,10, 2, 7,12, 6,11, 9, 5); break;
+ case 0: res = bitswap<16>(enc_word, 1, 2, 0,14,12,15, 4, 8,13, 7, 3, 6,11, 5,10, 9); break;
+ case 1: res = bitswap<16>(enc_word, 14,10, 4,15, 1, 6,12,11, 8, 0, 9,13, 7, 3, 5, 2); break;
+ case 2: res = bitswap<16>(enc_word, 2,13,15, 1,12, 8,14, 4, 6, 0, 9, 5,10, 7, 3,11); break;
+ case 3: res = bitswap<16>(enc_word, 3, 8, 1,13,14, 4,15, 0,10, 2, 7,12, 6,11, 9, 5); break;
}
res ^= param2;
@@ -117,7 +117,7 @@ static int decrypt(int const param1, int const param2, int const enc_prev_word,
res ^= (param1 << 6) | (param1 << 11);
- return BITSWAP16(res, 2,6,0,11,14,12,7,10,5,4,8,3,9,1,13,15);
+ return bitswap<16>(res, 2,6,0,11,14,12,7,10,5,4,8,3,9,1,13,15);
}
@@ -148,7 +148,7 @@ uint16_t gaelco_decrypt(address_space &space, int offset, int data, int param1,
lastdecword = data;
-// logerror("%s : data1 = %4x > %4x @ %8x\n",space.machine().describe_context(),savedata,data,lastoffset);
+// logerror("%s : data1 = %4x > %4x @ %8x\n",machine().describe_context(),savedata,data,lastoffset);
}
return data;
}
diff --git a/src/mame/machine/gb.cpp b/src/mame/machine/gb.cpp
index 0cc70ba6a17..5c4ff891b7a 100644
--- a/src/mame/machine/gb.cpp
+++ b/src/mame/machine/gb.cpp
@@ -723,14 +723,14 @@ READ8_MEMBER(megaduck_state::megaduck_video_r)
data = m_ppu->video_r(space, offset);
if (offset)
return data;
- return BITSWAP8(data,7,0,5,4,6,3,2,1);
+ return bitswap<8>(data,7,0,5,4,6,3,2,1);
}
WRITE8_MEMBER(megaduck_state::megaduck_video_w)
{
if (!offset)
{
- data = BITSWAP8(data,7,3,5,4,2,1,0,6);
+ data = bitswap<8>(data,7,3,5,4,2,1,0,6);
}
if ((offset & 0x0C) && ((offset & 0x0C) ^ 0x0C))
{
diff --git a/src/mame/machine/harddriv.cpp b/src/mame/machine/harddriv.cpp
index 396264b5573..3a1756aecb5 100644
--- a/src/mame/machine/harddriv.cpp
+++ b/src/mame/machine/harddriv.cpp
@@ -272,7 +272,7 @@ READ16_MEMBER( harddriv_state::hdc68k_wheel_r )
uint16_t new_wheel = m_12badc[0].read_safe(0xffff);
/* hack to display the wheel position */
- if (space.machine().input().code_pressed(KEYCODE_LSHIFT))
+ if (machine().input().code_pressed(KEYCODE_LSHIFT))
popmessage("%04X", new_wheel);
/* if we crossed the center line, latch the edge bit */
@@ -356,7 +356,7 @@ WRITE16_MEMBER( harddriv_state::hd68k_wr0_write )
case 6: /* CC1 */
case 7: /* CC2 */
- space.machine().bookkeeping().coin_counter_w(offset - 6, data);
+ machine().bookkeeping().coin_counter_w(offset - 6, data);
break;
default:
@@ -612,7 +612,7 @@ WRITE16_MEMBER( harddriv_state::hd68k_adsp_data_w )
if (offset == 0x1fff)
{
logerror("%06X:ADSP sync address written (%04X)\n", space.device().safe_pcbase(), data);
- space.machine().scheduler().synchronize();
+ machine().scheduler().synchronize();
m_adsp->signal_interrupt_trigger();
}
else
@@ -714,7 +714,7 @@ WRITE16_MEMBER( harddriv_state::hd68k_adsp_control_w )
case 3:
logerror("ADSP bank = %d (deferred)\n", val);
- space.machine().scheduler().synchronize(timer_expired_delegate(FUNC(harddriv_state::deferred_adsp_bank_switch),this), val);
+ machine().scheduler().synchronize(timer_expired_delegate(FUNC(harddriv_state::deferred_adsp_bank_switch),this), val);
break;
case 5:
@@ -1022,7 +1022,7 @@ READ16_MEMBER( harddriv_state::hd68k_ds3_gdata_r )
/* it is important that all the CPUs be in sync before we continue, so spin a little */
/* while to let everyone else catch up */
space.device().execute().spin_until_trigger(DS3_TRIGGER);
- space.machine().scheduler().trigger(DS3_TRIGGER, attotime::from_usec(5));
+ machine().scheduler().trigger(DS3_TRIGGER, attotime::from_usec(5));
return m_ds3_gdata;
}
@@ -1075,7 +1075,7 @@ READ16_MEMBER( harddriv_state::hd68k_ds3_sdata_r )
/* it is important that all the CPUs be in sync before we continue, so spin a little */
/* while to let everyone else catch up */
space.device().execute().spin_until_trigger(DS3_STRIGGER);
- space.machine().scheduler().trigger(DS3_STRIGGER, attotime::from_usec(5));
+ machine().scheduler().trigger(DS3_STRIGGER, attotime::from_usec(5));
return m_ds3_sdata;
}
@@ -1141,7 +1141,7 @@ WRITE16_MEMBER( harddriv_state::hdds3_sdsp_special_w )
update_ds3_sirq();
/* once we've written data, trigger the main CPU to wake up again */
- space.machine().scheduler().trigger(DS3_STRIGGER);
+ machine().scheduler().trigger(DS3_STRIGGER);
break;
case 1:
@@ -1431,7 +1431,7 @@ WRITE16_MEMBER( harddriv_state::hdds3_special_w )
update_ds3_irq();
/* once we've written data, trigger the main CPU to wake up again */
- space.machine().scheduler().trigger(DS3_TRIGGER);
+ machine().scheduler().trigger(DS3_TRIGGER);
break;
case 1:
@@ -1650,7 +1650,7 @@ WRITE32_MEMBER( harddriv_state::rddsp32_sync0_w )
COMBINE_DATA(&newdata);
m_dataptr[m_next_msp_sync % MAX_MSP_SYNC] = dptr;
m_dataval[m_next_msp_sync % MAX_MSP_SYNC] = newdata;
- space.machine().scheduler().synchronize(timer_expired_delegate(FUNC(harddriv_state::rddsp32_sync_cb),this), m_next_msp_sync++ % MAX_MSP_SYNC);
+ machine().scheduler().synchronize(timer_expired_delegate(FUNC(harddriv_state::rddsp32_sync_cb),this), m_next_msp_sync++ % MAX_MSP_SYNC);
}
else
COMBINE_DATA(&m_rddsp32_sync[0][offset]);
@@ -1666,7 +1666,7 @@ WRITE32_MEMBER( harddriv_state::rddsp32_sync1_w )
COMBINE_DATA(&newdata);
m_dataptr[m_next_msp_sync % MAX_MSP_SYNC] = dptr;
m_dataval[m_next_msp_sync % MAX_MSP_SYNC] = newdata;
- space.machine().scheduler().synchronize(timer_expired_delegate(FUNC(harddriv_state::rddsp32_sync_cb),this), m_next_msp_sync++ % MAX_MSP_SYNC);
+ machine().scheduler().synchronize(timer_expired_delegate(FUNC(harddriv_state::rddsp32_sync_cb),this), m_next_msp_sync++ % MAX_MSP_SYNC);
}
else
COMBINE_DATA(&m_rddsp32_sync[1][offset]);
diff --git a/src/mame/machine/hp48.cpp b/src/mame/machine/hp48.cpp
index 1dfd2e05b56..5f81ef8a21e 100644
--- a/src/mame/machine/hp48.cpp
+++ b/src/mame/machine/hp48.cpp
@@ -282,7 +282,7 @@ void hp48_state::hp48_update_annunciators()
WRITE8_MEMBER(hp48_state::hp48_io_w)
{
LOG(( "%s %f hp48_io_w: off=%02x data=%x\n",
- space.machine().describe_context(), space.machine().time().as_double(), offset, data ));
+ machine().describe_context(), machine().time().as_double(), offset, data ));
switch( offset )
{
@@ -324,13 +324,13 @@ WRITE8_MEMBER(hp48_state::hp48_io_w)
/* cards */
case 0x0e:
- LOG(( "%s: card control write %02x\n", space.machine().describe_context(), data ));
+ LOG(( "%s: card control write %02x\n", machine().describe_context(), data ));
/* bit 0: software interrupt */
if ( data & 1 )
{
LOG(( "%f hp48_io_w: software interrupt requested\n",
- space.machine().time().as_double() ));
+ machine().time().as_double() ));
hp48_pulse_irq( SATURN_IRQ_LINE );
data &= ~1;
}
@@ -343,7 +343,7 @@ WRITE8_MEMBER(hp48_state::hp48_io_w)
break;
case 0x0f:
- LOG(( "%s: card info write %02x\n", space.machine().describe_context(), data ));
+ LOG(( "%s: card info write %02x\n", machine().describe_context(), data ));
m_io[0x0f] = data;
break;
@@ -427,7 +427,7 @@ READ8_MEMBER(hp48_state::hp48_io_r)
case 0x29:
{
int last_line = HP48_IO_8(0x28) & 0x3f; /* last line of main bitmap before menu */
- int cur_line = space.machine().first_screen()->vpos();
+ int cur_line = machine().first_screen()->vpos();
if ( last_line <= 1 ) last_line = 0x3f;
data = ( cur_line >= 0 && cur_line <= last_line ) ? last_line - cur_line : 0;
if ( offset == 0x29 )
@@ -458,8 +458,8 @@ READ8_MEMBER(hp48_state::hp48_io_r)
{
/* second nibble of received data */
- //device_image_interface *xmodem = dynamic_cast<device_image_interface *>(space.machine().device("rs232_x"));
- //device_image_interface *kermit = dynamic_cast<device_image_interface *>(space.machine().device("rs232_k"));
+ //device_image_interface *xmodem = dynamic_cast<device_image_interface *>(machine().device("rs232_x"));
+ //device_image_interface *kermit = dynamic_cast<device_image_interface *>(machine().device("rs232_k"));
m_io[0x11] &= ~1; /* clear byte received */
data = m_io[offset];
@@ -473,7 +473,7 @@ READ8_MEMBER(hp48_state::hp48_io_r)
/* cards */
case 0x0e: /* detection */
data = m_io[0x0e];
- LOG(( "%s: card control read %02x\n", space.machine().describe_context(), data ));
+ LOG(( "%s: card control read %02x\n", machine().describe_context(), data ));
break;
case 0x0f: /* card info */
data = 0;
@@ -491,7 +491,7 @@ READ8_MEMBER(hp48_state::hp48_io_r)
if ( m_port_size[0] && m_port_write[0] ) data |= 4;
if ( m_port_size[1] && m_port_write[1] ) data |= 8;
}
- LOG(( "%s: card info read %02x\n", space.machine().describe_context(), data ));
+ LOG(( "%s: card info read %02x\n", machine().describe_context(), data ));
break;
@@ -499,7 +499,7 @@ READ8_MEMBER(hp48_state::hp48_io_r)
}
LOG(( "%s %f hp48_io_r: off=%02x data=%x\n",
- space.machine().describe_context(), space.machine().time().as_double(), offset, data ));
+ machine().describe_context(), machine().time().as_double(), offset, data ));
return data;
}
@@ -522,7 +522,7 @@ READ8_MEMBER(hp48_state::hp48_bank_r)
offset &= 0x7e;
if ( m_bank_switch != offset )
{
- LOG(( "%s %f hp48_bank_r: off=%03x\n", space.machine().describe_context(), space.machine().time().as_double(), offset ));
+ LOG(( "%s %f hp48_bank_r: off=%03x\n", machine().describe_context(), machine().time().as_double(), offset ));
m_bank_switch = offset;
hp48_apply_modules();
}
@@ -535,7 +535,7 @@ WRITE8_MEMBER(hp48_state::hp49_bank_w)
offset &= 0x7e;
if ( m_bank_switch != offset )
{
- LOG(( "%05x %f hp49_bank_w: off=%03x\n", space.device().safe_pcbase(), space.machine().time().as_double(), offset ));
+ LOG(( "%05x %f hp49_bank_w: off=%03x\n", space.device().safe_pcbase(), machine().time().as_double(), offset ));
m_bank_switch = offset;
hp48_apply_modules();
}
diff --git a/src/mame/machine/igs025.cpp b/src/mame/machine/igs025.cpp
index c1e1b3d83e9..81affda9c95 100644
--- a/src/mame/machine/igs025.cpp
+++ b/src/mame/machine/igs025.cpp
@@ -254,7 +254,7 @@ READ16_MEMBER(igs025_device::killbld_igs025_prot_r)
switch (m_kb_cmd)
{
case 0x00:
- return BITSWAP8((m_kb_swap + 1) & 0x7f, 0, 1, 2, 3, 4, 5, 6, 7); // drgw3
+ return bitswap<8>((m_kb_swap + 1) & 0x7f, 0, 1, 2, 3, 4, 5, 6, 7); // drgw3
case 0x01:
return m_kb_reg & 0x7f;
@@ -282,7 +282,7 @@ READ16_MEMBER(igs025_device::killbld_igs025_prot_r)
return 0x3f00 | ((m_kb_game_id >> 24) & 0xff);
default: // >= 5
- return 0x3f00 | BITSWAP8(m_kb_prot_hold, 5, 2, 9, 7, 10, 13, 12, 15);
+ return 0x3f00 | bitswap<8>(m_kb_prot_hold, 5, 2, 9, 7, 10, 13, 12, 15);
}
}
diff --git a/src/mame/machine/igs036crypt.cpp b/src/mame/machine/igs036crypt.cpp
index 4f70e6fdcf6..3d1255396b4 100644
--- a/src/mame/machine/igs036crypt.cpp
+++ b/src/mame/machine/igs036crypt.cpp
@@ -98,7 +98,7 @@ uint16_t igs036_decryptor::deobfuscate(uint16_t cipherword, int word_address)con
// key-independent manipulation
int shift = rotation(word_address);
int aux = rol(cipherword, shift);
- aux = BITSWAP16(aux, 10,9,8,7,0,15,6,5, 14,13,4,3,12,11,2,1);
+ aux = bitswap<16>(aux, 10,9,8,7,0,15,6,5, 14,13,4,3,12,11,2,1);
return aux;
}
@@ -310,9 +310,9 @@ const uint8_t kov3_key[0x100] = {
0x10, 0x09, 0xe0, 0x39, 0x02, 0xfe, 0x47, 0x44, 0x2a, 0x51, 0x21, 0x49, 0x04, 0x1d, 0x2d, 0xed,
};
-// DDPDOJ & KOF98UMH caused lots of problems to the automatic recovery
-// process, so they have needed a good amount of manual examination.
-// It is much more probable for these keys to still contain errors
+// DDPDOJ caused lots of problems to the automatic recovery
+// process, so needed a good amount of manual examination.
+// It is much more probable for this key to still contain errors
// than for the other ones.
const uint8_t ddpdoj_key[0x100] = {
@@ -333,22 +333,3 @@ const uint8_t ddpdoj_key[0x100] = {
0x83, 0x0b, 0xe2, 0x5b, 0xe4, 0x2c, 0x42, 0xa2, 0x42, 0x6a, 0x3b, 0x22, 0x25, 0x89, 0x47, 0x0b,
0xe3, 0xa9, 0xd3, 0xf3, 0x26, 0x02, 0x62, 0x53, 0x00, 0xd3, 0x23, 0x2b, 0x74, 0xa2, 0x1e, 0x1a,
};
-
-const uint8_t kof98umh_key[0x100] = {
- 0x80, 0x95, 0x10, 0x25, 0x26, 0x83, 0x22, 0x07, 0x95, 0xb4, 0x94, 0xb0, 0x8c, 0x2c, 0x87, 0x82,
- 0x80, 0x82, 0x96, 0x1d, 0x12, 0x10, 0x05, 0x1f, 0x14, 0x09, 0x9c, 0x0f, 0x00, 0x1b, 0x82, 0x8b,
- 0x96, 0x8a, 0xa3, 0xa7, 0x85, 0x86, 0xa6, 0xab, 0x80, 0x03, 0x0c, 0x8a, 0x03, 0x26, 0x27, 0xa4,
- 0x30, 0xa1, 0x85, 0x01, 0xb6, 0xb6, 0xa1, 0xab, 0x9b, 0x83, 0x82, 0x8a, 0x15, 0x26, 0x9c, 0x87,
- 0xf1, 0xb3, 0x13, 0x61, 0xa2, 0x83, 0xa4, 0x4b, 0x01, 0x68, 0x99, 0xc5, 0x07, 0x4f, 0x46, 0xc6,
- 0x14, 0x0e, 0x55, 0x03, 0x06, 0x01, 0xc6, 0x80, 0x55, 0xda, 0x51, 0x48, 0xca, 0x0e, 0xde, 0xcd,
- 0x60, 0xf6, 0x82, 0xd5, 0x83, 0xea, 0x26, 0x03, 0x56, 0x2a, 0x72, 0x80, 0xc5, 0x08, 0xec, 0x26,
- 0x15, 0x21, 0x90, 0xa2, 0xf2, 0x41, 0x54, 0x42, 0xea, 0x35, 0x0f, 0x01, 0xd4, 0x3b, 0xb3, 0x4d,
- 0x30, 0x9b, 0x17, 0xaa, 0x20, 0x29, 0x26, 0x88, 0x91, 0xa0, 0x9f, 0xaa, 0x2e, 0x8b, 0x2e, 0xad,
- 0x96, 0x93, 0x85, 0x8b, 0x92, 0x1e, 0x13, 0x98, 0x86, 0x04, 0x94, 0x16, 0x15, 0x0d, 0x17, 0x88,
- 0xa1, 0x2a, 0x12, 0x0c, 0x26, 0x09, 0x82, 0x29, 0x93, 0x82, 0x10, 0x0b, 0x21, 0xaf, 0x87, 0x8a,
- 0x04, 0x9e, 0x04, 0xa1, 0x27, 0xbf, 0x03, 0x2a, 0x90, 0x2f, 0x8a, 0x86, 0x1c, 0x34, 0x13, 0x8e,
- 0x07, 0x8b, 0xb3, 0xe0, 0x67, 0x02, 0x64, 0x4f, 0x07, 0x68, 0xac, 0x84, 0xae, 0xec, 0x63, 0x4e,
- 0x87, 0x0f, 0x56, 0x14, 0x54, 0x06, 0xc5, 0x81, 0x51, 0x96, 0xcf, 0x16, 0x49, 0x99, 0x49, 0xdd,
- 0x25, 0xc6, 0xc3, 0xe9, 0xa2, 0xe5, 0x63, 0x05, 0x13, 0x8a, 0xa4, 0x25, 0x26, 0x29, 0x6a, 0xe0,
- 0xc3, 0x6e, 0xc1, 0x99, 0xc1, 0xe2, 0x47, 0xa1, 0x4c, 0xa1, 0x14, 0x11, 0x4d, 0x32, 0x3f, 0x80,
-};
diff --git a/src/mame/machine/igs036crypt.h b/src/mame/machine/igs036crypt.h
index 8ccb0c6af78..69386dd2c22 100644
--- a/src/mame/machine/igs036crypt.h
+++ b/src/mame/machine/igs036crypt.h
@@ -30,6 +30,5 @@ extern const uint8_t cjddzsp_key[0x100];
extern const uint8_t cjdh2_key[0x100];
extern const uint8_t kov3_key[0x100];
extern const uint8_t ddpdoj_key[0x100];
-extern const uint8_t kof98umh_key[0x100];
#endif
diff --git a/src/mame/machine/inder_sb.cpp b/src/mame/machine/inder_sb.cpp
index 958672dbe48..ce14408e500 100644
--- a/src/mame/machine/inder_sb.cpp
+++ b/src/mame/machine/inder_sb.cpp
@@ -33,7 +33,7 @@ READ8_MEMBER(inder_sb_device::megaphx_0323_hack_r) { /*logerror("%04x audicpu I
READ16_MEMBER(inder_sb_device::megaphx_0x050002_r)
{
- space.machine().scheduler().synchronize();
+ machine().scheduler().synchronize();
// int pc = machine().device("maincpu")->safe_pc();
int ret = m_soundback;
m_soundback = 0;
@@ -44,7 +44,7 @@ READ16_MEMBER(inder_sb_device::megaphx_0x050002_r)
WRITE16_MEMBER(inder_sb_device::megaphx_0x050000_w)
{
// int pc = machine().device("maincpu")->safe_pc();
- space.machine().scheduler().synchronize();
+ machine().scheduler().synchronize();
//logerror("(%06x) megaphx_0x050000_w (to z80?) %04x %04x\n", pc, data, mem_mask);
m_soundsent = 0xff;
@@ -130,13 +130,13 @@ ADDRESS_MAP_END
READ8_MEMBER(inder_sb_device::megaphx_sound_cmd_r)
{
- space.machine().scheduler().synchronize();
+ machine().scheduler().synchronize();
return m_sounddata;
}
READ8_MEMBER(inder_sb_device::megaphx_sound_sent_r)
{
- space.machine().scheduler().synchronize();
+ machine().scheduler().synchronize();
int ret = m_soundsent;
m_soundsent = 0;
return ret;
@@ -145,7 +145,7 @@ READ8_MEMBER(inder_sb_device::megaphx_sound_sent_r)
WRITE8_MEMBER(inder_sb_device::megaphx_sound_to_68k_w)
{
// int pc = machine().device("audiocpu")->safe_pc();
- space.machine().scheduler().synchronize();
+ machine().scheduler().synchronize();
//logerror("(%04x) megaphx_sound_to_68k_w (to 68k?) %02x\n", pc, data);
m_soundback = data;
diff --git a/src/mame/machine/jalcrpt.cpp b/src/mame/machine/jalcrpt.cpp
index 45c92d90ce4..9db6afabee1 100644
--- a/src/mame/machine/jalcrpt.cpp
+++ b/src/mame/machine/jalcrpt.cpp
@@ -19,9 +19,9 @@ void phantasm_rom_decode(running_machine &machine, const char *region)
// [0] def0 189a bc56 7234
// [1] fdb9 7531 eca8 6420
// [2] 0123 4567 ba98 fedc
-#define BITSWAP_0 BITSWAP16(x,0xd,0xe,0xf,0x0,0x1,0x8,0x9,0xa,0xb,0xc,0x5,0x6,0x7,0x2,0x3,0x4)
-#define BITSWAP_1 BITSWAP16(x,0xf,0xd,0xb,0x9,0x7,0x5,0x3,0x1,0xe,0xc,0xa,0x8,0x6,0x4,0x2,0x0)
-#define BITSWAP_2 BITSWAP16(x,0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0xb,0xa,0x9,0x8,0xf,0xe,0xd,0xc)
+#define BITSWAP_0 bitswap<16>(x,0xd,0xe,0xf,0x0,0x1,0x8,0x9,0xa,0xb,0xc,0x5,0x6,0x7,0x2,0x3,0x4)
+#define BITSWAP_1 bitswap<16>(x,0xf,0xd,0xb,0x9,0x7,0x5,0x3,0x1,0xe,0xc,0xa,0x8,0x6,0x4,0x2,0x0)
+#define BITSWAP_2 bitswap<16>(x,0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0xb,0xa,0x9,0x8,0xf,0xe,0xd,0xc)
if (i < 0x08000/2) { if ( (i | (0x248/2)) != i ) {y = BITSWAP_0;} else {y = BITSWAP_1;} }
else if (i < 0x10000/2) { y = BITSWAP_2; }
@@ -54,9 +54,9 @@ void astyanax_rom_decode(running_machine &machine, const char *region)
// [1] fdb9 7531 8ace 0246
// [2] 4567 0123 ba98 fedc
-#define BITSWAP_0 BITSWAP16(x,0xd,0xe,0xf,0x0,0xa,0x9,0x8,0x1,0x6,0x5,0xc,0xb,0x7,0x2,0x3,0x4)
-#define BITSWAP_1 BITSWAP16(x,0xf,0xd,0xb,0x9,0x7,0x5,0x3,0x1,0x8,0xa,0xc,0xe,0x0,0x2,0x4,0x6)
-#define BITSWAP_2 BITSWAP16(x,0x4,0x5,0x6,0x7,0x0,0x1,0x2,0x3,0xb,0xa,0x9,0x8,0xf,0xe,0xd,0xc)
+#define BITSWAP_0 bitswap<16>(x,0xd,0xe,0xf,0x0,0xa,0x9,0x8,0x1,0x6,0x5,0xc,0xb,0x7,0x2,0x3,0x4)
+#define BITSWAP_1 bitswap<16>(x,0xf,0xd,0xb,0x9,0x7,0x5,0x3,0x1,0x8,0xa,0xc,0xe,0x0,0x2,0x4,0x6)
+#define BITSWAP_2 bitswap<16>(x,0x4,0x5,0x6,0x7,0x0,0x1,0x2,0x3,0xb,0xa,0x9,0x8,0xf,0xe,0xd,0xc)
if (i < 0x08000/2) { if ( (i | (0x248/2)) != i ) {y = BITSWAP_0;} else {y = BITSWAP_1;} }
else if (i < 0x10000/2) { y = BITSWAP_2; }
@@ -86,10 +86,10 @@ void rodland_rom_decode(running_machine &machine, const char *region)
// [0] d0a9 6ebf 5c72 3814 [1] 4567 0123 ba98 fedc
// [2] fdb9 ce07 5318 a246 [3] 4512 ed3b a967 08fc
-#define BITSWAP_0 BITSWAP16(x,0xd,0x0,0xa,0x9,0x6,0xe,0xb,0xf,0x5,0xc,0x7,0x2,0x3,0x8,0x1,0x4);
-#define BITSWAP_1 BITSWAP16(x,0x4,0x5,0x6,0x7,0x0,0x1,0x2,0x3,0xb,0xa,0x9,0x8,0xf,0xe,0xd,0xc);
-#define BITSWAP_2 BITSWAP16(x,0xf,0xd,0xb,0x9,0xc,0xe,0x0,0x7,0x5,0x3,0x1,0x8,0xa,0x2,0x4,0x6);
-#define BITSWAP_3 BITSWAP16(x,0x4,0x5,0x1,0x2,0xe,0xd,0x3,0xb,0xa,0x9,0x6,0x7,0x0,0x8,0xf,0xc);
+#define BITSWAP_0 bitswap<16>(x,0xd,0x0,0xa,0x9,0x6,0xe,0xb,0xf,0x5,0xc,0x7,0x2,0x3,0x8,0x1,0x4);
+#define BITSWAP_1 bitswap<16>(x,0x4,0x5,0x6,0x7,0x0,0x1,0x2,0x3,0xb,0xa,0x9,0x8,0xf,0xe,0xd,0xc);
+#define BITSWAP_2 bitswap<16>(x,0xf,0xd,0xb,0x9,0xc,0xe,0x0,0x7,0x5,0x3,0x1,0x8,0xa,0x2,0x4,0x6);
+#define BITSWAP_3 bitswap<16>(x,0x4,0x5,0x1,0x2,0xe,0xd,0x3,0xb,0xa,0x9,0x6,0x7,0x0,0x8,0xf,0xc);
if (i < 0x08000/2) { if ( (i | (0x248/2)) != i ) {y = BITSWAP_0;} else {y = BITSWAP_1;} }
else if (i < 0x10000/2) { if ( (i | (0x248/2)) != i ) {y = BITSWAP_2;} else {y = BITSWAP_3;} }
diff --git a/src/mame/machine/jumpshot.cpp b/src/mame/machine/jumpshot.cpp
index 5cf9cb711a4..ef569cf041d 100644
--- a/src/mame/machine/jumpshot.cpp
+++ b/src/mame/machine/jumpshot.cpp
@@ -37,7 +37,7 @@ uint8_t pacman_state::jumpshot_decrypt(int addr, uint8_t e)
method ^= 1;
tbl = swap_xor_table[method];
- return BITSWAP8(e,tbl[0],tbl[1],tbl[2],tbl[3],tbl[4],tbl[5],tbl[6],tbl[7]) ^ tbl[8];
+ return bitswap<8>(e,tbl[0],tbl[1],tbl[2],tbl[3],tbl[4],tbl[5],tbl[6],tbl[7]) ^ tbl[8];
}
diff --git a/src/mame/machine/kaneko_calc3.cpp b/src/mame/machine/kaneko_calc3.cpp
index 13ab946a72b..b02c49b8166 100644
--- a/src/mame/machine/kaneko_calc3.cpp
+++ b/src/mame/machine/kaneko_calc3.cpp
@@ -1224,14 +1224,14 @@ uint8_t kaneko_calc3_device::shift_bits(uint8_t dat, int bits)
{
bits &=0x7;
- if (bits==0) return BITSWAP8(dat, 7,6,5,4,3,2,1,0);
- if (bits==1) return BITSWAP8(dat, 6,5,4,3,2,1,0,7);
- if (bits==2) return BITSWAP8(dat, 5,4,3,2,1,0,7,6);
- if (bits==3) return BITSWAP8(dat, 4,3,2,1,0,7,6,5);
- if (bits==4) return BITSWAP8(dat, 3,2,1,0,7,6,5,4);
- if (bits==5) return BITSWAP8(dat, 2,1,0,7,6,5,4,3);
- if (bits==6) return BITSWAP8(dat, 1,0,7,6,5,4,3,2);
- if (bits==7) return BITSWAP8(dat, 0,7,6,5,4,3,2,1);
+ if (bits==0) return bitswap<8>(dat, 7,6,5,4,3,2,1,0);
+ if (bits==1) return bitswap<8>(dat, 6,5,4,3,2,1,0,7);
+ if (bits==2) return bitswap<8>(dat, 5,4,3,2,1,0,7,6);
+ if (bits==3) return bitswap<8>(dat, 4,3,2,1,0,7,6,5);
+ if (bits==4) return bitswap<8>(dat, 3,2,1,0,7,6,5,4);
+ if (bits==5) return bitswap<8>(dat, 2,1,0,7,6,5,4,3);
+ if (bits==6) return bitswap<8>(dat, 1,0,7,6,5,4,3,2);
+ if (bits==7) return bitswap<8>(dat, 0,7,6,5,4,3,2,1);
return dat;
}
@@ -1339,7 +1339,7 @@ int kaneko_calc3_device::decompress_table(int tabnum, uint8_t* dstram, int dstof
//printf("save to eeprom\n");
{
- eeprom_serial_93cxx_device *eeprom = space.machine().device<eeprom_serial_93cxx_device>(":eeprom");
+ eeprom_serial_93cxx_device *eeprom = machine().device<eeprom_serial_93cxx_device>(":eeprom");
for (i=0;i<0x40;i++)
{
@@ -1675,7 +1675,7 @@ void kaneko_calc3_device::mcu_run()
}
#endif
{
- eeprom_serial_93cxx_device *eeprom = space.machine().device<eeprom_serial_93cxx_device>(":eeprom");
+ eeprom_serial_93cxx_device *eeprom = machine().device<eeprom_serial_93cxx_device>(":eeprom");
for (i=0;i<0x40;i++)
{
diff --git a/src/mame/machine/konppc.cpp b/src/mame/machine/konppc.cpp
index b9429c8a1e6..28687545aeb 100644
--- a/src/mame/machine/konppc.cpp
+++ b/src/mame/machine/konppc.cpp
@@ -127,8 +127,8 @@ WRITE32_MEMBER( konppc_device::cgboard_dsp_comm_w_ppc )
{
const char *dsptag = (cgboard_id == 0) ? "dsp" : "dsp2";
const char *pcitag = (cgboard_id == 0) ? "k033906_1" : "k033906_2";
- device_t *dsp = space.machine().device(dsptag);
- k033906_device *k033906 = space.machine().device<k033906_device>(pcitag);
+ device_t *dsp = machine().device(dsptag);
+ k033906_device *k033906 = machine().device<k033906_device>(pcitag);
// osd_printf_debug("dsp_cmd_w: (board %d) %08X, %08X, %08X at %08X\n", cgboard_id, data, offset, mem_mask, space.device().safe_pc());
if (cgboard_id < MAX_CG_BOARDS)
@@ -184,7 +184,7 @@ WRITE32_MEMBER( konppc_device::cgboard_dsp_shared_w_ppc )
{
if (cgboard_id < MAX_CG_BOARDS)
{
- space.machine().scheduler().trigger(10000); // Remove the timeout (a part of the GTI Club FIFO test workaround)
+ machine().scheduler().trigger(10000); // Remove the timeout (a part of the GTI Club FIFO test workaround)
COMBINE_DATA(dsp_shared_ram[cgboard_id].get() + (offset + (dsp_shared_ram_bank[cgboard_id] * DSP_BANK_SIZE_WORD)));
}
}
@@ -211,12 +211,12 @@ void konppc_device::dsp_comm_sharc_w(address_space &space, int board, int offset
case CGBOARD_TYPE_GTICLUB:
{
//machine.device("dsp")->execute().set_input_line(SHARC_INPUT_FLAG0, ASSERT_LINE);
- space.machine().device<adsp21062_device>("dsp")->set_flag_input(0, ASSERT_LINE);
+ machine().device<adsp21062_device>("dsp")->set_flag_input(0, ASSERT_LINE);
if (offset == 1)
{
if (data & 0x03)
- space.machine().device<adsp21062_device>("dsp")->set_input_line(INPUT_LINE_IRQ2, ASSERT_LINE);
+ machine().device<adsp21062_device>("dsp")->set_input_line(INPUT_LINE_IRQ2, ASSERT_LINE);
}
break;
}
@@ -225,7 +225,7 @@ void konppc_device::dsp_comm_sharc_w(address_space &space, int board, int offset
case CGBOARD_TYPE_HANGPLT:
{
const char *dsptag = (board == 0) ? "dsp" : "dsp2";
- adsp21062_device *device = space.machine().device<adsp21062_device>(dsptag);
+ adsp21062_device *device = machine().device<adsp21062_device>(dsptag);
if (offset == 1)
{
@@ -240,7 +240,7 @@ void konppc_device::dsp_comm_sharc_w(address_space &space, int board, int offset
{
int offset = (data & 0x08) ? 1 : 0;
- space.machine().root_device().membank(texture_bank[board])->set_entry(offset);
+ machine().root_device().membank(texture_bank[board])->set_entry(offset);
}
}
break;
@@ -254,14 +254,14 @@ void konppc_device::dsp_comm_sharc_w(address_space &space, int board, int offset
{
int offset = (data & 0x08) ? 1 : 0;
- space.machine().root_device().membank(texture_bank[board])->set_entry(offset);
+ machine().root_device().membank(texture_bank[board])->set_entry(offset);
}
}
break;
}
}
-// printf("%s:cgboard_dsp_comm_w_sharc: %08X, %08X, %08X\n", space.machine().describe_context(), data, offset, mem_mask);
+// printf("%s:cgboard_dsp_comm_w_sharc: %08X, %08X, %08X\n", machine().describe_context(), data, offset, mem_mask);
dsp_comm_sharc[board][offset] = data;
}
@@ -340,7 +340,7 @@ WRITE32_MEMBER( konppc_device::cgboard_1_shared_sharc_w )
uint32_t konppc_device::nwk_fifo_r(address_space &space, int board)
{
const char *dsptag = (board == 0) ? "dsp" : "dsp2";
- adsp21062_device *device = space.machine().device<adsp21062_device>(dsptag);
+ adsp21062_device *device = machine().device<adsp21062_device>(dsptag);
uint32_t data;
if (nwk_fifo_read_ptr[board] < nwk_fifo_half_full_r)
@@ -395,7 +395,7 @@ void konppc_device::nwk_fifo_w(int board, uint32_t data)
READ32_MEMBER( konppc_device::K033906_0_r )
{
- k033906_device *k033906_1 = space.machine().device<k033906_device>("k033906_1");
+ k033906_device *k033906_1 = machine().device<k033906_device>("k033906_1");
if (nwk_device_sel[0] & 0x01)
return nwk_fifo_r(space, 0);
else
@@ -404,13 +404,13 @@ READ32_MEMBER( konppc_device::K033906_0_r )
WRITE32_MEMBER( konppc_device::K033906_0_w )
{
- k033906_device *k033906_1 = space.machine().device<k033906_device>("k033906_1");
+ k033906_device *k033906_1 = machine().device<k033906_device>("k033906_1");
k033906_1->write(space, offset, data, mem_mask);
}
READ32_MEMBER( konppc_device::K033906_1_r )
{
- k033906_device *k033906_2 = space.machine().device<k033906_device>("k033906_2");
+ k033906_device *k033906_2 = machine().device<k033906_device>("k033906_2");
if (nwk_device_sel[1] & 0x01)
return nwk_fifo_r(space, 1);
else
@@ -419,7 +419,7 @@ READ32_MEMBER( konppc_device::K033906_1_r )
WRITE32_MEMBER( konppc_device::K033906_1_w)
{
- k033906_device *k033906_2 = space.machine().device<k033906_device>("k033906_2");
+ k033906_device *k033906_2 = machine().device<k033906_device>("k033906_2");
k033906_2->write(space, offset, data, mem_mask);
}
@@ -427,7 +427,7 @@ WRITE32_MEMBER( konppc_device::K033906_1_w)
WRITE32_MEMBER( konppc_device::nwk_fifo_0_w)
{
- voodoo_device *device = space.machine().device<voodoo_device>("voodoo0");
+ voodoo_device *device = machine().device<voodoo_device>("voodoo0");
if (nwk_device_sel[0] & 0x01)
{
nwk_fifo_w(0, data);
@@ -445,7 +445,7 @@ WRITE32_MEMBER( konppc_device::nwk_fifo_0_w)
WRITE32_MEMBER( konppc_device::nwk_fifo_1_w)
{
- voodoo_device *device = space.machine().device<voodoo_device>("voodoo1");
+ voodoo_device *device = machine().device<voodoo_device>("voodoo1");
if (nwk_device_sel[1] & 0x01)
{
nwk_fifo_w(1, data);
@@ -463,7 +463,7 @@ WRITE32_MEMBER( konppc_device::nwk_fifo_1_w)
READ32_MEMBER( konppc_device::nwk_voodoo_0_r)
{
- voodoo_device *device = space.machine().device<voodoo_device>("voodoo0");
+ voodoo_device *device = machine().device<voodoo_device>("voodoo0");
if ((nwk_device_sel[0] == 0x4) && offset >= 0x100000 && offset < 0x200000)
{
return nwk_ram[0][offset & 0x1fff];
@@ -476,7 +476,7 @@ READ32_MEMBER( konppc_device::nwk_voodoo_0_r)
READ32_MEMBER( konppc_device::nwk_voodoo_1_r)
{
- voodoo_device *device = space.machine().device<voodoo_device>("voodoo1");
+ voodoo_device *device = machine().device<voodoo_device>("voodoo1");
if ((nwk_device_sel[1] == 0x4) && offset >= 0x100000 && offset < 0x200000)
{
return nwk_ram[1][offset & 0x1fff];
@@ -489,7 +489,7 @@ READ32_MEMBER( konppc_device::nwk_voodoo_1_r)
WRITE32_MEMBER( konppc_device::nwk_voodoo_0_w)
{
- voodoo_device *device = space.machine().device<voodoo_device>("voodoo0");
+ voodoo_device *device = machine().device<voodoo_device>("voodoo0");
if (nwk_device_sel[0] & 0x01)
{
nwk_fifo_w(0, data);
@@ -507,7 +507,7 @@ WRITE32_MEMBER( konppc_device::nwk_voodoo_0_w)
WRITE32_MEMBER( konppc_device::nwk_voodoo_1_w)
{
- voodoo_device *device = space.machine().device<voodoo_device>("voodoo0");
+ voodoo_device *device = machine().device<voodoo_device>("voodoo0");
if (nwk_device_sel[1] & 0x01)
{
nwk_fifo_w(1, data);
diff --git a/src/mame/machine/m24_z8000.cpp b/src/mame/machine/m24_z8000.cpp
index 4d253afb1e2..50a38b480ed 100644
--- a/src/mame/machine/m24_z8000.cpp
+++ b/src/mame/machine/m24_z8000.cpp
@@ -101,7 +101,7 @@ READ16_MEMBER(m24_z8000_device::pmem_r)
return 0;
offset = (offset & 0x3fff) | (hostseg << 14);
if((hostseg >= 40) && (hostseg <= 47))
- offset = (offset & 0xf0000) | BITSWAP16(offset,15,7,6,14,13,12,11,10,9,8,5,4,3,2,1,0); // move A6/A7 so CGA framebuffer appears linear
+ offset = (offset & 0xf0000) | bitswap<16>(offset,15,7,6,14,13,12,11,10,9,8,5,4,3,2,1,0); // move A6/A7 so CGA framebuffer appears linear
ret = m_maincpu->space(AS_PROGRAM).read_word(offset, (mem_mask << 8) | (mem_mask >> 8));
return (ret << 8) | (ret >> 8);
}
@@ -116,7 +116,7 @@ WRITE16_MEMBER(m24_z8000_device::pmem_w)
return;
offset = (offset & 0x3fff) | (hostseg << 14);
if((hostseg >= 40) && (hostseg <= 47))
- offset = (offset & 0xf0000) | BITSWAP16(offset,15,7,6,14,13,12,11,10,9,8,5,4,3,2,1,0);
+ offset = (offset & 0xf0000) | bitswap<16>(offset,15,7,6,14,13,12,11,10,9,8,5,4,3,2,1,0);
m_maincpu->space(AS_PROGRAM).write_word(offset, data, (mem_mask << 8) | (mem_mask >> 8));
}
@@ -136,7 +136,7 @@ READ16_MEMBER(m24_z8000_device::dmem_r)
return 0;
offset = (offset & 0x3fff) | (hostseg << 14);
if((hostseg >= 40) && (hostseg <= 47))
- offset = (offset & 0xf0000) | BITSWAP16(offset,15,7,6,14,13,12,11,10,9,8,5,4,3,2,1,0);
+ offset = (offset & 0xf0000) | bitswap<16>(offset,15,7,6,14,13,12,11,10,9,8,5,4,3,2,1,0);
ret = m_maincpu->space(AS_PROGRAM).read_word(offset, (mem_mask << 8) | (mem_mask >> 8));
return (ret << 8) | (ret >> 8);
}
@@ -151,7 +151,7 @@ WRITE16_MEMBER(m24_z8000_device::dmem_w)
return;
offset = (offset & 0x3fff) | (hostseg << 14);
if((hostseg >= 40) && (hostseg <= 47))
- offset = (offset & 0xf0000) | BITSWAP16(offset,15,7,6,14,13,12,11,10,9,8,5,4,3,2,1,0);
+ offset = (offset & 0xf0000) | bitswap<16>(offset,15,7,6,14,13,12,11,10,9,8,5,4,3,2,1,0);
m_maincpu->space(AS_PROGRAM).write_word(offset, data, (mem_mask << 8) | (mem_mask >> 8));
}
diff --git a/src/mame/machine/mac.cpp b/src/mame/machine/mac.cpp
index 57a9bed5901..8a1b8743e3b 100644
--- a/src/mame/machine/mac.cpp
+++ b/src/mame/machine/mac.cpp
@@ -127,7 +127,7 @@ void mac_fdc_set_enable_lines(device_t *device, int enable_mask)
{
mac_state *mac = device->machine().driver_data<mac_state>();
- if (mac->m_model != MODEL_MAC_SE)
+ if (mac->m_model != mac_state::MODEL_MAC_SE)
{
sony_set_enable_lines(device, enable_mask);
}
@@ -1166,7 +1166,7 @@ void mac_state::scc_mouse_irq(int x, int y)
READ16_MEMBER ( mac_state::mac_scc_r )
{
- scc8530_t *scc = space.machine().device<scc8530_t>("scc");
+ scc8530_t *scc = machine().device<scc8530_t>("scc");
uint16_t result;
result = scc->reg_r(space, offset);
@@ -1177,13 +1177,13 @@ READ16_MEMBER ( mac_state::mac_scc_r )
WRITE16_MEMBER ( mac_state::mac_scc_w )
{
- scc8530_t *scc = space.machine().device<scc8530_t>("scc");
+ scc8530_t *scc = machine().device<scc8530_t>("scc");
scc->reg_w(space, offset, data);
}
WRITE16_MEMBER ( mac_state::mac_scc_2_w )
{
- scc8530_t *scc = space.machine().device<scc8530_t>("scc");
+ scc8530_t *scc = machine().device<scc8530_t>("scc");
scc->reg_w(space, offset, data >> 8);
}
@@ -1202,7 +1202,7 @@ READ16_MEMBER ( mac_state::mac_iwm_r )
*/
uint16_t result = 0;
- applefdc_base_device *fdc = space.machine().device<applefdc_base_device>("fdc");
+ applefdc_base_device *fdc = machine().device<applefdc_base_device>("fdc");
result = fdc->read(offset >> 8);
@@ -1214,7 +1214,7 @@ READ16_MEMBER ( mac_state::mac_iwm_r )
WRITE16_MEMBER ( mac_state::mac_iwm_w )
{
- applefdc_base_device *fdc = space.machine().device<applefdc_base_device>("fdc");
+ applefdc_base_device *fdc = machine().device<applefdc_base_device>("fdc");
if (LOG_MAC_IWM)
printf("mac_iwm_w: offset=0x%08x data=0x%04x mask %04x (PC=%x)\n", offset, data, mem_mask, space.device().safe_pc());
diff --git a/src/mame/machine/macpci.cpp b/src/mame/machine/macpci.cpp
index eaa735c24d2..dca8b76ebec 100644
--- a/src/mame/machine/macpci.cpp
+++ b/src/mame/machine/macpci.cpp
@@ -168,7 +168,7 @@ READ32_MEMBER(macpci_state::mac_read_id)
READ16_MEMBER ( macpci_state::mac_scc_r )
{
- scc8530_t *scc = space.machine().device<scc8530_t>("scc");
+ scc8530_t *scc = machine().device<scc8530_t>("scc");
uint16_t result;
result = scc->reg_r(space, offset);
@@ -177,13 +177,13 @@ READ16_MEMBER ( macpci_state::mac_scc_r )
WRITE16_MEMBER ( macpci_state::mac_scc_w )
{
- scc8530_t *scc = space.machine().device<scc8530_t>("scc");
+ scc8530_t *scc = machine().device<scc8530_t>("scc");
scc->reg_w(space, offset, data);
}
WRITE16_MEMBER ( macpci_state::mac_scc_2_w )
{
- scc8530_t *scc = space.machine().device<scc8530_t>("scc");
+ scc8530_t *scc = machine().device<scc8530_t>("scc");
scc->reg_w(space, offset, data >> 8);
}
diff --git a/src/mame/machine/mbee.cpp b/src/mame/machine/mbee.cpp
index 0fd17f6c88e..2a9335c0780 100644
--- a/src/mame/machine/mbee.cpp
+++ b/src/mame/machine/mbee.cpp
@@ -279,7 +279,7 @@ void mbee_state::setup_banks(uint8_t data, bool first_time, uint8_t b_mask)
data &= 0x3f; // (bits 0-5 are referred to as S0-S5)
address_space &mem = m_maincpu->space(AS_PROGRAM);
uint8_t *prom = memregion("pals")->base();
- uint8_t b_data = BITSWAP8(data, 7,5,3,2,4,6,1,0) & 0x3b; // arrange data bits to S0,S1,-,S4,S2,S3
+ uint8_t b_data = bitswap<8>(data, 7,5,3,2,4,6,1,0) & 0x3b; // arrange data bits to S0,S1,-,S4,S2,S3
uint8_t b_bank, b_byte, b_byte_t, b_addr, p_bank = 1;
uint16_t b_vid;
char banktag[10];
@@ -291,11 +291,11 @@ void mbee_state::setup_banks(uint8_t data, bool first_time, uint8_t b_mask)
for (b_bank = 0; b_bank < 16; b_bank++)
{
b_vid = b_bank << 12;
- b_addr = BITSWAP8(b_bank, 7,4,5,3,1,2,6,0) & 0x1f; // arrange address bits to A12,-,A14,A13,A15
+ b_addr = bitswap<8>(b_bank, 7,4,5,3,1,2,6,0) & 0x1f; // arrange address bits to A12,-,A14,A13,A15
// Calculate read-bank
b_byte_t = prom[b_addr | (b_data << 8) | 0x82]; // read-bank (RDS and MREQ are low, RFSH is high)
- b_byte = BITSWAP8(b_byte_t, 7,5,0,3,6,2,1,4); // rearrange so that bits 0-2 are rambank, bit 3 = rom select, bit 4 = video select, others not used
+ b_byte = bitswap<8>(b_byte_t, 7,5,0,3,6,2,1,4); // rearrange so that bits 0-2 are rambank, bit 3 = rom select, bit 4 = video select, others not used
if (first_time || (b_byte != m_bank_array[p_bank]))
{
@@ -327,7 +327,7 @@ void mbee_state::setup_banks(uint8_t data, bool first_time, uint8_t b_mask)
// Calculate write-bank
b_byte_t = prom[b_addr | (b_data << 8) | 0xc0]; // write-bank (XWR and MREQ are low, RFSH is high)
- b_byte = BITSWAP8(b_byte_t, 7,5,0,3,6,2,1,4); // rearrange so that bits 0-2 are rambank, bit 3 = rom select, bit 4 = video select, others not used
+ b_byte = bitswap<8>(b_byte_t, 7,5,0,3,6,2,1,4); // rearrange so that bits 0-2 are rambank, bit 3 = rom select, bit 4 = video select, others not used
if (first_time || (b_byte != m_bank_array[p_bank]))
{
diff --git a/src/mame/machine/mc8123.cpp b/src/mame/machine/mc8123.cpp
index 8a4ff955299..bb446f89992 100644
--- a/src/mame/machine/mc8123.cpp
+++ b/src/mame/machine/mc8123.cpp
@@ -102,10 +102,10 @@ template <typename T, typename... U> constexpr u8 BITS(T b, U... c) { return (u8
u8 mc8123_device::decrypt_type0(u8 val, u8 param, unsigned swap)
{
- if (swap == 0) val = BITSWAP8(val,7,5,3,1,2,0,6,4);
- if (swap == 1) val = BITSWAP8(val,5,3,7,2,1,0,4,6);
- if (swap == 2) val = BITSWAP8(val,0,3,4,6,7,1,5,2);
- if (swap == 3) val = BITSWAP8(val,0,7,3,2,6,4,1,5);
+ if (swap == 0) val = bitswap<8>(val,7,5,3,1,2,0,6,4);
+ if (swap == 1) val = bitswap<8>(val,5,3,7,2,1,0,4,6);
+ if (swap == 2) val = bitswap<8>(val,0,3,4,6,7,1,5,2);
+ if (swap == 3) val = bitswap<8>(val,0,7,3,2,6,4,1,5);
if (BIT(param,3) && BIT(val,7))
val ^= BITS(5,3,0);
@@ -126,7 +126,7 @@ u8 mc8123_device::decrypt_type0(u8 val, u8 param, unsigned swap)
if (BIT(param,1)) val ^= BITS(7,6);
if (BIT(param,0)) val ^= BITS(5,0);
- if (BIT(param,0)) val = BITSWAP8(val,7,6,5,1,4,3,2,0);
+ if (BIT(param,0)) val = bitswap<8>(val,7,6,5,1,4,3,2,0);
return val;
}
@@ -134,12 +134,12 @@ u8 mc8123_device::decrypt_type0(u8 val, u8 param, unsigned swap)
u8 mc8123_device::decrypt_type1a(u8 val, u8 param, unsigned swap)
{
- if (swap == 0) val = BITSWAP8(val,4,2,6,5,3,7,1,0);
- if (swap == 1) val = BITSWAP8(val,6,0,5,4,3,2,1,7);
- if (swap == 2) val = BITSWAP8(val,2,3,6,1,4,0,7,5);
- if (swap == 3) val = BITSWAP8(val,6,5,1,3,2,7,0,4);
+ if (swap == 0) val = bitswap<8>(val,4,2,6,5,3,7,1,0);
+ if (swap == 1) val = bitswap<8>(val,6,0,5,4,3,2,1,7);
+ if (swap == 2) val = bitswap<8>(val,2,3,6,1,4,0,7,5);
+ if (swap == 3) val = bitswap<8>(val,6,5,1,3,2,7,0,4);
- if (BIT(param,2)) val = BITSWAP8(val,7,6,1,5,3,2,4,0);
+ if (BIT(param,2)) val = bitswap<8>(val,7,6,1,5,3,2,4,0);
if (BIT(val,1)) val ^= BITS(0);
if (BIT(val,6)) val ^= BITS(3);
@@ -155,17 +155,17 @@ u8 mc8123_device::decrypt_type1a(u8 val, u8 param, unsigned swap)
if (BIT(param,3)) val ^= BITS(7,2);
if (BIT(param,1)) val ^= BITS(6,3);
- if (BIT(param,0)) val = BITSWAP8(val,7,6,1,4,3,2,5,0);
+ if (BIT(param,0)) val = bitswap<8>(val,7,6,1,4,3,2,5,0);
return val;
}
u8 mc8123_device::decrypt_type1b(u8 val, u8 param, unsigned swap)
{
- if (swap == 0) val = BITSWAP8(val,1,0,3,2,5,6,4,7);
- if (swap == 1) val = BITSWAP8(val,2,0,5,1,7,4,6,3);
- if (swap == 2) val = BITSWAP8(val,6,4,7,2,0,5,1,3);
- if (swap == 3) val = BITSWAP8(val,7,1,3,6,0,2,5,4);
+ if (swap == 0) val = bitswap<8>(val,1,0,3,2,5,6,4,7);
+ if (swap == 1) val = bitswap<8>(val,2,0,5,1,7,4,6,3);
+ if (swap == 2) val = bitswap<8>(val,6,4,7,2,0,5,1,3);
+ if (swap == 3) val = bitswap<8>(val,7,1,3,6,0,2,5,4);
if (BIT(val,2) && BIT(val,0))
val ^= BITS(7,4);
@@ -190,13 +190,13 @@ u8 mc8123_device::decrypt_type1b(u8 val, u8 param, unsigned swap)
u8 mc8123_device::decrypt_type2a(u8 val, u8 param, unsigned swap)
{
- if (swap == 0) val = BITSWAP8(val,0,1,4,3,5,6,2,7);
- if (swap == 1) val = BITSWAP8(val,6,3,0,5,7,4,1,2);
- if (swap == 2) val = BITSWAP8(val,1,6,4,5,0,3,7,2);
- if (swap == 3) val = BITSWAP8(val,4,6,7,5,2,3,1,0);
+ if (swap == 0) val = bitswap<8>(val,0,1,4,3,5,6,2,7);
+ if (swap == 1) val = bitswap<8>(val,6,3,0,5,7,4,1,2);
+ if (swap == 2) val = bitswap<8>(val,1,6,4,5,0,3,7,2);
+ if (swap == 3) val = bitswap<8>(val,4,6,7,5,2,3,1,0);
if (BIT(val,3) || (BIT(param,1) && BIT(val,2)))
- val = BITSWAP8(val,6,0,7,4,3,2,1,5);
+ val = bitswap<8>(val,6,0,7,4,3,2,1,5);
if (BIT(val,5)) val ^= BITS(7);
if (BIT(val,6)) val ^= BITS(5);
@@ -211,13 +211,13 @@ u8 mc8123_device::decrypt_type2a(u8 val, u8 param, unsigned swap)
if (BIT(param,3))
{
if (BIT(param,0))
- val = BITSWAP8(val,7,6,5,3,4,1,2,0);
+ val = bitswap<8>(val,7,6,5,3,4,1,2,0);
else
- val = BITSWAP8(val,7,6,5,1,2,4,3,0);
+ val = bitswap<8>(val,7,6,5,1,2,4,3,0);
}
else if (BIT(param,0))
{
- val = BITSWAP8(val,7,6,5,2,1,3,4,0);
+ val = bitswap<8>(val,7,6,5,2,1,3,4,0);
}
return val;
@@ -228,10 +228,10 @@ u8 mc8123_device::decrypt_type2b(u8 val, u8 param, unsigned swap)
// only 0x20 possible encryptions for this method - all others have 0x40
// this happens because BIT(param,2) cancels the other three
- if (swap == 0) val = BITSWAP8(val,1,3,4,6,5,7,0,2);
- if (swap == 1) val = BITSWAP8(val,0,1,5,4,7,3,2,6);
- if (swap == 2) val = BITSWAP8(val,3,5,4,1,6,2,0,7);
- if (swap == 3) val = BITSWAP8(val,5,2,3,0,4,7,6,1);
+ if (swap == 0) val = bitswap<8>(val,1,3,4,6,5,7,0,2);
+ if (swap == 1) val = bitswap<8>(val,0,1,5,4,7,3,2,6);
+ if (swap == 2) val = bitswap<8>(val,3,5,4,1,6,2,0,7);
+ if (swap == 3) val = bitswap<8>(val,5,2,3,0,4,7,6,1);
if (BIT(val,7) && BIT(val,3))
val ^= BITS(6,4,0);
@@ -263,22 +263,22 @@ u8 mc8123_device::decrypt_type2b(u8 val, u8 param, unsigned swap)
u8 mc8123_device::decrypt_type3a(u8 val, u8 param, unsigned swap)
{
- if (swap == 0) val = BITSWAP8(val,5,3,1,7,0,2,6,4);
- if (swap == 1) val = BITSWAP8(val,3,1,2,5,4,7,0,6);
- if (swap == 2) val = BITSWAP8(val,5,6,1,2,7,0,4,3);
- if (swap == 3) val = BITSWAP8(val,5,6,7,0,4,2,1,3);
+ if (swap == 0) val = bitswap<8>(val,5,3,1,7,0,2,6,4);
+ if (swap == 1) val = bitswap<8>(val,3,1,2,5,4,7,0,6);
+ if (swap == 2) val = bitswap<8>(val,5,6,1,2,7,0,4,3);
+ if (swap == 3) val = bitswap<8>(val,5,6,7,0,4,2,1,3);
if (BIT(val,2)) val ^= BITS(7,5,4);
if (BIT(val,3)) val ^= BITS(0);
- if (BIT(param,0)) val = BITSWAP8(val,7,2,5,4,3,1,0,6);
+ if (BIT(param,0)) val = bitswap<8>(val,7,2,5,4,3,1,0,6);
if (BIT(val,1)) val ^= BITS(6,0);
if (BIT(val,3)) val ^= BITS(4,2,1);
if (BIT(param,3)) val ^= BITS(4,3);
- if (BIT(val,3)) val = BITSWAP8(val,5,6,7,4,3,2,1,0);
+ if (BIT(val,3)) val = bitswap<8>(val,5,6,7,4,3,2,1,0);
if (BIT(val,5)) val ^= BITS(2,1);
@@ -293,14 +293,14 @@ u8 mc8123_device::decrypt_type3a(u8 val, u8 param, unsigned swap)
u8 mc8123_device::decrypt_type3b(u8 val, u8 param, unsigned swap)
{
- if (swap == 0) val = BITSWAP8(val,3,7,5,4,0,6,2,1);
- if (swap == 1) val = BITSWAP8(val,7,5,4,6,1,2,0,3);
- if (swap == 2) val = BITSWAP8(val,7,4,3,0,5,1,6,2);
- if (swap == 3) val = BITSWAP8(val,2,6,4,1,3,7,0,5);
+ if (swap == 0) val = bitswap<8>(val,3,7,5,4,0,6,2,1);
+ if (swap == 1) val = bitswap<8>(val,7,5,4,6,1,2,0,3);
+ if (swap == 2) val = bitswap<8>(val,7,4,3,0,5,1,6,2);
+ if (swap == 3) val = bitswap<8>(val,2,6,4,1,3,7,0,5);
if (BIT(val,2)) val ^= BITS(7);
- if (BIT(val,7)) val = BITSWAP8(val,7,6,3,4,5,2,1,0);
+ if (BIT(val,7)) val = bitswap<8>(val,7,6,3,4,5,2,1,0);
if (BIT(param,3)) val ^= BITS(7);
@@ -315,7 +315,7 @@ u8 mc8123_device::decrypt_type3b(u8 val, u8 param, unsigned swap)
if (BIT(param,3)) val ^= BITS(7);
if (BIT(param,2)) val ^= BITS(0);
- if (BIT(param,3)) val = BITSWAP8(val,4,6,3,2,5,0,1,7);
+ if (BIT(param,3)) val = bitswap<8>(val,4,6,3,2,5,0,1,7);
if (BIT(val,4)) val ^= BITS(1);
if (BIT(val,5)) val ^= BITS(4);
diff --git a/src/mame/machine/mega32x.cpp b/src/mame/machine/mega32x.cpp
index b815f1eec16..60786327e66 100644
--- a/src/mame/machine/mega32x.cpp
+++ b/src/mame/machine/mega32x.cpp
@@ -389,7 +389,7 @@ WRITE16_MEMBER( sega_32x_device::_32x_68k_a15106_w )
{
// install the game rom in the normal 0x000000-0x03fffff space used by the genesis - this allows VDP DMA operations to work as they have to be from this area or RAM
// it should also UNMAP the banked rom area...
- space.install_rom(0x0000100, 0x03fffff, space.machine().root_device().memregion("gamecart")->base() + 0x100);
+ space.install_rom(0x0000100, 0x03fffff, machine().root_device().memregion("gamecart")->base() + 0x100);
}
else
{
@@ -397,7 +397,7 @@ WRITE16_MEMBER( sega_32x_device::_32x_68k_a15106_w )
// this is actually blank / nop area
// we should also map the banked area back (we don't currently unmap it tho)
- space.install_rom(0x0000100, 0x03fffff, space.machine().root_device().memregion("maincpu")->base()+0x100);
+ space.install_rom(0x0000100, 0x03fffff, machine().root_device().memregion("maincpu")->base()+0x100);
}
if((m_a15106_reg & 4) == 0) // clears the FIFO state
@@ -430,7 +430,7 @@ WRITE16_MEMBER( sega_32x_device::_32x_68k_a15106_w )
READ16_MEMBER( sega_32x_device::_32x_dreq_common_r )
{
- address_space& _68kspace = space.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ address_space& _68kspace = machine().device("maincpu")->memory().space(AS_PROGRAM);
switch (offset)
{
@@ -501,7 +501,7 @@ READ16_MEMBER( sega_32x_device::_32x_dreq_common_r )
WRITE16_MEMBER( sega_32x_device::_32x_dreq_common_w )
{
- address_space& _68kspace = space.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ address_space& _68kspace = machine().device("maincpu")->memory().space(AS_PROGRAM);
switch (offset)
{
@@ -689,12 +689,12 @@ WRITE16_MEMBER( sega_32x_device::_32x_68k_a15100_w )
if (data & 0x01)
{
m_32x_adapter_enabled = 1;
- space.install_rom(0x0880000, 0x08fffff, space.machine().root_device().memregion("gamecart")->base()); // 'fixed' 512kb rom bank
+ space.install_rom(0x0880000, 0x08fffff, machine().root_device().memregion("gamecart")->base()); // 'fixed' 512kb rom bank
space.install_read_bank(0x0900000, 0x09fffff, "bank12"); // 'bankable' 1024kb rom bank
- space.machine().root_device().membank("bank12")->set_base(space.machine().root_device().memregion("gamecart")->base()+((m_32x_68k_a15104_reg&0x3)*0x100000) );
+ machine().root_device().membank("bank12")->set_base(machine().root_device().memregion("gamecart")->base()+((m_32x_68k_a15104_reg&0x3)*0x100000) );
- space.install_rom(0x0000000, 0x03fffff, space.machine().root_device().memregion("32x_68k_bios")->base());
+ space.install_rom(0x0000000, 0x03fffff, machine().root_device().memregion("32x_68k_bios")->base());
/* VDP area */
space.install_readwrite_handler(0x0a15180, 0x0a1518b, read16_delegate(FUNC(sega_32x_device::_32x_common_vdp_regs_r), this), write16_delegate(FUNC(sega_32x_device::_32x_common_vdp_regs_w),this)); // common / shared VDP regs
@@ -704,14 +704,14 @@ WRITE16_MEMBER( sega_32x_device::_32x_68k_a15100_w )
- space.machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0x000070, 0x000073, read16_delegate(FUNC(sega_32x_device::_32x_68k_m_hint_vector_r),this), write16_delegate(FUNC(sega_32x_device::_32x_68k_m_hint_vector_w),this)); // h interrupt vector
+ machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0x000070, 0x000073, read16_delegate(FUNC(sega_32x_device::_32x_68k_m_hint_vector_r),this), write16_delegate(FUNC(sega_32x_device::_32x_68k_m_hint_vector_w),this)); // h interrupt vector
}
else
{
m_32x_adapter_enabled = 0;
- space.install_rom(0x0000000, 0x03fffff, space.machine().root_device().memregion("gamecart")->base());
- space.machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0x000070, 0x000073, read16_delegate(FUNC(sega_32x_device::_32x_68k_m_hint_vector_r),this), write16_delegate(FUNC(sega_32x_device::_32x_68k_m_hint_vector_w),this)); // h interrupt vector
+ space.install_rom(0x0000000, 0x03fffff, machine().root_device().memregion("gamecart")->base());
+ machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0x000070, 0x000073, read16_delegate(FUNC(sega_32x_device::_32x_68k_m_hint_vector_r),this), write16_delegate(FUNC(sega_32x_device::_32x_68k_m_hint_vector_w),this)); // h interrupt vector
}
}
@@ -778,7 +778,7 @@ WRITE16_MEMBER( sega_32x_device::_32x_68k_a15104_w )
m_32x_68k_a15104_reg = (m_32x_68k_a15104_reg & 0x00ff) | (data & 0xff00);
}
- space.machine().root_device().membank("bank12")->set_base(space.machine().root_device().memregion("gamecart")->base()+((m_32x_68k_a15104_reg&0x3)*0x100000) );
+ machine().root_device().membank("bank12")->set_base(machine().root_device().memregion("gamecart")->base()+((m_32x_68k_a15104_reg&0x3)*0x100000) );
}
/**********************************************************************************************/
@@ -793,7 +793,7 @@ WRITE16_MEMBER( sega_32x_device::_32x_68k_a15104_w )
// reads
READ16_MEMBER( sega_32x_device::_32x_68k_m_commsram_r )
{
- if (_32X_COMMS_PORT_SYNC) space.machine().scheduler().synchronize();
+ if (_32X_COMMS_PORT_SYNC) machine().scheduler().synchronize();
return m_commsram[offset];
}
@@ -801,7 +801,7 @@ READ16_MEMBER( sega_32x_device::_32x_68k_m_commsram_r )
WRITE16_MEMBER( sega_32x_device::_32x_68k_m_commsram_w )
{
COMBINE_DATA(&m_commsram[offset]);
- if (_32X_COMMS_PORT_SYNC) space.machine().scheduler().synchronize();
+ if (_32X_COMMS_PORT_SYNC) machine().scheduler().synchronize();
}
/**********************************************************************************************/
@@ -1069,7 +1069,7 @@ WRITE16_MEMBER( sega_32x_device::_32x_common_vdp_regs_w )
{
// what happens if the z80 accesses it, what authorization do we use? which address space do we get?? the z80 *can* write here and to the framebuffer via the window
- address_space& _68kspace = space.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ address_space& _68kspace = machine().device("maincpu")->memory().space(AS_PROGRAM);
if (&space!= &_68kspace)
{
diff --git a/src/mame/machine/megacd.cpp b/src/mame/machine/megacd.cpp
index 10a0ebd6860..ce33cc71a3d 100644
--- a/src/mame/machine/megacd.cpp
+++ b/src/mame/machine/megacd.cpp
@@ -842,13 +842,13 @@ READ16_MEMBER( sega_segacd_device::segacd_main_dataram_part1_r )
// used by Heart of the Alien
if(offset<0x30000/2) /* 0x20000 - 0x2ffff */ // 512x256 bitmap. tiles
- offset = BITSWAP24(offset,23,22,21,20,19,18,17,16,15,8,7,6,5,4,3,2,1,14,13,12,11,10,9,0);
+ offset = bitswap<24>(offset,23,22,21,20,19,18,17,16,15,8,7,6,5,4,3,2,1,14,13,12,11,10,9,0);
else if(offset<0x38000/2) /* 0x30000 - 0x37fff */ // 512x128 bitmap. tiles
- offset = BITSWAP24(offset,23,22,21,20,19,18,17,16,15,14,7,6,5,4,3,2,1,13,12,11,10,9,8,0);
+ offset = bitswap<24>(offset,23,22,21,20,19,18,17,16,15,14,7,6,5,4,3,2,1,13,12,11,10,9,8,0);
else if(offset<0x3c000/2) /* 0x38000 - 0x3bfff */ // 512x64 bitmap. tiles
- offset = BITSWAP24(offset,23,22,21,20,19,18,17,16,15,14,13,6,5,4,3,2,1,12,11,10,9,8,7,0);
+ offset = bitswap<24>(offset,23,22,21,20,19,18,17,16,15,14,13,6,5,4,3,2,1,12,11,10,9,8,7,0);
else /* 0x3c000 - 0x3dfff and 0x3e000 - 0x3ffff */ // 512x32 bitmap (x2) -> tiles
- offset = BITSWAP24(offset,23,22,21,20,19,18,17,16,15,14,13,12,5,4,3,2,1,11,10,9,8,7,6,0);
+ offset = bitswap<24>(offset,23,22,21,20,19,18,17,16,15,14,13,12,5,4,3,2,1,11,10,9,8,7,6,0);
offset &=0xffff;
// HOTA cares about this
diff --git a/src/mame/machine/megacdcd.cpp b/src/mame/machine/megacdcd.cpp
index ac055834c90..ea4fb87b08f 100644
--- a/src/mame/machine/megacdcd.cpp
+++ b/src/mame/machine/megacdcd.cpp
@@ -975,12 +975,12 @@ READ16_MEMBER( lc89510_temp_device::segacd_cdc_data_r )
READ16_MEMBER( lc89510_temp_device::cdc_data_sub_r )
{
- return CDC_Host_r(space.machine(), READ_SUB);
+ return CDC_Host_r(machine(), READ_SUB);
}
READ16_MEMBER( lc89510_temp_device::cdc_data_main_r )
{
- return CDC_Host_r(space.machine(), READ_MAIN);
+ return CDC_Host_r(machine(), READ_MAIN);
}
@@ -1006,7 +1006,7 @@ WRITE16_MEMBER( lc89510_temp_device::segacd_irq_mask_w )
if (!(segacd_irq_mask & 0x10))
{
segacd_irq_mask = data & 0x7e;
- CDD_Process(space.machine(), 0);
+ CDD_Process(machine(), 0);
return;
}
}
@@ -1044,7 +1044,7 @@ WRITE16_MEMBER( lc89510_temp_device::segacd_cdd_ctrl_w )
{
if (segacd_irq_mask&0x10)
{
- CDD_Process(space.machine(), 1);
+ CDD_Process(machine(), 1);
}
}
}
@@ -1096,7 +1096,7 @@ WRITE8_MEMBER( lc89510_temp_device::segacd_cdd_tx_w )
if(offset == 9)
{
- CDD_Import(space.machine());
+ CDD_Import(machine());
}
}
diff --git a/src/mame/machine/megadriv.cpp b/src/mame/machine/megadriv.cpp
index 756c6ee00c7..8848083b33e 100644
--- a/src/mame/machine/megadriv.cpp
+++ b/src/mame/machine/megadriv.cpp
@@ -320,7 +320,7 @@ READ16_MEMBER(md_base_state::megadriv_68k_io_read )
D0 : Bit 0 of version number
*/
- //return (space.machine().rand()&0x0f0f)|0xf0f0;//0x0000;
+ //return (machine().rand()&0x0f0f)|0xf0f0;//0x0000;
switch (offset)
{
case 0:
@@ -502,7 +502,7 @@ READ16_MEMBER(md_base_state::megadriv_68k_read_z80_ram )
else
{
logerror("%06x: 68000 attempting to access Z80 (read) address space without bus\n", space.device().safe_pc());
- return space.machine().rand();
+ return machine().rand();
}
}
@@ -543,7 +543,7 @@ READ16_MEMBER(md_base_state::megadriv_68k_check_z80_bus )
the value is never zero. Time Killers is the most fussy, and doesn't like the
read_next_instruction function from system16, so I just return a random value
in the unused bits */
- uint16_t nextvalue = space.machine().rand();//read_next_instruction(space)&0xff00;
+ uint16_t nextvalue = machine().rand();//read_next_instruction(space)&0xff00;
/* Check if the 68k has the z80 bus */
@@ -730,7 +730,7 @@ WRITE8_MEMBER(md_base_state::megadriv_z80_vdp_write )
READ8_MEMBER(md_base_state::megadriv_z80_vdp_read )
{
osd_printf_debug("megadriv_z80_vdp_read %02x\n",offset);
- return space.machine().rand();
+ return machine().rand();
}
READ8_MEMBER(md_base_state::megadriv_z80_unmapped_read )
diff --git a/src/mame/machine/mexico86.cpp b/src/mame/machine/mexico86.cpp
index e473811aae6..cdbccf080a8 100644
--- a/src/mame/machine/mexico86.cpp
+++ b/src/mame/machine/mexico86.cpp
@@ -106,8 +106,8 @@ void mexico86_state::mcu_simulate( )
m_protection_ram[0x04] = 0x3c | (coin_in_read ^ 3); // coin inputs
- m_protection_ram[0x02] = BITSWAP8(ioport("IN1")->read(), 7,6,5,4,2,3,1,0); // player 1
- m_protection_ram[0x03] = BITSWAP8(ioport("IN2")->read(), 7,6,5,4,2,3,1,0); // player 2
+ m_protection_ram[0x02] = bitswap<8>(ioport("IN1")->read(), 7,6,5,4,2,3,1,0); // player 1
+ m_protection_ram[0x03] = bitswap<8>(ioport("IN2")->read(), 7,6,5,4,2,3,1,0); // player 2
if (m_protection_ram[0x19] == 0xaa) // player 2 active
m_protection_ram[0x1b] = m_protection_ram[0x03];
diff --git a/src/mame/machine/micropolis.cpp b/src/mame/machine/micropolis.cpp
index e3c760dd82f..b79ee7b3177 100644
--- a/src/mame/machine/micropolis.cpp
+++ b/src/mame/machine/micropolis.cpp
@@ -303,7 +303,7 @@ WRITE8_MEMBER( micropolis_device::data_w )
else
{
if (VERBOSE)
- logerror("%s: micropolis_data_w $%02X\n", space.machine().describe_context(), data);
+ logerror("%s: micropolis_data_w $%02X\n", machine().describe_context(), data);
}
m_data = data;
}
diff --git a/src/mame/machine/midwayic.cpp b/src/mame/machine/midwayic.cpp
index 6cd2ab02612..861ff027d49 100644
--- a/src/mame/machine/midwayic.cpp
+++ b/src/mame/machine/midwayic.cpp
@@ -216,37 +216,37 @@ void midway_serial_pic_emu_device::device_start()
READ8_MEMBER(midway_serial_pic_emu_device::read_a)
{
-// printf("%s: read_a\n", space.machine().describe_context());
+// printf("%s: read_a\n", machine().describe_context());
return 0x00;
}
READ8_MEMBER(midway_serial_pic_emu_device::read_b)
{
-// printf("%s: read_b\n", space.machine().describe_context());
+// printf("%s: read_b\n", machine().describe_context());
return 0x00;
}
READ8_MEMBER(midway_serial_pic_emu_device::read_c)
{
// used
-// printf("%s: read_c\n", space.machine().describe_context());
+// printf("%s: read_c\n", machine().describe_context());
return 0x00;
}
WRITE8_MEMBER(midway_serial_pic_emu_device::write_a)
{
-// printf("%s: write_a %02x\n", space.machine().describe_context(), data);
+// printf("%s: write_a %02x\n", machine().describe_context(), data);
}
WRITE8_MEMBER(midway_serial_pic_emu_device::write_b)
{
-// printf("%s: write_b %02x\n", space.machine().describe_context(), data);
+// printf("%s: write_b %02x\n", machine().describe_context(), data);
}
WRITE8_MEMBER(midway_serial_pic_emu_device::write_c)
{
// used
-// printf("%s: write_c %02x\n", space.machine().describe_context(), data);
+// printf("%s: write_c %02x\n", machine().describe_context(), data);
}
MACHINE_CONFIG_MEMBER( midway_serial_pic_emu_device::device_add_mconfig )
diff --git a/src/mame/machine/mpu4.cpp b/src/mame/machine/mpu4.cpp
index 838feffd8fe..54bc2641605 100644
--- a/src/mame/machine/mpu4.cpp
+++ b/src/mame/machine/mpu4.cpp
@@ -2138,8 +2138,8 @@ void mpu4_state::mpu4_install_mod4yam_space(address_space &space)
void mpu4_state::mpu4_install_mod4oki_space(address_space &space)
{
- pia6821_device *pia_ic4ss = space.machine().device<pia6821_device>("pia_ic4ss");
- ptm6840_device *ptm_ic3ss = space.machine().device<ptm6840_device>("ptm_ic3ss");
+ pia6821_device *pia_ic4ss = machine().device<pia6821_device>("pia_ic4ss");
+ ptm6840_device *ptm_ic3ss = machine().device<ptm6840_device>("ptm_ic3ss");
space.install_readwrite_handler(0x0880, 0x0883, read8_delegate(FUNC(pia6821_device::read), pia_ic4ss), write8_delegate(FUNC(pia6821_device::write), pia_ic4ss));
space.install_read_handler(0x08c0, 0x08c7, read8_delegate(FUNC(ptm6840_device::read), ptm_ic3ss));
@@ -2567,13 +2567,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/machine/namco06.cpp b/src/mame/machine/namco06.cpp
index 0b3ba86d86a..9ff0d3655ea 100644
--- a/src/mame/machine/namco06.cpp
+++ b/src/mame/machine/namco06.cpp
@@ -145,7 +145,7 @@ READ8_MEMBER( namco_06xx_device::ctrl_r )
WRITE8_MEMBER( namco_06xx_device::ctrl_w )
{
- LOG("%s: 06XX '%s' control %02x\n",space.machine().describe_context(),tag(),data);
+ LOG("%s: 06XX '%s' control %02x\n",machine().describe_context(),tag(),data);
m_control = data;
diff --git a/src/mame/machine/namcos2.cpp b/src/mame/machine/namcos2.cpp
index eb055be1911..71aac181e3b 100644
--- a/src/mame/machine/namcos2.cpp
+++ b/src/mame/machine/namcos2.cpp
@@ -92,7 +92,7 @@ WRITE8_MEMBER(namcos2_shared_state::sound_reset_w)
//printf( "dspkick=0x%x\n", data );
if (data & 0x04)
{
- (*namcos2_kickstart)(space.machine(), 1);
+ (*namcos2_kickstart)(machine(), 1);
}
}
}
@@ -327,7 +327,7 @@ READ16_MEMBER( namcos2_state::namcos2_68k_key_r )
// case 3: return 0x142;
case 4: return 0x142;
// case 3: popmessage("blah %08x",space.device().safe_pc());
- default: return space.machine().rand();
+ default: return machine().rand();
}
case NAMCOS2_SUPER_WSTADIUM_92:
@@ -383,7 +383,7 @@ READ16_MEMBER( namcos2_state::namcos2_68k_key_r )
- return space.machine().rand()&0xffff;
+ return machine().rand()&0xffff;
}
WRITE16_MEMBER( namcos2_state::namcos2_68k_key_w )
diff --git a/src/mame/machine/nb1413m3.cpp b/src/mame/machine/nb1413m3.cpp
index 0092777d760..6932ee133d8 100644
--- a/src/mame/machine/nb1413m3.cpp
+++ b/src/mame/machine/nb1413m3.cpp
@@ -289,8 +289,8 @@ READ8_MEMBER( nb1413m3_device::sndrom_r )
popmessage("Sound ROM %02X:%05X [B1:%02X B2:%02X]", rombank, offset, m_sndrombank1, m_sndrombank2);
#endif
- if (offset < space.machine().root_device().memregion(m_sndromrgntag)->bytes())
- return space.machine().root_device().memregion(m_sndromrgntag)->base()[offset];
+ if (offset < machine().root_device().memregion(m_sndromrgntag)->bytes())
+ return machine().root_device().memregion(m_sndromrgntag)->base()[offset];
else
{
popmessage("read past sound ROM length (%05x[%02X])",offset, rombank);
@@ -313,7 +313,7 @@ WRITE8_MEMBER( nb1413m3_device::sndrombank2_w )
READ8_MEMBER( nb1413m3_device::gfxrom_r )
{
- uint8_t *GFXROM = space.machine().root_device().memregion("gfx1")->base();
+ uint8_t *GFXROM = machine().root_device().memregion("gfx1")->base();
return GFXROM[(0x20000 * (m_gfxrombank | ((m_sndrombank1 & 0x02) << 3))) + ((0x0200 * m_gfxradr_h) + (0x0002 * m_gfxradr_l)) + (offset & 0x01)];
}
@@ -340,12 +340,12 @@ WRITE8_MEMBER( nb1413m3_device::inputportsel_w )
READ8_MEMBER( nb1413m3_device::inputport0_r )
{
- return ((space.machine().root_device().ioport("SYSTEM")->read() & 0xfd) | ((m_outcoin_flag & 0x01) << 1));
+ return ((machine().root_device().ioport("SYSTEM")->read() & 0xfd) | ((m_outcoin_flag & 0x01) << 1));
}
READ8_MEMBER( nb1413m3_device::inputport1_r )
{
- device_t &root = space.machine().root_device();
+ device_t &root = machine().root_device();
switch (m_nb1413m3_type)
{
case NB1413M3_HYHOO:
@@ -394,7 +394,7 @@ READ8_MEMBER( nb1413m3_device::inputport1_r )
READ8_MEMBER( nb1413m3_device::inputport2_r )
{
- device_t &root = space.machine().root_device();
+ device_t &root = machine().root_device();
switch (m_nb1413m3_type)
{
case NB1413M3_HYHOO:
@@ -466,7 +466,7 @@ READ8_MEMBER( nb1413m3_device::inputport3_r )
READ8_MEMBER( nb1413m3_device::dipsw1_r )
{
- device_t &root = space.machine().root_device();
+ device_t &root = machine().root_device();
switch (m_nb1413m3_type)
{
case NB1413M3_KANATUEN:
@@ -504,13 +504,13 @@ READ8_MEMBER( nb1413m3_device::dipsw1_r )
((root.ioport("DSWA")->read() & 0x01) << 4) | ((root.ioport("DSWA")->read() & 0x04) << 3) |
((root.ioport("DSWA")->read() & 0x10) << 2) | ((root.ioport("DSWA")->read() & 0x40) << 1));
default:
- return space.machine().root_device().ioport("DSWA")->read();
+ return machine().root_device().ioport("DSWA")->read();
}
}
READ8_MEMBER( nb1413m3_device::dipsw2_r )
{
- device_t &root = space.machine().root_device();
+ device_t &root = machine().root_device();
switch (m_nb1413m3_type)
{
case NB1413M3_KANATUEN:
@@ -548,18 +548,18 @@ READ8_MEMBER( nb1413m3_device::dipsw2_r )
((root.ioport("DSWA")->read() & 0x02) << 3) | ((root.ioport("DSWA")->read() & 0x08) << 2) |
((root.ioport("DSWA")->read() & 0x20) << 1) | ((root.ioport("DSWA")->read() & 0x80) << 0));
default:
- return space.machine().root_device().ioport("DSWB")->read();
+ return machine().root_device().ioport("DSWB")->read();
}
}
READ8_MEMBER( nb1413m3_device::dipsw3_l_r )
{
- return ((space.machine().root_device().ioport("DSWC")->read() & 0xf0) >> 4);
+ return ((machine().root_device().ioport("DSWC")->read() & 0xf0) >> 4);
}
READ8_MEMBER( nb1413m3_device::dipsw3_h_r )
{
- return ((space.machine().root_device().ioport("DSWC")->read() & 0x0f) >> 0);
+ return ((machine().root_device().ioport("DSWC")->read() & 0x0f) >> 0);
}
WRITE8_MEMBER( nb1413m3_device::outcoin_w )
@@ -598,7 +598,7 @@ WRITE8_MEMBER( nb1413m3_device::outcoin_w )
break;
}
- space.machine().output().set_led_value(2, m_outcoin_flag); // out coin
+ machine().output().set_led_value(2, m_outcoin_flag); // out coin
}
WRITE8_MEMBER( nb1413m3_device::vcrctrl_w )
@@ -606,11 +606,11 @@ WRITE8_MEMBER( nb1413m3_device::vcrctrl_w )
if (data & 0x08)
{
popmessage(" ** VCR CONTROL ** ");
- space.machine().output().set_led_value(2, 1);
+ machine().output().set_led_value(2, 1);
}
else
{
- space.machine().output().set_led_value(2, 0);
+ machine().output().set_led_value(2, 0);
}
}
diff --git a/src/mame/machine/pacplus.cpp b/src/mame/machine/pacplus.cpp
index 981ab9af96c..67e09c92552 100644
--- a/src/mame/machine/pacplus.cpp
+++ b/src/mame/machine/pacplus.cpp
@@ -37,7 +37,7 @@ uint8_t pacman_state::pacplus_decrypt(int addr, uint8_t e)
method ^= 1;
tbl = swap_xor_table[method];
- return BITSWAP8(e,tbl[0],tbl[1],tbl[2],tbl[3],tbl[4],tbl[5],tbl[6],tbl[7]) ^ tbl[8];
+ return bitswap<8>(e,tbl[0],tbl[1],tbl[2],tbl[3],tbl[4],tbl[5],tbl[6],tbl[7]) ^ tbl[8];
}
diff --git a/src/mame/machine/pgm2_memcard.cpp b/src/mame/machine/pgm2_memcard.cpp
index 73755409294..e8fee19f474 100644
--- a/src/mame/machine/pgm2_memcard.cpp
+++ b/src/mame/machine/pgm2_memcard.cpp
@@ -5,7 +5,7 @@
pgm2_memcard.cpp
PGM2 Memory card functions.
- (based on ng_memcard.cpp)
+ Presumable Siemens SLE 4442 or compatible.
*********************************************************************/
@@ -45,25 +45,36 @@ void pgm2_memcard_device::device_start()
image_init_result pgm2_memcard_device::call_load()
{
- if(length() != 0x100)
+ authenticated = false;
+ if(length() != 0x108)
return image_init_result::FAIL;
fseek(0, SEEK_SET);
size_t ret = fread(m_memcard_data, 0x100);
if(ret != 0x100)
return image_init_result::FAIL;
+ ret = fread(m_protection_data, 4);
+ if (ret != 4)
+ return image_init_result::FAIL;
+ ret = fread(m_security_data, 4);
+ if (ret != 4)
+ return image_init_result::FAIL;
return image_init_result::PASS;
}
void pgm2_memcard_device::call_unload()
{
+ authenticated = false;
fseek(0, SEEK_SET);
fwrite(m_memcard_data, 0x100);
+ fwrite(m_protection_data, 4);
+ fwrite(m_security_data, 4);
}
image_init_result pgm2_memcard_device::call_create(int format_type, util::option_resolution *format_options)
{
+ authenticated = false;
// cards must contain valid defaults for each game / region or they don't work?
memory_region *rgn = memregion("^default_card");
@@ -71,14 +82,34 @@ image_init_result pgm2_memcard_device::call_create(int format_type, util::option
return image_init_result::FAIL;
memcpy(m_memcard_data, rgn->base(), 0x100);
+ memcpy(m_protection_data, rgn->base() + 0x100, 4);
+ memcpy(m_security_data, rgn->base() + 0x104, 4);
- size_t ret = fwrite(m_memcard_data, 0x100);
- if(ret != 0x100)
+ size_t ret = fwrite(rgn->base(), 0x108);
+ if(ret != 0x108)
return image_init_result::FAIL;
return image_init_result::PASS;
}
+void pgm2_memcard_device::auth(uint8_t p1, uint8_t p2, uint8_t p3)
+{
+ if (m_security_data[0] & 7)
+ {
+ if (m_security_data[1] == p1 && m_security_data[2] == p2 && m_security_data[3] == p3) {
+ authenticated = true;
+ m_security_data[0] = 7;
+ }
+ else {
+ authenticated = false;
+ m_security_data[0] >>= 1; // hacky
+ if (m_security_data[0] & 7)
+ popmessage("Wrong IC Card password !!!\n");
+ else
+ popmessage("Wrong IC Card password, card was locked!!!\n");
+ }
+ }
+}
READ8_MEMBER(pgm2_memcard_device::read)
{
@@ -87,5 +118,32 @@ READ8_MEMBER(pgm2_memcard_device::read)
WRITE8_MEMBER(pgm2_memcard_device::write)
{
- m_memcard_data[offset] = data;
+ if (authenticated && (offset >= 0x20 || (m_protection_data[offset>>3] & (1 <<(offset & 7)))))
+ {
+ m_memcard_data[offset] = data;
+ }
+}
+
+READ8_MEMBER(pgm2_memcard_device::read_prot)
+{
+ return m_protection_data[offset];
+}
+
+WRITE8_MEMBER(pgm2_memcard_device::write_prot)
+{
+ if (authenticated)
+ m_protection_data[offset] &= data;
+}
+
+READ8_MEMBER(pgm2_memcard_device::read_sec)
+{
+ if (!authenticated)
+ return 0xff; // guess
+ return m_security_data[offset];
+}
+
+WRITE8_MEMBER(pgm2_memcard_device::write_sec)
+{
+ if (authenticated)
+ m_security_data[offset] = data;
}
diff --git a/src/mame/machine/pgm2_memcard.h b/src/mame/machine/pgm2_memcard.h
index 0aa4d2adb04..175abe2d4fb 100644
--- a/src/mame/machine/pgm2_memcard.h
+++ b/src/mame/machine/pgm2_memcard.h
@@ -52,11 +52,19 @@ public:
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
+ DECLARE_READ8_MEMBER(read_prot);
+ DECLARE_WRITE8_MEMBER(write_prot);
+ DECLARE_READ8_MEMBER(read_sec);
+ DECLARE_WRITE8_MEMBER(write_sec);
+ void auth(uint8_t p1, uint8_t p2, uint8_t p3);
/* returns the index of the current memory card, or -1 if none */
int present() { return is_loaded() ? 0 : -1; }
private:
uint8_t m_memcard_data[0x100];
+ uint8_t m_protection_data[4];
+ uint8_t m_security_data[4];
+ bool authenticated;
};
diff --git a/src/mame/machine/pgmprot_igs027a_type1.cpp b/src/mame/machine/pgmprot_igs027a_type1.cpp
index adfa59a023f..943b3108474 100644
--- a/src/mame/machine/pgmprot_igs027a_type1.cpp
+++ b/src/mame/machine/pgmprot_igs027a_type1.cpp
@@ -375,9 +375,9 @@ void pgm_arm_type1_state::pgm_decode_kovlsqh2_tiles()
for (i = 0; i < 0x800000 / 2; i++)
{
- j = BITSWAP24(i, 23, 22, 9, 8, 21, 18, 0, 1, 2, 3, 16, 15, 14, 13, 12, 11, 10, 19, 20, 17, 7, 6, 5, 4);
+ j = bitswap<24>(i, 23, 22, 9, 8, 21, 18, 0, 1, 2, 3, 16, 15, 14, 13, 12, 11, 10, 19, 20, 17, 7, 6, 5, 4);
- dst[j] = BITSWAP16(src[i], 1, 14, 8, 7, 0, 15, 6, 9, 13, 2, 5, 10, 12, 3, 4, 11);
+ dst[j] = bitswap<16>(src[i], 1, 14, 8, 7, 0, 15, 6, 9, 13, 2, 5, 10, 12, 3, 4, 11);
}
memcpy( src, &dst[0], 0x800000 );
@@ -390,7 +390,7 @@ void pgm_arm_type1_state::pgm_decode_kovlsqh2_sprites( uint8_t *src )
for (i = 0; i < 0x800000; i++)
{
- j = BITSWAP24(i, 23, 10, 9, 22, 19, 18, 20, 21, 17, 16, 15, 14, 13, 12, 11, 8, 7, 6, 5, 4, 3, 2, 1, 0);
+ j = bitswap<24>(i, 23, 10, 9, 22, 19, 18, 20, 21, 17, 16, 15, 14, 13, 12, 11, 8, 7, 6, 5, 4, 3, 2, 1, 0);
dst[j] = src[i];
}
@@ -418,9 +418,9 @@ void pgm_arm_type1_state::pgm_decode_kovqhsgs_program()
for (i = 0; i < 0x400000 / 2; i++)
{
- int j = BITSWAP24(i, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 6, 7, 5, 4, 3, 2, 1, 0);
+ int j = bitswap<24>(i, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 6, 7, 5, 4, 3, 2, 1, 0);
- dst[j] = BITSWAP16(src[i], 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 4, 5, 3, 2, 1, 0);
+ dst[j] = bitswap<16>(src[i], 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 4, 5, 3, 2, 1, 0);
}
memcpy( src, &dst[0], 0x400000 );
@@ -434,7 +434,7 @@ void pgm_arm_type1_state::pgm_decode_kovqhsgs2_program()
for (i = 0; i < 0x400000 / 2; i++)
{
- int j = BITSWAP24(i, 23, 22, 21, 20, 19, 16, 15, 14, 13, 12, 11, 10, 9, 8, 0, 1, 2, 3, 4, 5, 6, 18, 17, 7);
+ int j = bitswap<24>(i, 23, 22, 21, 20, 19, 16, 15, 14, 13, 12, 11, 10, 9, 8, 0, 1, 2, 3, 4, 5, 6, 18, 17, 7);
dst[j] = src[i];
}
diff --git a/src/mame/machine/pgmprot_igs027a_type3.cpp b/src/mame/machine/pgmprot_igs027a_type3.cpp
index 5dd50881dfb..2a7860b8c8b 100644
--- a/src/mame/machine/pgmprot_igs027a_type3.cpp
+++ b/src/mame/machine/pgmprot_igs027a_type3.cpp
@@ -727,7 +727,7 @@ DRIVER_INIT_MEMBER(pgm_arm_type3_state,dmnfrnt)
}
//
-// int j = BITSWAP24(i, 23, 20, 17, 16, 19, 18, 15, 14, 13, 12, 11, 10, 9, 22, 21, 6, 7, 6, 5, 4, 3, 2, 1, 0);
+// int j = bitswap<24>(i, 23, 20, 17, 16, 19, 18, 15, 14, 13, 12, 11, 10, 9, 22, 21, 6, 7, 6, 5, 4, 3, 2, 1, 0);
// buffer[i] = src[j]
// todo, collapse these to an address swap
diff --git a/src/mame/machine/pgmprot_orlegend.cpp b/src/mame/machine/pgmprot_orlegend.cpp
index 9f6d6aa5aff..6961d24a093 100644
--- a/src/mame/machine/pgmprot_orlegend.cpp
+++ b/src/mame/machine/pgmprot_orlegend.cpp
@@ -61,7 +61,7 @@ READ16_MEMBER(pgm_asic3_state::pgm_asic3_r)
return (m_asic3_latch[2] & 0x7f) | ((ioport("Region")->read() << 6) & 0x80);
case 0x03:
- return BITSWAP8(m_asic3_hold, 5,2,9,7,10,13,12,15);
+ return bitswap<8>(m_asic3_hold, 5,2,9,7,10,13,12,15);
// case $157674, expected return $157686
case 0x20: return 0x49; // "IGS"
diff --git a/src/mame/machine/r2crypt.cpp b/src/mame/machine/r2crypt.cpp
index 3101c690f8c..ad297181bc8 100644
--- a/src/mame/machine/r2crypt.cpp
+++ b/src/mame/machine/r2crypt.cpp
@@ -212,10 +212,10 @@ static uint16_t gm(int i4)
static uint32_t core_decrypt(uint32_t ciphertext, int i1, int i2, int i3, int i4,
const uint8_t *rotate, const uint8_t *x5, const uint16_t *x11, uint32_t preXor, uint32_t carryMask, uint32_t postXor)
{
- uint32_t v1 = BITSWAP32(yrot(ciphertext, rotate[i1]), 25,28,15,19, 6,0,3,24, 11,1,2,30, 16,7,22,17, 31,14,23,9, 27,18,4,10, 13,20,5,12, 8,29,26,21);
+ uint32_t v1 = bitswap<32>(yrot(ciphertext, rotate[i1]), 25,28,15,19, 6,0,3,24, 11,1,2,30, 16,7,22,17, 31,14,23,9, 27,18,4,10, 13,20,5,12, 8,29,26,21);
uint16_t x1Low = (x5[i2]<<11) ^ x11[i3] ^ gm(i4);
- uint32_t x1 = x1Low | (BITSWAP16(x1Low, 0,8,1,9, 2,10,3,11, 4,12,5,13, 6,14,7,15)<<16);
+ uint32_t x1 = x1Low | (bitswap<16>(x1Low, 0,8,1,9, 2,10,3,11, 4,12,5,13, 6,14,7,15)<<16);
return partial_carry_sum32(v1, x1^preXor, carryMask) ^ postXor;
}
diff --git a/src/mame/machine/scramble.cpp b/src/mame/machine/scramble.cpp
index 2a6f978276b..0684f07a64d 100644
--- a/src/mame/machine/scramble.cpp
+++ b/src/mame/machine/scramble.cpp
@@ -183,12 +183,12 @@ DRIVER_INIT_MEMBER(scramble_state,frogger)
/* the first ROM of the second CPU has data lines D0 and D1 swapped. Decode it. */
ROM = memregion("audiocpu")->base();
for (A = 0;A < 0x0800;A++)
- ROM[A] = BITSWAP8(ROM[A],7,6,5,4,3,2,0,1);
+ ROM[A] = bitswap<8>(ROM[A],7,6,5,4,3,2,0,1);
/* likewise, the 2nd gfx ROM has data lines D0 and D1 swapped. Decode it. */
ROM = memregion("gfx1")->base();
for (A = 0x0800;A < 0x1000;A++)
- ROM[A] = BITSWAP8(ROM[A],7,6,5,4,3,2,0,1);
+ ROM[A] = bitswap<8>(ROM[A],7,6,5,4,3,2,0,1);
}
DRIVER_INIT_MEMBER(scramble_state,froggers)
@@ -199,7 +199,7 @@ DRIVER_INIT_MEMBER(scramble_state,froggers)
/* the first ROM of the second CPU has data lines D0 and D1 swapped. Decode it. */
ROM = memregion("audiocpu")->base();
for (A = 0;A < 0x0800;A++)
- ROM[A] = BITSWAP8(ROM[A],7,6,5,4,3,2,0,1);
+ ROM[A] = bitswap<8>(ROM[A],7,6,5,4,3,2,0,1);
}
#endif
@@ -223,7 +223,7 @@ DRIVER_INIT_MEMBER(scramble_state,devilfsh)
for (j = 0; j < 16; j++)
{
- offs_t newval = BITSWAP8(j,7,6,5,4,2,0,3,1);
+ offs_t newval = bitswap<8>(j,7,6,5,4,2,0,3,1);
swapbuffer[j] = RAM[i + newval];
}
@@ -502,7 +502,7 @@ DRIVER_INIT_MEMBER(scramble_state,hustler)
for (A = 0;A < 0x0800;A++)
- rom[A] = BITSWAP8(rom[A],7,6,5,4,3,2,0,1);
+ rom[A] = bitswap<8>(rom[A],7,6,5,4,3,2,0,1);
}
}
@@ -514,7 +514,7 @@ DRIVER_INIT_MEMBER(scramble_state,hustlerd)
for (A = 0;A < 0x0800;A++)
- rom[A] = BITSWAP8(rom[A],7,6,5,4,3,2,0,1);
+ rom[A] = bitswap<8>(rom[A],7,6,5,4,3,2,0,1);
}
DRIVER_INIT_MEMBER(scramble_state,billiard)
@@ -545,7 +545,7 @@ DRIVER_INIT_MEMBER(scramble_state,billiard)
rom[A] ^= xormask;
- rom[A] = BITSWAP8(rom[A],6,1,2,5,4,3,0,7);
+ rom[A] = bitswap<8>(rom[A],6,1,2,5,4,3,0,7);
}
/* the first ROM of the second CPU has data lines D0 and D1 swapped. Decode it. */
@@ -554,7 +554,7 @@ DRIVER_INIT_MEMBER(scramble_state,billiard)
for (A = 0;A < 0x0800;A++)
- rom[A] = BITSWAP8(rom[A],7,6,5,4,3,2,0,1);
+ rom[A] = bitswap<8>(rom[A],7,6,5,4,3,2,0,1);
}
}
@@ -580,7 +580,7 @@ DRIVER_INIT_MEMBER(scramble_state,ad2083)
for (i=0; i<len; i++)
{
c = ROM[i] ^ 0x35;
- c = BITSWAP8(c, 6,2,5,1,7,3,4,0); /* also swapped inside of the bigger module */
+ c = bitswap<8>(c, 6,2,5,1,7,3,4,0); /* also swapped inside of the bigger module */
ROM[i] = c;
}
}
@@ -650,24 +650,24 @@ DRIVER_INIT_MEMBER(scramble_state,harem)
for (int i = 0; i < size; i++)
{
uint8_t x = ROM[i];
- opcodes[size * 0 + i] = BITSWAP8(x, 7,0,5,2,3,4,1,6);
- data [size * 0 + i] = BITSWAP8(x, 7,6,5,0,3,4,1,2);
+ opcodes[size * 0 + i] = bitswap<8>(x, 7,0,5,2,3,4,1,6);
+ data [size * 0 + i] = bitswap<8>(x, 7,6,5,0,3,4,1,2);
}
// decryption 09
for (int i = 0; i < size; i++)
{
uint8_t x = ROM[i];
- opcodes[size * 1 + i] = BITSWAP8(x, 7,0,5,6,3,2,1,4);
- data [size * 1 + i] = BITSWAP8(x, 7,4,5,0,3,6,1,2);
+ opcodes[size * 1 + i] = bitswap<8>(x, 7,0,5,6,3,2,1,4);
+ data [size * 1 + i] = bitswap<8>(x, 7,4,5,0,3,6,1,2);
}
// decryption 0a
for (int i = 0; i < size; i++)
{
uint8_t x = ROM[i];
- opcodes[size * 2 + i] = BITSWAP8(x, 7,2,5,6,3,0,1,4);
- data [size * 2 + i] = BITSWAP8(x, 7,2,5,4,3,0,1,6);
+ opcodes[size * 2 + i] = bitswap<8>(x, 7,2,5,6,3,0,1,4);
+ data [size * 2 + i] = bitswap<8>(x, 7,2,5,4,3,0,1,6);
}
membank("rombank")->set_base (m_harem_decrypted_data.get());
diff --git a/src/mame/machine/segacrp2_device.cpp b/src/mame/machine/segacrp2_device.cpp
index 2ac88287eeb..38cebe5815c 100644
--- a/src/mame/machine/segacrp2_device.cpp
+++ b/src/mame/machine/segacrp2_device.cpp
@@ -76,11 +76,11 @@ static void decode(uint8_t *rom, uint8_t *decrypted,
/* decode the opcodes */
tbl = swaptable[swap_table[2*row]];
- decrypted[A] = BITSWAP8(src,7,tbl[0],5,tbl[1],3,tbl[2],1,tbl[3]) ^ xor_table[2*row];
+ decrypted[A] = bitswap<8>(src,7,tbl[0],5,tbl[1],3,tbl[2],1,tbl[3]) ^ xor_table[2*row];
/* decode the data */
tbl = swaptable[swap_table[2*row+1]];
- rom[A] = BITSWAP8(src,7,tbl[0],5,tbl[1],3,tbl[2],1,tbl[3]) ^ xor_table[2*row+1];
+ rom[A] = bitswap<8>(src,7,tbl[0],5,tbl[1],3,tbl[2],1,tbl[3]) ^ xor_table[2*row+1];
}
}
diff --git a/src/mame/machine/segas32.cpp b/src/mame/machine/segas32.cpp
index debf07501dd..2424a498d00 100644
--- a/src/mame/machine/segas32.cpp
+++ b/src/mame/machine/segas32.cpp
@@ -46,7 +46,7 @@ void segas32_v25_state::decrypt_protrom()
// unscramble the address lines
for(i = 0; i < 0x10000; i++)
- rom[i] = temp[BITSWAP16(i, 14, 11, 15, 12, 13, 4, 3, 7, 5, 10, 2, 8, 9, 6, 1, 0)];
+ rom[i] = temp[bitswap<16>(i, 14, 11, 15, 12, 13, 4, 3, 7, 5, 10, 2, 8, 9, 6, 1, 0)];
}
diff --git a/src/mame/machine/seibuspi.cpp b/src/mame/machine/seibuspi.cpp
index 316e73384ae..d27ff9a39c1 100644
--- a/src/mame/machine/seibuspi.cpp
+++ b/src/mame/machine/seibuspi.cpp
@@ -171,7 +171,7 @@ void seibuspi_sprite_decrypt(uint8_t *src, int rom_size)
/* first of all, permutate 16 of the 48 bits */
bs = spi_bitswap[key_table[addr & 0xff]&0xf];
- y3 = BITSWAP16(y3, bs[0],bs[1],bs[2],bs[3],bs[4],bs[5],bs[6],bs[7],
+ y3 = bitswap<16>(y3, bs[0],bs[1],bs[2],bs[3],bs[4],bs[5],bs[6],bs[7],
bs[8],bs[9],bs[10],bs[11],bs[12],bs[13],bs[14],bs[15]);
@@ -350,7 +350,7 @@ void seibuspi_rise10_sprite_decrypt(uint8_t *rom, int size)
uint32_t plane54,plane3210;
plane54 = rom[0*size+2*i] + (rom[0*size+2*i+1] << 8);
- plane3210 = BITSWAP32(
+ plane3210 = bitswap<32>(
rom[2*size+2*i] + (rom[2*size+2*i+1] << 8) + (rom[1*size+2*i] << 16) + (rom[1*size+2*i+1] << 24),
23,13,24,4,16,12,25,30,
3,5,29,17,14,22,2,11,
diff --git a/src/mame/machine/sgi.cpp b/src/mame/machine/sgi.cpp
index f9dad1b0c2a..7feedb42209 100644
--- a/src/mame/machine/sgi.cpp
+++ b/src/mame/machine/sgi.cpp
@@ -141,181 +141,181 @@ READ32_MEMBER( sgi_mc_device::read )
{
case 0x0000:
case 0x0004:
- //verboselog( space.machine(), 3, "CPU Control 0 Read: %08x (%08x)\n", m_nCPUControl0, mem_mask );
+ //verboselog( machine(), 3, "CPU Control 0 Read: %08x (%08x)\n", m_nCPUControl0, mem_mask );
return m_nCPUControl0;
case 0x0008:
case 0x000c:
- //verboselog( space.machine(), 2, "CPU Control 1 Read: %08x (%08x)\n", m_nCPUControl1, mem_mask );
+ //verboselog( machine(), 2, "CPU Control 1 Read: %08x (%08x)\n", m_nCPUControl1, mem_mask );
return m_nCPUControl1;
case 0x0010:
case 0x0014:
- //verboselog( space.machine(), 2, "Watchdog Timer Read: %08x (%08x)\n", m_nWatchdog, mem_mask );
+ //verboselog( machine(), 2, "Watchdog Timer Read: %08x (%08x)\n", m_nWatchdog, mem_mask );
return m_nWatchdog;
case 0x0018:
case 0x001c:
- //verboselog( space.machine(), 2, "System ID Read: %08x (%08x)\n", m_nSysID, mem_mask );
+ //verboselog( machine(), 2, "System ID Read: %08x (%08x)\n", m_nSysID, mem_mask );
return m_nSysID;
case 0x0028:
case 0x002c:
- //verboselog( space.machine(), 2, "RPSS Divider Read: %08x (%08x)\n", m_nRPSSDiv, mem_mask );
+ //verboselog( machine(), 2, "RPSS Divider Read: %08x (%08x)\n", m_nRPSSDiv, mem_mask );
return m_nRPSSDiv;
case 0x0030:
case 0x0034:
- //verboselog( space.machine(), 2, "R4000 EEPROM Read\n" );
+ //verboselog( machine(), 2, "R4000 EEPROM Read\n" );
return 0;
case 0x0040:
case 0x0044:
- //verboselog( space.machine(), 2, "Refresh Count Preload Read: %08x (%08x)\n", m_nRefCntPreload, mem_mask );
+ //verboselog( machine(), 2, "Refresh Count Preload Read: %08x (%08x)\n", m_nRefCntPreload, mem_mask );
return m_nRefCntPreload;
case 0x0048:
case 0x004c:
- //verboselog( space.machine(), 2, "Refresh Count Read: %08x (%08x)\n", m_nRefCnt, mem_mask );
+ //verboselog( machine(), 2, "Refresh Count Read: %08x (%08x)\n", m_nRefCnt, mem_mask );
return m_nRefCnt;
case 0x0080:
case 0x0084:
- //verboselog( space.machine(), 2, "GIO64 Arbitration Param Read: %08x (%08x)\n", m_nGIO64ArbParam, mem_mask );
+ //verboselog( machine(), 2, "GIO64 Arbitration Param Read: %08x (%08x)\n", m_nGIO64ArbParam, mem_mask );
return m_nGIO64ArbParam;
case 0x0088:
case 0x008c:
- //verboselog( space.machine(), 2, "Arbiter CPU Time Read: %08x (%08x)\n", m_nArbCPUTime, mem_mask );
+ //verboselog( machine(), 2, "Arbiter CPU Time Read: %08x (%08x)\n", m_nArbCPUTime, mem_mask );
return m_nArbCPUTime;
case 0x0098:
case 0x009c:
- //verboselog( space.machine(), 2, "Arbiter Long Burst Time Read: %08x (%08x)\n", m_nArbBurstTime, mem_mask );
+ //verboselog( machine(), 2, "Arbiter Long Burst Time Read: %08x (%08x)\n", m_nArbBurstTime, mem_mask );
return m_nArbBurstTime;
case 0x00c0:
case 0x00c4:
- //verboselog( space.machine(), 3, "Memory Configuration Register 0 Read: %08x (%08x)\n", m_nMemCfg0, mem_mask );
+ //verboselog( machine(), 3, "Memory Configuration Register 0 Read: %08x (%08x)\n", m_nMemCfg0, mem_mask );
return m_nMemCfg0;
case 0x00c8:
case 0x00cc:
- //verboselog( space.machine(), 3, "Memory Configuration Register 1 Read: %08x (%08x)\n", m_nMemCfg1, mem_mask );
+ //verboselog( machine(), 3, "Memory Configuration Register 1 Read: %08x (%08x)\n", m_nMemCfg1, mem_mask );
return m_nMemCfg1;
case 0x00d0:
case 0x00d4:
- //verboselog( space.machine(), 2, "CPU Memory Access Config Params Read: %08x (%08x)\n", m_nCPUMemAccCfg, mem_mask );
+ //verboselog( machine(), 2, "CPU Memory Access Config Params Read: %08x (%08x)\n", m_nCPUMemAccCfg, mem_mask );
return m_nCPUMemAccCfg;
case 0x00d8:
case 0x00dc:
- //verboselog( space.machine(), 2, "GIO Memory Access Config Params Read: %08x (%08x)\n", m_nGIOMemAccCfg, mem_mask );
+ //verboselog( machine(), 2, "GIO Memory Access Config Params Read: %08x (%08x)\n", m_nGIOMemAccCfg, mem_mask );
return m_nGIOMemAccCfg;
case 0x00e0:
case 0x00e4:
- //verboselog( space.machine(), 2, "CPU Error Address Read: %08x (%08x)\n", m_nCPUErrorAddr, mem_mask );
+ //verboselog( machine(), 2, "CPU Error Address Read: %08x (%08x)\n", m_nCPUErrorAddr, mem_mask );
return m_nCPUErrorAddr;
case 0x00e8:
case 0x00ec:
- //verboselog( space.machine(), 2, "CPU Error Status Read: %08x (%08x)\n", m_nCPUErrorStatus, mem_mask );
+ //verboselog( machine(), 2, "CPU Error Status Read: %08x (%08x)\n", m_nCPUErrorStatus, mem_mask );
return m_nCPUErrorStatus;
case 0x00f0:
case 0x00f4:
- //verboselog( space.machine(), 2, "GIO Error Address Read: %08x (%08x)\n", m_nGIOErrorAddr, mem_mask );
+ //verboselog( machine(), 2, "GIO Error Address Read: %08x (%08x)\n", m_nGIOErrorAddr, mem_mask );
return m_nGIOErrorAddr;
case 0x00f8:
case 0x00fc:
- //verboselog( space.machine(), 2, "GIO Error Status Read: %08x (%08x)\n", m_nGIOErrorStatus, mem_mask );
+ //verboselog( machine(), 2, "GIO Error Status Read: %08x (%08x)\n", m_nGIOErrorStatus, mem_mask );
return m_nGIOErrorStatus;
case 0x0100:
case 0x0104:
- //verboselog( space.machine(), 2, "System Semaphore Read: %08x (%08x)\n", m_nSysSemaphore, mem_mask );
+ //verboselog( machine(), 2, "System Semaphore Read: %08x (%08x)\n", m_nSysSemaphore, mem_mask );
return m_nSysSemaphore;
case 0x0108:
case 0x010c:
- //verboselog( space.machine(), 2, "GIO Lock Read: %08x (%08x)\n", m_nGIOLock, mem_mask );
+ //verboselog( machine(), 2, "GIO Lock Read: %08x (%08x)\n", m_nGIOLock, mem_mask );
return m_nGIOLock;
case 0x0110:
case 0x0114:
- //verboselog( space.machine(), 2, "EISA Lock Read: %08x (%08x)\n", m_nEISALock, mem_mask );
+ //verboselog( machine(), 2, "EISA Lock Read: %08x (%08x)\n", m_nEISALock, mem_mask );
return m_nEISALock;
case 0x0150:
case 0x0154:
- //verboselog( space.machine(), 2, "GIO64 Translation Address Mask Read: %08x (%08x)\n", m_nGIO64TransMask, mem_mask );
+ //verboselog( machine(), 2, "GIO64 Translation Address Mask Read: %08x (%08x)\n", m_nGIO64TransMask, mem_mask );
return m_nGIO64TransMask;
case 0x0158:
case 0x015c:
- //verboselog( space.machine(), 2, "GIO64 Translation Address Substitution Bits Read: %08x (%08x)\n", m_nGIO64Subst, mem_mask );
+ //verboselog( machine(), 2, "GIO64 Translation Address Substitution Bits Read: %08x (%08x)\n", m_nGIO64Subst, mem_mask );
return m_nGIO64Subst;
case 0x0160:
case 0x0164:
- //verboselog( space.machine(), 2, "DMA Interrupt Cause: %08x (%08x)\n", m_nDMAIntrCause, mem_mask );
+ //verboselog( machine(), 2, "DMA Interrupt Cause: %08x (%08x)\n", m_nDMAIntrCause, mem_mask );
return m_nDMAIntrCause;
case 0x0168:
case 0x016c:
- //verboselog( space.machine(), 2, "DMA Control Read: %08x (%08x)\n", m_nDMAControl, mem_mask );
+ //verboselog( machine(), 2, "DMA Control Read: %08x (%08x)\n", m_nDMAControl, mem_mask );
return m_nDMAControl;
case 0x0180:
case 0x0184:
- //verboselog( space.machine(), 2, "DMA TLB Entry 0 High Read: %08x (%08x)\n", m_nDMATLBEntry0Hi, mem_mask );
+ //verboselog( machine(), 2, "DMA TLB Entry 0 High Read: %08x (%08x)\n", m_nDMATLBEntry0Hi, mem_mask );
return m_nDMATLBEntry0Hi;
case 0x0188:
case 0x018c:
- //verboselog( space.machine(), 2, "DMA TLB Entry 0 Low Read: %08x (%08x)\n", m_nDMATLBEntry0Lo, mem_mask );
+ //verboselog( machine(), 2, "DMA TLB Entry 0 Low Read: %08x (%08x)\n", m_nDMATLBEntry0Lo, mem_mask );
return m_nDMATLBEntry0Lo;
case 0x0190:
case 0x0194:
- //verboselog( space.machine(), 2, "DMA TLB Entry 1 High Read: %08x (%08x)\n", m_nDMATLBEntry1Hi, mem_mask );
+ //verboselog( machine(), 2, "DMA TLB Entry 1 High Read: %08x (%08x)\n", m_nDMATLBEntry1Hi, mem_mask );
return m_nDMATLBEntry1Hi;
case 0x0198:
case 0x019c:
- //verboselog( space.machine(), 2, "DMA TLB Entry 1 Low Read: %08x (%08x)\n", m_nDMATLBEntry1Lo, mem_mask );
+ //verboselog( machine(), 2, "DMA TLB Entry 1 Low Read: %08x (%08x)\n", m_nDMATLBEntry1Lo, mem_mask );
return m_nDMATLBEntry1Lo;
case 0x01a0:
case 0x01a4:
- //verboselog( space.machine(), 2, "DMA TLB Entry 2 High Read: %08x (%08x)\n", m_nDMATLBEntry2Hi, mem_mask );
+ //verboselog( machine(), 2, "DMA TLB Entry 2 High Read: %08x (%08x)\n", m_nDMATLBEntry2Hi, mem_mask );
return m_nDMATLBEntry2Hi;
case 0x01a8:
case 0x01ac:
- //verboselog( space.machine(), 2, "DMA TLB Entry 2 Low Read: %08x (%08x)\n", m_nDMATLBEntry2Lo, mem_mask );
+ //verboselog( machine(), 2, "DMA TLB Entry 2 Low Read: %08x (%08x)\n", m_nDMATLBEntry2Lo, mem_mask );
return m_nDMATLBEntry2Lo;
case 0x01b0:
case 0x01b4:
- //verboselog( space.machine(), 2, "DMA TLB Entry 3 High Read: %08x (%08x)\n", m_nDMATLBEntry3Hi, mem_mask );
+ //verboselog( machine(), 2, "DMA TLB Entry 3 High Read: %08x (%08x)\n", m_nDMATLBEntry3Hi, mem_mask );
return m_nDMATLBEntry3Hi;
case 0x01b8:
case 0x01bc:
- //verboselog( space.machine(), 2, "DMA TLB Entry 3 Low Read: %08x (%08x)\n", m_nDMATLBEntry3Lo, mem_mask );
+ //verboselog( machine(), 2, "DMA TLB Entry 3 Low Read: %08x (%08x)\n", m_nDMATLBEntry3Lo, mem_mask );
return m_nDMATLBEntry3Lo;
case 0x1000:
case 0x1004:
- //verboselog( space.machine(), 2, "RPSS 100ns Counter Read: %08x (%08x)\n", m_nRPSSCounter, mem_mask );
+ //verboselog( machine(), 2, "RPSS 100ns Counter Read: %08x (%08x)\n", m_nRPSSCounter, mem_mask );
return m_nRPSSCounter;
case 0x2000:
case 0x2004:
case 0x2008:
case 0x200c:
- //verboselog( space.machine(), 0, "DMA Memory Address Read: %08x (%08x)\n", m_nDMAMemAddr, mem_mask );
+ //verboselog( machine(), 0, "DMA Memory Address Read: %08x (%08x)\n", m_nDMAMemAddr, mem_mask );
return m_nDMAMemAddr;
case 0x2010:
case 0x2014:
- //verboselog( space.machine(), 0, "DMA Line Count and Width Read: %08x (%08x)\n", m_nDMALineCntWidth, mem_mask );
+ //verboselog( machine(), 0, "DMA Line Count and Width Read: %08x (%08x)\n", m_nDMALineCntWidth, mem_mask );
return m_nDMALineCntWidth;
case 0x2018:
case 0x201c:
- //verboselog( space.machine(), 0, "DMA Line Zoom and Stride Read: %08x (%08x)\n", m_nDMALineZoomStride, mem_mask );
+ //verboselog( machine(), 0, "DMA Line Zoom and Stride Read: %08x (%08x)\n", m_nDMALineZoomStride, mem_mask );
return m_nDMALineZoomStride;
case 0x2020:
case 0x2024:
case 0x2028:
case 0x202c:
- //verboselog( space.machine(), 0, "DMA GIO64 Address Read: %08x (%08x)\n", m_nDMAGIO64Addr, mem_mask );
+ //verboselog( machine(), 0, "DMA GIO64 Address Read: %08x (%08x)\n", m_nDMAGIO64Addr, mem_mask );
return m_nDMAGIO64Addr;
case 0x2030:
case 0x2034:
- //verboselog( space.machine(), 0, "DMA Mode Write: %08x (%08x)\n", m_nDMAMode, mem_mask );
+ //verboselog( machine(), 0, "DMA Mode Write: %08x (%08x)\n", m_nDMAMode, mem_mask );
return m_nDMAMode;
case 0x2038:
case 0x203c:
- //verboselog( space.machine(), 0, "DMA Zoom Count Read: %08x (%08x)\n", m_nDMAZoomByteCnt, mem_mask );
+ //verboselog( machine(), 0, "DMA Zoom Count Read: %08x (%08x)\n", m_nDMAZoomByteCnt, mem_mask );
return m_nDMAZoomByteCnt;
// case 0x2040:
// case 0x2044:
-// //verboselog( space.machine(), 2, "DMA Start Write: %08x (%08x)\n", data, mem_mask );
+// //verboselog( machine(), 2, "DMA Start Write: %08x (%08x)\n", data, mem_mask );
// Start DMA
// m_nDMARunning = 1;
// break;
case 0x2048:
case 0x204c:
- //verboselog( space.machine(), 0, "VDMA Running Read: %08x (%08x)\n", m_nDMARunning, mem_mask );
+ //verboselog( machine(), 0, "VDMA Running Read: %08x (%08x)\n", m_nDMARunning, mem_mask );
if( m_nDMARunning == 1 )
{
m_nDMARunning = 0;
@@ -326,7 +326,7 @@ READ32_MEMBER( sgi_mc_device::read )
return 0;
}
}
- //verboselog( space.machine(), 0, "Unmapped MC read: 0x%08x (%08x)\n", 0x1fa00000 + offset, mem_mask );
+ //verboselog( machine(), 0, "Unmapped MC read: 0x%08x (%08x)\n", 0x1fa00000 + offset, mem_mask );
return 0;
}
@@ -337,210 +337,210 @@ WRITE32_MEMBER( sgi_mc_device::write )
{
case 0x0000:
case 0x0004:
- //verboselog( space.machine(), 2, "CPU Control 0 Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 2, "CPU Control 0 Write: %08x (%08x)\n", data, mem_mask );
m_nCPUControl0 = data;
break;
case 0x0008:
case 0x000c:
- //verboselog( space.machine(), 2, "CPU Control 1 Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 2, "CPU Control 1 Write: %08x (%08x)\n", data, mem_mask );
m_nCPUControl1 = data;
break;
case 0x0010:
case 0x0014:
- //verboselog( space.machine(), 2, "Watchdog Timer Clear" );
+ //verboselog( machine(), 2, "Watchdog Timer Clear" );
m_nWatchdog = 0;
break;
case 0x0028:
case 0x002c:
- //verboselog( space.machine(), 2, "RPSS Divider Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 2, "RPSS Divider Write: %08x (%08x)\n", data, mem_mask );
m_nRPSSDiv = data;
break;
case 0x0030:
case 0x0034:
- //verboselog( space.machine(), 2, "R4000 EEPROM Write\n" );
+ //verboselog( machine(), 2, "R4000 EEPROM Write\n" );
break;
case 0x0040:
case 0x0044:
- //verboselog( space.machine(), 2, "Refresh Count Preload Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 2, "Refresh Count Preload Write: %08x (%08x)\n", data, mem_mask );
m_nRefCntPreload = data;
break;
case 0x0080:
case 0x0084:
- //verboselog( space.machine(), 2, "GIO64 Arbitration Param Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 2, "GIO64 Arbitration Param Write: %08x (%08x)\n", data, mem_mask );
m_nGIO64ArbParam = data;
break;
case 0x0088:
case 0x008c:
- //verboselog( space.machine(), 3, "Arbiter CPU Time Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 3, "Arbiter CPU Time Write: %08x (%08x)\n", data, mem_mask );
m_nArbCPUTime = data;
break;
case 0x0098:
case 0x009c:
- //verboselog( space.machine(), 3, "Arbiter Long Burst Time Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 3, "Arbiter Long Burst Time Write: %08x (%08x)\n", data, mem_mask );
m_nArbBurstTime = data;
break;
case 0x00c0:
case 0x00c4:
- //verboselog( space.machine(), 3, "Memory Configuration Register 0 Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 3, "Memory Configuration Register 0 Write: %08x (%08x)\n", data, mem_mask );
m_nMemCfg0 = data;
break;
case 0x00c8:
case 0x00cc:
- //verboselog( space.machine(), 3, "Memory Configuration Register 1 Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 3, "Memory Configuration Register 1 Write: %08x (%08x)\n", data, mem_mask );
m_nMemCfg1 = data;
break;
case 0x00d0:
case 0x00d4:
- //verboselog( space.machine(), 2, "CPU Memory Access Config Params Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 2, "CPU Memory Access Config Params Write: %08x (%08x)\n", data, mem_mask );
m_nCPUMemAccCfg = data;
break;
case 0x00d8:
case 0x00dc:
- //verboselog( space.machine(), 2, "GIO Memory Access Config Params Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 2, "GIO Memory Access Config Params Write: %08x (%08x)\n", data, mem_mask );
m_nGIOMemAccCfg = data;
break;
case 0x00e8:
case 0x00ec:
- //verboselog( space.machine(), 2, "CPU Error Status Clear\n" );
+ //verboselog( machine(), 2, "CPU Error Status Clear\n" );
m_nCPUErrorStatus = 0;
break;
case 0x00f8:
case 0x00fc:
- //verboselog( space.machine(), 2, "GIO Error Status Clear\n" );
+ //verboselog( machine(), 2, "GIO Error Status Clear\n" );
m_nGIOErrorStatus = 0;
break;
case 0x0100:
case 0x0104:
- //verboselog( space.machine(), 2, "System Semaphore Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 2, "System Semaphore Write: %08x (%08x)\n", data, mem_mask );
m_nSysSemaphore = data;
break;
case 0x0108:
case 0x010c:
- //verboselog( space.machine(), 2, "GIO Lock Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 2, "GIO Lock Write: %08x (%08x)\n", data, mem_mask );
m_nGIOLock = data;
break;
case 0x0110:
case 0x0114:
- //verboselog( space.machine(), 2, "EISA Lock Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 2, "EISA Lock Write: %08x (%08x)\n", data, mem_mask );
m_nEISALock = data;
break;
case 0x0150:
case 0x0154:
- //verboselog( space.machine(), 2, "GIO64 Translation Address Mask Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 2, "GIO64 Translation Address Mask Write: %08x (%08x)\n", data, mem_mask );
m_nGIO64TransMask = data;
break;
case 0x0158:
case 0x015c:
- //verboselog( space.machine(), 2, "GIO64 Translation Address Substitution Bits Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 2, "GIO64 Translation Address Substitution Bits Write: %08x (%08x)\n", data, mem_mask );
m_nGIO64Subst = data;
break;
case 0x0160:
case 0x0164:
- //verboselog( space.machine(), 0, "DMA Interrupt Cause Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 0, "DMA Interrupt Cause Write: %08x (%08x)\n", data, mem_mask );
m_nDMAIntrCause = data;
break;
case 0x0168:
case 0x016c:
- //verboselog( space.machine(), 0, "DMA Control Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 0, "DMA Control Write: %08x (%08x)\n", data, mem_mask );
m_nDMAControl = data;
break;
case 0x0180:
case 0x0184:
- //verboselog( space.machine(), 0, "DMA TLB Entry 0 High Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 0, "DMA TLB Entry 0 High Write: %08x (%08x)\n", data, mem_mask );
m_nDMATLBEntry0Hi = data;
break;
case 0x0188:
case 0x018c:
- //verboselog( space.machine(), 0, "DMA TLB Entry 0 Low Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 0, "DMA TLB Entry 0 Low Write: %08x (%08x)\n", data, mem_mask );
m_nDMATLBEntry0Lo = data;
break;
case 0x0190:
case 0x0194:
- //verboselog( space.machine(), 0, "DMA TLB Entry 1 High Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 0, "DMA TLB Entry 1 High Write: %08x (%08x)\n", data, mem_mask );
m_nDMATLBEntry1Hi = data;
break;
case 0x0198:
case 0x019c:
- //verboselog( space.machine(), 0, "DMA TLB Entry 1 Low Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 0, "DMA TLB Entry 1 Low Write: %08x (%08x)\n", data, mem_mask );
m_nDMATLBEntry1Lo = data;
break;
case 0x01a0:
case 0x01a4:
- //verboselog( space.machine(), 0, "DMA TLB Entry 2 High Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 0, "DMA TLB Entry 2 High Write: %08x (%08x)\n", data, mem_mask );
m_nDMATLBEntry2Hi = data;
break;
case 0x01a8:
case 0x01ac:
- //verboselog( space.machine(), 0, "DMA TLB Entry 2 Low Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 0, "DMA TLB Entry 2 Low Write: %08x (%08x)\n", data, mem_mask );
m_nDMATLBEntry2Lo = data;
break;
case 0x01b0:
case 0x01b4:
- //verboselog( space.machine(), 0, "DMA TLB Entry 3 High Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 0, "DMA TLB Entry 3 High Write: %08x (%08x)\n", data, mem_mask );
m_nDMATLBEntry3Hi = data;
break;
case 0x01b8:
case 0x01bc:
- //verboselog( space.machine(), 0, "DMA TLB Entry 3 Low Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 0, "DMA TLB Entry 3 Low Write: %08x (%08x)\n", data, mem_mask );
m_nDMATLBEntry3Lo = data;
break;
case 0x2000:
case 0x2004:
- //verboselog( space.machine(), 0, "DMA Memory Address Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 0, "DMA Memory Address Write: %08x (%08x)\n", data, mem_mask );
m_nDMAMemAddr = data;
break;
case 0x2008:
case 0x200c:
- //verboselog( space.machine(), 0, "DMA Memory Address + Default Params Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 0, "DMA Memory Address + Default Params Write: %08x (%08x)\n", data, mem_mask );
m_nDMAMemAddr = data;
break;
case 0x2010:
case 0x2014:
- //verboselog( space.machine(), 0, "DMA Line Count and Width Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 0, "DMA Line Count and Width Write: %08x (%08x)\n", data, mem_mask );
m_nDMALineCntWidth = data;
break;
case 0x2018:
case 0x201c:
- //verboselog( space.machine(), 0, "DMA Line Zoom and Stride Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 0, "DMA Line Zoom and Stride Write: %08x (%08x)\n", data, mem_mask );
m_nDMALineZoomStride = data;
break;
case 0x2020:
case 0x2024:
- //verboselog( space.machine(), 0, "DMA GIO64 Address Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 0, "DMA GIO64 Address Write: %08x (%08x)\n", data, mem_mask );
m_nDMAGIO64Addr = data;
break;
case 0x2028:
case 0x202c:
- //verboselog( space.machine(), 0, "DMA GIO64 Address Write + Start DMA: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 0, "DMA GIO64 Address Write + Start DMA: %08x (%08x)\n", data, mem_mask );
m_nDMAGIO64Addr = data;
// Start DMA
m_nDMARunning = 1;
break;
case 0x2030:
case 0x2034:
- //verboselog( space.machine(), 0, "DMA Mode Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 0, "DMA Mode Write: %08x (%08x)\n", data, mem_mask );
m_nDMAMode = data;
break;
case 0x2038:
case 0x203c:
- //verboselog( space.machine(), 0, "DMA Zoom Count + Byte Count Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 0, "DMA Zoom Count + Byte Count Write: %08x (%08x)\n", data, mem_mask );
m_nDMAZoomByteCnt = data;
break;
case 0x2040:
case 0x2044:
- //verboselog( space.machine(), 0, "DMA Start Write: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 0, "DMA Start Write: %08x (%08x)\n", data, mem_mask );
// Start DMA
m_nDMARunning = 1;
break;
case 0x2070:
case 0x2074:
- //verboselog( space.machine(), 0, "DMA GIO64 Address Write + Default Params Write + Start DMA: %08x (%08x)\n", data, mem_mask );
+ //verboselog( machine(), 0, "DMA GIO64 Address Write + Default Params Write + Start DMA: %08x (%08x)\n", data, mem_mask );
m_nDMAGIO64Addr = data;
// Start DMA
m_nDMARunning = 1;
break;
default:
- //verboselog( space.machine(), 0, "Unmapped MC write: 0x%08x: %08x (%08x)\n", 0x1fa00000 + offset, data, mem_mask );
+ //verboselog( machine(), 0, "Unmapped MC write: 0x%08x: %08x (%08x)\n", 0x1fa00000 + offset, data, mem_mask );
break;
}
}
diff --git a/src/mame/machine/slapstic.cpp b/src/mame/machine/slapstic.cpp
index 28f12fb7821..9b751954b88 100644
--- a/src/mame/machine/slapstic.cpp
+++ b/src/mame/machine/slapstic.cpp
@@ -1077,7 +1077,7 @@ int atari_slapstic_device::slapstic_tweak(address_space &space, offs_t offset)
/* log this access */
if (LOG_SLAPSTIC)
- slapstic_log(space.machine(), offset);
+ slapstic_log(machine(), offset);
/* return the active bank */
return current_bank;
diff --git a/src/mame/machine/snes.cpp b/src/mame/machine/snes.cpp
index 56f452e2fa1..887b02d7ca9 100644
--- a/src/mame/machine/snes.cpp
+++ b/src/mame/machine/snes.cpp
@@ -490,7 +490,7 @@ WRITE8_MEMBER( snes_state::snes_w_io )
{
// printf("816: %02x to APU @ %d (PC=%06x)\n", data, offset & 3,space.device().safe_pc());
m_spc700->spc_port_in(space, offset & 0x3, data);
- space.machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(20));
+ machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(20));
return;
}
diff --git a/src/mame/machine/stvprot.cpp b/src/mame/machine/stvprot.cpp
index 02b110f33df..eaf95385624 100644
--- a/src/mame/machine/stvprot.cpp
+++ b/src/mame/machine/stvprot.cpp
@@ -30,7 +30,7 @@
READ32_MEMBER( stv_state::common_prot_r )
{
- uint32_t *ROM = (uint32_t *)space.machine().root_device().memregion("abus")->base();
+ uint32_t *ROM = (uint32_t *)machine().root_device().memregion("abus")->base();
if(m_abus_protenable & 0x00010000)//protection calculation is activated
{
diff --git a/src/mame/machine/subsino.cpp b/src/mame/machine/subsino.cpp
index 06cf7901e95..507616ca7c1 100644
--- a/src/mame/machine/subsino.cpp
+++ b/src/mame/machine/subsino.cpp
@@ -20,50 +20,50 @@ extern const uint8_t victor21_xors[8] = { 0x44, 0xbb, 0x66, 0x44, 0xaa, 0x55, 0x
void crsbingo_bitswaps(uint8_t *decrypt, int i)
{
- if ((i&7) == 0) decrypt[i] = BITSWAP8(decrypt[i], 7,2,5,4,3,6,1,0 );
- if ((i&7) == 1) decrypt[i] = BITSWAP8(decrypt[i], 7,2,1,0,3,6,5,4 );
- if ((i&7) == 2) decrypt[i] = BITSWAP8(decrypt[i], 3,2,5,0,7,6,1,4 );
- if ((i&7) == 3) decrypt[i] = BITSWAP8(decrypt[i], 7,2,5,0,3,6,1,4 );
- if ((i&7) == 4) decrypt[i] = BITSWAP8(decrypt[i], 7,6,5,0,3,2,1,4 );
- if ((i&7) == 5) decrypt[i] = BITSWAP8(decrypt[i], 7,2,1,4,3,6,5,0 );
- if ((i&7) == 6) decrypt[i] = BITSWAP8(decrypt[i], 7,2,1,0,3,6,5,4 );
- if ((i&7) == 7) decrypt[i] = BITSWAP8(decrypt[i], 3,2,1,0,7,6,5,4 );
+ if ((i&7) == 0) decrypt[i] = bitswap<8>(decrypt[i], 7,2,5,4,3,6,1,0 );
+ if ((i&7) == 1) decrypt[i] = bitswap<8>(decrypt[i], 7,2,1,0,3,6,5,4 );
+ if ((i&7) == 2) decrypt[i] = bitswap<8>(decrypt[i], 3,2,5,0,7,6,1,4 );
+ if ((i&7) == 3) decrypt[i] = bitswap<8>(decrypt[i], 7,2,5,0,3,6,1,4 );
+ if ((i&7) == 4) decrypt[i] = bitswap<8>(decrypt[i], 7,6,5,0,3,2,1,4 );
+ if ((i&7) == 5) decrypt[i] = bitswap<8>(decrypt[i], 7,2,1,4,3,6,5,0 );
+ if ((i&7) == 6) decrypt[i] = bitswap<8>(decrypt[i], 7,2,1,0,3,6,5,4 );
+ if ((i&7) == 7) decrypt[i] = bitswap<8>(decrypt[i], 3,2,1,0,7,6,5,4 );
}
void sharkpy_bitswaps(uint8_t *decrypt, int i)
{
- if ((i&7) == 0) decrypt[i] = BITSWAP8(decrypt[i], 3,2,1,0,7,6,5,4 );
- if ((i&7) == 1) decrypt[i] = BITSWAP8(decrypt[i], 7,2,5,4,3,6,1,0 );
- if ((i&7) == 2) decrypt[i] = BITSWAP8(decrypt[i], 7,2,1,4,3,6,5,0 );
- if ((i&7) == 3) decrypt[i] = BITSWAP8(decrypt[i], 3,6,1,0,7,2,5,4 );
- if ((i&7) == 4) decrypt[i] = BITSWAP8(decrypt[i], 7,2,5,4,3,6,1,0 );
- if ((i&7) == 5) decrypt[i] = BITSWAP8(decrypt[i], 3,2,5,4,7,6,1,0 );
- if ((i&7) == 6) decrypt[i] = BITSWAP8(decrypt[i], 7,6,1,4,3,2,5,0 );
- if ((i&7) == 7) decrypt[i] = BITSWAP8(decrypt[i], 3,6,1,4,7,2,5,0 );
+ if ((i&7) == 0) decrypt[i] = bitswap<8>(decrypt[i], 3,2,1,0,7,6,5,4 );
+ if ((i&7) == 1) decrypt[i] = bitswap<8>(decrypt[i], 7,2,5,4,3,6,1,0 );
+ if ((i&7) == 2) decrypt[i] = bitswap<8>(decrypt[i], 7,2,1,4,3,6,5,0 );
+ if ((i&7) == 3) decrypt[i] = bitswap<8>(decrypt[i], 3,6,1,0,7,2,5,4 );
+ if ((i&7) == 4) decrypt[i] = bitswap<8>(decrypt[i], 7,2,5,4,3,6,1,0 );
+ if ((i&7) == 5) decrypt[i] = bitswap<8>(decrypt[i], 3,2,5,4,7,6,1,0 );
+ if ((i&7) == 6) decrypt[i] = bitswap<8>(decrypt[i], 7,6,1,4,3,2,5,0 );
+ if ((i&7) == 7) decrypt[i] = bitswap<8>(decrypt[i], 3,6,1,4,7,2,5,0 );
}
void victor5_bitswaps(uint8_t *decrypt, int i)
{
- if ((i&7) == 0) decrypt[i] = BITSWAP8(decrypt[i], 7,2,5,4,3,6,1,0 );
- if ((i&7) == 1) decrypt[i] = BITSWAP8(decrypt[i], 7,6,5,0,3,2,1,4 );
- if ((i&7) == 2) decrypt[i] = BITSWAP8(decrypt[i], 7,2,1,0,3,6,5,4 );
- if ((i&7) == 3) decrypt[i] = BITSWAP8(decrypt[i], 7,2,1,0,3,6,5,4 );
- if ((i&7) == 4) decrypt[i] = BITSWAP8(decrypt[i], 3,2,1,0,7,6,5,4 );
- if ((i&7) == 5) decrypt[i] = BITSWAP8(decrypt[i], 7,6,5,0,3,2,1,4 );
- if ((i&7) == 6) decrypt[i] = BITSWAP8(decrypt[i], 3,6,1,0,7,2,5,4 );
- if ((i&7) == 7) decrypt[i] = BITSWAP8(decrypt[i], 7,2,1,4,3,6,5,0 );
+ if ((i&7) == 0) decrypt[i] = bitswap<8>(decrypt[i], 7,2,5,4,3,6,1,0 );
+ if ((i&7) == 1) decrypt[i] = bitswap<8>(decrypt[i], 7,6,5,0,3,2,1,4 );
+ if ((i&7) == 2) decrypt[i] = bitswap<8>(decrypt[i], 7,2,1,0,3,6,5,4 );
+ if ((i&7) == 3) decrypt[i] = bitswap<8>(decrypt[i], 7,2,1,0,3,6,5,4 );
+ if ((i&7) == 4) decrypt[i] = bitswap<8>(decrypt[i], 3,2,1,0,7,6,5,4 );
+ if ((i&7) == 5) decrypt[i] = bitswap<8>(decrypt[i], 7,6,5,0,3,2,1,4 );
+ if ((i&7) == 6) decrypt[i] = bitswap<8>(decrypt[i], 3,6,1,0,7,2,5,4 );
+ if ((i&7) == 7) decrypt[i] = bitswap<8>(decrypt[i], 7,2,1,4,3,6,5,0 );
}
void victor21_bitswaps(uint8_t *decrypt, int i)
{
- if ((i&7) == 0) decrypt[i] = BITSWAP8(decrypt[i], 7,2,1,0,3,6,5,4 );
- if ((i&7) == 1) decrypt[i] = BITSWAP8(decrypt[i], 3,6,1,4,7,2,5,0 );
- if ((i&7) == 2) decrypt[i] = BITSWAP8(decrypt[i], 3,2,1,4,7,6,5,0 );
- if ((i&7) == 3) decrypt[i] = BITSWAP8(decrypt[i], 7,2,5,4,3,6,1,0 );
- if ((i&7) == 4) decrypt[i] = BITSWAP8(decrypt[i], 7,2,5,4,3,6,1,0 );
- if ((i&7) == 5) decrypt[i] = BITSWAP8(decrypt[i], 3,6,5,0,7,2,1,4 );
- if ((i&7) == 6) decrypt[i] = BITSWAP8(decrypt[i], 7,6,5,4,3,2,1,0 );
- if ((i&7) == 7) decrypt[i] = BITSWAP8(decrypt[i], 3,2,1,4,7,6,5,0 );
+ if ((i&7) == 0) decrypt[i] = bitswap<8>(decrypt[i], 7,2,1,0,3,6,5,4 );
+ if ((i&7) == 1) decrypt[i] = bitswap<8>(decrypt[i], 3,6,1,4,7,2,5,0 );
+ if ((i&7) == 2) decrypt[i] = bitswap<8>(decrypt[i], 3,2,1,4,7,6,5,0 );
+ if ((i&7) == 3) decrypt[i] = bitswap<8>(decrypt[i], 7,2,5,4,3,6,1,0 );
+ if ((i&7) == 4) decrypt[i] = bitswap<8>(decrypt[i], 7,2,5,4,3,6,1,0 );
+ if ((i&7) == 5) decrypt[i] = bitswap<8>(decrypt[i], 3,6,5,0,7,2,1,4 );
+ if ((i&7) == 6) decrypt[i] = bitswap<8>(decrypt[i], 7,6,5,4,3,2,1,0 );
+ if ((i&7) == 7) decrypt[i] = bitswap<8>(decrypt[i], 3,2,1,4,7,6,5,0 );
}
// Decrypt:
diff --git a/src/mame/machine/thomflop.cpp b/src/mame/machine/thomflop.cpp
index 25fa0292a7f..2c2a3d4968e 100644
--- a/src/mame/machine/thomflop.cpp
+++ b/src/mame/machine/thomflop.cpp
@@ -753,7 +753,7 @@ WRITE8_MEMBER( thomson_state::to7_qdd_w )
int bits, parity;
bits = bit[ (data >> 3) & 7 ];
parity = par[ (data >> 3) & 7 ];
- to7_qdd_stat_update(space.machine());
+ to7_qdd_stat_update(machine());
VLOG(( "%f $%04x to7_qdd_w: CTRL2=$%02X bits=%i par=%s blen=%i under=%s%s\n",
machine().time().as_double(), m_maincpu->pc(), data,
bits, parname[ parity ], data & QDD_C2_BLEN ? 1 : 2,
diff --git a/src/mame/machine/trs80m2kb.cpp b/src/mame/machine/trs80m2kb.cpp
index 97c5dbeceec..1cefe9d5b3c 100644
--- a/src/mame/machine/trs80m2kb.cpp
+++ b/src/mame/machine/trs80m2kb.cpp
@@ -347,5 +347,5 @@ WRITE8_MEMBER( trs80m2_keyboard_device::kb_p2_w )
*/
- m_keylatch = BITSWAP8(data, 7, 6, 5, 4, 0, 1, 2, 3) & 0x0f;
+ m_keylatch = bitswap<8>(data, 7, 6, 5, 4, 0, 1, 2, 3) & 0x0f;
}
diff --git a/src/mame/machine/xevious.cpp b/src/mame/machine/xevious.cpp
index e4818ba080b..f09677d6daf 100644
--- a/src/mame/machine/xevious.cpp
+++ b/src/mame/machine/xevious.cpp
@@ -167,7 +167,7 @@ READ8_MEMBER( xevious_state::battles_input_port_r )
switch ( offset )
{
default:
- case 0: return ~BITSWAP8(ioport("IN0H")->read(),7,6,5,4,2,3,1,0);
+ case 0: return ~bitswap<8>(ioport("IN0H")->read(),7,6,5,4,2,3,1,0);
case 1: return ~ioport("IN1L")->read();
case 2: return ~ioport("IN1H")->read();
case 3: return ~ioport("IN0L")->read();
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index b2dcae07c6e..bf4b4021d17 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -1465,6 +1465,7 @@ chariotc // (c) 1998
chariotcv // (c) 1998
checkma5 // (c) 2001
chickna5 // (c) 1996
+chickna5b // (c) 1996
chickna5u // (c) 1998
chickna5qld // (c) 1998
coralrc2 // (c) 1998
@@ -1504,9 +1505,11 @@ goldpyra // (c) 1997
goldpyrb // (c) 1998
goldenra // (c) 2000
honeypot // (c) 2000
+hnktonku // (c) 2001
incasun // (c) 1999
incasunsp // (c) 1999
incasunnz // (c) 2000
+incasunv // (c) 1999
incasunu // (c) 2000
incasunua // (c) 2000
indrema5 // (c) 1998
@@ -1518,6 +1521,7 @@ kgalaha // (c) 1995
kgbirda5 // (c) 1994
koalamnt // (c) 2001
kookabuk // (c) 1998
+kyhatonu // (c) 2000
locoloot // (c) 1997
locoloota // (c) 1997
locolootnz // (c) 1998
@@ -1621,6 +1625,7 @@ unicornda // (c) 1998
unicorndnz // (c) 2000
unicorndu // (c) 2001
venicea5 // (c) 2002
+wafricau // (c) 2001
wamazon // (c) 1996
wamazona // (c) 1996
wamazonv // (c) 1996
@@ -12612,6 +12617,7 @@ super9ccsp // * Spanish
@source:fidel68k.cpp
fdes2265 //
+fdes2325 //
feagv10 //
feagv11 //
feagv2 //
@@ -14714,14 +14720,17 @@ ktmnt // Konami
ktopgun // Konami
nupogodi // Elektronika
taltbeast // Tiger
+tapollo13 // Tiger
tbatfor // Tiger
tbatman // Tiger
tbtoads // Tiger
tddragon // Tiger
+tgaiden // Tiger
tgaunt // Tiger
tjdredd // Tiger
tkarnov // Tiger
trobhood // Tiger
+trobocop2 // Tiger
tshadow // Tiger
tsharr2 // Tiger
tsjam // Tiger
@@ -18305,8 +18314,8 @@ marinedt // MG (c) 1981 Taito Corporation
@source:mario.cpp
mario // (c) 1983 Nintendo of America
marioe // (c) 1983 Nintendo of America
+mariof // (c) 1983 Nintendo of America
marioj // (c) 1983 Nintendo
-marioo // (c) 1983 Nintendo of America
masao // bootleg
@source:markham.cpp
@@ -20451,7 +20460,7 @@ edfp // (c) 1991 (Japan, Prototype)
hachoo // (c) 1989
hayaosi1 // (c) 1993
iganinju // (c) 1988 (Japan)
-inyourfa // (c) 1988 (Japan)
+inyourfa // (c) 1991 (World)
jitsupro // (c) 1989 (Japan)
kazan // (c) 1988 (World)
kickoff // (c) 1988 (Japan)
@@ -29372,6 +29381,7 @@ b2b // 0071 (c) 2000 Visco (released by NCI in 2010)
bakatono // 0036 (c) 1991 Monolith Corp.
bangbead // 0259 (c) 2000 Visco
bjourney // 0022 (c) 1990 Alpha Denshi Co.
+bjourneyh //
blazstar // 0239 (c) 1998 Yumekobo
breakers // 0230 (c) 1996 Visco
breakrev // 0245 (c) 1998 Visco
@@ -34070,6 +34080,7 @@ penbros // (c) 2000 Subsino
penbrosk // bootleg
pzlbowl // (c) 1999 Nihon System / Moss
reelquak // (c) 1997 <unknown>
+telpacfl // (c) 1996 Sunsoft
trophyh // (c) 2002 Sammy USA Corporation
turkhunt // (c) 2001 Sammy USA Corporation
wschamp // (c) 2001 Sammy USA Corporation
@@ -34625,6 +34636,8 @@ smssdisp // Sega Master System Store Display Unit
@source:smsmcorp.cpp
secondch // (c) 1985 SMS MFG CORP
sureshot // (c) 1985 SMS MFG CORP
+smsjoker // (c) 1985 SMS MFG CORP
+sms4in1 // (c) 1984 SMS MFG CORP
trvhang // (c) 1984 SMS MFG CORP
trvhanga // (c) 1984 SMS MFG CORP
@@ -38788,6 +38801,10 @@ magix // (c) 1995 Yun Sung
magixb // bootleg
rocktris // (c) 1994? Yun Sung
+@source:yuvomz80.cpp
+goldhexa // Yuvo / Yubis
+hexapres //
+
@source:z100.cpp
z100 //
diff --git a/src/mame/video/agat7.cpp b/src/mame/video/agat7.cpp
index 14af493dce7..05480951821 100644
--- a/src/mame/video/agat7.cpp
+++ b/src/mame/video/agat7.cpp
@@ -172,11 +172,11 @@ void agat7video_device::text_update_lores(screen_device &screen, bitmap_ind16 &b
ch = m_ram_dev->read(address);
attr = m_ram_dev->read(address + 1);
if (BIT(attr, 5)) {
- fg = BITSWAP8(attr,7,6,5,3,4,2,1,0) & 15;
+ fg = bitswap<8>(attr,7,6,5,3,4,2,1,0) & 15;
bg = 0;
} else {
fg = 0;
- bg = BITSWAP8(attr,7,6,5,3,4,2,1,0) & 15;
+ bg = bitswap<8>(attr,7,6,5,3,4,2,1,0) & 15;
}
plot_text_character(bitmap, col * 16, row, 2, ch, m_char_ptr, m_char_size, fg, bg);
}
diff --git a/src/mame/video/alesis.cpp b/src/mame/video/alesis.cpp
index 20bdc480b4a..5dead01cbd1 100644
--- a/src/mame/video/alesis.cpp
+++ b/src/mame/video/alesis.cpp
@@ -41,7 +41,7 @@ void alesis_state::update_lcd_symbols(bitmap_ind16 &bitmap, uint8_t pos, uint8_t
else
m_lcd_digits[0] &= ~(1<<(y-1));
- output().set_value("digit0", BITSWAP8(m_lcd_digits[0],7,3,1,4,6,5,2,0));
+ output().set_value("digit0", bitswap<8>(m_lcd_digits[0],7,3,1,4,6,5,2,0));
}
break;
case 2:
@@ -56,7 +56,7 @@ void alesis_state::update_lcd_symbols(bitmap_ind16 &bitmap, uint8_t pos, uint8_t
else
m_lcd_digits[1] &= ~(1<<(y-1));
- output().set_value("digit1", BITSWAP8(m_lcd_digits[1],7,3,1,4,6,5,2,0));
+ output().set_value("digit1", bitswap<8>(m_lcd_digits[1],7,3,1,4,6,5,2,0));
}
break;
case 3:
@@ -84,7 +84,7 @@ void alesis_state::update_lcd_symbols(bitmap_ind16 &bitmap, uint8_t pos, uint8_t
else
m_lcd_digits[4] &= ~(1<<y);
- output().set_value("digit4", BITSWAP8(m_lcd_digits[4],7,3,5,2,0,1,4,6));
+ output().set_value("digit4", bitswap<8>(m_lcd_digits[4],7,3,5,2,0,1,4,6));
}
break;
}
@@ -105,7 +105,7 @@ void alesis_state::update_lcd_symbols(bitmap_ind16 &bitmap, uint8_t pos, uint8_t
else
m_lcd_digits[3] &= ~(1<<y);
- output().set_value("digit3", BITSWAP8(m_lcd_digits[3],7,3,5,2,0,1,4,6));
+ output().set_value("digit3", bitswap<8>(m_lcd_digits[3],7,3,5,2,0,1,4,6));
}
break;
case 1:
@@ -120,7 +120,7 @@ void alesis_state::update_lcd_symbols(bitmap_ind16 &bitmap, uint8_t pos, uint8_t
else
m_lcd_digits[2] &= ~(1<<y);
- output().set_value("digit2", BITSWAP8(m_lcd_digits[2],7,3,5,2,0,1,4,6));
+ output().set_value("digit2", bitswap<8>(m_lcd_digits[2],7,3,5,2,0,1,4,6));
}
break;
case 2:
diff --git a/src/mame/video/antic.cpp b/src/mame/video/antic.cpp
index c5f4a51e819..9dba288d91b 100644
--- a/src/mame/video/antic.cpp
+++ b/src/mame/video/antic.cpp
@@ -1177,7 +1177,7 @@ READ8_MEMBER ( antic_device::read )
data = m_r.antic09;
break;
case 10: /* WSYNC read */
- space.machine().device("maincpu")->execute().spin_until_trigger(TRIGGER_HSYNC);
+ machine().device("maincpu")->execute().spin_until_trigger(TRIGGER_HSYNC);
m_w.wsync = 1;
data = m_r.antic0a;
break;
@@ -1287,7 +1287,7 @@ WRITE8_MEMBER ( antic_device::write )
break;
case 10: /* WSYNC write */
LOG(("ANTIC 0A write WSYNC $%02X\n", data));
- space.machine().device("maincpu")->execute().spin_until_trigger(TRIGGER_HSYNC);
+ machine().device("maincpu")->execute().spin_until_trigger(TRIGGER_HSYNC);
m_w.wsync = 1;
break;
case 11:
diff --git a/src/mame/video/apple2.cpp b/src/mame/video/apple2.cpp
index a88bdabd748..180ee08aaa0 100644
--- a/src/mame/video/apple2.cpp
+++ b/src/mame/video/apple2.cpp
@@ -529,7 +529,7 @@ void apple2_state::apple2_video_start(const uint8_t *vram, const uint8_t *aux_vr
int len = memregion("gfx1")->bytes();
for (i = 0; i < len; i++)
{
- apple2_font[i] = BITSWAP8(apple2_font[i], 7, 7, 6, 5, 4, 3, 2, 1);
+ apple2_font[i] = bitswap<8>(apple2_font[i], 7, 7, 6, 5, 4, 3, 2, 1);
}
}
@@ -544,7 +544,7 @@ void apple2_state::apple2_video_start(const uint8_t *vram, const uint8_t *aux_vr
int len = memregion("gfx1")->bytes();
for (i = 0; i < len; i++)
{
- apple2_font[i] = BITSWAP8(apple2_font[i], 7, 0, 1, 2, 3, 4, 5, 6);
+ apple2_font[i] = bitswap<8>(apple2_font[i], 7, 0, 1, 2, 3, 4, 5, 6);
}
}
diff --git a/src/mame/video/aussiebyte.cpp b/src/mame/video/aussiebyte.cpp
index 495cfd41735..23de8c9b940 100644
--- a/src/mame/video/aussiebyte.cpp
+++ b/src/mame/video/aussiebyte.cpp
@@ -140,7 +140,7 @@ uint8_t aussiebyte_state::crt8002(uint8_t ac_ra, uint8_t ac_chr, uint8_t ac_attr
}
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/video/champbas.cpp b/src/mame/video/champbas.cpp
index 9faf3776944..6ce7f968f01 100644
--- a/src/mame/video/champbas.cpp
+++ b/src/mame/video/champbas.cpp
@@ -114,7 +114,7 @@ PALETTE_INIT_MEMBER(champbas_state,exctsccr)
/* characters / sprites (3bpp) */
for (int i = 0; i < 0x100; i++)
{
- int swapped_i = BITSWAP8(i, 2, 7, 6, 5, 4, 3, 1, 0);
+ int swapped_i = bitswap<8>(i, 2, 7, 6, 5, 4, 3, 1, 0);
uint8_t ctabentry = (color_prom[swapped_i] & 0x0f) | ((i & 0x80) >> 3);
palette.set_pen_indirect(i, ctabentry);
}
diff --git a/src/mame/video/cvs.cpp b/src/mame/video/cvs.cpp
index afcae1aecf9..f791ac70b54 100644
--- a/src/mame/video/cvs.cpp
+++ b/src/mame/video/cvs.cpp
@@ -39,7 +39,7 @@ PALETTE_INIT_MEMBER(cvs_state,cvs)
uint8_t ctabentry = color_prom[(i << 8) | attr] & 0x07;
/* bits 0 and 2 are swapped */
- ctabentry = BITSWAP8(ctabentry,7,6,5,4,3,0,1,2);
+ ctabentry = bitswap<8>(ctabentry,7,6,5,4,3,0,1,2);
palette.set_pen_indirect((attr << 3) | i, ctabentry);
}
diff --git a/src/mame/video/decocass.cpp b/src/mame/video/decocass.cpp
index 7c4708ad6bd..993be2369d4 100644
--- a/src/mame/video/decocass.cpp
+++ b/src/mame/video/decocass.cpp
@@ -241,7 +241,7 @@ void decocass_state::draw_special_priority(bitmap_ind16 &bitmap, bitmap_ind8 &pr
if ((crossing == 0 || BIT(m_mode_set, 6)) && !BIT(m_mode_set, 5))
return;
- int color = (BITSWAP8(m_color_center_bot, 0, 1, 7, 2, 3, 4, 5, 6) & 0x27) | 0x08;
+ int color = (bitswap<8>(m_color_center_bot, 0, 1, 7, 2, 3, 4, 5, 6) & 0x27) | 0x08;
int sy = 64 - m_part_v_shift + 1;
if (sy < 0)
diff --git a/src/mame/video/dynax.cpp b/src/mame/video/dynax.cpp
index d8eb4a731d5..6177c371c92 100644
--- a/src/mame/video/dynax.cpp
+++ b/src/mame/video/dynax.cpp
@@ -38,9 +38,9 @@ PALETTE_INIT_MEMBER(dynax_state,sprtmtch)
{
int x = (color_prom[i] << 8) + color_prom[0x200 + i];
/* The bits are in reverse order! */
- int r = BITSWAP8((x >> 0) & 0x1f, 7, 6, 5, 0, 1, 2, 3, 4);
- int g = BITSWAP8((x >> 5) & 0x1f, 7, 6, 5, 0, 1, 2, 3, 4);
- int b = BITSWAP8((x >> 10) & 0x1f, 7, 6, 5, 0, 1, 2, 3, 4);
+ 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);
palette.set_pen_color(i, pal5bit(r), pal5bit(g), pal5bit(b));
}
}
@@ -56,9 +56,9 @@ PALETTE_INIT_MEMBER(dynax_state,janyuki)
{
int x = (color_prom[i] << 8) + color_prom[0x200 + i];
/* The bits are in reverse order! */
- int r = BITSWAP8((x >> 0) & 0x0f, 7, 6, 5, 4, 0, 1, 2, 3);
- int g = BITSWAP8((x >> 5) & 0x0f, 7, 6, 5, 4, 0, 1, 2, 3);
- int b = BITSWAP8((x >> 10) & 0x0f, 7, 6, 5, 4, 0, 1, 2, 3);
+ int r = bitswap<8>((x >> 0) & 0x0f, 7, 6, 5, 4, 0, 1, 2, 3);
+ int g = bitswap<8>((x >> 5) & 0x0f, 7, 6, 5, 4, 0, 1, 2, 3);
+ int b = bitswap<8>((x >> 10) & 0x0f, 7, 6, 5, 4, 0, 1, 2, 3);
palette.set_pen_color(i, pal4bit(r), pal4bit(g), pal4bit(b));
}
}
@@ -107,7 +107,7 @@ WRITE8_MEMBER(dynax_state::dynax_blit_dest_w)
{
m_blit_dest = data;
if (m_layer_layout == LAYOUT_HNORIDUR)
- m_blit_dest = BITSWAP8(m_blit_dest ^ 0x0f, 7, 6, 5, 4, 0, 1, 2, 3);
+ m_blit_dest = bitswap<8>(m_blit_dest ^ 0x0f, 7, 6, 5, 4, 0, 1, 2, 3);
LOG(("D=%02X ", data));
}
@@ -120,7 +120,7 @@ WRITE8_MEMBER(dynax_state::dynax_blit2_dest_w)
WRITE8_MEMBER(dynax_state::tenkai_blit_dest_w)
{
- dynax_blit_dest_w(space, 0, BITSWAP8(data, 7, 6, 5, 4, 0, 1, 2, 3));
+ dynax_blit_dest_w(space, 0, bitswap<8>(data, 7, 6, 5, 4, 0, 1, 2, 3));
}
/*
@@ -129,7 +129,7 @@ mjembase: b d e -> - 2 4 8
*/
WRITE8_MEMBER(dynax_state::mjembase_blit_dest_w)
{
- dynax_blit_dest_w(space, 0, BITSWAP8(data, 7, 6, 5, 4, 2, 3, 1, 0));
+ dynax_blit_dest_w(space, 0, bitswap<8>(data, 7, 6, 5, 4, 2, 3, 1, 0));
}
@@ -187,7 +187,7 @@ WRITE8_MEMBER(dynax_state::tenkai_blit_palette23_w)
WRITE8_MEMBER(dynax_state::mjembase_blit_palette23_w)
{
- dynax_blit_palette23_w(space, offset, BITSWAP8(data, 3, 2, 1, 0, 7, 6, 5, 4), mem_mask);
+ dynax_blit_palette23_w(space, offset, bitswap<8>(data, 3, 2, 1, 0, 7, 6, 5, 4), mem_mask);
}
@@ -1248,7 +1248,7 @@ WRITE8_MEMBER(dynax_state::hanamai_priority_w)
WRITE8_MEMBER(dynax_state::tenkai_priority_w)
{
- m_hanamai_priority = BITSWAP8(data, 3, 2, 1, 0, 4, 7, 5, 6);
+ m_hanamai_priority = bitswap<8>(data, 3, 2, 1, 0, 4, 7, 5, 6);
}
/*
@@ -1258,7 +1258,7 @@ mjelctrn: priority: 00 20 10 40 30 50; enable: 1,2,8
*/
WRITE8_MEMBER(dynax_state::mjembase_priority_w)
{
- m_hanamai_priority = BITSWAP8(data, 6, 5, 4, 3, 2, 7, 1, 0);
+ m_hanamai_priority = bitswap<8>(data, 6, 5, 4, 3, 2, 7, 1, 0);
}
@@ -1377,7 +1377,7 @@ uint32_t dynax_state::screen_update_hanamai(screen_device &screen, bitmap_ind16
uint32_t dynax_state::screen_update_hnoridur(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- int layers_ctrl = ~BITSWAP8(m_hanamai_priority, 7, 6, 5, 4, 0, 1, 2, 3);
+ int layers_ctrl = ~bitswap<8>(m_hanamai_priority, 7, 6, 5, 4, 0, 1, 2, 3);
int lay[4];
int pri;
diff --git a/src/mame/video/fmtowns.cpp b/src/mame/video/fmtowns.cpp
index d9badf4c7d5..ebe851f98bd 100644
--- a/src/mame/video/fmtowns.cpp
+++ b/src/mame/video/fmtowns.cpp
@@ -371,8 +371,8 @@ READ8_MEMBER(towns_state::towns_video_440_r)
if(m_video.towns_crtc_sel == 30)
{
// check video position
- xpos = space.machine().first_screen()->hpos();
- ypos = space.machine().first_screen()->vpos();
+ xpos = machine().first_screen()->hpos();
+ ypos = machine().first_screen()->vpos();
if(xpos < (m_video.towns_crtc_reg[0] & 0xfe))
ret |= 0x02;
@@ -546,7 +546,7 @@ READ8_MEMBER(towns_state::towns_video_fd90_r)
return m_video.towns_degipal[offset-0x08];
case 0x10: // "sub status register"
// check video position
- xpos = space.machine().first_screen()->hpos();
+ xpos = machine().first_screen()->hpos();
if(xpos < m_video.towns_crtc_layerscr[0].max_x && xpos > m_video.towns_crtc_layerscr[0].min_x)
ret |= 0x02;
@@ -709,13 +709,15 @@ WRITE8_MEMBER( towns_state::towns_spriteram_w )
* +2: Y position (10-bit)
* +4: Sprite Attribute
* bit 15: enforce offsets (regs 2-5)
- * bit 12,13: flip sprite
- * bits 10-0: Sprite RAM offset containing sprite pattern
- * TODO: other attributes (zoom?)
+ * bit 12,13,14: flip / rotate sprite
+ * When the rotate bit (14) is set, the X and Y coordinates are swapped when rendering the sprite to VRAM.
+ * By combining it with the flip bits, the sprite can be rotated in 90 degree increments, both mirrored and unmirrored.
+ * bits 10,11: half-size
+ * bits 9-0: Sprite RAM offset containing sprite pattern
* +6: Sprite Colour
* bit 15: use colour data in located in sprite RAM offset in bits 11-0 (x32)
*/
-void towns_state::render_sprite_4(uint32_t poffset, uint32_t coffset, uint16_t x, uint16_t y, uint16_t xflip, uint16_t yflip, const rectangle* rect)
+void towns_state::render_sprite_4(uint32_t poffset, uint32_t coffset, uint16_t x, uint16_t y, bool xflip, bool yflip, bool xhalfsize, bool yhalfsize, bool rotation, const rectangle* rect)
{
uint16_t xpos,ypos;
uint16_t col,pixel;
@@ -724,29 +726,58 @@ void towns_state::render_sprite_4(uint32_t poffset, uint32_t coffset, uint16_t x
int xdir,ydir;
int width = (m_video.towns_crtc_reg[12] - m_video.towns_crtc_reg[11]) / (((m_video.towns_crtc_reg[27] & 0x0f00) >> 8)+1);
int height = (m_video.towns_crtc_reg[16] - m_video.towns_crtc_reg[15]) / (((m_video.towns_crtc_reg[27] & 0xf000) >> 12)+2);
+
+ if (rotation)
+ {
+ std::swap (x,y);
+ std::swap (xflip,yflip);
+ std::swap (width,height);
+ }
if(xflip)
{
xstart = x+14;
- xend = x-2;
- xdir = -2;
+ if (xhalfsize)
+ {
+ xend = x+6;
+ xdir = -1;
+ }
+ else
+ {
+ xend = x-2;
+ xdir = -2;
+ }
}
else
{
xstart = x+1;
- xend = x+17;
- xdir = 2;
+ if (xhalfsize)
+ {
+ xend = x+9;
+ xdir = 1;
+ }
+ else
+ {
+ xend = x+17;
+ xdir = 2;
+ }
}
if(yflip)
{
ystart = y+15;
- yend = y-1;
+ if (yhalfsize)
+ yend = y+7;
+ else
+ yend = y-1;
ydir = -1;
}
else
{
ystart = y;
- yend = y+16;
+ if (yhalfsize)
+ yend = y+8;
+ else
+ yend = y+16;
ydir = 1;
}
xstart &= 0x1ff;
@@ -754,19 +785,28 @@ void towns_state::render_sprite_4(uint32_t poffset, uint32_t coffset, uint16_t x
ystart &= 0x1ff;
yend &= 0x1ff;
poffset &= 0x1ffff;
-
+
for(ypos=ystart;ypos!=yend;ypos+=ydir,ypos&=0x1ff)
{
for(xpos=xstart;xpos!=xend;xpos+=xdir,xpos&=0x1ff)
{
+
if(m_video.towns_sprite_page != 0)
voffset = 0x20000;
else
voffset = 0x00000;
pixel = (m_towns_txtvram[poffset] & 0xf0) >> 4;
col = m_towns_txtvram[coffset+(pixel*2)] | (m_towns_txtvram[coffset+(pixel*2)+1] << 8);
- voffset += (m_video.towns_crtc_reg[24] * 4) * (ypos & 0x1ff); // scanline size in bytes * y pos
- voffset += (xpos & 0x1ff) * 2;
+ if (rotation)
+ {
+ voffset += (m_video.towns_crtc_reg[24] * 4) * (xpos & 0x1ff); // scanline size in bytes * y pos
+ voffset += (ypos & 0x1ff) * 2;
+ }
+ else
+ {
+ voffset += (m_video.towns_crtc_reg[24] * 4) * (ypos & 0x1ff); // scanline size in bytes * y pos
+ voffset += (xpos & 0x1ff) * 2;
+ }
if((m_video.towns_sprite_page != 0 && voffset > 0x1ffff && voffset < 0x40000)
|| (m_video.towns_sprite_page == 0 && voffset < 0x20000))
{
@@ -776,28 +816,44 @@ void towns_state::render_sprite_4(uint32_t poffset, uint32_t coffset, uint16_t x
m_towns_gfxvram[0x40000+voffset] = col & 0x00ff;
}
}
- if(xflip)
- voffset+=2;
- else
- voffset-=2;
- pixel = m_towns_txtvram[poffset] & 0x0f;
- col = m_towns_txtvram[coffset+(pixel*2)] | (m_towns_txtvram[coffset+(pixel*2)+1] << 8);
- if((m_video.towns_sprite_page != 0 && voffset > 0x1ffff && voffset < 0x40000)
- || (m_video.towns_sprite_page == 0 && voffset < 0x20000))
+
+ if (!xhalfsize)
{
- if(xpos < width && ypos < height && pixel != 0)
+ if(xflip)
+ if (rotation)
+ voffset+=(m_video.towns_crtc_reg[24] * 4);
+ else
+ voffset+=2;
+ else
+ if (rotation)
+ voffset-=(m_video.towns_crtc_reg[24] * 4);
+ else
+ voffset-=2;
+
+ pixel = m_towns_txtvram[poffset] & 0x0f;
+ col = m_towns_txtvram[coffset+(pixel*2)] | (m_towns_txtvram[coffset+(pixel*2)+1] << 8);
+ if((m_video.towns_sprite_page != 0 && voffset > 0x1ffff && voffset < 0x40000)
+ || (m_video.towns_sprite_page == 0 && voffset < 0x20000))
{
- m_towns_gfxvram[0x40000+voffset+1] = (col & 0xff00) >> 8;
- m_towns_gfxvram[0x40000+voffset] = col & 0x00ff;
+ if(xpos < width && ypos < height && pixel != 0)
+ {
+ m_towns_gfxvram[0x40000+voffset+1] = (col & 0xff00) >> 8;
+ m_towns_gfxvram[0x40000+voffset] = col & 0x00ff;
+ }
}
}
+
poffset++;
poffset &= 0x1ffff;
}
+ if (yhalfsize)
+ {
+ poffset+=8;
+ }
}
}
-void towns_state::render_sprite_16(uint32_t poffset, uint16_t x, uint16_t y, uint16_t xflip, uint16_t yflip, const rectangle* rect)
+void towns_state::render_sprite_16(uint32_t poffset, uint16_t x, uint16_t y, bool xflip, bool yflip, bool xhalfsize, bool yhalfsize, bool rotation, const rectangle* rect)
{
uint16_t xpos,ypos;
uint16_t col;
@@ -807,28 +863,47 @@ void towns_state::render_sprite_16(uint32_t poffset, uint16_t x, uint16_t y, uin
int width = (m_video.towns_crtc_reg[12] - m_video.towns_crtc_reg[11]) / (((m_video.towns_crtc_reg[27] & 0x0f00) >> 8)+1);
int height = (m_video.towns_crtc_reg[16] - m_video.towns_crtc_reg[15]) / (((m_video.towns_crtc_reg[27] & 0xf000) >> 12)+2);
+ if (rotation)
+ {
+ std::swap (x,y);
+ std::swap (xflip,yflip);
+ std::swap (width,height);
+ }
+
if(xflip)
{
xstart = x+16;
- xend = x;
+ if (xhalfsize)
+ xend = x+8;
+ else
+ xend = x;
xdir = -1;
}
else
{
xstart = x+1;
- xend = x+17;
+ if (xhalfsize)
+ xend = x+9;
+ else
+ xend = x+17;
xdir = 1;
}
if(yflip)
{
ystart = y+15;
- yend = y-1;
+ if (yhalfsize)
+ yend = y+7;
+ else
+ yend = y-1;
ydir = -1;
}
else
{
ystart = y;
- yend = y+16;
+ if (yhalfsize)
+ yend = y+16;
+ else
+ yend = y+8;
ydir = 1;
}
xstart &= 0x1ff;
@@ -846,8 +921,16 @@ void towns_state::render_sprite_16(uint32_t poffset, uint16_t x, uint16_t y, uin
else
voffset = 0x00000;
col = m_towns_txtvram[poffset] | (m_towns_txtvram[poffset+1] << 8);
- voffset += (m_video.towns_crtc_reg[24] * 4) * (ypos & 0x1ff); // scanline size in bytes * y pos
- voffset += (xpos & 0x1ff) * 2;
+ if (rotation)
+ {
+ voffset += (m_video.towns_crtc_reg[24] * 4) * (xpos & 0x1ff); // scanline size in bytes * y pos
+ voffset += (ypos & 0x1ff) * 2;
+ }
+ else
+ {
+ voffset += (m_video.towns_crtc_reg[24] * 4) * (ypos & 0x1ff); // scanline size in bytes * y pos
+ voffset += (xpos & 0x1ff) * 2;
+ }
if((m_video.towns_sprite_page != 0 && voffset > 0x1ffff && voffset < 0x40000)
|| (m_video.towns_sprite_page == 0 && voffset < 0x20000))
{
@@ -857,9 +940,15 @@ void towns_state::render_sprite_16(uint32_t poffset, uint16_t x, uint16_t y, uin
m_towns_gfxvram[0x40000+voffset] = col & 0x00ff;
}
}
- poffset+=2;
+ if (xhalfsize)
+ poffset+=4;
+ else
+ poffset+=2;
poffset &= 0x1ffff;
}
+
+ if (yhalfsize)
+ poffset+=16;
}
}
@@ -871,6 +960,7 @@ void towns_state::draw_sprites(const rectangle* rect)
uint16_t xoff = (m_video.towns_sprite_reg[2] | (m_video.towns_sprite_reg[3] << 8)) & 0x1ff;
uint16_t yoff = (m_video.towns_sprite_reg[4] | (m_video.towns_sprite_reg[5] << 8)) & 0x1ff;
uint32_t poffset,coffset;
+ bool xflip, yflip, xhalfsize, yhalfsize, rotation;
if(!(m_video.towns_sprite_reg[1] & 0x80))
return;
@@ -887,6 +977,12 @@ void towns_state::draw_sprites(const rectangle* rect)
y = m_towns_txtvram[8*n+2] | (m_towns_txtvram[8*n+3] << 8);
attr = m_towns_txtvram[8*n+4] | (m_towns_txtvram[8*n+5] << 8);
colour = m_towns_txtvram[8*n+6] | (m_towns_txtvram[8*n+7] << 8);
+ xflip = (attr & 0x2000) >> 13;
+ yflip = (attr & 0x1000) >> 12;
+ rotation = (attr & 0x4000) >> 14;
+ xhalfsize = (attr & 0x400) >> 10;
+ yhalfsize = (attr & 0x800) >> 11;
+
if(attr & 0x8000)
{
x += xoff;
@@ -904,7 +1000,7 @@ void towns_state::draw_sprites(const rectangle* rect)
n,x,y,attr,colour,poffset,coffset);
#endif
if(!(colour & 0x2000))
- render_sprite_4((poffset)&0x1ffff,coffset,x,y,attr&0x2000,attr&0x1000,rect);
+ render_sprite_4((poffset)&0x1ffff,coffset,x,y,xflip,yflip,xhalfsize,yhalfsize,rotation,rect);
}
else
{
@@ -914,7 +1010,7 @@ void towns_state::draw_sprites(const rectangle* rect)
n,x,y,attr,colour,poffset);
#endif
if(!(colour & 0x2000))
- render_sprite_16((poffset)&0x1ffff,x,y,attr&0x2000,attr&0x1000,rect);
+ render_sprite_16((poffset)&0x1ffff,x,y,xflip,yflip,xhalfsize,yhalfsize,rotation,rect);
}
}
diff --git a/src/mame/video/gsword.cpp b/src/mame/video/gsword.cpp
index 46e851c5f4b..a9b7fe22ef5 100644
--- a/src/mame/video/gsword.cpp
+++ b/src/mame/video/gsword.cpp
@@ -168,7 +168,7 @@ PALETTE_INIT_MEMBER(gsword_state, gsword)
/* sprites */
for (unsigned i = 0x100; i < 0x200; i++)
{
- uint8_t ctabentry = (BITSWAP8(color_prom[i - 0x100],7,6,5,4,0,1,2,3) & 0x0f) | 0x80;
+ uint8_t ctabentry = (bitswap<8>(color_prom[i - 0x100],7,6,5,4,0,1,2,3) & 0x0f) | 0x80;
palette.set_pen_indirect(i, ctabentry);
}
}
diff --git a/src/mame/video/hanaawas.cpp b/src/mame/video/hanaawas.cpp
index 5a16724003a..85badce3e8b 100644
--- a/src/mame/video/hanaawas.cpp
+++ b/src/mame/video/hanaawas.cpp
@@ -56,7 +56,7 @@ PALETTE_INIT_MEMBER(hanaawas_state, hanaawas)
3bpp ones 0x10-0x1f */
for (i = 0; i < 0x100; i++)
{
- int swapped_i = BITSWAP8(i,2,7,6,5,4,3,1,0);
+ int swapped_i = bitswap<8>(i,2,7,6,5,4,3,1,0);
uint8_t ctabentry = color_prom[swapped_i] & 0x0f;
palette.set_pen_indirect(i, ctabentry);
}
diff --git a/src/mame/video/igs017_igs031.cpp b/src/mame/video/igs017_igs031.cpp
index 5a0681f8f21..6b34006f6d5 100644
--- a/src/mame/video/igs017_igs031.cpp
+++ b/src/mame/video/igs017_igs031.cpp
@@ -145,8 +145,8 @@ void igs017_igs031_device::video_start()
for (i = 0; i < size ; i++)
{
- rom[i] = BITSWAP8(rom[i], 0, 1, 2, 3, 4, 5, 6, 7);
-// rom[i^1] = BITSWAP8(rom[i], 0, 1, 2, 3, 4, 5, 6, 7);
+ rom[i] = bitswap<8>(rom[i], 0, 1, 2, 3, 4, 5, 6, 7);
+// rom[i^1] = bitswap<8>(rom[i], 0, 1, 2, 3, 4, 5, 6, 7);
}
}
}
diff --git a/src/mame/video/irobot.cpp b/src/mame/video/irobot.cpp
index 0d97e8b0e95..8201279ed83 100644
--- a/src/mame/video/irobot.cpp
+++ b/src/mame/video/irobot.cpp
@@ -53,7 +53,7 @@ PALETTE_INIT_MEMBER(irobot_state, irobot)
int g = 28 * ((color_prom[i] >> 4) & 0x03) * intensity;
int b = 28 * ((color_prom[i] >> 2) & 0x03) * intensity;
- int swapped_i = BITSWAP8(i,7,6,5,4,3,0,1,2);
+ int swapped_i = bitswap<8>(i,7,6,5,4,3,0,1,2);
palette.set_pen_color(swapped_i + 64, rgb_t(r, g, b));
}
diff --git a/src/mame/video/k001006.cpp b/src/mame/video/k001006.cpp
index 54aa9d088cf..6ce7d0039a1 100644
--- a/src/mame/video/k001006.cpp
+++ b/src/mame/video/k001006.cpp
@@ -70,7 +70,7 @@ READ32_MEMBER( k001006_device::read )
{
case 0x0b: // CG Board ROM read
{
- uint16_t *rom = (uint16_t*)space.machine().root_device().memregion(m_gfx_region)->base();
+ uint16_t *rom = (uint16_t*)machine().root_device().memregion(m_gfx_region)->base();
return rom[m_addr / 2] << 16;
}
case 0x0d: // Palette RAM read
diff --git a/src/mame/video/k001604.cpp b/src/mame/video/k001604.cpp
index 6742471315a..98b69197f7f 100644
--- a/src/mame/video/k001604.cpp
+++ b/src/mame/video/k001604.cpp
@@ -310,8 +310,8 @@ READ32_MEMBER( k001604_device::reg_r )
{
switch (offset)
{
- case 0x54/4: return space.machine().rand() << 16;
- case 0x5c/4: return space.machine().rand() << 16 | space.machine().rand();
+ case 0x54/4: return machine().rand() << 16;
+ case 0x5c/4: return machine().rand() << 16 | machine().rand();
}
return m_reg[offset];
diff --git a/src/mame/video/k007121.cpp b/src/mame/video/k007121.cpp
index 04a367572e5..0f9b483a39a 100644
--- a/src/mame/video/k007121.cpp
+++ b/src/mame/video/k007121.cpp
@@ -174,7 +174,7 @@ WRITE8_MEMBER( k007121_device::ctrl_w )
case 6:
/* palette bank change */
if ((m_ctrlram[offset] & 0x30) != (data & 0x30))
- space.machine().tilemap().mark_all_dirty();
+ machine().tilemap().mark_all_dirty();
break;
case 7:
m_flipscreen = data & 0x08;
diff --git a/src/mame/video/k007342.cpp b/src/mame/video/k007342.cpp
index 5290b1636e6..106d6d3c0cc 100644
--- a/src/mame/video/k007342.cpp
+++ b/src/mame/video/k007342.cpp
@@ -162,7 +162,7 @@ WRITE8_MEMBER( k007342_device::vreg_w )
break;
case 0x01: /* used for banking in Rock'n'Rage */
if (data != m_regs[1])
- space.machine().tilemap().mark_all_dirty();
+ machine().tilemap().mark_all_dirty();
case 0x02:
m_scrollx[0] = (m_scrollx[0] & 0xff) | ((data & 0x01) << 8);
m_scrollx[1] = (m_scrollx[1] & 0xff) | ((data & 0x02) << 7);
diff --git a/src/mame/video/k051316.cpp b/src/mame/video/k051316.cpp
index 18fecde3e1e..cd2053e4690 100644
--- a/src/mame/video/k051316.cpp
+++ b/src/mame/video/k051316.cpp
@@ -213,13 +213,13 @@ READ8_MEMBER( k051316_device::rom_r )
addr /= m_pixels_per_byte;
addr &= m_zoom_rom.mask();
- // popmessage("%s: offset %04x addr %04x", space.machine().describe_context(), offset, addr);
+ // popmessage("%s: offset %04x addr %04x", machine().describe_context(), offset, addr);
return m_zoom_rom[addr];
}
else
{
- //logerror("%s: read 051316 ROM offset %04x but reg 0x0c bit 0 not clear\n", space.machine().describe_context(), offset);
+ //logerror("%s: read 051316 ROM offset %04x but reg 0x0c bit 0 not clear\n", machine().describe_context(), offset);
return 0;
}
}
@@ -227,7 +227,7 @@ READ8_MEMBER( k051316_device::rom_r )
WRITE8_MEMBER( k051316_device::ctrl_w )
{
m_ctrlram[offset] = data;
- //if (offset >= 0x0c) logerror("%s: write %02x to 051316 reg %x\n", space.machine().describe_context(), data, offset);
+ //if (offset >= 0x0c) logerror("%s: write %02x to 051316 reg %x\n", machine().describe_context(), data, offset);
}
// some games (ajax, rollerg, ultraman, etc.) have external logic that can enable or disable wraparound dynamically
diff --git a/src/mame/video/k053244_k053245.cpp b/src/mame/video/k053244_k053245.cpp
index 9e96492e276..0f6acdd9688 100644
--- a/src/mame/video/k053244_k053245.cpp
+++ b/src/mame/video/k053244_k053245.cpp
@@ -239,7 +239,7 @@ WRITE8_MEMBER( k05324x_device::k053244_w )
// popmessage("053244 reg 05 = %02x",data);
/* bit 2 = unknown, Parodius uses it */
/* bit 5 = unknown, Rollergames uses it */
-// logerror("%s: write %02x to 053244 address 5\n", space.machine().describe_context(), data);
+// logerror("%s: write %02x to 053244 address 5\n", machine().describe_context(), data);
break;
case 0x06:
diff --git a/src/mame/video/k053246_k053247_k055673.cpp b/src/mame/video/k053246_k053247_k055673.cpp
index 4948c7b8f60..987d261c21c 100644
--- a/src/mame/video/k053246_k053247_k055673.cpp
+++ b/src/mame/video/k053246_k053247_k055673.cpp
@@ -133,9 +133,9 @@ WRITE8_MEMBER( k053247_device::k053247_w )
// FIXME: rearrange ROM loading so this can be merged with the 4/6/8bpp version
READ16_MEMBER( k053247_device::k055673_5bpp_rom_word_r ) // 5bpp
{
- uint8_t *ROM8 = (uint8_t *)space.machine().root_device().memregion(m_memory_region)->base();
- uint16_t *ROM = (uint16_t *)space.machine().root_device().memregion(m_memory_region)->base();
- int size4 = (space.machine().root_device().memregion(m_memory_region)->bytes() / (1024 * 1024)) / 5;
+ uint8_t *ROM8 = (uint8_t *)machine().root_device().memregion(m_memory_region)->base();
+ uint16_t *ROM = (uint16_t *)machine().root_device().memregion(m_memory_region)->base();
+ int size4 = (machine().root_device().memregion(m_memory_region)->bytes() / (1024 * 1024)) / 5;
int romofs;
size4 *= 4 * 1024 * 1024; // get offset to 5th bit
@@ -174,7 +174,7 @@ READ16_MEMBER( k053247_device::k055673_rom_word_r )
if (m_bpp == 5)
return k055673_5bpp_rom_word_r(space, offset, mem_mask);
- uint16_t *ROM = (uint16_t *)space.machine().root_device().memregion(m_memory_region)->base();
+ uint16_t *ROM = (uint16_t *)machine().root_device().memregion(m_memory_region)->base();
int romofs;
romofs = m_kx46_regs[6] << 16 | m_kx46_regs[7] << 8 | m_kx46_regs[4];
@@ -188,7 +188,7 @@ READ16_MEMBER( k053247_device::k055673_rom_word_r )
READ16_MEMBER( k053247_device::k055673_ps_rom_word_r )
{
- uint8_t *ROM = (uint8_t *)space.machine().root_device().memregion(m_memory_region)->base();
+ uint8_t *ROM = (uint8_t *)machine().root_device().memregion(m_memory_region)->base();
int romofs;
int magic = (offset & 1);
@@ -207,10 +207,10 @@ READ8_MEMBER( k053247_device::k053246_r )
int addr;
addr = (m_kx46_regs[6] << 17) | (m_kx46_regs[7] << 9) | (m_kx46_regs[4] << 1) | ((offset & 1) ^ 1);
- addr &= space.machine().root_device().memregion(m_memory_region)->bytes() - 1;
+ addr &= machine().root_device().memregion(m_memory_region)->bytes() - 1;
// if (VERBOSE)
// popmessage("%04x: offset %02x addr %06x", space.device().safe_pc(), offset, addr);
- return space.machine().root_device().memregion(m_memory_region)->base()[addr];
+ return machine().root_device().memregion(m_memory_region)->base()[addr];
}
else
{
diff --git a/src/mame/video/k053251.cpp b/src/mame/video/k053251.cpp
index 21eece746f6..2b37c44a5aa 100644
--- a/src/mame/video/k053251.cpp
+++ b/src/mame/video/k053251.cpp
@@ -195,7 +195,7 @@ WRITE8_MEMBER( k053251_device::write )
}
if (!m_tilemaps_set)
- space.machine().tilemap().mark_all_dirty();
+ machine().tilemap().mark_all_dirty();
}
else if (offset == 10)
{
@@ -211,7 +211,7 @@ WRITE8_MEMBER( k053251_device::write )
}
if (!m_tilemaps_set)
- space.machine().tilemap().mark_all_dirty();
+ machine().tilemap().mark_all_dirty();
}
}
}
diff --git a/src/mame/video/kan_pand.cpp b/src/mame/video/kan_pand.cpp
index 8f4d4edf3e3..91ca22fb3b1 100644
--- a/src/mame/video/kan_pand.cpp
+++ b/src/mame/video/kan_pand.cpp
@@ -235,7 +235,7 @@ WRITE8_MEMBER ( kaneko_pandora_device::spriteram_w )
{
// it's either hooked up oddly on this, or on the 16-bit games
// either way, we swap the address lines so that the spriteram is in the same format
- offset = BITSWAP16(offset, 15,14,13,12, 11, 7,6,5,4,3,2,1,0, 10,9,8 );
+ offset = bitswap<16>(offset, 15,14,13,12, 11, 7,6,5,4,3,2,1,0, 10,9,8 );
if (!m_spriteram)
{
@@ -256,7 +256,7 @@ READ8_MEMBER( kaneko_pandora_device::spriteram_r )
{
// it's either hooked up oddly on this, or on the 16-bit games
// either way, we swap the address lines so that the spriteram is in the same format
- offset = BITSWAP16(offset, 15,14,13,12, 11, 7,6,5,4,3,2,1,0, 10,9,8 );
+ offset = bitswap<16>(offset, 15,14,13,12, 11, 7,6,5,4,3,2,1,0, 10,9,8 );
if (!m_spriteram)
{
diff --git a/src/mame/video/kingobox.cpp b/src/mame/video/kingobox.cpp
index 8335f5155d7..9a81d46f9d1 100644
--- a/src/mame/video/kingobox.cpp
+++ b/src/mame/video/kingobox.cpp
@@ -211,7 +211,7 @@ void kingofb_state::kingofb_draw_sprites(bitmap_ind16 &bitmap, const rectangle &
int roffs, bank, code, color, flipx, flipy, sx, sy;
/* the offset into spriteram seems scrambled */
- roffs = BITSWAP16(offs,15,14,13,12,11,10,4,7,6,5,9,8,3,2,1,0) ^ 0x3c;
+ roffs = bitswap<16>(offs,15,14,13,12,11,10,4,7,6,5,9,8,3,2,1,0) ^ 0x3c;
if (roffs & 0x200)
roffs ^= 0x1c0;
diff --git a/src/mame/video/ladybug.cpp b/src/mame/video/ladybug.cpp
index 3f2baa4148e..0c7268f6460 100644
--- a/src/mame/video/ladybug.cpp
+++ b/src/mame/video/ladybug.cpp
@@ -83,10 +83,10 @@ void ladybug_state::palette_init_common( palette_device &palette, const uint8_t
{
uint8_t ctabentry = color_prom[(i - 0x20) >> 1];
- ctabentry = BITSWAP8((color_prom[i - 0x20] >> 0) & 0x0f, 7,6,5,4,0,1,2,3);
+ ctabentry = bitswap<8>((color_prom[i - 0x20] >> 0) & 0x0f, 7,6,5,4,0,1,2,3);
palette.set_pen_indirect(i + 0x00, ctabentry);
- ctabentry = BITSWAP8((color_prom[i - 0x20] >> 4) & 0x0f, 7,6,5,4,0,1,2,3);
+ ctabentry = bitswap<8>((color_prom[i - 0x20] >> 4) & 0x0f, 7,6,5,4,0,1,2,3);
palette.set_pen_indirect(i + 0x20, ctabentry);
}
}
diff --git a/src/mame/video/leland.cpp b/src/mame/video/leland.cpp
index f3c5caf9a2d..f96c00dfa70 100644
--- a/src/mame/video/leland.cpp
+++ b/src/mame/video/leland.cpp
@@ -198,14 +198,14 @@ int leland_state::leland_vram_port_r(address_space &space, int offset, int num)
default:
logerror("%s: Warning: Unknown video port %02x read (address=%04x)\n",
- space.machine().describe_context(), offset, addr);
+ machine().describe_context(), offset, addr);
ret = 0;
break;
}
state->m_addr = addr;
if (LOG_COMM && addr >= 0xf000)
- logerror("%s:%s comm read %04X = %02X\n", space.machine().describe_context(), num ? "slave" : "master", addr, ret);
+ logerror("%s:%s comm read %04X = %02X\n", machine().describe_context(), num ? "slave" : "master", addr, ret);
return ret;
}
@@ -233,7 +233,7 @@ void leland_state::leland_vram_port_w(address_space &space, int offset, int data
m_screen->update_partial(scanline - 1);
if (LOG_COMM && addr >= 0xf000)
- logerror("%s:%s comm write %04X = %02X\n", space.machine().describe_context(), num ? "slave" : "master", addr, data);
+ logerror("%s:%s comm write %04X = %02X\n", machine().describe_context(), num ? "slave" : "master", addr, data);
/* based on the low 3 bits of the offset, update the destination */
switch (offset & 7)
@@ -285,7 +285,7 @@ void leland_state::leland_vram_port_w(address_space &space, int offset, int data
default:
logerror("%s:Warning: Unknown video port write (address=%04x value=%02x)\n",
- space.machine().describe_context(), offset, addr);
+ machine().describe_context(), offset, addr);
break;
}
diff --git a/src/mame/video/mbee.cpp b/src/mame/video/mbee.cpp
index 37c12ec5135..deba6df738e 100644
--- a/src/mame/video/mbee.cpp
+++ b/src/mame/video/mbee.cpp
@@ -434,7 +434,7 @@ PALETTE_INIT_MEMBER( mbee_state, standard )
for (r1 = 0; r1 < 4; r1++)
{
r = bglevel[r1];
- k = BITSWAP8(i, 7, 6, 5, 3, 1, 4, 2, 0);
+ k = bitswap<8>(i, 7, 6, 5, 3, 1, 4, 2, 0);
palette.set_pen_color(k, rgb_t(r, g, b));
i++;
}
diff --git a/src/mame/video/mitchell.cpp b/src/mame/video/mitchell.cpp
index 536270a7692..8cd42c700aa 100644
--- a/src/mame/video/mitchell.cpp
+++ b/src/mame/video/mitchell.cpp
@@ -145,7 +145,7 @@ logerror("PC %04x: pang_gfxctrl_w %02x\n",space.device().safe_pc(),data);
/* bit 0 is unknown (used, maybe back color enable?) */
/* bit 1 is coin counter */
- space.machine().bookkeeping().coin_counter_w(0, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 2);
/* bit 2 is flip screen */
if (m_flipscreen != (data & 0x04))
diff --git a/src/mame/video/mz700.cpp b/src/mame/video/mz700.cpp
index 0bb0bdd4c07..9a919f920a2 100644
--- a/src/mame/video/mz700.cpp
+++ b/src/mame/video/mz700.cpp
@@ -32,7 +32,7 @@ uint32_t mz_state::screen_update_mz700(screen_device &screen, bitmap_ind16 &bitm
if (col != oldcol)
{
oldcol = col;
- col = BITSWAP8(col, 7, 3, 4, 6, 5, 0, 2, 1); // turn BRG into RGB
+ col = bitswap<8>(col, 7, 3, 4, 6, 5, 0, 2, 1); // turn BRG into RGB
bg = col & 7;
fg = (col >> 3) & 7;
}
diff --git a/src/mame/video/namcos2.cpp b/src/mame/video/namcos2.cpp
index 55f6f07a109..56c110a3b43 100644
--- a/src/mame/video/namcos2.cpp
+++ b/src/mame/video/namcos2.cpp
@@ -287,7 +287,7 @@ WRITE16_MEMBER( namcos2_state::rozram_word_w )
{
COMBINE_DATA(&m_rozram[offset]);
m_tilemap_roz->mark_tile_dirty(offset);
- //if( space.machine().input().code_pressed(KEYCODE_Q) )
+ //if( machine().input().code_pressed(KEYCODE_Q) )
//{
// machine().debug_break();
//}
diff --git a/src/mame/video/naughtyb.cpp b/src/mame/video/naughtyb.cpp
index d566a8ea75d..5b395f64a65 100644
--- a/src/mame/video/naughtyb.cpp
+++ b/src/mame/video/naughtyb.cpp
@@ -91,7 +91,7 @@ PALETTE_INIT_MEMBER(naughtyb_state, naughtyb)
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/video/nmk16.cpp b/src/mame/video/nmk16.cpp
index d73670721f0..b48d678b225 100644
--- a/src/mame/video/nmk16.cpp
+++ b/src/mame/video/nmk16.cpp
@@ -486,7 +486,7 @@ void nmk16_state::nmk16_draw_sprites_swap(bitmap_ind16 &bitmap, const rectangle
for (i = 0; i < 0x100; i++)
{
- int spr = BITSWAP8(i, bittbl[0], bittbl[1], bittbl[2], bittbl[3], bittbl[4], bittbl[5], bittbl[6], bittbl[7]);
+ int spr = bitswap<8>(i, bittbl[0], bittbl[1], bittbl[2], bittbl[3], bittbl[4], bittbl[5], bittbl[6], bittbl[7]);
nmk16_draw_sprite(bitmap, cliprect, m_spriteram_old2.get() + (spr * 16/2));
}
}
@@ -497,7 +497,7 @@ void nmk16_state::nmk16_draw_sprites_swap_flipsupported(bitmap_ind16 &bitmap, co
for ( i = 0; i < 0x100; i++ )
{
- int spr = BITSWAP8(i, bittbl[0], bittbl[1], bittbl[2], bittbl[3], bittbl[4], bittbl[5], bittbl[6], bittbl[7]);
+ int spr = bitswap<8>(i, bittbl[0], bittbl[1], bittbl[2], bittbl[3], bittbl[4], bittbl[5], bittbl[6], bittbl[7]);
nmk16_draw_sprite_flipsupported(bitmap, cliprect, m_spriteram_old2.get() + (spr * 16/2));
}
}
diff --git a/src/mame/video/pc9801.cpp b/src/mame/video/pc9801.cpp
index e9c49d27169..c8305605156 100644
--- a/src/mame/video/pc9801.cpp
+++ b/src/mame/video/pc9801.cpp
@@ -470,14 +470,14 @@ WRITE16_MEMBER(pc9801_state::tvram_w)
/* +0x8000 is trusted (bank 0 is actually used by 16 colors mode) */
READ8_MEMBER(pc9801_state::gvram_r)
{
- return BITSWAP8(m_video_ram_2[(offset>>1)+0x04000+m_vram_bank*0x10000] >> ((offset & 1) << 3),0,1,2,3,4,5,6,7);
+ return bitswap<8>(m_video_ram_2[(offset>>1)+0x04000+m_vram_bank*0x10000] >> ((offset & 1) << 3),0,1,2,3,4,5,6,7);
}
WRITE8_MEMBER(pc9801_state::gvram_w)
{
uint16_t ram = m_video_ram_2[(offset>>1)+0x04000+m_vram_bank*0x10000];
int mask = (offset & 1) << 3;
- data = BITSWAP8(data,0,1,2,3,4,5,6,7);
+ data = bitswap<8>(data,0,1,2,3,4,5,6,7);
m_video_ram_2[(offset>>1)+0x04000+m_vram_bank*0x10000] = (ram & (0xff00 >> mask)) | (data << mask);
}
diff --git a/src/mame/video/pgm2.cpp b/src/mame/video/pgm2.cpp
index 64ce9901cf7..a1e3ec0a8cc 100644
--- a/src/mame/video/pgm2.cpp
+++ b/src/mame/video/pgm2.cpp
@@ -138,9 +138,9 @@ void pgm2_state::draw_sprites(screen_device &screen, const rectangle &cliprect,
//printf("frame\n");
- for (int i = 0;i < 0x2000 / 4;i++)
+ for (int i = 0;i < 0x2000 / 4;i+=4)
{
- if (spriteram[i] == 0x80000000)
+ if (spriteram[i+2] & 0x80000000)
{
endoflist = i;
break;
@@ -216,12 +216,15 @@ void pgm2_state::draw_sprites(screen_device &screen, const rectangle &cliprect,
draw_sprite_line(cliprect, mask_offset, palette_offset, x, realy, flipx, reverse, sizex, pal, 1, zoomx_bits, growx);
realy++;
- if (zoomy_bit)
+ if (zoomy_bit) // draw it again
{
palette_offset = pre_palette_offset;
mask_offset = pre_mask_offset;
+ draw_sprite_line(cliprect, mask_offset, palette_offset, x, realy, flipx, reverse, sizex, pal, 1, zoomx_bits, growx);
+ realy++;
}
- else ydraw++;
+
+ ydraw++;
}
}
}
@@ -258,6 +261,17 @@ void pgm2_state::copy_sprites_from_bitmap(screen_device &screen, bitmap_rgb32 &b
uint32_t pgm2_state::screen_update_pgm2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
+
+ int mode = m_vidmode[0] & 0x00010000; // other bits not used?
+
+ if (mode)
+ m_screen->set_visible_area(0, 448 - 1, 0, 224 - 1);
+ else
+ m_screen->set_visible_area(0, 320 - 1, 0, 240 - 1);
+
+
+ m_fg_tilemap->set_scrollx(0, m_fgscroll[0] & 0xffff);
+ m_fg_tilemap->set_scrolly(0, m_fgscroll[0] >> 16);
m_bg_tilemap->set_scrolly(0, (m_bgscroll[0x0/4] & 0xffff0000)>>16 );
for (int y = 0; y < 224; y++)
diff --git a/src/mame/video/pingpong.cpp b/src/mame/video/pingpong.cpp
index aee2b1a53b0..cced6922ada 100644
--- a/src/mame/video/pingpong.cpp
+++ b/src/mame/video/pingpong.cpp
@@ -77,7 +77,7 @@ PALETTE_INIT_MEMBER(pingpong_state, pingpong)
/* sprites */
for (i = 0x100; i < 0x200; i++)
{
- uint8_t ctabentry = BITSWAP8(color_prom[i],7,6,5,4,0,1,2,3);
+ uint8_t ctabentry = bitswap<8>(color_prom[i],7,6,5,4,0,1,2,3);
palette.set_pen_indirect(i, ctabentry);
}
}
diff --git a/src/mame/video/redclash.cpp b/src/mame/video/redclash.cpp
index 49df7515913..44e98d6a8e8 100644
--- a/src/mame/video/redclash.cpp
+++ b/src/mame/video/redclash.cpp
@@ -88,10 +88,10 @@ PALETTE_INIT_MEMBER(redclash_state,redclash)
{
uint8_t ctabentry = color_prom[(i - 0x20) >> 1];
- ctabentry = BITSWAP8((color_prom[i - 0x20] >> 0) & 0x0f, 7,6,5,4,0,1,2,3);
+ ctabentry = bitswap<8>((color_prom[i - 0x20] >> 0) & 0x0f, 7,6,5,4,0,1,2,3);
palette.set_pen_indirect(i + 0x00, ctabentry);
- ctabentry = BITSWAP8((color_prom[i - 0x20] >> 4) & 0x0f, 7,6,5,4,0,1,2,3);
+ ctabentry = bitswap<8>((color_prom[i - 0x20] >> 4) & 0x0f, 7,6,5,4,0,1,2,3);
palette.set_pen_indirect(i + 0x20, ctabentry);
}
diff --git a/src/mame/video/retofinv.cpp b/src/mame/video/retofinv.cpp
index 34997a7409c..9495db81777 100644
--- a/src/mame/video/retofinv.cpp
+++ b/src/mame/video/retofinv.cpp
@@ -45,7 +45,7 @@ PALETTE_INIT_MEMBER(retofinv_state, retofinv)
for (i = 0; i < 0x800; i++)
{
// descramble the address
- int j = BITSWAP16(i,15,14,13,12,11,10,9,8,7,6,5,4,3,0,1,2);
+ int j = bitswap<16>(i,15,14,13,12,11,10,9,8,7,6,5,4,3,0,1,2);
palette.set_pen_indirect(i + 0x200, clut_prom[j]);
}
}
@@ -83,7 +83,7 @@ PALETTE_INIT_MEMBER(retofinv_state, retofinv_bl)
for (i = 0; i < 0x800; i++)
{
// descramble the data
- palette.set_pen_indirect(i + 0x200, BITSWAP8(clut_prom[i], 4,5,6,7,3,2,1,0));
+ palette.set_pen_indirect(i + 0x200, bitswap<8>(clut_prom[i], 4,5,6,7,3,2,1,0));
}
}
diff --git a/src/mame/video/segaic16.cpp b/src/mame/video/segaic16.cpp
index 061ce37988a..37df010a341 100644
--- a/src/mame/video/segaic16.cpp
+++ b/src/mame/video/segaic16.cpp
@@ -457,7 +457,7 @@ void draw_virtual_tilemap(screen_device &screen, segaic16_video_device::tilemap_
if (info->flip)
{
- pages = BITSWAP16(pages,
+ pages = bitswap<16>(pages,
3, 2, 1, 0,
7, 6, 5, 4,
11, 10, 9, 8,
diff --git a/src/mame/video/seibu_crtc.cpp b/src/mame/video/seibu_crtc.cpp
index 24a9dcc7f41..32c25de13c7 100644
--- a/src/mame/video/seibu_crtc.cpp
+++ b/src/mame/video/seibu_crtc.cpp
@@ -370,10 +370,10 @@ WRITE16_MEMBER( seibu_crtc_device::write )
/* Sky Smasher / Raiden DX swaps registers [0x10] with [0x20] */
READ16_MEMBER( seibu_crtc_device::read_alt )
{
- return read_word(BITSWAP16(offset,15,14,13,12,11,10,9,8,7,6,5,3,4,2,1,0));
+ return read_word(bitswap<16>(offset,15,14,13,12,11,10,9,8,7,6,5,3,4,2,1,0));
}
WRITE16_MEMBER( seibu_crtc_device::write_alt )
{
- write_word(BITSWAP16(offset,15,14,13,12,11,10,9,8,7,6,5,3,4,2,1,0),data);
+ write_word(bitswap<16>(offset,15,14,13,12,11,10,9,8,7,6,5,3,4,2,1,0),data);
}
diff --git a/src/mame/video/seibuspi.cpp b/src/mame/video/seibuspi.cpp
index 1cadd8798f5..78dfa18d159 100644
--- a/src/mame/video/seibuspi.cpp
+++ b/src/mame/video/seibuspi.cpp
@@ -40,7 +40,7 @@ custom CRTC on startup!! (writes to 000414)
static uint32_t decrypt_tile(uint32_t val, int tileno, uint32_t key1, uint32_t key2, uint32_t key3)
{
- val = BITSWAP24(val, 18,19,9,5, 10,17,16,20, 21,22,6,11, 15,14,4,23, 0,1,7,8, 13,12,3,2);
+ val = bitswap<24>(val, 18,19,9,5, 10,17,16,20, 21,22,6,11, 15,14,4,23, 0,1,7,8, 13,12,3,2);
return partial_carry_sum24( val, tileno + key1, key2 ) ^ key3;
}
diff --git a/src/mame/video/seta2.cpp b/src/mame/video/seta2.cpp
index 60c9ff5bac6..6e1c43bc351 100644
--- a/src/mame/video/seta2.cpp
+++ b/src/mame/video/seta2.cpp
@@ -464,6 +464,13 @@ VIDEO_START_MEMBER(seta2_state,xoffset)
m_xoffset = 0x200;
}
+VIDEO_START_MEMBER(seta2_state,xoffset1)
+{
+ video_start();
+
+ m_xoffset = 0x1;
+}
+
VIDEO_START_MEMBER(seta2_state,yoffset)
{
video_start();
diff --git a/src/mame/video/snookr10.cpp b/src/mame/video/snookr10.cpp
index 7392af1afe6..fb854d72d07 100644
--- a/src/mame/video/snookr10.cpp
+++ b/src/mame/video/snookr10.cpp
@@ -150,7 +150,7 @@ PALETTE_INIT_MEMBER(snookr10_state, apple10)
g = combine_2_weights(weights_g, bit0, bit1);
/* encrypted color matrix */
- cn = BITSWAP8(i,4,5,6,7,2,3,0,1);
+ cn = bitswap<8>(i,4,5,6,7,2,3,0,1);
palette.set_pen_color(cn, rgb_t(r,g,b));
}
@@ -165,7 +165,7 @@ TILE_GET_INFO_MEMBER(snookr10_state::apple10_get_bg_tile_info)
*/
int offs = tile_index;
int attr = m_videoram[offs] + (m_colorram[offs] << 8);
- int code = BITSWAP16((attr & 0xfff),15,14,13,12,8,9,10,11,0,1,2,3,4,5,6,7); /* encrypted tile matrix */
+ int code = bitswap<16>((attr & 0xfff),15,14,13,12,8,9,10,11,0,1,2,3,4,5,6,7); /* encrypted tile matrix */
int color = m_colorram[offs] >> 4;
SET_TILE_INFO_MEMBER(0, code, color, 0);
@@ -219,7 +219,7 @@ PALETTE_INIT_MEMBER(snookr10_state, crystalc)
g = combine_2_weights(weights_g, bit0, bit1);
/* encrypted color matrix */
- cn = BITSWAP8(i,7,5,6,4,3,2,1,0);
+ cn = bitswap<8>(i,7,5,6,4,3,2,1,0);
palette.set_pen_color(cn, rgb_t(r,g,b));
}
@@ -234,7 +234,7 @@ TILE_GET_INFO_MEMBER(snookr10_state::crystalc_get_bg_tile_info)
*/
int offs = tile_index;
int attr = m_videoram[offs] + (m_colorram[offs] << 8);
- int code = BITSWAP16((attr & 0xfff),15,14,13,12,0,10,5,1,7,6,9,4,3,2,8,11); /* encrypted tile matrix */
+ int code = bitswap<16>((attr & 0xfff),15,14,13,12,0,10,5,1,7,6,9,4,3,2,8,11); /* encrypted tile matrix */
int color = m_colorram[offs] >> 4;
SET_TILE_INFO_MEMBER(0, code, color, 0);
diff --git a/src/mame/video/splash.cpp b/src/mame/video/splash.cpp
index 0ccceadb7b1..766f6b62c68 100644
--- a/src/mame/video/splash.cpp
+++ b/src/mame/video/splash.cpp
@@ -78,9 +78,8 @@ WRITE16_MEMBER(splash_state::vram_w)
void splash_state::draw_bitmap(bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- int sx,sy,color,count,colxor,bitswap;
- colxor = 0; /* splash and some bitmap modes in roldfrog */
- bitswap = 0;
+ int colxor = 0; /* splash and some bitmap modes in roldfrog */
+ int swaps = 0;
if (m_bitmap_type == 1) /* roldfrog */
{
@@ -90,7 +89,7 @@ void splash_state::draw_bitmap(bitmap_ind16 &bitmap, const rectangle &cliprect)
}
else if (m_bitmap_mode[0] == 0x0100)
{
- bitswap = 1;
+ swaps = 1;
}
else if (m_bitmap_mode[0] == 0x0200)
{
@@ -98,56 +97,56 @@ void splash_state::draw_bitmap(bitmap_ind16 &bitmap, const rectangle &cliprect)
}
else if (m_bitmap_mode[0] == 0x0300)
{
- bitswap = 2;
+ swaps = 2;
colxor = 0x7f;
}
else if (m_bitmap_mode[0] == 0x0400)
{
- bitswap = 3;
+ swaps = 3;
}
else if (m_bitmap_mode[0] == 0x0500)
{
- bitswap = 4;
+ swaps = 4;
}
else if (m_bitmap_mode[0] == 0x0600)
{
- bitswap = 5;
+ swaps = 5;
colxor = 0x7f;
}
else if (m_bitmap_mode[0] == 0x0700)
{
- bitswap = 6;
+ swaps = 6;
colxor = 0x55;
}
}
- count = 0;
- for (sy=0;sy<256;sy++)
+ int count = 0;
+ for (int sy=0;sy<256;sy++)
{
- for (sx=0;sx<512;sx++)
+ for (int sx=0;sx<512;sx++)
{
- color = m_pixelram[count]&0xff;
+ int color = m_pixelram[count]&0xff;
count++;
- switch( bitswap )
+ switch (swaps)
{
case 1:
- color = BITSWAP8(color,7,0,1,2,3,4,5,6);
+ color = bitswap<8>(color,7,0,1,2,3,4,5,6);
break;
case 2:
- color = BITSWAP8(color,7,4,6,5,1,0,3,2);
+ color = bitswap<8>(color,7,4,6,5,1,0,3,2);
break;
case 3:
- color = BITSWAP8(color,7,3,2,1,0,6,5,4);
+ color = bitswap<8>(color,7,3,2,1,0,6,5,4);
break;
case 4:
- color = BITSWAP8(color,7,6,4,2,0,5,3,1);
+ color = bitswap<8>(color,7,6,4,2,0,5,3,1);
break;
case 5:
- color = BITSWAP8(color,7,0,6,5,4,3,2,1);
+ color = bitswap<8>(color,7,0,6,5,4,3,2,1);
break;
case 6:
- color = BITSWAP8(color,7,4,3,2,1,0,6,5);
+ color = bitswap<8>(color,7,4,3,2,1,0,6,5);
break;
}
diff --git a/src/mame/video/thepit.cpp b/src/mame/video/thepit.cpp
index cafd9733df8..51086bc601e 100644
--- a/src/mame/video/thepit.cpp
+++ b/src/mame/video/thepit.cpp
@@ -79,8 +79,8 @@ PALETTE_INIT_MEMBER(thepit_state,suprmous)
for (i = 0; i < 32; i++)
{
- uint8_t b = BITSWAP8(color_prom[i + 0x00], 0, 1, 2, 3, 4, 5, 6, 7);
- uint8_t g = BITSWAP8(color_prom[i + 0x20], 0, 1, 2, 3, 4, 5, 6, 7);
+ uint8_t b = bitswap<8>(color_prom[i + 0x00], 0, 1, 2, 3, 4, 5, 6, 7);
+ uint8_t g = bitswap<8>(color_prom[i + 0x20], 0, 1, 2, 3, 4, 5, 6, 7);
uint8_t r = (b>>5&7)<<2 | (g>>6&3);
palette.set_pen_color(i, pal5bit(r), pal5bit(g), pal4bit(b));
diff --git a/src/mame/video/tia.cpp b/src/mame/video/tia.cpp
index f4571c1763c..ccb84349389 100644
--- a/src/mame/video/tia.cpp
+++ b/src/mame/video/tia.cpp
@@ -447,7 +447,7 @@ void tia_video_device::draw_sprite_helper(uint8_t* p, uint8_t *col, struct playe
if (REFP & 8)
{
- GRP = BITSWAP8(GRP, 0, 1, 2, 3, 4, 5, 6, 7);
+ GRP = bitswap<8>(GRP, 0, 1, 2, 3, 4, 5, 6, 7);
}
for (i = 0; i < PLAYER_GFX_SLOTS; i++)
@@ -539,9 +539,9 @@ void tia_video_device::draw_playfield_helper(uint8_t* p, uint8_t* col, int horz,
uint8_t COLU, uint8_t REFPF)
{
uint32_t PF =
- (BITSWAP8(PF0, 0, 1, 2, 3, 4, 5, 6, 7) << 0x10) |
- (BITSWAP8(PF1, 7, 6, 5, 4, 3, 2, 1, 0) << 0x08) |
- (BITSWAP8(PF2, 0, 1, 2, 3, 4, 5, 6, 7) << 0x00);
+ (bitswap<8>(PF0, 0, 1, 2, 3, 4, 5, 6, 7) << 0x10) |
+ (bitswap<8>(PF1, 7, 6, 5, 4, 3, 2, 1, 0) << 0x08) |
+ (bitswap<8>(PF2, 0, 1, 2, 3, 4, 5, 6, 7) << 0x00);
int i;
int j;
diff --git a/src/mame/video/tx1.cpp b/src/mame/video/tx1.cpp
index 019b007d18f..dabfc0a9ae3 100644
--- a/src/mame/video/tx1.cpp
+++ b/src/mame/video/tx1.cpp
@@ -1499,7 +1499,7 @@ void tx1_state::buggyboy_get_roadpix(int screen, int ls161, uint8_t rva0_6, uint
*rc3 = d0 & d1;
if (rom_flip)
- *rc3 = BITSWAP8(*rc3, 0, 1, 2, 3, 4, 5, 6, 7);
+ *rc3 = bitswap<8>(*rc3, 0, 1, 2, 3, 4, 5, 6, 7);
}
else
*rc3 = 0;
diff --git a/src/mame/video/xevious.cpp b/src/mame/video/xevious.cpp
index 2429afd8900..9d336b437f2 100644
--- a/src/mame/video/xevious.cpp
+++ b/src/mame/video/xevious.cpp
@@ -259,7 +259,7 @@ READ8_MEMBER( xevious_state::xevious_bb_r )
/* return BB0 */
dat2 = rom2c[adr_2c];
/* swap bit 6 & 7 */
- dat2 = BITSWAP8(dat2, 6,7,5,4,3,2,1,0);
+ dat2 = bitswap<8>(dat2, 6,7,5,4,3,2,1,0);
/* flip x & y */
if (dat1 & 0x400) dat2 ^= 0x40;
if (dat1 & 0x200) dat2 ^= 0x80;